Merge branch 'master' into theworstshuttle

This commit is contained in:
KorPhaeron
2017-02-10 11:27:34 -06:00
committed by GitHub
219 changed files with 2906 additions and 91107 deletions
+1 -41
View File
@@ -100,44 +100,6 @@
qdel(src)
//Luxury Shuttle Blockers
/obj/effect/forcefield/luxury_shuttle
var/threshhold = 500
var/list/approved_passengers = list()
/obj/effect/forcefield/luxury_shuttle/CanPass(atom/movable/mover, turf/target, height=0)
if(mover in approved_passengers)
return 1
if(!isliving(mover)) //No stowaways
return 0
var/total_cash = 0
var/list/counted_money = list()
for(var/obj/item/weapon/coin/C in mover)
total_cash += C.value
counted_money += C
if(total_cash >= threshhold)
break
for(var/obj/item/stack/spacecash/S in mover)
total_cash += S.value * S.amount
counted_money += S
if(total_cash >= threshhold)
break
if(total_cash >= threshhold)
for(var/obj/I in counted_money)
qdel(I)
mover << "Thank you for your payment! Please enjoy your flight."
approved_passengers += mover
return 1
else
mover << "You don't have enough money to enter the main shuttle. You'll have to fly coach."
return 0
//Shuttle Build
/obj/effect/shuttle_build
@@ -151,8 +113,6 @@
SSshuttle.emergency.dock(SSshuttle.getDock("emergency_home"))
qdel(src)
//Arena
/obj/effect/forcefield/arena_shuttle
@@ -216,4 +176,4 @@
/area/shuttle_arena
name = "arena"
has_gravity = 1
requires_power = 0
requires_power = 0
+33 -3
View File
@@ -337,10 +337,40 @@
dat += "Time limit: <a href='?_src_=holder;alter_midround_time_limit=1'>[config.midround_antag_time_check] minutes into round</a><BR>"
dat += "Living crew limit: <a href='?_src_=holder;alter_midround_life_limit=1'>[config.midround_antag_life_check * 100]% of crew alive</a><BR>"
dat += "If limits past: <a href='?_src_=holder;toggle_noncontinuous_behavior=1'>[ticker.mode.round_ends_with_antag_death ? "End The Round" : "Continue As Extended"]</a><BR>"
dat += "<BR>"
dat += "<a href='?_src_=holder;end_round=\ref[usr]'>End Round Now</a><br>"
dat += "<a href='?_src_=holder;delay_round_end=1'>[ticker.delay_end ? "End Round Normally" : "Delay Round End"]</a><br>"
dat += "<a href='?_src_=holder;delay_round_end=1'>[ticker.delay_end ? "End Round Normally" : "Delay Round End"]</a>"
var/connected_players = clients.len
var/lobby_players = 0
var/observers = 0
var/observers_connected = 0
var/living_players = 0
var/living_players_connected = 0
var/living_players_antagonist = 0
var/other_players = 0
for(var/mob/M in mob_list)
if(M.ckey)
if(isnewplayer(M))
lobby_players++
continue
else if(M.stat != DEAD && M.mind && !isbrain(M))
living_players++
if(M.mind.special_role)
living_players_antagonist++
if(M.client)
living_players_connected++
else if((M.stat == DEAD )||(isobserver(M)))
observers++
if(M.client)
observers_connected++
else
other_players += M
dat += "<BR><b><font color='blue' size='3'>Players:|[connected_players - lobby_players] ingame|[connected_players] connected|[lobby_players] lobby|</font></b>"
dat += "<BR><b><font color='green'>Living Players:|[living_players_connected] active|[living_players - living_players_connected] disconnected|[living_players_antagonist] antagonists|</font></b>"
dat += "<BR><b><font color='red'>Dead/Observing players:|[observers_connected] active|[observers - observers_connected] disconnected|</font></b>"
if(other_players)
dat += "<BR><span class='userdanger'>[other_players] players in invalid state or the statistics code is bugged!</span>"
dat += "<BR>"
if(ticker.mode.syndicates.len)
dat += "<br><table cellspacing=5><tr><td><B>Syndicates</B></td><td></td></tr>"
for(var/datum/mind/N in ticker.mode.syndicates)
-8
View File
@@ -9,7 +9,6 @@
<A href='?src=\ref[src];secrets=list_job_debug'>Show Job Debug</A><BR>
<A href='?src=\ref[src];secrets=admin_log'>Admin Log</A><BR>
<A href='?src=\ref[src];secrets=show_admins'>Show Admin List</A><BR>
<A href='?src=\ref[src];secrets=show_current_watchlist'>Show online players in the watchlist</A><BR>
<BR>
"}
@@ -120,13 +119,6 @@
dat += "[ckey] - [D.rank.name]<br>"
usr << browse(dat, "window=showadmins;size=600x500")
if("show_current_watchlist")
var/dat = "<B>Watchlist: </B><HR>"
if(current_watchlist)
for(var/ckey in current_watchlist)
dat += "[ckey] - [current_watchlist[ckey]]"
usr << browse(dat, "window=showcurrentwatchlist;size=600x500")
if("tdomereset")
if(!check_rights(R_ADMIN))
return
+25 -8
View File
@@ -154,7 +154,7 @@
message_admins("[key_name_admin(usr)] has toggled [target_ckey]'s [type] made by [admin_ckey] to [secret ? "not secret" : "secret"]")
browse_messages(target_ckey = target_ckey)
/proc/browse_messages(type, target_ckey, index, linkless = 0)
/proc/browse_messages(type, target_ckey, index, linkless = 0, filter)
if(!dbcon.IsConnected())
usr << "<span class='danger'>Failed to establish database connection.</span>"
return
@@ -176,7 +176,11 @@
output += "<a href='?_src_=holder;addmemo=1'>\[Add memo\]</a></center>"
else if(type == "watchlist entry")
output += "<h2><center>Watchlist entries</h2>"
output += "<a href='?_src_=holder;addwatchempty=1'>\[Add watchlist entry\]</a></center>"
output += "<a href='?_src_=holder;addwatchempty=1'>\[Add watchlist entry\]</a>"
if(filter)
output += "|<a href='?_src_=holder;showwatch=1'>\[Unfilter clients\]</a></center>"
else
output += "|<a href='?_src_=holder;showwatchfilter=1'>\[Filter offline clients\]</a></center>"
output += ruler
var/DBQuery/query_get_type_messages = dbcon.NewQuery("SELECT id, targetckey, adminckey, text, timestamp, server, lasteditor FROM [format_table_name("messages")] WHERE type = '[type]'")
if(!query_get_type_messages.Execute())
@@ -186,6 +190,8 @@
while(query_get_type_messages.NextRow())
var/id = query_get_type_messages.item[1]
var/t_ckey = query_get_type_messages.item[2]
if(type == "watchlist entry" && filter && !(t_ckey in directory))
continue
var/admin_ckey = query_get_type_messages.item[3]
var/text = query_get_type_messages.item[4]
var/timestamp = query_get_type_messages.item[5]
@@ -229,13 +235,20 @@
data += " <a href='?_src_=holder;deletemessage=[id]'>\[Delete\]</a>"
if(type == "note")
data += " <a href='?_src_=holder;secretmessage=[id]'>[secret ? "<b>\[Secret\]</b>" : "\[Not secret\]"]</a>"
data += " <a href='?_src_=holder;editmessage=[id]'>\[Edit\]</a>"
if(type == "message sent")
data += " <font size='2'>Message has been sent</font>"
if(editor_ckey)
data += "|"
else
data += " <a href='?_src_=holder;editmessage=[id]'>\[Edit\]</a>"
if(editor_ckey)
data += " <font size='2'>Last edit by [editor_ckey] <a href='?_src_=holder;messageedits=[id]'>(Click here to see edit log)</a></font>"
data += "<br>[text]<hr style='background:#000000; border:0; height:1px'>"
switch(type)
if("message")
messagedata += data
if("message sent")
messagedata += data
if("watchlist entry")
watchdata += data
if("note")
@@ -303,7 +316,7 @@ proc/get_message_output(type, target_ckey)
log_game("SQL ERROR obtaining id, adminckey, text, timestamp, lasteditor from messages table. Error : \[[err]\]\n")
return
while(query_get_message_output.NextRow())
var/id = query_get_message_output.item[1]
var/message_id = query_get_message_output.item[1]
var/admin_ckey = query_get_message_output.item[2]
var/text = query_get_message_output.item[3]
var/timestamp = query_get_message_output.item[4]
@@ -311,15 +324,19 @@ proc/get_message_output(type, target_ckey)
switch(type)
if("message")
output += "<font color='red' size='3'><b>Admin message left by <span class='prefix'>[admin_ckey]</span> on [timestamp]</b></font>"
output += "<br><font color='red'>[text]</font>"
delete_message(id, 0)
output += "<br><font color='red'>[text]</font><br>"
var/DBQuery/query_message_read = dbcon.NewQuery("UPDATE [format_table_name("messages")] SET type = 'message sent' WHERE id = [message_id]")
if(!query_message_read.Execute())
var/err = query_message_read.ErrorMsg()
log_game("SQL ERROR updating message type. Error : \[[err]\]\n")
return
if("watchlist entry")
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'>[key_name_admin(target_ckey)] is on the watchlist and has just connected - Reason: [text]</font>")
send2irc_adminless_only("Watchlist", "[key_name(target_ckey)] is on the watchlist and has just connected - Reason: [text]")
if("memo")
output += "<span class='memo'>Memo by <span class='prefix'>[admin_ckey]</span> on [timestamp]"
if(editor_ckey)
output += "<br><span class='memoedit'>Last edit by [editor_ckey] <A href='?_src_=holder;messageedits=[id]'>(Click here to see edit log)</A></span>"
output += "<br><span class='memoedit'>Last edit by [editor_ckey] <A href='?_src_=holder;messageedits=[message_id]'>(Click here to see edit log)</A></span>"
output += "<br>[text]</span><br>"
return output
@@ -368,4 +385,4 @@ this proc can take several minutes to execute fully if converting and cause DD t
world << "Deleting NOTESFILE"
fdel(NOTESFILE)
world << "Finished mass note conversion, remember to turn off AUTOCONVERT_NOTES"*/
#undef NOTESFILE
#undef NOTESFILE
+35 -2
View File
@@ -1087,6 +1087,9 @@
else if(href_list["showwatch"])
browse_messages("watchlist entry")
else if(href_list["showwatchfilter"])
browse_messages("watchlist entry", filter = 1)
else if(href_list["showmessageckey"])
var/target = href_list["showmessageckey"]
browse_messages(target_ckey = target)
@@ -1700,12 +1703,42 @@
H << "<span class='adminnotice'>Your prayers have been answered!! You received the <b>best cookie</b>!</span>"
H << 'sound/effects/pray_chaplain.ogg'
else if(href_list["adminsmite"])
if(!check_rights(R_ADMIN|R_FUN))
return
var/mob/living/carbon/human/H = locate(href_list["adminsmite"]) in mob_list
if(!H || !istype(H))
return
var/list/punishment_list = list(ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_GIB)
var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list
if(QDELETED(H) || !punishment)
return
switch(punishment)
if(ADMIN_PUNISHMENT_LIGHTNING)
var/turf/T = get_step(get_step(H, NORTH), NORTH)
T.Beam(H, icon_state="lightning[rand(1,12)]", time = 5)
H.adjustFireLoss(75)
H.electrocution_animation(40)
H << "<span class='userdanger'>The gods have punished you for your sins!</span>"
if(ADMIN_PUNISHMENT_BRAINDAMAGE)
H.adjustBrainLoss(75)
if(ADMIN_PUNISHMENT_GIB)
H.gib(FALSE)
message_admins("[key_name_admin(usr)] punished [key_name_admin(H)] with [punishment].")
log_admin("[key_name(usr)] punished [key_name(H)] with [punishment].")
else if(href_list["BlueSpaceArtillery"])
var/mob/living/M = locate(href_list["BlueSpaceArtillery"])
var/mob/living/M = locate(href_list["BlueSpaceArtillery"]) in mob_list
usr.client.bluespace_artillery(M)
else if(href_list["CentcommReply"])
var/mob/living/carbon/human/H = locate(href_list["CentcommReply"])
var/mob/living/carbon/human/H = locate(href_list["CentcommReply"]) in mob_list
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
return
+25 -19
View File
@@ -131,27 +131,32 @@
return
/proc/get_admin_counts(requiredflags = R_BAN)
. = list("total" = 0, "noflags" = 0, "afk" = 0, "stealth" = 0, "present" = 0)
. = list("total" = list(), "noflags" = list(), "afk" = list(), "stealth" = list(), "present" = list())
for(var/client/X in admins)
.["total"]++
.["total"] += X
if(requiredflags != 0 && !check_rights_for(X, requiredflags))
.["noflags"]++
.["noflags"] += X
else if(X.is_afk())
.["afk"]++
.["afk"] += X
else if(X.holder.fakekey)
.["stealth"]++
.["stealth"] += X
else
.["present"]++
.["present"] += X
/proc/send2irc_adminless_only(source, msg, requiredflags = R_BAN)
var/list/adm = get_admin_counts(requiredflags)
. = adm["present"]
var/list/activemins = adm["present"]
. = activemins.len
if(. <= 0)
var/final = ""
if(!adm["afk"] && !adm["stealth"] && !adm["noflags"])
var/list/afkmins = adm["afk"]
var/list/stealthmins = adm["stealth"]
var/list/powerlessmins = adm["noflags"]
var/list/allmins = adm["total"]
if(!afkmins.len && !stealthmins.len && !powerlessmins.len)
final = "[msg] - No admins online"
else
final = "[msg] - All admins AFK ([adm["afk"]]/[adm["total"]]), stealthminned ([adm["stealth"]]/[adm["total"]]), or lack[rights2text(requiredflags, " ")] ([adm["noflags"]]/[adm["total"]])"
final = "[msg] - All admins stealthed\[[english_list(stealthmins)]\], AFK\[[english_list(afkmins)]\], or lacks +BAN\[[english_list(powerlessmins)]\]! Total: [allmins.len] "
send2irc(source,final)
send2otherserver(source,final)
@@ -174,15 +179,16 @@
/proc/ircadminwho()
var/msg = "Admins: "
for(var/client/C in admins)
msg += "[C] "
var/list/message = list("Admins: ")
var/list/admin_keys = list()
for(var/adm in admins)
var/client/C = adm
admin_keys += "[C][C.holder.fakekey ? "(Stealth)" : ""][C.is_afk() ? "(AFK)" : ""]"
if(C.holder.fakekey)
msg += "(Stealth)"
for(var/admin in admin_keys)
if(LAZYLEN(admin_keys) > 1)
message += ", [admin]"
else
message += "[admin]"
if(C.is_afk())
msg += "(AFK)"
msg += ", "
return msg
return jointext(message, "")
+1 -4
View File
@@ -33,10 +33,7 @@
prayer_type = "CULTIST PRAYER"
deity = "Nar-Sie"
msg = "<span class='adminnotice'>\icon[cross] \
<b><font color=[font_color]>[prayer_type][deity ? " (to [deity])" : ""]: </font>\
[ADMIN_FULLMONTY(src)] [ADMIN_SC(src)]:</b> \
[msg]</span>"
msg = "<span class='adminnotice'>\icon[cross]<b><font color=[font_color]>[prayer_type][deity ? " (to [deity])" : ""]: </font>[ADMIN_FULLMONTY(src)] [ADMIN_SC(src)] [ADMIN_SMITE(src)]:</b> [msg]</span>"
for(var/client/C in admins)
if(C.prefs.chat_toggles & CHAT_PRAYER)