Merge branch 'Bleeding-Edge' into SillYConvert

This commit is contained in:
ShiftyRail
2018-09-27 00:34:30 +00:00
committed by GitHub
591 changed files with 22731 additions and 4755 deletions

View File

@@ -8,53 +8,59 @@
var/client/CLIENT = usr.client
if(href_list["makeAntag"])
if(!ticker.mode)
to_chat(usr, "The round has not started yet,")
return
var/count = input("How many antags would you like to create?","Create Antagonists") as num|null
if(!count)
return
switch(href_list["makeAntag"])
if("1")
log_admin("[key_name(usr)] has spawned a traitor.")
if(!src.makeTraitors())
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
log_admin("[key_name(usr)] has attempted to spawn [count] traitors.")
var/success = makeAntag(/datum/role/traitor, null, count, FROM_PLAYERS)
log_admin("[success] number of traitors made.")
to_chat(usr, "<span class='notice'>[success] number of traitors made.</span>")
if("2")
log_admin("[key_name(usr)] has spawned a changeling.")
if(!src.makeChanglings())
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
log_admin("[key_name(usr)] has attempted to spawn [count] changelings.")
var/success = makeAntag(/datum/role/changeling, null, count, FROM_PLAYERS)
log_admin("[success] number of changelings made.")
to_chat(usr, "<span class='notice'>[success] number of changelings made.</span>")
if("3")
log_admin("[key_name(usr)] has spawned revolutionaries.")
if(!src.makeRevs())
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
log_admin("[key_name(usr)] has attempted to spawn [count] revolutionaries.")
var/success = makeAntag(null, /datum/faction/revolution, count, FROM_PLAYERS)
log_admin("[success] number of revolutionaries made.")
to_chat(usr, "<span class='notice'>[success] number of revolutionaries made.</span>")
if("4")
log_admin("[key_name(usr)] has spawned a cultists.")
if(!src.makeCult())
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
log_admin("[key_name(usr)] has attempted to spawn [count] cultists.")
var/success = makeAntag(null, /datum/faction/cult, count , FROM_PLAYERS)
log_admin("[success] number of cultists made.")
to_chat(usr, "<span class='notice'>[success] number of cultists made..</span>")
if("5")
log_admin("[key_name(usr)] has spawned a malf AI.")
if(!src.makeMalfAImode())
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
log_admin("[key_name(usr)] has attempted to spawn [count] malfunctioning AI.")
var/success = makeAntag(null, /datum/faction/malf, count, FROM_PLAYERS)
log_admin("[success] number of angry computer screens made.")
to_chat(usr, "<span class='notice'>[success] number of malf AIs made.</span>")
if("6")
log_admin("[key_name(usr)] has spawned a wizard.")
if(!src.makeWizard())
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
log_admin("[key_name(usr)] has attempted to spawn [count] wizards.")
var/success = makeAntag(null, /datum/faction/wizard, count, FROM_GHOSTS)
log_admin("[success] number of wizards made.")
to_chat(usr, "<span class='notice'>[success] number of wizards made.</span>")
if("7")
log_admin("[key_name(usr)] has spawned a nuke team.")
if(!src.makeNukeTeam())
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
var/success = makeAntag(null, /datum/faction/syndicate/nuke_op, count, FROM_GHOSTS)
log_admin("[success] number of nuclear operatives made.")
to_chat(usr, "<span class='notice'>[success] number of nuclear operatives made.</span>")
if("8")
log_admin("[key_name(usr)] has spawned a count of vampires.")
if(!src.makeVampires())
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
log_admin("[key_name(usr)] has attempted to spawn [count] vampires.")
var/success = makeAntag(/datum/role/vampire, null, count, FROM_PLAYERS)
log_admin("[success] number of vampires made.")
to_chat(usr, "<span class='notice'>[success] number of vampires made.</span>")
if("9")
log_admin("[key_name(usr)] has spawned aliens.")
if(!src.makeAliens())
to_chat(usr, "<span class='warning'>Unfortunately, there were no candidates available.</span>")
if("10")
log_admin("[key_name(usr)] has spawned a death squad.")
if(!makeDeathsquad())
to_chat(usr, "<span class='warning'>Unfortunately, there were no candidates available.</span>")
if("11")
log_admin("[key_name(usr)] has spawned vox raiders.")
if(!src.makeVoxRaiders())
to_chat(usr, "<span class='warning'>Unfortunately, there weren't enough candidates available.</span>")
else if("announce_laws" in href_list)
if("announce_laws" in href_list)
var/mob/living/silicon/S = locate(href_list["mob"])
log_admin("[key_name(usr)] has notified [key_name(S)] of a change to their laws.")
@@ -1017,7 +1023,7 @@
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=wizard;jobban4=\ref[M]'>[replacetext("Wizard", " ", "&nbsp")]</a></td>"
//Strike Team
if(jobban_isbanned(M, "Strike Team") || isbanned_dept)
if(jobban_isbanned(M, ROLE_STRIKE) || isbanned_dept)
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=Strike Team;jobban4=\ref[M]'><font color=red>Strike Team</font></a></td>"
else
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=Strike Team;jobban4=\ref[M]'>Strike Team</a></td>"
@@ -1424,9 +1430,6 @@
else if(href_list["c_mode"])
if(!check_rights(R_ADMIN))
return
if(ticker && ticker.mode)
return alert(usr, "The game has already started.", null, null, null, null)
var/dat = {"<B>What mode do you wish to play?</B><HR>"}
for(var/mode in config.modes)
dat += {"<A href='?src=\ref[src];c_mode2=[mode]'>[config.mode_names[mode]]</A><br>"}
@@ -1450,6 +1453,98 @@
dat += {"Now: [secret_force_mode]"}
usr << browse(dat, "window=f_secret")
else if(href_list["f_dynamic_roundstart"])
if(!check_rights(R_ADMIN))
return
if(ticker && ticker.mode)
return alert(usr, "The game has already started.", null, null, null, null)
if(master_mode != "Dynamic Mode")
return alert(usr, "The game mode has to be Dynamic Mode!", null, null, null, null)
var/roundstart_rules = list()
for (var/rule in subtypesof(/datum/dynamic_ruleset/roundstart))
var/datum/dynamic_ruleset/roundstart/newrule = new rule()
roundstart_rules[newrule.name] = newrule
var/added_rule = input(usr,"What ruleset do you want to force? This will bypass threat level and population restrictions.", "Rigging Roundstart", null) as null|anything in roundstart_rules
if (added_rule)
forced_roundstart_ruleset += roundstart_rules[added_rule]
log_admin("[key_name(usr)] set [added_rule] to be a forced roundstart ruleset.")
message_admins("[key_name(usr)] set [added_rule] to be a forced roundstart ruleset.", 1)
Game()
else if(href_list["f_dynamic_roundstart_clear"])
if(!check_rights(R_ADMIN))
return
forced_roundstart_ruleset = list()
Game()
log_admin("[key_name(usr)] cleared the rigged roundstart rulesets. The mode will pick them as normal.")
message_admins("[key_name(usr)] cleared the rigged roundstart rulesets. The mode will pick them as normal.", 1)
else if(href_list["f_dynamic_roundstart_remove"])
if(!check_rights(R_ADMIN))
return
var/datum/dynamic_ruleset/roundstart/rule = locate(href_list["f_dynamic_roundstart_remove"])
forced_roundstart_ruleset -= rule
Game()
log_admin("[key_name(usr)] removed [rule] from the forced roundstart rulesets.")
message_admins("[key_name(usr)] removed [rule] from the forced roundstart rulesets.", 1)
else if(href_list["f_dynamic_latejoin"])
if(!check_rights(R_ADMIN))
return
if(!ticker || !ticker.mode)
return alert(usr, "The game must start first.", null, null, null, null)
if(master_mode != "Dynamic Mode")
return alert(usr, "The game mode has to be Dynamic Mode!", null, null, null, null)
var/latejoin_rules = list()
for (var/rule in subtypesof(/datum/dynamic_ruleset/latejoin))
var/datum/dynamic_ruleset/latejoin/newrule = new rule()
latejoin_rules[newrule.name] = newrule
var/added_rule = input(usr,"What ruleset do you want to force upon the next latejoiner? This will bypass threat level and population restrictions.", "Rigging Latejoin", null) as null|anything in latejoin_rules
if (added_rule)
var/datum/gamemode/dynamic/mode = ticker.mode
mode.forced_latejoin_rule = latejoin_rules[added_rule]
log_admin("[key_name(usr)] set [added_rule] to proc on the next latejoin.")
message_admins("[key_name(usr)] set [added_rule] to proc on the next latejoin.", 1)
Game()
else if(href_list["f_dynamic_latejoin_clear"])
if(!check_rights(R_ADMIN))
return
if (ticker && ticker.mode && istype(ticker.mode,/datum/gamemode/dynamic))
var/datum/gamemode/dynamic/mode = ticker.mode
mode.forced_latejoin_rule = null
Game()
log_admin("[key_name(usr)] cleared the forced latejoin ruleset.")
message_admins("[key_name(usr)] cleared the forced latejoin ruleset.", 1)
else if(href_list["f_dynamic_midround"])
if(!check_rights(R_ADMIN))
return
if(!ticker || !ticker.mode)
return alert(usr, "The game must start first.", null, null, null, null)
if(master_mode != "Dynamic Mode")
return alert(usr, "The game mode has to be Dynamic Mode!", null, null, null, null)
var/midround_rules = list()
for (var/rule in subtypesof(/datum/dynamic_ruleset/midround))
var/datum/dynamic_ruleset/midround/newrule = new rule()
midround_rules[newrule.name] = rule
var/added_rule = input(usr,"What ruleset do you want to force right now? This will bypass threat level and population restrictions.", "Execute Ruleset", null) as null|anything in midround_rules
if (added_rule)
var/datum/gamemode/dynamic/mode = ticker.mode
log_admin("[key_name(usr)] executed the [added_rule] ruleset.")
message_admins("[key_name(usr)] executed the [added_rule] ruleset.", 1)
mode.picking_specific_rule(midround_rules[added_rule],1)
else if(href_list["c_mode2"])
if(!check_rights(R_ADMIN|R_SERVER))
return
@@ -1467,7 +1562,7 @@
.(href, list("c_mode"=1))
else
var/list/possible = list()
possible += mixed_allowed
possible += mixed_factions_allowed
possible += "DONE"
possible += "CANCEL"
if(possible.len < 3)
@@ -1513,7 +1608,7 @@
.(href, list("f_secret"=1))
else
var/list/possible = list()
possible += mixed_allowed
possible += mixed_factions_allowed
possible += "DONE"
possible += "CANCEL"
if(possible.len < 3)
@@ -2095,6 +2190,7 @@
else if(href_list["check_antagonist"])
check_antagonists()
/*
else if(href_list["cult_nextobj"])
if(alert(usr, "Validate the current Cult objective and unlock the next one?", "Cult Cheat Code", "Yes", "No") != "Yes")
return
@@ -2139,7 +2235,7 @@
to_chat(O, "<span class='game say'><span class='danger'>Nar-Sie</span> whispers to [M.real_name], <span class='sinister'>[input]</span></span>")
message_admins("Admin [key_name_admin(usr)] has talked with the Voice of Nar-Sie.")
*/
else if(href_list["adminplayerobservecoodjump"])
if(!check_rights(R_ADMIN))
return
@@ -2205,12 +2301,12 @@
else
location_description = "([M.loc == T ? "at coordinates " : "in [M.loc] at coordinates "] [T.x], [T.y], [T.z])"
//Job + antagonist
/*Job + antagonist
if(M.mind)
special_role_description = "Role: <b>[M.mind.assigned_role]</b>; Antagonist: <font color='red'><b>[M.mind.special_role]</b></font>; Has been rev: [(M.mind.has_been_rev)?"Yes":"No"]"
else
special_role_description = "Role: <i>Mind datum missing</i> Antagonist: <i>Mind datum missing</i>; Has been rev: <i>Mind datum missing</i>;"
*/
//Health
if(isliving(M))
var/mob/living/L = M
@@ -2521,7 +2617,7 @@
if(!ismob(M))
to_chat(usr, "This can only be used on instances of type /mob.")
return
show_traitor_panel(M)
show_role_panel(M)
// /vg/
else if(href_list["set_base_laws"])
@@ -2826,7 +2922,7 @@
log_admin("[key_name(usr)] created a link with central command", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] created a link with central command</span>", 1)
link_to_centcomm()
if("traitor_all")
/*if("traitor_all")
if(!ticker)
alert("The game hasn't started yet!")
return
@@ -2860,7 +2956,7 @@
ticker.mode.greet_traitor(A.mind)
ticker.mode.finalize_traitor(A.mind)
message_admins("<span class='notice'>[key_name_admin(usr)] used everyone is a traitor secret. Objective is [objective]</span>", 1)
log_admin("[key_name(usr)] used everyone is a traitor secret. Objective is [objective]")
log_admin("[key_name(usr)] used everyone is a traitor secret. Objective is [objective]")*/
if("moveadminshuttle")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","ShA")
@@ -3743,8 +3839,8 @@
dat += text("<tr><td>[]</td><td>[]</td></tr>", H.name, H.get_assignment())
dat += "</table>"
usr << browse(dat, "window=manifest;size=440x410")
if("check_antagonist")
check_antagonists()
// if("check_antagonist")
// check_antagonists()
if("emergency_shuttle_panel")
emergency_shuttle_panel()
if("DNA")
@@ -4135,7 +4231,7 @@
options += name
options[name] = D
var/obj/docking_port/destination/choice = options[(input(usr,"Select a docking port to add to [S.name]","Admin abuse") in options)]
var/obj/docking_port/destination/choice = options[(input(usr,"Select a docking port to add to [S.name]","Admin abuse") as null|anything in options)]
if(!istype(choice))
return
@@ -4624,6 +4720,74 @@
//------------------------------------------------------------------Shuttle stuff end---------------------------------
if (href_list["obj_add"])
var/datum/objective_holder/obj_holder = locate(href_list["obj_holder"])
var/list/available_objectives = list()
for(var/objective_type in subtypesof(/datum/objective))
var/datum/objective/O = objective_type
available_objectives.Add(initial(O.name))
available_objectives[initial(O.name)] = O
var/new_obj = input("Select a new objective", "New Objective", null) as null|anything in available_objectives
var/obj_type = available_objectives[new_obj]
var/datum/objective/new_objective = new obj_type(null,FALSE)
if (new_objective.flags & FACTION_OBJECTIVE)
var/datum/faction/fac = input("To which faction shall we give this?", "Faction-wide objective", null) as null|anything in ticker.mode.factions
fac.handleNewObjective(new_objective)
return TRUE // It's a faction objective, let's not move any further.
if (obj_holder.owner)//so objectives won't target their owners.
new_objective.owner = obj_holder.owner
var/setup = TRUE
if (istype(new_objective,/datum/objective/target))
var/datum/objective/target/new_O = new_objective
if (alert("Do you want to specify a target?", "New Objective", "Yes", "No") == "Yes")
setup = new_O.select_target()
new_O.auto_target = FALSE
else
setup = TRUE //Let it sort itself out
if(!setup)
alert("Couldn't set-up a proper target.", "New Objective")
return
if (obj_holder.faction)
obj_holder.faction.AppendObjective(new_objective)
check_antagonists()
log_admin("[usr.key]/([usr.name]) gave \the [obj_holder.faction.ID] the objective: [new_objective.explanation_text]")
if (href_list["obj_delete"])
var/datum/objective/objective = locate(href_list["obj_delete"])
var/datum/objective_holder/obj_holder = locate(href_list["obj_holder"])
ASSERT(istype(objective) && istype(obj_holder))
check_antagonists()
if (obj_holder.faction)
log_admin("[usr.key]/([usr.name]) removed \the [obj_holder.faction.ID]'s objective ([objective.explanation_text])")
objective.faction.handleRemovedObjective(objective)
obj_holder.objectives.Remove(objective)
if(href_list["obj_completed"])
var/datum/objective/objective = locate(href_list["obj_completed"])
var/datum/objective_holder/obj_holder = locate(href_list["obj_holder"])
ASSERT(istype(objective))
if (objective.faction)
objective.faction.handleForcedCompletedObjective(objective)
objective.force_success = !objective.force_success
check_antagonists()
log_admin("[usr.key]/([usr.name]) toggled [obj_holder.faction.ID] [objective.explanation_text] to [objective.force_success ? "completed" : "incomplete"]")
if(href_list["wages_enabled"])
if(check_rights(R_ADMIN))
if(ticker.current_state == 1)