Merge branch 'master' into upstream-merge-29105
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
-- Will change all the tube lights to green
|
||||
UPDATE /obj/machinery/light IN world SET color = "#0F0" WHERE icon_state == "tube1"
|
||||
-- Will delete all pickaxes. "IN world" is not required.
|
||||
DELETE /obj/item/weapon/pickaxe
|
||||
DELETE /obj/item/pickaxe
|
||||
-- Will flicker the lights once, then turn all mobs green. The semicolon is important to separate the consecutive querys, but is not required for standard one-query use
|
||||
CALL flicker(1) ON /obj/machinery/light; UPDATE /mob SET color = "#00cc00"
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
/proc/_abs(A)
|
||||
return abs(A)
|
||||
|
||||
/*/proc/_animate(atom/A, set_vars, time = 10, loop = 1, easing = LINEAR_EASING, flags = null)
|
||||
animate(A, set_vars, time, loop, easing, flags)
|
||||
/*/proc/_animate(atom/A, set_vars, time = 10, loop = 1, easing = LINEAR_EASING, flags_1 = null)
|
||||
animate(A, set_vars, time, loop, easing, flags_1)
|
||||
Borked. If anyone wants to fix this be my guest.*/
|
||||
|
||||
/proc/_acrccos(A)
|
||||
@@ -112,8 +112,8 @@
|
||||
/proc/_range(Dist, Center = usr)
|
||||
return range(Dist, Center)
|
||||
|
||||
/proc/_regex(pattern, flags)
|
||||
return regex(pattern, flags)
|
||||
/proc/_regex(pattern, flags_1)
|
||||
return regex(pattern, flags_1)
|
||||
|
||||
/proc/_REGEX_QUOTE(text)
|
||||
return REGEX_QUOTE(text)
|
||||
|
||||
@@ -24,7 +24,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
QDEL_NULL(cstatclick)
|
||||
QDEL_NULL(rstatclick)
|
||||
return ..()
|
||||
|
||||
|
||||
/datum/admin_help_tickets/proc/TicketByID(id)
|
||||
var/list/lists = list(active_tickets, closed_tickets, resolved_tickets)
|
||||
for(var/I in lists)
|
||||
@@ -185,8 +185,6 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
|
||||
TimeoutVerb()
|
||||
|
||||
var/parsed_message = keywords_lookup(msg)
|
||||
|
||||
statclick = new(null, src)
|
||||
_interactions = list()
|
||||
|
||||
@@ -194,7 +192,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
AddInteraction("<font color='blue'>[key_name_admin(usr)] PM'd [LinkedReplyName()]</font>")
|
||||
message_admins("<font color='blue'>Ticket [TicketHref("#[id]")] created</font>")
|
||||
else
|
||||
MessageNoRecipient(msg, parsed_message)
|
||||
MessageNoRecipient(msg)
|
||||
|
||||
//send it to irc if nobody is on and tell us how many were on
|
||||
var/admin_number_present = send2irc_adminless_only(initiator_ckey, "Ticket #[id]: [name]")
|
||||
@@ -249,13 +247,13 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
|
||||
//message from the initiator without a target, all admins will see this
|
||||
//won't bug irc
|
||||
/datum/admin_help/proc/MessageNoRecipient(msg, parsed_msg)
|
||||
/datum/admin_help/proc/MessageNoRecipient(msg)
|
||||
var/ref_src = "\ref[src]"
|
||||
//Message to be sent to all admins
|
||||
var/admin_msg = "<span class='adminnotice'><span class='adminhelp'>Ticket [TicketHref("#[id]", ref_src)]</span><b>: [LinkedReplyName(ref_src)] [FullMonty(ref_src)]:</b> [parsed_msg]</span>"
|
||||
var/admin_msg = "<span class='adminnotice'><span class='adminhelp'>Ticket [TicketHref("#[id]", ref_src)]</span><b>: [LinkedReplyName(ref_src)] [FullMonty(ref_src)]:</b> [keywords_lookup(msg)]</span>"
|
||||
|
||||
AddInteraction("<font color='red'>[LinkedReplyName(ref_src)]: [msg]</font>")
|
||||
|
||||
|
||||
//send this msg to all admins
|
||||
for(var/client/X in GLOB.admins)
|
||||
if(X.prefs.toggles & SOUND_ADMINHELP)
|
||||
|
||||
@@ -348,11 +348,10 @@ GLOBAL_PROTECT(AdminProcCallCount)
|
||||
/obj/effect/decal/cleanable = "CLEANABLE",
|
||||
/obj/item/device/radio/headset = "HEADSET",
|
||||
/obj/item/clothing/head/helmet/space = "SPESSHELMET",
|
||||
/obj/item/weapon/book/manual = "MANUAL",
|
||||
/obj/item/weapon/reagent_containers/food/drinks = "DRINK", //longest paths comes first
|
||||
/obj/item/weapon/reagent_containers/food = "FOOD",
|
||||
/obj/item/weapon/reagent_containers = "REAGENT_CONTAINERS",
|
||||
/obj/item/weapon = "WEAPON",
|
||||
/obj/item/book/manual = "MANUAL",
|
||||
/obj/item/reagent_containers/food/drinks = "DRINK", //longest paths comes first
|
||||
/obj/item/reagent_containers/food = "FOOD",
|
||||
/obj/item/reagent_containers = "REAGENT_CONTAINERS",
|
||||
/obj/machinery/atmospherics = "ATMOS_MECH",
|
||||
/obj/machinery/portable_atmospherics = "PORT_ATMOS",
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack = "MECHA_MISSILE_RACK",
|
||||
@@ -442,14 +441,14 @@ GLOBAL_PROTECT(AdminProcCallCount)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/worn = H.wear_id
|
||||
var/obj/item/weapon/card/id/id = null
|
||||
var/obj/item/card/id/id = null
|
||||
if(worn)
|
||||
id = worn.GetID()
|
||||
if(id)
|
||||
id.icon_state = "gold"
|
||||
id.access = get_all_accesses()+get_all_centcom_access()+get_all_syndicate_access()
|
||||
else
|
||||
id = new /obj/item/weapon/card/id/gold(H.loc)
|
||||
id = new /obj/item/card/id/gold(H.loc)
|
||||
id.access = get_all_accesses()+get_all_centcom_access()+get_all_syndicate_access()
|
||||
id.registered_name = H.real_name
|
||||
id.assignment = "Captain"
|
||||
@@ -460,8 +459,8 @@ GLOBAL_PROTECT(AdminProcCallCount)
|
||||
var/obj/item/device/pda/PDA = worn
|
||||
PDA.id = id
|
||||
id.forceMove(PDA)
|
||||
else if(istype(worn, /obj/item/weapon/storage/wallet))
|
||||
var/obj/item/weapon/storage/wallet/W = worn
|
||||
else if(istype(worn, /obj/item/storage/wallet))
|
||||
var/obj/item/storage/wallet/W = worn
|
||||
W.front_id = id
|
||||
id.forceMove(W)
|
||||
W.update_icon()
|
||||
@@ -505,12 +504,13 @@ GLOBAL_PROTECT(AdminProcCallCount)
|
||||
var/list/areas_with_LS = list()
|
||||
var/list/areas_with_intercom = list()
|
||||
var/list/areas_with_camera = list()
|
||||
var/list/station_areas_blacklist = typecacheof(list(/area/holodeck/rec_center, /area/shuttle, /area/engine/supermatter, /area/science/test_area, /area/space, /area/solar, /area/mine, /area/ruin))
|
||||
|
||||
for(var/area/A in world)
|
||||
if(on_station)
|
||||
var/turf/picked = safepick(get_area_turfs(A.type))
|
||||
if(picked && (picked.z == ZLEVEL_STATION))
|
||||
if(!(A.type in areas_all))
|
||||
if(!(A.type in areas_all) && !is_type_in_typecache(A, station_areas_blacklist))
|
||||
areas_all.Add(A.type)
|
||||
else if(!(A.type in areas_all))
|
||||
areas_all.Add(A.type)
|
||||
@@ -705,7 +705,7 @@ GLOBAL_PROTECT(AdminProcCallCount)
|
||||
for(var/obj/machinery/power/rad_collector/Rad in GLOB.machines)
|
||||
if(Rad.anchored)
|
||||
if(!Rad.loaded_tank)
|
||||
var/obj/item/weapon/tank/internals/plasma/Plasma = new/obj/item/weapon/tank/internals/plasma(Rad)
|
||||
var/obj/item/tank/internals/plasma/Plasma = new/obj/item/tank/internals/plasma(Rad)
|
||||
Plasma.air_contents.assert_gas("plasma")
|
||||
Plasma.air_contents.gases["plasma"][MOLES] = 70
|
||||
Rad.drainratio = 0
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
set category = "Debug"
|
||||
var/new_rating = input("Enter new rating:","Num") as num
|
||||
if(new_rating && M.component_parts)
|
||||
for(var/obj/item/weapon/stock_parts/P in M.component_parts)
|
||||
for(var/obj/item/stock_parts/P in M.component_parts)
|
||||
P.rating = new_rating
|
||||
M.RefreshParts()
|
||||
|
||||
|
||||
@@ -16,11 +16,11 @@
|
||||
organ.Insert(C)
|
||||
|
||||
if("add implant")
|
||||
for(var/path in subtypesof(/obj/item/weapon/implant))
|
||||
var/dat = replacetext("[path]", "/obj/item/weapon/implant/", ":")
|
||||
for(var/path in subtypesof(/obj/item/implant))
|
||||
var/dat = replacetext("[path]", "/obj/item/implant/", ":")
|
||||
organs[dat] = path
|
||||
|
||||
var/obj/item/weapon/implant/organ = input("Select implant type:", "Organ Manipulation", null) in organs
|
||||
var/obj/item/implant/organ = input("Select implant type:", "Organ Manipulation", null) in organs
|
||||
organ = organs[organ]
|
||||
organ = new organ
|
||||
organ.implant(C)
|
||||
@@ -31,14 +31,14 @@
|
||||
organs["[I.name] ([I.type])"] = I
|
||||
|
||||
for(var/X in C.implants)
|
||||
var/obj/item/weapon/implant/I = X
|
||||
var/obj/item/implant/I = X
|
||||
organs["[I.name] ([I.type])"] = I
|
||||
|
||||
var/obj/item/organ = input("Select organ/implant:", "Organ Manipulation", null) in organs
|
||||
organ = organs[organ]
|
||||
if(!organ) return
|
||||
var/obj/item/organ/O
|
||||
var/obj/item/weapon/implant/I
|
||||
var/obj/item/implant/I
|
||||
|
||||
if(isorgan(organ))
|
||||
O = organ
|
||||
@@ -52,7 +52,7 @@
|
||||
if(operation == "remove organ/implant")
|
||||
qdel(organ)
|
||||
else if(I) // Put the implant in case.
|
||||
var/obj/item/weapon/implantcase/case = new(get_turf(C))
|
||||
var/obj/item/implantcase/case = new(get_turf(C))
|
||||
case.imp = I
|
||||
I.loc = case
|
||||
case.update_icon()
|
||||
|
||||
@@ -7,7 +7,7 @@ GLOBAL_VAR_INIT(highlander, FALSE)
|
||||
|
||||
send_to_playing_players("<span class='boldannounce'><font size=6>THERE CAN BE ONLY ONE</font></span>")
|
||||
|
||||
for(var/obj/item/weapon/disk/nuclear/N in GLOB.poi_list)
|
||||
for(var/obj/item/disk/nuclear/N in GLOB.poi_list)
|
||||
N.relocate() //Gets it out of bags and such
|
||||
|
||||
for(var/mob/living/carbon/human/H in GLOB.player_list)
|
||||
@@ -50,26 +50,26 @@ GLOBAL_VAR_INIT(highlander, FALSE)
|
||||
equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(src), slot_ears)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/head/beret/highlander(src), slot_head)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(src), slot_shoes)
|
||||
equip_to_slot_or_del(new /obj/item/weapon/pinpointer(src), slot_l_store)
|
||||
for(var/obj/item/weapon/pinpointer/P in src)
|
||||
equip_to_slot_or_del(new /obj/item/pinpointer(src), slot_l_store)
|
||||
for(var/obj/item/pinpointer/P in src)
|
||||
P.attack_self(src)
|
||||
var/obj/item/weapon/card/id/W = new(src)
|
||||
var/obj/item/card/id/W = new(src)
|
||||
W.icon_state = "centcom"
|
||||
W.access = get_all_accesses()
|
||||
W.access += get_all_centcom_access()
|
||||
W.assignment = "Highlander"
|
||||
W.registered_name = real_name
|
||||
W.flags |= NODROP
|
||||
W.flags_1 |= NODROP_1
|
||||
W.update_label(real_name)
|
||||
equip_to_slot_or_del(W, slot_wear_id)
|
||||
|
||||
var/obj/item/weapon/claymore/highlander/H1 = new(src)
|
||||
var/obj/item/claymore/highlander/H1 = new(src)
|
||||
if(!GLOB.highlander)
|
||||
H1.admin_spawned = TRUE //To prevent announcing
|
||||
put_in_hands(H1)
|
||||
H1.pickup(src) //For the stun shielding
|
||||
|
||||
var/obj/item/weapon/bloodcrawl/antiwelder = new(src)
|
||||
var/obj/item/bloodcrawl/antiwelder = new(src)
|
||||
antiwelder.name = "compulsion of honor"
|
||||
antiwelder.desc = "You are unable to hold anything in this hand until you're the last one left!"
|
||||
antiwelder.icon_state = "bloodhand_right"
|
||||
@@ -108,10 +108,10 @@ GLOBAL_VAR_INIT(highlander, FALSE)
|
||||
var/obj/item/slot_item_hand = H.get_item_for_held_index(2)
|
||||
H.dropItemToGround(slot_item_hand)
|
||||
|
||||
var /obj/item/weapon/multisword/multi = new(H)
|
||||
var /obj/item/multisword/multi = new(H)
|
||||
H.put_in_hands_or_del(multi)
|
||||
|
||||
var/obj/item/weapon/card/id/W = new(H)
|
||||
var/obj/item/card/id/W = new(H)
|
||||
W.icon_state = "centcom"
|
||||
W.access = get_all_accesses()
|
||||
W.access += get_all_centcom_access()
|
||||
|
||||
@@ -9,6 +9,11 @@
|
||||
freq = pick(0.5, 0.7, 0.8, 0.85, 0.9, 0.95, 1.1, 1.2, 1.4, 1.6, 2.0, 2.5)
|
||||
to_chat(src, "You feel the Honkmother messing with your song...")
|
||||
|
||||
var/vol = input(usr, "What volume would you like the sound to play at?",, 100) as null|num
|
||||
if(!vol)
|
||||
return
|
||||
vol = Clamp(vol, 1, 100)
|
||||
|
||||
var/sound/admin_sound = new()
|
||||
admin_sound.file = S
|
||||
admin_sound.priority = 250
|
||||
@@ -17,7 +22,8 @@
|
||||
admin_sound.wait = 1
|
||||
admin_sound.repeat = 0
|
||||
admin_sound.status = SOUND_STREAM
|
||||
|
||||
admin_sound.volume = vol
|
||||
|
||||
var/res = alert(usr, "Show the title of this song to the players?",, "No", "Yes", "Cancel")
|
||||
switch(res)
|
||||
if("Yes")
|
||||
|
||||
@@ -652,7 +652,6 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
change_view(input("Select view range:", "FUCK YE", 7) in list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128))
|
||||
else
|
||||
change_view(world.view)
|
||||
|
||||
log_admin("[key_name(usr)] changed their view range to [view].")
|
||||
//message_admins("\blue [key_name_admin(usr)] changed their view range to [view].") //why? removed by order of XSI
|
||||
|
||||
@@ -1156,7 +1155,6 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
|
||||
/client/proc/toggle_hub()
|
||||
set category = "Server"
|
||||
set name = "Toggle Hub"
|
||||
|
||||
world.update_hub_visibility(!GLOB.hub_visibility)
|
||||
|
||||
log_admin("[key_name(usr)] has toggled the server's hub status for the round, it is now [(GLOB.hub_visibility?"on":"off")] the hub.")
|
||||
|
||||
Reference in New Issue
Block a user