mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 15:47:15 +01:00
Merge branch 'master' of https://github.com/tgstation/-tg-station into MechRefactoring
Conflicts: code/game/mecha/equipment/tools/medical_tools.dm code/game/mecha/equipment/tools/tools.dm code/game/mecha/mecha.dm
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
|
||||
/proc/randomize_human(mob/living/carbon/human/H)
|
||||
H.gender = pick(MALE, FEMALE)
|
||||
H.real_name = random_name(H.gender)
|
||||
H.real_name = random_unique_name(H.gender)
|
||||
H.name = H.real_name
|
||||
H.dna.generate_uni_identity(H)
|
||||
H.underwear = random_underwear(H.gender)
|
||||
|
||||
@@ -387,32 +387,16 @@
|
||||
dat += "<tr><td><i>Head not found!</i></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(ticker.mode.A_bosses.len || ticker.mode.A_gang.len)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>[gang_name("A")] Gang: [(ticker.mode.gang_points ? "[ticker.mode.gang_points.A] Influence, " : "")][round((ticker.mode.A_territory.len/start_state.num_territories)*100, 1)]% Control</B></td><td></td></tr>"
|
||||
for(var/datum/mind/N in ticker.mode.A_bosses)
|
||||
for(var/datum/gang/G in ticker.mode.gangs)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>[G.name] Gang: <a href='?_src_=holder;gangpoints=\ref[G]'>[G.points] Influence</a> | [round((G.territory.len/start_state.num_territories)*100, 1)]% Control</B></td><td></td></tr>"
|
||||
for(var/datum/mind/N in G.bosses)
|
||||
var/mob/M = N.current
|
||||
if(!M)
|
||||
dat += "<tr><td><i>Gang Boss not found!</i></td></tr>"
|
||||
else
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a> <b>(Boss)</b>[M.client ? "" : " <i>(ghost)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
dat += "<td><A href='?priv_msg=[M.ckey]'>PM</A></td></tr>"
|
||||
for(var/datum/mind/N in ticker.mode.A_gang)
|
||||
var/mob/M = N.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(ghost)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
dat += "<td><A href='?priv_msg=[M.ckey]'>PM</A></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(ticker.mode.B_bosses.len || ticker.mode.B_gang.len)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>[gang_name("B")] Gang: [(ticker.mode.gang_points ? "[ticker.mode.gang_points.B] Influence, " : "")][round((ticker.mode.B_territory.len/start_state.num_territories)*100, 1)]% Control</B></td><td></td></tr>"
|
||||
for(var/datum/mind/N in ticker.mode.B_bosses)
|
||||
var/mob/M = N.current
|
||||
if(!M)
|
||||
dat += "<tr><td><i>Gang Boss not found!</i></td></tr>"
|
||||
else
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a> <b>(Boss)</b>[M.client ? "" : " <i>(ghost)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
dat += "<td><A href='?priv_msg=[M.ckey]'>PM</A></td></tr>"
|
||||
for(var/datum/mind/N in ticker.mode.B_gang)
|
||||
for(var/datum/mind/N in G.gangsters)
|
||||
var/mob/M = N.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(ghost)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
|
||||
@@ -103,11 +103,11 @@
|
||||
new/datum/round_event/blob(strength)
|
||||
if("12")
|
||||
if(src.makeGangsters())
|
||||
message_admins("[key_name(usr)] started a gang war.")
|
||||
log_admin("[key_name(usr)] started a gang war.")
|
||||
message_admins("[key_name(usr)] created gangs.")
|
||||
log_admin("[key_name(usr)] created gangs.")
|
||||
else
|
||||
message_admins("[key_name(usr)] tried to start a gang war. Unfortunately, there were not enough candidates available.")
|
||||
log_admin("[key_name(usr)] failed to start a gang war.")
|
||||
message_admins("[key_name(usr)] tried to create gangs. Unfortunately, there were not enough candidates available.")
|
||||
log_admin("[key_name(usr)] failed create gangs.")
|
||||
if("13")
|
||||
message_admins("[key_name(usr)] is creating a Centcom response team...")
|
||||
if(src.makeEmergencyresponseteam())
|
||||
@@ -1491,6 +1491,16 @@
|
||||
|
||||
usr.client.cmd_admin_animalize(M)
|
||||
|
||||
else if(href_list["gangpoints"])
|
||||
var/datum/gang/G = locate(href_list["gangpoints"]) in ticker.mode.gangs
|
||||
if(G)
|
||||
var/newpoints = input("Set [G.name ] Gang's influence.","Set Influence",G.points) as null|num
|
||||
if(newpoints)
|
||||
message_admins("[key_name_admin(usr)] changed the [G.name] Gang's influence from [G.points] to [newpoints]</span>")
|
||||
log_admin("[key_name(usr)] changed the [G.name] Gang's influence from [G.points] to [newpoints]</span>")
|
||||
G.points = newpoints
|
||||
G.message_gangtools("Your gang now has [G.points] influence.")
|
||||
|
||||
else if(href_list["adminplayeropts"])
|
||||
var/mob/M = locate(href_list["adminplayeropts"])
|
||||
show_player_panel(M)
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
return
|
||||
|
||||
message_admins("[key_name_admin(src)] accessed file: [path]")
|
||||
src << run( file(path) )
|
||||
src << ftp( file(path) )
|
||||
src << "Attempting to send file, this may take a fair few minutes if the file is very large."
|
||||
return
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
return
|
||||
|
||||
message_admins("[key_name_admin(src)] accessed file: [path]")
|
||||
src << run( file(path) )
|
||||
src << ftp( file(path) )
|
||||
src << "Attempting to send file, this may take a fair few minutes if the file is very large."
|
||||
return
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
var/path = "data/logs/[time2text(world.realtime,"YYYY/MM-Month/DD-Day")].log"
|
||||
if( fexists(path) )
|
||||
src << run( file(path) )
|
||||
src << ftp( file(path) )
|
||||
else
|
||||
src << "<font color='red'>Error: view_txt_log(): File not found/Invalid path([path]).</font>"
|
||||
return
|
||||
@@ -102,7 +102,7 @@
|
||||
|
||||
var/path = "data/logs/[time2text(world.realtime,"YYYY/MM-Month/DD-Day")] Attack.log"
|
||||
if( fexists(path) )
|
||||
src << run( file(path) )
|
||||
src << ftp( file(path) )
|
||||
else
|
||||
src << "<font color='red'>Error: view_atk_log(): File not found/Invalid path([path]).</font>"
|
||||
return
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
/datum/admins/proc/one_click_antag()
|
||||
|
||||
var/dat = {"<B>Quick-Create Antagonist</B><br>
|
||||
var/dat = {"
|
||||
<a href='?src=\ref[src];makeAntag=1'>Make Traitors</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=2'>Make Changelings</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=3'>Make Revs</a><br>
|
||||
@@ -25,17 +25,10 @@
|
||||
<a href='?src=\ref[src];makeAntag=14'>Make Abductor Team (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=15'>Make Revenant (Requires Ghost)</a><br>
|
||||
"}
|
||||
/* These dont work just yet
|
||||
Ninja, aliens and deathsquad I have not looked into yet
|
||||
Nuke team is getting a null mob returned from makebody() (runtime error: null.mind. Line 272)
|
||||
|
||||
|
||||
<a href='?src=\ref[src];makeAntag=8'>Make Space Ninja (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=9'>Make Aliens (Requires Ghosts)</a><br>
|
||||
"}
|
||||
*/
|
||||
usr << browse(dat, "window=oneclickantag;size=400x400")
|
||||
return
|
||||
var/datum/browser/popup = new(usr, "oneclickantag", "Quick-Create Antagonist", 400, 400)
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
|
||||
|
||||
/datum/admins/proc/makeMalfAImode()
|
||||
@@ -404,15 +397,20 @@
|
||||
candidates += applicant
|
||||
|
||||
if(candidates.len >= 2)
|
||||
H = pick(candidates)
|
||||
H.mind.make_Gang("A")
|
||||
candidates.Remove(H)
|
||||
H = pick(candidates)
|
||||
H.mind.make_Gang("B")
|
||||
for(var/needs_assigned=2,needs_assigned>0,needs_assigned--)
|
||||
H = pick(candidates)
|
||||
if(gang_colors_pool.len)
|
||||
var/datum/gang/newgang = new()
|
||||
ticker.mode.gangs += newgang
|
||||
H.mind.make_Gang(newgang)
|
||||
candidates.Remove(H)
|
||||
else if(needs_assigned == 2)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
/datum/admins/proc/makeOfficial()
|
||||
var/mission = input("Assign a task for the official", "Assign Task", "Conduct a routine preformance review of [station_name()] and its Captain.")
|
||||
var/list/mob/dead/observer/candidates = getCandidates("Do you wish to be considered to be a Centcom Official?", "pAI")
|
||||
@@ -424,7 +422,7 @@
|
||||
var/mob/living/carbon/human/newmob = new (pick(emergencyresponseteamspawn))
|
||||
chosen_candidate.client.prefs.copy_to(newmob)
|
||||
ready_dna(newmob)
|
||||
newmob.real_name = random_name(newmob.gender)
|
||||
newmob.real_name = newmob.dna.species.random_name(newmob.gender,1)
|
||||
newmob.key = chosen_candidate.key
|
||||
newmob.mind.assigned_role = "Centcom Official"
|
||||
equip_centcomofficial(newmob)
|
||||
@@ -494,27 +492,28 @@
|
||||
var/list/lastname = last_names
|
||||
chosen_candidate.client.prefs.copy_to(ERTOperative)
|
||||
ready_dna(ERTOperative)
|
||||
var/ertname = pick(lastname)
|
||||
switch(numagents)
|
||||
if(1)
|
||||
ERTOperative.real_name = "Commander [pick(lastname)]"
|
||||
ERTOperative.real_name = "Commander [ertname]"
|
||||
equip_emergencyresponsesquad(ERTOperative, "commander",redalert)
|
||||
if(2)
|
||||
ERTOperative.real_name = "Security Officer [pick(lastname)]"
|
||||
ERTOperative.real_name = "Security Officer [ertname]"
|
||||
equip_emergencyresponsesquad(ERTOperative, "sec",redalert)
|
||||
if(3)
|
||||
ERTOperative.real_name = "Medical Officer [pick(lastname)]"
|
||||
ERTOperative.real_name = "Medical Officer [ertname]"
|
||||
equip_emergencyresponsesquad(ERTOperative, "med",redalert)
|
||||
if(4)
|
||||
ERTOperative.real_name = "Engineer [pick(lastname)]"
|
||||
ERTOperative.real_name = "Engineer [ertname]"
|
||||
equip_emergencyresponsesquad(ERTOperative, "eng",redalert)
|
||||
if(5)
|
||||
ERTOperative.real_name = "Security Officer [pick(lastname)]"
|
||||
ERTOperative.real_name = "Security Officer [ertname]"
|
||||
equip_emergencyresponsesquad(ERTOperative, "sec",redalert)
|
||||
if(6)
|
||||
ERTOperative.real_name = "Medical Officer [pick(lastname)]"
|
||||
ERTOperative.real_name = "Medical Officer [ertname]"
|
||||
equip_emergencyresponsesquad(ERTOperative, "med",redalert)
|
||||
if(7)
|
||||
ERTOperative.real_name = "Engineer [pick(lastname)]"
|
||||
ERTOperative.real_name = "Engineer [ertname]"
|
||||
equip_emergencyresponsesquad(ERTOperative, "eng",redalert)
|
||||
ERTOperative.key = chosen_candidate.key
|
||||
ERTOperative.mind.assigned_role = "ERT"
|
||||
@@ -564,13 +563,7 @@
|
||||
|
||||
if(candidates.len >= 2)
|
||||
//Oh god why we can't have static functions
|
||||
var/teams_finished = 0
|
||||
if(ticker.mode.config_tag == "abduction")
|
||||
var/datum/game_mode/abduction/A = ticker.mode
|
||||
teams_finished = A.teams
|
||||
else
|
||||
teams_finished = round(ticker.mode.abductors.len / 2)
|
||||
var/number = teams_finished + 1
|
||||
var/number = ticker.mode.abductor_teams + 1
|
||||
|
||||
var/datum/game_mode/abduction/temp
|
||||
if(ticker.mode.config_tag == "abduction")
|
||||
@@ -598,10 +591,10 @@
|
||||
temp.abductors |= list(agent_mind,scientist_mind)
|
||||
temp.make_abductor_team(number,preset_scientist=scientist_mind,preset_agent=agent_mind)
|
||||
temp.post_setup_team(number)
|
||||
if(ticker.mode.config_tag == "abduction")
|
||||
var/datum/game_mode/abduction/A = ticker.mode
|
||||
A.teams += 1
|
||||
else
|
||||
|
||||
ticker.mode.abductor_teams++
|
||||
|
||||
if(ticker.mode.config_tag != "abduction")
|
||||
ticker.mode.abductors |= temp.abductors
|
||||
|
||||
return 1
|
||||
|
||||
@@ -286,7 +286,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
A.copy_to(new_character)
|
||||
|
||||
if(!new_character.real_name)
|
||||
new_character.real_name = random_name(new_character.gender)
|
||||
new_character.real_name = new_character.dna.species.random_name(new_character.gender,1)
|
||||
new_character.name = new_character.real_name
|
||||
|
||||
if(G_found.mind && !G_found.mind.active)
|
||||
|
||||
Reference in New Issue
Block a user