Merge branch 'master' of https://github.com/PolarisSS13/Polaris into 2/17/2018_make_AI_great_again

# Conflicts resolved:
#	icons/mob/modifier_effects.dmi
This commit is contained in:
Neerti
2018-06-15 18:28:00 -04:00
613 changed files with 16003 additions and 11384 deletions
+6 -1
View File
@@ -52,6 +52,11 @@ proc/admin_notice(var/message, var/rights)
else
body += " \[<A href='?src=\ref[src];revive=\ref[M]'>Heal</A>\] "
if(M.client)
body += "<br><b>First connection:</b> [M.client.player_age] days ago"
body += "<br><b>BYOND account created:</b> [M.client.account_join_date]"
body += "<br><b>BYOND account age (days):</b> [M.client.account_age]"
body += {"
<br><br>\[
<a href='?_src_=vars;Vars=\ref[M]'>VV</a> -
@@ -1261,7 +1266,7 @@ proc/admin_notice(var/message, var/rights)
usr << "<b>AI [key_name(S, usr)]'s laws:</b>"
else if(isrobot(S))
var/mob/living/silicon/robot/R = S
usr << "<b>CYBORG [key_name(S, usr)] [R.connected_ai?"(Slaved to: [R.connected_ai])":"(Independant)"]: laws:</b>"
usr << "<b>CYBORG [key_name(S, usr)] [R.connected_ai?"(Slaved to: [R.connected_ai])":"(Independent)"]: laws:</b>"
else if (ispAI(S))
usr << "<b>pAI [key_name(S, usr)]'s laws:</b>"
else
+7 -3
View File
@@ -132,7 +132,8 @@ var/list/admin_verbs_fun = list(
/client/proc/editappear,
/client/proc/roll_dices,
/datum/admins/proc/call_supply_drop,
/datum/admins/proc/call_drop_pod
/datum/admins/proc/call_drop_pod,
/client/proc/smite
)
var/list/admin_verbs_spawn = list(
@@ -174,7 +175,8 @@ var/list/admin_verbs_server = list(
/client/proc/nanomapgen_DumpImage,
/client/proc/modify_server_news,
/client/proc/recipe_dump,
/client/proc/panicbunker
/client/proc/panicbunker,
/client/proc/paranoia_logging
)
var/list/admin_verbs_debug = list(
@@ -650,11 +652,13 @@ var/list/admin_verbs_event_manager = list(
set desc = "Cause an explosion of varying strength at your location."
var/turf/epicenter = mob.loc
var/list/choices = list("Small Bomb", "Medium Bomb", "Big Bomb", "Custom Bomb")
var/list/choices = list("Small Bomb", "Medium Bomb", "Big Bomb", "Custom Bomb", "Cancel")
var/choice = input("What size explosion would you like to produce?") in choices
switch(choice)
if(null)
return 0
if("Cancel")
return 0
if("Small Bomb")
explosion(epicenter, 1, 2, 3, 3)
if("Medium Bomb")
@@ -6,5 +6,5 @@
if(!.)
return
for(var/obj/machinery/light/L in world)
for(var/obj/machinery/light/L in machines)
L.fix()
@@ -16,7 +16,7 @@
return
gravity_is_on = !gravity_is_on
for(var/area/A in world)
for(var/area/A in all_areas)
A.gravitychange(gravity_is_on,A)
feedback_inc("admin_secrets_fun_used",1)
+11 -31
View File
@@ -1316,6 +1316,16 @@
feedback_inc("admin_cookies_spawned",1)
H << "<font color='blue'>Your prayers have been answered!! You received the <b>best cookie</b>!</font>"
else if(href_list["adminsmite"])
if(!check_rights(R_ADMIN|R_FUN)) return
var/mob/living/carbon/human/H = locate(href_list["adminsmite"])
if(!ishuman(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
return
owner.smite(H)
else if(href_list["BlueSpaceArtillery"])
if(!check_rights(R_ADMIN|R_FUN)) return
@@ -1327,37 +1337,7 @@
if(alert(src.owner, "Are you sure you wish to hit [key_name(M)] with Blue Space Artillery?", "Confirm Firing?" , "Yes" , "No") != "Yes")
return
if(BSACooldown)
src.owner << "Standby! Reload cycle in progress! Gunnary crews ready in five seconds!"
return
BSACooldown = 1
spawn(50)
BSACooldown = 0
M << "You've been hit by bluespace artillery!"
log_admin("[key_name(M)] has been hit by Bluespace Artillery fired by [src.owner]")
message_admins("[key_name(M)] has been hit by Bluespace Artillery fired by [src.owner]")
var/obj/effect/stop/S
S = new /obj/effect/stop
S.victim = M
S.loc = M.loc
spawn(20)
qdel(S)
var/turf/simulated/floor/T = get_turf(M)
if(istype(T))
if(prob(80)) T.break_tile_to_plating()
else T.break_tile()
if(M.health == 1)
M.gib()
else
M.adjustBruteLoss( min( 99 , (M.health - 1) ) )
M.Stun(20)
M.Weaken(20)
M.stuttering = 20
bluespace_artillery(M,src)
else if(href_list["CentComReply"])
var/mob/living/L = locate(href_list["CentComReply"])
+8 -8
View File
@@ -85,32 +85,32 @@
else
var/f2 = text2path(f)
if(text_starts_with(f, "/mob"))
for(var/mob/m in world)
for(var/mob/m in mob_list)
if(istype(m, f2))
from_objs += m
else if(text_starts_with(f, "/turf/space"))
for(var/turf/space/m in world)
for(var/turf/space/m in turfs)
if(istype(m, f2))
from_objs += m
else if(text_starts_with(f, "/turf/simulated"))
for(var/turf/simulated/m in world)
for(var/turf/simulated/m in turfs)
if(istype(m, f2))
from_objs += m
else if(text_starts_with(f, "/turf/unsimulated"))
for(var/turf/unsimulated/m in world)
for(var/turf/unsimulated/m in turfs)
if(istype(m, f2))
from_objs += m
else if(text_starts_with(f, "/turf"))
for(var/turf/m in world)
for(var/turf/m in turfs)
if(istype(m, f2))
from_objs += m
else if(text_starts_with(f, "/area"))
for(var/area/m in world)
for(var/area/m in all_areas)
if(istype(m, f2))
from_objs += m
@@ -120,7 +120,7 @@
from_objs += m
else if(text_starts_with(f, "/obj/machinery"))
for(var/obj/machinery/m in world)
for(var/obj/machinery/m in machines)
if(istype(m, f2))
from_objs += m
@@ -135,7 +135,7 @@
from_objs += m
/*
else
for(var/datum/m in world)
for(var/datum/m in nope)
if(istype(m, f2))
from_objs += m
*/
+1 -1
View File
@@ -21,7 +21,7 @@
else
alert("Admin jumping disabled")
/client/proc/jumptoturf(var/turf/T in world)
/client/proc/jumptoturf(var/turf/T in turfs)
set name = "Jump to Turf"
set category = "Admin"
if(!check_rights(R_ADMIN|R_MOD|R_DEBUG))
+4 -4
View File
@@ -12,23 +12,23 @@
usr << "Checking for disconnected pipes..."
//all plumbing - yes, some things might get stated twice, doesn't matter.
for (var/obj/machinery/atmospherics/plumbing in world)
for (var/obj/machinery/atmospherics/plumbing in machines)
if (plumbing.nodealert)
usr << "Unconnected [plumbing.name] located at [plumbing.x],[plumbing.y],[plumbing.z] ([get_area(plumbing.loc)])"
//Manifolds
for (var/obj/machinery/atmospherics/pipe/manifold/pipe in world)
for (var/obj/machinery/atmospherics/pipe/manifold/pipe in machines)
if (!pipe.node1 || !pipe.node2 || !pipe.node3)
usr << "Unconnected [pipe.name] located at [pipe.x],[pipe.y],[pipe.z] ([get_area(pipe.loc)])"
//Pipes
for (var/obj/machinery/atmospherics/pipe/simple/pipe in world)
for (var/obj/machinery/atmospherics/pipe/simple/pipe in machines)
if (!pipe.node1 || !pipe.node2)
usr << "Unconnected [pipe.name] located at [pipe.x],[pipe.y],[pipe.z] ([get_area(pipe.loc)])"
usr << "Checking for overlapping pipes..."
next_turf:
for(var/turf/T in world)
for(var/turf/T in turfs)
for(var/dir in cardinal)
var/list/connect_types = list(1 = 0, 2 = 0, 3 = 0)
for(var/obj/machinery/atmospherics/pipe in T)
+16 -106
View File
@@ -173,96 +173,6 @@
else
alert("Invalid mob")
/*
/client/proc/cmd_admin_monkeyize(var/mob/M in world)
set category = "Fun"
set name = "Make Monkey"
if(!ticker)
alert("Wait until the game starts")
return
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/target = M
log_admin("[key_name(src)] is attempting to monkeyize [M.key].")
spawn(10)
target.monkeyize()
else
alert("Invalid mob")
/client/proc/cmd_admin_changelinginize(var/mob/M in world)
set category = "Fun"
set name = "Make Changeling"
if(!ticker)
alert("Wait until the game starts")
return
if(istype(M, /mob/living/carbon/human))
log_admin("[key_name(src)] has made [M.key] a changeling.")
spawn(10)
M.absorbed_dna[M.real_name] = M.dna.Clone()
M.make_changeling()
if(M.mind)
M.mind.special_role = "Changeling"
else
alert("Invalid mob")
*/
/*
/client/proc/cmd_admin_abominize(var/mob/M in world)
set category = null
set name = "Make Abomination"
usr << "Ruby Mode disabled. Command aborted."
return
if(!ticker)
alert("Wait until the game starts.")
return
if(istype(M, /mob/living/carbon/human))
log_admin("[key_name(src)] has made [M.key] an abomination.")
// spawn(10)
// M.make_abomination()
*/
/*
/client/proc/make_cultist(var/mob/M in world) // -- TLE, modified by Urist
set category = "Fun"
set name = "Make Cultist"
set desc = "Makes target a cultist"
if(!cultwords["travel"])
runerandom()
if(M)
if(M.mind in ticker.mode.cult)
return
else
if(alert("Spawn that person a tome?",,"Yes","No")=="Yes")
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 << "<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 << "<font color='red'>You remembered one thing from the glimpse... [cultwords["travel"]] is travel...</font>"
if("2")
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["blood"]] is blood...</font>"
if("3")
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["join"]] is join...</font>"
if("4")
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["hell"]] is Hell...</font>"
if("5")
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["destroy"]] is destroy...</font>"
if("6")
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["technology"]] is technology...</font>"
if("7")
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["self"]] is self...</font>"
if("8")
M << "<font color='red'>You remembered one thing from the glimpse... [cultwords["see"]] is see...</font>"
if(M.mind)
M.mind.special_role = "Cultist"
ticker.mode.cult += M.mind
src << "Made [M] a cultist."
*/
//TODO: merge the vievars version into this or something maybe mayhaps
/client/proc/cmd_debug_del_all()
@@ -431,41 +341,41 @@
var/list/areas_with_intercom = list()
var/list/areas_with_camera = list()
for(var/area/A in world)
for(var/area/A in all_areas)
if(!(A.type in areas_all))
areas_all.Add(A.type)
for(var/obj/machinery/power/apc/APC in world)
for(var/obj/machinery/power/apc/APC in machines)
var/area/A = get_area(APC)
if(!(A.type in areas_with_APC))
areas_with_APC.Add(A.type)
for(var/obj/machinery/alarm/alarm in world)
for(var/obj/machinery/alarm/alarm in machines)
var/area/A = get_area(alarm)
if(!(A.type in areas_with_air_alarm))
areas_with_air_alarm.Add(A.type)
for(var/obj/machinery/requests_console/RC in world)
for(var/obj/machinery/requests_console/RC in machines)
var/area/A = get_area(RC)
if(!(A.type in areas_with_RC))
areas_with_RC.Add(A.type)
for(var/obj/machinery/light/L in world)
for(var/obj/machinery/light/L in machines)
var/area/A = get_area(L)
if(!(A.type in areas_with_light))
areas_with_light.Add(A.type)
for(var/obj/machinery/light_switch/LS in world)
for(var/obj/machinery/light_switch/LS in machines)
var/area/A = get_area(LS)
if(!(A.type in areas_with_LS))
areas_with_LS.Add(A.type)
for(var/obj/item/device/radio/intercom/I in world)
for(var/obj/item/device/radio/intercom/I in machines)
var/area/A = get_area(I)
if(!(A.type in areas_with_intercom))
areas_with_intercom.Add(A.type)
for(var/obj/machinery/camera/C in world)
for(var/obj/machinery/camera/C in machines)
var/area/A = get_area(C)
if(!(A.type in areas_with_camera))
areas_with_camera.Add(A.type)
@@ -546,31 +456,31 @@
if(alert("Are you sure? This will start up the engine. Should only be used during debug!",,"Yes","No") != "Yes")
return
for(var/obj/machinery/power/emitter/E in world)
for(var/obj/machinery/power/emitter/E in machines)
if(istype(get_area(E), /area/space))
E.anchored = TRUE
E.state = 2
E.connect_to_network()
E.active = TRUE
for(var/obj/machinery/field_generator/F in world)
for(var/obj/machinery/field_generator/F in machines)
if(istype(get_area(F), /area/space))
F.Varedit_start = 1
for(var/obj/machinery/power/grounding_rod/GR in world)
for(var/obj/machinery/power/grounding_rod/GR in machines)
GR.anchored = TRUE
GR.update_icon()
for(var/obj/machinery/power/tesla_coil/TC in world)
for(var/obj/machinery/power/tesla_coil/TC in machines)
TC.anchored = TRUE
TC.update_icon()
for(var/obj/structure/particle_accelerator/PA in world)
for(var/obj/structure/particle_accelerator/PA in machines)
PA.anchored = TRUE
PA.construction_state = 3
PA.update_icon()
for(var/obj/machinery/particle_accelerator/PA in world)
for(var/obj/machinery/particle_accelerator/PA in machines)
PA.anchored = TRUE
PA.construction_state = 3
PA.update_icon()
for(var/obj/machinery/power/rad_collector/Rad in world)
for(var/obj/machinery/power/rad_collector/Rad in machines)
if(Rad.anchored)
if(!Rad.P)
var/obj/item/weapon/tank/phoron/Phoron = new/obj/item/weapon/tank/phoron(Rad)
@@ -597,7 +507,7 @@
var/found_the_pump = 0
var/obj/machinery/power/supermatter/SM
for(var/obj/machinery/M in world)
for(var/obj/machinery/M in machines)
if(!M)
continue
if(!M.loc)
+1 -1
View File
@@ -48,7 +48,7 @@
var/largest_click_time = 0
var/mob/largest_move_mob = null
var/mob/largest_click_mob = null
for(var/mob/M in world)
for(var/mob/M in mob_list)
if(!M.client)
continue
if(M.next_move >= largest_move_time)
+1 -1
View File
@@ -38,7 +38,7 @@
unsorted_overlays |= gas_data.tile_overlay[id]
for(var/turf/simulated/T in world)
for(var/turf/simulated/T in turfs)
T.air = null
T.overlays.Remove(unsorted_overlays)
T.zone = null
+5 -3
View File
@@ -22,6 +22,8 @@
var/camera_range_display_status = 0
var/intercom_range_display_status = 0
GLOBAL_LIST_BOILERPLATE(all_debugging_effects, /obj/effect/debugging)
/obj/effect/debugging/camera_range
icon = 'icons/480x480.dmi'
icon_state = "25percent"
@@ -54,7 +56,7 @@ var/intercom_range_display_status = 0
for(var/obj/effect/debugging/camera_range/C in world)
for(var/obj/effect/debugging/camera_range/C in all_debugging_effects)
qdel(C)
if(camera_range_display_status)
@@ -113,11 +115,11 @@ var/intercom_range_display_status = 0
else
intercom_range_display_status = 1
for(var/obj/effect/debugging/marker/M in world)
for(var/obj/effect/debugging/marker/M in all_debugging_effects)
qdel(M)
if(intercom_range_display_status)
for(var/obj/item/device/radio/intercom/I in world)
for(var/obj/item/device/radio/intercom/I in machines)
for(var/turf/T in orange(7,I))
var/obj/effect/debugging/marker/F = new/obj/effect/debugging/marker(T)
if (!(F in view(7,I.loc)))
+12 -12
View File
@@ -144,7 +144,7 @@
A.vars[variable] = O.vars[variable]
else if(istype(O, /turf))
for(var/turf/A in world)
for(var/turf/A in turfs)
if ( istype(A , O.type) )
A.vars[variable] = O.vars[variable]
@@ -160,7 +160,7 @@
A.vars[variable] = O.vars[variable]
else if(istype(O, /turf))
for(var/turf/A in world)
for(var/turf/A in turfs)
if (A.type == O.type)
A.vars[variable] = O.vars[variable]
@@ -184,7 +184,7 @@
A.vars[variable] = O.vars[variable]
else if(istype(O, /turf))
for(var/turf/A in world)
for(var/turf/A in turfs)
if ( istype(A , O.type) )
A.vars[variable] = O.vars[variable]
else
@@ -199,7 +199,7 @@
A.vars[variable] = O.vars[variable]
else if(istype(O, /turf))
for(var/turf/A in world)
for(var/turf/A in turfs)
if (A.type == O.type)
A.vars[variable] = O.vars[variable]
@@ -231,7 +231,7 @@
A.vars[variable] = O.vars[variable]
else if(istype(O, /turf))
for(var/turf/A in world)
for(var/turf/A in turfs)
if ( istype(A , O.type) )
if(variable=="light_range")
A.set_light(new_value)
@@ -256,7 +256,7 @@
A.vars[variable] = O.vars[variable]
else if(istype(O, /turf))
for(var/turf/A in world)
for(var/turf/A in turfs)
if (A.type == O.type)
if(variable=="light_range")
A.set_light(new_value)
@@ -280,7 +280,7 @@
A.vars[variable] = O.vars[variable]
else if(istype(O, /turf))
for(var/turf/A in world)
for(var/turf/A in turfs)
if ( istype(A , O.type) )
A.vars[variable] = O.vars[variable]
else
@@ -295,7 +295,7 @@
A.vars[variable] = O.vars[variable]
else if(istype(O, /turf))
for(var/turf/A in world)
for(var/turf/A in turfs)
if (A.type == O.type)
A.vars[variable] = O.vars[variable]
@@ -316,7 +316,7 @@
A.vars[variable] = O.vars[variable]
else if(istype(O.type, /turf))
for(var/turf/A in world)
for(var/turf/A in turfs)
if ( istype(A , O.type) )
A.vars[variable] = O.vars[variable]
else
@@ -331,7 +331,7 @@
A.vars[variable] = O.vars[variable]
else if(istype(O.type, /turf))
for(var/turf/A in world)
for(var/turf/A in turfs)
if (A.type == O.type)
A.vars[variable] = O.vars[variable]
@@ -351,7 +351,7 @@
A.vars[variable] = O.vars[variable]
else if(istype(O, /turf))
for(var/turf/A in world)
for(var/turf/A in turfs)
if ( istype(A , O.type) )
A.vars[variable] = O.vars[variable]
@@ -367,7 +367,7 @@
A.vars[variable] = O.vars[variable]
else if(istype(O, /turf))
for(var/turf/A in world)
for(var/turf/A in turfs)
if (A.type == O.type)
A.vars[variable] = O.vars[variable]
+18 -2
View File
@@ -1,15 +1,31 @@
/client/proc/panicbunker()
set category = "Server"
set name = "Toggle Panic Bunker"
if(!check_rights(R_ADMIN))
return
if (!config.sql_enabled)
to_chat(usr, "<span class='adminnotice'>The Database is not enabled!</span>")
return
config.panic_bunker = (!config.panic_bunker)
log_admin("[key_name(usr)] has toggled the Panic Bunker, it is now [(config.panic_bunker?"on":"off")]")
message_admins("[key_name_admin(usr)] has toggled the Panic Bunker, it is now [(config.panic_bunker?"enabled":"disabled")].")
log_and_message_admins("[key_name(usr)] has toggled the Panic Bunker, it is now [(config.panic_bunker?"on":"off")]")
if (config.panic_bunker && (!dbcon || !dbcon.IsConnected()))
message_admins("The Database is not connected! Panic bunker will not work until the connection is reestablished.")
feedback_add_details("admin_verb","PANIC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/paranoia_logging()
set category = "Server"
set name = "New Player Warnings"
if(!check_rights(R_ADMIN))
return
config.paranoia_logging = (!config.paranoia_logging)
log_and_message_admins("[key_name(usr)] has toggled Paranoia Logging, it is now [(config.paranoia_logging?"on":"off")]")
if (config.paranoia_logging && (!dbcon || !dbcon.IsConnected()))
message_admins("The Database is not connected! Paranoia logging will not be able to give 'player age' (time since first connection) warnings, only Byond account warnings.")
feedback_add_details("admin_verb","PARLOG") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+5 -5
View File
@@ -54,12 +54,12 @@ var/list/sounds_cache = list()
set name = "Cuban Pete Time"
message_admins("[key_name_admin(usr)] has declared Cuban Pete Time!", 1)
for(var/mob/M in world)
for(var/mob/M in player_list)
if(M.client)
if(M.client.midis)
M << 'cubanpetetime.ogg'
for(var/mob/living/carbon/human/CP in world)
for(var/mob/living/carbon/human/CP in human_mob_list)
if(CP.real_name=="Cuban Pete" && CP.key!="Rosham")
CP << "Your body can't contain the rhumba beat"
CP.gib()
@@ -70,7 +70,7 @@ var/list/sounds_cache = list()
set name = "Banana Phone"
message_admins("[key_name_admin(usr)] has activated Banana Phone!", 1)
for(var/mob/M in world)
for(var/mob/M in player_list)
if(M.client)
if(M.client.midis)
M << 'bananaphone.ogg'
@@ -81,7 +81,7 @@ client/proc/space_asshole()
set name = "Space Asshole"
message_admins("[key_name_admin(usr)] has played the Space Asshole Hymn.", 1)
for(var/mob/M in world)
for(var/mob/M in player_list)
if(M.client)
if(M.client.midis)
M << 'sound/music/space_asshole.ogg'
@@ -92,7 +92,7 @@ client/proc/honk_theme()
set name = "Honk"
message_admins("[key_name_admin(usr)] has creeped everyone out with Blackest Honks.", 1)
for(var/mob/M in world)
for(var/mob/M in player_list)
if(M.client)
if(M.client.midis)
M << 'honk_theme.ogg'*/
+1 -1
View File
@@ -17,7 +17,7 @@
return
var/image/cross = image('icons/obj/storage.dmi',"bible")
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>"
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>) (<A HREF='?_src_=holder;adminsmite=\ref[src]'>SMITE</a>):</b> [msg]</font>"
for(var/client/C in admins)
if(R_ADMIN & C.holder.rights)
+3 -3
View File
@@ -219,7 +219,7 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
var/show_log = alert(src, "Show ion message?", "Message", "Yes", "No")
if(show_log == "Yes")
command_announcement.Announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", new_sound = 'sound/AI/ionstorm.ogg')
command_announcement.Announce("Ion storm detected near \the [station_name()]. Please check all AI-controlled equipment for errors.", "Anomaly Alert", new_sound = 'sound/AI/ionstorm.ogg')
IonStorm(0)
feedback_add_details("admin_verb","ION") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -522,7 +522,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
var/show_log = alert(src, "Show ion message?", "Message", "Yes", "No")
if(show_log == "Yes")
command_announcement.Announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", new_sound = 'sound/AI/ionstorm.ogg')
command_announcement.Announce("Ion storm detected near the [station_name()]. Please check all AI-controlled equipment for errors.", "Anomaly Alert", new_sound = 'sound/AI/ionstorm.ogg')
feedback_add_details("admin_verb","IONC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_rejuvenate(mob/living/M as mob in mob_list)
@@ -704,7 +704,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
switch(alert("How would you like to ban someone today?", "Manual Ban", "Key List", "Enter Manually", "Cancel"))
if("Key List")
var/list/keys = list()
for(var/mob/M in world)
for(var/mob/M in player_list)
keys += M.client
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in keys
if(!selection)
+83
View File
@@ -0,0 +1,83 @@
/client/proc/smite(var/mob/living/carbon/human/target in player_list)
set name = "Smite"
set desc = "Abuse a player with various 'special treatments' from a list."
set category = "Fun"
if(!check_rights(R_FUN))
return
if(!istype(target))
return
var/list/smite_types = list(SMITE_BREAKLEGS,SMITE_BLUESPACEARTILLERY,SMITE_SPONTANEOUSCOMBUSTION,SMITE_LIGHTNINGBOLT)
var/smite_choice = input("Select the type of SMITE for [target]","SMITE Type Choice") as null|anything in smite_types
if(!smite_choice)
return
switch(smite_choice)
if(SMITE_BREAKLEGS)
var/broken_legs = 0
var/obj/item/organ/external/left_leg = target.get_organ(BP_L_LEG)
if(left_leg && left_leg.fracture())
broken_legs++
var/obj/item/organ/external/right_leg = target.get_organ(BP_R_LEG)
if(right_leg && right_leg.fracture())
broken_legs++
if(!broken_legs)
to_chat(src,"[target] didn't have any breakable legs, sorry.")
if(SMITE_BLUESPACEARTILLERY)
bluespace_artillery(target,src)
if(SMITE_SPONTANEOUSCOMBUSTION)
target.adjust_fire_stacks(10)
target.IgniteMob()
target.visible_message("<span class='danger'>[target] bursts into flames!</span>")
if(SMITE_LIGHTNINGBOLT)
var/turf/T = get_step(get_step(target, NORTH), NORTH)
T.Beam(target, icon_state="lightning[rand(1,12)]", time = 5)
target.electrocute_act(75,def_zone = BP_HEAD)
target.visible_message("<span class='danger'>[target] is struck by lightning!</span>")
else
return //Injection? Don't print any messages.
log_and_message_admins("[key_name(src)] has used SMITE ([smite_choice]) on [key_name(target)].")
feedback_add_details("admin_verb","SMITE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/proc/bluespace_artillery(mob/living/target, user)
if(!istype(target))
return
if(BSACooldown)
if(user)
to_chat(user,"<span class='warning'>BSA is still cooling down, please wait!</span>")
return
BSACooldown = 1
spawn(50)
BSACooldown = 0
to_chat(target,"You've been hit by bluespace artillery!")
log_and_message_admins("[key_name(target)] has been hit by Bluespace Artillery fired by [key_name(user ? user : usr)]")
var/obj/effect/stop/S
S = new /obj/effect/stop
S.victim = target
S.loc = target.loc
spawn(20)
qdel(S)
var/turf/simulated/floor/T = get_turf(target)
if(istype(T))
if(prob(80)) T.break_tile_to_plating()
else T.break_tile()
if(target.health == 1)
target.gib()
else
target.adjustBruteLoss( min( 99 , (target.health - 1) ) )
target.Stun(20)
target.Weaken(20)
target.stuttering = 20