mirror of
https://github.com/Aurorastation/Aurora-Old.git
synced 2026-08-24 13:16:18 +01:00
@@ -11,11 +11,17 @@ var/global/floorIsLava = 0
|
||||
if(R_ADMIN & C.holder.rights)
|
||||
C << msg
|
||||
|
||||
/proc/message_mods(var/msg)
|
||||
msg = "<span class=\"admin\"><span class=\"prefix\">MOD LOG:</span> <span class=\"message\">[msg]</span></span>"
|
||||
for(var/client/C in admins)
|
||||
if(R_MOD & C.holder.rights && !(R_ADMIN & C.holder.rights))
|
||||
C << msg
|
||||
|
||||
/proc/msg_admin_attack(var/text) //Toggleable Attack Messages
|
||||
log_attack(text)
|
||||
var/rendered = "<span class=\"admin\"><span class=\"prefix\">ATTACK:</span> <span class=\"message\">[text]</span></span>"
|
||||
for(var/client/C in admins)
|
||||
if(R_MOD || R_ADMIN & C.holder.rights)
|
||||
if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights))
|
||||
if(C.prefs.toggles & CHAT_ATTACKLOGS)
|
||||
var/msg = rendered
|
||||
C << msg
|
||||
@@ -28,14 +34,18 @@ var/global/floorIsLava = 0
|
||||
set name = "Show Player Panel"
|
||||
set desc="Edit player (respawn, ban, heal, etc)"
|
||||
|
||||
if(!check_rights(R_ADMIN|R_MOD)) return
|
||||
|
||||
if(!M)
|
||||
usr << "You seem to be selecting a mob that doesn't exist anymore."
|
||||
return
|
||||
/*
|
||||
if (!istype(src,/datum/admins))
|
||||
src = usr.client.holder
|
||||
if (!istype(src,/datum/admins))
|
||||
usr << "Error: you are not an admin!"
|
||||
return
|
||||
*/
|
||||
|
||||
var/body = "<html><head><title>Options for [M.key]</title></head>"
|
||||
body += "<body>Options panel for <b>[M]</b>"
|
||||
@@ -192,11 +202,14 @@ var/global/floorIsLava = 0
|
||||
/datum/admins/proc/PlayerNotes()
|
||||
set category = "Admin"
|
||||
set name = "Player Notes"
|
||||
if (!istype(src,/datum/admins))
|
||||
/* if (!istype(src,/datum/admins))
|
||||
src = usr.client.holder
|
||||
if (!istype(src,/datum/admins))
|
||||
usr << "Error: you are not an admin!"
|
||||
return
|
||||
*/
|
||||
if(!check_rights(R_ADMIN|R_MOD))
|
||||
return
|
||||
PlayerNotesPage(1)
|
||||
|
||||
/datum/admins/proc/PlayerNotesPage(page)
|
||||
@@ -246,7 +259,6 @@ var/global/floorIsLava = 0
|
||||
if(!infos || !infos.len) return 0
|
||||
else return 1
|
||||
|
||||
|
||||
/datum/admins/proc/show_player_info(var/key as text)
|
||||
set category = "Admin"
|
||||
set name = "Show Player Info"
|
||||
@@ -855,11 +867,12 @@ var/global/floorIsLava = 0
|
||||
set desc="Delay the game start/end"
|
||||
set name="Delay"
|
||||
|
||||
if(!check_rights(R_SERVER|R_DEV)) return
|
||||
if(!check_rights(R_SERVER|R_DEBUG)) return
|
||||
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_mods("\blue [key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1)
|
||||
return //alert("Round end delayed", null, null, null, null, null)
|
||||
going = !( going )
|
||||
if (!( going ))
|
||||
@@ -1237,6 +1250,7 @@ proc/move_alien_ship()
|
||||
|
||||
log_admin("[key_name(usr)] winded [key_name(M)]!")
|
||||
message_admins("[key_name_admin(usr)] winded [key_name_admin(M)]!", 1)
|
||||
message_mods("[key_name_admin(usr)] winded [key_name_admin(M)]!")
|
||||
// feedback_add_details("admin_verb","WIND") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
// Chop chop.
|
||||
return
|
||||
@@ -1249,4 +1263,5 @@ proc/move_alien_ship()
|
||||
|
||||
log_admin("[key_name(usr)] unwinded [key_name(M)]!")
|
||||
message_admins("[key_name_admin(usr)] unwinded [key_name_admin(M)]!", 1)
|
||||
message_mods("[key_name_admin(usr)] unwinded [key_name_admin(M)]!", 1)
|
||||
return
|
||||
@@ -1,17 +1,17 @@
|
||||
//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless
|
||||
var/list/admin_verbs_default = list(
|
||||
/datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags*/
|
||||
/client/proc/player_panel,
|
||||
/client/proc/toggleadminhelpsound, /*toggles whether we hear a sound when adminhelps/PMs are used*/
|
||||
/client/proc/deadmin_self, /*destroys our own admin datum so we can play as a regular player*/
|
||||
/client/proc/hide_verbs, /*hides all our adminverbs*/
|
||||
/client/proc/hide_most_verbs, /*hides all our hideable adminverbs*/
|
||||
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/
|
||||
/client/proc/check_antagonists, /*shows all antags*/
|
||||
/client/proc/cmd_mentor_check_new_players
|
||||
// /client/proc/deadchat /*toggles deadchat on/off*/
|
||||
)
|
||||
var/list/admin_verbs_admin = list(
|
||||
/datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags*/
|
||||
/client/proc/check_antagonists, /*shows all antags*/
|
||||
/client/proc/alertlevels,
|
||||
/client/proc/cmd_admin_wind,
|
||||
/client/proc/cmd_admin_unwind,
|
||||
@@ -53,11 +53,11 @@ var/list/admin_verbs_admin = list(
|
||||
/client/proc/check_antagonists,
|
||||
/client/proc/admin_memo, /*admin memo system. show/delete/write. +SERVER needed to delete admin memos of others*/
|
||||
/client/proc/dsay, /*talk in deadchat using our ckey/fakekey*/
|
||||
/client/proc/toggleprayers, /*toggles prayers on/off*/
|
||||
// /client/proc/toggle_hear_deadcast, /*toggles whether we hear deadchat*/
|
||||
/client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/
|
||||
/client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/
|
||||
/client/proc/secrets,
|
||||
/client/proc/toggleprayers,
|
||||
/datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/
|
||||
/datum/admins/proc/togglelooc,
|
||||
/datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/
|
||||
@@ -96,7 +96,7 @@ var/list/admin_verbs_fun = list(
|
||||
/client/proc/cmd_admin_dress,
|
||||
/client/proc/cmd_admin_gib_self,
|
||||
/client/proc/drop_bomb,
|
||||
/client/proc/everyone_random,
|
||||
/client/proc/everyone_random,
|
||||
/client/proc/cinematic,
|
||||
/client/proc/one_click_antag,
|
||||
/datum/admins/proc/toggle_aliens,
|
||||
@@ -105,6 +105,7 @@ var/list/admin_verbs_fun = list(
|
||||
/client/proc/cmd_admin_add_freeform_ai_law,
|
||||
/client/proc/cmd_admin_add_random_ai_law,
|
||||
/client/proc/make_sound,
|
||||
/client/proc/make_area_sound,
|
||||
/client/proc/toggle_random_events,
|
||||
/client/proc/set_ooc,
|
||||
/client/proc/editappear
|
||||
@@ -112,8 +113,6 @@ var/list/admin_verbs_fun = list(
|
||||
var/list/admin_verbs_dev = list(
|
||||
/client/proc/dsay,
|
||||
/client/proc/togglebuildmodeself,
|
||||
/datum/admins/proc/restart,
|
||||
/datum/admins/proc/delay,
|
||||
/client/proc/giveruntimelog,
|
||||
/client/proc/getruntimelog,
|
||||
/client/proc/cmd_admin_list_open_jobs,
|
||||
@@ -128,12 +127,11 @@ var/list/admin_verbs_dev = list(
|
||||
/client/proc/cmd_admin_delete,
|
||||
/client/proc/cmd_debug_del_all,
|
||||
/client/proc/cmd_debug_tog_aliens,
|
||||
/datum/admins/proc/restart,
|
||||
/client/proc/air_report,
|
||||
/client/proc/reload_admins,
|
||||
/client/proc/restart_controller,
|
||||
/client/proc/enable_debug_verbs,
|
||||
/client/proc/callproc,
|
||||
/client/proc/toggleattacklogs,
|
||||
/client/proc/toggledebuglogs,
|
||||
/client/proc/SDQL_query,
|
||||
/client/proc/SDQL2_query,
|
||||
@@ -168,8 +166,10 @@ var/list/admin_verbs_server = list(
|
||||
/client/proc/check_customitem_activity
|
||||
)
|
||||
var/list/admin_verbs_debug = list(
|
||||
/client/proc/getruntimelog, /*allows us to access runtime logs to somebody*/
|
||||
/client/proc/getruntimelog, /*allows us to access runtime logs to somebody*/
|
||||
/client/proc/cmd_admin_list_open_jobs,
|
||||
/datum/admins/proc/restart,
|
||||
/datum/admins/proc/delay,
|
||||
/client/proc/Debug2,
|
||||
/client/proc/kill_air,
|
||||
/client/proc/ZASSettings,
|
||||
@@ -188,7 +188,6 @@ var/list/admin_verbs_debug = list(
|
||||
/client/proc/toggledebuglogs,
|
||||
/client/proc/SDQL_query,
|
||||
/client/proc/SDQL2_query,
|
||||
/client/proc/cmd_dev_bst,
|
||||
/client/proc/cmd_dev_reset_gravity
|
||||
)
|
||||
var/list/admin_verbs_possess = list(
|
||||
@@ -240,6 +239,7 @@ var/list/admin_verbs_hideable = list(
|
||||
/client/proc/cmd_admin_add_random_ai_law,
|
||||
/client/proc/cmd_admin_create_centcom_report,
|
||||
/client/proc/make_sound,
|
||||
/client/proc/make_area_sound,
|
||||
/client/proc/toggle_random_events,
|
||||
/client/proc/cmd_admin_add_random_ai_law,
|
||||
/client/proc/Set_Holiday,
|
||||
@@ -274,6 +274,8 @@ var/list/admin_verbs_hideable = list(
|
||||
/proc/release
|
||||
)
|
||||
var/list/admin_verbs_mod = list(
|
||||
/client/proc/check_antagonists, /*shows all antags*/
|
||||
/client/proc/cmd_admin_check_contents,
|
||||
/client/proc/cmd_admin_wind,
|
||||
/client/proc/cmd_admin_unwind,
|
||||
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
|
||||
@@ -281,15 +283,18 @@ var/list/admin_verbs_mod = list(
|
||||
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game.*/
|
||||
/client/proc/toggleattacklogs,
|
||||
/client/proc/toggledebuglogs,
|
||||
/client/proc/toggleprayers,
|
||||
/datum/admins/proc/PlayerNotes,
|
||||
/client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/
|
||||
/client/proc/cmd_mod_say,
|
||||
/client/proc/check_ai_laws,
|
||||
/datum/admins/proc/show_player_info,
|
||||
/client/proc/player_panel_new,
|
||||
/client/proc/dsay,
|
||||
/datum/admins/proc/show_skills,
|
||||
/datum/admins/proc/show_player_panel,
|
||||
/client/proc/check_antagonists,
|
||||
/datum/admins/proc/adjump,
|
||||
/client/proc/jobbans,
|
||||
/client/proc/cmd_admin_subtle_message /*send an message to somebody as a 'voice in their head'*/
|
||||
)
|
||||
@@ -520,7 +525,7 @@ var/list/admin_verbs_mod = list(
|
||||
#define AUTOBANTIME 10
|
||||
|
||||
/client/proc/warn(warned_ckey)
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
if(!check_rights(R_ADMIN|R_MOD)) return
|
||||
|
||||
if(!warned_ckey || !istext(warned_ckey)) return
|
||||
if(warned_ckey in admin_datums)
|
||||
@@ -540,18 +545,22 @@ var/list/admin_verbs_mod = list(
|
||||
ban_unban_log_save("[ckey] warned [warned_ckey], resulting in a [AUTOBANTIME] minute autoban.")
|
||||
if(C)
|
||||
message_admins("[key_name_admin(src)] has warned [key_name_admin(C)] resulting in a [AUTOBANTIME] minute ban.")
|
||||
message_mods("[key_name_admin(src)] has warned [key_name_admin(C)] resulting in a [AUTOBANTIME] minute ban.")
|
||||
C << "<font color='red'><BIG><B>You have been autobanned due to a warning by [ckey].</B></BIG><br>This is a temporary ban, it will be removed in [AUTOBANTIME] minutes."
|
||||
del(C)
|
||||
else
|
||||
message_admins("[key_name_admin(src)] has warned [warned_ckey] resulting in a [AUTOBANTIME] minute ban.")
|
||||
message_mods("[key_name_admin(src)] has warned [warned_ckey] resulting in a [AUTOBANTIME] minute ban.")
|
||||
AddBan(warned_ckey, D.last_id, "Autobanning due to too many formal warnings", ckey, 1, AUTOBANTIME)
|
||||
feedback_inc("ban_warn",1)
|
||||
else
|
||||
if(C)
|
||||
C << "<font color='red'><BIG><B>You have been formally warned by an administrator.</B></BIG><br>Further warnings will result in an autoban.</font>"
|
||||
message_admins("[key_name_admin(src)] has warned [key_name_admin(C)]. They have [MAX_WARNS-D.warns] strikes remaining.")
|
||||
message_mods("[key_name_admin(src)] has warned [key_name_admin(C)]. They have [MAX_WARNS-D.warns] strikes remaining.")
|
||||
else
|
||||
message_admins("[key_name_admin(src)] has warned [warned_ckey] (DC). They have [MAX_WARNS-D.warns] strikes remaining.")
|
||||
message_mods("[key_name_admin(src)] has warned [warned_ckey] (DC). They have [MAX_WARNS-D.warns] strikes remaining.")
|
||||
|
||||
feedback_add_details("admin_verb","WARN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -658,6 +667,23 @@ var/list/admin_verbs_mod = list(
|
||||
message_admins("\blue [key_name_admin(usr)] made [O] at [O.x], [O.y], [O.z]. make a sound", 1)
|
||||
feedback_add_details("admin_verb","MS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/make_area_sound(var/turf/T in world) // -- TLE
|
||||
set category = "Special Verbs"
|
||||
set name = "Make Area Sound"
|
||||
set desc = "Display a message to everyone in the area (Experimental)"
|
||||
if(T)
|
||||
var/message = input("What do you want the message to be?", "Make Area Sound (Experimental)") as text|null
|
||||
if(!message)
|
||||
return
|
||||
var/area/A = get_area(T)
|
||||
if(!A == A.master)
|
||||
A = A.master
|
||||
for(var/area/SubA in A.related)
|
||||
for (var/mob/V in SubA)
|
||||
V.show_message(message, 2)
|
||||
log_admin("[key_name(usr)] made [A.name] make a sound")
|
||||
message_admins("\blue [key_name_admin(usr)] made [A.name] make a sound", 1)
|
||||
feedback_add_details("admin_verb","MAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/togglebuildmodeself()
|
||||
set name = "Toggle Build Mode Self"
|
||||
@@ -797,6 +823,9 @@ var/list/admin_verbs_mod = list(
|
||||
/client/proc/playernotes()
|
||||
set name = "Show Player Info"
|
||||
set category = "Admin"
|
||||
if(!check_rights(R_ADMIN|R_MOD))
|
||||
return
|
||||
|
||||
if(holder)
|
||||
holder.PlayerNotes()
|
||||
return
|
||||
|
||||
@@ -323,7 +323,13 @@
|
||||
if (!usr.client.holder)
|
||||
return
|
||||
var/dat = "<html><head><title>Player Menu</title></head>"
|
||||
dat += "<body><table border=1 cellspacing=5><B><tr><th>Name</th><th>Real Name</th><th>Assigned Job</th><th>Key</th><th>Options</th><th>PM</th><th>Traitor?</th></tr></B>"
|
||||
dat += "<body><table border=1 cellspacing=5><B><tr><th>Name</th><th>Real Name</th><th>Assigned Job</th><th>Key</th><th>Options</th><th>PM</th>"
|
||||
|
||||
if(check_rights(R_ADMIN|R_MOD, 0))
|
||||
dat += "<th>Traitor?</th></tr></B>"
|
||||
else
|
||||
dat += "<th>View Var's</th></tr></B>"
|
||||
|
||||
//add <th>IP:</th> to this if wanting to add back in IP checking
|
||||
//add <td>(IP: [M.lastKnownIP])</td> if you want to know their ip to the lists below
|
||||
var/list/mobs = sortmobs()
|
||||
@@ -364,13 +370,16 @@
|
||||
<td align=center><A HREF='?src=\ref[src];adminplayeropts=\ref[M]'>X</A></td>
|
||||
<td align=center><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td>
|
||||
"}
|
||||
switch(is_special_character(M))
|
||||
if(0)
|
||||
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'>Traitor?</A></td>"}
|
||||
if(1)
|
||||
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red>Traitor?</font></A></td>"}
|
||||
if(2)
|
||||
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red><b>Traitor?</b></font></A></td>"}
|
||||
if(!check_rights(R_ADMIN|R_MOD, 0))
|
||||
dat += {"<td align=center><a HREF='?_src_=vars;Vars=\ref[M]'>VV</a></td>"}
|
||||
else
|
||||
switch(is_special_character(M))
|
||||
if(0)
|
||||
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'>Traitor?</A></td>"}
|
||||
if(1)
|
||||
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red>Traitor?</font></A></td>"}
|
||||
if(2)
|
||||
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red><b>Traitor?</b></font></A></td>"}
|
||||
|
||||
dat += "</table></body></html>"
|
||||
|
||||
|
||||
@@ -48,6 +48,10 @@
|
||||
log_admin("[key_name(usr)] has spawned vox raiders.")
|
||||
if(!src.makeVoxRaiders())
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
if("12")
|
||||
log_admin("[key_name(usr)] has spawned a vampire.")
|
||||
if(!src.makeVampire())
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"])
|
||||
var/adminckey = href_list["dbsearchadmin"]
|
||||
var/playerckey = href_list["dbsearchckey"]
|
||||
@@ -248,6 +252,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_mods("\blue [key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].")
|
||||
href_list["secretsadmin"] = "check_antagonist"
|
||||
|
||||
else if(href_list["simplemake"])
|
||||
@@ -1470,6 +1475,20 @@
|
||||
log_admin("[src.owner] replied to [key_name(H)]'s Syndicate message with the message [input].")
|
||||
H << "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from your benefactor. Message as follows, agent. <b>\"[input]\"</b> Message ends.\""
|
||||
|
||||
else if(href_list["CentcommAIReply"])
|
||||
var/mob/living/silicon/ai/H = locate(href_list["CentcommAIReply"])
|
||||
if(!istype(H))
|
||||
usr << "This can only be used on instances of type /mob/living/silicon"
|
||||
return
|
||||
|
||||
var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via encripted.","Outgoing message from Central Command", "")
|
||||
if(!input) return
|
||||
|
||||
src.owner << "You sent [input] to [H] via a secure channel."
|
||||
log_admin("[src.owner] replied to [key_name(H)]'s Centcomm message with the message [input].")
|
||||
message_admins("[src.owner] replied to [key_name(H)]'s Centcom message with: \"[input]\"")
|
||||
H << "An encripted connection was made and a file was uploaded to your systems. \"Please stand by for a message from Central Command. Message as follows. <b>\"[input]\"</b> Message ends.\""
|
||||
|
||||
else if(href_list["CentcommFaxView"])
|
||||
var/info = locate(href_list["CentcommFaxView"])
|
||||
|
||||
@@ -1510,6 +1529,7 @@
|
||||
src.owner << "Message reply to transmitted successfully."
|
||||
log_admin("[key_name(src.owner)] replied to a fax message from [key_name(H)]: [input]")
|
||||
message_admins("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]", 1)
|
||||
message_mods("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]")
|
||||
|
||||
|
||||
else if(href_list["jumpto"])
|
||||
|
||||
@@ -33,7 +33,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
if(!msg) return
|
||||
var/original_msg = msg
|
||||
|
||||
|
||||
|
||||
|
||||
//explode the input msg into a list
|
||||
var/list/msglist = text2list(msg, " ")
|
||||
@@ -94,9 +94,11 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
msg = "\blue <b><font color=red>HELP: </font>[get_options_bar(mob, 2, 1, 1)][ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""]:</b> [msg]"
|
||||
|
||||
//send this msg to all admins
|
||||
var/admin_number_present = 0
|
||||
var/admin_number_afk = 0
|
||||
for(var/client/X in admins)
|
||||
if((R_ADMIN|R_MOD) & X.holder.rights)
|
||||
admin_number_present++
|
||||
if(X.is_afk())
|
||||
admin_number_afk++
|
||||
if(X.prefs.toggles & SOUND_ADMINHELP)
|
||||
@@ -106,7 +108,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
//show it to the person adminhelping too
|
||||
src << "<font color='blue'>PM to-<b>Admins</b>: [original_msg]</font>"
|
||||
|
||||
var/admin_number_present = admins.len - admin_number_afk
|
||||
admin_number_present = (admin_number_present - admin_number_afk)
|
||||
log_admin("HELP: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins.")
|
||||
if(admin_number_present <= 0)
|
||||
if(!admin_number_afk)
|
||||
|
||||
@@ -31,7 +31,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
set category = "Debug"
|
||||
set name = "Advanced ProcCall"
|
||||
|
||||
if(!check_rights(R_DEBUG|R_DEV)) return
|
||||
if(!check_rights(R_DEBUG)) return
|
||||
|
||||
spawn(0)
|
||||
var/target = null
|
||||
@@ -436,7 +436,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
GLOBAL_RADIO_TYPE = !GLOBAL_RADIO_TYPE // toggle
|
||||
log_admin("[key_name(src)] has turned the experimental radio system [GLOBAL_RADIO_TYPE ? "on" : "off"].")
|
||||
message_admins("[key_name_admin(src)] has turned the experimental radio system [GLOBAL_RADIO_TYPE ? "on" : "off"].", 0)
|
||||
msg_scopes("[key_name_admin(src)] has turned the experimental radio system [GLOBAL_RADIO_TYPE ? "on" : "off"].", 0)
|
||||
msg_scopes("[key_name_admin(src)] has turned the experimental radio system [GLOBAL_RADIO_TYPE ? "on" : "off"].", 1)
|
||||
feedback_add_details("admin_verb","SRM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_areatest()
|
||||
@@ -1103,11 +1103,12 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
return
|
||||
|
||||
/client/proc/startSinglo()
|
||||
|
||||
set category = "Debug"
|
||||
set name = "Start Singularity"
|
||||
set desc = "Sets up the singularity and all machines to get power flowing through the station"
|
||||
|
||||
if(!check_rights(R_DEBUG)) return
|
||||
|
||||
if(alert("Are you sure? This will start up the engine. Should only be used during debug!",,"Yes","No") != "Yes")
|
||||
return
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ var/list/debug_verbs = list (
|
||||
,/client/proc/splash
|
||||
,/client/proc/cmd_admin_areatest
|
||||
,/client/proc/cmd_admin_rejuvenate
|
||||
,/datum/admins/proc/show_traitor_panel
|
||||
// ,/datum/admins/proc/show_traitor_panel //What has this got to do with mapping
|
||||
,/client/proc/print_jobban_old
|
||||
,/client/proc/print_jobban_old_filter
|
||||
,/client/proc/forceEvent
|
||||
|
||||
@@ -264,6 +264,12 @@ var/list/forbidden_varedit_object_types = list(
|
||||
if("marked datum")
|
||||
L[L.Find(variable)] = holder.marked_datum
|
||||
|
||||
//Runtimes >_< List's are like organised messes.
|
||||
//This worked the other day.
|
||||
// world.log << "### VarEdit by [src]: [variable]=[html_encode("[L[L.Find(variable)]]")]"
|
||||
// log_admin("[key_name(src)] modified [variable] to [L[L.Find(variable)]]")
|
||||
// message_admins("[key_name_admin(src)] modified [variable] to [L[L.Find(variable)]]", 1)
|
||||
// msg_scopes("[key_name_admin(src)] modified [variable] to [L[L.Find(variable)]]", 1) // Tell dev's to but not log twice
|
||||
|
||||
/client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0)
|
||||
if(!check_rights(R_VAREDIT|R_DEV)) return
|
||||
@@ -498,4 +504,4 @@ var/list/forbidden_varedit_object_types = list(
|
||||
world.log << "### VarEdit by [src]: [O.type] [variable]=[html_encode("[O.vars[variable]]")]"
|
||||
log_admin("[key_name(src)] modified [original_name]'s [variable] to [O.vars[variable]]")
|
||||
message_admins("[key_name_admin(src)] modified [original_name]'s [variable] to [O.vars[variable]]", 1)
|
||||
msg_scopes("[key_name_admin(src)] modified [original_name]'s [variable] to [O.vars[variable]]", 1) // Tell dev's to but look at the logs
|
||||
msg_scopes("[key_name_admin(src)] modified [original_name]'s [variable] to [O.vars[variable]]", 1) // Tell dev's to but not log twice
|
||||
|
||||
@@ -18,6 +18,7 @@ client/proc/one_click_antag()
|
||||
<a href='?src=\ref[src];makeAntag=5'>Make Malf AI</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=6'>Make Wizard (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=11'>Make Vox Raiders (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=12'>Make Vampire</a><br>
|
||||
"}
|
||||
/* These dont work just yet
|
||||
Ninja, aliens and deathsquad I have not looked into yet
|
||||
@@ -100,9 +101,10 @@ client/proc/one_click_antag()
|
||||
if(!applicant.stat)
|
||||
if(applicant.mind)
|
||||
if (!applicant.mind.special_role)
|
||||
if(!jobban_isbanned(applicant, "changeling") && !jobban_isbanned(applicant, "Syndicate"))
|
||||
if(!(applicant.job in temp.restricted_jobs))
|
||||
candidates += applicant
|
||||
if(applicant.species.name != "Machine")
|
||||
if(!jobban_isbanned(applicant, "changeling") && !jobban_isbanned(applicant, "Syndicate"))
|
||||
if(!(applicant.job in temp.restricted_jobs))
|
||||
candidates += applicant
|
||||
|
||||
if(candidates.len)
|
||||
var/numChanglings = min(candidates.len, 3)
|
||||
@@ -520,4 +522,35 @@ client/proc/one_click_antag()
|
||||
ticker.mode.traitors += new_vox.mind
|
||||
new_vox.equip_vox_raider()
|
||||
|
||||
return new_vox
|
||||
return new_vox
|
||||
|
||||
/datum/admins/proc/makeVampire()
|
||||
|
||||
var/datum/game_mode/vampire/temp = new
|
||||
if(config.protect_roles_from_antagonist)
|
||||
temp.restricted_jobs += temp.protected_jobs
|
||||
|
||||
var/list/mob/living/carbon/human/candidates = list()
|
||||
var/mob/living/carbon/human/H = null
|
||||
|
||||
for(var/mob/living/carbon/human/applicant in player_list)
|
||||
if(applicant.client.prefs.be_special & BE_VAMPIRE)
|
||||
if(!applicant.stat)
|
||||
if(applicant.mind)
|
||||
if (!applicant.mind.special_role)
|
||||
if(applicant.species.name != "Machine")
|
||||
if(!jobban_isbanned(applicant, "vampire") && !jobban_isbanned(applicant, "Syndicate"))
|
||||
if(!(applicant.job in temp.restricted_jobs))
|
||||
candidates += applicant
|
||||
|
||||
if(candidates.len)
|
||||
var/numVampires = min(candidates.len, 3)
|
||||
|
||||
for(var/i = 0, i<numVampires, i++)
|
||||
H = pick(candidates)
|
||||
H.mind.make_Vampire()
|
||||
candidates.Remove(H)
|
||||
|
||||
return 1
|
||||
|
||||
return 0
|
||||
@@ -20,19 +20,27 @@
|
||||
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>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[src]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>):</b> [msg]"
|
||||
|
||||
for(var/client/C in admins)
|
||||
if(C.prefs.toggles & CHAT_PRAYER)
|
||||
if(((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights)) && (C.prefs.toggles & CHAT_PRAYER))
|
||||
C << msg
|
||||
usr << "Your prayers have been received by the gods."
|
||||
|
||||
feedback_add_details("admin_verb","PR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
//log_admin("HELP: [key_name(src)]: [msg]")
|
||||
|
||||
/proc/Centcomm_announce(var/text , var/mob/Sender , var/iamessage)
|
||||
//Stealing the second var because why not)
|
||||
/proc/Centcomm_announce(var/text , var/mob/Sender , var/silicon = 0 , var/iamessage)
|
||||
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
|
||||
msg = "\blue <b><font color=orange>CENTCOMM[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>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentcommReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
|
||||
admins << msg
|
||||
if(silicon)
|
||||
msg = "\blue <b><font color=orange>CENTCOMM(A.L.I.C.E.):</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>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentcommAIReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
|
||||
else
|
||||
msg = "\blue <b><font color=orange>CENTCOMM[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>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentcommReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
|
||||
for(var/client/C in admins)
|
||||
if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights))
|
||||
C << msg
|
||||
|
||||
/proc/Syndicate_announce(var/text , var/mob/Sender)
|
||||
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
|
||||
msg = "\blue <b><font color=crimson>SYNDICATE:</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>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<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]"
|
||||
admins << msg
|
||||
for(var/client/C in admins)
|
||||
if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights))
|
||||
C << msg
|
||||
@@ -46,6 +46,7 @@
|
||||
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]")
|
||||
message_mods("[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
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
var/obj/item/weapon/weldingtool/T = W
|
||||
if(T.welding & prob(50))
|
||||
message_admins("[key_name_admin(user)] triggered a welderpack explosion at ([loc.x],[loc.y],[loc.z]) - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>")
|
||||
message_mods("[key_name_admin(user)] triggered a welderpack explosion at ([loc.x],[loc.y],[loc.z]) - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>")
|
||||
log_game("[key_name(user)] triggered a fueltank explosion.")
|
||||
user << "\red That was stupid of you."
|
||||
explosion(get_turf(src),-1,0,2)
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
return
|
||||
cmd_admin_irc_pm()
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
||||
//Logs all hrefs
|
||||
@@ -155,6 +155,12 @@
|
||||
if(holder)
|
||||
add_admin_verbs()
|
||||
admin_memo_show()
|
||||
if(!ooc_allowed)
|
||||
src << "<span class='alert'>OOC is Disabled</span>"
|
||||
if(!looc_allowed)
|
||||
src << "<span class='alert'>LOOC is Disabled</span>"
|
||||
if(!dsay_allowed)
|
||||
src << "<span class='alert'>Deadchat is Disabled</span>"
|
||||
|
||||
log_client_to_db()
|
||||
|
||||
@@ -255,7 +261,7 @@
|
||||
//send resources to the client. It's here in its own proc so we can move it around easiliy if need be
|
||||
/client/proc/send_resources()
|
||||
// preload_vox() //Causes long delays with initial start window and subsequent windows when first logged in.
|
||||
|
||||
|
||||
getFiles(
|
||||
'html/search.js',
|
||||
'html/panels.css',
|
||||
|
||||
@@ -1401,6 +1401,17 @@ datum/preferences
|
||||
|
||||
else continue
|
||||
|
||||
// Wheelchair necessary?
|
||||
var/datum/organ/external/l_foot = character.get_organ("l_foot")
|
||||
var/datum/organ/external/r_foot = character.get_organ("r_foot")
|
||||
if((!l_foot || l_foot.status & ORGAN_DESTROYED) && (!r_foot || r_foot.status & ORGAN_DESTROYED))
|
||||
var/obj/structure/stool/bed/chair/wheelchair/W = new /obj/structure/stool/bed/chair/wheelchair (character.loc)
|
||||
character.buckled = W
|
||||
character.update_canmove()
|
||||
W.dir = character.dir
|
||||
W.buckled_mob = character
|
||||
W.add_fingerprint(character)
|
||||
|
||||
if(underwear > underwear_m.len || underwear < 1)
|
||||
underwear = 0 //I'm sure this is 100% unnecessary, but I'm paranoid... sue me. //HAH NOW NO MORE MAGIC CLONING UNDIES
|
||||
character.underwear = underwear
|
||||
|
||||
@@ -25,7 +25,7 @@ proc/populate_gear_list()
|
||||
path = /obj/item/weapon/dice/d20
|
||||
cost = 1
|
||||
|
||||
/datum/gear/dice
|
||||
/datum/gear/wallet
|
||||
display_name = "wallet"
|
||||
path = /obj/item/weapon/storage/wallet
|
||||
cost = 2
|
||||
@@ -41,6 +41,51 @@ proc/populate_gear_list()
|
||||
path = /obj/item/weapon/cane
|
||||
cost = 2
|
||||
|
||||
/datum/gear/briefcase
|
||||
display_name = "briefcase"
|
||||
path = /obj/item/weapon/storage/briefcase
|
||||
cost = 2
|
||||
|
||||
/datum/gear/securebriefcase
|
||||
display_name = "secure briefcase"
|
||||
path = /obj/item/weapon/storage/secure/briefcase
|
||||
cost = 3
|
||||
|
||||
/datum/gear/zippolighter
|
||||
display_name = "zippo lighter"
|
||||
path = /obj/item/weapon/lighter/zippo
|
||||
cost = 1
|
||||
|
||||
/datum/gear/recorder
|
||||
display_name = "universal recorder"
|
||||
path = /obj/item/device/taperecorder
|
||||
cost = 2
|
||||
|
||||
/datum/gear/camera
|
||||
display_name = "camera"
|
||||
path = /obj/item/device/camera
|
||||
cost = 1
|
||||
|
||||
/datum/gear/clipboard
|
||||
display_name = "clipboard"
|
||||
path = /obj/item/weapon/clipboard
|
||||
cost = 1
|
||||
|
||||
/datum/gear/redpen
|
||||
display_name = "red pen"
|
||||
path = /obj/item/weapon/pen/red
|
||||
cost = 1
|
||||
|
||||
/datum/gear/bluepen
|
||||
display_name = "blue pen"
|
||||
path = /obj/item/weapon/pen/blue
|
||||
cost = 1
|
||||
|
||||
/datum/gear/flask
|
||||
display_name = "flask"
|
||||
path = /obj/item/weapon/reagent_containers/food/drinks/flask/barflask
|
||||
cost = 2
|
||||
|
||||
/datum/gear/tie_horrible
|
||||
display_name = "horrible tie"
|
||||
path = /obj/item/clothing/tie/horrible
|
||||
@@ -395,12 +440,6 @@ proc/populate_gear_list()
|
||||
// slot = slot_w_uniform
|
||||
cost = 3
|
||||
|
||||
/datum/gear/exec_suit
|
||||
display_name = "executive suit"
|
||||
path = /obj/item/clothing/under/suit_jacket/really_black
|
||||
// slot = slot_w_uniform
|
||||
cost = 3
|
||||
|
||||
/datum/gear/oldmansuit
|
||||
display_name = "old man suit"
|
||||
path = /obj/item/clothing/under/lawyer/oldman
|
||||
@@ -423,10 +462,16 @@ proc/populate_gear_list()
|
||||
|
||||
/datum/gear/armpit
|
||||
display_name = "shoulder holster"
|
||||
// path = /obj/item/clothing/tie/holster/armpit
|
||||
path = /obj/item/clothing/tie/holster/armpit
|
||||
cost = 3
|
||||
allowed_roles = list("Captain", "Head of Personnel", "Security Officer", "Head of Security")
|
||||
|
||||
|
||||
/datum/gear/normal_beret
|
||||
display_name = "beret"
|
||||
path = /obj/item/clothing/head/beret
|
||||
cost = 3
|
||||
|
||||
/datum/gear/sec_beret
|
||||
display_name = "security beret"
|
||||
path = /obj/item/clothing/head/beret/sec
|
||||
|
||||
@@ -390,14 +390,14 @@
|
||||
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding."
|
||||
icon_state = "rig0-medical"
|
||||
item_state = "medical_helm"
|
||||
species_restricted = list("tajara")
|
||||
species_restricted = list("Tajaran")
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/medical/unathi
|
||||
name = "medical hardsuit helmet"
|
||||
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding."
|
||||
icon_state = "rig0-medical"
|
||||
item_state = "medical_helm"
|
||||
species_restricted = list("unathi")
|
||||
species_restricted = list("Unathi")
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/medical/skrell
|
||||
name = "medical hardsuit helmet"
|
||||
|
||||
@@ -59,10 +59,11 @@ var/scheduledEvent = null
|
||||
set name = "Trigger Event (Debug Only)"
|
||||
set category = "Debug"
|
||||
|
||||
if(!check_rights(R_DEBUG)) return
|
||||
|
||||
if(!holder)
|
||||
return
|
||||
|
||||
if(ispath(type))
|
||||
new type
|
||||
message_admins("[key_name_admin(usr)] has triggered an event. ([type])", 1)
|
||||
msg_scopes("[key_name_admin(usr)] has triggered an event. ([type])", 0)
|
||||
|
||||
@@ -76,7 +76,9 @@
|
||||
if(hard_to_hear)
|
||||
message = stars(message)
|
||||
|
||||
var/speaker_name = speaker.name
|
||||
var/speaker_name
|
||||
if(speaker)
|
||||
speaker_name = speaker.name
|
||||
|
||||
if(vname)
|
||||
speaker_name = vname
|
||||
|
||||
@@ -131,13 +131,15 @@
|
||||
//and leave an attack log
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Bit [src.name] ([src.ckey]) in the neck and draining their blood</font>")
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been bit in the neck by [M.name] ([M.ckey])</font>")
|
||||
msg_admin_attack("[M.name] ([M.ckey]) bit [src.name] ([src.ckey]) in the neck")
|
||||
msg_admin_attack("[M.name] ([M.ckey]) bit [src.name] ([src.ckey]) in the neck - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[M.x];Y=[M.y];Z=[M.z]'>JMP</a>")
|
||||
M.handle_bloodsucking(src)
|
||||
// var/datum/organ/external/affecting = get_organ(src.zone_sel.selecting)
|
||||
// affecting.take_damage(10,0,1,0,"dual puncture marks") //this does not work and causes runtimes.
|
||||
return
|
||||
//end vampire codes
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>[pick(attack.attack_verb)]ed [src.name] ([src.ckey])</font>")
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been [pick(attack.attack_verb)]ed by [M.name] ([M.ckey])</font>")
|
||||
msg_admin_attack("[key_name(M)] [pick(attack.attack_verb)]ed [key_name(src)]")
|
||||
msg_admin_attack("[key_name(M)] [pick(attack.attack_verb)]ed [key_name(src)] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[M.x];Y=[M.y];Z=[M.z]'>JMP</a>")
|
||||
|
||||
var/damage = rand(0, 5)//BS12 EDIT
|
||||
if(!damage)
|
||||
@@ -168,7 +170,7 @@
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Disarmed [src.name] ([src.ckey])</font>")
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been disarmed by [M.name] ([M.ckey])</font>")
|
||||
|
||||
msg_admin_attack("[key_name(M)] disarmed [src.name] ([src.ckey])")
|
||||
msg_admin_attack("[key_name(M)] disarmed [src.name] ([src.ckey]) - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[M.x];Y=[M.y];Z=[M.z]'>JMP</a>")
|
||||
|
||||
if(w_uniform)
|
||||
w_uniform.add_fingerprint(M)
|
||||
|
||||
@@ -22,17 +22,29 @@
|
||||
if(wear_suit)
|
||||
tally += wear_suit.slowdown
|
||||
|
||||
if(shoes)
|
||||
tally += shoes.slowdown
|
||||
|
||||
for(var/organ_name in list("l_foot","r_foot","l_leg","r_leg"))
|
||||
var/datum/organ/external/E = get_organ(organ_name)
|
||||
if(!E || (E.status & ORGAN_DESTROYED))
|
||||
tally += 4
|
||||
if(E.status & ORGAN_SPLINTED)
|
||||
tally += 0.5
|
||||
else if(E.status & ORGAN_BROKEN)
|
||||
tally += 1.5
|
||||
if(!buckled || (buckled && !istype(buckled, /obj/structure/stool/bed/chair/wheelchair)))
|
||||
if(shoes)
|
||||
tally += shoes.slowdown
|
||||
|
||||
for(var/organ_name in list("l_foot","r_foot","l_leg","r_leg"))
|
||||
var/datum/organ/external/E = get_organ(organ_name)
|
||||
if(!E || (E.status & ORGAN_DESTROYED))
|
||||
tally += 4
|
||||
if(E.status & ORGAN_SPLINTED)
|
||||
tally += 0.5
|
||||
else if(E.status & ORGAN_BROKEN)
|
||||
tally += 1.5
|
||||
|
||||
if(buckled && istype(buckled, /obj/structure/stool/bed/chair/wheelchair))
|
||||
for(var/organ_name in list("l_hand","r_hand","l_arm","r_arm"))
|
||||
var/datum/organ/external/E = get_organ(organ_name)
|
||||
if(!E || (E.status & ORGAN_DESTROYED))
|
||||
tally += 4
|
||||
if(E.status & ORGAN_SPLINTED)
|
||||
tally += 0.5
|
||||
else if(E.status & ORGAN_BROKEN)
|
||||
tally += 1.5
|
||||
|
||||
if(shock_stage >= 10) tally += 3
|
||||
|
||||
|
||||
@@ -237,7 +237,7 @@
|
||||
handled = 1
|
||||
|
||||
if((HULK in mutations) && health >= 25 && length(message))
|
||||
message = "[uppertext(message)]!!!"
|
||||
//message = "[uppertext(message)]!!!" //this is really irritating. let's not.
|
||||
verb = pick("yells","roars","hollers")
|
||||
handled = 1
|
||||
if(slurring)
|
||||
|
||||
@@ -747,12 +747,12 @@ var/list/ai_list = list()
|
||||
if(centcomm_message_cooldown)
|
||||
usr << "\red Arrays recycling. Please stand by."
|
||||
return
|
||||
var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", "")
|
||||
var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 10 minute delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", "")
|
||||
if(!input || !(usr in view(1,src)))
|
||||
return
|
||||
Centcomm_announce(input, usr)
|
||||
Centcomm_announce(input, usr, 1)
|
||||
usr << "\blue Message transmitted."
|
||||
log_say("[key_name(usr)] has made an IA Centcomm announcement: [input]")
|
||||
centcomm_message_cooldown = 1
|
||||
spawn(300)//10 minute cooldown
|
||||
spawn(6000)//10 minute cooldown
|
||||
centcomm_message_cooldown = 0
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
emergency_shuttle.incall(2)
|
||||
log_game("All the AIs, comm consoles and boards are destroyed. Shuttle called.")
|
||||
message_admins("All the AIs, comm consoles and boards are destroyed. Shuttle called.", 1)
|
||||
message_mods("All the AIs, comm consoles and boards are destroyed. Shuttle called.")
|
||||
captain_announce("The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes.")
|
||||
world << sound('sound/AI/shuttlecalled.ogg')
|
||||
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
if(D.stat != 2)
|
||||
usr << "\red You issue a kill command for the unfortunate drone."
|
||||
message_admins("[key_name_admin(usr)] issued kill order for drone [key_name_admin(D)] from control console.")
|
||||
message_mods("[key_name_admin(usr)] issued kill order for drone [key_name_admin(D)] from control console.")
|
||||
log_game("[key_name(usr)] issued kill order for [key_name(src)] from control console.")
|
||||
D.shut_down()
|
||||
|
||||
|
||||
@@ -731,6 +731,7 @@
|
||||
connected_ai = null
|
||||
user << "You emag [src]'s interface."
|
||||
message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.")
|
||||
message_mods("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.")
|
||||
log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.")
|
||||
clear_supplied_laws()
|
||||
clear_inherent_laws()
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
response_disarm = "gently pushes aside the"
|
||||
response_harm = "hits the"
|
||||
speed = 4
|
||||
maxHealth = 70
|
||||
health = 70
|
||||
maxHealth = 45
|
||||
health = 45
|
||||
|
||||
harm_intent_damage = 8
|
||||
melee_damage_lower = 15
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 15
|
||||
attacktext = "bites"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
@@ -18,9 +18,11 @@
|
||||
if(matches)
|
||||
if(M.client)
|
||||
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as <A href='?src=\ref[usr];priv_msg=\ref[M]'>[key_name_admin(M)]</A>.</font>", 1)
|
||||
message_mods("<font color='red'><B>Notice: </B></font><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as <A href='?src=\ref[usr];priv_msg=\ref[M]'>[key_name_admin(M)]</A>.</font>")
|
||||
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)].")
|
||||
else
|
||||
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as [key_name_admin(M)] (no longer logged in). </font>", 1)
|
||||
message_mods("<font color='red'><B>Notice: </B></font><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as [key_name_admin(M)] (no longer logged in). </font>")
|
||||
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)] (no longer logged in).")
|
||||
|
||||
/mob/Login()
|
||||
@@ -56,4 +58,4 @@
|
||||
if(H.species && H.species.abilities)
|
||||
client.verbs |= H.species.abilities
|
||||
|
||||
nanomanager.send_resources(client)
|
||||
nanomanager.send_resources(client)
|
||||
@@ -7,6 +7,7 @@
|
||||
var/admins_number = admins.len
|
||||
|
||||
message_admins("Admin logout: [key_name(src)]")
|
||||
message_mods("Staff logout: [key_name(src)]")
|
||||
if(admins_number == 0) //Apparently the admin logging out is no longer an admin at this point, so we have to check this towards 0 and not towards 1. Awell.
|
||||
send2adminirc("[key_name(src)] logged out - no more admins online.")
|
||||
..()
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
affecting.loc = assailant.loc
|
||||
affecting.attack_log += "\[[time_stamp()]\] <font color='orange'>Has had their neck grabbed by [assailant.name] ([assailant.ckey])</font>"
|
||||
assailant.attack_log += "\[[time_stamp()]\] <font color='red'>Grabbed the neck of [affecting.name] ([affecting.ckey])</font>"
|
||||
msg_admin_attack("[key_name(assailant)] grabbed the neck of [key_name(affecting)]")
|
||||
msg_admin_attack("[key_name(assailant)] grabbed the neck of [key_name(affecting)] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[affecting.x];Y=[affecting.y];Z=[affecting.z]'>JMP</a>")
|
||||
hud.icon_state = "disarm/kill"
|
||||
hud.name = "disarm/kill"
|
||||
else
|
||||
@@ -158,7 +158,7 @@
|
||||
assailant.visible_message("<span class='danger'>[assailant] has tightened \his grip on [affecting]'s neck!</span>")
|
||||
affecting.attack_log += "\[[time_stamp()]\] <font color='orange'>Has been strangled (kill intent) by [assailant.name] ([assailant.ckey])</font>"
|
||||
assailant.attack_log += "\[[time_stamp()]\] <font color='red'>Strangled (kill intent) [affecting.name] ([affecting.ckey])</font>"
|
||||
msg_admin_attack("[key_name(assailant)] strangled (kill intent) [key_name(affecting)]")
|
||||
msg_admin_attack("[key_name(assailant)] strangled (kill intent) [key_name(affecting)] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[affecting.x];Y=[affecting.y];Z=[affecting.z]'>JMP</a>")
|
||||
|
||||
assailant.next_move = world.time + 10
|
||||
affecting.losebreath += 1
|
||||
|
||||
@@ -200,10 +200,14 @@
|
||||
|
||||
if(Process_Grab()) return
|
||||
|
||||
if(mob.buckled) //if we're buckled to something, tell it we moved.
|
||||
return mob.buckled.relaymove(mob, direct)
|
||||
// if(mob.buckled) //if we're buckled to something, tell it we moved.
|
||||
// return mob.buckled.relaymove(mob, direct)
|
||||
|
||||
if(!mob.canmove) return
|
||||
// if(!mob.canmove) return
|
||||
|
||||
if(!mob.canmove)
|
||||
if (mob.buckled && (istype(mob.buckled, /obj/structure/stool/bed/chair/wheelchair))) // Exception for wheelchairs
|
||||
else return
|
||||
|
||||
//if(istype(mob.loc, /turf/space) || (mob.flags & NOGRAV))
|
||||
// if(!mob.Process_Spacemove(0)) return 0
|
||||
@@ -254,8 +258,20 @@
|
||||
var/tickcomp = ((1/(world.tick_lag))*1.3)
|
||||
move_delay = move_delay + tickcomp
|
||||
|
||||
|
||||
|
||||
if(mob.pulledby || mob.buckled) // Wheelchair driving!
|
||||
if(istype(mob.loc, /turf/space))
|
||||
return // No wheelchair driving in space
|
||||
if(istype(mob.pulledby, /obj/structure/stool/bed/chair/wheelchair))
|
||||
return mob.pulledby.relaymove(mob, direct)
|
||||
else if(istype(mob.buckled, /obj/structure/stool/bed/chair/wheelchair))
|
||||
if(ishuman(mob.buckled))
|
||||
var/mob/living/carbon/human/driver = mob.buckled
|
||||
var/datum/organ/external/l_hand = driver.get_organ("l_hand")
|
||||
var/datum/organ/external/r_hand = driver.get_organ("r_hand")
|
||||
if((!l_hand || (l_hand.status & ORGAN_DESTROYED)) && (!r_hand || (r_hand.status & ORGAN_DESTROYED)))
|
||||
return // No hands to drive your chair? Tough luck!
|
||||
move_delay += 2
|
||||
return mob.buckled.relaymove(mob,direct)
|
||||
|
||||
//We are now going to move
|
||||
moving = 1
|
||||
|
||||
@@ -293,6 +293,10 @@
|
||||
EquipCustomItems(character)
|
||||
character.loc = pick(latejoin)
|
||||
character.lastarea = get_area(loc)
|
||||
// Moving wheelchair if they have one
|
||||
if(character.buckled && istype(character.buckled, /obj/structure/stool/bed/chair/wheelchair))
|
||||
character.buckled.loc = character.loc
|
||||
character.buckled.dir = character.dir
|
||||
|
||||
ticker.mode.latespawn(character)
|
||||
|
||||
|
||||
@@ -82,7 +82,8 @@
|
||||
rigged = 1
|
||||
|
||||
log_admin("LOG: [user.name] ([user.ckey]) injected a power cell with plasma, rigging it to explode.")
|
||||
message_admins("LOG: [user.name] ([user.ckey]) injected a power cell with plasma, rigging it to explode.")
|
||||
message_admins("[user.name] ([user.ckey]) injected a power cell with plasma, rigging it to explode.")
|
||||
message_mods("[user.name] ([user.ckey]) injected a power cell with plasma, rigging it to explode.")
|
||||
|
||||
S.reagents.clear_reagents()
|
||||
|
||||
@@ -108,7 +109,8 @@
|
||||
//explosion(T, 0, 1, 2, 2)
|
||||
|
||||
log_admin("LOG: Rigged power cell explosion, last touched by [fingerprintslast]")
|
||||
message_admins("LOG: Rigged power cell explosion, last touched by [fingerprintslast]")
|
||||
message_admins("Rigged power cell explosion, last touched by [fingerprintslast]")
|
||||
message_mods("Rigged power cell explosion, last touched by [fingerprintslast]")
|
||||
|
||||
explosion(T, devastation_range, heavy_impact_range, light_impact_range, flash_range)
|
||||
|
||||
|
||||
@@ -287,7 +287,8 @@
|
||||
if(status == LIGHT_OK && trigger)
|
||||
|
||||
log_admin("LOG: Rigged light explosion, last touched by [fingerprintslast]")
|
||||
message_admins("LOG: Rigged light explosion, last touched by [fingerprintslast]")
|
||||
message_admins("Rigged light explosion, last touched by [fingerprintslast]")
|
||||
message_mods("Rigged light explosion, last touched by [fingerprintslast]")
|
||||
|
||||
explode()
|
||||
else if( prob( min(60, switchcount*switchcount*0.01) ) )
|
||||
@@ -365,7 +366,8 @@
|
||||
if(on && rigged)
|
||||
|
||||
log_admin("LOG: Rigged light explosion, last touched by [fingerprintslast]")
|
||||
message_admins("LOG: Rigged light explosion, last touched by [fingerprintslast]")
|
||||
message_admins("Rigged light explosion, last touched by [fingerprintslast]")
|
||||
message_mods("Rigged light explosion, last touched by [fingerprintslast]")
|
||||
|
||||
explode()
|
||||
else
|
||||
@@ -723,7 +725,8 @@
|
||||
if(S.reagents.has_reagent("plasma", 5))
|
||||
|
||||
log_admin("LOG: [user.name] ([user.ckey]) injected a light with plasma, rigging it to explode.")
|
||||
message_admins("LOG: [user.name] ([user.ckey]) injected a light with plasma, rigging it to explode.")
|
||||
message_admins("[user.name] ([user.ckey]) injected a light with plasma, rigging it to explode.")
|
||||
message_mods("[user.name] ([user.ckey]) injected a light with plasma, rigging it to explode.")
|
||||
|
||||
rigged = 1
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
|
||||
/obj/machinery/power/emitter/Del()
|
||||
message_admins("Emitter deleted at ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
message_mods("Emitter deleted at ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
log_game("Emitter deleted at ([x],[y],[z])")
|
||||
investigate_log("<font color='red'>deleted</font> at ([x],[y],[z])","singulo")
|
||||
..()
|
||||
@@ -63,6 +64,7 @@
|
||||
src.active = 0
|
||||
user << "You turn off the [src]."
|
||||
message_admins("Emitter turned off by [key_name(user, user.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
message_mods("Emitter turned off by [key_name(user, user.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
log_game("Emitter turned off by [user.ckey]([user]) in ([x],[y],[z])")
|
||||
investigate_log("turned <font color='red'>off</font> by [user.key]","singulo")
|
||||
else
|
||||
@@ -71,6 +73,7 @@
|
||||
src.shot_number = 0
|
||||
src.fire_delay = 100
|
||||
message_admins("Emitter turned on by [key_name(user, user.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
message_mods("Emitter turned on by [key_name(user, user.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
log_game("Emitter turned on by [user.ckey]([user]) in ([x],[y],[z])")
|
||||
investigate_log("turned <font color='green'>on</font> by [user.key]","singulo")
|
||||
update_icon()
|
||||
|
||||
@@ -350,6 +350,7 @@ field_generator power level display
|
||||
if(O.last_warning && temp)
|
||||
if((world.time - O.last_warning) > 50) //to stop message-spam
|
||||
temp = 0
|
||||
message_mods("A singulo exists and a containment field has failed.")
|
||||
message_admins("A singulo exists and a containment field has failed.",1)
|
||||
investigate_log("has <font color='red'>failed</font> whilst a singulo exists.","singulo")
|
||||
O.last_warning = world.time
|
||||
|
||||
@@ -87,9 +87,9 @@
|
||||
if(href_list["togglep"])
|
||||
src.toggle_power()
|
||||
investigate_log("turned [active?"<font color='red'>ON</font>":"<font color='green'>OFF</font>"] by [usr.key]","singulo")
|
||||
if (active)
|
||||
message_admins("PA Control Computer turned ON by [key_name(usr, usr.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
log_game("PA Control Computer turned ON by [usr.ckey]([usr]) in ([x],[y],[z])")
|
||||
message_admins("PA Control Computer turned [active?"<font color='red'>ON</font>":"<font color='green'>OFF</font>"] by [key_name(usr, usr.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
message_mods("PA Control Computer turned [active?"<font color='red'>ON</font>":"<font color='green'>OFF</font>"] by [key_name(usr, usr.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
|
||||
log_game("PA Control Computer turned [active?"<font color='red'>ON</font>":"<font color='green'>OFF</font>"] by [usr.ckey]([usr]) in ([x],[y],[z])")
|
||||
else if(href_list["scan"])
|
||||
src.part_scan()
|
||||
else if(href_list["strengthup"])
|
||||
@@ -98,6 +98,7 @@
|
||||
strength = 2
|
||||
else
|
||||
message_admins("PA Control Computer increased to [strength] by [key_name(usr, usr.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
message_mods("PA Control Computer increased to [strength] by [key_name(usr, usr.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
|
||||
log_game("PA Control Computer increased to [strength] by [usr.ckey]([usr]) in ([x],[y],[z])")
|
||||
investigate_log("increased to <font color='red'>[strength]</font> by [usr.key]","singulo")
|
||||
for(var/obj/structure/particle_accelerator/part in connected_parts)
|
||||
@@ -109,6 +110,9 @@
|
||||
if(strength < 0)
|
||||
strength = 0
|
||||
else
|
||||
message_admins("PA Control Computer decreased to [strength] by [key_name(usr, usr.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
message_mods("PA Control Computer decreased to [strength] by [key_name(usr, usr.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
|
||||
log_game("PA Control Computer decreased to [strength] by [usr.ckey]([usr]) in ([x],[y],[z])")
|
||||
investigate_log("decreased to <font color='green'>[strength]</font> by [usr.key]","singulo")
|
||||
for(var/obj/structure/particle_accelerator/part in connected_parts)
|
||||
part.strength = strength
|
||||
|
||||
@@ -102,7 +102,9 @@ var/global/list/uneatable = list(
|
||||
/obj/machinery/singularity/proc/admin_investigate_setup()
|
||||
last_warning = world.time
|
||||
var/count = locate(/obj/machinery/containment_field) in orange(30, src)
|
||||
if(!count) message_admins("A singulo has been created without containment fields active ([x],[y],[z])",1)
|
||||
if(!count)
|
||||
message_mods("A singulo has been created without containment fields active ([x],[y],[z])")
|
||||
message_admins("A singulo has been created without containment fields active ([x],[y],[z])",1)
|
||||
investigate_log("was created. [count?"":"<font color='red'>No containment fields were active</font>"]","singulo")
|
||||
|
||||
/obj/machinery/singularity/proc/dissipate()
|
||||
@@ -166,6 +168,10 @@ var/global/list/uneatable = list(
|
||||
dissipate_delay = 10
|
||||
dissipate_track = 0
|
||||
dissipate_strength = 10
|
||||
investigate_log("turned to a stage 4","singulo")
|
||||
message_mods("Singluo is at stage 4 ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
|
||||
message_admins("Singluo is at stage 4 ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
log_game("Singluo turned to a stage 4 ([x],[y],[z])")
|
||||
if(9)//this one also lacks a check for gens because it eats everything
|
||||
current_size = 9
|
||||
icon = 'icons/effects/288x288.dmi'
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
var/cell_type = "/obj/item/weapon/cell"
|
||||
var/projectile_type = "/obj/item/projectile/beam/practice"
|
||||
var/modifystate
|
||||
rangedrop = -5 // energy weapons more accurate than bulletweapons.
|
||||
|
||||
isHandgun()
|
||||
return 0
|
||||
|
||||
@@ -135,7 +135,7 @@ Commenting out right now, due to a lack of sprites existing. I hate on-mob weapo
|
||||
fire_delay_unwielded = 105 //3x difference, let's be an arse about this, and push the issue
|
||||
var/zoom = 0
|
||||
|
||||
accuracy = -90
|
||||
accuracy = -110
|
||||
rangedrop = -5 // fully accurate up to first 10 tiles. the last 4 zoomed tiles you are on your
|
||||
|
||||
/obj/item/weapon/gun/energy/rifle/sniperrifle/dropped(mob/user)
|
||||
@@ -210,7 +210,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
|
||||
slot_flags = SLOT_BACK //Just realized... Going to need A LOT more on-back sprites now... FECK...
|
||||
var/mode = 2
|
||||
fire_delay_wielded = 8
|
||||
fire_delay_unwielded = 75
|
||||
fire_delay_unwielded = 24
|
||||
|
||||
// attack_self(mob/living/user as mob)
|
||||
//Let's do some magical things, make this a verb, yes?
|
||||
|
||||
@@ -58,8 +58,8 @@
|
||||
desc = "A basic, modular laser pistol."
|
||||
icon_state = "modpistolopen"
|
||||
open = 1
|
||||
w_class = 2
|
||||
upgradepointtotal = 16
|
||||
w_class = 3 // leave it at three until protorifle is implemented. then severely nerf pistol points.
|
||||
upgradepointtotal = 16 //current protopistol is at protorifle point totals.
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/modular/pistol/advanced //better version of the pistol
|
||||
name = "advanced protopistol"
|
||||
@@ -310,16 +310,16 @@
|
||||
accuracy = 30 //positive. subtracts to 0 accuracy base, 30 if aimed. fully accurate up to two tiles *if aimed*, -15% per tile after
|
||||
canzoom = 0
|
||||
else if(targetmod.rating == 1)
|
||||
rangedrop = 5
|
||||
rangedrop = 0
|
||||
accuracy = -30 //standard accuracy. standard gun.
|
||||
canzoom = 0
|
||||
else if(targetmod.rating == 2)
|
||||
rangedrop = 5
|
||||
rangedrop = 0
|
||||
accuracy = -60 //Fully accurate up to 6 tiles aimed. 15% drop per tile after that for ~-120% accuracy at 14 tiles. If you want to snipe things, get phasic.
|
||||
canzoom = 1 //advanced and up scanning modules let you zoom in. good luck hitting without phasic though pal. good luck.
|
||||
else if(targetmod.rating == 3)
|
||||
rangedrop = -5 //Accurate aimed up to 12 tiles. 20% miss at 14. 9 tiles and 50% miss at 14 without aiming.
|
||||
accuracy = -90 //If you're paying a premium for accuracy, you can have accuracy.
|
||||
accuracy = -110 //If you're paying a premium for accuracy, you can have accuracy.
|
||||
canzoom = 1
|
||||
|
||||
if(!powermod)
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
M.primed = 1
|
||||
M.throw_at(target, missile_range, missile_speed)
|
||||
message_admins("[key_name_admin(user)] fired a rocket from a rocket launcher ([src.name]).")
|
||||
message_mods("[key_name_admin(user)] fired a rocket from a rocket launcher ([src.name]).")
|
||||
log_game("[key_name_admin(user)] used a rocket launcher ([src.name]).")
|
||||
rockets -= I
|
||||
del(I)
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
if (daddy.target && original in daddy.target) //As opposed to no-delay pew pew
|
||||
miss_modifier += -30
|
||||
def_zone = get_zone_with_miss_chance(def_zone, M, miss_modifier + 15*distance + daddy.accuracy + daddy.rangedrop) // add +daddy.missmod vars to gun and this. snowflake accuracy
|
||||
//moving def_zone to be a child of the daddyblock because i need the daddy
|
||||
//moving def_zone to be a child of the daddyblock because i need the daddy. all projectiles should be fired from guns anyway
|
||||
if(!def_zone)
|
||||
visible_message("\blue \The [src] misses [M] narrowly!")
|
||||
forcedodge = -1
|
||||
|
||||
@@ -278,7 +278,7 @@ datum
|
||||
description = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality."
|
||||
color = "#E0E8EF" // rgb: 224, 232, 239
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
on_mob_life(var/mob/living/carbon/human/M as mob)
|
||||
if(ishuman(M))
|
||||
if((M.mind in ticker.mode.cult) && prob(10))
|
||||
M << "\blue A cooling sensation from inside you brings you an untold calmness."
|
||||
@@ -288,8 +288,10 @@ datum
|
||||
if((M.mind in ticker.mode.vampires) && (M.mind.vampire) && (!(VAMP_FULL in M.mind.vampire.powers)))
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustFireLoss(6)
|
||||
M.adjust_fire_stacks(1)
|
||||
M.IgniteMob()
|
||||
//M.take_organ_damage(0, 1*REM)
|
||||
if(prob(50))
|
||||
if(prob(20))
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red []'s skin sizzles and burns.", M), 1)
|
||||
holder.remove_reagent(src.id, 10 * REAGENTS_METABOLISM) //high metabolism to prevent extended uncult rolls.
|
||||
@@ -1532,8 +1534,10 @@ datum
|
||||
if((M.mind in ticker.mode.vampires) && (M.mind.vampire) && (!(VAMP_FULL in M.mind.vampire.powers)))
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustFireLoss(6)
|
||||
M.adjust_fire_stacks(1)
|
||||
M.IgniteMob()
|
||||
//M.take_organ_damage(0, 1*REM)
|
||||
if(prob(50))
|
||||
if(prob(20))
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red []'s skin sizzles and burns.", M), 1)
|
||||
holder.remove_reagent(src.id, 10 * REAGENTS_METABOLISM) //high metabolism to prevent extended uncult rolls.
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
F.loc = user.loc
|
||||
F.throw_at(target, 30, 2)
|
||||
message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).")
|
||||
message_mods("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).")
|
||||
log_game("[key_name_admin(user)] used a grenade ([src.name]).")
|
||||
F.active = 1
|
||||
F.icon_state = initial(icon_state) + "_active"
|
||||
|
||||
@@ -382,7 +382,7 @@
|
||||
reagents.add_reagent("nutriment", 1)
|
||||
reagents.add_reagent("toxin", 3+round(potency / 3, 1))
|
||||
reagents.add_reagent("lexorin", 1+round(potency / 5, 1))
|
||||
bitesize = 1+round(reagents.total_volume / 2, 1)
|
||||
bitesize = reagents.total_volume
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris
|
||||
seed = "/obj/item/seeds/ambrosiavulgaris"
|
||||
@@ -833,7 +833,7 @@
|
||||
reagents.add_reagent("nutriment", 1)
|
||||
reagents.add_reagent("amatoxin", 3+round(potency / 3, 1))
|
||||
reagents.add_reagent("psilocybin", 1+round(potency / 25, 1))
|
||||
bitesize = 1+round(reagents.total_volume / 2, 1)
|
||||
bitesize = reagents.total_volume
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
. = ..()
|
||||
@@ -854,7 +854,7 @@
|
||||
reagents.add_reagent("nutriment", 1+round((potency / 50), 1))
|
||||
reagents.add_reagent("amatoxin", 13+round(potency / 3, 1))
|
||||
reagents.add_reagent("psilocybin", 1+round(potency / 25, 1))
|
||||
bitesize = 1+round(reagents.total_volume / 2, 1)
|
||||
bitesize = reagents.total_volume
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
. = ..()
|
||||
|
||||
@@ -122,6 +122,7 @@
|
||||
modded = modded ? 0 : 1
|
||||
if (modded)
|
||||
message_admins("[key_name_admin(user)] opened fueltank at ([loc.x],[loc.y],[loc.z]) - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>.")
|
||||
message_mods("[key_name_admin(user)] opened fueltank at ([loc.x],[loc.y],[loc.z]) - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>.")
|
||||
leak_fuel(amount_per_transfer_from_this)
|
||||
if (istype(W,/obj/item/device/assembly_holder))
|
||||
if (rig)
|
||||
@@ -134,6 +135,7 @@
|
||||
var/obj/item/device/assembly_holder/H = W
|
||||
if (istype(H.a_left,/obj/item/device/assembly/igniter) || istype(H.a_right,/obj/item/device/assembly/igniter))
|
||||
message_admins("[key_name_admin(user)] rigged fueltank at ([loc.x],[loc.y],[loc.z]) for explosion - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>.")
|
||||
message_mods("[key_name_admin(user)] rigged fueltank at ([loc.x],[loc.y],[loc.z]) for explosion - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>.")
|
||||
log_game("[key_name(user)] rigged fueltank at ([loc.x],[loc.y],[loc.z]) for explosion.")
|
||||
|
||||
rig = W
|
||||
@@ -153,10 +155,12 @@
|
||||
if(!src.defuse && user.client.holder)
|
||||
src.defuse = 1
|
||||
message_admins("[key_name_admin(user)] defused fueltank at ([loc.x],[loc.y],[loc.z]).")
|
||||
message_mods("[key_name_admin(user)] defused fueltank at ([loc.x],[loc.y],[loc.z]).")
|
||||
else
|
||||
if(!src.armed && user.client.holder)
|
||||
src.defuse = 0
|
||||
message_admins("[key_name_admin(user)] reset fuse on fueltank at ([loc.x],[loc.y],[loc.z]).")
|
||||
message_mods("[key_name_admin(user)] reset fuse on fueltank at ([loc.x],[loc.y],[loc.z]).")
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
|
||||
|
||||
Reference in New Issue
Block a user