mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-07-12 07:32:33 +01:00
Merge branch 'master' into AI_langs
This commit is contained in:
@@ -82,7 +82,7 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration =
|
||||
var/sql = "INSERT INTO erro_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/DBQuery/query_insert = dbcon.NewQuery(sql)
|
||||
query_insert.Execute()
|
||||
usr << "\blue Ban saved to database."
|
||||
usr << "<font color='blue'>Ban saved to database.</font>"
|
||||
message_admins("[key_name_admin(usr)] has added a [bantype_str] for [ckey] [(job)?"([job])":""] [(duration > 0)?"([duration] minutes)":""] with the reason: \"[reason]\" to the ban database.",1)
|
||||
|
||||
|
||||
@@ -136,17 +136,17 @@ datum/admins/proc/DB_ban_unban(var/ckey, var/bantype, var/job = "")
|
||||
ban_number++;
|
||||
|
||||
if(ban_number == 0)
|
||||
usr << "\red Database update failed due to no bans fitting the search criteria. If this is not a legacy ban you should contact the database admin."
|
||||
usr << "<font color='red'>Database update failed due to no bans fitting the search criteria. If this is not a legacy ban you should contact the database admin.</font>"
|
||||
return
|
||||
|
||||
if(ban_number > 1)
|
||||
usr << "\red Database update failed due to multiple bans fitting the search criteria. Note down the ckey, job and current time and contact the database admin."
|
||||
usr << "<font color='red'>Database update failed due to multiple bans fitting the search criteria. Note down the ckey, job and current time and contact the database admin.</font>"
|
||||
return
|
||||
|
||||
if(istext(ban_id))
|
||||
ban_id = text2num(ban_id)
|
||||
if(!isnum(ban_id))
|
||||
usr << "\red Database update failed due to a ban ID mismatch. Contact the database admin."
|
||||
usr << "<font color='red'>Database update failed due to a ban ID mismatch. Contact the database admin.</font>"
|
||||
return
|
||||
|
||||
DB_ban_unban_by_id(ban_id)
|
||||
@@ -231,11 +231,11 @@ datum/admins/proc/DB_ban_unban_by_id(var/id)
|
||||
ban_number++;
|
||||
|
||||
if(ban_number == 0)
|
||||
usr << "\red Database update failed due to a ban id not being present in the database."
|
||||
usr << "<font color='red'>Database update failed due to a ban id not being present in the database.</font>"
|
||||
return
|
||||
|
||||
if(ban_number > 1)
|
||||
usr << "\red Database update failed due to multiple bans having the same ID. Contact the database admin."
|
||||
usr << "<font color='red'>Database update failed due to multiple bans having the same ID. Contact the database admin.</font>"
|
||||
return
|
||||
|
||||
if(!src.owner || !istype(src.owner, /client))
|
||||
@@ -271,7 +271,7 @@ datum/admins/proc/DB_ban_unban_by_id(var/id)
|
||||
|
||||
establish_db_connection()
|
||||
if(!dbcon.IsConnected())
|
||||
usr << "\red Failed to establish database connection"
|
||||
usr << "<font color='red'>Failed to establish database connection</font>"
|
||||
return
|
||||
|
||||
var/output = "<div align='center'><table width='90%'><tr>"
|
||||
|
||||
@@ -7,13 +7,13 @@ world/IsBanned(key,address,computer_id)
|
||||
//Guest Checking
|
||||
if(!config.guests_allowed && IsGuestKey(key))
|
||||
log_access("Failed Login: [key] - Guests not allowed")
|
||||
message_admins("\blue Failed Login: [key] - Guests not allowed")
|
||||
message_admins("<font color='blue'>Failed Login: [key] - Guests not allowed</font>")
|
||||
return list("reason"="guest", "desc"="\nReason: Guests not allowed. Please sign in with a byond account.")
|
||||
|
||||
//check if the IP address is a known TOR node
|
||||
if(config && config.ToRban && ToRban_isbanned(address))
|
||||
log_access("Failed Login: [src] - Banned: ToR")
|
||||
message_admins("\blue Failed Login: [src] - Banned: ToR")
|
||||
message_admins("<font color='blue'>Failed Login: [src] - Banned: ToR</font>")
|
||||
//ban their computer_id and ckey for posterity
|
||||
AddBan(ckey(key), computer_id, "Use of ToR", "Automated Ban", 0, 0)
|
||||
return list("reason"="Using ToR", "desc"="\nReason: The network you are using to connect has been banned.\nIf you believe this is a mistake, please request help at [config.banappeals]")
|
||||
@@ -25,7 +25,7 @@ world/IsBanned(key,address,computer_id)
|
||||
. = CheckBan( ckey(key), computer_id, address )
|
||||
if(.)
|
||||
log_access("Failed Login: [key] [computer_id] [address] - Banned [.["reason"]]")
|
||||
message_admins("\blue Failed Login: [key] id:[computer_id] ip:[address] - Banned [.["reason"]]")
|
||||
message_admins("<font color='blue'>Failed Login: [key] id:[computer_id] ip:[address] - Banned [.["reason"]]</font>")
|
||||
return .
|
||||
|
||||
return ..() //default pager ban stuff
|
||||
|
||||
@@ -106,7 +106,7 @@ var/savefile/Banlist
|
||||
|
||||
Banlist.cd = "/base"
|
||||
if ( Banlist.dir.Find("[ckey][computerid]") )
|
||||
usr << text("\red Ban already exists.")
|
||||
usr << text("<font color='red'>Ban already exists.</font>")
|
||||
return 0
|
||||
else
|
||||
Banlist.dir.Add("[ckey][computerid]")
|
||||
@@ -168,7 +168,7 @@ var/savefile/Banlist
|
||||
/datum/admins/proc/unbanpanel()
|
||||
var/count = 0
|
||||
var/dat
|
||||
//var/dat = "<HR><B>Unban Player:</B> \blue(U) = Unban , (E) = Edit Ban\green (Total<HR><table border=1 rules=all frame=void cellspacing=0 cellpadding=3 >"
|
||||
//var/dat = "<HR><B>Unban Player:</B> <font color='blue'>(U) = Unban</font> , (E) = Edit Ban <font color='green'>(Total<HR><table border=1 rules=all frame=void cellspacing=0 cellpadding=3 ></font>"
|
||||
Banlist.cd = "/base"
|
||||
for (var/A in Banlist.dir)
|
||||
count++
|
||||
|
||||
+16
-11
@@ -114,8 +114,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
else if(ishuman(M))
|
||||
body += {"<A href='?src=\ref[src];makeai=\ref[M]'>Make AI</A> |
|
||||
<A href='?src=\ref[src];makerobot=\ref[M]'>Make Robot</A> |
|
||||
<A href='?src=\ref[src];makealien=\ref[M]'>Make Alien</A> |
|
||||
<A href='?src=\ref[src];makeslime=\ref[M]'>Make slime</A>
|
||||
<A href='?src=\ref[src];makealien=\ref[M]'>Make Alien</A>
|
||||
"}
|
||||
|
||||
//Simple Animals
|
||||
@@ -146,6 +145,11 @@ proc/admin_notice(var/message, var/rights)
|
||||
body += {"<br><br>
|
||||
<b>Rudimentary transformation:</b><font size=2><br>These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.</font><br>
|
||||
<A href='?src=\ref[src];simplemake=observer;mob=\ref[M]'>Observer</A> |
|
||||
\[ Xenos: <A href='?src=\ref[src];simplemake=larva;mob=\ref[M]'>Larva</A>
|
||||
<A href='?src=\ref[src];simplemake=human;species=Xenomorph Drone;mob=\ref[M]'>Drone</A>
|
||||
<A href='?src=\ref[src];simplemake=human;species=Xenomorph Hunter;mob=\ref[M]'>Hunter</A>
|
||||
<A href='?src=\ref[src];simplemake=human;species=Xenomorph Sentinel;mob=\ref[M]'>Sentinel</A>
|
||||
<A href='?src=\ref[src];simplemake=human;species=Xenomorph Queen;mob=\ref[M]'>Queen</A> \] |
|
||||
\[ Crew: <A href='?src=\ref[src];simplemake=human;mob=\ref[M]'>Human</A>
|
||||
<A href='?src=\ref[src];simplemake=human;species=Unathi;mob=\ref[M]'>Unathi</A>
|
||||
<A href='?src=\ref[src];simplemake=human;species=Tajaran;mob=\ref[M]'>Tajaran</A>
|
||||
@@ -673,7 +677,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
//This is basically how death alarms do it
|
||||
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/ert(null)
|
||||
|
||||
var/channel = input("Channel for message:","Channel", null) as null|anything in (list("Common") + a.keyslot1.channels + a.keyslot2.channels)
|
||||
var/channel = input("Channel for message:","Channel", null) as null|anything in (list("Common") + a.keyslot2.channels) // + a.keyslot1.channels
|
||||
|
||||
if(channel) //They picked a channel
|
||||
var/sender = input("Name of sender (max 75):", "Announcement", "Announcement Computer") as null|text
|
||||
@@ -783,6 +787,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
return
|
||||
if(ticker.current_state == GAME_STATE_PREGAME)
|
||||
ticker.current_state = GAME_STATE_SETTING_UP
|
||||
Master.SetRunLevel(RUNLEVEL_SETUP)
|
||||
log_admin("[usr.key] has started the game.")
|
||||
message_admins("<font color='blue'>[usr.key] has started the game.</font>")
|
||||
feedback_add_details("admin_verb","SN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -801,7 +806,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
else
|
||||
world << "<B>New players may now enter the game.</B>"
|
||||
log_admin("[key_name(usr)] toggled new player game entering.")
|
||||
message_admins("\blue [key_name_admin(usr)] toggled new player game entering.", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] toggled new player game entering.</font>", 1)
|
||||
world.update_status()
|
||||
feedback_add_details("admin_verb","TE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -827,7 +832,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
world << "<B>You may now respawn.</B>"
|
||||
else
|
||||
world << "<B>You may no longer respawn :(</B>"
|
||||
message_admins("\blue [key_name_admin(usr)] toggled respawn to [config.abandon_allowed ? "On" : "Off"].", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] toggled respawn to [config.abandon_allowed ? "On" : "Off"].</font>", 1)
|
||||
log_admin("[key_name(usr)] toggled respawn to [config.abandon_allowed ? "On" : "Off"].")
|
||||
world.update_status()
|
||||
feedback_add_details("admin_verb","TR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -859,7 +864,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
if (!ticker || ticker.current_state != GAME_STATE_PREGAME)
|
||||
ticker.delay_end = !ticker.delay_end
|
||||
log_admin("[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].")
|
||||
message_admins("\blue [key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1)
|
||||
message_admins("<font color='blue'>[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].</font>", 1)
|
||||
return //alert("Round end delayed", null, null, null, null, null)
|
||||
round_progressing = !round_progressing
|
||||
if (!round_progressing)
|
||||
@@ -875,7 +880,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
set desc="Toggle admin jumping"
|
||||
set name="Toggle Jump"
|
||||
config.allow_admin_jump = !(config.allow_admin_jump)
|
||||
message_admins("\blue Toggled admin jumping to [config.allow_admin_jump].")
|
||||
message_admins("<font color='blue'>Toggled admin jumping to [config.allow_admin_jump].</font>")
|
||||
feedback_add_details("admin_verb","TJ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/datum/admins/proc/adspawn()
|
||||
@@ -883,7 +888,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
set desc="Toggle admin spawning"
|
||||
set name="Toggle Spawn"
|
||||
config.allow_admin_spawning = !(config.allow_admin_spawning)
|
||||
message_admins("\blue Toggled admin item spawning to [config.allow_admin_spawning].")
|
||||
message_admins("<font color='blue'>Toggled admin item spawning to [config.allow_admin_spawning].</font>")
|
||||
feedback_add_details("admin_verb","TAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/datum/admins/proc/adrev()
|
||||
@@ -891,7 +896,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
set desc="Toggle admin revives"
|
||||
set name="Toggle Revive"
|
||||
config.allow_admin_rev = !(config.allow_admin_rev)
|
||||
message_admins("\blue Toggled reviving to [config.allow_admin_rev].")
|
||||
message_admins("<font color='blue'>Toggled reviving to [config.allow_admin_rev].</font>")
|
||||
feedback_add_details("admin_verb","TAR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/datum/admins/proc/immreboot()
|
||||
@@ -901,7 +906,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
if(!usr.client.holder) return
|
||||
if( alert("Reboot server?",,"Yes","No") == "No")
|
||||
return
|
||||
world << "\red <b>Rebooting world!</b> \blue Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key]!"
|
||||
world << "<font color='red'><b>Rebooting world!</b></font> <font color='blue'>Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key]!</font>"
|
||||
log_admin("[key_name(usr)] initiated an immediate reboot.")
|
||||
|
||||
feedback_set_details("end_error","immediate admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]")
|
||||
@@ -1165,7 +1170,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
else
|
||||
world << "<B>Guests may now enter the game.</B>"
|
||||
log_admin("[key_name(usr)] toggled guests game entering [config.guests_allowed?"":"dis"]allowed.")
|
||||
message_admins("\blue [key_name_admin(usr)] toggled guests game entering [config.guests_allowed?"":"dis"]allowed.", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] toggled guests game entering [config.guests_allowed?"":"dis"]allowed.</font>", 1)
|
||||
feedback_add_details("admin_verb","TGU") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/datum/admins/proc/output_ai_laws()
|
||||
|
||||
@@ -47,7 +47,7 @@ var/list/admin_verbs_admin = list(
|
||||
/client/proc/jumptomob, //allows us to jump to a specific mob,
|
||||
/client/proc/jumptoturf, //allows us to jump to a specific turf,
|
||||
/client/proc/admin_call_shuttle, //allows us to call the emergency shuttle,
|
||||
/client/proc/admin_cancel_shuttle, //allows us to cancel the emergency shuttle, sending it back to centcomm,
|
||||
/client/proc/admin_cancel_shuttle, //allows us to cancel the emergency shuttle, sending it back to CentCom,
|
||||
/client/proc/cmd_admin_direct_narrate, //send text directly to a player with no padding. Useful for narratives and fluff-text,
|
||||
/client/proc/cmd_admin_world_narrate, //sends text to all players with no padding,
|
||||
/client/proc/cmd_admin_create_centcom_report,
|
||||
@@ -68,8 +68,9 @@ var/list/admin_verbs_admin = list(
|
||||
/datum/admins/proc/toggledsay, //toggles dsay on/off for everyone,
|
||||
/client/proc/game_panel, //game panel, allows to change game-mode etc,
|
||||
/client/proc/cmd_admin_say, //admin-only ooc chat,
|
||||
/datum/admins/proc/PlayerNotes,
|
||||
/client/proc/cmd_mod_say,
|
||||
/client/proc/cmd_event_say,
|
||||
/datum/admins/proc/PlayerNotes,
|
||||
/datum/admins/proc/show_player_info,
|
||||
/client/proc/free_slot, //frees slot for chosen job,
|
||||
/client/proc/cmd_admin_change_custom_event,
|
||||
@@ -136,7 +137,10 @@ var/list/admin_verbs_spawn = list(
|
||||
/datum/admins/proc/spawn_atom, //allows us to spawn instances,
|
||||
/client/proc/respawn_character,
|
||||
/client/proc/virus2_editor,
|
||||
/client/proc/spawn_chemdisp_cartridge
|
||||
/client/proc/spawn_chemdisp_cartridge,
|
||||
/client/proc/map_template_load,
|
||||
/client/proc/map_template_upload,
|
||||
/client/proc/map_template_load_on_new_z
|
||||
)
|
||||
var/list/admin_verbs_server = list(
|
||||
/datum/admins/proc/capture_map,
|
||||
@@ -176,6 +180,7 @@ var/list/admin_verbs_debug = list(
|
||||
/client/proc/debug_controller,
|
||||
/client/proc/debug_antagonist_template,
|
||||
/client/proc/cmd_debug_mob_lists,
|
||||
/client/proc/cmd_debug_using_map,
|
||||
/client/proc/cmd_admin_delete,
|
||||
/client/proc/cmd_debug_del_all,
|
||||
/client/proc/cmd_debug_tog_aliens,
|
||||
@@ -183,13 +188,13 @@ var/list/admin_verbs_debug = list(
|
||||
/client/proc/reload_admins,
|
||||
/client/proc/reload_mentors,
|
||||
/client/proc/restart_controller,
|
||||
/datum/admins/proc/restart,
|
||||
/client/proc/print_random_map,
|
||||
/client/proc/create_random_map,
|
||||
/client/proc/apply_random_map,
|
||||
/client/proc/overlay_random_map,
|
||||
/client/proc/delete_random_map,
|
||||
/client/proc/show_plant_genes,
|
||||
/client/proc/show_xenobio_genes,
|
||||
/client/proc/enable_debug_verbs,
|
||||
/client/proc/callproc,
|
||||
/client/proc/callproc_target,
|
||||
@@ -286,6 +291,7 @@ var/list/admin_verbs_hideable = list(
|
||||
/client/proc/debug_controller,
|
||||
/client/proc/startSinglo,
|
||||
/client/proc/cmd_debug_mob_lists,
|
||||
/client/proc/cmd_debug_using_map,
|
||||
/client/proc/cmd_debug_del_all,
|
||||
/client/proc/cmd_debug_tog_aliens,
|
||||
/client/proc/air_report,
|
||||
@@ -302,6 +308,7 @@ var/list/admin_verbs_mod = list(
|
||||
/datum/admins/proc/PlayerNotes,
|
||||
/client/proc/admin_ghost, //allows us to ghost/reenter body at will,
|
||||
/client/proc/cmd_mod_say,
|
||||
/client/proc/cmd_event_say,
|
||||
/datum/admins/proc/show_player_info,
|
||||
/client/proc/player_panel_new,
|
||||
/client/proc/dsay,
|
||||
@@ -447,11 +454,11 @@ var/list/admin_verbs_mentor = list(
|
||||
if(holder && mob)
|
||||
if(mob.invisibility == INVISIBILITY_OBSERVER)
|
||||
mob.invisibility = initial(mob.invisibility)
|
||||
mob << "\red <b>Invisimin off. Invisibility reset.</b>"
|
||||
mob << "<font color='red'><b>Invisimin off. Invisibility reset.</b></font>"
|
||||
mob.alpha = max(mob.alpha + 100, 255)
|
||||
else
|
||||
mob.invisibility = INVISIBILITY_OBSERVER
|
||||
mob << "\blue <b>Invisimin on. You are now as invisible as a ghost.</b>"
|
||||
mob << "<font color='blue'><b>Invisimin on. You are now as invisible as a ghost.</b></font>"
|
||||
mob.alpha = max(mob.alpha - 100, 0)
|
||||
|
||||
|
||||
@@ -617,7 +624,7 @@ var/list/admin_verbs_mentor = list(
|
||||
var/light_impact_range = input("Light impact range (in tiles):") as num
|
||||
var/flash_range = input("Flash range (in tiles):") as num
|
||||
explosion(epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range)
|
||||
message_admins("\blue [ckey] creating an admin explosion at [epicenter.loc].")
|
||||
message_admins("<font color='blue'>[ckey] creating an admin explosion at [epicenter.loc].</font>")
|
||||
feedback_add_details("admin_verb","DB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/give_disease2(mob/T as mob in mob_list) // -- Giacom
|
||||
@@ -649,7 +656,7 @@ var/list/admin_verbs_mentor = list(
|
||||
|
||||
feedback_add_details("admin_verb","GD2") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
log_admin("[key_name(usr)] gave [key_name(T)] a [greater] disease2 with infection chance [D.infectionchance].")
|
||||
message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] a [greater] disease2 with infection chance [D.infectionchance].", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] gave [key_name(T)] a [greater] disease2 with infection chance [D.infectionchance].</font>", 1)
|
||||
|
||||
/client/proc/make_sound(var/obj/O in world) // -- TLE
|
||||
set category = "Special Verbs"
|
||||
@@ -662,7 +669,7 @@ var/list/admin_verbs_mentor = list(
|
||||
for (var/mob/V in hearers(O))
|
||||
V.show_message(message, 2)
|
||||
log_admin("[key_name(usr)] made [O] at [O.x], [O.y], [O.z]. make a sound")
|
||||
message_admins("\blue [key_name_admin(usr)] made [O] at [O.x], [O.y], [O.z]. make a sound", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] made [O] at [O.x], [O.y], [O.z]. make a sound.</font>", 1)
|
||||
feedback_add_details("admin_verb","MS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
@@ -696,7 +703,7 @@ var/list/admin_verbs_mentor = list(
|
||||
usr << "<b>Disabled air processing.</b>"
|
||||
feedback_add_details("admin_verb","KA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
log_admin("[key_name(usr)] used 'kill air'.")
|
||||
message_admins("\blue [key_name_admin(usr)] used 'kill air'.", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] used 'kill air'.</font>", 1)
|
||||
|
||||
/client/proc/readmin_self()
|
||||
set name = "Re-Admin self"
|
||||
@@ -837,7 +844,7 @@ var/list/admin_verbs_mentor = list(
|
||||
var/mob/living/carbon/human/M = input("Select mob.", "Edit Appearance") as null|anything in human_mob_list
|
||||
|
||||
if(!istype(M, /mob/living/carbon/human))
|
||||
usr << "\red You can only do this to humans!"
|
||||
usr << "<font color='red'>You can only do this to humans!</font>"
|
||||
return
|
||||
switch(alert("Are you sure you wish to edit this mob's appearance? Skrell, Unathi, Tajaran can result in unintended consequences.",,"Yes","No"))
|
||||
if("No")
|
||||
@@ -957,7 +964,7 @@ var/list/admin_verbs_mentor = list(
|
||||
T << "<span class='notice'>Move on.</span>"
|
||||
|
||||
log_admin("[key_name(usr)] told [key_name(T)] to man up and deal with it.")
|
||||
message_admins("\blue [key_name_admin(usr)] told [key_name(T)] to man up and deal with it.", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] told [key_name(T)] to man up and deal with it.</font>", 1)
|
||||
|
||||
/client/proc/global_man_up()
|
||||
set category = "Fun"
|
||||
@@ -969,7 +976,7 @@ var/list/admin_verbs_mentor = list(
|
||||
T << 'sound/voice/ManUp1.ogg'
|
||||
|
||||
log_admin("[key_name(usr)] told everyone to man up and deal with it.")
|
||||
message_admins("\blue [key_name_admin(usr)] told everyone to man up and deal with it.", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] told everyone to man up and deal with it.</font>", 1)
|
||||
|
||||
/client/proc/give_spell(mob/T as mob in mob_list) // -- Urist
|
||||
set category = "Fun"
|
||||
@@ -980,4 +987,4 @@ var/list/admin_verbs_mentor = list(
|
||||
T.spell_list += new S
|
||||
feedback_add_details("admin_verb","GS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
log_admin("[key_name(usr)] gave [key_name(T)] the spell [S].")
|
||||
message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] the spell [S].", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] gave [key_name(T)] the spell [S].</font>", 1)
|
||||
|
||||
@@ -141,7 +141,7 @@ var/savefile/Banlistjob
|
||||
|
||||
Banlistjob.cd = "/base"
|
||||
if ( Banlistjob.dir.Find("[ckey][computerid][rank]") )
|
||||
usr << text("\red Banjob already exists.")
|
||||
usr << text("<font color='red'>Banjob already exists.</font>")
|
||||
return 0
|
||||
else
|
||||
Banlistjob.dir.Add("[ckey][computerid][rank]")
|
||||
@@ -206,7 +206,7 @@ var/savefile/Banlistjob
|
||||
/datum/admins/proc/unjobbanpanel()
|
||||
var/count = 0
|
||||
var/dat
|
||||
//var/dat = "<HR><B>Unban Player:</B> \blue(U) = Unban , (E) = Edit Ban\green (Total<HR><table border=1 rules=all frame=void cellspacing=0 cellpadding=3 >"
|
||||
//var/dat = "<HR><B>Unban Player:</B> <font color='blue'>(U) = Unban , (E) = Edit Ban</font> <font color='green'>(Total<HR><table border=1 rules=all frame=void cellspacing=0 cellpadding=3 </font>>"
|
||||
Banlistjob.cd = "/base"
|
||||
for (var/A in Banlistjob.dir)
|
||||
count++
|
||||
@@ -219,24 +219,24 @@ var/savefile/Banlistjob
|
||||
|
||||
/*/datum/admins/proc/permjobban(ckey, computerid, reason, bannedby, temp, minutes, rank)
|
||||
if(AddBanjob(ckey, computerid, reason, usr.ckey, 0, 0, job))
|
||||
M << "\red<BIG><B>You have been banned from [job] by [usr.client.ckey].\nReason: [reason].</B></BIG>"
|
||||
M << "\red This is a permanent ban."
|
||||
M << "<font color='red'><BIG><B>You have been banned from [job] by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
|
||||
M << "<font color='red'>This is a permanent ban.</font>"
|
||||
if(config.banappeals)
|
||||
M << "\red To try to resolve this matter head to [config.banappeals]"
|
||||
M << "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>"
|
||||
else
|
||||
M << "\red No ban appeals URL has been set."
|
||||
M << "<font color='red'>No ban appeals URL has been set.</font>"
|
||||
log_admin("[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis is a permanent ban.")
|
||||
message_admins("\blue[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis is a permanent ban.")
|
||||
message_admins("<font color='blue'>[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis is a permanent ban.</font>")
|
||||
/datum/admins/proc/timejobban(ckey, computerid, reason, bannedby, temp, minutes, rank)
|
||||
if(AddBanjob(ckey, computerid, reason, usr.ckey, 1, mins, job))
|
||||
M << "\red<BIG><B>You have been jobbanned from [job] by [usr.client.ckey].\nReason: [reason].</B></BIG>"
|
||||
M << "\red This is a temporary ban, it will be removed in [mins] minutes."
|
||||
M << "<font color='red'><BIG><B>You have been jobbanned from [job] by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
|
||||
M << "<font color='red'>This is a temporary ban, it will be removed in [mins] minutes.</font>"
|
||||
if(config.banappeals)
|
||||
M << "\red To try to resolve this matter head to [config.banappeals]"
|
||||
M << "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>"
|
||||
else
|
||||
M << "\red No ban appeals URL has been set."
|
||||
M << "<font color='red'>No ban appeals URL has been set.</font>"
|
||||
log_admin("[usr.client.ckey] has jobbanned from [job] [ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
|
||||
message_admins("\blue[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")*/
|
||||
message_admins("<font color='blue'>[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.</font>")*/
|
||||
//////////////////////////////////// DEBUG ////////////////////////////////////
|
||||
|
||||
/proc/CreateBansjob()
|
||||
|
||||
@@ -51,13 +51,13 @@
|
||||
return
|
||||
|
||||
if(!usr.client.holder || !(usr.client.holder.rights & R_PERMISSIONS))
|
||||
usr << "\red You do not have permission to do this!"
|
||||
usr << "<font color='red'>You do not have permission to do this!</font>"
|
||||
return
|
||||
|
||||
establish_db_connection()
|
||||
|
||||
if(!dbcon.IsConnected())
|
||||
usr << "\red Failed to establish database connection"
|
||||
usr << "<font color='red'>Failed to establish database connection</font>"
|
||||
return
|
||||
|
||||
if(!adm_ckey || !new_rank)
|
||||
@@ -85,14 +85,14 @@
|
||||
insert_query.Execute()
|
||||
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added new admin [adm_ckey] to rank [new_rank]');")
|
||||
log_query.Execute()
|
||||
usr << "\blue New admin added."
|
||||
usr << "<font color='blue'>New admin added.</font>"
|
||||
else
|
||||
if(!isnull(admin_id) && isnum(admin_id))
|
||||
var/DBQuery/insert_query = dbcon.NewQuery("UPDATE `erro_admin` SET rank = '[new_rank]' WHERE id = [admin_id]")
|
||||
insert_query.Execute()
|
||||
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Edited the rank of [adm_ckey] to [new_rank]');")
|
||||
log_query.Execute()
|
||||
usr << "\blue Admin rank changed."
|
||||
usr << "<font color='blue'>Admin rank changed.</font>"
|
||||
|
||||
/datum/admins/proc/log_admin_permission_modification(var/adm_ckey, var/new_permission)
|
||||
if(config.admin_legacy_system) return
|
||||
@@ -101,12 +101,12 @@
|
||||
return
|
||||
|
||||
if(!usr.client.holder || !(usr.client.holder.rights & R_PERMISSIONS))
|
||||
usr << "\red You do not have permission to do this!"
|
||||
usr << "<font color='red'>You do not have permission to do this!</font>"
|
||||
return
|
||||
|
||||
establish_db_connection()
|
||||
if(!dbcon.IsConnected())
|
||||
usr << "\red Failed to establish database connection"
|
||||
usr << "<font color='red'>Failed to establish database connection</font>"
|
||||
return
|
||||
|
||||
if(!adm_ckey || !new_permission)
|
||||
@@ -140,10 +140,10 @@
|
||||
insert_query.Execute()
|
||||
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Removed permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]');")
|
||||
log_query.Execute()
|
||||
usr << "\blue Permission removed."
|
||||
usr << "<font color='blue'>Permission removed.</font>"
|
||||
else //This admin doesn't have this permission, so we are adding it.
|
||||
var/DBQuery/insert_query = dbcon.NewQuery("UPDATE `erro_admin` SET flags = '[admin_rights | new_permission]' WHERE id = [admin_id]")
|
||||
insert_query.Execute()
|
||||
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]')")
|
||||
log_query.Execute()
|
||||
usr << "\blue Permission added."
|
||||
usr << "<font color='blue'>Permission added.</font>"
|
||||
@@ -103,7 +103,7 @@ datum/admins/proc/notes_gethtml(var/ckey)
|
||||
infos += P
|
||||
info << infos
|
||||
|
||||
message_admins("\blue [key_name_admin(user)] has edited [key]'s notes.")
|
||||
message_admins("<font color='blue'>[key_name_admin(user)] has edited [key]'s notes.</font>")
|
||||
log_admin("[key_name(user)] has edited [key]'s notes.")
|
||||
|
||||
del(info) // savefile, so NOT qdel
|
||||
@@ -128,7 +128,7 @@ datum/admins/proc/notes_gethtml(var/ckey)
|
||||
infos.Remove(item)
|
||||
info << infos
|
||||
|
||||
message_admins("\blue [key_name_admin(usr)] deleted one of [key]'s notes.")
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] deleted one of [key]'s notes.</font>")
|
||||
log_admin("[key_name(usr)] deleted one of [key]'s notes.")
|
||||
|
||||
qdel(info)
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
/datum/admin_secret_item/random_event/trigger_xenomorph_infestation
|
||||
name = "Trigger a Xenomorph Infestation"
|
||||
|
||||
/datum/admin_secret_item/random_event/trigger_xenomorph_infestation/execute(var/mob/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
return xenomorphs.attempt_random_spawn()
|
||||
+53
-53
@@ -197,7 +197,7 @@
|
||||
if (emergency_shuttle.can_call())
|
||||
emergency_shuttle.call_evac()
|
||||
log_admin("[key_name(usr)] called the Emergency Shuttle")
|
||||
message_admins("\blue [key_name_admin(usr)] called the Emergency Shuttle to the station", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] called the Emergency Shuttle to the station.</font>", 1)
|
||||
|
||||
if("2")
|
||||
if (!( ticker ) || !emergency_shuttle.location())
|
||||
@@ -205,12 +205,12 @@
|
||||
if (emergency_shuttle.can_call())
|
||||
emergency_shuttle.call_evac()
|
||||
log_admin("[key_name(usr)] called the Emergency Shuttle")
|
||||
message_admins("\blue [key_name_admin(usr)] called the Emergency Shuttle to the station", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] called the Emergency Shuttle to the station.</font>", 1)
|
||||
|
||||
else if (emergency_shuttle.can_recall())
|
||||
emergency_shuttle.recall()
|
||||
log_admin("[key_name(usr)] sent the Emergency Shuttle back")
|
||||
message_admins("\blue [key_name_admin(usr)] sent the Emergency Shuttle back", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] sent the Emergency Shuttle back.</font>", 1)
|
||||
|
||||
href_list["secretsadmin"] = "check_antagonist"
|
||||
|
||||
@@ -223,14 +223,14 @@
|
||||
emergency_shuttle.launch_time = world.time + new_time_left*10
|
||||
|
||||
log_admin("[key_name(usr)] edited the Emergency Shuttle's launch time to [new_time_left]")
|
||||
message_admins("\blue [key_name_admin(usr)] edited the Emergency Shuttle's launch time to [new_time_left*10]", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] edited the Emergency Shuttle's launch time to [new_time_left*10]</font>", 1)
|
||||
else if (emergency_shuttle.shuttle.has_arrive_time())
|
||||
|
||||
var/new_time_left = input("Enter new shuttle arrival time (seconds):","Edit Shuttle Arrival Time", emergency_shuttle.estimate_arrival_time() ) as num
|
||||
emergency_shuttle.shuttle.arrive_time = world.time + new_time_left*10
|
||||
|
||||
log_admin("[key_name(usr)] edited the Emergency Shuttle's arrival time to [new_time_left]")
|
||||
message_admins("\blue [key_name_admin(usr)] edited the Emergency Shuttle's arrival time to [new_time_left*10]", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] edited the Emergency Shuttle's arrival time to [new_time_left*10]</font>", 1)
|
||||
else
|
||||
alert("The shuttle is neither counting down to launch nor is it in transit. Please try again when it is.")
|
||||
|
||||
@@ -241,7 +241,7 @@
|
||||
|
||||
ticker.delay_end = !ticker.delay_end
|
||||
log_admin("[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].")
|
||||
message_admins("\blue [key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1)
|
||||
message_admins("<font color='blue'>[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].</font>", 1)
|
||||
href_list["secretsadmin"] = "check_antagonist"
|
||||
|
||||
else if(href_list["simplemake"])
|
||||
@@ -259,14 +259,14 @@
|
||||
if("Yes") delmob = 1
|
||||
|
||||
log_admin("[key_name(usr)] has used rudimentary transformation on [key_name(M)]. Transforming to [href_list["simplemake"]]; deletemob=[delmob]")
|
||||
message_admins("\blue [key_name_admin(usr)] has used rudimentary transformation on [key_name_admin(M)]. Transforming to [href_list["simplemake"]]; deletemob=[delmob]", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] has used rudimentary transformation on [key_name_admin(M)]. Transforming to [href_list["simplemake"]]; deletemob=[delmob]</font>", 1)
|
||||
|
||||
switch(href_list["simplemake"])
|
||||
if("observer") M.change_mob_type( /mob/observer/dead , null, null, delmob )
|
||||
if("larva") M.change_mob_type( /mob/living/carbon/alien/larva , null, null, delmob )
|
||||
if("nymph") M.change_mob_type( /mob/living/carbon/alien/diona , null, null, delmob )
|
||||
if("human") M.change_mob_type( /mob/living/carbon/human , null, null, delmob, href_list["species"])
|
||||
if("slime") M.change_mob_type( /mob/living/carbon/slime , null, null, delmob )
|
||||
if("slime") M.change_mob_type( /mob/living/simple_animal/slime , null, null, delmob )
|
||||
if("monkey") M.change_mob_type( /mob/living/carbon/human/monkey , null, null, delmob )
|
||||
if("robot") M.change_mob_type( /mob/living/silicon/robot , null, null, delmob )
|
||||
if("cat") M.change_mob_type( /mob/living/simple_animal/cat , null, null, delmob )
|
||||
@@ -339,7 +339,7 @@
|
||||
|
||||
log_admin("[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("\blue [key_name_admin(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]</font>", 1)
|
||||
Banlist.cd = "/base/[banfolder]"
|
||||
Banlist["reason"] << reason
|
||||
Banlist["temp"] << temp
|
||||
@@ -686,7 +686,7 @@
|
||||
usr << "<span class='warning'> You Cannot issue temporary job-bans!</span>"
|
||||
return
|
||||
if(config.ban_legacy_system)
|
||||
usr << "\red Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban."
|
||||
usr << "<font color='red'>Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban.</font>"
|
||||
return
|
||||
var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null
|
||||
if(!mins)
|
||||
@@ -711,10 +711,10 @@
|
||||
else
|
||||
msg += ", [job]"
|
||||
notes_add(M.ckey, "Banned from [msg] - [reason]", usr)
|
||||
message_admins("\blue [key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes", 1)
|
||||
M << "\red<BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG>"
|
||||
M << "\red <B>The reason is: [reason]</B>"
|
||||
M << "\red This jobban will be lifted in [mins] minutes."
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes</font>", 1)
|
||||
M << "<font color='red'><BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG></font>"
|
||||
M << "<font color='red'><B>The reason is: [reason]</B></font>"
|
||||
M << "<font color='red'>This jobban will be lifted in [mins] minutes.</font>"
|
||||
href_list["jobban2"] = 1 // lets it fall through and refresh
|
||||
return 1
|
||||
if("No")
|
||||
@@ -732,10 +732,10 @@
|
||||
if(!msg) msg = job
|
||||
else msg += ", [job]"
|
||||
notes_add(M.ckey, "Banned from [msg] - [reason]", usr)
|
||||
message_admins("\blue [key_name_admin(usr)] banned [key_name_admin(M)] from [msg]", 1)
|
||||
M << "\red<BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG>"
|
||||
M << "\red <B>The reason is: [reason]</B>"
|
||||
M << "\red Jobban can be lifted only upon request."
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] banned [key_name_admin(M)] from [msg]</font>", 1)
|
||||
M << "<font color='red'><BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG></font>"
|
||||
M << "<font color='red'><B>The reason is: [reason]</B></font>"
|
||||
M << "<font color='red'>Jobban can be lifted only upon request.</font>"
|
||||
href_list["jobban2"] = 1 // lets it fall through and refresh
|
||||
return 1
|
||||
if("Cancel")
|
||||
@@ -765,8 +765,8 @@
|
||||
else
|
||||
continue
|
||||
if(msg)
|
||||
message_admins("\blue [key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg]", 1)
|
||||
M << "\red<BIG><B>You have been un-jobbanned by [usr.client.ckey] from [msg].</B></BIG>"
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg]</font>", 1)
|
||||
M << "<font color='red'><BIG><B>You have been un-jobbanned by [usr.client.ckey] from [msg].</B></BIG></font>"
|
||||
href_list["jobban2"] = 1 // lets it fall through and refresh
|
||||
return 1
|
||||
return 0 //we didn't do anything!
|
||||
@@ -778,11 +778,11 @@
|
||||
return
|
||||
var/reason = sanitize(input("Please enter reason"))
|
||||
if(!reason)
|
||||
M << "\red You have been kicked from the server"
|
||||
M << "<font color='red'>You have been kicked from the server</font>"
|
||||
else
|
||||
M << "\red You have been kicked from the server: [reason]"
|
||||
M << "<font color='red'>You have been kicked from the server: [reason]</font>"
|
||||
log_admin("[key_name(usr)] booted [key_name(M)].")
|
||||
message_admins("\blue [key_name_admin(usr)] booted [key_name_admin(M)].", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] booted [key_name_admin(M)].</font>", 1)
|
||||
//M.client = null
|
||||
qdel(M.client)
|
||||
|
||||
@@ -793,7 +793,7 @@
|
||||
if(t)
|
||||
if((alert("Do you want to unjobban [t]?","Unjobban confirmation", "Yes", "No") == "Yes") && t) //No more misclicks! Unless you do it twice.
|
||||
log_admin("[key_name(usr)] removed [t]")
|
||||
message_admins("\blue [key_name_admin(usr)] removed [t]", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] removed [t]</font>", 1)
|
||||
jobban_remove(t)
|
||||
href_list["ban"] = 1 // lets it fall through and refresh
|
||||
var/t_split = splittext(t, " - ")
|
||||
@@ -830,17 +830,17 @@
|
||||
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins)
|
||||
ban_unban_log_save("[usr.client.ckey] has banned [M.ckey]. - Reason: [reason] - This will be removed in [mins] minutes.")
|
||||
notes_add(M.ckey,"[usr.client.ckey] has banned [M.ckey]. - Reason: [reason] - This will be removed in [mins] minutes.",usr)
|
||||
M << "\red<BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG>"
|
||||
M << "\red This is a temporary ban, it will be removed in [mins] minutes."
|
||||
M << "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
|
||||
M << "<font color='red'>This is a temporary ban, it will be removed in [mins] minutes.</font>"
|
||||
feedback_inc("ban_tmp",1)
|
||||
DB_ban_record(BANTYPE_TEMP, M, mins, reason)
|
||||
feedback_inc("ban_tmp_mins",mins)
|
||||
if(config.banappeals)
|
||||
M << "\red To try to resolve this matter head to [config.banappeals]"
|
||||
M << "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>"
|
||||
else
|
||||
M << "\red No ban appeals URL has been set."
|
||||
M << "<font color='red'>No ban appeals URL has been set.</font>"
|
||||
log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
|
||||
message_admins("\blue[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
|
||||
message_admins("<font color='blue'>[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.</font>")
|
||||
|
||||
qdel(M.client)
|
||||
//qdel(M) // See no reason why to delete mob. Important stuff can be lost. And ban can be lifted before round ends.
|
||||
@@ -855,16 +855,16 @@
|
||||
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0, M.lastKnownIP)
|
||||
if("No")
|
||||
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0)
|
||||
M << "\red<BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG>"
|
||||
M << "\red This is a permanent ban."
|
||||
M << "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
|
||||
M << "<font color='red'>This is a permanent ban.</font>"
|
||||
if(config.banappeals)
|
||||
M << "\red To try to resolve this matter head to [config.banappeals]"
|
||||
M << "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>"
|
||||
else
|
||||
M << "\red No ban appeals URL has been set."
|
||||
M << "<font color='red'>No ban appeals URL has been set.</font>"
|
||||
ban_unban_log_save("[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This is a permanent ban.")
|
||||
notes_add(M.ckey,"[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This is a permanent ban.",usr)
|
||||
log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
|
||||
message_admins("\blue[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
|
||||
message_admins("<font color='blue'>[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.</font>")
|
||||
feedback_inc("ban_perma",1)
|
||||
DB_ban_record(BANTYPE_PERMA, M, -1, reason)
|
||||
|
||||
@@ -920,8 +920,8 @@
|
||||
return alert(usr, "The game has already started.", null, null, null, null)
|
||||
master_mode = href_list["c_mode2"]
|
||||
log_admin("[key_name(usr)] set the mode as [config.mode_names[master_mode]].")
|
||||
message_admins("\blue [key_name_admin(usr)] set the mode as [config.mode_names[master_mode]].", 1)
|
||||
world << "\blue <b>The mode is now: [config.mode_names[master_mode]]</b>"
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] set the mode as [config.mode_names[master_mode]].</font>", 1)
|
||||
world << "<font color='blue'><b>The mode is now: [config.mode_names[master_mode]]</b></font>"
|
||||
Game() // updates the main game menu
|
||||
world.save_mode(master_mode)
|
||||
.(href, list("c_mode"=1))
|
||||
@@ -935,7 +935,7 @@
|
||||
return alert(usr, "The game mode has to be secret!", null, null, null, null)
|
||||
secret_force_mode = href_list["f_secret2"]
|
||||
log_admin("[key_name(usr)] set the forced secret mode as [secret_force_mode].")
|
||||
message_admins("\blue [key_name_admin(usr)] set the forced secret mode as [secret_force_mode].", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] set the forced secret mode as [secret_force_mode].</font>", 1)
|
||||
Game() // updates the main game menu
|
||||
.(href, list("f_secret"=1))
|
||||
|
||||
@@ -948,7 +948,7 @@
|
||||
return
|
||||
|
||||
log_admin("[key_name(usr)] attempting to monkeyize [key_name(H)]")
|
||||
message_admins("\blue [key_name_admin(usr)] attempting to monkeyize [key_name_admin(H)]", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] attempting to monkeyize [key_name_admin(H)]</font>", 1)
|
||||
H.monkeyize()
|
||||
|
||||
else if(href_list["corgione"])
|
||||
@@ -960,7 +960,7 @@
|
||||
return
|
||||
|
||||
log_admin("[key_name(usr)] attempting to corgize [key_name(H)]")
|
||||
message_admins("\blue [key_name_admin(usr)] attempting to corgize [key_name_admin(H)]", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] attempting to corgize [key_name_admin(H)]</font>", 1)
|
||||
H.corgize()
|
||||
|
||||
else if(href_list["forcespeech"])
|
||||
@@ -975,7 +975,7 @@
|
||||
M.say(speech)
|
||||
speech = sanitize(speech) // Nah, we don't trust them
|
||||
log_admin("[key_name(usr)] forced [key_name(M)] to say: [speech]")
|
||||
message_admins("\blue [key_name_admin(usr)] forced [key_name_admin(M)] to say: [speech]")
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] forced [key_name_admin(M)] to say: [speech]</font>")
|
||||
|
||||
else if(href_list["sendtoprison"])
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
@@ -1014,9 +1014,9 @@
|
||||
prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(prisoner), slot_w_uniform)
|
||||
prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes)
|
||||
|
||||
M << "\red You have been sent to the prison station!"
|
||||
M << "<font color='red'>You have been sent to the prison station!</font>"
|
||||
log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.")
|
||||
message_admins("\blue [key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.</font>", 1)
|
||||
|
||||
else if(href_list["tdome1"])
|
||||
if(!check_rights(R_FUN)) return
|
||||
@@ -1039,7 +1039,7 @@
|
||||
sleep(5)
|
||||
M.loc = pick(tdome1)
|
||||
spawn(50)
|
||||
M << "\blue You have been sent to the Thunderdome."
|
||||
M << "<font color='blue'>You have been sent to the Thunderdome.</font>"
|
||||
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Team 1)")
|
||||
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Team 1)", 1)
|
||||
|
||||
@@ -1064,7 +1064,7 @@
|
||||
sleep(5)
|
||||
M.loc = pick(tdome2)
|
||||
spawn(50)
|
||||
M << "\blue You have been sent to the Thunderdome."
|
||||
M << "<font color='blue'>You have been sent to the Thunderdome.</font>"
|
||||
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Team 2)")
|
||||
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Team 2)", 1)
|
||||
|
||||
@@ -1086,7 +1086,7 @@
|
||||
sleep(5)
|
||||
M.loc = pick(tdomeadmin)
|
||||
spawn(50)
|
||||
M << "\blue You have been sent to the Thunderdome."
|
||||
M << "<font color='blue'>You have been sent to the Thunderdome.</font>"
|
||||
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Admin.)")
|
||||
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Admin.)", 1)
|
||||
|
||||
@@ -1115,7 +1115,7 @@
|
||||
sleep(5)
|
||||
M.loc = pick(tdomeobserve)
|
||||
spawn(50)
|
||||
M << "\blue You have been sent to the Thunderdome."
|
||||
M << "<font color='blue'>You have been sent to the Thunderdome.</font>"
|
||||
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Observer.)")
|
||||
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Observer.)", 1)
|
||||
|
||||
@@ -1129,7 +1129,7 @@
|
||||
|
||||
if(config.allow_admin_rev)
|
||||
L.revive()
|
||||
message_admins("\red Admin [key_name_admin(usr)] healed / revived [key_name_admin(L)]!", 1)
|
||||
message_admins("<font color='red'>Admin [key_name_admin(usr)] healed / revived [key_name_admin(L)]!</font>", 1)
|
||||
log_admin("[key_name(usr)] healed / Rrvived [key_name(L)]")
|
||||
else
|
||||
usr << "Admin Rejuvinates have been disabled"
|
||||
@@ -1142,19 +1142,19 @@
|
||||
usr << "This can only be used on instances of type /mob/living/carbon/human"
|
||||
return
|
||||
|
||||
message_admins("\red Admin [key_name_admin(usr)] AIized [key_name_admin(H)]!", 1)
|
||||
message_admins("<font color='red'>Admin [key_name_admin(usr)] AIized [key_name_admin(H)]!</font>", 1)
|
||||
log_admin("[key_name(usr)] AIized [key_name(H)]")
|
||||
H.AIize()
|
||||
|
||||
else if(href_list["makeslime"])
|
||||
else if(href_list["makealien"])
|
||||
if(!check_rights(R_SPAWN)) return
|
||||
|
||||
var/mob/living/carbon/human/H = locate(href_list["makeslime"])
|
||||
var/mob/living/carbon/human/H = locate(href_list["makealien"])
|
||||
if(!istype(H))
|
||||
usr << "This can only be used on instances of type /mob/living/carbon/human"
|
||||
return
|
||||
|
||||
usr.client.cmd_admin_slimeize(H)
|
||||
usr.client.cmd_admin_alienize(H)
|
||||
|
||||
else if(href_list["makerobot"])
|
||||
if(!check_rights(R_SPAWN)) return
|
||||
@@ -1317,7 +1317,7 @@
|
||||
log_admin("[key_name(H)] got their cookie, spawned by [key_name(src.owner)]")
|
||||
message_admins("[key_name(H)] got their cookie, spawned by [key_name(src.owner)]")
|
||||
feedback_inc("admin_cookies_spawned",1)
|
||||
H << "\blue Your prayers have been answered!! You received the <b>best cookie</b>!"
|
||||
H << "<font color='blue'>Your prayers have been answered!! You received the <b>best cookie</b>!</font>"
|
||||
|
||||
else if(href_list["BlueSpaceArtillery"])
|
||||
if(!check_rights(R_ADMIN|R_FUN)) return
|
||||
@@ -1421,7 +1421,7 @@
|
||||
|
||||
usr << browse(data, "window=[B.name]")
|
||||
else
|
||||
usr << "\red The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]"
|
||||
usr << "<font color='red'>The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]</font>"
|
||||
|
||||
else if (href_list["AdminFaxViewPage"])
|
||||
var/page = text2num(href_list["AdminFaxViewPage"])
|
||||
|
||||
@@ -6,18 +6,18 @@
|
||||
/client/proc/SDQL_query(query_text as message)
|
||||
set category = "Admin"
|
||||
if(!check_rights(R_DEBUG)) //Shouldn't happen... but just to be safe.
|
||||
message_admins("\red ERROR: Non-admin [usr.key] attempted to execute a SDQL query!")
|
||||
message_admins("<font color='red'>ERROR: Non-admin [usr.key] attempted to execute a SDQL query!</font>")
|
||||
log_admin("Non-admin [usr.key] attempted to execute a SDQL query!")
|
||||
|
||||
var/list/query_list = SDQL_tokenize(query_text)
|
||||
|
||||
if(query_list.len < 2)
|
||||
if(query_list.len > 0)
|
||||
usr << "\red SDQL: Too few discrete tokens in query \"[query_text]\". Please check your syntax and try again."
|
||||
usr << "<font color='red'>SDQL: Too few discrete tokens in query \"[query_text]\". Please check your syntax and try again.</font>"
|
||||
return
|
||||
|
||||
if(!(lowertext(query_list[1]) in list("select", "delete", "update")))
|
||||
usr << "\red SDQL: Unknown query type: \"[query_list[1]]\" in query \"[query_text]\". Please check your syntax and try again."
|
||||
usr << "<font color='red'>SDQL: Unknown query type: \"[query_list[1]]\" in query \"[query_text]\". Please check your syntax and try again.</font>"
|
||||
return
|
||||
|
||||
var/list/types = list()
|
||||
@@ -56,7 +56,7 @@
|
||||
set_vars[query_list[i]] = query_list[i + 2]
|
||||
|
||||
else
|
||||
usr << "\red SDQL: Invalid set parameter in query \"[query_text]\". Please check your syntax and try again."
|
||||
usr << "<font color='red'>SDQL: Invalid set parameter in query \"[query_text]\". Please check your syntax and try again.</font>"
|
||||
return
|
||||
|
||||
i += 3
|
||||
@@ -65,7 +65,7 @@
|
||||
break
|
||||
|
||||
if(set_vars.len < 1)
|
||||
usr << "\red SDQL: Invalid or missing set in query \"[query_text]\". Please check your syntax and try again."
|
||||
usr << "<font color='red'>SDQL: Invalid or missing set in query \"[query_text]\". Please check your syntax and try again.</font>"
|
||||
return
|
||||
|
||||
var/list/where = list()
|
||||
@@ -215,7 +215,7 @@
|
||||
var/v = where[i++]
|
||||
var/compare_op = where[i++]
|
||||
if(!(compare_op in list("==", "=", "<>", "<", ">", "<=", ">=", "!=")))
|
||||
usr << "\red SDQL: Unknown comparison operator [compare_op] in where clause following [v] in query \"[query_text]\". Please check your syntax and try again."
|
||||
usr << "<font color='red'>SDQL: Unknown comparison operator [compare_op] in where clause following [v] in query \"[query_text]\". Please check your syntax and try again.</font>"
|
||||
return
|
||||
|
||||
var/j
|
||||
@@ -262,7 +262,7 @@
|
||||
|
||||
|
||||
|
||||
usr << "\blue SQDL Query: [query_text]"
|
||||
usr << "<font color='blue'>SQDL Query: [query_text]</font>"
|
||||
message_admins("[usr] executed SDQL query: \"[query_text]\".")
|
||||
/*
|
||||
for(var/t in types)
|
||||
@@ -349,7 +349,7 @@
|
||||
|
||||
|
||||
else
|
||||
usr << "\red SDQL: Sorry, equations not yet supported :("
|
||||
usr << "<font color='red'>SDQL: Sorry, equations not yet supported :(</font>"
|
||||
return null
|
||||
|
||||
|
||||
@@ -434,7 +434,7 @@
|
||||
|
||||
else if(char == "'")
|
||||
if(word != "")
|
||||
usr << "\red SDQL: You have an error in your SDQL syntax, unexpected ' in query: \"<font color=gray>[query_text]</font>\" following \"<font color=gray>[word]</font>\". Please check your syntax, and try again."
|
||||
usr << "<font color='red'>SDQL: You have an error in your SDQL syntax, unexpected ' in query:</font> \"<font color=gray>[query_text]</font>\" following \"<font color=gray>[word]</font>\". Please check your syntax, and try again."
|
||||
return null
|
||||
|
||||
word = "'"
|
||||
@@ -454,7 +454,7 @@
|
||||
word += char
|
||||
|
||||
if(i > len)
|
||||
usr << "\red SDQL: You have an error in your SDQL syntax, unmatched ' in query: \"<font color=gray>[query_text]</font>\". Please check your syntax, and try again."
|
||||
usr << "<font color='red'>SDQL: You have an error in your SDQL syntax, unmatched ' in query: </font>\"<font color=gray>[query_text]</font>\". Please check your syntax, and try again."
|
||||
return null
|
||||
|
||||
query_list += "[word]'"
|
||||
@@ -462,7 +462,7 @@
|
||||
|
||||
else if(char == "\"")
|
||||
if(word != "")
|
||||
usr << "\red SDQL: You have an error in your SDQL syntax, unexpected \" in query: \"<font color=gray>[query_text]</font>\" following \"<font color=gray>[word]</font>\". Please check your syntax, and try again."
|
||||
usr << "<font color='red'>SDQL: You have an error in your SDQL syntax, unexpected \" in query: </font>\"<font color=gray>[query_text]</font>\" following \"<font color=gray>[word]</font>\". Please check your syntax, and try again."
|
||||
return null
|
||||
|
||||
word = "\""
|
||||
@@ -482,7 +482,7 @@
|
||||
word += char
|
||||
|
||||
if(i > len)
|
||||
usr << "\red SDQL: You have an error in your SDQL syntax, unmatched \" in query: \"<font color=gray>[query_text]</font>\". Please check your syntax, and try again."
|
||||
usr << "<font color='red'>SDQL: You have an error in your SDQL syntax, unmatched \" in query: </font>\"<font color=gray>[query_text]</font>\". Please check your syntax, and try again."
|
||||
return null
|
||||
|
||||
query_list += "[word]\""
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/client/proc/SDQL2_query(query_text as message)
|
||||
set category = "Admin"
|
||||
if(!check_rights(R_DEBUG)) //Shouldn't happen... but just to be safe.
|
||||
message_admins("\red ERROR: Non-admin [usr.key] attempted to execute a SDQL query!")
|
||||
message_admins("<font color='red'>ERROR: Non-admin [usr.key] attempted to execute a SDQL query!</font>")
|
||||
log_admin("Non-admin [usr.key] attempted to execute a SDQL query!")
|
||||
|
||||
if(!query_text || length(query_text) < 1)
|
||||
@@ -258,7 +258,7 @@
|
||||
if("or", "||")
|
||||
result = (result || val)
|
||||
else
|
||||
usr << "\red SDQL2: Unknown op [op]"
|
||||
usr << "<font color='red'>SDQL2: Unknown op [op]</font>"
|
||||
result = null
|
||||
else
|
||||
result = val
|
||||
@@ -363,7 +363,7 @@
|
||||
|
||||
else if(char == "'")
|
||||
if(word != "")
|
||||
usr << "\red SDQL2: You have an error in your SDQL syntax, unexpected ' in query: \"<font color=gray>[query_text]</font>\" following \"<font color=gray>[word]</font>\". Please check your syntax, and try again."
|
||||
usr << "<font color='red'>SDQL2: You have an error in your SDQL syntax, unexpected ' in query: \"<font color=gray>[query_text]</font>\" following \"<font color=gray>[word]</font>\". Please check your syntax, and try again.</font>"
|
||||
return null
|
||||
|
||||
word = "'"
|
||||
@@ -383,7 +383,7 @@
|
||||
word += char
|
||||
|
||||
if(i > len)
|
||||
usr << "\red SDQL2: You have an error in your SDQL syntax, unmatched ' in query: \"<font color=gray>[query_text]</font>\". Please check your syntax, and try again."
|
||||
usr << "<font color='red'>SDQL2: You have an error in your SDQL syntax, unmatched ' in query: \"<font color=gray>[query_text]</font>\". Please check your syntax, and try again.</font>"
|
||||
return null
|
||||
|
||||
query_list += "[word]'"
|
||||
@@ -391,7 +391,7 @@
|
||||
|
||||
else if(char == "\"")
|
||||
if(word != "")
|
||||
usr << "\red SDQL2: You have an error in your SDQL syntax, unexpected \" in query: \"<font color=gray>[query_text]</font>\" following \"<font color=gray>[word]</font>\". Please check your syntax, and try again."
|
||||
usr << "<font color='red'>SDQL2: You have an error in your SDQL syntax, unexpected \" in query: \"<font color=gray>[query_text]</font>\" following \"<font color=gray>[word]</font>\". Please check your syntax, and try again.</font>"
|
||||
return null
|
||||
|
||||
word = "\""
|
||||
@@ -411,7 +411,7 @@
|
||||
word += char
|
||||
|
||||
if(i > len)
|
||||
usr << "\red SDQL2: You have an error in your SDQL syntax, unmatched \" in query: \"<font color=gray>[query_text]</font>\". Please check your syntax, and try again."
|
||||
usr << "<font color='red'>SDQL2: You have an error in your SDQL syntax, unmatched \" in query: \"<font color=gray>[query_text]</font>\". Please check your syntax, and try again.</font>"
|
||||
return null
|
||||
|
||||
query_list += "[word]\""
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
/datum/SDQL_parser/proc/parse_error(error_message)
|
||||
error = 1
|
||||
usr << "\red SQDL2 Parsing Error: [error_message]"
|
||||
usr << "<font color='red'>SQDL2 Parsing Error: [error_message]</font>"
|
||||
return query.len + 1
|
||||
|
||||
/datum/SDQL_parser/proc/parse()
|
||||
|
||||
@@ -7,7 +7,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
set name = "Adminhelp"
|
||||
|
||||
if(say_disabled) //This is here to try to identify lag problems
|
||||
usr << "\red Speech is currently admin-disabled."
|
||||
usr << "<font color='red'>Speech is currently admin-disabled.</font>"
|
||||
return
|
||||
|
||||
//handle muting and automuting
|
||||
@@ -91,8 +91,8 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
//Options bar: mob, details ( admin = 2, dev = 3, mentor = 4, character name (0 = just ckey, 1 = ckey and character name), link? (0 no don't make it a link, 1 do so),
|
||||
// highlight special roles (0 = everyone has same looking name, 1 = antags / special roles get a golden name)
|
||||
|
||||
var/mentor_msg = "\blue <b><font color=red>Request for Help: </font>[get_options_bar(mob, 4, 1, 1, 0)][ai_cl]:</b> [msg]"
|
||||
msg = "\blue <b><font color=red>Request for Help:: </font>[get_options_bar(mob, 2, 1, 1)][ai_cl]:</b> [msg]"
|
||||
var/mentor_msg = "<b><font color=red>Request for Help: </font></b><font color='blue'><b>[get_options_bar(mob, 4, 1, 1, 0)][ai_cl]:</b> [msg]</font>"
|
||||
msg = "<b><font color=red>Request for Help: </font></b><font color='blue'><b>[get_options_bar(mob, 2, 1, 1)][ai_cl]</b> [msg]</font>"
|
||||
|
||||
var/admin_number_afk = 0
|
||||
|
||||
|
||||
@@ -2,10 +2,12 @@
|
||||
set category = "Special Verbs"
|
||||
set name = "Asay" //Gave this shit a shorter name so you only have to time out "asay" rather than "admin say" to use it --NeoFite
|
||||
set hidden = 1
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
msg = sanitize(msg)
|
||||
if(!msg) return
|
||||
if(!msg)
|
||||
return
|
||||
|
||||
log_admin("ADMIN: [key_name(src)] : [msg]")
|
||||
|
||||
@@ -21,7 +23,8 @@
|
||||
set name = "Msay"
|
||||
set hidden = 1
|
||||
|
||||
if(!check_rights(R_ADMIN|R_MOD|R_MENTOR|R_SERVER)) return
|
||||
if(!check_rights(R_ADMIN|R_MOD|R_MENTOR|R_SERVER))
|
||||
return
|
||||
|
||||
msg = sanitize(msg)
|
||||
log_admin("MOD: [key_name(src)] : [msg]")
|
||||
@@ -36,3 +39,25 @@
|
||||
C << "<span class='mod_channel'>" + create_text_tag("mod", "MOD:", C) + " <span class='name'>[sender_name]</span>([admin_jump_link(mob, C.holder)]): <span class='message'>[msg]</span></span>"
|
||||
|
||||
feedback_add_details("admin_verb","MS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_event_say(msg as text)
|
||||
set category = "Special Verbs"
|
||||
set name = "Esay"
|
||||
set hidden = 1
|
||||
|
||||
if(!check_rights(R_ADMIN|R_MOD|R_MENTOR|R_SERVER))
|
||||
return
|
||||
|
||||
msg = sanitize(msg)
|
||||
log_admin("EVENT: [key_name(src)] : [msg]")
|
||||
|
||||
if (!msg)
|
||||
return
|
||||
|
||||
var/sender_name = key_name(usr, 1)
|
||||
if(check_rights(R_ADMIN, 0))
|
||||
sender_name = "<span class='admin'>[sender_name]</span>"
|
||||
for(var/client/C in admins)
|
||||
C << "<span class='event_channel'>" + create_text_tag("event", "EVENT:", C) + " <span class='name'>[sender_name]</span>([admin_jump_link(mob, C.holder)]): <span class='message'>[msg]</span></span>"
|
||||
|
||||
feedback_add_details("admin_verb","GS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -3,17 +3,40 @@
|
||||
set name = "AOOC"
|
||||
set desc = "Antagonist OOC"
|
||||
|
||||
if(!check_rights(R_ADMIN|R_MOD)) return
|
||||
var/is_admin = check_rights(R_ADMIN|R_MOD, show_msg = 0)
|
||||
var/is_antag = usr.mind && usr.mind.special_role
|
||||
|
||||
if(!is_antag && !is_admin) // Non-antagonists and non-admins have no business using this.
|
||||
to_chat(usr, "<span class='warning'>Sorry, but only certain antagonists or administrators can use this verb.</span>")
|
||||
return
|
||||
|
||||
else if(is_antag && !is_admin) // Is an antag, and not an admin, meaning we need to check if their antag type allows AOOC.
|
||||
var/datum/antagonist/A = get_antag_data(usr.mind.special_role)
|
||||
if(!A || !A.can_use_aooc)
|
||||
to_chat(usr, "<span class='warning'>Sorry, but your antagonist type is not allowed to speak in AOOC.</span>")
|
||||
return
|
||||
|
||||
msg = sanitize(msg)
|
||||
if(!msg) return
|
||||
if(!msg)
|
||||
return
|
||||
|
||||
// Name shown to admins.
|
||||
var/display_name = src.key
|
||||
if(holder && holder.fakekey)
|
||||
display_name = holder.fakekey
|
||||
if(holder)
|
||||
if(holder.fakekey)
|
||||
display_name = usr.client.holder.fakekey
|
||||
|
||||
// Name shown to other players. Admins whom are not also antags have their rank displayed.
|
||||
var/player_display = (is_admin && !is_antag) ? "[display_name]([usr.client.holder.rank])" : display_name
|
||||
|
||||
for(var/mob/M in mob_list)
|
||||
if((M.mind && M.mind.special_role && M.client) || check_rights((R_ADMIN|R_MOD), 0, M))
|
||||
M << "<font color='#960018'><span class='ooc'>" + create_text_tag("aooc", "Antag-OOC:", M.client) + " <EM>[display_name]:</EM> <span class='message'>[msg]</span></span></font>"
|
||||
if(check_rights(R_ADMIN|R_MOD, 0, M)) // Staff can see AOOC unconditionally, and with more details.
|
||||
to_chat(M, "<span class='ooc'><span class='aooc'>[create_text_tag("aooc", "Antag-OOC:", M.client)] <EM>[get_options_bar(src, 0, 1, 1)]([admin_jump_link(usr, M.client.holder)]):</EM> <span class='message'>[msg]</span></span></span>")
|
||||
else if(M.client) // Players can only see AOOC if observing, or if they are an antag type allowed to use AOOC.
|
||||
var/datum/antagonist/A = null
|
||||
if(M.mind) // Observers don't have minds, but they should still see AOOC.
|
||||
A = get_antag_data(M.mind.special_role)
|
||||
if((M.mind && M.mind.special_role && A && A.can_use_aooc) || isobserver(M)) // Antags must have their type be allowed to AOOC to see AOOC. This prevents, say, ERT from seeing AOOC.
|
||||
to_chat(M, "<span class='ooc'><span class='aooc'>[create_text_tag("aooc", "Antag-OOC:", M.client)] <EM>[player_display]:</EM> <span class='message'>[msg]</span></span></span>")
|
||||
|
||||
log_ooc("(ANTAG) [key] : [msg]")
|
||||
@@ -28,11 +28,11 @@
|
||||
|
||||
var/datum/gas_mixture/env = T.return_air()
|
||||
|
||||
var/t = "\blue Coordinates: [T.x],[T.y],[T.z]\n"
|
||||
t += "\red Temperature: [env.temperature]\n"
|
||||
t += "\red Pressure: [env.return_pressure()]kPa\n"
|
||||
var/t = "<font color='blue'>Coordinates: [T.x],[T.y],[T.z]\n</font>"
|
||||
t += "<font color='red'>Temperature: [env.temperature]\n</font>"
|
||||
t += "<font color='red'>Pressure: [env.return_pressure()]kPa\n</font>"
|
||||
for(var/g in env.gas)
|
||||
t += "\blue [g]: [env.gas[g]] / [env.gas[g] * R_IDEAL_GAS_EQUATION * env.temperature / env.volume]kPa\n"
|
||||
t += "<font color='blue'>[g]: [env.gas[g]] / [env.gas[g] * R_IDEAL_GAS_EQUATION * env.temperature / env.volume]kPa\n</font>"
|
||||
|
||||
usr.show_message(t, 1)
|
||||
feedback_add_details("admin_verb","ASL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -100,20 +100,20 @@
|
||||
paiController.pai_candidates.Remove(candidate)
|
||||
feedback_add_details("admin_verb","MPAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_slimeize(var/mob/M in mob_list)
|
||||
/client/proc/cmd_admin_alienize(var/mob/M in mob_list)
|
||||
set category = "Fun"
|
||||
set name = "Make slime"
|
||||
set name = "Make Alien"
|
||||
|
||||
if(!ticker)
|
||||
alert("Wait until the game starts")
|
||||
return
|
||||
if(ishuman(M))
|
||||
log_admin("[key_name(src)] has slimeized [M.key].")
|
||||
log_admin("[key_name(src)] has alienized [M.key].")
|
||||
spawn(10)
|
||||
M:slimeize()
|
||||
feedback_add_details("admin_verb","MKMET") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
log_admin("[key_name(usr)] made [key_name(M)] into a slime.")
|
||||
message_admins("\blue [key_name_admin(usr)] made [key_name(M)] into a slime.", 1)
|
||||
M:Alienize()
|
||||
feedback_add_details("admin_verb","MKAL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
log_admin("[key_name(usr)] made [key_name(M)] into an alien.")
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] made [key_name(M)] into an alien.</span>", 1)
|
||||
else
|
||||
alert("Invalid mob")
|
||||
|
||||
@@ -179,28 +179,28 @@
|
||||
return
|
||||
else
|
||||
if(alert("Spawn that person a tome?",,"Yes","No")=="Yes")
|
||||
M << "\red You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie. A tome, a message from your new master, appears on the ground."
|
||||
M << "<font color='red'>You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie. A tome, a message from your new master, appears on the ground.</font>"
|
||||
new /obj/item/weapon/book/tome(M.loc)
|
||||
else
|
||||
M << "\red You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie."
|
||||
M << "<font color='red'>You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie.</font>"
|
||||
var/glimpse=pick("1","2","3","4","5","6","7","8")
|
||||
switch(glimpse)
|
||||
if("1")
|
||||
M << "\red You remembered one thing from the glimpse... [cultwords["travel"]] is travel..."
|
||||
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["travel"]] is travel...</font>"
|
||||
if("2")
|
||||
M << "\red You remembered one thing from the glimpse... [cultwords["blood"]] is blood..."
|
||||
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["blood"]] is blood...</font>"
|
||||
if("3")
|
||||
M << "\red You remembered one thing from the glimpse... [cultwords["join"]] is join..."
|
||||
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["join"]] is join...</font>"
|
||||
if("4")
|
||||
M << "\red You remembered one thing from the glimpse... [cultwords["hell"]] is Hell..."
|
||||
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["hell"]] is Hell...</font>"
|
||||
if("5")
|
||||
M << "\red You remembered one thing from the glimpse... [cultwords["destroy"]] is destroy..."
|
||||
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["destroy"]] is destroy...</font>"
|
||||
if("6")
|
||||
M << "\red You remembered one thing from the glimpse... [cultwords["technology"]] is technology..."
|
||||
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["technology"]] is technology...</font>"
|
||||
if("7")
|
||||
M << "\red You remembered one thing from the glimpse... [cultwords["self"]] is self..."
|
||||
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["self"]] is self...</font>"
|
||||
if("8")
|
||||
M << "\red You remembered one thing from the glimpse... [cultwords["see"]] is see..."
|
||||
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["see"]] is see...</font>"
|
||||
|
||||
if(M.mind)
|
||||
M.mind.special_role = "Cultist"
|
||||
@@ -270,7 +270,7 @@
|
||||
alert("Invalid mob")
|
||||
feedback_add_details("admin_verb","GFA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
log_admin("[key_name(src)] has granted [M.key] full access.")
|
||||
message_admins("\blue [key_name_admin(usr)] has granted [M.key] full access.", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] has granted [M.key] full access.</font>", 1)
|
||||
|
||||
/client/proc/cmd_assume_direct_control(var/mob/M in mob_list)
|
||||
set category = "Admin"
|
||||
@@ -284,7 +284,7 @@
|
||||
else
|
||||
var/mob/observer/dead/ghost = new/mob/observer/dead(M,1)
|
||||
ghost.ckey = M.ckey
|
||||
message_admins("\blue [key_name_admin(usr)] assumed direct control of [M].", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] assumed direct control of [M].</font>", 1)
|
||||
log_admin("[key_name(usr)] assumed direct control of [M].")
|
||||
var/mob/adminmob = src.mob
|
||||
M.ckey = src.ckey
|
||||
@@ -480,7 +480,7 @@
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/det(M), slot_head)
|
||||
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver(M), slot_r_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/ammo_magazine/a357(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/ammo_magazine/s357(M), slot_l_store)
|
||||
|
||||
if ("tournament chef") //Steven Seagal FTW
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform)
|
||||
@@ -592,7 +592,7 @@
|
||||
sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000
|
||||
sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow
|
||||
sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba
|
||||
sec_briefcase.contents += new /obj/item/ammo_magazine/a357
|
||||
sec_briefcase.contents += new /obj/item/ammo_magazine/s357
|
||||
sec_briefcase.contents += new /obj/item/weapon/plastique
|
||||
M.equip_to_slot_or_del(sec_briefcase, slot_l_hand)
|
||||
|
||||
@@ -787,7 +787,7 @@
|
||||
M.regenerate_icons()
|
||||
|
||||
log_admin("[key_name(usr)] changed the equipment of [key_name(M)] to [dresscode].")
|
||||
message_admins("\blue [key_name_admin(usr)] changed the equipment of [key_name_admin(M)] to [dresscode]..", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] changed the equipment of [key_name_admin(M)] to [dresscode]..</font>", 1)
|
||||
return
|
||||
|
||||
/client/proc/startSinglo()
|
||||
@@ -911,7 +911,7 @@
|
||||
SMES.output_level = 75000
|
||||
|
||||
if(!found_the_pump && response == "Setup Completely")
|
||||
src << "\red Unable to locate air supply to fill up with coolant, adding some coolant around the supermatter"
|
||||
src << "<font color='red'>Unable to locate air supply to fill up with coolant, adding some coolant around the supermatter</font>"
|
||||
var/turf/simulated/T = SM.loc
|
||||
T.zone.air.gas["nitrogen"] += 450
|
||||
T.zone.air.temperature = 50
|
||||
@@ -919,7 +919,7 @@
|
||||
|
||||
|
||||
log_admin("[key_name(usr)] setup the supermatter engine [response == "Setup except coolant" ? "without coolant" : ""]")
|
||||
message_admins("\blue [key_name_admin(usr)] setup the supermatter engine [response == "Setup except coolant" ? "without coolant": ""]", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] setup the supermatter engine [response == "Setup except coolant" ? "without coolant": ""]</font>", 1)
|
||||
return
|
||||
|
||||
|
||||
@@ -943,6 +943,15 @@
|
||||
if("Clients")
|
||||
usr << jointext(clients,",")
|
||||
|
||||
/client/proc/cmd_debug_using_map()
|
||||
set category = "Debug"
|
||||
set name = "Debug Map Datum"
|
||||
set desc = "Debug the map metadata about the currently compiled in map."
|
||||
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
debug_variables(using_map)
|
||||
|
||||
// DNA2 - Admin Hax
|
||||
/client/proc/cmd_admin_toggle_block(var/mob/M,var/block)
|
||||
if(!ticker)
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
/client/proc/map_template_load()
|
||||
set category = "Debug"
|
||||
set name = "Map template - Place At Loc"
|
||||
|
||||
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
|
||||
if(!map)
|
||||
return
|
||||
template = map_templates[map]
|
||||
|
||||
var/turf/T = get_turf(mob)
|
||||
if(!T)
|
||||
return
|
||||
|
||||
var/list/preview = list()
|
||||
template.preload_size(template.mappath)
|
||||
for(var/S in template.get_affected_turfs(T,centered = TRUE))
|
||||
preview += image('icons/misc/debug_group.dmi',S ,"red")
|
||||
usr.client.images += preview
|
||||
if(alert(usr,"Confirm location.", "Template Confirm","No","Yes") == "Yes")
|
||||
if(template.annihilate && alert(usr,"This template is set to annihilate everything in the red square. \
|
||||
\nEVERYTHING IN THE RED SQUARE WILL BE DELETED, ARE YOU ABSOLUTELY SURE?", "Template Confirm","No","Yes") == "No")
|
||||
usr.client.images -= preview
|
||||
return
|
||||
|
||||
if(template.load(T, centered = TRUE))
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has placed a map template ([template.name]).</span>")
|
||||
else
|
||||
to_chat(usr, "Failed to place map")
|
||||
usr.client.images -= preview
|
||||
|
||||
/client/proc/map_template_load_on_new_z()
|
||||
set category = "Debug"
|
||||
set name = "Map template - New Z"
|
||||
|
||||
var/datum/map_template/template
|
||||
|
||||
var/map = input(usr, "Choose a Map Template to place on a new Z-level.","Place Map Template") as null|anything in map_templates
|
||||
if(!map)
|
||||
return
|
||||
template = map_templates[map]
|
||||
|
||||
if(alert(usr,"Confirm map load.", "Template Confirm","No","Yes") == "Yes")
|
||||
if(template.load_new_z())
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has placed a map template ([template.name]) on Z level [world.maxz].</span>")
|
||||
else
|
||||
to_chat(usr, "Failed to place map")
|
||||
|
||||
|
||||
/client/proc/map_template_upload()
|
||||
set category = "Debug"
|
||||
set name = "Map Template - Upload"
|
||||
|
||||
var/map = input(usr, "Choose a Map Template to upload to template storage","Upload Map Template") as null|file
|
||||
if(!map)
|
||||
return
|
||||
if(copytext("[map]",-4) != ".dmm")
|
||||
to_chat(usr, "Bad map file: [map]")
|
||||
return
|
||||
|
||||
var/datum/map_template/M = new(map, "[map]")
|
||||
if(M.preload_size(map))
|
||||
to_chat(usr, "Map template '[map]' ready to place ([M.width]x[M.height])")
|
||||
map_templates[M.name] = M
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has uploaded a map template ([map])</span>")
|
||||
else
|
||||
to_chat(usr, "Map template '[map]' failed to load properly")
|
||||
@@ -159,7 +159,7 @@ var/list/debug_verbs = list (
|
||||
,/client/proc/hide_debug_verbs
|
||||
,/client/proc/testZAScolors
|
||||
,/client/proc/testZAScolors_remove
|
||||
,/client/proc/setup_supermatter_engine
|
||||
,/datum/admins/proc/setup_supermatter
|
||||
,/client/proc/atmos_toggle_debug
|
||||
,/client/proc/spawn_tanktransferbomb
|
||||
)
|
||||
@@ -217,7 +217,7 @@ var/list/debug_verbs = list (
|
||||
var/turf/simulated/location = get_turf(usr)
|
||||
|
||||
if(!istype(location, /turf/simulated)) // We're in space, let's not cause runtimes.
|
||||
usr << "\red this debug tool cannot be used from space"
|
||||
usr << "<font color='red'>this debug tool cannot be used from space</font>"
|
||||
return
|
||||
|
||||
var/icon/red = new('icons/misc/debug_group.dmi', "red") //created here so we don't have to make thousands of these.
|
||||
@@ -368,7 +368,7 @@ var/global/prevent_airgroup_regroup = 0
|
||||
set category = "Mapping"
|
||||
set name = "Regroup All Airgroups Attempt"
|
||||
|
||||
usr << "\red Proc disabled."
|
||||
usr << "<font color='red'>Proc disabled.</font>" //Why not.. Delete the procs instead?
|
||||
|
||||
/*prevent_airgroup_regroup = 0
|
||||
for(var/datum/air_group/AG in air_master.air_groups)
|
||||
@@ -379,7 +379,7 @@ var/global/prevent_airgroup_regroup = 0
|
||||
set category = "Mapping"
|
||||
set name = "Kill pipe processing"
|
||||
|
||||
usr << "\red Proc disabled."
|
||||
usr << "<font color='red'>Proc disabled.</font>"
|
||||
|
||||
/*pipe_processing_killed = !pipe_processing_killed
|
||||
if(pipe_processing_killed)
|
||||
@@ -391,7 +391,7 @@ var/global/prevent_airgroup_regroup = 0
|
||||
set category = "Mapping"
|
||||
set name = "Kill air processing"
|
||||
|
||||
usr << "\red Proc disabled."
|
||||
usr << "<font color='red'>Proc disabled.</font>"
|
||||
|
||||
/*air_processing_killed = !air_processing_killed
|
||||
if(air_processing_killed)
|
||||
@@ -405,7 +405,7 @@ var/global/say_disabled = 0
|
||||
set category = "Mapping"
|
||||
set name = "Disable all communication verbs"
|
||||
|
||||
usr << "\red Proc disabled."
|
||||
usr << "<font color='red'>Proc disabled.</font>"
|
||||
|
||||
/*say_disabled = !say_disabled
|
||||
if(say_disabled)
|
||||
@@ -420,7 +420,7 @@ var/global/movement_disabled_exception //This is the client that calls the proc,
|
||||
set category = "Mapping"
|
||||
set name = "Disable all movement"
|
||||
|
||||
usr << "\red Proc disabled."
|
||||
usr << "<font color='red'>Proc disabled.</font>"
|
||||
|
||||
/*movement_disabled = !movement_disabled
|
||||
if(movement_disabled)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
for(var/p in forbidden_varedit_object_types)
|
||||
if( istype(O,p) )
|
||||
usr << "\red It is forbidden to edit this object's variables."
|
||||
usr << "<font color='red'>It is forbidden to edit this object's variables.</font>"
|
||||
return
|
||||
|
||||
var/list/names = list()
|
||||
|
||||
@@ -4,7 +4,7 @@ var/list/forbidden_varedit_object_types = list(
|
||||
/datum/feedback_variable //Prevents people messing with feedback gathering,
|
||||
)
|
||||
|
||||
var/list/VVlocked = list("vars", "client", "virus", "viruses", "cuffed", "last_eaten", "unlock_content", "bound_x", "bound_y", "step_x", "step_y", "force_ending")
|
||||
var/list/VVlocked = list("vars", "client", "virus", "viruses", "cuffed", "last_eaten", "unlock_content", "bound_x", "bound_y", "step_x", "step_y", "force_ending", "queued_priority")
|
||||
var/list/VVicon_edit_lock = list("icon", "icon_state", "overlays", "underlays")
|
||||
var/list/VVckey_edit = list("key", "ckey")
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
set name = "Pray"
|
||||
|
||||
if(say_disabled) //This is here to try to identify lag problems
|
||||
usr << "\red Speech is currently admin-disabled."
|
||||
usr << "<font color='red'>Speech is currently admin-disabled.</font>"
|
||||
return
|
||||
|
||||
msg = sanitize(msg)
|
||||
@@ -13,11 +13,11 @@
|
||||
if(msg)
|
||||
client.handle_spam_prevention(MUTE_PRAY)
|
||||
if(usr.client.prefs.muted & MUTE_PRAY)
|
||||
usr << "\red You cannot pray (muted)."
|
||||
usr << "<font color='red'> You cannot pray (muted).</font>"
|
||||
return
|
||||
|
||||
var/image/cross = image('icons/obj/storage.dmi',"bible")
|
||||
msg = "\blue \icon[cross] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[src]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) ([admin_jump_link(src, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>):</b> [msg]"
|
||||
msg = "<font color='blue'>\icon[cross] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[src]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) ([admin_jump_link(src, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>):</b> [msg]</font>"
|
||||
|
||||
for(var/client/C in admins)
|
||||
if(R_ADMIN & C.holder.rights)
|
||||
@@ -30,14 +30,14 @@
|
||||
//log_admin("HELP: [key_name(src)]: [msg]")
|
||||
|
||||
/proc/CentCom_announce(var/msg, var/mob/Sender, var/iamessage)
|
||||
msg = "\blue <b><font color=orange>[uppertext(using_map.boss_short)]M[iamessage ? " IA" : ""]:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentComReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
|
||||
msg = "<font color='blue'><b><font color=orange>[uppertext(using_map.boss_short)]M[iamessage ? " IA" : ""]:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentComReply=\ref[Sender]'>RPLY</A>):</b> [msg]</font>"
|
||||
for(var/client/C in admins)
|
||||
if(R_ADMIN & C.holder.rights)
|
||||
C << msg
|
||||
C << 'sound/machines/signal.ogg'
|
||||
|
||||
/proc/Syndicate_announce(var/msg, var/mob/Sender)
|
||||
msg = "\blue <b><font color=crimson>ILLEGAL:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;SyndicateReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
|
||||
msg = "<font color='blue'><b><font color=crimson>ILLEGAL:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;SyndicateReply=\ref[Sender]'>RPLY</A>):</b> [msg]</font>"
|
||||
for(var/client/C in admins)
|
||||
if(R_ADMIN & C.holder.rights)
|
||||
C << msg
|
||||
|
||||
@@ -38,9 +38,9 @@
|
||||
prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(prisoner), slot_w_uniform)
|
||||
prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes)
|
||||
spawn(50)
|
||||
M << "\red You have been sent to the prison station!"
|
||||
M << "<font color='red'>You have been sent to the prison station!</font>"
|
||||
log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.")
|
||||
message_admins("\blue [key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.</font>", 1)
|
||||
feedback_add_details("admin_verb","PRISON") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_subtle_message(mob/M as mob in mob_list)
|
||||
@@ -59,10 +59,10 @@
|
||||
if(usr)
|
||||
if (usr.client)
|
||||
if(usr.client.holder)
|
||||
M << "\bold You hear a voice in your head... \italic [msg]"
|
||||
M << "<B>You hear a voice in your head...</B> <i>[msg]</i>"
|
||||
|
||||
log_admin("SubtlePM: [key_name(usr)] -> [key_name(M)] : [msg]")
|
||||
message_admins("\blue \bold SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]", 1)
|
||||
message_admins("<font color='blue'><B>SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]</B></font>", 1)
|
||||
feedback_add_details("admin_verb","SMS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_mentor_check_new_players() //Allows mentors / admins to determine who the newer players are.
|
||||
@@ -115,7 +115,7 @@
|
||||
return
|
||||
world << "[msg]"
|
||||
log_admin("GlobalNarrate: [key_name(usr)] : [msg]")
|
||||
message_admins("\blue \bold GlobalNarrate: [key_name_admin(usr)] : [msg]<BR>", 1)
|
||||
message_admins("<font color='blue'><B> GlobalNarrate: [key_name_admin(usr)] : [msg]<BR></B></font>", 1)
|
||||
feedback_add_details("admin_verb","GLN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_direct_narrate(var/mob/M) // Targetted narrate -- TLE
|
||||
@@ -139,7 +139,7 @@
|
||||
|
||||
M << msg
|
||||
log_admin("DirectNarrate: [key_name(usr)] to ([M.name]/[M.key]): [msg]")
|
||||
message_admins("\blue \bold DirectNarrate: [key_name(usr)] to ([M.name]/[M.key]): [msg]<BR>", 1)
|
||||
message_admins("<font color='blue'><B> DirectNarrate: [key_name(usr)] to ([M.name]/[M.key]): [msg]<BR></B></font>", 1)
|
||||
feedback_add_details("admin_verb","DIRN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_godmode(mob/M as mob in mob_list)
|
||||
@@ -149,7 +149,7 @@
|
||||
src << "Only administrators may use this command."
|
||||
return
|
||||
M.status_flags ^= GODMODE
|
||||
usr << "\blue Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]"
|
||||
usr << "<font color='blue'> Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]</font>"
|
||||
|
||||
log_admin("[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]")
|
||||
message_admins("[key_name_admin(usr)] has toggled [key_name_admin(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]", 1)
|
||||
@@ -280,7 +280,7 @@ Ccomp's first proc.
|
||||
G.has_enabled_antagHUD = 2
|
||||
G.can_reenter_corpse = 1
|
||||
|
||||
G:show_message(text("\blue <B>You may now respawn. You should roleplay as if you learned nothing about the round during your time with the dead.</B>"), 1)
|
||||
G:show_message(text("<font color='blue'><B>You may now respawn. You should roleplay as if you learned nothing about the round during your time with the dead.</B></font>"), 1)
|
||||
log_admin("[key_name(usr)] allowed [key_name(G)] to bypass the respawn time limit")
|
||||
message_admins("Admin [key_name_admin(usr)] allowed [key_name_admin(G)] to bypass the respawn time limit", 1)
|
||||
|
||||
@@ -300,18 +300,18 @@ Ccomp's first proc.
|
||||
if(g.antagHUD)
|
||||
g.antagHUD = 0 // Disable it on those that have it enabled
|
||||
g.has_enabled_antagHUD = 2 // We'll allow them to respawn
|
||||
g << "\red <B>The Administrator has disabled AntagHUD </B>"
|
||||
g << "<font color='red'><B>The Administrator has disabled AntagHUD </B></font>"
|
||||
config.antag_hud_allowed = 0
|
||||
src << "\red <B>AntagHUD usage has been disabled</B>"
|
||||
src << "<font color='red'><B>AntagHUD usage has been disabled</B></font>"
|
||||
action = "disabled"
|
||||
else
|
||||
for(var/mob/observer/dead/g in get_ghosts())
|
||||
if(!g.client.holder) // Add the verb back for all non-admin ghosts
|
||||
g.verbs += /mob/observer/dead/verb/toggle_antagHUD
|
||||
g << "\blue <B>The Administrator has enabled AntagHUD </B>" // Notify all observers they can now use AntagHUD
|
||||
g << "<font color='blue'><B>The Administrator has enabled AntagHUD </B></font>" // Notify all observers they can now use AntagHUD
|
||||
config.antag_hud_allowed = 1
|
||||
action = "enabled"
|
||||
src << "\blue <B>AntagHUD usage has been enabled</B>"
|
||||
src << "<font color='blue'><B>AntagHUD usage has been enabled</B></font>"
|
||||
|
||||
|
||||
log_admin("[key_name(usr)] has [action] antagHUD usage for observers")
|
||||
@@ -328,19 +328,19 @@ Ccomp's first proc.
|
||||
var/action=""
|
||||
if(config.antag_hud_restricted)
|
||||
for(var/mob/observer/dead/g in get_ghosts())
|
||||
g << "\blue <B>The administrator has lifted restrictions on joining the round if you use AntagHUD</B>"
|
||||
g << "<font color='blue'><B>The administrator has lifted restrictions on joining the round if you use AntagHUD</B></font>"
|
||||
action = "lifted restrictions"
|
||||
config.antag_hud_restricted = 0
|
||||
src << "\blue <B>AntagHUD restrictions have been lifted</B>"
|
||||
src << "<font color='blue'><B>AntagHUD restrictions have been lifted</B></font>"
|
||||
else
|
||||
for(var/mob/observer/dead/g in get_ghosts())
|
||||
g << "\red <B>The administrator has placed restrictions on joining the round if you use AntagHUD</B>"
|
||||
g << "\red <B>Your AntagHUD has been disabled, you may choose to re-enabled it but will be under restrictions </B>"
|
||||
g << "<font color='red'><B>The administrator has placed restrictions on joining the round if you use AntagHUD</B></font>"
|
||||
g << "<font color='red'><B>Your AntagHUD has been disabled, you may choose to re-enabled it but will be under restrictions </B></font>"
|
||||
g.antagHUD = 0
|
||||
g.has_enabled_antagHUD = 0
|
||||
action = "placed restrictions"
|
||||
config.antag_hud_restricted = 1
|
||||
src << "\red <B>AntagHUD restrictions have been enabled</B>"
|
||||
src << "<font color='red'><B>AntagHUD restrictions have been enabled</B></font>"
|
||||
|
||||
log_admin("[key_name(usr)] has [action] on joining the round if they use AntagHUD")
|
||||
message_admins("Admin [key_name_admin(usr)] has [action] on joining the round if they use AntagHUD", 1)
|
||||
@@ -516,7 +516,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
else
|
||||
M.add_ion_law(input)
|
||||
for(var/mob/living/silicon/ai/O in mob_list)
|
||||
O << "\red " + input + "\red...LAWS UPDATED"
|
||||
O << input + "<font color='red'>... LAWS UPDATED!</font>"
|
||||
O.show_laws()
|
||||
|
||||
log_admin("Admin [key_name(usr)] has added a new AI law - [input]")
|
||||
@@ -542,7 +542,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
M.revive()
|
||||
|
||||
log_admin("[key_name(usr)] healed / revived [key_name(M)]")
|
||||
message_admins("\red Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!", 1)
|
||||
message_admins("<font color='red'>Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!</font>", 1)
|
||||
else
|
||||
alert("Admin revive disabled")
|
||||
feedback_add_details("admin_verb","REJU") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -573,7 +573,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if("Yes")
|
||||
command_announcement.Announce(input, customname, new_sound = 'sound/AI/commandreport.ogg', msg_sanitized = 1);
|
||||
if("No")
|
||||
world << "\red New [using_map.company_name] Update available at all communication consoles."
|
||||
world << "<font color='red'>New [using_map.company_name] Update available at all communication consoles.</font>"
|
||||
world << sound('sound/AI/commandreport.ogg')
|
||||
|
||||
log_admin("[key_name(src)] has created a command report: [input]")
|
||||
@@ -693,7 +693,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
mob.gib()
|
||||
|
||||
log_admin("[key_name(usr)] used gibself.")
|
||||
message_admins("\blue [key_name_admin(usr)] used gibself.", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] used gibself.</font>", 1)
|
||||
feedback_add_details("admin_verb","GIBS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/*
|
||||
/client/proc/cmd_manual_ban()
|
||||
@@ -727,11 +727,11 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
return
|
||||
if(M)
|
||||
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins)
|
||||
M << "\red<BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG>"
|
||||
M << "\red This is a temporary ban, it will be removed in [mins] minutes."
|
||||
M << "\red To try to resolve this matter head to http://ss13.donglabs.com/forum/"
|
||||
M << "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
|
||||
M << "<font color='red'>This is a temporary ban, it will be removed in [mins] minutes</font>."
|
||||
M << "<font color='red'>To try to resolve this matter head to http://ss13.donglabs.com/forum/</font>"
|
||||
log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
|
||||
message_admins("\blue[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
|
||||
message_admins("<font color='blue'>[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.</font>")
|
||||
world.Export("http://216.38.134.132/adminlog.php?type=ban&key=[usr.client.key]&key2=[M.key]&msg=[html_decode(reason)]&time=[mins]&server=[replacetext(config.server_name, "#", "")]")
|
||||
del(M.client)
|
||||
qdel(M)
|
||||
@@ -742,11 +742,11 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if(!reason)
|
||||
return
|
||||
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0)
|
||||
M << "\red<BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG>"
|
||||
M << "\red This is a permanent ban."
|
||||
M << "\red To try to resolve this matter head to http://ss13.donglabs.com/forum/"
|
||||
M << "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
|
||||
M << "<font color='red'>This is a permanent ban.</font>"
|
||||
M << "<font color='red'>To try to resolve this matter head to http://ss13.donglabs.com/forum/</font>"
|
||||
log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
|
||||
message_admins("\blue[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
|
||||
message_admins("<font color='blue'>[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.</font>")
|
||||
world.Export("http://216.38.134.132/adminlog.php?type=ban&key=[usr.client.key]&key2=[M.key]&msg=[html_decode(reason)]&time=perma&server=[replacetext(config.server_name, "#", "")]")
|
||||
del(M.client)
|
||||
qdel(M)
|
||||
@@ -808,7 +808,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
view = world.view
|
||||
|
||||
log_admin("[key_name(usr)] changed their view range to [view].")
|
||||
//message_admins("\blue [key_name_admin(usr)] changed their view range to [view].", 1) //why? removed by order of XSI
|
||||
//message_admins("<font color='blue'>[key_name_admin(usr)] changed their view range to [view].</font>", 1) //why? removed by order of XSI
|
||||
|
||||
feedback_add_details("admin_verb","CVRA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -842,7 +842,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
|
||||
feedback_add_details("admin_verb","CSHUT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
log_admin("[key_name(usr)] admin-called the emergency shuttle.")
|
||||
message_admins("\blue [key_name_admin(usr)] admin-called the emergency shuttle.", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] admin-called the emergency shuttle.</font>", 1)
|
||||
return
|
||||
|
||||
/client/proc/admin_cancel_shuttle()
|
||||
@@ -859,7 +859,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
emergency_shuttle.recall()
|
||||
feedback_add_details("admin_verb","CCSHUT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
log_admin("[key_name(usr)] admin-recalled the emergency shuttle.")
|
||||
message_admins("\blue [key_name_admin(usr)] admin-recalled the emergency shuttle.", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] admin-recalled the emergency shuttle.</font>", 1)
|
||||
|
||||
return
|
||||
|
||||
@@ -881,7 +881,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
set category = "Special Verbs"
|
||||
set name = "Attack Log"
|
||||
|
||||
usr << text("\red <b>Attack Log for []</b>", mob)
|
||||
usr << text("<font color='red'><b>Attack Log for []</b></font>", mob)
|
||||
for(var/t in M.attack_log)
|
||||
usr << t
|
||||
feedback_add_details("admin_verb","ATTL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -913,7 +913,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
message_admins("Admin [key_name_admin(usr)] has forced the players to have random appearances.", 1)
|
||||
|
||||
if(notifyplayers == "Yes")
|
||||
world << "\blue <b>Admin [usr.key] has forced the players to have completely random identities!</b>"
|
||||
world << "<font color='blue'><b>Admin [usr.key] has forced the players to have completely random identities!</font></b>"
|
||||
|
||||
usr << "<i>Remember: you can always disable the randomness by using the verb again, assuming the round hasn't started yet</i>."
|
||||
|
||||
|
||||
@@ -19,6 +19,6 @@
|
||||
if("Yes") config.Tickcomp = 1
|
||||
else config.Tickcomp = 0
|
||||
else
|
||||
src << "\red Error: ticklag(): Invalid world.ticklag value. No changes made."
|
||||
src << "<font color='red'>Error: ticklag(): Invalid world.ticklag value. No changes made.</font>"
|
||||
|
||||
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
if(ticker.triai)
|
||||
ticker.triai = 0
|
||||
usr << "Only one AI will be spawned at round start."
|
||||
message_admins("\blue [key_name_admin(usr)] has toggled off triple AIs at round start.", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] has toggled off triple AIs at round start.</font>", 1)
|
||||
else
|
||||
ticker.triai = 1
|
||||
usr << "There will be an AI Triumvirate at round start."
|
||||
message_admins("\blue [key_name_admin(usr)] has toggled on triple AIs at round start.", 1)
|
||||
message_admins("<font color='blue'>[key_name_admin(usr)] has toggled on triple AIs at round start.</font>", 1)
|
||||
return
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
|
||||
// Keep these two together, they *must* be defined on both
|
||||
// If /client ever becomes /datum/client or similar, they can be merged
|
||||
/client/proc/get_view_variables_header()
|
||||
return "<b>[src]</b>"
|
||||
/datum/proc/get_view_variables_header()
|
||||
return "<b>[src]</b>"
|
||||
|
||||
@@ -31,9 +27,6 @@
|
||||
</font>
|
||||
"}
|
||||
|
||||
// Same for these as for get_view_variables_header() above
|
||||
/client/proc/get_view_variables_options()
|
||||
return ""
|
||||
/datum/proc/get_view_variables_options()
|
||||
return ""
|
||||
|
||||
@@ -75,7 +68,7 @@
|
||||
<option value='?_src_=vars;makeai=\ref[src]'>Make AI</option>
|
||||
<option value='?_src_=vars;makerobot=\ref[src]'>Make cyborg</option>
|
||||
<option value='?_src_=vars;makemonkey=\ref[src]'>Make monkey</option>
|
||||
<option value='?_src_=vars;makeslime=\ref[src]'>Make slime</option>
|
||||
<option value='?_src_=vars;makealien=\ref[src]'>Make alien</option>
|
||||
"}
|
||||
|
||||
/obj/get_view_variables_options()
|
||||
|
||||
@@ -281,20 +281,6 @@
|
||||
return
|
||||
holder.Topic(href, list("makealien"=href_list["makealien"]))
|
||||
|
||||
else if(href_list["makeslime"])
|
||||
if(!check_rights(R_SPAWN)) return
|
||||
|
||||
var/mob/living/carbon/human/H = locate(href_list["makeslime"])
|
||||
if(!istype(H))
|
||||
usr << "This can only be done to instances of type /mob/living/carbon/human"
|
||||
return
|
||||
|
||||
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return
|
||||
if(!H)
|
||||
usr << "Mob doesn't exist anymore"
|
||||
return
|
||||
holder.Topic(href, list("makeslime"=href_list["makeslime"]))
|
||||
|
||||
else if(href_list["makeai"])
|
||||
if(!check_rights(R_SPAWN)) return
|
||||
|
||||
|
||||
@@ -23,119 +23,119 @@
|
||||
var/const/WIRE_RADIO_RECEIVE = 8 //Allows Pulsed(1) to call Activate()
|
||||
var/const/WIRE_RADIO_PULSE = 16 //Allows Pulse(1) to send a radio message
|
||||
|
||||
proc/activate() //What the device does when turned on
|
||||
return
|
||||
/obj/item/device/assembly/proc/activate() //What the device does when turned on
|
||||
return
|
||||
|
||||
proc/pulsed(var/radio = 0) //Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs
|
||||
return
|
||||
/obj/item/device/assembly/proc/pulsed(var/radio = 0) //Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs
|
||||
return
|
||||
|
||||
proc/pulse(var/radio = 0) //Called when this device attempts to act on another device, var/radio determines if it was sent via radio or direct
|
||||
return
|
||||
/obj/item/device/assembly/proc/pulse(var/radio = 0) //Called when this device attempts to act on another device, var/radio determines if it was sent via radio or direct
|
||||
return
|
||||
|
||||
proc/toggle_secure() //Code that has to happen when the assembly is un\secured goes here
|
||||
return
|
||||
/obj/item/device/assembly/proc/toggle_secure() //Code that has to happen when the assembly is un\secured goes here
|
||||
return
|
||||
|
||||
proc/attach_assembly(var/obj/A, var/mob/user) //Called when an assembly is attacked by another
|
||||
return
|
||||
/obj/item/device/assembly/proc/attach_assembly(var/obj/A, var/mob/user) //Called when an assembly is attacked by another
|
||||
return
|
||||
|
||||
proc/process_cooldown() //Called via spawn(10) to have it count down the cooldown var
|
||||
return
|
||||
/obj/item/device/assembly/proc/process_cooldown() //Called via spawn(10) to have it count down the cooldown var
|
||||
return
|
||||
|
||||
proc/holder_movement() //Called when the holder is moved
|
||||
return
|
||||
/obj/item/device/assembly/proc/holder_movement() //Called when the holder is moved
|
||||
return
|
||||
|
||||
interact(mob/user as mob) //Called when attack_self is called
|
||||
return
|
||||
/obj/item/device/assembly/interact(mob/user as mob) //Called when attack_self is called
|
||||
return
|
||||
|
||||
|
||||
process_cooldown()
|
||||
cooldown--
|
||||
if(cooldown <= 0) return 0
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
return 1
|
||||
/obj/item/device/assembly/process_cooldown()
|
||||
cooldown--
|
||||
if(cooldown <= 0) return 0
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
return 1
|
||||
|
||||
|
||||
pulsed(var/radio = 0)
|
||||
if(holder && (wires & WIRE_RECEIVE))
|
||||
activate()
|
||||
if(radio && (wires & WIRE_RADIO_RECEIVE))
|
||||
activate()
|
||||
return 1
|
||||
/obj/item/device/assembly/pulsed(var/radio = 0)
|
||||
if(holder && (wires & WIRE_RECEIVE))
|
||||
activate()
|
||||
if(radio && (wires & WIRE_RADIO_RECEIVE))
|
||||
activate()
|
||||
return 1
|
||||
|
||||
|
||||
pulse(var/radio = 0)
|
||||
if(holder && (wires & WIRE_PULSE))
|
||||
holder.process_activation(src, 1, 0)
|
||||
if(holder && (wires & WIRE_PULSE_SPECIAL))
|
||||
holder.process_activation(src, 0, 1)
|
||||
/obj/item/device/assembly/pulse(var/radio = 0)
|
||||
if(holder && (wires & WIRE_PULSE))
|
||||
holder.process_activation(src, 1, 0)
|
||||
if(holder && (wires & WIRE_PULSE_SPECIAL))
|
||||
holder.process_activation(src, 0, 1)
|
||||
// if(radio && (wires & WIRE_RADIO_PULSE))
|
||||
//Not sure what goes here quite yet send signal?
|
||||
//Not sure what goes here quite yet send signal?
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/device/assembly/activate()
|
||||
if(!secured || (cooldown > 0)) return 0
|
||||
cooldown = 2
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/device/assembly/toggle_secure()
|
||||
secured = !secured
|
||||
update_icon()
|
||||
return secured
|
||||
|
||||
|
||||
/obj/item/device/assembly/attach_assembly(var/obj/item/device/assembly/A, var/mob/user)
|
||||
holder = new/obj/item/device/assembly_holder(get_turf(src))
|
||||
if(holder.attach(A,src,user))
|
||||
to_chat(user, "<span class='notice'>You attach \the [A] to \the [src]!</span>")
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
activate()
|
||||
if(!secured || (cooldown > 0)) return 0
|
||||
cooldown = 2
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
return 1
|
||||
|
||||
|
||||
toggle_secure()
|
||||
secured = !secured
|
||||
update_icon()
|
||||
return secured
|
||||
|
||||
|
||||
attach_assembly(var/obj/item/device/assembly/A, var/mob/user)
|
||||
holder = new/obj/item/device/assembly_holder(get_turf(src))
|
||||
if(holder.attach(A,src,user))
|
||||
user << "\blue You attach \the [A] to \the [src]!"
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(isassembly(W))
|
||||
var/obj/item/device/assembly/A = W
|
||||
if((!A.secured) && (!secured))
|
||||
attach_assembly(A,user)
|
||||
return
|
||||
if(isscrewdriver(W))
|
||||
if(toggle_secure())
|
||||
user << "\blue \The [src] is ready!"
|
||||
else
|
||||
user << "\blue \The [src] can now be attached!"
|
||||
/obj/item/device/assembly/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(isassembly(W))
|
||||
var/obj/item/device/assembly/A = W
|
||||
if((!A.secured) && (!secured))
|
||||
attach_assembly(A,user)
|
||||
return
|
||||
..()
|
||||
if(isscrewdriver(W))
|
||||
if(toggle_secure())
|
||||
to_chat(user, "<span class='notice'>\The [src] is ready!</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>\The [src] can now be attached!</span>")
|
||||
return
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
process()
|
||||
processing_objects.Remove(src)
|
||||
return
|
||||
/obj/item/device/assembly/process()
|
||||
processing_objects.Remove(src)
|
||||
return
|
||||
|
||||
|
||||
examine(mob/user)
|
||||
..(user)
|
||||
if((in_range(src, user) || loc == user))
|
||||
if(secured)
|
||||
user << "\The [src] is ready!"
|
||||
else
|
||||
user << "\The [src] can be attached!"
|
||||
return
|
||||
/obj/item/device/assembly/examine(mob/user)
|
||||
..(user)
|
||||
if((in_range(src, user) || loc == user))
|
||||
if(secured)
|
||||
to_chat(user, "\The [src] is ready!")
|
||||
else
|
||||
to_chat(user, "\The [src] can be attached!")
|
||||
return
|
||||
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
if(!user) return 0
|
||||
user.set_machine(src)
|
||||
interact(user)
|
||||
return 1
|
||||
/obj/item/device/assembly/attack_self(mob/user as mob)
|
||||
if(!user) return 0
|
||||
user.set_machine(src)
|
||||
interact(user)
|
||||
return 1
|
||||
|
||||
|
||||
interact(mob/user as mob)
|
||||
return //HTML MENU FOR WIRES GOES HERE
|
||||
/obj/item/device/assembly/interact(mob/user as mob)
|
||||
return //HTML MENU FOR WIRES GOES HERE
|
||||
|
||||
/obj/item/device/assembly/nano_host()
|
||||
if(istype(loc, /obj/item/device/assembly_holder))
|
||||
|
||||
@@ -1,155 +0,0 @@
|
||||
/obj/item/device/onetankbomb
|
||||
name = "bomb"
|
||||
icon = 'icons/obj/tank.dmi'
|
||||
item_state = "assembly"
|
||||
throwforce = 5
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
throw_speed = 2
|
||||
throw_range = 4
|
||||
flags = CONDUCT | PROXMOVE
|
||||
var/status = 0 //0 - not readied //1 - bomb finished with welder
|
||||
var/obj/item/device/assembly_holder/bombassembly = null //The first part of the bomb is an assembly holder, holding an igniter+some device
|
||||
var/obj/item/weapon/tank/bombtank = null //the second part of the bomb is a phoron tank
|
||||
|
||||
/obj/item/device/onetankbomb/examine(mob/user)
|
||||
..(user)
|
||||
user.examinate(bombtank)
|
||||
|
||||
/obj/item/device/onetankbomb/update_icon()
|
||||
if(bombtank)
|
||||
icon_state = bombtank.icon_state
|
||||
if(bombassembly)
|
||||
overlays += bombassembly.icon_state
|
||||
overlays += bombassembly.overlays
|
||||
overlays += "bomb_assembly"
|
||||
|
||||
/obj/item/device/onetankbomb/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/device/analyzer))
|
||||
bombtank.attackby(W, user)
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/wrench) && !status) //This is basically bomb assembly code inverted. apparently it works.
|
||||
|
||||
user << "<span class='notice'>You disassemble [src].</span>"
|
||||
|
||||
bombassembly.loc = user.loc
|
||||
bombassembly.master = null
|
||||
bombassembly = null
|
||||
|
||||
bombtank.loc = user.loc
|
||||
bombtank.master = null
|
||||
bombtank = null
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
if((istype(W, /obj/item/weapon/weldingtool) && W:welding))
|
||||
if(!status)
|
||||
status = 1
|
||||
bombers += "[key_name(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]"
|
||||
message_admins("[key_name_admin(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]")
|
||||
user << "<span class='notice'>A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.</span>"
|
||||
else
|
||||
status = 0
|
||||
bombers += "[key_name(user)] unwelded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]"
|
||||
user << "<span class='notice'>The hole has been closed.</span>"
|
||||
add_fingerprint(user)
|
||||
..()
|
||||
|
||||
/obj/item/device/onetankbomb/attack_self(mob/user as mob) //pressing the bomb accesses its assembly
|
||||
bombassembly.attack_self(user, 1)
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/device/onetankbomb/receive_signal() //This is mainly called by the sensor through sense() to the holder, and from the holder to here.
|
||||
visible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
|
||||
sleep(10)
|
||||
if(!src)
|
||||
return
|
||||
if(status)
|
||||
bombtank.ignite() //if its not a dud, boom (or not boom if you made shitty mix) the ignite proc is below, in this file
|
||||
else
|
||||
bombtank.release()
|
||||
|
||||
/obj/item/device/onetankbomb/HasProximity(atom/movable/AM as mob|obj)
|
||||
if(bombassembly)
|
||||
bombassembly.HasProximity(AM)
|
||||
|
||||
// ---------- Procs below are for tanks that are used exclusively in 1-tank bombs ----------
|
||||
|
||||
/obj/item/weapon/tank/proc/bomb_assemble(W,user) //Bomb assembly proc. This turns assembly+tank into a bomb
|
||||
var/obj/item/device/assembly_holder/S = W
|
||||
var/mob/M = user
|
||||
if(!S.secured) //Check if the assembly is secured
|
||||
return
|
||||
if(isigniter(S.a_left) == isigniter(S.a_right)) //Check if either part of the assembly has an igniter, but if both parts are igniters, then fuck it
|
||||
return
|
||||
|
||||
var/obj/item/device/onetankbomb/R = new /obj/item/device/onetankbomb(loc)
|
||||
|
||||
M.drop_item() //Remove the assembly from your hands
|
||||
M.remove_from_mob(src) //Remove the tank from your character,in case you were holding it
|
||||
M.put_in_hands(R) //Equips the bomb if possible, or puts it on the floor.
|
||||
|
||||
R.bombassembly = S //Tell the bomb about its assembly part
|
||||
S.master = R //Tell the assembly about its new owner
|
||||
S.loc = R //Move the assembly out of the fucking way
|
||||
|
||||
R.bombtank = src //Same for tank
|
||||
master = R
|
||||
loc = R
|
||||
R.update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/tank/proc/ignite() //This happens when a bomb is told to explode
|
||||
var/fuel_moles = air_contents.gas["phoron"] + air_contents.gas["oxygen"] / 6
|
||||
var/strength = 1
|
||||
|
||||
var/turf/ground_zero = get_turf(loc)
|
||||
loc = null
|
||||
|
||||
if(air_contents.temperature > (T0C + 400))
|
||||
strength = (fuel_moles/15)
|
||||
|
||||
if(strength >=1)
|
||||
explosion(ground_zero, round(strength,1), round(strength*2,1), round(strength*3,1), round(strength*4,1))
|
||||
else if(strength >=0.5)
|
||||
explosion(ground_zero, 0, 1, 2, 4)
|
||||
else if(strength >=0.2)
|
||||
explosion(ground_zero, -1, 0, 1, 2)
|
||||
else
|
||||
ground_zero.assume_air(air_contents)
|
||||
ground_zero.hotspot_expose(1000, 125)
|
||||
|
||||
else if(air_contents.temperature > (T0C + 250))
|
||||
strength = (fuel_moles/20)
|
||||
|
||||
if(strength >=1)
|
||||
explosion(ground_zero, 0, round(strength,1), round(strength*2,1), round(strength*3,1))
|
||||
else if (strength >=0.5)
|
||||
explosion(ground_zero, -1, 0, 1, 2)
|
||||
else
|
||||
ground_zero.assume_air(air_contents)
|
||||
ground_zero.hotspot_expose(1000, 125)
|
||||
|
||||
else if(air_contents.temperature > (T0C + 100))
|
||||
strength = (fuel_moles/25)
|
||||
|
||||
if (strength >=1)
|
||||
explosion(ground_zero, -1, 0, round(strength,1), round(strength*3,1))
|
||||
else
|
||||
ground_zero.assume_air(air_contents)
|
||||
ground_zero.hotspot_expose(1000, 125)
|
||||
|
||||
else
|
||||
ground_zero.assume_air(air_contents)
|
||||
ground_zero.hotspot_expose(1000, 125)
|
||||
|
||||
if(master)
|
||||
qdel(master)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/tank/proc/release() //This happens when the bomb is not welded. Tank contents are just spat out.
|
||||
var/datum/gas_mixture/removed = air_contents.remove(air_contents.total_moles)
|
||||
var/turf/simulated/T = get_turf(src)
|
||||
if(!T)
|
||||
return
|
||||
T.assume_air(removed)
|
||||
+178
-178
@@ -14,201 +14,201 @@
|
||||
var/obj/item/device/assembly/a_right = null
|
||||
var/obj/special_assembly = null
|
||||
|
||||
proc/attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user)
|
||||
return
|
||||
/obj/item/device/assembly_holder/proc/attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user)
|
||||
return
|
||||
|
||||
proc/attach_special(var/obj/O, var/mob/user)
|
||||
return
|
||||
/obj/item/device/assembly_holder/proc/attach_special(var/obj/O, var/mob/user)
|
||||
return
|
||||
|
||||
proc/process_activation(var/obj/item/device/D)
|
||||
return
|
||||
/obj/item/device/assembly_holder/proc/process_activation(var/obj/item/device/D)
|
||||
return
|
||||
|
||||
proc/detached()
|
||||
return
|
||||
/obj/item/device/assembly_holder/proc/detached()
|
||||
return
|
||||
|
||||
|
||||
IsAssemblyHolder()
|
||||
return 1
|
||||
/obj/item/device/assembly_holder/IsAssemblyHolder()
|
||||
return 1
|
||||
|
||||
|
||||
attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user)
|
||||
if((!D)||(!D2)) return 0
|
||||
if((!isassembly(D))||(!isassembly(D2))) return 0
|
||||
if((D:secured)||(D2:secured)) return 0
|
||||
if(user)
|
||||
user.remove_from_mob(D)
|
||||
user.remove_from_mob(D2)
|
||||
D:holder = src
|
||||
D2:holder = src
|
||||
D.loc = src
|
||||
D2.loc = src
|
||||
a_left = D
|
||||
a_right = D2
|
||||
name = "[D.name]-[D2.name] assembly"
|
||||
update_icon()
|
||||
usr.put_in_hands(src)
|
||||
/obj/item/device/assembly_holder/attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user)
|
||||
if((!D)||(!D2)) return 0
|
||||
if((!isassembly(D))||(!isassembly(D2))) return 0
|
||||
if((D:secured)||(D2:secured)) return 0
|
||||
if(user)
|
||||
user.remove_from_mob(D)
|
||||
user.remove_from_mob(D2)
|
||||
D:holder = src
|
||||
D2:holder = src
|
||||
D.loc = src
|
||||
D2.loc = src
|
||||
a_left = D
|
||||
a_right = D2
|
||||
name = "[D.name]-[D2.name] assembly"
|
||||
update_icon()
|
||||
usr.put_in_hands(src)
|
||||
|
||||
return 1
|
||||
return 1
|
||||
|
||||
|
||||
attach_special(var/obj/O, var/mob/user)
|
||||
if(!O) return
|
||||
if(!O.IsSpecialAssembly()) return 0
|
||||
/obj/item/device/assembly_holder/attach_special(var/obj/O, var/mob/user)
|
||||
if(!O) return
|
||||
if(!O.IsSpecialAssembly()) return 0
|
||||
|
||||
/* if(O:Attach_Holder())
|
||||
special_assembly = O
|
||||
update_icon()
|
||||
src.name = "[a_left.name] [a_right.name] [special_assembly.name] assembly"
|
||||
special_assembly = O
|
||||
update_icon()
|
||||
src.name = "[a_left.name] [a_right.name] [special_assembly.name] assembly"
|
||||
*/
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
update_icon()
|
||||
overlays.Cut()
|
||||
if(a_left)
|
||||
overlays += "[a_left.icon_state]_left"
|
||||
for(var/O in a_left.attached_overlays)
|
||||
overlays += "[O]_l"
|
||||
if(a_right)
|
||||
src.overlays += "[a_right.icon_state]_right"
|
||||
for(var/O in a_right.attached_overlays)
|
||||
overlays += "[O]_r"
|
||||
if(master)
|
||||
master.update_icon()
|
||||
/obj/item/device/assembly_holder/update_icon()
|
||||
overlays.Cut()
|
||||
if(a_left)
|
||||
overlays += "[a_left.icon_state]_left"
|
||||
for(var/O in a_left.attached_overlays)
|
||||
overlays += "[O]_l"
|
||||
if(a_right)
|
||||
src.overlays += "[a_right.icon_state]_right"
|
||||
for(var/O in a_right.attached_overlays)
|
||||
overlays += "[O]_r"
|
||||
if(master)
|
||||
master.update_icon()
|
||||
|
||||
/* if(special_assembly)
|
||||
special_assembly.update_icon()
|
||||
if(special_assembly:small_icon_state)
|
||||
src.overlays += special_assembly:small_icon_state
|
||||
for(var/O in special_assembly:small_icon_state_overlays)
|
||||
src.overlays += O
|
||||
special_assembly.update_icon()
|
||||
if(special_assembly:small_icon_state)
|
||||
src.overlays += special_assembly:small_icon_state
|
||||
for(var/O in special_assembly:small_icon_state_overlays)
|
||||
src.overlays += O
|
||||
*/
|
||||
|
||||
examine(mob/user)
|
||||
..(user)
|
||||
if ((in_range(src, user) || src.loc == user))
|
||||
if (src.secured)
|
||||
user << "\The [src] is ready!"
|
||||
else
|
||||
user << "\The [src] can be attached!"
|
||||
return
|
||||
/obj/item/device/assembly_holder/examine(mob/user)
|
||||
..(user)
|
||||
if ((in_range(src, user) || src.loc == user))
|
||||
if (src.secured)
|
||||
to_chat(user, "\The [src] is ready!")
|
||||
else
|
||||
to_chat(user, "\The [src] can be attached!")
|
||||
return
|
||||
|
||||
|
||||
HasProximity(atom/movable/AM as mob|obj)
|
||||
if(a_left)
|
||||
a_left.HasProximity(AM)
|
||||
if(a_right)
|
||||
a_right.HasProximity(AM)
|
||||
if(special_assembly)
|
||||
special_assembly.HasProximity(AM)
|
||||
/obj/item/device/assembly_holder/HasProximity(atom/movable/AM as mob|obj)
|
||||
if(a_left)
|
||||
a_left.HasProximity(AM)
|
||||
if(a_right)
|
||||
a_right.HasProximity(AM)
|
||||
if(special_assembly)
|
||||
special_assembly.HasProximity(AM)
|
||||
|
||||
|
||||
Crossed(atom/movable/AM as mob|obj)
|
||||
if(a_left)
|
||||
a_left.Crossed(AM)
|
||||
if(a_right)
|
||||
a_right.Crossed(AM)
|
||||
if(special_assembly)
|
||||
special_assembly.Crossed(AM)
|
||||
/obj/item/device/assembly_holder/Crossed(atom/movable/AM as mob|obj)
|
||||
if(a_left)
|
||||
a_left.Crossed(AM)
|
||||
if(a_right)
|
||||
a_right.Crossed(AM)
|
||||
if(special_assembly)
|
||||
special_assembly.Crossed(AM)
|
||||
|
||||
|
||||
on_found(mob/finder as mob)
|
||||
if(a_left)
|
||||
a_left.on_found(finder)
|
||||
if(a_right)
|
||||
a_right.on_found(finder)
|
||||
if(special_assembly)
|
||||
if(istype(special_assembly, /obj/item))
|
||||
var/obj/item/S = special_assembly
|
||||
S.on_found(finder)
|
||||
/obj/item/device/assembly_holder/on_found(mob/finder as mob)
|
||||
if(a_left)
|
||||
a_left.on_found(finder)
|
||||
if(a_right)
|
||||
a_right.on_found(finder)
|
||||
if(special_assembly)
|
||||
if(istype(special_assembly, /obj/item))
|
||||
var/obj/item/S = special_assembly
|
||||
S.on_found(finder)
|
||||
|
||||
|
||||
Move()
|
||||
..()
|
||||
if(a_left && a_right)
|
||||
a_left.holder_movement()
|
||||
a_right.holder_movement()
|
||||
/obj/item/device/assembly_holder/Move()
|
||||
..()
|
||||
if(a_left && a_right)
|
||||
a_left.holder_movement()
|
||||
a_right.holder_movement()
|
||||
// if(special_assembly)
|
||||
// special_assembly:holder_movement()
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
attack_hand()//Perhapse this should be a holder_pickup proc instead, can add if needbe I guess
|
||||
if(a_left && a_right)
|
||||
a_left.holder_movement()
|
||||
a_right.holder_movement()
|
||||
/obj/item/device/assembly_holder/attack_hand()//Perhapse this should be a holder_pickup proc instead, can add if needbe I guess
|
||||
if(a_left && a_right)
|
||||
a_left.holder_movement()
|
||||
a_right.holder_movement()
|
||||
// if(special_assembly)
|
||||
// special_assembly:Holder_Movement()
|
||||
..()
|
||||
return
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(isscrewdriver(W))
|
||||
if(!a_left || !a_right)
|
||||
user << "\red BUG:Assembly part missing, please report this!"
|
||||
return
|
||||
a_left.toggle_secure()
|
||||
a_right.toggle_secure()
|
||||
secured = !secured
|
||||
if(secured)
|
||||
user << "\blue \The [src] is ready!"
|
||||
else
|
||||
user << "\blue \The [src] can now be taken apart!"
|
||||
update_icon()
|
||||
/obj/item/device/assembly_holder/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(isscrewdriver(W))
|
||||
if(!a_left || !a_right)
|
||||
to_chat(user, "<span class='warning'> BUG:Assembly part missing, please report this!</span>")
|
||||
return
|
||||
else if(W.IsSpecialAssembly())
|
||||
attach_special(W, user)
|
||||
a_left.toggle_secure()
|
||||
a_right.toggle_secure()
|
||||
secured = !secured
|
||||
if(secured)
|
||||
to_chat(user, "<span class='notice'>\The [src] is ready!</span>")
|
||||
else
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>\The [src] can now be taken apart!</span>")
|
||||
update_icon()
|
||||
return
|
||||
else if(W.IsSpecialAssembly())
|
||||
attach_special(W, user)
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
if(src.secured)
|
||||
if(!a_left || !a_right)
|
||||
user << "\red Assembly part missing!"
|
||||
return
|
||||
if(istype(a_left,a_right.type))//If they are the same type it causes issues due to window code
|
||||
switch(alert("Which side would you like to use?",,"Left","Right"))
|
||||
if("Left") a_left.attack_self(user)
|
||||
if("Right") a_right.attack_self(user)
|
||||
return
|
||||
else
|
||||
if(!istype(a_left,/obj/item/device/assembly/igniter))
|
||||
a_left.attack_self(user)
|
||||
if(!istype(a_right,/obj/item/device/assembly/igniter))
|
||||
a_right.attack_self(user)
|
||||
/obj/item/device/assembly_holder/attack_self(mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
if(src.secured)
|
||||
if(!a_left || !a_right)
|
||||
to_chat(user, "<span class='warning'> BUG:Assembly part missing, please report this!</span>")
|
||||
return
|
||||
if(istype(a_left,a_right.type))//If they are the same type it causes issues due to window code
|
||||
switch(alert("Which side would you like to use?",,"Left","Right"))
|
||||
if("Left") a_left.attack_self(user)
|
||||
if("Right") a_right.attack_self(user)
|
||||
return
|
||||
else
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T) return 0
|
||||
if(a_left)
|
||||
a_left:holder = null
|
||||
a_left.loc = T
|
||||
if(a_right)
|
||||
a_right:holder = null
|
||||
a_right.loc = T
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
return
|
||||
if(!istype(a_left,/obj/item/device/assembly/igniter))
|
||||
a_left.attack_self(user)
|
||||
if(!istype(a_right,/obj/item/device/assembly/igniter))
|
||||
a_right.attack_self(user)
|
||||
else
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T) return 0
|
||||
if(a_left)
|
||||
a_left:holder = null
|
||||
a_left.loc = T
|
||||
if(a_right)
|
||||
a_right:holder = null
|
||||
a_right.loc = T
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
process_activation(var/obj/D, var/normal = 1, var/special = 1)
|
||||
if(!D) return 0
|
||||
if(!secured)
|
||||
visible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
|
||||
if((normal) && (a_right) && (a_left))
|
||||
if(a_right != D)
|
||||
a_right.pulsed(0)
|
||||
if(a_left != D)
|
||||
a_left.pulsed(0)
|
||||
if(master)
|
||||
master.receive_signal()
|
||||
/obj/item/device/assembly_holder/process_activation(var/obj/D, var/normal = 1, var/special = 1)
|
||||
if(!D) return 0
|
||||
if(!secured)
|
||||
visible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
|
||||
if((normal) && (a_right) && (a_left))
|
||||
if(a_right != D)
|
||||
a_right.pulsed(0)
|
||||
if(a_left != D)
|
||||
a_left.pulsed(0)
|
||||
if(master)
|
||||
master.receive_signal()
|
||||
// if(special && special_assembly)
|
||||
// if(!special_assembly == D)
|
||||
// special_assembly.dothings()
|
||||
return 1
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/device/assembly_holder/hear_talk(mob/living/M as mob, msg, verb, datum/language/speaking)
|
||||
@@ -242,36 +242,36 @@
|
||||
|
||||
loc.verbs += /obj/item/device/assembly_holder/timer_igniter/verb/configure
|
||||
|
||||
detached()
|
||||
loc.verbs -= /obj/item/device/assembly_holder/timer_igniter/verb/configure
|
||||
..()
|
||||
/obj/item/device/assembly_holder/timer_igniter/detached()
|
||||
loc.verbs -= /obj/item/device/assembly_holder/timer_igniter/verb/configure
|
||||
..()
|
||||
|
||||
verb/configure()
|
||||
set name = "Set Timer"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
/obj/item/device/assembly_holder/timer_igniter/verb/configure()
|
||||
set name = "Set Timer"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if ( !(usr.stat || usr.restrained()) )
|
||||
var/obj/item/device/assembly_holder/holder
|
||||
if(istype(src,/obj/item/weapon/grenade/chem_grenade))
|
||||
var/obj/item/weapon/grenade/chem_grenade/gren = src
|
||||
holder=gren.detonator
|
||||
var/obj/item/device/assembly/timer/tmr = holder.a_left
|
||||
if(!istype(tmr,/obj/item/device/assembly/timer))
|
||||
tmr = holder.a_right
|
||||
if(!istype(tmr,/obj/item/device/assembly/timer))
|
||||
usr << "<span class='notice'>This detonator has no timer.</span>"
|
||||
return
|
||||
if ( !(usr.stat || usr.restrained()) )
|
||||
var/obj/item/device/assembly_holder/holder
|
||||
if(istype(src,/obj/item/weapon/grenade/chem_grenade))
|
||||
var/obj/item/weapon/grenade/chem_grenade/gren = src
|
||||
holder=gren.detonator
|
||||
var/obj/item/device/assembly/timer/tmr = holder.a_left
|
||||
if(!istype(tmr,/obj/item/device/assembly/timer))
|
||||
tmr = holder.a_right
|
||||
if(!istype(tmr,/obj/item/device/assembly/timer))
|
||||
to_chat(usr, "<span class='notice'>This detonator has no timer.</span>")
|
||||
return
|
||||
|
||||
if(tmr.timing)
|
||||
usr << "<span class='notice'>Clock is ticking already.</span>"
|
||||
else
|
||||
var/ntime = input("Enter desired time in seconds", "Time", "5") as num
|
||||
if (ntime>0 && ntime<1000)
|
||||
tmr.time = ntime
|
||||
name = initial(name) + "([tmr.time] secs)"
|
||||
usr << "<span class='notice'>Timer set to [tmr.time] seconds.</span>"
|
||||
else
|
||||
usr << "<span class='notice'>Timer can't be [ntime<=0?"negative":"more than 1000 seconds"].</span>"
|
||||
if(tmr.timing)
|
||||
to_chat(usr, "<span class='notice'>Clock is ticking already.</span>")
|
||||
else
|
||||
usr << "<span class='notice'>You cannot do this while [usr.stat?"unconscious/dead":"restrained"].</span>"
|
||||
var/ntime = input("Enter desired time in seconds", "Time", "5") as num
|
||||
if (ntime>0 && ntime<1000)
|
||||
tmr.time = ntime
|
||||
name = initial(name) + "([tmr.time] secs)"
|
||||
to_chat(usr, "<span class='notice'>Timer set to [tmr.time] seconds.</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>Timer can't be [ntime<=0?"negative":"more than 1000 seconds"].</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You cannot do this while [usr.stat?"unconscious/dead":"restrained"].</span>")
|
||||
|
||||
@@ -2,36 +2,36 @@
|
||||
name = "igniter"
|
||||
desc = "A small electronic device able to ignite combustable substances."
|
||||
icon_state = "igniter"
|
||||
origin_tech = list(TECH_MAGNET = 1)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 50, "waste" = 10)
|
||||
origin_tech = list(TECH_MAGNET = 1)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 50, "waste" = 10)
|
||||
|
||||
secured = 1
|
||||
wires = WIRE_RECEIVE
|
||||
|
||||
/obj/item/device/assembly/igniter/activate()
|
||||
if(!..()) return 0//Cooldown check
|
||||
|
||||
if(holder && istype(holder.loc,/obj/item/weapon/grenade/chem_grenade))
|
||||
var/obj/item/weapon/grenade/chem_grenade/grenade = holder.loc
|
||||
grenade.prime()
|
||||
else
|
||||
var/turf/location = get_turf(loc)
|
||||
if(location)
|
||||
location.hotspot_expose(1000,1000)
|
||||
if (istype(src.loc,/obj/item/device/assembly_holder))
|
||||
if (istype(src.loc.loc, /obj/structure/reagent_dispensers/fueltank/))
|
||||
var/obj/structure/reagent_dispensers/fueltank/tank = src.loc.loc
|
||||
if (tank && tank.modded)
|
||||
tank.explode()
|
||||
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/device/assembly/igniter/attack_self(mob/user as mob)
|
||||
activate()
|
||||
if(!..()) return 0//Cooldown check
|
||||
|
||||
if(holder && istype(holder.loc,/obj/item/weapon/grenade/chem_grenade))
|
||||
var/obj/item/weapon/grenade/chem_grenade/grenade = holder.loc
|
||||
grenade.prime()
|
||||
else
|
||||
var/turf/location = get_turf(loc)
|
||||
if(location)
|
||||
location.hotspot_expose(1000,1000)
|
||||
if (istype(src.loc,/obj/item/device/assembly_holder))
|
||||
if (istype(src.loc.loc, /obj/structure/reagent_dispensers/fueltank/))
|
||||
var/obj/structure/reagent_dispensers/fueltank/tank = src.loc.loc
|
||||
if (tank && tank.modded)
|
||||
tank.explode()
|
||||
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
activate()
|
||||
add_fingerprint(user)
|
||||
return
|
||||
add_fingerprint(user)
|
||||
return
|
||||
+111
-115
@@ -15,145 +15,141 @@
|
||||
var/visible = 0
|
||||
var/obj/effect/beam/i_beam/first = null
|
||||
|
||||
proc
|
||||
trigger_beam()
|
||||
|
||||
|
||||
activate()
|
||||
/obj/item/device/assembly/infra/activate()
|
||||
if(!..()) return 0//Cooldown check
|
||||
on = !on
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
|
||||
toggle_secure()
|
||||
secured = !secured
|
||||
if(secured)
|
||||
processing_objects.Add(src)
|
||||
else
|
||||
on = 0
|
||||
if(first) qdel(first)
|
||||
processing_objects.Remove(src)
|
||||
update_icon()
|
||||
return secured
|
||||
|
||||
|
||||
/obj/item/device/assembly/infra/toggle_secure()
|
||||
secured = !secured
|
||||
if(secured)
|
||||
processing_objects.Add(src)
|
||||
else
|
||||
on = 0
|
||||
if(first) qdel(first)
|
||||
processing_objects.Remove(src)
|
||||
update_icon()
|
||||
overlays.Cut()
|
||||
attached_overlays = list()
|
||||
if(on)
|
||||
overlays += "infrared_on"
|
||||
attached_overlays += "infrared_on"
|
||||
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
return
|
||||
return secured
|
||||
|
||||
|
||||
process()//Old code
|
||||
if(!on)
|
||||
if(first)
|
||||
qdel(first)
|
||||
return
|
||||
/obj/item/device/assembly/infra/update_icon()
|
||||
overlays.Cut()
|
||||
attached_overlays = list()
|
||||
if(on)
|
||||
overlays += "infrared_on"
|
||||
attached_overlays += "infrared_on"
|
||||
|
||||
if((!(first) && (secured && (istype(loc, /turf) || (holder && istype(holder.loc, /turf))))))
|
||||
var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam((holder ? holder.loc : loc) )
|
||||
I.master = src
|
||||
I.density = 1
|
||||
I.set_dir(dir)
|
||||
step(I, I.dir)
|
||||
if(I)
|
||||
I.density = 0
|
||||
first = I
|
||||
I.vis_spread(visible)
|
||||
spawn(0)
|
||||
if(I)
|
||||
//world << "infra: setting limit"
|
||||
I.limit = 8
|
||||
//world << "infra: processing beam \ref[I]"
|
||||
I.process()
|
||||
return
|
||||
return
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
return
|
||||
|
||||
|
||||
attack_hand()
|
||||
qdel(first)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
Move()
|
||||
var/t = dir
|
||||
..()
|
||||
set_dir(t)
|
||||
qdel(first)
|
||||
return
|
||||
|
||||
|
||||
holder_movement()
|
||||
if(!holder) return 0
|
||||
// set_dir(holder.dir)
|
||||
qdel(first)
|
||||
return 1
|
||||
|
||||
|
||||
trigger_beam()
|
||||
if((!secured)||(!on)||(cooldown > 0)) return 0
|
||||
pulse(0)
|
||||
if(!holder)
|
||||
visible_message("\icon[src] *beep* *beep*")
|
||||
cooldown = 2
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
return
|
||||
|
||||
|
||||
interact(mob/user as mob)//TODO: change this this to the wire control panel
|
||||
if(!secured) return
|
||||
user.set_machine(src)
|
||||
var/dat = text("<TT><B>Infrared Laser</B>\n<B>Status</B>: []<BR>\n<B>Visibility</B>: []<BR>\n</TT>", (on ? text("<A href='?src=\ref[];state=0'>On</A>", src) : text("<A href='?src=\ref[];state=1'>Off</A>", src)), (src.visible ? text("<A href='?src=\ref[];visible=0'>Visible</A>", src) : text("<A href='?src=\ref[];visible=1'>Invisible</A>", src)))
|
||||
dat += "<BR><BR><A href='?src=\ref[src];refresh=1'>Refresh</A>"
|
||||
dat += "<BR><BR><A href='?src=\ref[src];close=1'>Close</A>"
|
||||
user << browse(dat, "window=infra")
|
||||
onclose(user, "infra")
|
||||
return
|
||||
|
||||
|
||||
Topic(href, href_list)
|
||||
if(..()) return 1
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=infra")
|
||||
onclose(usr, "infra")
|
||||
/obj/item/device/assembly/infra/process()//Old code
|
||||
if(!on)
|
||||
if(first)
|
||||
qdel(first)
|
||||
return
|
||||
|
||||
if(href_list["state"])
|
||||
on = !(on)
|
||||
update_icon()
|
||||
|
||||
if(href_list["visible"])
|
||||
visible = !(visible)
|
||||
if((!(first) && (secured && (istype(loc, /turf) || (holder && istype(holder.loc, /turf))))))
|
||||
var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam((holder ? holder.loc : loc) )
|
||||
I.master = src
|
||||
I.density = 1
|
||||
I.set_dir(dir)
|
||||
step(I, I.dir)
|
||||
if(I)
|
||||
I.density = 0
|
||||
first = I
|
||||
I.vis_spread(visible)
|
||||
spawn(0)
|
||||
if(first)
|
||||
first.vis_spread(visible)
|
||||
if(I)
|
||||
//world << "infra: setting limit"
|
||||
I.limit = 8
|
||||
//world << "infra: processing beam \ref[I]"
|
||||
I.process()
|
||||
return
|
||||
return
|
||||
|
||||
if(href_list["close"])
|
||||
usr << browse(null, "window=infra")
|
||||
return
|
||||
|
||||
if(usr)
|
||||
attack_self(usr)
|
||||
/obj/item/device/assembly/infra/attack_hand()
|
||||
qdel(first)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/infra/Move()
|
||||
var/t = dir
|
||||
..()
|
||||
set_dir(t)
|
||||
qdel(first)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/infra/holder_movement()
|
||||
if(!holder) return 0
|
||||
// set_dir(holder.dir)
|
||||
qdel(first)
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/device/assembly/infra/proc/trigger_beam()
|
||||
if((!secured)||(!on)||(cooldown > 0)) return 0
|
||||
pulse(0)
|
||||
if(!holder)
|
||||
visible_message("\icon[src] *beep* *beep*")
|
||||
cooldown = 2
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/infra/interact(mob/user as mob)//TODO: change this this to the wire control panel
|
||||
if(!secured) return
|
||||
user.set_machine(src)
|
||||
var/dat = text("<TT><B>Infrared Laser</B>\n<B>Status</B>: []<BR>\n<B>Visibility</B>: []<BR>\n</TT>", (on ? text("<A href='?src=\ref[];state=0'>On</A>", src) : text("<A href='?src=\ref[];state=1'>Off</A>", src)), (src.visible ? text("<A href='?src=\ref[];visible=0'>Visible</A>", src) : text("<A href='?src=\ref[];visible=1'>Invisible</A>", src)))
|
||||
dat += "<BR><BR><A href='?src=\ref[src];refresh=1'>Refresh</A>"
|
||||
dat += "<BR><BR><A href='?src=\ref[src];close=1'>Close</A>"
|
||||
user << browse(dat, "window=infra")
|
||||
onclose(user, "infra")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/infra/Topic(href, href_list, state = deep_inventory_state)
|
||||
if(..()) return 1
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=infra")
|
||||
onclose(usr, "infra")
|
||||
return
|
||||
|
||||
if(href_list["state"])
|
||||
on = !(on)
|
||||
update_icon()
|
||||
|
||||
verb/rotate()//This could likely be better
|
||||
set name = "Rotate Infrared Laser"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
if(href_list["visible"])
|
||||
visible = !(visible)
|
||||
spawn(0)
|
||||
if(first)
|
||||
first.vis_spread(visible)
|
||||
|
||||
set_dir(turn(dir, 90))
|
||||
if(href_list["close"])
|
||||
usr << browse(null, "window=infra")
|
||||
return
|
||||
|
||||
if(usr)
|
||||
attack_self(usr)
|
||||
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/infra/verb/rotate()//This could likely be better
|
||||
set name = "Rotate Infrared Laser"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
set_dir(turn(dir, 90))
|
||||
return
|
||||
|
||||
|
||||
|
||||
/***************************IBeam*********************************/
|
||||
|
||||
@@ -7,107 +7,108 @@
|
||||
var/armed = 0
|
||||
|
||||
|
||||
examine(mob/user)
|
||||
..(user)
|
||||
if(armed)
|
||||
user << "It looks like it's armed."
|
||||
/obj/item/device/assembly/mousetrap/examine(mob/user)
|
||||
..(user)
|
||||
if(armed)
|
||||
to_chat(user, "It looks like it's armed.")
|
||||
|
||||
/obj/item/device/assembly/mousetrap/update_icon()
|
||||
if(armed)
|
||||
icon_state = "mousetraparmed"
|
||||
else
|
||||
icon_state = "mousetrap"
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
|
||||
/obj/item/device/assembly/mousetrap/proc/triggered(mob/target as mob, var/type = "feet")
|
||||
if(!armed)
|
||||
return
|
||||
var/obj/item/organ/external/affecting = null
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
switch(type)
|
||||
if("feet")
|
||||
if(!H.shoes)
|
||||
affecting = H.get_organ(pick("l_leg", "r_leg"))
|
||||
H.Weaken(3)
|
||||
if("l_hand", "r_hand")
|
||||
if(!H.gloves)
|
||||
affecting = H.get_organ(type)
|
||||
H.Stun(3)
|
||||
if(affecting)
|
||||
if(affecting.take_damage(1, 0))
|
||||
H.UpdateDamageIcon()
|
||||
H.updatehealth()
|
||||
else if(ismouse(target))
|
||||
var/mob/living/simple_animal/mouse/M = target
|
||||
visible_message("<font color='red'><b>SPLAT!</b></font>")
|
||||
M.splat()
|
||||
playsound(target.loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
layer = MOB_LAYER - 0.2
|
||||
armed = 0
|
||||
update_icon()
|
||||
if(armed)
|
||||
icon_state = "mousetraparmed"
|
||||
else
|
||||
icon_state = "mousetrap"
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
pulse(0)
|
||||
|
||||
proc/triggered(mob/target as mob, var/type = "feet")
|
||||
if(!armed)
|
||||
|
||||
/obj/item/device/assembly/mousetrap/attack_self(mob/living/user as mob)
|
||||
if(!armed)
|
||||
user << "<span class='notice'>You arm [src].</span>"
|
||||
else
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
if(!user.hand)
|
||||
which_hand = "r_hand"
|
||||
triggered(user, which_hand)
|
||||
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
return
|
||||
var/obj/item/organ/external/affecting = null
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
switch(type)
|
||||
if("feet")
|
||||
if(!H.shoes)
|
||||
affecting = H.get_organ(pick("l_leg", "r_leg"))
|
||||
H.Weaken(3)
|
||||
if("l_hand", "r_hand")
|
||||
if(!H.gloves)
|
||||
affecting = H.get_organ(type)
|
||||
H.Stun(3)
|
||||
if(affecting)
|
||||
if(affecting.take_damage(1, 0))
|
||||
H.UpdateDamageIcon()
|
||||
H.updatehealth()
|
||||
else if(ismouse(target))
|
||||
var/mob/living/simple_animal/mouse/M = target
|
||||
visible_message("\red <b>SPLAT!</b>")
|
||||
M.splat()
|
||||
playsound(target.loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
layer = MOB_LAYER - 0.2
|
||||
armed = 0
|
||||
update_icon()
|
||||
pulse(0)
|
||||
|
||||
to_chat(user, "<span class='notice'>You disarm [src].</span>")
|
||||
armed = !armed
|
||||
update_icon()
|
||||
playsound(user.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3)
|
||||
|
||||
|
||||
attack_self(mob/living/user as mob)
|
||||
if(!armed)
|
||||
user << "<span class='notice'>You arm [src].</span>"
|
||||
else
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
if(!user.hand)
|
||||
which_hand = "r_hand"
|
||||
triggered(user, which_hand)
|
||||
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
return
|
||||
user << "<span class='notice'>You disarm [src].</span>"
|
||||
armed = !armed
|
||||
update_icon()
|
||||
playsound(user.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3)
|
||||
/obj/item/device/assembly/mousetrap/attack_hand(mob/living/user as mob)
|
||||
if(armed)
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
if(!user.hand)
|
||||
which_hand = "r_hand"
|
||||
triggered(user, which_hand)
|
||||
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
attack_hand(mob/living/user as mob)
|
||||
if(armed)
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
if(!user.hand)
|
||||
which_hand = "r_hand"
|
||||
triggered(user, which_hand)
|
||||
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
return
|
||||
..()
|
||||
/obj/item/device/assembly/mousetrap/Crossed(AM as mob|obj)
|
||||
if(armed)
|
||||
if(ishuman(AM))
|
||||
var/mob/living/carbon/H = AM
|
||||
if(H.m_intent == "run")
|
||||
triggered(H)
|
||||
H.visible_message("<span class='warning'>[H] accidentally steps on [src].</span>", \
|
||||
"<span class='warning'>You accidentally step on [src]</span>")
|
||||
if(ismouse(AM))
|
||||
triggered(AM)
|
||||
..()
|
||||
|
||||
|
||||
Crossed(AM as mob|obj)
|
||||
if(armed)
|
||||
if(ishuman(AM))
|
||||
var/mob/living/carbon/H = AM
|
||||
if(H.m_intent == "run")
|
||||
triggered(H)
|
||||
H.visible_message("<span class='warning'>[H] accidentally steps on [src].</span>", \
|
||||
"<span class='warning'>You accidentally step on [src]</span>")
|
||||
if(ismouse(AM))
|
||||
triggered(AM)
|
||||
..()
|
||||
/obj/item/device/assembly/mousetrap/on_found(mob/living/finder as mob)
|
||||
if(armed)
|
||||
finder.visible_message("<span class='warning'>[finder] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
triggered(finder, finder.hand ? "l_hand" : "r_hand")
|
||||
return 1 //end the search!
|
||||
return 0
|
||||
|
||||
|
||||
on_found(mob/living/finder as mob)
|
||||
if(armed)
|
||||
finder.visible_message("<span class='warning'>[finder] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
triggered(finder, finder.hand ? "l_hand" : "r_hand")
|
||||
return 1 //end the search!
|
||||
return 0
|
||||
|
||||
|
||||
hitby(A as mob|obj)
|
||||
if(!armed)
|
||||
return ..()
|
||||
visible_message("<span class='warning'>[src] is triggered by [A].</span>")
|
||||
triggered(null)
|
||||
/obj/item/device/assembly/mousetrap/hitby(A as mob|obj)
|
||||
if(!armed)
|
||||
return ..()
|
||||
visible_message("<span class='warning'>[src] is triggered by [A].</span>")
|
||||
triggered(null)
|
||||
|
||||
|
||||
/obj/item/device/assembly/mousetrap/armed
|
||||
@@ -124,4 +125,4 @@
|
||||
return
|
||||
|
||||
layer = TURF_LAYER+0.2
|
||||
usr << "<span class='notice'>You hide [src].</span>"
|
||||
to_chat(usr, "<span class='notice'>You hide [src].</span>")
|
||||
+119
-124
@@ -15,152 +15,147 @@
|
||||
|
||||
var/range = 2
|
||||
|
||||
proc
|
||||
toggle_scan()
|
||||
sense()
|
||||
/obj/item/device/assembly/prox_sensor/activate()
|
||||
if(!..()) return 0//Cooldown check
|
||||
timing = !timing
|
||||
update_icon()
|
||||
return 0
|
||||
|
||||
|
||||
activate()
|
||||
if(!..()) return 0//Cooldown check
|
||||
timing = !timing
|
||||
update_icon()
|
||||
return 0
|
||||
/obj/item/device/assembly/prox_sensor/toggle_secure()
|
||||
secured = !secured
|
||||
if(secured)
|
||||
processing_objects.Add(src)
|
||||
else
|
||||
scanning = 0
|
||||
timing = 0
|
||||
processing_objects.Remove(src)
|
||||
update_icon()
|
||||
return secured
|
||||
|
||||
|
||||
toggle_secure()
|
||||
secured = !secured
|
||||
if(secured)
|
||||
processing_objects.Add(src)
|
||||
else
|
||||
scanning = 0
|
||||
timing = 0
|
||||
processing_objects.Remove(src)
|
||||
update_icon()
|
||||
return secured
|
||||
|
||||
|
||||
HasProximity(atom/movable/AM as mob|obj)
|
||||
if(!istype(AM))
|
||||
log_debug("DEBUG: HasProximity called with [AM] on [src] ([usr]).")
|
||||
return
|
||||
if (istype(AM, /obj/effect/beam)) return
|
||||
if (AM.move_speed < 12) sense()
|
||||
/obj/item/device/assembly/prox_sensor/HasProximity(atom/movable/AM as mob|obj)
|
||||
if(!istype(AM))
|
||||
log_debug("DEBUG: HasProximity called with [AM] on [src] ([usr]).")
|
||||
return
|
||||
if (istype(AM, /obj/effect/beam)) return
|
||||
if (AM.move_speed < 12) sense()
|
||||
return
|
||||
|
||||
|
||||
sense()
|
||||
var/turf/mainloc = get_turf(src)
|
||||
/obj/item/device/assembly/prox_sensor/proc/sense()
|
||||
var/turf/mainloc = get_turf(src)
|
||||
// if(scanning && cooldown <= 0)
|
||||
// mainloc.visible_message("\icon[src] *boop* *boop*", "*boop* *boop*")
|
||||
if((!holder && !secured)||(!scanning)||(cooldown > 0)) return 0
|
||||
pulse(0)
|
||||
if(!holder)
|
||||
mainloc.visible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
|
||||
cooldown = 2
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
return
|
||||
if((!holder && !secured)||(!scanning)||(cooldown > 0)) return 0
|
||||
pulse(0)
|
||||
if(!holder)
|
||||
mainloc.visible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
|
||||
cooldown = 2
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
return
|
||||
|
||||
|
||||
process()
|
||||
if(scanning)
|
||||
var/turf/mainloc = get_turf(src)
|
||||
for(var/mob/living/A in range(range,mainloc))
|
||||
if (A.move_speed < 12)
|
||||
sense()
|
||||
/obj/item/device/assembly/prox_sensor/process()
|
||||
if(scanning)
|
||||
var/turf/mainloc = get_turf(src)
|
||||
for(var/mob/living/A in range(range,mainloc))
|
||||
if (A.move_speed < 12)
|
||||
sense()
|
||||
|
||||
if(timing && (time >= 0))
|
||||
time--
|
||||
if(timing && time <= 0)
|
||||
timing = 0
|
||||
toggle_scan()
|
||||
time = 10
|
||||
return
|
||||
if(timing && (time >= 0))
|
||||
time--
|
||||
if(timing && time <= 0)
|
||||
timing = 0
|
||||
toggle_scan()
|
||||
time = 10
|
||||
return
|
||||
|
||||
|
||||
dropped()
|
||||
spawn(0)
|
||||
sense()
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
toggle_scan()
|
||||
if(!secured) return 0
|
||||
scanning = !scanning
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
update_icon()
|
||||
overlays.Cut()
|
||||
attached_overlays = list()
|
||||
if(timing)
|
||||
overlays += "prox_timing"
|
||||
attached_overlays += "prox_timing"
|
||||
if(scanning)
|
||||
overlays += "prox_scanning"
|
||||
attached_overlays += "prox_scanning"
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
if(holder && istype(holder.loc,/obj/item/weapon/grenade/chem_grenade))
|
||||
var/obj/item/weapon/grenade/chem_grenade/grenade = holder.loc
|
||||
grenade.primed(scanning)
|
||||
return
|
||||
|
||||
|
||||
Move()
|
||||
..()
|
||||
/obj/item/device/assembly/prox_sensor/dropped()
|
||||
spawn(0)
|
||||
sense()
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
interact(mob/user as mob)//TODO: Change this to the wires thingy
|
||||
if(!secured)
|
||||
user.show_message("\red The [name] is unsecured!")
|
||||
return 0
|
||||
var/second = time % 60
|
||||
var/minute = (time - second) / 60
|
||||
var/dat = text("<TT><B>Proximity Sensor</B>\n[] []:[]\n<A href='?src=\ref[];tp=-30'>-</A> <A href='?src=\ref[];tp=-1'>-</A> <A href='?src=\ref[];tp=1'>+</A> <A href='?src=\ref[];tp=30'>+</A>\n</TT>", (timing ? text("<A href='?src=\ref[];time=0'>Arming</A>", src) : text("<A href='?src=\ref[];time=1'>Not Arming</A>", src)), minute, second, src, src, src, src)
|
||||
dat += text("<BR>Range: <A href='?src=\ref[];range=-1'>-</A> [] <A href='?src=\ref[];range=1'>+</A>", src, range, src)
|
||||
dat += "<BR><A href='?src=\ref[src];scanning=1'>[scanning?"Armed":"Unarmed"]</A> (Movement sensor active when armed!)"
|
||||
dat += "<BR><BR><A href='?src=\ref[src];refresh=1'>Refresh</A>"
|
||||
dat += "<BR><BR><A href='?src=\ref[src];close=1'>Close</A>"
|
||||
user << browse(dat, "window=prox")
|
||||
onclose(user, "prox")
|
||||
/obj/item/device/assembly/prox_sensor/proc/toggle_scan()
|
||||
if(!secured) return 0
|
||||
scanning = !scanning
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/prox_sensor/update_icon()
|
||||
overlays.Cut()
|
||||
attached_overlays = list()
|
||||
if(timing)
|
||||
overlays += "prox_timing"
|
||||
attached_overlays += "prox_timing"
|
||||
if(scanning)
|
||||
overlays += "prox_scanning"
|
||||
attached_overlays += "prox_scanning"
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
if(holder && istype(holder.loc,/obj/item/weapon/grenade/chem_grenade))
|
||||
var/obj/item/weapon/grenade/chem_grenade/grenade = holder.loc
|
||||
grenade.primed(scanning)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/prox_sensor/Move()
|
||||
..()
|
||||
sense()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/prox_sensor/interact(mob/user as mob)//TODO: Change this to the wires thingy
|
||||
if(!secured)
|
||||
user.show_message("<font color='red'>The [name] is unsecured!</font>")
|
||||
return 0
|
||||
var/second = time % 60
|
||||
var/minute = (time - second) / 60
|
||||
var/dat = text("<TT><B>Proximity Sensor</B>\n[] []:[]\n<A href='?src=\ref[];tp=-30'>-</A> <A href='?src=\ref[];tp=-1'>-</A> <A href='?src=\ref[];tp=1'>+</A> <A href='?src=\ref[];tp=30'>+</A>\n</TT>", (timing ? text("<A href='?src=\ref[];time=0'>Arming</A>", src) : text("<A href='?src=\ref[];time=1'>Not Arming</A>", src)), minute, second, src, src, src, src)
|
||||
dat += text("<BR>Range: <A href='?src=\ref[];range=-1'>-</A> [] <A href='?src=\ref[];range=1'>+</A>", src, range, src)
|
||||
dat += "<BR><A href='?src=\ref[src];scanning=1'>[scanning?"Armed":"Unarmed"]</A> (Movement sensor active when armed!)"
|
||||
dat += "<BR><BR><A href='?src=\ref[src];refresh=1'>Refresh</A>"
|
||||
dat += "<BR><BR><A href='?src=\ref[src];close=1'>Close</A>"
|
||||
user << browse(dat, "window=prox")
|
||||
onclose(user, "prox")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/prox_sensor/Topic(href, href_list, state = deep_inventory_state)
|
||||
if(..()) return 1
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=prox")
|
||||
onclose(usr, "prox")
|
||||
return
|
||||
|
||||
if(href_list["scanning"])
|
||||
toggle_scan()
|
||||
|
||||
Topic(href, href_list)
|
||||
if(..()) return 1
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=prox")
|
||||
onclose(usr, "prox")
|
||||
return
|
||||
if(href_list["time"])
|
||||
timing = text2num(href_list["time"])
|
||||
update_icon()
|
||||
|
||||
if(href_list["scanning"])
|
||||
toggle_scan()
|
||||
|
||||
if(href_list["time"])
|
||||
timing = text2num(href_list["time"])
|
||||
update_icon()
|
||||
|
||||
if(href_list["tp"])
|
||||
var/tp = text2num(href_list["tp"])
|
||||
time += tp
|
||||
time = min(max(round(time), 0), 600)
|
||||
|
||||
if(href_list["range"])
|
||||
var/r = text2num(href_list["range"])
|
||||
range += r
|
||||
range = min(max(range, 1), 5)
|
||||
|
||||
if(href_list["close"])
|
||||
usr << browse(null, "window=prox")
|
||||
return
|
||||
|
||||
if(usr)
|
||||
attack_self(usr)
|
||||
if(href_list["tp"])
|
||||
var/tp = text2num(href_list["tp"])
|
||||
time += tp
|
||||
time = min(max(round(time), 0), 600)
|
||||
|
||||
if(href_list["range"])
|
||||
var/r = text2num(href_list["range"])
|
||||
range += r
|
||||
range = min(max(range, 1), 5)
|
||||
|
||||
if(href_list["close"])
|
||||
usr << browse(null, "window=prox")
|
||||
return
|
||||
|
||||
if(usr)
|
||||
attack_self(usr)
|
||||
|
||||
|
||||
return
|
||||
|
||||
@@ -29,7 +29,8 @@
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
status = !status
|
||||
user << "<span class='notice'>[src] is now [status ? "secured" : "unsecured"]!</span>"
|
||||
to_chat(user, "<span class='notice'>[src] is now [status ? "secured" : "unsecured"]!</span>")
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
|
||||
+137
-136
@@ -17,174 +17,175 @@
|
||||
var/datum/radio_frequency/radio_connection
|
||||
var/deadman = 0
|
||||
|
||||
New()
|
||||
..()
|
||||
spawn(40)
|
||||
set_frequency(frequency)
|
||||
return
|
||||
/obj/item/device/assembly/signaler/New()
|
||||
..()
|
||||
spawn(40)
|
||||
set_frequency(frequency)
|
||||
return
|
||||
|
||||
|
||||
activate()
|
||||
if(cooldown > 0) return 0
|
||||
cooldown = 2
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
/obj/item/device/assembly/signaler/activate()
|
||||
if(cooldown > 0) return 0
|
||||
cooldown = 2
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
|
||||
signal()
|
||||
return 1
|
||||
signal()
|
||||
return 1
|
||||
|
||||
update_icon()
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
return
|
||||
/obj/item/device/assembly/signaler/update_icon()
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
return
|
||||
|
||||
interact(mob/user as mob, flag1)
|
||||
var/t1 = "-------"
|
||||
/obj/item/device/assembly/signaler/interact(mob/user as mob, flag1)
|
||||
var/t1 = "-------"
|
||||
// if ((src.b_stat && !( flag1 )))
|
||||
// t1 = text("-------<BR>\nGreen Wire: []<BR>\nRed Wire: []<BR>\nBlue Wire: []<BR>\n", (src.wires & 4 ? text("<A href='?src=\ref[];wires=4'>Cut Wire</A>", src) : text("<A href='?src=\ref[];wires=4'>Mend Wire</A>", src)), (src.wires & 2 ? text("<A href='?src=\ref[];wires=2'>Cut Wire</A>", src) : text("<A href='?src=\ref[];wires=2'>Mend Wire</A>", src)), (src.wires & 1 ? text("<A href='?src=\ref[];wires=1'>Cut Wire</A>", src) : text("<A href='?src=\ref[];wires=1'>Mend Wire</A>", src)))
|
||||
// else
|
||||
// t1 = "-------" Speaker: [src.listening ? "<A href='byond://?src=\ref[src];listen=0'>Engaged</A>" : "<A href='byond://?src=\ref[src];listen=1'>Disengaged</A>"]<BR>
|
||||
var/dat = {"
|
||||
<TT>
|
||||
var/dat = {"
|
||||
<TT>
|
||||
|
||||
<A href='byond://?src=\ref[src];send=1'>Send Signal</A><BR>
|
||||
<B>Frequency/Code</B> for signaler:<BR>
|
||||
Frequency:
|
||||
<A href='byond://?src=\ref[src];freq=-10'>-</A>
|
||||
<A href='byond://?src=\ref[src];freq=-2'>-</A>
|
||||
[format_frequency(src.frequency)]
|
||||
<A href='byond://?src=\ref[src];freq=2'>+</A>
|
||||
<A href='byond://?src=\ref[src];freq=10'>+</A><BR>
|
||||
<A href='byond://?src=\ref[src];send=1'>Send Signal</A><BR>
|
||||
<B>Frequency/Code</B> for signaler:<BR>
|
||||
Frequency:
|
||||
<A href='byond://?src=\ref[src];freq=-10'>-</A>
|
||||
<A href='byond://?src=\ref[src];freq=-2'>-</A>
|
||||
[format_frequency(src.frequency)]
|
||||
<A href='byond://?src=\ref[src];freq=2'>+</A>
|
||||
<A href='byond://?src=\ref[src];freq=10'>+</A><BR>
|
||||
|
||||
Code:
|
||||
<A href='byond://?src=\ref[src];code=-5'>-</A>
|
||||
<A href='byond://?src=\ref[src];code=-1'>-</A>
|
||||
[src.code]
|
||||
<A href='byond://?src=\ref[src];code=1'>+</A>
|
||||
<A href='byond://?src=\ref[src];code=5'>+</A><BR>
|
||||
[t1]
|
||||
</TT>"}
|
||||
user << browse(dat, "window=radio")
|
||||
onclose(user, "radio")
|
||||
Code:
|
||||
<A href='byond://?src=\ref[src];code=-5'>-</A>
|
||||
<A href='byond://?src=\ref[src];code=-1'>-</A>
|
||||
[src.code]
|
||||
<A href='byond://?src=\ref[src];code=1'>+</A>
|
||||
<A href='byond://?src=\ref[src];code=5'>+</A><BR>
|
||||
[t1]
|
||||
</TT>"}
|
||||
user << browse(dat, "window=radio")
|
||||
onclose(user, "radio")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/signaler/Topic(href, href_list, state = deep_inventory_state)
|
||||
if(..()) return 1
|
||||
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=radio")
|
||||
onclose(usr, "radio")
|
||||
return
|
||||
|
||||
if (href_list["freq"])
|
||||
var/new_frequency = (frequency + text2num(href_list["freq"]))
|
||||
if(new_frequency < RADIO_LOW_FREQ || new_frequency > RADIO_HIGH_FREQ)
|
||||
new_frequency = sanitize_frequency(new_frequency, RADIO_LOW_FREQ, RADIO_HIGH_FREQ)
|
||||
set_frequency(new_frequency)
|
||||
|
||||
Topic(href, href_list)
|
||||
if(..()) return 1
|
||||
if(href_list["code"])
|
||||
src.code += text2num(href_list["code"])
|
||||
src.code = round(src.code)
|
||||
src.code = min(100, src.code)
|
||||
src.code = max(1, src.code)
|
||||
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=radio")
|
||||
onclose(usr, "radio")
|
||||
return
|
||||
if(href_list["send"])
|
||||
spawn( 0 )
|
||||
signal()
|
||||
|
||||
if (href_list["freq"])
|
||||
var/new_frequency = (frequency + text2num(href_list["freq"]))
|
||||
if(new_frequency < RADIO_LOW_FREQ || new_frequency > RADIO_HIGH_FREQ)
|
||||
new_frequency = sanitize_frequency(new_frequency, RADIO_LOW_FREQ, RADIO_HIGH_FREQ)
|
||||
set_frequency(new_frequency)
|
||||
if(usr)
|
||||
attack_self(usr)
|
||||
|
||||
if(href_list["code"])
|
||||
src.code += text2num(href_list["code"])
|
||||
src.code = round(src.code)
|
||||
src.code = min(100, src.code)
|
||||
src.code = max(1, src.code)
|
||||
return
|
||||
|
||||
if(href_list["send"])
|
||||
spawn( 0 )
|
||||
signal()
|
||||
/obj/item/device/assembly/signaler/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(issignaler(W))
|
||||
var/obj/item/device/assembly/signaler/signaler2 = W
|
||||
if(secured && signaler2.secured)
|
||||
code = signaler2.code
|
||||
frequency = signaler2.frequency
|
||||
to_chat(user, "You transfer the frequency and code of [signaler2] to [src].")
|
||||
else
|
||||
..()
|
||||
|
||||
if(usr)
|
||||
attack_self(usr)
|
||||
/obj/item/device/assembly/signaler/proc/signal()
|
||||
if(!radio_connection) return
|
||||
|
||||
return
|
||||
|
||||
attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(issignaler(W))
|
||||
var/obj/item/device/assembly/signaler/signaler2 = W
|
||||
if(secured && signaler2.secured)
|
||||
code = signaler2.code
|
||||
frequency = signaler2.frequency
|
||||
user << "You transfer the frequency and code of [signaler2] to [src]"
|
||||
else
|
||||
..()
|
||||
|
||||
proc/signal()
|
||||
if(!radio_connection) return
|
||||
|
||||
var/datum/signal/signal = new
|
||||
signal.source = src
|
||||
signal.encryption = code
|
||||
signal.data["message"] = "ACTIVATE"
|
||||
radio_connection.post_signal(src, signal)
|
||||
return
|
||||
var/datum/signal/signal = new
|
||||
signal.source = src
|
||||
signal.encryption = code
|
||||
signal.data["message"] = "ACTIVATE"
|
||||
radio_connection.post_signal(src, signal)
|
||||
return
|
||||
/*
|
||||
for(var/obj/item/device/assembly/signaler/S in world)
|
||||
if(!S) continue
|
||||
if(S == src) continue
|
||||
if((S.frequency == src.frequency) && (S.code == src.code))
|
||||
spawn(0)
|
||||
if(S) S.pulse(0)
|
||||
return 0*/
|
||||
for(var/obj/item/device/assembly/signaler/S in world)
|
||||
if(!S) continue
|
||||
if(S == src) continue
|
||||
if((S.frequency == src.frequency) && (S.code == src.code))
|
||||
spawn(0)
|
||||
if(S) S.pulse(0)
|
||||
return 0*/
|
||||
|
||||
|
||||
pulse(var/radio = 0)
|
||||
if(src.connected && src.wires)
|
||||
connected.Pulse(src)
|
||||
else if(holder)
|
||||
holder.process_activation(src, 1, 0)
|
||||
else
|
||||
..(radio)
|
||||
return 1
|
||||
/obj/item/device/assembly/signaler/pulse(var/radio = 0)
|
||||
if(src.connected && src.wires)
|
||||
connected.Pulse(src)
|
||||
else if(holder)
|
||||
holder.process_activation(src, 1, 0)
|
||||
else
|
||||
..(radio)
|
||||
return 1
|
||||
|
||||
|
||||
receive_signal(datum/signal/signal)
|
||||
if(!signal) return 0
|
||||
if(signal.encryption != code) return 0
|
||||
if(!(src.wires & WIRE_RADIO_RECEIVE)) return 0
|
||||
pulse(1)
|
||||
/obj/item/device/assembly/signaler/receive_signal(datum/signal/signal)
|
||||
if(!signal) return 0
|
||||
if(signal.encryption != code) return 0
|
||||
if(!(src.wires & WIRE_RADIO_RECEIVE)) return 0
|
||||
pulse(1)
|
||||
|
||||
if(!holder)
|
||||
for(var/mob/O in hearers(1, src.loc))
|
||||
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
|
||||
if(!holder)
|
||||
for(var/mob/O in hearers(1, src.loc))
|
||||
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/signaler/proc/set_frequency(new_frequency)
|
||||
if(!frequency)
|
||||
return
|
||||
if(!radio_controller)
|
||||
sleep(20)
|
||||
if(!radio_controller)
|
||||
return
|
||||
|
||||
radio_controller.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT)
|
||||
return
|
||||
|
||||
proc/set_frequency(new_frequency)
|
||||
if(!frequency)
|
||||
return
|
||||
if(!radio_controller)
|
||||
sleep(20)
|
||||
if(!radio_controller)
|
||||
return
|
||||
radio_controller.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT)
|
||||
return
|
||||
/obj/item/device/assembly/signaler/process()
|
||||
if(!deadman)
|
||||
processing_objects.Remove(src)
|
||||
var/mob/M = src.loc
|
||||
if(!M || !ismob(M))
|
||||
if(prob(5))
|
||||
signal()
|
||||
deadman = 0
|
||||
processing_objects.Remove(src)
|
||||
else if(prob(5))
|
||||
M.visible_message("[M]'s finger twitches a bit over [src]'s signal button!")
|
||||
return
|
||||
|
||||
process()
|
||||
if(!deadman)
|
||||
processing_objects.Remove(src)
|
||||
var/mob/M = src.loc
|
||||
if(!M || !ismob(M))
|
||||
if(prob(5))
|
||||
signal()
|
||||
deadman = 0
|
||||
processing_objects.Remove(src)
|
||||
else if(prob(5))
|
||||
M.visible_message("[M]'s finger twitches a bit over [src]'s signal button!")
|
||||
return
|
||||
|
||||
verb/deadman_it()
|
||||
set src in usr
|
||||
set name = "Threaten to push the button!"
|
||||
set desc = "BOOOOM!"
|
||||
deadman = 1
|
||||
processing_objects.Add(src)
|
||||
log_and_message_admins("is threatening to trigger a signaler deadman's switch")
|
||||
usr.visible_message("\red [usr] moves their finger over [src]'s signal button...")
|
||||
/obj/item/device/assembly/signaler/verb/deadman_it()
|
||||
set src in usr
|
||||
set name = "Threaten to push the button!"
|
||||
set desc = "BOOOOM!"
|
||||
deadman = 1
|
||||
processing_objects.Add(src)
|
||||
log_and_message_admins("is threatening to trigger a signaler deadman's switch")
|
||||
usr.visible_message("<font color='red'>[usr] moves their finger over [src]'s signal button...</font>")
|
||||
|
||||
/obj/item/device/assembly/signaler/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src,frequency)
|
||||
frequency = 0
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
name = "timer"
|
||||
desc = "Used to time things. Works well with contraptions which has to count down. Tick tock."
|
||||
icon_state = "timer"
|
||||
origin_tech = list(TECH_MAGNET = 1)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 50, "waste" = 10)
|
||||
origin_tech = list(TECH_MAGNET = 1)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 50, "waste" = 10)
|
||||
|
||||
wires = WIRE_PULSE
|
||||
|
||||
@@ -12,97 +12,94 @@
|
||||
var/timing = 0
|
||||
var/time = 10
|
||||
|
||||
proc
|
||||
timer_end()
|
||||
|
||||
/obj/item/device/assembly/timer/activate()
|
||||
if(!..()) return 0//Cooldown check
|
||||
|
||||
activate()
|
||||
if(!..()) return 0//Cooldown check
|
||||
|
||||
timing = !timing
|
||||
|
||||
update_icon()
|
||||
return 0
|
||||
|
||||
|
||||
toggle_secure()
|
||||
secured = !secured
|
||||
if(secured)
|
||||
processing_objects.Add(src)
|
||||
else
|
||||
timing = 0
|
||||
processing_objects.Remove(src)
|
||||
update_icon()
|
||||
return secured
|
||||
|
||||
|
||||
timer_end()
|
||||
if(!secured) return 0
|
||||
pulse(0)
|
||||
if(!holder)
|
||||
visible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
|
||||
cooldown = 2
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
return
|
||||
|
||||
|
||||
process()
|
||||
if(timing && (time > 0))
|
||||
time--
|
||||
if(timing && time <= 0)
|
||||
timing = 0
|
||||
timer_end()
|
||||
time = 10
|
||||
return
|
||||
|
||||
timing = !timing
|
||||
|
||||
update_icon()
|
||||
overlays.Cut()
|
||||
attached_overlays = list()
|
||||
if(timing)
|
||||
overlays += "timer_timing"
|
||||
attached_overlays += "timer_timing"
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
return 0
|
||||
|
||||
|
||||
/obj/item/device/assembly/timer/toggle_secure()
|
||||
secured = !secured
|
||||
if(secured)
|
||||
processing_objects.Add(src)
|
||||
else
|
||||
timing = 0
|
||||
processing_objects.Remove(src)
|
||||
update_icon()
|
||||
return secured
|
||||
|
||||
|
||||
/obj/item/device/assembly/timer/proc/timer_end()
|
||||
if(!secured) return 0
|
||||
pulse(0)
|
||||
if(!holder)
|
||||
visible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
|
||||
cooldown = 2
|
||||
spawn(10)
|
||||
process_cooldown()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/timer/process()
|
||||
if(timing && (time > 0))
|
||||
time--
|
||||
if(timing && time <= 0)
|
||||
timing = 0
|
||||
timer_end()
|
||||
time = 10
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/timer/update_icon()
|
||||
overlays.Cut()
|
||||
attached_overlays = list()
|
||||
if(timing)
|
||||
overlays += "timer_timing"
|
||||
attached_overlays += "timer_timing"
|
||||
if(holder)
|
||||
holder.update_icon()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/timer/interact(mob/user as mob)//TODO: Have this use the wires
|
||||
if(!secured)
|
||||
user.show_message("<font color='red'>The [name] is unsecured!</font>")
|
||||
return 0
|
||||
var/second = time % 60
|
||||
var/minute = (time - second) / 60
|
||||
var/dat = text("<TT><B>Timing Unit</B>\n[] []:[]\n<A href='?src=\ref[];tp=-30'>-</A> <A href='?src=\ref[];tp=-1'>-</A> <A href='?src=\ref[];tp=1'>+</A> <A href='?src=\ref[];tp=30'>+</A>\n</TT>", (timing ? text("<A href='?src=\ref[];time=0'>Timing</A>", src) : text("<A href='?src=\ref[];time=1'>Not Timing</A>", src)), minute, second, src, src, src, src)
|
||||
dat += "<BR><BR><A href='?src=\ref[src];refresh=1'>Refresh</A>"
|
||||
dat += "<BR><BR><A href='?src=\ref[src];close=1'>Close</A>"
|
||||
user << browse(dat, "window=timer")
|
||||
onclose(user, "timer")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/timer/Topic(href, href_list, state = deep_inventory_state)
|
||||
if(..()) return 1
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=timer")
|
||||
onclose(usr, "timer")
|
||||
return
|
||||
|
||||
if(href_list["time"])
|
||||
timing = text2num(href_list["time"])
|
||||
update_icon()
|
||||
|
||||
interact(mob/user as mob)//TODO: Have this use the wires
|
||||
if(!secured)
|
||||
user.show_message("\red The [name] is unsecured!")
|
||||
return 0
|
||||
var/second = time % 60
|
||||
var/minute = (time - second) / 60
|
||||
var/dat = text("<TT><B>Timing Unit</B>\n[] []:[]\n<A href='?src=\ref[];tp=-30'>-</A> <A href='?src=\ref[];tp=-1'>-</A> <A href='?src=\ref[];tp=1'>+</A> <A href='?src=\ref[];tp=30'>+</A>\n</TT>", (timing ? text("<A href='?src=\ref[];time=0'>Timing</A>", src) : text("<A href='?src=\ref[];time=1'>Not Timing</A>", src)), minute, second, src, src, src, src)
|
||||
dat += "<BR><BR><A href='?src=\ref[src];refresh=1'>Refresh</A>"
|
||||
dat += "<BR><BR><A href='?src=\ref[src];close=1'>Close</A>"
|
||||
user << browse(dat, "window=timer")
|
||||
onclose(user, "timer")
|
||||
if(href_list["tp"])
|
||||
var/tp = text2num(href_list["tp"])
|
||||
time += tp
|
||||
time = min(max(round(time), 0), 600)
|
||||
|
||||
if(href_list["close"])
|
||||
usr << browse(null, "window=timer")
|
||||
return
|
||||
|
||||
if(usr)
|
||||
attack_self(usr)
|
||||
|
||||
Topic(href, href_list)
|
||||
if(..()) return 1
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=timer")
|
||||
onclose(usr, "timer")
|
||||
return
|
||||
|
||||
if(href_list["time"])
|
||||
timing = text2num(href_list["time"])
|
||||
update_icon()
|
||||
|
||||
if(href_list["tp"])
|
||||
var/tp = text2num(href_list["tp"])
|
||||
time += tp
|
||||
time = min(max(round(time), 0), 600)
|
||||
|
||||
if(href_list["close"])
|
||||
usr << browse(null, "window=timer")
|
||||
return
|
||||
|
||||
if(usr)
|
||||
attack_self(usr)
|
||||
|
||||
return
|
||||
return
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
var/corpseid = 0 //Just set to 1 if you want them to have an ID
|
||||
var/corpseidjob = null // Needs to be in quotes, such as "Clown" or "Chef." This just determines what the ID reads as, not their access
|
||||
var/corpseidaccess = null //This is for access. See access.dm for which jobs give what access. Again, put in quotes. Use "Captain" if you want it to be all access.
|
||||
var/corpseidicon = null //For setting it to be a gold, silver, centcomm etc ID
|
||||
var/corpseidicon = null //For setting it to be a gold, silver, CentCom etc ID
|
||||
var/species = "Human"
|
||||
|
||||
/obj/effect/landmark/corpse/initialize()
|
||||
|
||||
@@ -133,7 +133,7 @@ obj/machinery/gateway/centerstation/process()
|
||||
|
||||
/obj/machinery/gateway/centerstation/attackby(obj/item/device/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/device/multitool))
|
||||
user << "\black The gate is already calibrated, there is no work for you to do here."
|
||||
user << "<font color='black'>The gate is already calibrated, there is no work for you to do here.</font>"
|
||||
return
|
||||
|
||||
/////////////////////////////////////Away////////////////////////
|
||||
@@ -219,7 +219,7 @@ obj/machinery/gateway/centerstation/process()
|
||||
if(istype(M, /mob/living/carbon))
|
||||
for(var/obj/item/weapon/implant/exile/E in M)//Checking that there is an exile implant in the contents
|
||||
if(E.imp_in == M)//Checking that it's actually implanted vs just in their pocket
|
||||
M << "\black The station gate has detected your exile implant and is blocking your entry."
|
||||
M << "<font color='black'>The station gate has detected your exile implant and is blocking your entry.</font>"
|
||||
return
|
||||
M.loc = get_step(stationgate.loc, SOUTH)
|
||||
M.set_dir(SOUTH)
|
||||
@@ -228,9 +228,9 @@ obj/machinery/gateway/centerstation/process()
|
||||
/obj/machinery/gateway/centeraway/attackby(obj/item/device/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/device/multitool))
|
||||
if(calibrated)
|
||||
user << "\black The gate is already calibrated, there is no work for you to do here."
|
||||
user << "<font color='black'>The gate is already calibrated, there is no work for you to do here.</font>"
|
||||
return
|
||||
else
|
||||
user << "\blue <b>Recalibration successful!</b>: \black This gate's systems have been fine tuned. Travel to this gate will now be on target."
|
||||
user << "<font color='blue'><b>Recalibration successful!</b>:</font><font color='black'> This gate's systems have been fine tuned. Travel to this gate will now be on target.</font>"
|
||||
calibrated = 1
|
||||
return
|
||||
@@ -3,7 +3,7 @@ proc/createRandomZlevel()
|
||||
return
|
||||
|
||||
var/list/potentialRandomZlevels = list()
|
||||
admin_notice("\red \b Searching for away missions...", R_DEBUG)
|
||||
admin_notice("<font color='red'><B> Searching for away missions...</B></font>", R_DEBUG)
|
||||
var/list/Lines = file2list("maps/RandomZLevels/fileList.txt")
|
||||
if(!Lines.len) return
|
||||
for (var/t in Lines)
|
||||
@@ -35,12 +35,13 @@ proc/createRandomZlevel()
|
||||
|
||||
|
||||
if(potentialRandomZlevels.len)
|
||||
admin_notice("\red \b Loading away mission...", R_DEBUG)
|
||||
admin_notice("<font color='red'><B>Loading away mission...</B></font>", R_DEBUG)
|
||||
|
||||
var/map = pick(potentialRandomZlevels)
|
||||
var/file = file(map)
|
||||
if(isfile(file))
|
||||
maploader.load_map(file)
|
||||
var/datum/map_template/template = new(file, "away mission")
|
||||
template.load_new_z()
|
||||
world.log << "away mission loaded: [map]"
|
||||
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
@@ -48,8 +49,8 @@ proc/createRandomZlevel()
|
||||
continue
|
||||
awaydestinations.Add(L)
|
||||
|
||||
admin_notice("\red \b Away mission loaded.", R_DEBUG)
|
||||
admin_notice("<font color='red'><B>Away mission loaded.</B></font>", R_DEBUG)
|
||||
|
||||
else
|
||||
admin_notice("\red \b No away missions found.", R_DEBUG)
|
||||
admin_notice("<font color='red'><B>No away missions found.</B></font>", R_DEBUG)
|
||||
return
|
||||
|
||||
@@ -3,7 +3,8 @@
|
||||
name = "blob"
|
||||
icon = 'icons/mob/blob.dmi'
|
||||
icon_state = "blob"
|
||||
light_range = 3
|
||||
light_range = 2
|
||||
light_color = "#b5ff5b"
|
||||
desc = "Some blob creature thingy"
|
||||
density = 1
|
||||
opacity = 0
|
||||
@@ -73,6 +74,9 @@
|
||||
if(GR)
|
||||
qdel(GR)
|
||||
return
|
||||
for(var/obj/structure/reagent_dispensers/fueltank/Fuel in T)
|
||||
Fuel.ex_act(2)
|
||||
return
|
||||
for(var/obj/machinery/door/D in T) // There can be several - and some of them can be open, locate() is not suitable
|
||||
if(D.density)
|
||||
D.ex_act(2)
|
||||
@@ -138,7 +142,7 @@
|
||||
if("fire")
|
||||
damage = (W.force / fire_resist)
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
playsound(loc, 'sound/items/Welder.ogg', 100, 1)
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if("brute")
|
||||
damage = (W.force / brute_resist)
|
||||
|
||||
@@ -149,6 +153,8 @@
|
||||
name = "blob core"
|
||||
icon = 'icons/mob/blob.dmi'
|
||||
icon_state = "blob_core"
|
||||
light_range = 3
|
||||
light_color = "#ffc880"
|
||||
maxHealth = 200
|
||||
brute_resist = 2
|
||||
fire_resist = 2
|
||||
@@ -176,6 +182,7 @@
|
||||
name = "strong blob"
|
||||
icon = 'icons/mob/blob.dmi'
|
||||
icon_state = "blob_idle"
|
||||
light_range = 3
|
||||
desc = "Some blob creature thingy"
|
||||
maxHealth = 60
|
||||
brute_resist = 1
|
||||
|
||||
@@ -9,5 +9,8 @@ var/datum/lore/loremaster/loremaster = new/datum/lore/loremaster
|
||||
|
||||
var/list/paths = typesof(/datum/lore/organization) - /datum/lore/organization
|
||||
for(var/path in paths)
|
||||
var/datum/lore/organization/instance = new path()
|
||||
organizations[path] = instance
|
||||
// Some intermediate paths are not real organizations (ex. /datum/lore/organization/mil). Only do ones with names
|
||||
var/datum/lore/organization/instance = path
|
||||
if(initial(instance.name))
|
||||
instance = new path()
|
||||
organizations[path] = instance
|
||||
|
||||
@@ -117,8 +117,8 @@
|
||||
)
|
||||
|
||||
/datum/lore/organization/tsc/vey_med
|
||||
name = "Vey Medical"
|
||||
short_name = "Vey Med"
|
||||
name = "Vey-Medical" //The Wiki displays them as Vey-Medical.
|
||||
short_name = "Vey-Med"
|
||||
acronym = "VM"
|
||||
desc = "Vey-Med is one of the newer TSCs on the block and is notable for being largely owned and opperated by Skrell. \
|
||||
Despite the suspicion and prejudice leveled at them for their alien origin, Vey-Med has obtained market dominance in \
|
||||
@@ -221,6 +221,7 @@
|
||||
"Never Talk To Strangers",
|
||||
"Sacrificial Victim",
|
||||
"Unwitting Accomplice",
|
||||
"Witting Accomplice",
|
||||
"Bad For Business",
|
||||
"Just Testing",
|
||||
"Size Isn't Everything",
|
||||
@@ -249,7 +250,42 @@
|
||||
"Anything Legal Considered",
|
||||
"New Toy",
|
||||
"Me, I'm Always Counting",
|
||||
"Just Five More Minutes"
|
||||
"Just Five More Minutes",
|
||||
"Are You Feeling It",
|
||||
"Great White Snark",
|
||||
"No Shirt No Shoes",
|
||||
"Callsign",
|
||||
"Three Ships in a Trenchcoat",
|
||||
"Not Wearing Pants",
|
||||
"Ridiculous Naming Convention",
|
||||
"God Dammit Morpheus",
|
||||
"It Seemed Like a Good Idea",
|
||||
"Legs All the Way Up",
|
||||
"Purchase Necessary",
|
||||
"Some Assembly Required",
|
||||
"Buy One Get None Free",
|
||||
"BRB",
|
||||
"SHIP NAME HERE",
|
||||
"Questionable Ethics",
|
||||
"Accept Most Substitutes",
|
||||
"I Blame the Government",
|
||||
"Garbled Gibberish",
|
||||
"Thinking Emoji",
|
||||
"Is This Thing On?",
|
||||
"Make My Day",
|
||||
"No Vox Here",
|
||||
"Savings and Values",
|
||||
"Secret Name",
|
||||
"Can't Find My Keys",
|
||||
"Look Over There!",
|
||||
"Made You Look!",
|
||||
"Take Nothing Seriously",
|
||||
"It Comes In Lime, Too",
|
||||
"Loot Me",
|
||||
"Nothing To Declare",
|
||||
"Sneaking Suspicion",
|
||||
"Bass Ackwards",
|
||||
"Good Things Come to Those Who Freight"
|
||||
|
||||
|
||||
)
|
||||
@@ -322,12 +358,12 @@
|
||||
// Military
|
||||
|
||||
/datum/lore/organization/mil/sif_guard
|
||||
name = "Sif Homeguard Forces" // Todo: Get better name from lorepeople.
|
||||
name = "Sif Defense Force" // Todo: Get better name from lorepeople.
|
||||
short_name = "SifGuard"
|
||||
desc = ""
|
||||
history = ""
|
||||
work = "Sif Governmental Authority's military"
|
||||
headquarters = "Sif" // Make this more specific later.
|
||||
headquarters = "New Reykjavik, Sif"
|
||||
motto = ""
|
||||
autogenerate_destination_names = FALSE // Kinda weird if SifGuard goes to Nyx.
|
||||
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
/client
|
||||
//////////////////////
|
||||
//BLACK MAGIC THINGS//
|
||||
//////////////////////
|
||||
parent_type = /datum
|
||||
////////////////
|
||||
//ADMIN THINGS//
|
||||
////////////////
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
src.preload_rsc = pick(config.resource_urls)
|
||||
else src.preload_rsc = 1 // If config.resource_urls is not set, preload like normal.
|
||||
|
||||
src << "\red If the title screen is black, resources are still downloading. Please be patient until the title screen appears."
|
||||
src << "<font color='red'>If the title screen is black, resources are still downloading. Please be patient until the title screen appears.</font>"
|
||||
|
||||
|
||||
clients += src
|
||||
@@ -181,6 +181,9 @@
|
||||
clients -= src
|
||||
return ..()
|
||||
|
||||
/client/Destroy()
|
||||
..()
|
||||
return QDEL_HINT_HARDDEL_NOW
|
||||
|
||||
// here because it's similar to below
|
||||
|
||||
@@ -284,6 +287,18 @@
|
||||
if(inactivity > duration) return inactivity
|
||||
return 0
|
||||
|
||||
// Byond seemingly calls stat, each tick.
|
||||
// Calling things each tick can get expensive real quick.
|
||||
// So we slow this down a little.
|
||||
// See: http://www.byond.com/docs/ref/info.html#/client/proc/Stat
|
||||
/client/Stat()
|
||||
. = ..()
|
||||
if (holder)
|
||||
sleep(1)
|
||||
else
|
||||
sleep(5)
|
||||
stoplag()
|
||||
|
||||
/client/proc/last_activity_seconds()
|
||||
return inactivity / 10
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
/datum/gear/accessory/emt
|
||||
display_name = "armband, EMT"
|
||||
path = /obj/item/clothing/accessory/armband/medgreen
|
||||
path = /obj/item/clothing/accessory/armband/medblue
|
||||
|
||||
/datum/gear/accessory/engineering
|
||||
display_name = "armband, engineering"
|
||||
@@ -316,3 +316,16 @@
|
||||
shirts["red hawaii shirt"] = /obj/item/clothing/accessory/hawaii/red
|
||||
shirts["random colored hawaii shirt"] = /obj/item/clothing/accessory/hawaii/random
|
||||
gear_tweaks += new/datum/gear_tweak/path(shirts)
|
||||
|
||||
|
||||
/datum/gear/accessory/sweater
|
||||
display_name = "Sweater Selection"
|
||||
path = /obj/item/clothing/accessory/sweater
|
||||
|
||||
/datum/gear/accessory/sweater/New()
|
||||
..()
|
||||
var/list/sweaters = list()
|
||||
for(var/sweater in typesof(/obj/item/clothing/accessory/sweater))
|
||||
var/obj/item/clothing/suit/sweater_type = sweater
|
||||
sweaters[initial(sweater_type.name)] = sweater_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(sweaters))
|
||||
|
||||
@@ -76,6 +76,15 @@
|
||||
display_name = "Optical Meson Scanners, prescription (Engineering)"
|
||||
path = /obj/item/clothing/glasses/meson/prescription
|
||||
|
||||
/datum/gear/eyes/material
|
||||
display_name = "Optical Material Scanners (Mining)"
|
||||
path = /obj/item/clothing/glasses/material
|
||||
allowed_roles = list("Shaft Miner")
|
||||
|
||||
/datum/gear/eyes/material/prescription
|
||||
display_name = "Prescription Optical Material Scanners (Mining)"
|
||||
path = /obj/item/clothing/glasses/material/prescription
|
||||
|
||||
/datum/gear/eyes/meson/aviator
|
||||
display_name = "Optical Meson Aviators, (Engineering)"
|
||||
path = /obj/item/clothing/glasses/meson/aviator
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
display_name = "dice pack (gaming)"
|
||||
path = /obj/item/weapon/storage/pill_bottle/dice_nerd
|
||||
|
||||
/datum/gear/dice/cup
|
||||
display_name = "dice cup and dice"
|
||||
path = /obj/item/weapon/storage/dicecup/loaded
|
||||
|
||||
/datum/gear/cards
|
||||
display_name = "deck of cards"
|
||||
path = /obj/item/weapon/deck/cards
|
||||
|
||||
@@ -70,4 +70,8 @@
|
||||
/datum/gear/gloves/forensic
|
||||
display_name = "gloves, forensic"
|
||||
path = /obj/item/clothing/gloves/forensic
|
||||
allowed_roles = list("Detective")
|
||||
allowed_roles = list("Detective")
|
||||
|
||||
/datum/gear/gloves/fingerless
|
||||
display_name = "fingerless gloves"
|
||||
path = /obj/item/clothing/gloves/fingerless
|
||||
@@ -348,4 +348,24 @@
|
||||
for(var/sol_style in typesof(/obj/item/clothing/head/beret/sol))
|
||||
var/obj/item/clothing/head/beret/sol/sol = sol_style
|
||||
sols[initial(sol.name)] = sol
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(sols))
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(sols))
|
||||
|
||||
/datum/gear/head/surgical/black
|
||||
display_name = "surgical cap, black"
|
||||
path = /obj/item/clothing/head/surgery/black
|
||||
|
||||
/datum/gear/head/surgical/blue
|
||||
display_name = "surgical cap, blue"
|
||||
path = /obj/item/clothing/head/surgery/blue
|
||||
|
||||
/datum/gear/head/surgical/green
|
||||
display_name = "surgical cap, green"
|
||||
path = /obj/item/clothing/head/surgery/green
|
||||
|
||||
/datum/gear/head/surgical/navyblue
|
||||
display_name = "surgical cap, navy blue"
|
||||
path = /obj/item/clothing/head/surgery/navyblue
|
||||
|
||||
/datum/gear/head/surgical/purple
|
||||
display_name = "surgical cap, purple"
|
||||
path = /obj/item/clothing/head/surgery/purple
|
||||
@@ -77,6 +77,38 @@
|
||||
display_name = "flats, black"
|
||||
path = /obj/item/clothing/shoes/flats
|
||||
|
||||
/datum/gear/shoes/hitops/
|
||||
display_name = "high-top, white"
|
||||
path = /obj/item/clothing/shoes/hitops/
|
||||
|
||||
/datum/gear/shoes/hitops/red
|
||||
display_name = "high-top, red"
|
||||
path = /obj/item/clothing/shoes/hitops/red
|
||||
|
||||
/datum/gear/shoes/hitops/black
|
||||
display_name = "high-top, black"
|
||||
path = /obj/item/clothing/shoes/hitops/black
|
||||
|
||||
/datum/gear/shoes/hitops/orange
|
||||
display_name = "high-top, orange"
|
||||
path = /obj/item/clothing/shoes/hitops/orange
|
||||
|
||||
/datum/gear/shoes/hitops/blue
|
||||
display_name = "high-top, blue"
|
||||
path = /obj/item/clothing/shoes/hitops/blue
|
||||
|
||||
/datum/gear/shoes/hitops/green
|
||||
display_name = "high-top, green"
|
||||
path = /obj/item/clothing/shoes/hitops/green
|
||||
|
||||
/datum/gear/shoes/hitops/purple
|
||||
display_name = "high-top, purple"
|
||||
path = /obj/item/clothing/shoes/hitops/purple
|
||||
|
||||
/datum/gear/shoes/hitops/yellow
|
||||
display_name = "high-top, yellow"
|
||||
path = /obj/item/clothing/shoes/hitops/yellow
|
||||
|
||||
/datum/gear/shoes/flats/blue
|
||||
display_name = "flats, blue"
|
||||
path = /obj/item/clothing/shoes/flats/blue
|
||||
@@ -161,4 +193,53 @@
|
||||
|
||||
/datum/gear/shoes/heels/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/shoes/boots/winter
|
||||
display_name = "winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter
|
||||
|
||||
/datum/gear/shoes/boots/winter/security
|
||||
display_name = "security winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/security
|
||||
allowed_roles = list("Security Officer", "Head of Security", "Warden", "Detective")
|
||||
|
||||
/datum/gear/shoes/boots/winter/science
|
||||
display_name = "science winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/science
|
||||
allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist")
|
||||
|
||||
/datum/gear/shoes/boots/winter/command
|
||||
display_name = "colony director's winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/command
|
||||
allowed_roles = list("Colony Director")
|
||||
|
||||
/datum/gear/shoes/boots/winter/engineering
|
||||
display_name = "engineering winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/engineering
|
||||
allowed_roles = list("Chief Engineer","Atmospheric Technician", "Station Engineer")
|
||||
|
||||
/datum/gear/shoes/boots/winter/atmos
|
||||
display_name = "atmospherics winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/atmos
|
||||
allowed_roles = list("Chief Engineer", "Atmospheric Technician")
|
||||
|
||||
/datum/gear/shoes/boots/winter/medical
|
||||
display_name = "medical winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/medical
|
||||
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist")
|
||||
|
||||
/datum/gear/shoes/boots/winter/mining
|
||||
display_name = "mining winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/mining
|
||||
allowed_roles = list("Shaft Miner")
|
||||
|
||||
/datum/gear/shoes/boots/winter/supply
|
||||
display_name = "supply winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/supply
|
||||
allowed_roles = list("Quartermaster","Cargo Technician")
|
||||
|
||||
/datum/gear/shoes/boots/winter/hydro
|
||||
display_name = "hydroponics winter boots"
|
||||
path = /obj/item/clothing/shoes/boots/winter/hydro
|
||||
allowed_roles = list("Botanist", "Xenobiologist")
|
||||
@@ -11,9 +11,17 @@
|
||||
path = /obj/item/weapon/storage/box/matches
|
||||
|
||||
/datum/gear/zippo
|
||||
display_name = "zippo"
|
||||
display_name = "Zippo Selection"
|
||||
path = /obj/item/weapon/flame/lighter/zippo
|
||||
|
||||
/datum/gear/zippo/New()
|
||||
..()
|
||||
var/list/zippos = list()
|
||||
for(var/zippo in typesof(/obj/item/weapon/flame/lighter/zippo))
|
||||
var/obj/item/weapon/flame/lighter/zippo/zippo_type = zippo
|
||||
zippos[initial(zippo_type.name)] = zippo_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(zippos))
|
||||
|
||||
/datum/gear/ashtray
|
||||
display_name = "ashtray, plastic"
|
||||
path = /obj/item/weapon/material/ashtray/plastic
|
||||
|
||||
@@ -383,4 +383,46 @@
|
||||
|
||||
/datum/gear/suit/miscellaneous/med_dep_jacket
|
||||
display_name = "department jacket, medical"
|
||||
path = /obj/item/clothing/suit/storage/toggle/med_dep_jacket
|
||||
path = /obj/item/clothing/suit/storage/toggle/med_dep_jacket
|
||||
|
||||
/datum/gear/suit/miscellaneous/peacoat
|
||||
display_name = "peacoat"
|
||||
path = /obj/item/clothing/suit/storage/toggle/peacoat
|
||||
|
||||
/datum/gear/suit/miscellaneous/peacoat/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/suit/snowsuit
|
||||
display_name = "snowsuit"
|
||||
path = /obj/item/clothing/suit/storage/snowsuit
|
||||
|
||||
/datum/gear/suit/snowsuit/command
|
||||
display_name = "snowsuit, command"
|
||||
path = /obj/item/clothing/suit/storage/snowsuit/command
|
||||
allowed_roles = list("Colony Director","Research Director","Head of Personnel","Head of Security","Chief Engineer","Command Secretary")
|
||||
|
||||
/datum/gear/suit/snowsuit/security
|
||||
display_name = "snowsuit, security"
|
||||
path = /obj/item/clothing/suit/storage/snowsuit/security
|
||||
allowed_roles = list("Security Officer", "Head of Security", "Warden", "Detective")
|
||||
|
||||
/datum/gear/suit/snowsuit/medical
|
||||
display_name = "snowsuit, medical"
|
||||
path = /obj/item/clothing/suit/storage/snowsuit/medical
|
||||
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist")
|
||||
|
||||
/datum/gear/suit/snowsuit/science
|
||||
display_name = "snowsuit, science"
|
||||
path = /obj/item/clothing/suit/storage/snowsuit/science
|
||||
allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist")
|
||||
|
||||
/datum/gear/suit/snowsuit/engineering
|
||||
display_name = "snowsuit, engineering"
|
||||
path = /obj/item/clothing/suit/storage/snowsuit/engineering
|
||||
allowed_roles = list("Chief Engineer","Atmospheric Technician", "Station Engineer")
|
||||
|
||||
/datum/gear/suit/snowsuit/cargo
|
||||
display_name = "snowsuit, supply"
|
||||
path = /obj/item/clothing/suit/storage/snowsuit/cargo
|
||||
allowed_roles = list("Quartermaster","shaft Miner","Cargo Technician","Head of Personnel")
|
||||
@@ -5,6 +5,10 @@
|
||||
slot = slot_w_uniform
|
||||
sort_category = "Uniforms and Casual Dress"
|
||||
|
||||
/datum/gear/uniform/blazerskirt
|
||||
display_name = "blazer, blue with skirt"
|
||||
path = /obj/item/clothing/under/blazer/skirt
|
||||
|
||||
/datum/gear/uniform/cheongsam
|
||||
display_name = "cheongsam selection"
|
||||
|
||||
@@ -16,22 +20,21 @@
|
||||
cheongasms[initial(cheongasm_type.name)] = cheongasm_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cheongasms))
|
||||
|
||||
/datum/gear/uniform/croptop
|
||||
display_name = "croptop selection"
|
||||
|
||||
/datum/gear/uniform/croptop/New()
|
||||
..()
|
||||
var/list/croptops = list()
|
||||
for(var/croptop in typesof(/obj/item/clothing/under/croptop))
|
||||
var/obj/item/clothing/under/croptop/croptop_type = croptop
|
||||
croptops[initial(croptop_type.name)] = croptop_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(croptops))
|
||||
|
||||
/datum/gear/uniform/kilt
|
||||
display_name = "kilt"
|
||||
path = /obj/item/clothing/under/kilt
|
||||
|
||||
/datum/gear/uniform/croptop
|
||||
display_name = "croptop, NT"
|
||||
path = /obj/item/clothing/under/croptop
|
||||
|
||||
/datum/gear/uniform/croptop/grey
|
||||
display_name = "croptop, grey"
|
||||
path = /obj/item/clothing/under/croptop/grey
|
||||
|
||||
/datum/gear/uniform/croptop/red
|
||||
display_name = "croptop, red"
|
||||
path = /obj/item/clothing/under/croptop/red
|
||||
|
||||
/datum/gear/uniform/cuttop
|
||||
display_name = "cut top, grey"
|
||||
path = /obj/item/clothing/under/cuttop
|
||||
@@ -178,98 +181,81 @@
|
||||
path = /obj/item/clothing/under/rank/cargotech/jeans/female
|
||||
allowed_roles = list("Quartermaster","Cargo Technician")
|
||||
|
||||
/datum/gear/uniform/suit //amish
|
||||
display_name = "suit, amish"
|
||||
path = /obj/item/clothing/under/sl_suit
|
||||
/datum/gear/uniform/suit/lawyer
|
||||
display_name = "suit, one-piece selection"
|
||||
path = /obj/item/clothing/under/lawyer
|
||||
|
||||
/datum/gear/uniform/suit/black
|
||||
display_name = "suit, black"
|
||||
/datum/gear/uniform/suit/lawyer/New()
|
||||
..()
|
||||
var/list/lsuits = list()
|
||||
for(var/lsuit in typesof(/obj/item/clothing/under/lawyer))
|
||||
var/obj/item/clothing/suit/lsuit_type = lsuit
|
||||
lsuits[initial(lsuit_type.name)] = lsuit_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(lsuits))
|
||||
|
||||
/datum/gear/uniform/suit/suit_jacket
|
||||
display_name = "suit, modular selection"
|
||||
path = /obj/item/clothing/under/suit_jacket
|
||||
|
||||
/datum/gear/uniform/suit/shinyblack
|
||||
display_name = "suit, shiny-black"
|
||||
path = /obj/item/clothing/under/lawyer/black
|
||||
/datum/gear/uniform/suit/suit_jacket/New()
|
||||
..()
|
||||
var/list/msuits = list()
|
||||
for(var/msuit in typesof(/obj/item/clothing/under/suit_jacket))
|
||||
var/obj/item/clothing/suit/msuit_type = msuit
|
||||
msuits[initial(msuit_type.name)] = msuit_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(msuits))
|
||||
|
||||
/datum/gear/uniform/suit/blue
|
||||
display_name = "suit, blue"
|
||||
path = /obj/item/clothing/under/lawyer/blue
|
||||
|
||||
/datum/gear/uniform/suit/burgundy
|
||||
display_name = "suit, burgundy"
|
||||
path = /obj/item/clothing/under/suit_jacket/burgundy
|
||||
|
||||
/datum/gear/uniform/suit/checkered
|
||||
display_name = "suit, checkered"
|
||||
path = /obj/item/clothing/under/suit_jacket/checkered
|
||||
|
||||
/datum/gear/uniform/suit/charcoal
|
||||
display_name = "suit, charcoal"
|
||||
path = /obj/item/clothing/under/suit_jacket/charcoal
|
||||
|
||||
/datum/gear/uniform/suit/exec
|
||||
display_name = "suit, executive"
|
||||
path = /obj/item/clothing/under/suit_jacket/really_black
|
||||
|
||||
/datum/gear/uniform/suit/femaleexec
|
||||
display_name = "suit, female-executive"
|
||||
path = /obj/item/clothing/under/suit_jacket/female
|
||||
/datum/gear/uniform/suit/amish //amish
|
||||
display_name = "suit, amish"
|
||||
path = /obj/item/clothing/under/sl_suit
|
||||
|
||||
/datum/gear/uniform/suit/gentle
|
||||
display_name = "suit, gentlemen"
|
||||
path = /obj/item/clothing/under/gentlesuit
|
||||
|
||||
/datum/gear/uniform/suit/navy
|
||||
display_name = "suit, navy"
|
||||
path = /obj/item/clothing/under/suit_jacket/navy
|
||||
|
||||
/datum/gear/uniform/suit/red
|
||||
display_name = "suit, red"
|
||||
path = /obj/item/clothing/under/suit_jacket/red
|
||||
|
||||
/datum/gear/uniform/suit/redlawyer
|
||||
display_name = "suit, lawyer-red"
|
||||
path = /obj/item/clothing/under/lawyer/red
|
||||
|
||||
/datum/gear/uniform/suit/oldman
|
||||
display_name = "suit, old-man"
|
||||
path = /obj/item/clothing/under/lawyer/oldman
|
||||
|
||||
/datum/gear/uniform/suit/purple
|
||||
display_name = "suit, purple"
|
||||
path = /obj/item/clothing/under/lawyer/purpsuit
|
||||
|
||||
/datum/gear/uniform/suit/tan
|
||||
display_name = "suit, tan"
|
||||
path = /obj/item/clothing/under/suit_jacket/tan
|
||||
/datum/gear/uniform/suit/gentleskirt
|
||||
display_name = "suit, lady"
|
||||
path = /obj/item/clothing/under/gentlesuit/skirt
|
||||
|
||||
/datum/gear/uniform/suit/white
|
||||
display_name = "suit, white"
|
||||
path = /obj/item/clothing/under/scratch
|
||||
|
||||
/datum/gear/uniform/suit/whiteblue
|
||||
display_name = "suit, white-blue"
|
||||
path = /obj/item/clothing/under/lawyer/bluesuit
|
||||
/datum/gear/uniform/suit/whiteskirt
|
||||
display_name = "suit, white skirt"
|
||||
path = /obj/item/clothing/under/scratch/skirt
|
||||
|
||||
/datum/gear/uniform/scrubs
|
||||
display_name = "scrubs, black"
|
||||
path = /obj/item/clothing/under/rank/medical/black
|
||||
/datum/gear/uniform/suit/detectiveskirt
|
||||
display_name = "suit, detective skirt (Detective)"
|
||||
path = /obj/item/clothing/under/det/skirt
|
||||
allowed_roles = list("Detective")
|
||||
|
||||
/datum/gear/uniform/suit/iaskirt
|
||||
display_name = "suit, Internal Affairs skirt (Internal Affairs)"
|
||||
path = /obj/item/clothing/under/rank/internalaffairs/skirt
|
||||
allowed_roles = list("Internal Affairs Agent")
|
||||
|
||||
/datum/gear/uniform/suit/bartenderskirt
|
||||
display_name = "suit, bartender skirt (Bartender)"
|
||||
path = /obj/item/clothing/under/rank/bartender/skirt
|
||||
allowed_roles = list("Bartender")
|
||||
|
||||
/datum/gear/uniform/scrub
|
||||
display_name = "scrubs selection"
|
||||
path = /obj/item/clothing/under/rank/medical/scrubs
|
||||
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Roboticist")
|
||||
|
||||
/datum/gear/uniform/scrubs/blue
|
||||
display_name = "scrubs, blue"
|
||||
path = /obj/item/clothing/under/rank/medical/blue
|
||||
/datum/gear/uniform/scrub/New()
|
||||
..()
|
||||
var/list/scrubs = list()
|
||||
for(var/scrub in typesof(/obj/item/clothing/under/rank/medical/scrubs))
|
||||
var/obj/item/clothing/under/rank/medical/scrubs/scrub_type = scrub
|
||||
scrubs[initial(scrub_type.name)] = scrub_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(scrubs))
|
||||
|
||||
/datum/gear/uniform/scrubs/purple
|
||||
display_name = "scrubs, purple"
|
||||
path = /obj/item/clothing/under/rank/medical/purple
|
||||
|
||||
/datum/gear/uniform/scrubs/green
|
||||
display_name = "scrubs, green"
|
||||
path = /obj/item/clothing/under/rank/medical/green
|
||||
|
||||
/datum/gear/uniform/scrubs/navyblue
|
||||
display_name = "scrubs, navy blue"
|
||||
path = /obj/item/clothing/under/rank/medical/navyblue
|
||||
/datum/gear/uniform/oldwoman
|
||||
display_name = "old woman attire"
|
||||
path = /obj/item/clothing/under/oldwoman
|
||||
|
||||
/datum/gear/uniform/sundress
|
||||
display_name = "sundress"
|
||||
@@ -382,6 +368,10 @@
|
||||
display_name = "maid uniform"
|
||||
path = /obj/item/clothing/under/dress/janimaid
|
||||
|
||||
/datum/gear/uniform/dresses/sexymaid
|
||||
display_name = "sexy maid uniform"
|
||||
path = /obj/item/clothing/under/dress/sexymaid
|
||||
|
||||
/datum/gear/uniform/pt
|
||||
display_name = "pt uniform"
|
||||
path = /obj/item/clothing/under/pt
|
||||
@@ -452,4 +442,16 @@
|
||||
|
||||
/datum/gear/uniform/yogapants/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/uniform/black_corset
|
||||
display_name = "black corset"
|
||||
path = /obj/item/clothing/under/dress/black_corset
|
||||
|
||||
/datum/gear/uniform/flower_dress
|
||||
display_name = "flower dress"
|
||||
path = /obj/item/clothing/under/dress/flower_dress
|
||||
|
||||
/datum/gear/uniform/red_swept_dress
|
||||
display_name = "red swept dress"
|
||||
path = /obj/item/clothing/under/dress/red_swept_dress
|
||||
|
||||
@@ -87,3 +87,16 @@
|
||||
display_name = "universal translator"
|
||||
path = /obj/item/device/universal_translator
|
||||
cost = 8
|
||||
|
||||
/datum/gear/utility/pen
|
||||
display_name = "Fountain Pen"
|
||||
path = /obj/item/weapon/pen/fountain
|
||||
|
||||
/datum/gear/utility/wheelchair/color
|
||||
display_name = "wheelchair"
|
||||
path = /obj/item/wheelchair
|
||||
cost = 4
|
||||
|
||||
/datum/gear/utility/wheelchair/color/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
@@ -83,31 +83,47 @@
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/uniform/teshari
|
||||
display_name = "smock, grey (Teshari)"
|
||||
path = /obj/item/clothing/under/seromi
|
||||
/datum/gear/uniform/smock
|
||||
display_name = "smock selection (Teshari)"
|
||||
path = /obj/item/clothing/under/seromi/smock
|
||||
whitelisted = "Teshari"
|
||||
sort_category = "Xenowear"
|
||||
|
||||
/datum/gear/uniform/teshari/jumpsuit
|
||||
display_name = "smock, yellow (Teshari)"
|
||||
path = /obj/item/clothing/under/seromi/yellow
|
||||
/datum/gear/uniform/smock/New()
|
||||
..()
|
||||
var/list/smocks = list()
|
||||
for(var/smock in typesof(/obj/item/clothing/under/seromi/smock))
|
||||
var/obj/item/clothing/under/seromi/smock/smock_type = smock
|
||||
smocks[initial(smock_type.name)] = smock_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(smocks))
|
||||
|
||||
/datum/gear/uniform/teshari/jumpsuit/red
|
||||
display_name = "smock, red (Teshari)"
|
||||
path = /obj/item/clothing/under/seromi/red
|
||||
/datum/gear/uniform/undercoat
|
||||
display_name = "undercoat selection (Teshari)"
|
||||
path = /obj/item/clothing/under/seromi/undercoat
|
||||
whitelisted = "Teshari"
|
||||
sort_category = "Xenowear"
|
||||
|
||||
/datum/gear/uniform/teshari/jumpsuit/white
|
||||
display_name = "smock, white (Teshari)"
|
||||
path = /obj/item/clothing/under/seromi/white
|
||||
/datum/gear/uniform/undercoat/New()
|
||||
..()
|
||||
var/list/undercoats = list()
|
||||
for(var/undercoat in typesof(/obj/item/clothing/under/seromi/undercoat))
|
||||
var/obj/item/clothing/under/seromi/undercoat/undercoat_type = undercoat
|
||||
undercoats[initial(undercoat_type.name)] = undercoat_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(undercoats))
|
||||
|
||||
/datum/gear/uniform/teshari/jumpsuit/medical
|
||||
display_name = "smock, Medical (Teshari)"
|
||||
path = /obj/item/clothing/under/seromi/medical
|
||||
/datum/gear/suit/cloak
|
||||
display_name = "cloak selection (Teshari)"
|
||||
path = /obj/item/clothing/suit/storage/seromi/cloak
|
||||
whitelisted = "Teshari"
|
||||
sort_category = "Xenowear"
|
||||
|
||||
/datum/gear/uniform/teshari/jumpsuit/rainbow
|
||||
display_name = "smock, rainbow (Teshari)"
|
||||
path = /obj/item/clothing/under/seromi/rainbow
|
||||
/datum/gear/suit/cloak/New()
|
||||
..()
|
||||
var/list/cloaks = list()
|
||||
for(var/cloak in typesof(/obj/item/clothing/suit/storage/seromi/cloak))
|
||||
var/obj/item/clothing/suit/storage/seromi/cloak/cloak_type = cloak
|
||||
cloaks[initial(cloak_type.name)] = cloak_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(cloaks))
|
||||
|
||||
/datum/gear/mask/ipc_monitor
|
||||
display_name = "display monitor (Full Body Prosthetic)"
|
||||
|
||||
@@ -76,7 +76,7 @@ datum/preferences
|
||||
var/job_engsec_low = 0
|
||||
|
||||
//Keeps track of preferrence for not getting any wanted jobs
|
||||
var/alternate_option = 0
|
||||
var/alternate_option = 1
|
||||
|
||||
var/used_skillpoints = 0
|
||||
var/skill_specialization = null
|
||||
|
||||
@@ -16,9 +16,11 @@ var/global/list/seen_religions = list()
|
||||
var/global/list/citizenship_choices = list(
|
||||
"Earth",
|
||||
"Mars",
|
||||
"Sif",
|
||||
"Binma",
|
||||
"Moghes",
|
||||
"Meralar",
|
||||
"Qerrbalak"
|
||||
"Qerr'balak"
|
||||
)
|
||||
|
||||
var/global/list/home_system_choices = list(
|
||||
@@ -26,7 +28,7 @@ var/global/list/home_system_choices = list(
|
||||
"Vir",
|
||||
"Nyx",
|
||||
"Tau Ceti",
|
||||
"Qerr'Vallis",
|
||||
"Qerr'valis",
|
||||
"Epsilon Ursae Minoris",
|
||||
"Rarkajar"
|
||||
)
|
||||
@@ -42,7 +44,9 @@ var/global/list/faction_choices = list(
|
||||
"Grayson Manufactories Ltd.",
|
||||
"Aether Atmospherics",
|
||||
"Zeng-Hu Pharmaceuticals",
|
||||
"Hesphaistos Industries"
|
||||
"Hephaestus Industries",
|
||||
"Morpheus Cyberkinetics",
|
||||
"Xion Manufacturing Group"
|
||||
)
|
||||
|
||||
var/global/list/antag_faction_choices = list() //Should be populated after brainstorming. Leaving as blank in case brainstorming does not occur.
|
||||
@@ -57,8 +61,8 @@ var/global/list/religion_choices = list(
|
||||
"Unitarianism",
|
||||
"Hinduism",
|
||||
"Buddhist",
|
||||
"Islamic",
|
||||
"Christian",
|
||||
"Agnostic",
|
||||
"Deist"
|
||||
"Islam",
|
||||
"Christianity",
|
||||
"Agnosticism",
|
||||
"Deism"
|
||||
)
|
||||
@@ -22,9 +22,12 @@ var/list/spawntypes = list()
|
||||
|
||||
return 1
|
||||
|
||||
/datum/spawnpoint/proc/get_spawn_position()
|
||||
return get_turf(pick(turfs))
|
||||
|
||||
/datum/spawnpoint/arrivals
|
||||
display_name = "Arrivals Shuttle"
|
||||
msg = "has arrived on the station"
|
||||
msg = "will arrive to the station shortly by shuttle"
|
||||
|
||||
/datum/spawnpoint/arrivals/New()
|
||||
..()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/client/proc/handle_spam_prevention(var/mute_type = MUTE_ALL, var/spam_delay = 0.5 SECONDS)
|
||||
if(world.time - last_message_time < spam_delay)
|
||||
spam_alert++
|
||||
if(spam_alert > 3)
|
||||
if(spam_alert > 5)
|
||||
cmd_admin_mute(src.mob, mute_type, 1)
|
||||
else
|
||||
spam_alert = max(0, spam_alert--)
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
"old" = 'icons/mob/screen/old.dmi',
|
||||
"White" = 'icons/mob/screen/white.dmi',
|
||||
"old-noborder" = 'icons/mob/screen/old-noborder.dmi',
|
||||
"minimalist" = 'icons/mob/screen/minimalist.dmi'
|
||||
"minimalist" = 'icons/mob/screen/minimalist.dmi',
|
||||
"Hologram" = 'icons/mob/screen/holo.dmi'
|
||||
)
|
||||
|
||||
/var/all_ui_styles_robot = list(
|
||||
@@ -15,7 +16,8 @@
|
||||
"old" = 'icons/mob/screen1_robot.dmi',
|
||||
"White" = 'icons/mob/screen1_robot.dmi',
|
||||
"old-noborder" = 'icons/mob/screen1_robot.dmi',
|
||||
"minimalist" = 'icons/mob/screen1_robot_minimalist.dmi'
|
||||
"minimalist" = 'icons/mob/screen1_robot_minimalist.dmi',
|
||||
"Hologram" = 'icons/mob/screen1_robot_minimalist.dmi'
|
||||
)
|
||||
|
||||
/proc/ui_style2icon(ui_style)
|
||||
|
||||
@@ -408,6 +408,7 @@
|
||||
projectile_type = /obj/item/projectile/chameleon
|
||||
charge_meter = 0
|
||||
charge_cost = 48 //uses next to no power, since it's just holograms
|
||||
battery_lock = 1
|
||||
|
||||
var/obj/item/projectile/copy_projectile
|
||||
var/global/list/gun_choices
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
//Set species_restricted list
|
||||
switch(target_species)
|
||||
if("Human", "Skrell") //humanoid bodytypes
|
||||
species_restricted = list("Human", "Skrell") //skrell/humans can wear each other's suits
|
||||
species_restricted = list("Human", "Skrell", "Promethean") //skrell/humans can wear each other's suits
|
||||
else
|
||||
species_restricted = list(target_species)
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
//Set species_restricted list
|
||||
switch(target_species)
|
||||
if("Skrell")
|
||||
species_restricted = list("Human", "Skrell") //skrell helmets fit humans too
|
||||
species_restricted = list("Human", "Skrell", "Promethean") //skrell helmets fit humans too
|
||||
|
||||
else
|
||||
species_restricted = list(target_species)
|
||||
@@ -184,6 +184,7 @@
|
||||
var/wired = 0
|
||||
var/obj/item/weapon/cell/cell = 0
|
||||
var/overgloves = 0
|
||||
var/fingerprint_chance = 0 //How likely the glove is to let fingerprints through
|
||||
body_parts_covered = HANDS
|
||||
slot_flags = SLOT_GLOVES
|
||||
attack_verb = list("challenged")
|
||||
@@ -213,8 +214,8 @@
|
||||
update_icon()
|
||||
return
|
||||
|
||||
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
|
||||
user.visible_message("\red [user] cuts the fingertips off of the [src].","\red You cut the fingertips off of the [src].")
|
||||
playsound(src.loc, W.usesound, 50, 1)
|
||||
user.visible_message("<font color='red'>[user] cuts the fingertips off of the [src].</font>","<font color='red'>You cut the fingertips off of the [src].</font>")
|
||||
|
||||
clipped = 1
|
||||
name = "modified [name]"
|
||||
|
||||
@@ -51,7 +51,7 @@ BLIND // can't see anything
|
||||
user.update_action_buttons()
|
||||
|
||||
/obj/item/clothing/glasses/meson
|
||||
name = "Optical Meson Scanner"
|
||||
name = "optical meson scanner"
|
||||
desc = "Used for seeing walls, floors, and stuff through anything."
|
||||
icon_state = "meson"
|
||||
item_state_slots = list(slot_r_hand_str = "meson", slot_l_hand_str = "meson")
|
||||
@@ -70,7 +70,7 @@ BLIND // can't see anything
|
||||
prescription = 1
|
||||
|
||||
/obj/item/clothing/glasses/meson/aviator
|
||||
name = "Engineering Aviators"
|
||||
name = "engineering aviators"
|
||||
icon_state = "aviator_eng"
|
||||
off_state = "aviator"
|
||||
item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses")
|
||||
@@ -78,7 +78,7 @@ BLIND // can't see anything
|
||||
activation_sound = 'sound/effects/pop.ogg'
|
||||
|
||||
/obj/item/clothing/glasses/meson/aviator/prescription
|
||||
name = "Prescription Engineering Aviators"
|
||||
name = "prescription engineering aviators"
|
||||
desc = "Engineering Aviators with prescription lenses."
|
||||
prescription = 1
|
||||
|
||||
@@ -89,13 +89,22 @@ BLIND // can't see anything
|
||||
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
|
||||
toggleable = 1
|
||||
action_button_name = "Toggle Goggles"
|
||||
item_flags = AIRTIGHT
|
||||
|
||||
/obj/item/clothing/glasses/science/New()
|
||||
..()
|
||||
overlay = global_hud.science
|
||||
|
||||
/obj/item/clothing/glasses/goggles
|
||||
name = "goggles"
|
||||
desc = "Just some plain old goggles."
|
||||
icon_state = "plaingoggles"
|
||||
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
|
||||
item_flags = AIRTIGHT
|
||||
body_parts_covered = EYES
|
||||
|
||||
/obj/item/clothing/glasses/night
|
||||
name = "Night Vision Goggles"
|
||||
name = "night vision goggles"
|
||||
desc = "You can totally see in the dark now!"
|
||||
icon_state = "night"
|
||||
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
|
||||
@@ -132,7 +141,7 @@ BLIND // can't see anything
|
||||
|
||||
eye = !eye
|
||||
if(eye)
|
||||
icon_state = "[icon_state]_r"
|
||||
icon_state = "[icon_state]_1"
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
update_clothing_icon()
|
||||
@@ -145,7 +154,7 @@ BLIND // can't see anything
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/glasses/material
|
||||
name = "Optical Material Scanner"
|
||||
name = "optical material scanner"
|
||||
desc = "Very confusing glasses."
|
||||
icon_state = "material"
|
||||
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
|
||||
@@ -154,8 +163,12 @@ BLIND // can't see anything
|
||||
action_button_name = "Toggle Goggles"
|
||||
vision_flags = SEE_OBJS
|
||||
|
||||
/obj/item/clothing/glasses/material/prescription
|
||||
name = "prescription optical material scanner"
|
||||
prescription = 1
|
||||
|
||||
/obj/item/clothing/glasses/regular
|
||||
name = "Prescription Glasses"
|
||||
name = "prescription glasses"
|
||||
desc = "Made by Nerd. Co."
|
||||
icon_state = "glasses"
|
||||
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
|
||||
@@ -163,12 +176,12 @@ BLIND // can't see anything
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/glasses/regular/scanners
|
||||
name = "Scanning Goggles"
|
||||
name = "scanning goggles"
|
||||
desc = "A very oddly shaped pair of goggles with bits of wire poking out the sides. A soft humming sound emanates from it."
|
||||
icon_state = "uzenwa_sissra_1"
|
||||
|
||||
/obj/item/clothing/glasses/regular/hipster
|
||||
name = "Prescription Glasses"
|
||||
name = "prescription glasses"
|
||||
desc = "Made by Uncool. Co."
|
||||
icon_state = "hipster_glasses"
|
||||
|
||||
@@ -180,15 +193,15 @@ BLIND // can't see anything
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/glasses/gglasses
|
||||
name = "Green Glasses"
|
||||
name = "green glasses"
|
||||
desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme."
|
||||
icon_state = "gglasses"
|
||||
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses
|
||||
desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes."
|
||||
name = "sunglasses"
|
||||
desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes."
|
||||
icon_state = "sun"
|
||||
item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses")
|
||||
darkness_view = -1
|
||||
@@ -200,6 +213,7 @@ BLIND // can't see anything
|
||||
item_state_slots = list(slot_r_hand_str = "welding-g", slot_l_hand_str = "welding-g")
|
||||
action_button_name = "Flip Welding Goggles"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 1500, "glass" = 1000)
|
||||
item_flags = AIRTIGHT
|
||||
var/up = 0
|
||||
|
||||
/obj/item/clothing/glasses/welding/attack_self()
|
||||
@@ -266,7 +280,7 @@ BLIND // can't see anything
|
||||
icon_state = "aviator"
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/sechud
|
||||
name = "HUDSunglasses"
|
||||
name = "\improper HUD sunglasses"
|
||||
desc = "Sunglasses with a HUD."
|
||||
icon_state = "sunSecHud"
|
||||
var/obj/item/clothing/glasses/hud/security/hud = null
|
||||
@@ -282,7 +296,7 @@ BLIND // can't see anything
|
||||
icon_state = "swatgoggles"
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/sechud/aviator
|
||||
name = "Security HUD aviators"
|
||||
name = "security HUD aviators"
|
||||
desc = "Modified aviator glasses that can be switch between HUD and flash protection modes."
|
||||
icon_state = "aviator_sec"
|
||||
off_state = "aviator"
|
||||
@@ -324,12 +338,12 @@ BLIND // can't see anything
|
||||
icon_state = off_state
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/sechud/aviator/prescription
|
||||
name = "Prescription Security HUD aviators"
|
||||
name = "prescription security HUD aviators"
|
||||
desc = "Modified aviator glasses that can be switch between HUD and flash protection modes. Comes with bonus prescription lenses."
|
||||
prescription = 6
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/medhud
|
||||
name = "HUDSunglasses"
|
||||
name = "\improper HUD sunglasses"
|
||||
desc = "Sunglasses with a HUD."
|
||||
icon_state = "sunMedHud"
|
||||
var/obj/item/clothing/glasses/hud/health/hud = null
|
||||
@@ -340,7 +354,7 @@ BLIND // can't see anything
|
||||
return
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/medhud/aviator
|
||||
name = "Medical HUD aviators"
|
||||
name = "medical HUD aviators"
|
||||
desc = "Modified aviator glasses with a toggled health HUD."
|
||||
icon_state = "aviator_med"
|
||||
off_state = "aviator"
|
||||
@@ -382,12 +396,12 @@ BLIND // can't see anything
|
||||
icon_state = off_state
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/medhud/aviator/prescription
|
||||
name = "Prescription Medical HUD aviators"
|
||||
name = "prescription medical HUD aviators"
|
||||
desc = "Modified aviator glasses with a toggled health HUD. Comes with bonus prescription lenses."
|
||||
prescription = 6
|
||||
|
||||
/obj/item/clothing/glasses/thermal
|
||||
name = "Optical Thermal Scanner"
|
||||
name = "optical thermal scanner"
|
||||
desc = "Thermals in the shape of glasses."
|
||||
icon_state = "thermal"
|
||||
item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses")
|
||||
@@ -395,12 +409,13 @@ BLIND // can't see anything
|
||||
toggleable = 1
|
||||
action_button_name = "Toggle Goggles"
|
||||
vision_flags = SEE_MOBS
|
||||
see_invisible = INVISIBILITY_LEVEL_TWO
|
||||
see_invisible = SEE_INVISIBLE_NOLIGHTING
|
||||
|
||||
|
||||
emp_act(severity)
|
||||
if(istype(src.loc, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/M = src.loc
|
||||
M << "\red The Optical Thermal Scanner overloads and blinds you!"
|
||||
M << "<font color='red'>The Optical Thermal Scanner overloads and blinds you!</font>"
|
||||
if(M.glasses == src)
|
||||
M.Blind(3)
|
||||
M.eye_blurry = 5
|
||||
@@ -416,7 +431,7 @@ BLIND // can't see anything
|
||||
overlay = global_hud.thermal
|
||||
|
||||
/obj/item/clothing/glasses/thermal/syndi //These are now a traitor item, concealed as mesons. -Pete
|
||||
name = "Optical Meson Scanner"
|
||||
name = "optical meson scanner"
|
||||
desc = "Used for seeing walls, floors, and stuff through anything."
|
||||
icon_state = "meson"
|
||||
item_state_slots = list(slot_r_hand_str = "meson", slot_l_hand_str = "meson")
|
||||
@@ -428,7 +443,7 @@ BLIND // can't see anything
|
||||
action_button_name = null
|
||||
|
||||
/obj/item/clothing/glasses/thermal/plain/monocle
|
||||
name = "Thermoncle"
|
||||
name = "thermonocle"
|
||||
desc = "A monocle thermal."
|
||||
icon_state = "thermoncle"
|
||||
item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses")
|
||||
@@ -439,7 +454,7 @@ BLIND // can't see anything
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/glasses/thermal/plain/eyepatch
|
||||
name = "Optical Thermal Eyepatch"
|
||||
name = "optical thermal eyepatch"
|
||||
desc = "An eyepatch with built-in thermal optics"
|
||||
icon_state = "eyepatch"
|
||||
item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold")
|
||||
@@ -448,7 +463,7 @@ BLIND // can't see anything
|
||||
action_button_name = "Toggle Eyepatch"
|
||||
|
||||
/obj/item/clothing/glasses/thermal/plain/jensen
|
||||
name = "Optical Thermal Implants"
|
||||
name = "optical thermal implants"
|
||||
desc = "A set of implantable lenses designed to augment your vision"
|
||||
icon_state = "thermalimplants"
|
||||
item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses")
|
||||
@@ -82,3 +82,9 @@
|
||||
min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
heat_protection = HANDS
|
||||
max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
|
||||
obj/item/clothing/gloves/fingerless
|
||||
desc = "A pair of gloves that don't actually cover the fingers."
|
||||
name = "fingerless gloves"
|
||||
icon_state = "fingerlessgloves"
|
||||
fingerprint_chance = 100
|
||||
@@ -27,7 +27,7 @@
|
||||
/obj/item/clothing/gloves/swat
|
||||
desc = "These tactical gloves are somewhat fire and impact-resistant."
|
||||
name = "\improper SWAT Gloves"
|
||||
icon_state = "black"
|
||||
icon_state = "swat"
|
||||
item_state = "swat"
|
||||
siemens_coefficient = 0.50
|
||||
permeability_coefficient = 0.05
|
||||
@@ -39,7 +39,7 @@
|
||||
/obj/item/clothing/gloves/combat //Combined effect of SWAT gloves and insulated gloves
|
||||
desc = "These tactical gloves are somewhat fire and impact resistant."
|
||||
name = "combat gloves"
|
||||
icon_state = "black"
|
||||
icon_state = "swat"
|
||||
item_state = "swat"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
@@ -56,6 +56,7 @@
|
||||
siemens_coefficient = 1.0 //thin latex gloves, much more conductive than fabric gloves (basically a capacitor for AC)
|
||||
permeability_coefficient = 0.01
|
||||
germ_level = 0
|
||||
fingerprint_chance = 25
|
||||
// var/balloonPath = /obj/item/latexballon
|
||||
|
||||
//TODO: Make inflating gloves a thing
|
||||
|
||||
@@ -67,8 +67,8 @@
|
||||
item_state_slots = list(slot_r_hand_str = "beret_navy", slot_l_hand_str = "beret_navy")
|
||||
|
||||
/obj/item/clothing/head/beret/sec/navy/hos
|
||||
name = "officer beret"
|
||||
desc = "A navy blue beret with a head of security's rank emblem. For officers that are more inclined towards style than safety."
|
||||
name = "Head of Security beret"
|
||||
desc = "A navy blue beret with a Head of Security's rank emblem. For officers that are more inclined towards style than safety."
|
||||
icon_state = "beret_navy_hos"
|
||||
item_state_slots = list(slot_r_hand_str = "beret_navy", slot_l_hand_str = "beret_navy")
|
||||
|
||||
@@ -85,8 +85,8 @@
|
||||
item_state_slots = list(slot_r_hand_str = "beret_black", slot_l_hand_str = "beret_black")
|
||||
|
||||
/obj/item/clothing/head/beret/sec/corporate/hos
|
||||
name = "officer beret"
|
||||
desc = "A corporate black beret with a head of security's rank emblem. For officers that are more inclined towards style than safety."
|
||||
name = "Head of Security beret"
|
||||
desc = "A corporate black beret with a Head of Security's rank emblem. For officers that are more inclined towards style than safety."
|
||||
icon_state = "beret_corporate_hos"
|
||||
item_state_slots = list(slot_r_hand_str = "beret_black", slot_l_hand_str = "beret_black")
|
||||
|
||||
@@ -188,4 +188,4 @@
|
||||
/obj/item/clothing/head/surgery/navyblue
|
||||
desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is navy blue."
|
||||
icon_state = "surgcap_navyblue"
|
||||
item_state_slots = list(slot_r_hand_str = "beret_navy", slot_l_hand_str = "beret_navy")
|
||||
item_state_slots = list(slot_r_hand_str = "beret_navy", slot_l_hand_str = "beret_navy")
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
siemens_coefficient = 0.9 //...what?
|
||||
|
||||
/obj/item/clothing/head/flatcap/grey
|
||||
icon_state = "flat_capg"
|
||||
icon_state = "flat_capw"
|
||||
item_state_slots = list(slot_r_hand_str = "greysoft", slot_l_hand_str = "greysoft")
|
||||
|
||||
/obj/item/clothing/head/pirate
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
/obj/item/clothing/head/soft/sol/expedition
|
||||
name = "\improper SifGuard cap"
|
||||
desc = "It's a black ballcap bearing a Sif Homeguard Corps crest."
|
||||
desc = "It's a black ballcap bearing a Sif Defense Force crest."
|
||||
icon_state = "expeditionsoft"
|
||||
item_state_slots = list(
|
||||
slot_l_hand_str = "blacksoft",
|
||||
@@ -115,12 +115,12 @@
|
||||
|
||||
/obj/item/clothing/head/dress/expedition
|
||||
name = "\improper SifGuard dress cap"
|
||||
desc = "A peaked grey dress uniform cap belonging to the Sif Homeguard Corps."
|
||||
desc = "A peaked grey dress uniform cap belonging to the Sif Defense Force."
|
||||
icon_state = "greydresscap"
|
||||
|
||||
/obj/item/clothing/head/dress/expedition/command
|
||||
name = "\improper SifGuard command dress cap"
|
||||
desc = "A peaked grey dress uniform cap belonging to the Sif Homeguard Corps. This one is trimmed in gold."
|
||||
desc = "A peaked grey dress uniform cap belonging to the Sif Defense Force. This one is trimmed in gold."
|
||||
icon_state = "greydresscap_com"
|
||||
|
||||
/obj/item/clothing/head/dress/fleet
|
||||
@@ -150,11 +150,6 @@
|
||||
desc = "A beret in Solar Confederate Government colors. For peacekeepers that are more inclined towards style than safety."
|
||||
icon_state = "beret_lightblue"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/homeguard
|
||||
name = "home guard beret"
|
||||
desc = "A red beret denoting service in the Sol Home Guard. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_red"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/gateway
|
||||
name = "gateway administration beret"
|
||||
desc = "An orange beret denoting service in the Gateway Administration. For personnel that are more inclined towards style than safety."
|
||||
@@ -182,32 +177,32 @@
|
||||
|
||||
/obj/item/clothing/head/beret/sol/expedition
|
||||
name = "\improper SifGuard beret"
|
||||
desc = "A black beret belonging to the Sif Homeguard Corps. For personnel that are more inclined towards style than safety."
|
||||
desc = "A black beret belonging to the Sif Defense Force. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_black"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/expedition/security
|
||||
name = "\improper SifGuard security beret"
|
||||
desc = "An Sif Homeguard Corps beret with a security crest. For personnel that are more inclined towards style than safety."
|
||||
desc = "A Sif Defense Force beret with a security crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_black_security"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/expedition/medical
|
||||
name = "\improper SifGuard medical beret"
|
||||
desc = "An Sif Homeguard Corps beret with a medical crest. For personnel that are more inclined towards style than safety."
|
||||
desc = "A Sif Defense Force beret with a medical crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_black_medical"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/expedition/engineering
|
||||
name = "\improper SifGuard engineering beret"
|
||||
desc = "An Sif Homeguard Corps beret with an engineering crest. For personnel that are more inclined towards style than safety."
|
||||
desc = "A Sif Defense Force beret with an engineering crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_black_engineering"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/expedition/supply
|
||||
name = "\improper SifGuard supply beret"
|
||||
desc = "An Sif Homeguard Corps beret with a supply crest. For personnel that are more inclined towards style than safety."
|
||||
desc = "A Sif Defense Force beret with a supply crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_black_supply"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/expedition/command
|
||||
name = "\improper SifGuard command beret"
|
||||
desc = "An Sif Homeguard Corps beret with a command crest. For personnel that are more inclined towards style than safety."
|
||||
desc = "A Sif Defense Force beret with a command crest. For personnel that are more inclined towards style than safety."
|
||||
icon_state = "beret_black_command"
|
||||
|
||||
/obj/item/clothing/head/beret/sol/fleet
|
||||
|
||||
@@ -104,9 +104,9 @@
|
||||
flags_inv = HIDEEARS|HIDEFACE
|
||||
item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime")
|
||||
|
||||
/obj/item/clothing/mask/gas/death_commando
|
||||
name = "Death Commando Mask"
|
||||
icon_state = "death_commando_mask"
|
||||
/obj/item/clothing/mask/gas/commando
|
||||
name = "commando mask"
|
||||
icon_state = "fullgas"
|
||||
item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat")
|
||||
siemens_coefficient = 0.2
|
||||
|
||||
|
||||
@@ -47,6 +47,52 @@
|
||||
heat_protection = FEET|LEGS
|
||||
max_heat_protection_temperature = SHOE_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
|
||||
/obj/item/clothing/shoes/boots/winter/security
|
||||
name = "security winter boots"
|
||||
desc = "A pair of winter boots. These ones are lined with grey fur, and coloured an angry red."
|
||||
icon_state = "winterboots_sec"
|
||||
armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/shoes/boots/winter/science
|
||||
name = "science winter boots"
|
||||
desc = "A pair of winter boots. These ones are lined with white fur, and are trimmed with scientific advancement!"
|
||||
icon_state = "winterboots_sci"
|
||||
|
||||
/obj/item/clothing/shoes/boots/winter/command
|
||||
name = "colony director's winter boots"
|
||||
desc = "A pair of winter boots. They're lined with dark fur, and trimmed in the colours of superiority."
|
||||
icon_state = "winterboots_cap"
|
||||
|
||||
/obj/item/clothing/shoes/boots/winter/engineering
|
||||
name = "engineering winter boots"
|
||||
desc = "A pair of winter boots. These ones are lined with orange fur and are trimmed in the colours of disaster."
|
||||
icon_state = "winterboots_eng"
|
||||
|
||||
/obj/item/clothing/shoes/boots/winter/atmos
|
||||
name = "atmospherics winter boots"
|
||||
desc = "A pair of winter boots. These ones are lined with beige fur, and are trimmed in breath taking colours."
|
||||
icon_state = "winterboots_atmos"
|
||||
|
||||
/obj/item/clothing/shoes/boots/winter/medical
|
||||
name = "medical winter boots"
|
||||
desc = "A pair of winter boots. These ones are lined with white fur, and are trimmed like 30cc of dexalin"
|
||||
icon_state = "winterboots_med"
|
||||
|
||||
/obj/item/clothing/shoes/boots/winter/mining
|
||||
name = "mining winter boots"
|
||||
desc = "A pair of winter boots. These ones are lined with greyish fur, and their trim is golden!"
|
||||
icon_state = "winterboots_mining"
|
||||
|
||||
/obj/item/clothing/shoes/boots/winter/supply
|
||||
name = "supply winter boots"
|
||||
desc = "A pair of winter boots. These ones are lined with the galactic cargonia colors!"
|
||||
icon_state = "winterboots_sup"
|
||||
|
||||
/obj/item/clothing/shoes/boots/winter/hydro
|
||||
name = "hydroponics winter boots"
|
||||
desc = "A pair of winter boots. These ones are lined with brown fur, and their trim is ambrosia green"
|
||||
icon_state = "winterboots_hydro"
|
||||
|
||||
/obj/item/clothing/shoes/boots/tactical
|
||||
name = "tactical boots"
|
||||
desc = "Tan boots with extra padding and armor."
|
||||
|
||||
@@ -123,39 +123,39 @@
|
||||
if (istype(H, /obj/item/weapon/handcuffs))
|
||||
attach_cuffs(H, user)
|
||||
|
||||
/obj/item/clothing/shoes/hightops
|
||||
name = "white high tops"
|
||||
/obj/item/clothing/shoes/hitops
|
||||
name = "white high-tops"
|
||||
desc = "A pair of shoes that extends past the ankle. Based on a centuries-old, timeless design."
|
||||
icon_state = "whitehi"
|
||||
|
||||
/obj/item/clothing/shoes/hightops/red
|
||||
name = "red high tops"
|
||||
/obj/item/clothing/shoes/hitops/red
|
||||
name = "red high-tops"
|
||||
icon_state = "redhi"
|
||||
|
||||
/obj/item/clothing/shoes/hightops/brown
|
||||
name = "brown high tops"
|
||||
/obj/item/clothing/shoes/hitops/brown
|
||||
name = "brown high-tops"
|
||||
icon_state = "brownhi"
|
||||
|
||||
/obj/item/clothing/shoes/hightops/black
|
||||
name = "black high tops"
|
||||
/obj/item/clothing/shoes/hitops/black
|
||||
name = "black high-tops"
|
||||
icon_state = "blackhi"
|
||||
|
||||
/obj/item/clothing/shoes/hightops/orange
|
||||
name = "orange high tops"
|
||||
/obj/item/clothing/shoes/hitops/orange
|
||||
name = "orange high-tops"
|
||||
icon_state = "orangehi"
|
||||
|
||||
/obj/item/clothing/shoes/hightops/blue
|
||||
name = "blue high tops"
|
||||
/obj/item/clothing/shoes/hitops/blue
|
||||
name = "blue high-tops"
|
||||
icon_state = "bluehi"
|
||||
|
||||
/obj/item/clothing/shoes/hightops/green
|
||||
name = "green high tops"
|
||||
/obj/item/clothing/shoes/hitops/green
|
||||
name = "green high-tops"
|
||||
icon_state = "greenhi"
|
||||
|
||||
/obj/item/clothing/shoes/hightops/purple
|
||||
name = "purple high tops"
|
||||
/obj/item/clothing/shoes/hitops/purple
|
||||
name = "purple high-tops"
|
||||
icon_state = "purplehi"
|
||||
|
||||
/obj/item/clothing/shoes/hightops/yellow
|
||||
name = "yellow high tops"
|
||||
/obj/item/clothing/shoes/hitops/yellow
|
||||
name = "yellow high-tops"
|
||||
icon_state = "yellowhi"
|
||||
@@ -34,7 +34,7 @@
|
||||
item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | PHORONGUARD
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank)
|
||||
phoronproof = 1
|
||||
slowdown = 2
|
||||
slowdown = 0.5
|
||||
armor = list(melee = 60, bullet = 50, laser = 40,energy = 15, bomb = 30, bio = 100, rad = 50)
|
||||
siemens_coefficient = 0.2
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
|
||||
@@ -185,10 +185,10 @@ var/global/list/breach_burn_descriptors = list(
|
||||
repair_power = 2
|
||||
if("plastic")
|
||||
repair_power = 1
|
||||
|
||||
|
||||
if(!repair_power)
|
||||
return
|
||||
|
||||
|
||||
if(istype(src.loc,/mob/living))
|
||||
user << "<span class='warning'>How do you intend to patch a hardsuit while someone is wearing it?</span>"
|
||||
return
|
||||
@@ -206,7 +206,7 @@ var/global/list/breach_burn_descriptors = list(
|
||||
else if(istype(W, /obj/item/weapon/weldingtool))
|
||||
|
||||
if(istype(src.loc,/mob/living))
|
||||
user << "\red How do you intend to patch a hardsuit while someone is wearing it?"
|
||||
user << "<font color='red'>How do you intend to patch a hardsuit while someone is wearing it?</font>"
|
||||
return
|
||||
|
||||
if (!damage || ! brute_damage)
|
||||
@@ -215,7 +215,7 @@ var/global/list/breach_burn_descriptors = list(
|
||||
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(!WT.remove_fuel(5))
|
||||
user << "\red You need more welding fuel to repair this suit."
|
||||
user << "<font color='red'>You need more welding fuel to repair this suit.</font>"
|
||||
return
|
||||
|
||||
repair_breaches(BRUTE, 3, user)
|
||||
@@ -227,4 +227,4 @@ var/global/list/breach_burn_descriptors = list(
|
||||
..(user)
|
||||
if(can_breach && breaches && breaches.len)
|
||||
for(var/datum/breach/B in breaches)
|
||||
user << "\red <B>It has \a [B.descriptor].</B>"
|
||||
user << "<font color='red'><B>It has \a [B.descriptor].</B></font>"
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
activates_on_touch = 1
|
||||
|
||||
engage_string = "Eject AI"
|
||||
activate_string = "Enable Dataspike"
|
||||
deactivate_string = "Disable Dataspike"
|
||||
activate_string = "Enable Core Transfer"
|
||||
deactivate_string = "Disable Core Transfer"
|
||||
|
||||
interface_name = "integrated intelligence system"
|
||||
interface_desc = "A socket that supports a range of artificial intelligence systems."
|
||||
@@ -168,7 +168,7 @@
|
||||
if(user)
|
||||
user << "<span class='danger'>You cannot eject your currently stored AI. Purge it manually.</span>"
|
||||
return 0
|
||||
user << "<span class='danger'>You purge the remaining scraps of data from your previous AI, freeing it for use.</span>"
|
||||
user << "<span class='danger'>You purge the previous AI from your Integrated Intelligence System, freeing it for use.</span>"
|
||||
if(integrated_ai)
|
||||
integrated_ai.ghostize()
|
||||
qdel(integrated_ai)
|
||||
|
||||
@@ -183,7 +183,7 @@
|
||||
|
||||
/obj/item/rig_module/self_destruct/New()
|
||||
..()
|
||||
src.smoke = PoolOrNew(/datum/effect/effect/system/smoke_spread/bad)
|
||||
src.smoke = new /datum/effect/effect/system/smoke_spread/bad()
|
||||
src.smoke.attach(src)
|
||||
|
||||
/obj/item/rig_module/self_destruct/Destroy()
|
||||
|
||||
@@ -477,7 +477,7 @@
|
||||
|
||||
for(var/obj/item/weapon/mop_deploy/blade in M.contents)
|
||||
M.drop_from_inventory(blade)
|
||||
del(blade)
|
||||
qdel(blade)
|
||||
|
||||
|
||||
//Space Cleaner Launcher
|
||||
@@ -520,7 +520,7 @@
|
||||
|
||||
user << "<font color='blue'><b>You slot \the [input_device] into the suit module.</b></font>"
|
||||
user.drop_from_inventory(input_device)
|
||||
del(input_device)
|
||||
qdel(input_device)
|
||||
accepted_item.charges++
|
||||
return 1
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
offline_slowdown = 10
|
||||
vision_restriction = 1
|
||||
offline_vision_restriction = 2
|
||||
|
||||
siemens_coefficient = 0.75
|
||||
chest_type = /obj/item/clothing/suit/space/rig/breacher
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/breacher
|
||||
boot_type = /obj/item/clothing/shoes/magboots/rig/breacher
|
||||
@@ -25,6 +25,7 @@
|
||||
icon_state = "breacher_rig"
|
||||
armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 80) //Takes TEN TIMES as much damage to stop someone in a breacher. In exchange, it's slow.
|
||||
vision_restriction = 0
|
||||
siemens_coefficient = 0.2
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/breacher
|
||||
species_restricted = list("Unathi")
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/ert
|
||||
|
||||
req_access = list(access_cent_specops)
|
||||
siemens_coefficient= 0.5
|
||||
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/crowbar, \
|
||||
@@ -30,7 +31,7 @@
|
||||
suit_type = "ERT engineer"
|
||||
icon_state = "ert_engineer_rig"
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
|
||||
siemens_coefficient = 0
|
||||
glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva
|
||||
|
||||
initial_modules = list(
|
||||
/obj/item/rig_module/ai_container,
|
||||
@@ -71,6 +72,8 @@
|
||||
suit_type = "heavy asset protection"
|
||||
icon_state = "asset_protection_rig"
|
||||
armor = list(melee = 60, bullet = 50, laser = 50,energy = 40, bomb = 40, bio = 100, rad = 100)
|
||||
siemens_coefficient= 0.3
|
||||
glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva
|
||||
|
||||
initial_modules = list(
|
||||
/obj/item/rig_module/ai_container,
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
slowdown = 1
|
||||
offline_slowdown = 3
|
||||
offline_vision_restriction = 1
|
||||
|
||||
siemens_coefficient = 0.3
|
||||
glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/merc
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs)
|
||||
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
offline_slowdown = 10
|
||||
offline_vision_restriction = 2
|
||||
emp_protection = -20
|
||||
siemens_coefficient= 0.75
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/industrial
|
||||
|
||||
@@ -92,6 +93,7 @@
|
||||
slowdown = 0
|
||||
offline_slowdown = 1
|
||||
offline_vision_restriction = 1
|
||||
siemens_coefficient= 0.75
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/eva
|
||||
glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva
|
||||
@@ -100,6 +102,7 @@
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/rig/eva
|
||||
name = "insulated gauntlets"
|
||||
@@ -127,6 +130,7 @@
|
||||
slowdown = 0
|
||||
offline_slowdown = 0
|
||||
offline_vision_restriction = 0
|
||||
siemens_coefficient= 0.75
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/ce
|
||||
glove_type = /obj/item/clothing/gloves/gauntlets/rig/ce
|
||||
@@ -135,6 +139,7 @@
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/rig/ce
|
||||
name = "insulated gauntlets"
|
||||
@@ -161,6 +166,7 @@
|
||||
armor = list(melee = 45, bullet = 5, laser = 45, energy = 80, bomb = 60, bio = 100, rad = 100)
|
||||
slowdown = 1
|
||||
offline_vision_restriction = 1
|
||||
siemens_coefficient= 0.75
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/hazmat
|
||||
|
||||
@@ -188,6 +194,7 @@
|
||||
armor = list(melee = 30, bullet = 15, laser = 20, energy = 60, bomb = 30, bio = 100, rad = 100)
|
||||
slowdown = 1
|
||||
offline_vision_restriction = 1
|
||||
siemens_coefficient= 0.75
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/medical
|
||||
|
||||
@@ -217,6 +224,7 @@
|
||||
slowdown = 1
|
||||
offline_slowdown = 3
|
||||
offline_vision_restriction = 1
|
||||
siemens_coefficient= 0.7
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/hazard
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
camera = new /obj/machinery/camera(src)
|
||||
camera.replace_networks(camera_networks)
|
||||
camera.c_tag = user.name
|
||||
user << "\blue User scanned as [camera.c_tag]. Camera activated."
|
||||
user << "<font color='blue'>User scanned as [camera.c_tag]. Camera activated.</font>"
|
||||
user.update_action_buttons()
|
||||
return 1
|
||||
|
||||
@@ -62,10 +62,6 @@
|
||||
|
||||
var/list/supporting_limbs //If not-null, automatically splints breaks. Checked when removing the suit.
|
||||
|
||||
/obj/item/clothing/suit/space/New()
|
||||
..()
|
||||
desc += " \"[using_map.station_short]\" is written in large block letters on the back."
|
||||
|
||||
/obj/item/clothing/suit/space/equipped(mob/M)
|
||||
check_limb_support(M)
|
||||
..()
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
item_state_slots = list(slot_r_hand_str = "syndie_helm", slot_l_hand_str = "syndie_helm")
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60)
|
||||
siemens_coefficient = 0.6
|
||||
species_restricted = list("Human")
|
||||
camera_networks = list(NETWORK_MERCENARY)
|
||||
light_overlay = "helmet_light_green" //todo: species-specific light overlays
|
||||
|
||||
@@ -19,5 +18,4 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 60)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs)
|
||||
siemens_coefficient = 0.6
|
||||
species_restricted = list("Human", "Skrell")
|
||||
siemens_coefficient = 0.6
|
||||
@@ -11,7 +11,7 @@
|
||||
// flags_inv = HIDEEARS|BLOCKHAIR
|
||||
|
||||
//Species-specific stuff.
|
||||
species_restricted = list("Human")
|
||||
species_restricted = list("Human", "Promethean")
|
||||
sprite_sheets_refit = list(
|
||||
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/helmet.dmi',
|
||||
@@ -38,7 +38,7 @@
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
|
||||
species_restricted = list("Human", "Skrell")
|
||||
species_restricted = list("Human", "Skrell", "Promethean")
|
||||
sprite_sheets_refit = list(
|
||||
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/suit.dmi',
|
||||
@@ -225,18 +225,22 @@
|
||||
if(choice == tank) //No, a switch doesn't work here. Sorry. ~Techhead
|
||||
user << "You pop \the [tank] out of \the [src]'s storage compartment."
|
||||
tank.forceMove(get_turf(src))
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
src.tank = null
|
||||
else if(choice == cooler)
|
||||
user << "You pop \the [cooler] out of \the [src]'s storage compartment."
|
||||
cooler.forceMove(get_turf(src))
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
src.cooler = null
|
||||
else if(choice == helmet)
|
||||
user << "You detatch \the [helmet] from \the [src]'s helmet mount."
|
||||
helmet.forceMove(get_turf(src))
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
src.helmet = null
|
||||
else if(choice == boots)
|
||||
user << "You detatch \the [boots] from \the [src]'s boot mounts."
|
||||
boots.forceMove(get_turf(src))
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
src.boots = null
|
||||
else
|
||||
user << "\The [src] does not have anything installed."
|
||||
|
||||
@@ -197,10 +197,10 @@
|
||||
/obj/item/clothing/suit/armor/reactive/attack_self(mob/user as mob)
|
||||
active = !( active )
|
||||
if (active)
|
||||
user << "\blue The reactive armor is now active."
|
||||
user << "<font color='blue'>The reactive armor is now active.</font>"
|
||||
icon_state = "reactive"
|
||||
else
|
||||
user << "\blue The reactive armor is now inactive."
|
||||
user << "<font color='blue'>The reactive armor is now inactive.</font>"
|
||||
icon_state = "reactiveoff"
|
||||
add_fingerprint(user)
|
||||
return
|
||||
@@ -414,7 +414,7 @@
|
||||
//All of the armor below is mostly unused
|
||||
|
||||
/obj/item/clothing/suit/armor/centcomm
|
||||
name = "Cent. Com. armor"
|
||||
name = "CentCom armor"
|
||||
desc = "A suit that protects against some damage."
|
||||
icon_state = "centcom"
|
||||
item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor")
|
||||
|
||||
@@ -257,6 +257,14 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/straight_jacket/attack_hand(mob/living/user as mob)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(src == H.wear_suit)
|
||||
to_chat(H, "<span class='notice'>You need help taking this off!</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/ianshirt
|
||||
name = "worn shirt"
|
||||
desc = "A worn out, curiously comfortable t-shirt with a picture of Ian. You wouldn't go so far as to say it feels like being hugged when you wear it but it's pretty close. Good for sleeping in."
|
||||
@@ -332,6 +340,12 @@ obj/item/clothing/suit/kimono
|
||||
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
obj/item/clothing/suit/storage/toggle/peacoat
|
||||
name = "peacoat"
|
||||
desc = "A well-tailored, stylish peacoat."
|
||||
icon_state = "peacoat"
|
||||
item_state_slots = list(slot_r_hand_str = "peacoat", slot_l_hand_str = "peacoat")
|
||||
flags_inv = HIDEHOLSTER
|
||||
/*
|
||||
* stripper
|
||||
*/
|
||||
@@ -863,9 +877,11 @@ obj/item/clothing/suit/kimono
|
||||
|
||||
if(rolled == 0)
|
||||
rolled = 1
|
||||
body_parts_covered &= ~(ARMS)
|
||||
usr << "<span class='notice'>You roll up the sleeves of your [src].</span>"
|
||||
else
|
||||
rolled = 0
|
||||
body_parts_covered = initial(body_parts_covered)
|
||||
usr << "<span class='notice'>You roll down the sleeves of your [src].</span>"
|
||||
update_icon()
|
||||
|
||||
@@ -937,3 +953,38 @@ obj/item/clothing/suit/kimono
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/snowsuit
|
||||
name = "snowsuit"
|
||||
desc = "A suit made to keep you nice and toasty on cold winter days. Or at least alive."
|
||||
icon_state = "snowsuit"
|
||||
item_state_slots = list(slot_r_hand_str = "labcoat", slot_l_hand_str = "labcoat")
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask)
|
||||
|
||||
/obj/item/clothing/suit/storage/snowsuit/command
|
||||
name = "command snowsuit"
|
||||
icon_state = "snowsuit_command"
|
||||
|
||||
/obj/item/clothing/suit/storage/snowsuit/security
|
||||
name = "security snowsuit"
|
||||
icon_state = "snowsuit_security"
|
||||
|
||||
/obj/item/clothing/suit/storage/snowsuit/medical
|
||||
name = "medical snowsuit"
|
||||
icon_state = "snowsuit_medical"
|
||||
|
||||
/obj/item/clothing/suit/storage/snowsuit/engineering
|
||||
name = "engineering snowsuit"
|
||||
icon_state = "snowsuit_engineering"
|
||||
|
||||
/obj/item/clothing/suit/storage/snowsuit/cargo
|
||||
name = "cargo snowsuit"
|
||||
icon_state = "snowsuit_cargo"
|
||||
|
||||
/obj/item/clothing/suit/storage/snowsuit/science
|
||||
name = "science snowsuit"
|
||||
icon_state = "snowsuit_science"
|
||||
|
||||
@@ -14,47 +14,47 @@
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary
|
||||
name = "\improper SifGuard jacket"
|
||||
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has silver buttons."
|
||||
desc = "A uniform service jacket belonging to the Sif Defense Force. It has silver buttons."
|
||||
icon_state = "blackservice_crew"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/medical
|
||||
name = "\improper SifGuard medical jacket"
|
||||
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has silver buttons and blue trim."
|
||||
desc = "A uniform service jacket belonging to the Sif Defense Force. It has silver buttons and blue trim."
|
||||
icon_state = "blackservice_med"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/medical/command
|
||||
name = "\improper SifGuard medical command jacket"
|
||||
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has gold buttons and blue trim."
|
||||
desc = "A uniform service jacket belonging to the Sif Defense Force. It has gold buttons and blue trim."
|
||||
icon_state = "blackservice_medcom"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/engineering
|
||||
name = "\improper SifGuard engineering jacket"
|
||||
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has silver buttons and orange trim."
|
||||
desc = "A uniform service jacket belonging to the Sif Defense Force. It has silver buttons and orange trim."
|
||||
icon_state = "blackservice_eng"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/engineering/command
|
||||
name = "\improper SifGuard engineering command jacket"
|
||||
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has gold buttons and orange trim."
|
||||
desc = "A uniform service jacket belonging to the Sif Defense Force. It has gold buttons and orange trim."
|
||||
icon_state = "blackservice_engcom"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/supply
|
||||
name = "\improper SifGuard supply jacket"
|
||||
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has silver buttons and brown trim."
|
||||
desc = "A uniform service jacket belonging to the Sif Defense Force. It has silver buttons and brown trim."
|
||||
icon_state = "blackservice_sup"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/security
|
||||
name = "\improper SifGuard security jacket"
|
||||
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has silver buttons and red trim."
|
||||
desc = "A uniform service jacket belonging to the Sif Defense Force. It has silver buttons and red trim."
|
||||
icon_state = "blackservice_sec"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/security/command
|
||||
name = "\improper SifGuard security command jacket"
|
||||
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has gold buttons and red trim."
|
||||
desc = "A uniform service jacket belonging to the Sif Defense Force. It has gold buttons and red trim."
|
||||
icon_state = "blackservice_seccom"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/expeditionary/command
|
||||
name = "\improper SifGuard command jacket"
|
||||
desc = "A uniform service jacket belonging to the Sif Homeguard Corps. It has gold buttons and gold trim."
|
||||
desc = "A uniform service jacket belonging to the Sif Defense Force. It has gold buttons and gold trim."
|
||||
icon_state = "blackservice_com"
|
||||
|
||||
/obj/item/clothing/suit/storage/service/marine
|
||||
@@ -115,13 +115,13 @@
|
||||
allowed = list(/obj/item/weapon/tank/emergency/oxygen,/obj/item/device/flashlight,/obj/item/clothing/head/soft,/obj/item/clothing/head/beret,/obj/item/device/radio,/obj/item/weapon/pen)
|
||||
|
||||
/obj/item/clothing/suit/dress/expedition
|
||||
name = "expeditionary dress jacket"
|
||||
desc = "A silver and grey dress jacket belonging to the SCG Expeditionary Corps. Fashionable, for the 25th century at least."
|
||||
name = "SifGuard dress jacket"
|
||||
desc = "A silver and grey dress jacket belonging to the Sif Defense Force. Fashionable, for the 25th century at least."
|
||||
icon_state = "greydress"
|
||||
|
||||
/obj/item/clothing/suit/dress/expedition/command
|
||||
name = "expeditionary command dress jacket"
|
||||
desc = "A gold and grey dress jacket belonging to the SCG Expeditionary Corps. The height of fashion."
|
||||
name = "SifGuard command dress jacket"
|
||||
desc = "A gold and grey dress jacket belonging to the Sif Defense Force. The height of fashion."
|
||||
icon_state = "greydress_com"
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/dress
|
||||
@@ -136,7 +136,7 @@
|
||||
desc = "A crisp white SCG Fleet dress jacket with blue and gold accents. Don't get near pasta sauce or vox."
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/dress/fleet/command
|
||||
name = "expeditionary command dress jacket"
|
||||
name = "fleet command dress jacket"
|
||||
desc = "A crisp white SCG Fleet dress jacket dripping with gold accents. So bright it's blinding."
|
||||
icon_state = "whitedress_com"
|
||||
item_state = "labcoat"
|
||||
|
||||
@@ -8,9 +8,8 @@
|
||||
pockets.max_storage_space = ITEMSIZE_COST_SMALL * 2
|
||||
|
||||
/obj/item/clothing/suit/storage/Destroy()
|
||||
qdel(pockets)
|
||||
pockets = null
|
||||
..()
|
||||
qdel_null(pockets)
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/suit/storage/attack_hand(mob/user as mob)
|
||||
if (pockets.handle_attack_hand(user))
|
||||
|
||||
@@ -78,7 +78,8 @@
|
||||
name = "Radiation Hood"
|
||||
icon_state = "rad"
|
||||
desc = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation"
|
||||
flags_inv = BLOCKHAIR
|
||||
// flags_inv = BLOCKHAIR
|
||||
item_flags = THICKMATERIAL
|
||||
body_parts_covered = HEAD|FACE|EYES
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
|
||||
|
||||
@@ -94,3 +95,4 @@
|
||||
slowdown = 1.5
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
|
||||
flags_inv = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
item_flags = THICKMATERIAL
|
||||
|
||||
@@ -0,0 +1,134 @@
|
||||
/obj/item/clothing/suit/storage/seromi/cloak
|
||||
name = "black and orange cloak "
|
||||
desc = "It drapes over a Teshari's shoulders and closes at the neck with pockets convienently placed inside."
|
||||
icon = 'icons/mob/species/seromi/teshari_cloak.dmi'
|
||||
icon_override = 'icons/mob/species/seromi/teshari_cloak.dmi'
|
||||
icon_state = "tesh_cloak_bo"
|
||||
item_state = "tesh_cloak_bo"
|
||||
species_restricted = list("Teshari")
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_orange
|
||||
name = "black and orange cloak"
|
||||
icon_state = "tesh_cloak_bo"
|
||||
item_state = "tesh_cloak_bo"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_grey
|
||||
name = "black and grey cloak"
|
||||
icon_state = "tesh_cloak_bg"
|
||||
item_state = "tesh_cloak_bg"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_midgrey
|
||||
name = "black and medium grey cloak"
|
||||
icon_state = "tesh_cloak_bmg"
|
||||
item_state = "tesh_cloak_bmg"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_lightgrey
|
||||
name = "black and light grey cloak"
|
||||
icon_state = "tesh_cloak_blg"
|
||||
item_state = "tesh_cloak_blg"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_white
|
||||
name = "black and white cloak"
|
||||
icon_state = "tesh_cloak_bw"
|
||||
item_state = "tesh_cloak_bw"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_red
|
||||
name = "black and red cloak"
|
||||
icon_state = "tesh_cloak_br"
|
||||
item_state = "tesh_cloak_br"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black
|
||||
name = "black cloak"
|
||||
icon_state = "tesh_cloak_bn"
|
||||
item_state = "tesh_cloak_bn"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_yellow
|
||||
name = "black and yellow cloak"
|
||||
icon_state = "tesh_cloak_by"
|
||||
item_state = "tesh_cloak_by"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_green
|
||||
name = "black and Green cloak"
|
||||
icon_state = "tesh_cloak_bgr"
|
||||
item_state = "tesh_cloak_bgr"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_blue
|
||||
name = "black and blue cloak"
|
||||
icon_state = "tesh_cloak_bbl"
|
||||
item_state = "tesh_cloak_bbl"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_purple
|
||||
name = "black and purple cloak"
|
||||
icon_state = "tesh_cloak_bp"
|
||||
item_state = "tesh_cloak_bp"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_pink
|
||||
name = "black and pink cloak"
|
||||
icon_state = "tesh_cloak_bpi"
|
||||
item_state = "tesh_cloak_bpi"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_brown
|
||||
name = "black and brown cloak"
|
||||
icon_state = "tesh_cloak_bbr"
|
||||
item_state = "tesh_cloak_bbr"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/orange_grey
|
||||
name = "orange and grey cloak"
|
||||
icon_state = "tesh_cloak_og"
|
||||
item_state = "tesh_cloak_og"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/rainbow
|
||||
name = "rainbow cloak"
|
||||
icon_state = "tesh_cloak_rainbow"
|
||||
item_state = "tesh_cloak_rainbow"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/lightgrey_grey
|
||||
name = "light grey and grey cloak"
|
||||
icon_state = "tesh_cloak_lgg"
|
||||
item_state = "tesh_cloak_lgg"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/white_grey
|
||||
name = "white and grey cloak"
|
||||
icon_state = "tesh_cloak_wg"
|
||||
item_state = "tesh_cloak_wg"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/red_grey
|
||||
name = "red and grey cloak"
|
||||
icon_state = "tesh_cloak_rg"
|
||||
item_state = "tesh_cloak_rg"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/orange
|
||||
name = "orange cloak"
|
||||
icon_state = "tesh_cloak_on"
|
||||
item_state = "tesh_cloak_on"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/yellow_grey
|
||||
name = "yellow and grey cloak"
|
||||
icon_state = "tesh_cloak_yg"
|
||||
item_state = "tesh_cloak_yg"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/green_grey
|
||||
name = "green and grey cloak"
|
||||
icon_state = "tesh_cloak_gg"
|
||||
item_state = "tesh_cloak_gg"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/blue_grey
|
||||
name = "blue and grey cloak"
|
||||
icon_state = "tesh_cloak_blg"
|
||||
item_state = "tesh_cloak_blg"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/purple_grey
|
||||
name = "purple and grey cloak"
|
||||
icon_state = "tesh_cloak_pg"
|
||||
item_state = "tesh_cloak_pg"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/pink_grey
|
||||
name = "black and orange cloak"
|
||||
icon_state = "tesh_cloak_pig"
|
||||
item_state = "tesh_cloak_pig"
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/brown_grey
|
||||
name = "purple and grey cloak"
|
||||
icon_state = "tesh_cloak_brg"
|
||||
item_state = "tesh_cloak_brg"
|
||||
@@ -31,14 +31,14 @@
|
||||
|
||||
/obj/item/clothing/accessory/armband/med/cross
|
||||
name = "medic armband"
|
||||
desc = "A white armband with a red cross on it. Typically used by people in the Medical department."
|
||||
desc = "A white armband with a blue cross on it. Typically used by people in the Medical department."
|
||||
icon_state = "medicband"
|
||||
|
||||
/obj/item/clothing/accessory/armband/med/color
|
||||
name = "armband"
|
||||
desc = "A fancy armband."
|
||||
|
||||
/obj/item/clothing/accessory/armband/medgreen
|
||||
/obj/item/clothing/accessory/armband/medblue
|
||||
name = "EMT armband"
|
||||
desc = "An armband, worn by the crew to display which department they're assigned to. This one is white and green."
|
||||
icon_state = "medgreen"
|
||||
desc = "An armband, worn by the crew to display which department they're assigned to. This one is white and blue."
|
||||
icon_state = "medblue"
|
||||
|
||||
@@ -119,6 +119,11 @@
|
||||
name = "flower-pattern shirt"
|
||||
desc = "You probably need some welder googles to look at this."
|
||||
icon_state = "hawaii"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
slot_flags = SLOT_OCLOTHING | SLOT_TIE
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
siemens_coefficient = 0.9
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
|
||||
/obj/item/clothing/accessory/hawaii/red
|
||||
icon_state = "hawaii2"
|
||||
@@ -172,4 +177,56 @@
|
||||
|
||||
/obj/item/clothing/accessory/wcoat/swvest/red
|
||||
name = "red sweatervest"
|
||||
icon_state = "sweatervest_red"
|
||||
icon_state = "sweatervest_red"
|
||||
|
||||
//Sweaters.
|
||||
|
||||
/obj/item/clothing/accessory/sweater
|
||||
name = "sweater"
|
||||
desc = "A warm knit sweater."
|
||||
icon_override = 'icons/mob/ties.dmi'
|
||||
icon_state = "sweater"
|
||||
slot_flags = SLOT_OCLOTHING | SLOT_TIE
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
siemens_coefficient = 0.9
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
|
||||
/obj/item/clothing/accessory/sweater/pink
|
||||
name = "pink sweater"
|
||||
desc = "A warm knit sweater. This one's pink in color."
|
||||
icon_state = "sweater_pink"
|
||||
|
||||
/obj/item/clothing/accessory/sweater/mint
|
||||
name = "mint sweater"
|
||||
desc = "A warm knit sweater. This one has a minty tint to it."
|
||||
icon_state = "sweater_mint"
|
||||
|
||||
/obj/item/clothing/accessory/sweater/blue
|
||||
name = "blue sweater"
|
||||
desc = "A warm knit sweater. This one's colored in a lighter blue."
|
||||
icon_state = "sweater_blue"
|
||||
|
||||
/obj/item/clothing/accessory/sweater/heart
|
||||
name = "heart sweater"
|
||||
desc = "A warm knit sweater. This one's colored in a lighter blue, and has a big pink heart right in the center!"
|
||||
icon_state = "sweater_blueheart"
|
||||
|
||||
/obj/item/clothing/accessory/sweater/nt
|
||||
name = "dark blue sweater"
|
||||
desc = "A warm knit sweater. This one's a darker blue."
|
||||
icon_state = "sweater_nt"
|
||||
|
||||
/obj/item/clothing/accessory/sweater/keyhole
|
||||
name = "keyhole sweater"
|
||||
desc = "A lavender sweater with an open chest."
|
||||
icon_state = "keyholesweater"
|
||||
|
||||
/obj/item/clothing/accessory/sweater/blackneck
|
||||
name = "black turtleneck"
|
||||
desc = "A tight turtleneck, entirely black in coloration."
|
||||
icon_state = "turtleneck_black"
|
||||
|
||||
/obj/item/clothing/accessory/sweater/winterneck
|
||||
name = "Christmas turtleneck"
|
||||
desc = "A really cheesy holiday sweater, it actually kinda itches."
|
||||
icon_state = "turtleneck_winterred"
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
if(!H.holstered)
|
||||
var/obj/item/W = usr.get_active_hand()
|
||||
if(!istype(W, /obj/item))
|
||||
usr << "<span class='warning'>You need your gun equiped to holster it.</span>"
|
||||
usr << "<span class='warning'>You need your gun equipped to holster it.</span>"
|
||||
return
|
||||
H.holster(W, usr)
|
||||
else
|
||||
|
||||
@@ -6,6 +6,12 @@
|
||||
icon_state = "ba_suit"
|
||||
rolled_sleeves = 0
|
||||
|
||||
/obj/item/clothing/under/rank/bartender/skirt
|
||||
desc = "Short and cute."
|
||||
name = "bartender's skirt"
|
||||
icon_state = "ba_suit_skirt"
|
||||
item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit")
|
||||
|
||||
/obj/item/clothing/under/rank/captain //Alright, technically not a 'civilian' but its better then giving a .dm file for a single define.
|
||||
desc = "It's a blue jumpsuit with some gold markings denoting the rank of \"Colony Director\"."
|
||||
name = "colony director's jumpsuit"
|
||||
@@ -97,6 +103,11 @@
|
||||
rolled_sleeves = 0
|
||||
starting_accessories = list(/obj/item/clothing/accessory/black)
|
||||
|
||||
/obj/item/clothing/under/rank/internalaffairs/skirt
|
||||
desc = "The plain, professional attire of an Internal Affairs Agent. The top button is sewn shut."
|
||||
name = "Internal Affairs skirt"
|
||||
icon_state = "internalaffairs_skirt"
|
||||
|
||||
/obj/item/clothing/under/rank/janitor
|
||||
desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards."
|
||||
name = "janitor's jumpsuit"
|
||||
@@ -106,43 +117,72 @@
|
||||
|
||||
/obj/item/clothing/under/lawyer
|
||||
desc = "Slick threads."
|
||||
name = "Lawyer suit"
|
||||
name = "lawyer suit"
|
||||
|
||||
/obj/item/clothing/under/lawyer/black
|
||||
name = "black Lawyer suit"
|
||||
name = "black lawyer suit"
|
||||
icon_state = "lawyer_black"
|
||||
|
||||
/obj/item/clothing/under/lawyer/black/skirt
|
||||
name = "black lawyer skirt"
|
||||
icon_state = "lawyer_black_skirt"
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black")
|
||||
|
||||
/obj/item/clothing/under/lawyer/female
|
||||
name = "black Lawyer suit"
|
||||
name = "black lawyer suit"
|
||||
icon_state = "black_suit_fem"
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black")
|
||||
|
||||
/obj/item/clothing/under/lawyer/red
|
||||
name = "red Lawyer suit"
|
||||
name = "red lawyer suit"
|
||||
icon_state = "lawyer_red"
|
||||
|
||||
/obj/item/clothing/under/lawyer/red/skirt
|
||||
name = "red lawyer skirt"
|
||||
icon_state = "lawyer_red_skirt"
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_red", slot_l_hand_str = "lawyer_red")
|
||||
|
||||
/obj/item/clothing/under/lawyer/blue
|
||||
name = "blue Lawyer suit"
|
||||
name = "blue lawyer suit"
|
||||
icon_state = "lawyer_blue"
|
||||
|
||||
/obj/item/clothing/under/lawyer/blue/skirt
|
||||
name = "blue lawyer skirt"
|
||||
icon_state = "lawyer_blue_skirt"
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_blue", slot_l_hand_str = "lawyer_blue")
|
||||
|
||||
/obj/item/clothing/under/lawyer/bluesuit
|
||||
name = "Blue Suit"
|
||||
name = "blue suit"
|
||||
desc = "A classy suit."
|
||||
icon_state = "bluesuit"
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_blue", slot_l_hand_str = "lawyer_blue")
|
||||
starting_accessories = list(/obj/item/clothing/accessory/red)
|
||||
|
||||
/obj/item/clothing/under/lawyer/bluesuit/skirt
|
||||
name = "blue skirt suit"
|
||||
icon_state = "bluesuit_skirt"
|
||||
|
||||
/obj/item/clothing/under/lawyer/purpsuit
|
||||
name = "Purple Suit"
|
||||
name = "purple suit"
|
||||
icon_state = "lawyer_purp"
|
||||
item_state_slots = list(slot_r_hand_str = "purple", slot_l_hand_str = "purple")
|
||||
|
||||
/obj/item/clothing/under/lawyer/purpsuit/skirt
|
||||
name = "purple skirt suit"
|
||||
icon_state = "lawyer_purp_skirt"
|
||||
|
||||
/obj/item/clothing/under/lawyer/oldman
|
||||
name = "Old Man's Suit"
|
||||
desc = "A classic suit for the older gentleman with built in back support."
|
||||
icon_state = "oldman"
|
||||
item_state_slots = list(slot_r_hand_str = "johnny", slot_l_hand_str = "johnny")
|
||||
|
||||
/obj/item/clothing/under/oldwoman
|
||||
name = "Old Woman's Attire"
|
||||
desc = "A typical outfit for the older woman, a lovely cardigan and comfortable skirt."
|
||||
icon_state = "oldwoman"
|
||||
item_state_slots = list(slot_r_hand_str = "johnny", slot_l_hand_str = "johnny")
|
||||
|
||||
/obj/item/clothing/under/librarian
|
||||
name = "sensible suit"
|
||||
desc = "It's very... sensible."
|
||||
|
||||
@@ -114,40 +114,35 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS
|
||||
rolled_sleeves = -1
|
||||
|
||||
/obj/item/clothing/under/rank/medical/blue //Why are these not /obj/item/clothing/under/rank/medical/scrubs/ ?
|
||||
name = "medical scrubs"
|
||||
/obj/item/clothing/under/rank/medical/scrubs
|
||||
name = "blue scrubs"
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue."
|
||||
icon_state = "scrubsblue"
|
||||
item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue")
|
||||
rolled_sleeves = -1
|
||||
|
||||
/obj/item/clothing/under/rank/medical/green
|
||||
name = "medical scrubs"
|
||||
/obj/item/clothing/under/rank/medical/scrubs/green
|
||||
name = "green scrubs"
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green."
|
||||
icon_state = "scrubsgreen"
|
||||
item_state_slots = list(slot_r_hand_str = "green", slot_l_hand_str = "green")
|
||||
rolled_sleeves = -1
|
||||
|
||||
/obj/item/clothing/under/rank/medical/purple
|
||||
name = "medical scrubs"
|
||||
/obj/item/clothing/under/rank/medical/scrubs/purple
|
||||
name = "purple scrubs"
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple."
|
||||
icon_state = "scrubspurple"
|
||||
item_state_slots = list(slot_r_hand_str = "purple", slot_l_hand_str = "purple")
|
||||
rolled_sleeves = -1
|
||||
|
||||
/obj/item/clothing/under/rank/medical/black
|
||||
name = "medical scrubs"
|
||||
/obj/item/clothing/under/rank/medical/scrubs/black
|
||||
name = "black scrubs"
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in black."
|
||||
icon_state = "scrubsblack"
|
||||
item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black")
|
||||
rolled_sleeves = -1
|
||||
|
||||
/obj/item/clothing/under/rank/medical/navyblue
|
||||
name = "medical scrubs"
|
||||
/obj/item/clothing/under/rank/medical/scrubs/navyblue
|
||||
name = "navy blue scrubs"
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in navy blue."
|
||||
icon_state = "scrubsnavyblue"
|
||||
item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue")
|
||||
rolled_sleeves = -1
|
||||
|
||||
/obj/item/clothing/under/rank/psych
|
||||
desc = "A basic white jumpsuit. It has turqouise markings that denote the wearer as a psychiatrist."
|
||||
|
||||
@@ -113,6 +113,12 @@
|
||||
desc = "A serious-looking tan dress shirt paired with freshly-pressed black slacks, complete with a red striped tie and waistcoat."
|
||||
starting_accessories = list(/obj/item/clothing/accessory/red_long, /obj/item/clothing/accessory/wcoat)
|
||||
|
||||
/obj/item/clothing/under/det/skirt
|
||||
name = "detective's skirt"
|
||||
icon_state = "detective_skirt"
|
||||
desc = "A serious-looking white blouse paired with a formal black pencil skirt."
|
||||
item_state_slots = list(slot_r_hand_str = "sl_suit", slot_l_hand_str = "sl_suit")
|
||||
|
||||
/*
|
||||
* Head of Security
|
||||
*/
|
||||
|
||||
@@ -21,6 +21,11 @@
|
||||
desc = "A white suit, suitable for an excellent host"
|
||||
icon_state = "scratch"
|
||||
|
||||
/obj/item/clothing/under/scratch/skirt
|
||||
name = "white skirt suit"
|
||||
icon_state = "scratch_skirt"
|
||||
item_state_slots = list(slot_r_hand_str = "scratch", slot_l_hand_str = "scratch")
|
||||
|
||||
/obj/item/clothing/under/sl_suit
|
||||
desc = "It's a very amish looking suit."
|
||||
name = "amish suit"
|
||||
@@ -98,6 +103,11 @@
|
||||
rolled_sleeves = 0
|
||||
starting_accessories = list(/obj/item/clothing/accessory/darkgreen)
|
||||
|
||||
/obj/item/clothing/under/gov/skirt
|
||||
name = "Green formal skirt uniform"
|
||||
desc = "A neat proper uniform of someone on offical business. The top button is sewn shut."
|
||||
icon_state = "greensuit_skirt"
|
||||
|
||||
/obj/item/clothing/under/space
|
||||
name = "\improper NASA jumpsuit"
|
||||
desc = "It has a NASA logo on it and is made of space-proofed materials."
|
||||
@@ -147,24 +157,37 @@
|
||||
|
||||
/obj/item/clothing/under/gentlesuit
|
||||
name = "gentlemans suit"
|
||||
desc = "A silk black shirt with a white tie and a matching gray vest and slacks. Feels proper."
|
||||
desc = "A silk black shirt with matching gray slacks. Feels proper."
|
||||
icon_state = "gentlesuit"
|
||||
item_state_slots = list(slot_r_hand_str = "grey", slot_l_hand_str = "grey")
|
||||
rolled_sleeves = 0
|
||||
starting_accessories = list(/obj/item/clothing/accessory/white, /obj/item/clothing/accessory/wcoat/gentleman)
|
||||
|
||||
/obj/item/clothing/under/gentlesuit/skirt
|
||||
name = "lady's suit"
|
||||
desc = "A silk black blouse with a matching gray skirt. Feels proper."
|
||||
icon_state = "gentlesuit_skirt"
|
||||
|
||||
/obj/item/clothing/under/gimmick/rank/captain/suit
|
||||
name = "colony director's suit"
|
||||
desc = "A green suit and yellow necktie. Exemplifies authority."
|
||||
icon_state = "green_suit"
|
||||
item_state_slots = list(slot_r_hand_str = "centcom", slot_l_hand_str = "centcom")
|
||||
|
||||
/obj/item/clothing/under/gimmick/rank/captain/suit/skirt
|
||||
name = "colony director's skirt suit"
|
||||
icon_state = "green_suit_skirt"
|
||||
|
||||
/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit
|
||||
name = "head of personnel's suit"
|
||||
desc = "A teal suit and yellow necktie. An authoritative yet tacky ensemble."
|
||||
icon_state = "teal_suit"
|
||||
item_state_slots = list(slot_r_hand_str = "green", slot_l_hand_str = "green")
|
||||
|
||||
/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit/skirt
|
||||
name = "head of personnel's skirt suit"
|
||||
icon_state = "teal_suit_skirt"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket
|
||||
name = "black suit"
|
||||
desc = "A black suit and red tie. Very formal."
|
||||
@@ -177,8 +200,13 @@
|
||||
icon_state = "really_black_suit"
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black")
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/really_black/skirt
|
||||
name = "executive skirt suit"
|
||||
desc = "A formal black suit and red necktie, intended for the station's finest."
|
||||
icon_state = "really_black_suit_skirt"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/female
|
||||
name = "executive suit"
|
||||
name = "female executive suit"
|
||||
desc = "A formal trouser suit for women, intended for the station's finest."
|
||||
icon_state = "black_suit_fem"
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black")
|
||||
@@ -196,6 +224,11 @@
|
||||
icon_state = "red_suit"
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_red", slot_l_hand_str = "lawyer_red")
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/red/skirt
|
||||
name = "red skirt suit"
|
||||
desc = "A red suit and blue necktie. Somewhat formal."
|
||||
icon_state = "red_suit_skirt"
|
||||
|
||||
/obj/item/clothing/under/schoolgirl
|
||||
name = "schoolgirl uniform"
|
||||
desc = "It's just like one of my Japanese animes!"
|
||||
@@ -292,6 +325,11 @@
|
||||
desc = "A simple maid uniform for housekeeping."
|
||||
icon_state = "janimaid"
|
||||
|
||||
/obj/item/clothing/under/dress/sexymaid
|
||||
name = "sexy maid uniform"
|
||||
desc = "You must be a bit risque teasing all of them in a maid uniform!"
|
||||
icon_state = "sexymaid"
|
||||
|
||||
/obj/item/clothing/under/dress/dress_fire
|
||||
name = "flame dress"
|
||||
desc = "A small black dress with blue flames print on it."
|
||||
@@ -341,6 +379,21 @@
|
||||
icon_state = "huresource"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
|
||||
/obj/item/clothing/under/dress/black_corset
|
||||
name = "black corset"
|
||||
desc = "A black corset and skirt for those fancy nights out."
|
||||
icon_state = "black_corset"
|
||||
|
||||
/obj/item/clothing/under/dress/flower_dress
|
||||
name = "flower dress"
|
||||
desc = "A beautiful dress with a skirt of flowers."
|
||||
icon_state = "flower_dress"
|
||||
|
||||
/obj/item/clothing/under/dress/red_swept_dress
|
||||
name = "red swept dress"
|
||||
desc = "A red dress that sweeps to the side."
|
||||
icon_state = "red_swept_dress"
|
||||
|
||||
/*
|
||||
* wedding stuff
|
||||
*/
|
||||
@@ -421,6 +474,10 @@
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black")
|
||||
starting_accessories = list(/obj/item/clothing/accessory/navy, /obj/item/clothing/accessory/charcoal_jacket)
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/charcoal/skirt
|
||||
name = "charcoal skirt"
|
||||
icon_state = "charcoal_suit_skirt"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/navy
|
||||
name = "navy suit"
|
||||
desc = "A navy suit and red tie, intended for the station's finest."
|
||||
@@ -428,6 +485,10 @@
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_blue", slot_l_hand_str = "lawyer_blue")
|
||||
starting_accessories = list(/obj/item/clothing/accessory/red, /obj/item/clothing/accessory/navy_jacket)
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/navy/skirt
|
||||
name = "navy skirt"
|
||||
icon_state = "navy_suit_skirt"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/burgundy
|
||||
name = "burgundy suit"
|
||||
desc = "A burgundy suit and black tie. Somewhat formal."
|
||||
@@ -435,6 +496,10 @@
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_red", slot_l_hand_str = "lawyer_red")
|
||||
starting_accessories = list(/obj/item/clothing/accessory/black, /obj/item/clothing/accessory/burgundy_jacket)
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/burgundy/skirt
|
||||
name = "burgundy skirt"
|
||||
icon_state = "burgundy_suit_skirt"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/checkered
|
||||
name = "checkered suit"
|
||||
desc = "That's a very nice suit you have there. Shame if something were to happen to it, eh?"
|
||||
@@ -442,6 +507,10 @@
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black")
|
||||
starting_accessories = list(/obj/item/clothing/accessory/black, /obj/item/clothing/accessory/checkered_jacket)
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/checkered/skirt
|
||||
name = "checkered skirt"
|
||||
icon_state = "checkered_suit_skirt"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/tan
|
||||
name = "tan suit"
|
||||
desc = "A tan suit. Smart, but casual."
|
||||
@@ -449,6 +518,10 @@
|
||||
item_state_slots = list(slot_r_hand_str = "tan_suit", slot_l_hand_str = "tan_suit")
|
||||
starting_accessories = list(/obj/item/clothing/accessory/yellow, /obj/item/clothing/accessory/tan_jacket)
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/tan/skirt
|
||||
name = "tan skirt"
|
||||
icon_state = "tan_suit_skirt"
|
||||
|
||||
/obj/item/clothing/under/serviceoveralls
|
||||
name = "workman outfit"
|
||||
desc = "The very image of a working man. Not that you're probably doing work."
|
||||
@@ -459,7 +532,7 @@
|
||||
/obj/item/clothing/under/cheongsam
|
||||
name = "white cheongsam"
|
||||
desc = "It is a white cheongsam dress."
|
||||
icon_state = "mai_yang"
|
||||
icon_state = "cheongsam-white"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS
|
||||
|
||||
/obj/item/clothing/under/cheongsam/red
|
||||
@@ -477,12 +550,37 @@
|
||||
desc = "It is a black cheongsam dress."
|
||||
icon_state = "cheongsam-black"
|
||||
|
||||
/obj/item/clothing/under/cheongsam/darkred
|
||||
name = "dark red cheongsam"
|
||||
desc = "It is a dark red cheongsam dress."
|
||||
icon_state = "cheongsam-darkred"
|
||||
|
||||
/obj/item/clothing/under/cheongsam/green
|
||||
name = "green cheongsam"
|
||||
desc = "It is a green cheongsam dress."
|
||||
icon_state = "cheongsam-green"
|
||||
|
||||
/obj/item/clothing/under/cheongsam/purple
|
||||
name = "purple cheongsam"
|
||||
desc = "It is a purple cheongsam dress."
|
||||
icon_state = "cheongsam-purple"
|
||||
|
||||
/obj/item/clothing/under/cheongsam/darkblue
|
||||
name = "dark blue cheongsam"
|
||||
desc = "It is a dark blue cheongsam dress."
|
||||
icon_state = "cheongsam-darkblue"
|
||||
|
||||
/obj/item/clothing/under/blazer
|
||||
name = "blue blazer"
|
||||
desc = "A bold but yet conservative outfit, red corduroys, navy blazer and a tie."
|
||||
icon_state = "blue_blazer"
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_blue", slot_l_hand_str = "lawyer_blue")
|
||||
|
||||
/obj/item/clothing/under/blazer/skirt
|
||||
name = "ladies blue blazer"
|
||||
desc = "A bold but yet conservative outfit, a red pencil skirt and a navy blazer."
|
||||
icon_state = "blue_blazer_skirt"
|
||||
|
||||
/obj/item/clothing/under/croptop
|
||||
name = "crop top"
|
||||
desc = "A shirt that has had the top cropped. This one is NT sponsored."
|
||||
@@ -558,31 +656,56 @@
|
||||
name = "black swimsuit"
|
||||
desc = "An oldfashioned black swimsuit."
|
||||
icon_state = "swim_black"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/under/swimsuit/blue
|
||||
name = "blue swimsuit"
|
||||
desc = "An oldfashioned blue swimsuit."
|
||||
icon_state = "swim_blue"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/under/swimsuit/purple
|
||||
name = "purple swimsuit"
|
||||
desc = "An oldfashioned purple swimsuit."
|
||||
icon_state = "swim_purp"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/under/swimsuit/green
|
||||
name = "green swimsuit"
|
||||
desc = "An oldfashioned green swimsuit."
|
||||
icon_state = "swim_green"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/under/swimsuit/red
|
||||
name = "red swimsuit"
|
||||
desc = "An oldfashioned red swimsuit."
|
||||
icon_state = "swim_red"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/under/swimsuit/striped
|
||||
name = "striped swimsuit"
|
||||
desc = "A more revealing striped swimsuit."
|
||||
icon_state = "swim_striped"
|
||||
|
||||
/obj/item/clothing/under/swimsuit/white
|
||||
name = "white swimsuit"
|
||||
desc = "A classic one piece."
|
||||
icon_state = "swim_white"
|
||||
|
||||
/obj/item/clothing/under/swimsuit/earth
|
||||
name = "earthen swimsuit"
|
||||
desc = "A design more popular on Earth these days."
|
||||
icon_state = "swim_earth"
|
||||
|
||||
/obj/item/clothing/under/swimsuit/stripper/stripper_pink
|
||||
name = "pink swimsuit"
|
||||
desc = "A rather skimpy pink swimsuit."
|
||||
icon_state = "stripper_p"
|
||||
|
||||
/obj/item/clothing/under/swimsuit/stripper/stripper_green
|
||||
name = "green swimsuit"
|
||||
desc = "A rather skimpy green swimsuit."
|
||||
icon_state = "stripper_g"
|
||||
|
||||
/obj/item/clothing/under/swimsuit/stripper/mankini
|
||||
name = "mankini"
|
||||
desc = "No honest man would wear this abomination"
|
||||
icon_state = "mankini"
|
||||
|
||||
/*
|
||||
* pyjamas
|
||||
@@ -601,27 +724,6 @@
|
||||
item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red")
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
|
||||
|
||||
/obj/item/clothing/under/stripper
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/under/stripper/stripper_pink
|
||||
name = "pink swimsuit"
|
||||
desc = "A rather skimpy pink swimsuit."
|
||||
icon_state = "stripper_p"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/under/stripper/stripper_green
|
||||
name = "green swimsuit"
|
||||
desc = "A rather skimpy green swimsuit."
|
||||
icon_state = "stripper_g"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/clothing/under/stripper/mankini
|
||||
name = "mankini"
|
||||
desc = "No honest man would wear this abomination"
|
||||
icon_state = "mankini"
|
||||
siemens_coefficient = 1
|
||||
|
||||
/*
|
||||
*Misc Uniforms
|
||||
*/
|
||||
@@ -691,4 +793,19 @@
|
||||
desc = "A warm looking sweater and a pair of dark blue slacks."
|
||||
name = "sweater"
|
||||
icon_state = "turtleneck"
|
||||
worn_state = "turtleneck"
|
||||
worn_state = "turtleneck"
|
||||
|
||||
//Uniforms end above here.
|
||||
|
||||
/obj/item/clothing/under/medigown
|
||||
name = "medical gown"
|
||||
desc = "A flimsy examination gown, the back ties never close."
|
||||
icon_state = "medicalgown"
|
||||
worn_state = "medicalgown"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/bathrobe
|
||||
name = "bathrobe"
|
||||
desc = "A fluffy robe to keep you from showing off to the world."
|
||||
icon_state = "bathrobe"
|
||||
worn_state = "bathrobe"
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
/obj/item/clothing/under/pt/expeditionary
|
||||
name = "\improper SifGuard pt uniform"
|
||||
desc = "A baggy shirt bearing the seal of the Sif Homeguard Corps and some dorky looking blue shorts."
|
||||
desc = "A baggy shirt bearing the seal of the Sif Defense Force and some dorky looking blue shorts."
|
||||
icon_state = "expeditionpt"
|
||||
worn_state = "expeditionpt"
|
||||
|
||||
@@ -41,56 +41,56 @@
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary
|
||||
name = "\improper SifGuard uniform"
|
||||
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has silver trim."
|
||||
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has silver trim."
|
||||
icon_state = "blackutility_crew"
|
||||
worn_state = "blackutility_crew"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10)
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/medical
|
||||
name = "\improper SifGuard medical uniform"
|
||||
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has silver trim and blue blazes."
|
||||
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has silver trim and blue blazes."
|
||||
icon_state = "blackutility_med"
|
||||
worn_state = "blackutility_med"
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/medical/command
|
||||
name = "\improper SifGuard medical command uniform"
|
||||
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has gold trim and blue blazes."
|
||||
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has gold trim and blue blazes."
|
||||
icon_state = "blackutility_medcom"
|
||||
worn_state = "blackutility_medcom"
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/engineering
|
||||
name = "\improper SifGuard engineering uniform"
|
||||
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has silver trim and organge blazes."
|
||||
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has silver trim and organge blazes."
|
||||
icon_state = "blackutility_eng"
|
||||
worn_state = "blackutility_eng"
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/engineering/command
|
||||
name = "\improper SifGuard engineering command uniform"
|
||||
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has gold trim and organge blazes."
|
||||
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has gold trim and organge blazes."
|
||||
icon_state = "blackutility_engcom"
|
||||
worn_state = "blackutility_engcom"
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/supply
|
||||
name = "\improper SifGuard supply uniform"
|
||||
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has silver trim and brown blazes."
|
||||
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has silver trim and brown blazes."
|
||||
icon_state = "blackutility_sup"
|
||||
worn_state = "blackutility_sup"
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/security
|
||||
name = "\improper SifGuard security uniform"
|
||||
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has silver trim and red blazes."
|
||||
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has silver trim and red blazes."
|
||||
icon_state = "blackutility_sec"
|
||||
worn_state = "blackutility_sec"
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/security/command
|
||||
name = "\improper SifGuard security command uniform"
|
||||
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has gold trim and red blazes."
|
||||
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has gold trim and red blazes."
|
||||
icon_state = "blackutility_seccom"
|
||||
worn_state = "blackutility_seccom"
|
||||
|
||||
/obj/item/clothing/under/utility/expeditionary/command
|
||||
name = "\improper SifGuard command uniform"
|
||||
desc = "The utility uniform of the Sif Homeguard Corps, made from biohazard resistant material. This one has gold trim and gold blazes."
|
||||
desc = "The utility uniform of the Sif Defense Force, made from biohazard resistant material. This one has gold trim and gold blazes."
|
||||
icon_state = "blackutility_com"
|
||||
worn_state = "blackutility_com"
|
||||
|
||||
@@ -222,13 +222,13 @@
|
||||
|
||||
/obj/item/clothing/under/mildress/expeditionary
|
||||
name = "\improper SifGuard dress uniform"
|
||||
desc = "The dress uniform of the Sif Homeguard Corps in silver trim."
|
||||
desc = "The dress uniform of the Sif Defense Force in silver trim."
|
||||
icon_state = "greydress"
|
||||
worn_state = "greydress"
|
||||
|
||||
/obj/item/clothing/under/mildress/expeditionary/command
|
||||
name = "\improper SifGuard command dress uniform"
|
||||
desc = "The dress uniform of the Sif Homeguard Corps in gold trim."
|
||||
desc = "The dress uniform of the Sif Defense Force in gold trim."
|
||||
icon_state = "greydress_com"
|
||||
worn_state = "greydress_com"
|
||||
|
||||
|
||||
@@ -1,27 +1,167 @@
|
||||
/obj/item/clothing/under/seromi
|
||||
name = "small grey smock"
|
||||
desc = "It looks fitted to nonhuman proportions."
|
||||
icon = 'icons/obj/clothing/species/seromi/uniform.dmi'
|
||||
icon_state = "seromi_grey"
|
||||
species_restricted = list("Teshari")
|
||||
|
||||
/obj/item/clothing/under/seromi/smock
|
||||
name = "small grey smock"
|
||||
desc = "It looks fitted to nonhuman proportions."
|
||||
icon_state = "seromi_grey"
|
||||
body_parts_covered = 0 // It's a thin piece of cloth with a neck hole.
|
||||
|
||||
/obj/item/clothing/under/seromi/white
|
||||
/obj/item/clothing/under/seromi/smock/white
|
||||
name = "small white smock"
|
||||
icon_state = "seromi_white"
|
||||
|
||||
/obj/item/clothing/under/seromi/red
|
||||
/obj/item/clothing/under/seromi/smock/red
|
||||
name = "small Security smock"
|
||||
icon_state = "seromi_red"
|
||||
|
||||
/obj/item/clothing/under/seromi/yellow
|
||||
/obj/item/clothing/under/seromi/smock/yellow
|
||||
name = "small Engineering smock"
|
||||
icon_state = "seromi_yellow"
|
||||
|
||||
/obj/item/clothing/under/seromi/medical
|
||||
/obj/item/clothing/under/seromi/smock/medical
|
||||
name = "small Medical uniform"
|
||||
icon_state = "seromi_medical"
|
||||
|
||||
/obj/item/clothing/under/seromi/rainbow
|
||||
|
||||
/obj/item/clothing/under/seromi/smock/science
|
||||
name = "small Research uniform"
|
||||
icon_state = "teshari_science"
|
||||
|
||||
/obj/item/clothing/under/seromi/smock/rainbow
|
||||
name = "small rainbow smock"
|
||||
icon_state = "seromi_rainbow"
|
||||
icon_state = "seromi_rainbow"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat
|
||||
desc = "A Teshari traditional garb, with a modern twist! Made of micro and nanofibres to make it light and billowy, perfect for going fast and stylishly!"
|
||||
icon = 'icons/mob/species/seromi/teshari_uniform.dmi'
|
||||
icon_override = 'icons/mob/species/seromi/teshari_uniform.dmi'
|
||||
icon_state = "tesh_uniform_bo"
|
||||
item_state = "tesh_uniform_bo"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/black_orange
|
||||
name = "black and orange undercoat"
|
||||
icon_state = "tesh_uniform_bo"
|
||||
item_state = "tesh_uniform_bo"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/black_grey
|
||||
name = "black and grey undercoat"
|
||||
icon_state = "tesh_uniform_bg"
|
||||
item_state = "tesh_uniform_bg"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/black_midgrey
|
||||
name = "black and medium grey undercoat"
|
||||
icon_state = "tesh_uniform_bmg"
|
||||
item_state = "tesh_uniform_bmg"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/black_lightgrey
|
||||
name = "black and light grey undercoat"
|
||||
icon_state = "tesh_uniform_blg"
|
||||
item_state = "tesh_uniform_blg"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/black_white
|
||||
name = "black and white undercoat"
|
||||
icon_state = "tesh_uniform_bw"
|
||||
item_state = "tesh_uniform_bw"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/black_red
|
||||
name = "black and red undercoat"
|
||||
icon_state = "tesh_uniform_br"
|
||||
item_state = "tesh_uniform_br"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/black
|
||||
name = "black undercoat"
|
||||
icon_state = "tesh_uniform_bn"
|
||||
item_state = "tesh_uniform_bn"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/black_yellow
|
||||
name = "black and yellow undercoat"
|
||||
icon_state = "tesh_uniform_by"
|
||||
item_state = "tesh_uniform_by"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/black_green
|
||||
name = "black and Green undercoat"
|
||||
icon_state = "tesh_uniform_bgr"
|
||||
item_state = "tesh_uniform_bgr"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/black_blue
|
||||
name = "black and blue undercoat"
|
||||
icon_state = "tesh_uniform_bbl"
|
||||
item_state = "tesh_uniform_bbl"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/black_purple
|
||||
name = "black and purple undercoat"
|
||||
icon_state = "tesh_uniform_bp"
|
||||
item_state = "tesh_uniform_bp"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/black_pink
|
||||
name = "black and pink undercoat"
|
||||
icon_state = "tesh_uniform_bpi"
|
||||
item_state = "tesh_uniform_bpi"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/black_brown
|
||||
name = "black and brown undercoat"
|
||||
icon_state = "tesh_uniform_bbr"
|
||||
item_state = "tesh_uniform_bbr"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/orange_grey
|
||||
name = "orange and grey undercoat"
|
||||
icon_state = "tesh_uniform_og"
|
||||
item_state = "tesh_uniform_og"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/rainbow
|
||||
name = "rainbow undercoat"
|
||||
icon_state = "tesh_uniform_rainbow"
|
||||
item_state = "tesh_uniform_rainbow"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/lightgrey_grey
|
||||
name = "light grey and grey undercoat"
|
||||
icon_state = "tesh_uniform_lgg"
|
||||
item_state = "tesh_uniform_lgg"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/white_grey
|
||||
name = "white and grey undercoat"
|
||||
icon_state = "tesh_uniform_wg"
|
||||
item_state = "tesh_uniform_wg"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/red_grey
|
||||
name = "red and grey undercoat"
|
||||
icon_state = "tesh_uniform_rg"
|
||||
item_state = "tesh_uniform_rg"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/orange
|
||||
name = "orange undercoat"
|
||||
icon_state = "tesh_uniform_on"
|
||||
item_state = "tesh_uniform_on"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/yellow_grey
|
||||
name = "yellow and grey undercoat"
|
||||
icon_state = "tesh_uniform_yg"
|
||||
item_state = "tesh_uniform_yg"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/green_grey
|
||||
name = "green and grey undercoat"
|
||||
icon_state = "tesh_uniform_gg"
|
||||
item_state = "tesh_uniform_gg"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/blue_grey
|
||||
name = "blue and grey undercoat"
|
||||
icon_state = "tesh_uniform_blg"
|
||||
item_state = "tesh_uniform_blg"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/purple_grey
|
||||
name = "purple and grey undercoat"
|
||||
icon_state = "tesh_uniform_pg"
|
||||
item_state = "tesh_uniform_pg"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/pink_grey
|
||||
name = "black and orange undercoat"
|
||||
icon_state = "tesh_uniform_pig"
|
||||
item_state = "tesh_uniform_pig"
|
||||
|
||||
/obj/item/clothing/under/seromi/undercoat/brown_grey
|
||||
name = "purple and grey undercoat"
|
||||
icon_state = "tesh_uniform_brg"
|
||||
item_state = "tesh_uniform_brg"
|
||||
@@ -127,7 +127,7 @@
|
||||
if(bloodsamp.dna != null)
|
||||
data = "Spectometric analysis on provided sample has determined the presence of [bloodsamp.dna.len] strings of DNA.<br><br>"
|
||||
for(var/blood in bloodsamp.dna)
|
||||
data += "\blue Blood type: [bloodsamp.dna[blood]]<br>\nDNA: [blood]<br><br>"
|
||||
data += "<font color='blue'>Blood type: [bloodsamp.dna[blood]]<br>\nDNA: [blood]<br><br></font>"
|
||||
else
|
||||
data += "No DNA found.<br>"
|
||||
P.info = "<b>[src] analysis report #[report_num]</b><br>"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user