{"action":"created","comment":{"url":"https://api.github.com/repos/tgstation/tgstation/pulls/comments/153856601","pull_request_review_id":79928473,"id":153856601,"diff_hunk":"@@ -0,0 +1,316 @@\n+#define NUKE_RESULT_FLUKE 0\n+#define NUKE_RESULT_NUKE_WIN 1\n+#define NUKE_RESULT_CREW_WIN 2\n+#define NUKE_RESULT_CREW_WIN_SYNDIES_DEAD 3\n+#define NUKE_RESULT_DISK_LOST 4\n+#define NUKE_RESULT_DISK_STOLEN 5\n+#define NUKE_RESULT_NOSURVIVORS 6\n+#define NUKE_RESULT_WRONG_STATION 7\n+#define NUKE_RESULT_WRONG_STATION_DEAD 8\n+\n+/datum/antagonist/nukeop\n+\tname = \"Nuclear Operative\"\n+\tjob_rank = ROLE_OPERATIVE\n+\tvar/datum/objective_team/nuclear/nuke_team\n+\tvar/always_new_team = FALSE //If not assigned a team by default ops will try to join existing ones, set this to TRUE to always create new team.\n+\tvar/send_to_spawnpoint = TRUE //Should the user be moved to default spawnpoint.\n+\tvar/nukeop_outfit = /datum/outfit/syndicate\n+\n+/datum/antagonist/nukeop/proc/update_synd_icons_added(mob/living/M)\n+\tvar/datum/atom_hud/antag/opshud = GLOB.huds[ANTAG_HUD_OPS]\n+\topshud.join_hud(M)\n+\tset_antag_hud(M, \"synd\")\n+\n+/datum/antagonist/nukeop/proc/update_synd_icons_removed(mob/living/M)\n+\tvar/datum/atom_hud/antag/opshud = GLOB.huds[ANTAG_HUD_OPS]\n+\topshud.leave_hud(M)\n+\tset_antag_hud(M, null)\n+\n+/datum/antagonist/nukeop/apply_innate_effects(mob/living/mob_override)\n+\tvar/mob/living/M = mob_override || owner.current\n+\tupdate_synd_icons_added(M)\n+\n+/datum/antagonist/nukeop/remove_innate_effects(mob/living/mob_override)\n+\tvar/mob/living/M = mob_override || owner.current\n+\tupdate_synd_icons_removed(M)\n+\n+/datum/antagonist/nukeop/proc/equip_op()\n+\tif(!ishuman(owner.current))\n+\t\treturn\n+\tvar/mob/living/carbon/human/H = owner.current\n+\t\n+\tH.set_species(/datum/species/human) //Plasamen burn up otherwise, and lizards are vulnerable to asimov AIs\n+\n+\tH.equipOutfit(nukeop_outfit)\n+\treturn TRUE\n+\n+/datum/antagonist/nukeop/greet()\n+\towner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/ops.ogg',100,0)\n+\tto_chat(owner.current, \"<span class='notice'>You are a [nuke_team ? nuke_team.syndicate_name : \"syndicate\"] agent!</span>\")\n+\towner.announce_objectives()\n+\treturn\n+\n+/datum/antagonist/nukeop/on_gain()\n+\tgive_alias()\n+\tforge_objectives()\n+\t. = ..()\n+\tequip_op()\n+\tmemorize_code()\n+\tif(send_to_spawnpoint)\n+\t\tmove_to_spawnpoint()\n+\n+/datum/antagonist/nukeop/get_team()\n+\treturn nuke_team\n+\n+/datum/antagonist/nukeop/proc/assign_nuke()\n+\tif(nuke_team && !nuke_team.tracked_nuke)\n+\t\tnuke_team.memorized_code = random_nukecode()\n+\t\tvar/obj/machinery/nuclearbomb/nuke = locate(\"syndienuke\") in GLOB.nuke_list\n+\t\tif(nuke)\n+\t\t\tnuke_team.tracked_nuke = nuke\n+\t\t\tif(nuke.r_code == \"ADMIN\")\n+\t\t\t\tnuke.r_code = nuke_team.memorized_code\n+\t\t\telse //Already set by admins/something else?\n+\t\t\t\tnuke_team.memorized_code = nuke.r_code\n+\t\telse\n+\t\t\tstack_trace(\"Syndicate nuke not found during nuke team creation.\")\n+\t\t\tnuke_team.memorized_code = null\n+\n+/datum/antagonist/nukeop/proc/give_alias()\n+\tif(nuke_team && nuke_team.syndicate_name)\n+\t\tvar/number = 1\n+\t\tnumber = nuke_team.members.Find(owner)\n+\t\towner.current.real_name = \"[nuke_team.syndicate_name] Operative #[number]\"\n+\n+/datum/antagonist/nukeop/proc/memorize_code()\n+\tif(nuke_team && nuke_team.tracked_nuke && nuke_team.memorized_code)\n+\t\towner.store_memory(\"<B>[nuke_team.tracked_nuke] Code</B>: [nuke_team.memorized_code]\", 0, 0)\n+\t\tto_chat(owner.current, \"The nuclear authorization code is: <B>[nuke_team.memorized_code]</B>\")\n+\telse\n+\t\tto_chat(owner.current, \"Unfortunately the syndicate was unable to provide you with nuclear authorization code.\")\n+\n+/datum/antagonist/nukeop/proc/forge_objectives()\n+\tif(nuke_team)\n+\t\towner.objectives |= nuke_team.objectives\n+\n+/datum/antagonist/nukeop/proc/move_to_spawnpoint()\n+\tvar/team_number = 1\n+\tif(nuke_team)\n+\t\tteam_number = nuke_team.members.Find(owner)\n+\towner.current.forceMove(GLOB.nukeop_start[((team_number - 1) % GLOB.nukeop_start.len) + 1])\n+\n+/datum/antagonist/nukeop/leader/move_to_spawnpoint()\n+\towner.current.forceMove(pick(GLOB.nukeop_leader_start))\n+\n+/datum/antagonist/nukeop/create_team(datum/objective_team/nuclear/new_team)\n+\tif(!new_team)\n+\t\tif(!always_new_team)\n+\t\t\tfor(var/datum/antagonist/nukeop/N in GLOB.antagonists)\n+\t\t\t\tif(N.nuke_team)\n+\t\t\t\t\tnuke_team = N.nuke_team\n+\t\t\t\t\treturn\n+\t\tnuke_team = new /datum/objective_team/nuclear\n+\t\tnuke_team.update_objectives()\n+\t\tassign_nuke() //This is bit ugly\n+\t\treturn\n+\tif(!istype(new_team))\n+\t\tstack_trace(\"Wrong team type passed to [type] initialization.\")\n+\tnuke_team = new_team\n+\n+/datum/antagonist/nukeop/leader\n+\tname = \"Nuclear Operative Leader\"\n+\tnukeop_outfit = /datum/outfit/syndicate/leader\n+\talways_new_team = TRUE\n+\tvar/title\n+\n+/datum/antagonist/nukeop/leader/memorize_code()\n+\t..()\n+\tif(nuke_team && nuke_team.memorized_code)\n+\t\tvar/obj/item/paper/P = new\n+\t\tP.info = \"The nuclear authorization code is: <b>[nuke_team.memorized_code]</b>\"\n+\t\tP.name = \"nuclear bomb code\"\n+\t\tvar/mob/living/carbon/human/H = owner.current\n+\t\tif(!istype(H))\n+\t\t\tP.forceMove(get_turf(H))\n+\t\telse\n+\t\t\tH.put_in_hands(P, TRUE)\n+\t\t\tH.update_icons()\n+\n+/datum/antagonist/nukeop/leader/give_alias()\n+\ttitle = pick(\"Czar\", \"Boss\", \"Commander\", \"Chief\", \"Kingpin\", \"Director\", \"Overlord\")\n+\tif(nuke_team && nuke_team.syndicate_name)\n+\t\towner.current.real_name = \"[nuke_team.syndicate_name] [title]\"\n+\telse\n+\t\towner.current.real_name = \"Syndicate [title]\"\n+\n+/datum/antagonist/nukeop/leader/greet()\n+\towner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/ops.ogg',100,0)\n+\tto_chat(owner.current, \"<B>You are the Syndicate [title] for this mission. You are responsible for the distribution of telecrystals and your ID is the only one who can open the launch bay doors.</B>\")\n+\tto_chat(owner.current, \"<B>If you feel you are not up to this task, give your ID to another operative.</B>\")\n+\tto_chat(owner.current, \"<B>In your hand you will find a special item capable of triggering a greater challenge for your team. Examine it carefully and consult with your fellow operatives before activating it.</B>\")\n+\towner.announce_objectives()\n+\taddtimer(CALLBACK(src, .proc/nuketeam_name_assign), 1)\n+\n+\n+/datum/antagonist/nukeop/leader/proc/nuketeam_name_assign()\n+\tif(!nuke_team)\n+\t\treturn\n+\tnuke_team.rename_team(ask_name())\n+\n+/datum/objective_team/nuclear/proc/rename_team(new_name)\n+\tsyndicate_name = new_name\n+\tname = \"[syndicate_name] Team\"\n+\tfor(var/datum/mind/synd_mind in members)\n+\t\tvar/mob/living/carbon/human/H = synd_mind.current\n+\t\tif(!istype(H))\n+\t\t\tcontinue\n+\t\tvar/chosen_name = H.dna.species.random_name(H.gender,0,syndicate_name)\n+\t\tH.fully_replace_character_name(H.real_name,chosen_name)\n+\n+/datum/antagonist/nukeop/leader/proc/ask_name()\n+\tvar/randomname = pick(GLOB.last_names)\n+\tvar/newname = stripped_input(owner.current,\"You are the nuke operative [title]. Please choose a last name for your family.\", \"Name change\",randomname)\n+\tif (!newname)\n+\t\tnewname = randomname\n+\telse\n+\t\tnewname = reject_bad_name(newname)\n+\t\tif(!newname)\n+\t\t\tnewname = randomname\n+\n+\treturn capitalize(newname)\n+\n+/datum/antagonist/nukeop/lone\n+\tname = \"Lone Operative\"\n+\talways_new_team = TRUE\n+\tsend_to_spawnpoint = FALSE //Handled by event\n+\tnukeop_outfit = /datum/outfit/syndicate/full\n+\n+/datum/antagonist/nukeop/lone/assign_nuke()\n+\tif(nuke_team && !nuke_team.tracked_nuke)\n+\t\tnuke_team.memorized_code = random_nukecode()\n+\t\tvar/obj/machinery/nuclearbomb/selfdestruct/nuke = locate() in GLOB.nuke_list\n+\t\tif(nuke)\n+\t\t\tnuke_team.tracked_nuke = nuke\n+\t\t\tif(nuke.r_code == \"ADMIN\")\n+\t\t\t\tnuke.r_code = nuke_team.memorized_code\n+\t\t\telse //Already set by admins/something else?\n+\t\t\t\tnuke_team.memorized_code = nuke.r_code\n+\t\telse\n+\t\t\tstack_trace(\"Station self destruct ot found during lone op team creation.\")\n+\t\t\tnuke_team.memorized_code = null\n+\n+/datum/objective_team/nuclear\n+\tvar/list/objectives\n+\tvar/syndicate_name\n+\tvar/obj/machinery/nuclearbomb/tracked_nuke\n+\tvar/core_objective = /datum/objective/nuclear\n+\tvar/memorized_code\n+\n+/datum/objective_team/nuclear/New()\n+\t..()\n+\tsyndicate_name = syndicate_name()\n+\n+/datum/objective_team/nuclear/proc/update_objectives()\n+\tobjectives = list()\n+\tif(core_objective)\n+\t\tvar/datum/objective/O = new core_objective\n+\t\tO.team = src\n+\t\tobjectives += O\n+\treturn\n+\n+/datum/objective_team/nuclear/proc/disk_rescued()\n+\tfor(var/obj/item/disk/nuclear/D in GLOB.poi_list)\n+\t\tif(!D.onCentCom())\n+\t\t\treturn FALSE\n+\treturn TRUE\n+\n+/datum/objective_team/nuclear/proc/operatives_dead()\n+\tfor(var/datum/mind/operative_mind in members)\n+\t\tif(ishuman(operative_mind.current) && (operative_mind.current.stat != DEAD))\n+\t\t\treturn FALSE\n+\treturn TRUE\n+\n+/datum/objective_team/nuclear/proc/syndies_escaped()\n+\tvar/obj/docking_port/mobile/S = SSshuttle.getShuttle(\"syndicate\")\n+\treturn (S && (S.z == ZLEVEL_CENTCOM || S.z == ZLEVEL_TRANSIT)) ? 1 : 0\n+\n+/datum/objective_team/nuclear/proc/get_result()\n+\tvar/evacuation = SSshuttle.emergency.mode == SHUTTLE_ENDGAME\n+\tvar/disk_rescued = disk_rescued()\n+\tvar/syndies_didnt_escape = !syndies_escaped()\n+\tvar/station_was_nuked = SSticker.mode.station_was_nuked\n+\tvar/nuke_off_station = SSticker.mode.nuke_off_station\n+\n+\tif(nuke_off_station == NUKE_SYNDICATE_BASE)\n+\t\treturn NUKE_RESULT_FLUKE\n+\telse if(!disk_rescued && station_was_nuked && !syndies_didnt_escape)\n+\t\treturn NUKE_RESULT_NUKE_WIN\n+\telse if (!disk_rescued &&  station_was_nuked && syndies_didnt_escape)\n+\t\treturn NUKE_RESULT_NOSURVIVORS\n+\telse if (!disk_rescued && !station_was_nuked && nuke_off_station && !syndies_didnt_escape)\n+\t\treturn NUKE_RESULT_WRONG_STATION\n+\telse if (!disk_rescued && !station_was_nuked && nuke_off_station && syndies_didnt_escape)\n+\t\treturn NUKE_RESULT_WRONG_STATION_DEAD\n+\telse if ((disk_rescued || evacuation) && operatives_dead())\n+\t\treturn NUKE_RESULT_CREW_WIN_SYNDIES_DEAD\n+\telse if (disk_rescued)\n+\t\treturn NUKE_RESULT_CREW_WIN\n+\telse if (!disk_rescued && operatives_dead())\n+\t\treturn NUKE_RESULT_DISK_LOST\n+\telse if (!disk_rescued &&  evacuation)\n+\t\treturn NUKE_RESULT_DISK_STOLEN\n+\telse\n+\t\treturn\t//Undefined result\n+\n+/datum/objective_team/nuclear/proc/roundend_display()\n+\tto_chat(world,\"<span class='roundendh'>[syndicate_name] Operatives:</span>\")\n+\t\n+\tswitch(get_result())\n+\t\tif(NUKE_RESULT_FLUKE)\n+\t\t\tto_chat(world, \"<FONT size = 3><B>Humiliating Syndicate Defeat</B></FONT>\")\n+\t\t\tto_chat(world, \"<B>The crew of [station_name()] gave [syndicate_name] operatives back their bomb! The syndicate base was destroyed!</B> Next time, don't lose the nuke!\")\n+\t\tif(NUKE_RESULT_NUKE_WIN)\n+\t\t\tto_chat(world, \"<FONT size = 3><B>Syndicate Major Victory!</B></FONT>\")\n+\t\t\tto_chat(world, \"<B>[syndicate_name] operatives have destroyed [station_name()]!</B>\")\n+\t\tif(NUKE_RESULT_NOSURVIVORS)\n+\t\t\tto_chat(world, \"<FONT size = 3><B>Total Annihilation</B></FONT>\")\n+\t\t\tto_chat(world, \"<B>[syndicate_name] operatives destroyed [station_name()] but did not leave the area in time and got caught in the explosion.</B> Next time, don't lose the disk!\")\n+\t\tif(NUKE_RESULT_WRONG_STATION)\n+\t\t\tto_chat(world, \"<FONT size = 3><B>Crew Minor Victory</B></FONT>\")\n+\t\t\tto_chat(world, \"<B>[syndicate_name] operatives secured the authentication disk but blew up something that wasn't [station_name()].</B> Next time, don't do that!\")\n+\t\tif(NUKE_RESULT_WRONG_STATION_DEAD)\n+\t\t\tto_chat(world, \"<FONT size = 3><B>[syndicate_name] operatives have earned Darwin Award!</B></FONT>\")\n+\t\t\tto_chat(world, \"<B>[syndicate_name] operatives blew up something that wasn't [station_name()] and got caught in the explosion.</B> Next time, don't do that!\")\n+\t\tif(NUKE_RESULT_CREW_WIN_SYNDIES_DEAD)\n+\t\t\tto_chat(world, \"<FONT size = 3><B>Crew Major Victory!</B></FONT>\")\n+\t\t\tto_chat(world, \"<B>The Research Staff has saved the disk and killed the [syndicate_name] Operatives</B>\")\n+\t\tif(NUKE_RESULT_CREW_WIN)\n+\t\t\tto_chat(world, \"<FONT size = 3><B>Crew Major Victory</B></FONT>\")\n+\t\t\tto_chat(world, \"<B>The Research Staff has saved the disk and stopped the [syndicate_name] Operatives!</B>\")\n+\t\tif(NUKE_RESULT_DISK_LOST)\n+\t\t\tto_chat(world, \"<FONT size = 3><B>Neutral Victory!</B></FONT>\")\n+\t\t\tto_chat(world, \"<B>The Research Staff failed to secure the authentication disk but did manage to kill most of the [syndicate_name] Operatives!</B>\")\n+\t\tif(NUKE_RESULT_DISK_STOLEN)\n+\t\t\tto_chat(world, \"<FONT size = 3><B>Syndicate Minor Victory!</B></FONT>\")\n+\t\t\tto_chat(world, \"<B>[syndicate_name] operatives survived the assault but did not achieve the destruction of [station_name()].</B> Next time, don't lose the disk!\")\n+\t\telse\n+\t\t\tto_chat(world, \"<FONT size = 3><B>Neutral Victory</B></FONT>\")\n+\t\t\tto_chat(world, \"<B>Mission aborted!</B>\")\n+\n+\tvar/text = \"<br><FONT size=3><B>The syndicate operatives were:</B></FONT>\"\n+\tvar/purchases = \"\"\n+\tvar/TC_uses = 0\n+\tfor(var/datum/mind/syndicate in members)\n+\t\ttext += SSticker.mode.printplayer(syndicate) //to be moved\n+\t\tfor(var/datum/component/uplink/H in GLOB.uplinks)","path":"code/datums/antagonists/nukeop.dm","position":305,"original_position":305,"commit_id":"3c89db8811b4089632d9e78fc288599f174414e5","original_commit_id":"3c89db8811b4089632d9e78fc288599f174414e5","user":{"login":"Cyberboss","id":8171642,"avatar_url":"https://avatars3.githubusercontent.com/u/8171642?v=4","gravatar_id":"","url":"https://api.github.com/users/Cyberboss","html_url":"https://github.com/Cyberboss","followers_url":"https://api.github.com/users/Cyberboss/followers","following_url":"https://api.github.com/users/Cyberboss/following{/other_user}","gists_url":"https://api.github.com/users/Cyberboss/gists{/gist_id}","starred_url":"https://api.github.com/users/Cyberboss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Cyberboss/subscriptions","organizations_url":"https://api.github.com/users/Cyberboss/orgs","repos_url":"https://api.github.com/users/Cyberboss/repos","events_url":"https://api.github.com/users/Cyberboss/events{/privacy}","received_events_url":"https://api.github.com/users/Cyberboss/received_events","type":"User","site_admin":false},"body":"ditto","created_at":"2017-11-29T17:20:44Z","updated_at":"2017-11-29T17:21:31Z","html_url":"https://github.com/tgstation/tgstation/pull/32680#discussion_r153856601","pull_request_url":"https://api.github.com/repos/tgstation/tgstation/pulls/32680","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/tgstation/tgstation/pulls/comments/153856601"},"html":{"href":"https://github.com/tgstation/tgstation/pull/32680#discussion_r153856601"},"pull_request":{"href":"https://api.github.com/repos/tgstation/tgstation/pulls/32680"}}},"pull_request":{"url":"https://api.github.com/repos/tgstation/tgstation/pulls/32680","id":152115179,"html_url":"https://github.com/tgstation/tgstation/pull/32680","diff_url":"https://github.com/tgstation/tgstation/pull/32680.diff","patch_url":"https://github.com/tgstation/tgstation/pull/32680.patch","issue_url":"https://api.github.com/repos/tgstation/tgstation/issues/32680","number":32680,"state":"open","locked":false,"title":"Nuke Op Datumization","user":{"login":"AnturK","id":4047233,"avatar_url":"https://avatars3.githubusercontent.com/u/4047233?v=4","gravatar_id":"","url":"https://api.github.com/users/AnturK","html_url":"https://github.com/AnturK","followers_url":"https://api.github.com/users/AnturK/followers","following_url":"https://api.github.com/users/AnturK/following{/other_user}","gists_url":"https://api.github.com/users/AnturK/gists{/gist_id}","starred_url":"https://api.github.com/users/AnturK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnturK/subscriptions","organizations_url":"https://api.github.com/users/AnturK/orgs","repos_url":"https://api.github.com/users/AnturK/repos","events_url":"https://api.github.com/users/AnturK/events{/privacy}","received_events_url":"https://api.github.com/users/AnturK/received_events","type":"User","site_admin":false},"body":"This one is half-done since the halfwin stuff needs be translated into objectives \r\n\r\n- [x] Finish Lone Op\r\n- [x] Fully port nukeop win conditions/partial wins into objectives.\r\n- [x] Testing\r\n- [ ] More testing","created_at":"2017-11-12T17:57:43Z","updated_at":"2017-11-29T17:21:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0f67bb235a6d67e1c9982d29384de365d9177e65","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/tgstation/tgstation/pulls/32680/commits","review_comments_url":"https://api.github.com/repos/tgstation/tgstation/pulls/32680/comments","review_comment_url":"https://api.github.com/repos/tgstation/tgstation/pulls/comments{/number}","comments_url":"https://api.github.com/repos/tgstation/tgstation/issues/32680/comments","statuses_url":"https://api.github.com/repos/tgstation/tgstation/statuses/3c89db8811b4089632d9e78fc288599f174414e5","head":{"label":"AnturK:datum-ops","ref":"datum-ops","sha":"3c89db8811b4089632d9e78fc288599f174414e5","user":{"login":"AnturK","id":4047233,"avatar_url":"https://avatars3.githubusercontent.com/u/4047233?v=4","gravatar_id":"","url":"https://api.github.com/users/AnturK","html_url":"https://github.com/AnturK","followers_url":"https://api.github.com/users/AnturK/followers","following_url":"https://api.github.com/users/AnturK/following{/other_user}","gists_url":"https://api.github.com/users/AnturK/gists{/gist_id}","starred_url":"https://api.github.com/users/AnturK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnturK/subscriptions","organizations_url":"https://api.github.com/users/AnturK/orgs","repos_url":"https://api.github.com/users/AnturK/repos","events_url":"https://api.github.com/users/AnturK/events{/privacy}","received_events_url":"https://api.github.com/users/AnturK/received_events","type":"User","site_admin":false},"repo":{"id":10646667,"name":"-tg-station","full_name":"AnturK/-tg-station","owner":{"login":"AnturK","id":4047233,"avatar_url":"https://avatars3.githubusercontent.com/u/4047233?v=4","gravatar_id":"","url":"https://api.github.com/users/AnturK","html_url":"https://github.com/AnturK","followers_url":"https://api.github.com/users/AnturK/followers","following_url":"https://api.github.com/users/AnturK/following{/other_user}","gists_url":"https://api.github.com/users/AnturK/gists{/gist_id}","starred_url":"https://api.github.com/users/AnturK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnturK/subscriptions","organizations_url":"https://api.github.com/users/AnturK/orgs","repos_url":"https://api.github.com/users/AnturK/repos","events_url":"https://api.github.com/users/AnturK/events{/privacy}","received_events_url":"https://api.github.com/users/AnturK/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/AnturK/-tg-station","description":"/tg/'s SS13 branch","fork":true,"url":"https://api.github.com/repos/AnturK/-tg-station","forks_url":"https://api.github.com/repos/AnturK/-tg-station/forks","keys_url":"https://api.github.com/repos/AnturK/-tg-station/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AnturK/-tg-station/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AnturK/-tg-station/teams","hooks_url":"https://api.github.com/repos/AnturK/-tg-station/hooks","issue_events_url":"https://api.github.com/repos/AnturK/-tg-station/issues/events{/number}","events_url":"https://api.github.com/repos/AnturK/-tg-station/events","assignees_url":"https://api.github.com/repos/AnturK/-tg-station/assignees{/user}","branches_url":"https://api.github.com/repos/AnturK/-tg-station/branches{/branch}","tags_url":"https://api.github.com/repos/AnturK/-tg-station/tags","blobs_url":"https://api.github.com/repos/AnturK/-tg-station/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AnturK/-tg-station/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AnturK/-tg-station/git/refs{/sha}","trees_url":"https://api.github.com/repos/AnturK/-tg-station/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AnturK/-tg-station/statuses/{sha}","languages_url":"https://api.github.com/repos/AnturK/-tg-station/languages","stargazers_url":"https://api.github.com/repos/AnturK/-tg-station/stargazers","contributors_url":"https://api.github.com/repos/AnturK/-tg-station/contributors","subscribers_url":"https://api.github.com/repos/AnturK/-tg-station/subscribers","subscription_url":"https://api.github.com/repos/AnturK/-tg-station/subscription","commits_url":"https://api.github.com/repos/AnturK/-tg-station/commits{/sha}","git_commits_url":"https://api.github.com/repos/AnturK/-tg-station/git/commits{/sha}","comments_url":"https://api.github.com/repos/AnturK/-tg-station/comments{/number}","issue_comment_url":"https://api.github.com/repos/AnturK/-tg-station/issues/comments{/number}","contents_url":"https://api.github.com/repos/AnturK/-tg-station/contents/{+path}","compare_url":"https://api.github.com/repos/AnturK/-tg-station/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AnturK/-tg-station/merges","archive_url":"https://api.github.com/repos/AnturK/-tg-station/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AnturK/-tg-station/downloads","issues_url":"https://api.github.com/repos/AnturK/-tg-station/issues{/number}","pulls_url":"https://api.github.com/repos/AnturK/-tg-station/pulls{/number}","milestones_url":"https://api.github.com/repos/AnturK/-tg-station/milestones{/number}","notifications_url":"https://api.github.com/repos/AnturK/-tg-station/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AnturK/-tg-station/labels{/name}","releases_url":"https://api.github.com/repos/AnturK/-tg-station/releases{/id}","deployments_url":"https://api.github.com/repos/AnturK/-tg-station/deployments","created_at":"2013-06-12T16:12:51Z","updated_at":"2015-04-26T14:35:38Z","pushed_at":"2017-11-28T16:54:59Z","git_url":"git://github.com/AnturK/-tg-station.git","ssh_url":"git@github.com:AnturK/-tg-station.git","clone_url":"https://github.com/AnturK/-tg-station.git","svn_url":"https://github.com/AnturK/-tg-station","homepage":"","size":1012747,"stargazers_count":0,"watchers_count":0,"language":"DM","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"tgstation:master","ref":"master","sha":"4f0e4cce8d8fda286d7c6bcd6af4a4bf1625b997","user":{"login":"tgstation","id":1363778,"avatar_url":"https://avatars2.githubusercontent.com/u/1363778?v=4","gravatar_id":"","url":"https://api.github.com/users/tgstation","html_url":"https://github.com/tgstation","followers_url":"https://api.github.com/users/tgstation/followers","following_url":"https://api.github.com/users/tgstation/following{/other_user}","gists_url":"https://api.github.com/users/tgstation/gists{/gist_id}","starred_url":"https://api.github.com/users/tgstation/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tgstation/subscriptions","organizations_url":"https://api.github.com/users/tgstation/orgs","repos_url":"https://api.github.com/users/tgstation/repos","events_url":"https://api.github.com/users/tgstation/events{/privacy}","received_events_url":"https://api.github.com/users/tgstation/received_events","type":"Organization","site_admin":false},"repo":{"id":3234987,"name":"tgstation","full_name":"tgstation/tgstation","owner":{"login":"tgstation","id":1363778,"avatar_url":"https://avatars2.githubusercontent.com/u/1363778?v=4","gravatar_id":"","url":"https://api.github.com/users/tgstation","html_url":"https://github.com/tgstation","followers_url":"https://api.github.com/users/tgstation/followers","following_url":"https://api.github.com/users/tgstation/following{/other_user}","gists_url":"https://api.github.com/users/tgstation/gists{/gist_id}","starred_url":"https://api.github.com/users/tgstation/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tgstation/subscriptions","organizations_url":"https://api.github.com/users/tgstation/orgs","repos_url":"https://api.github.com/users/tgstation/repos","events_url":"https://api.github.com/users/tgstation/events{/privacy}","received_events_url":"https://api.github.com/users/tgstation/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/tgstation/tgstation","description":"the /tg/station branch of SS13","fork":false,"url":"https://api.github.com/repos/tgstation/tgstation","forks_url":"https://api.github.com/repos/tgstation/tgstation/forks","keys_url":"https://api.github.com/repos/tgstation/tgstation/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tgstation/tgstation/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tgstation/tgstation/teams","hooks_url":"https://api.github.com/repos/tgstation/tgstation/hooks","issue_events_url":"https://api.github.com/repos/tgstation/tgstation/issues/events{/number}","events_url":"https://api.github.com/repos/tgstation/tgstation/events","assignees_url":"https://api.github.com/repos/tgstation/tgstation/assignees{/user}","branches_url":"https://api.github.com/repos/tgstation/tgstation/branches{/branch}","tags_url":"https://api.github.com/repos/tgstation/tgstation/tags","blobs_url":"https://api.github.com/repos/tgstation/tgstation/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tgstation/tgstation/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tgstation/tgstation/git/refs{/sha}","trees_url":"https://api.github.com/repos/tgstation/tgstation/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tgstation/tgstation/statuses/{sha}","languages_url":"https://api.github.com/repos/tgstation/tgstation/languages","stargazers_url":"https://api.github.com/repos/tgstation/tgstation/stargazers","contributors_url":"https://api.github.com/repos/tgstation/tgstation/contributors","subscribers_url":"https://api.github.com/repos/tgstation/tgstation/subscribers","subscription_url":"https://api.github.com/repos/tgstation/tgstation/subscription","commits_url":"https://api.github.com/repos/tgstation/tgstation/commits{/sha}","git_commits_url":"https://api.github.com/repos/tgstation/tgstation/git/commits{/sha}","comments_url":"https://api.github.com/repos/tgstation/tgstation/comments{/number}","issue_comment_url":"https://api.github.com/repos/tgstation/tgstation/issues/comments{/number}","contents_url":"https://api.github.com/repos/tgstation/tgstation/contents/{+path}","compare_url":"https://api.github.com/repos/tgstation/tgstation/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tgstation/tgstation/merges","archive_url":"https://api.github.com/repos/tgstation/tgstation/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tgstation/tgstation/downloads","issues_url":"https://api.github.com/repos/tgstation/tgstation/issues{/number}","pulls_url":"https://api.github.com/repos/tgstation/tgstation/pulls{/number}","milestones_url":"https://api.github.com/repos/tgstation/tgstation/milestones{/number}","notifications_url":"https://api.github.com/repos/tgstation/tgstation/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tgstation/tgstation/labels{/name}","releases_url":"https://api.github.com/repos/tgstation/tgstation/releases{/id}","deployments_url":"https://api.github.com/repos/tgstation/tgstation/deployments","created_at":"2012-01-21T17:32:47Z","updated_at":"2017-11-25T12:53:24Z","pushed_at":"2017-11-29T17:08:26Z","git_url":"git://github.com/tgstation/tgstation.git","ssh_url":"git@github.com:tgstation/tgstation.git","clone_url":"https://github.com/tgstation/tgstation.git","svn_url":"https://github.com/tgstation/tgstation","homepage":"http://www.tgstation13.org/","size":1014800,"stargazers_count":431,"watchers_count":431,"language":"DM","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1617,"mirror_url":null,"archived":false,"open_issues_count":935,"license":null,"forks":1617,"open_issues":935,"watchers":431,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/tgstation/tgstation/pulls/32680"},"html":{"href":"https://github.com/tgstation/tgstation/pull/32680"},"issue":{"href":"https://api.github.com/repos/tgstation/tgstation/issues/32680"},"comments":{"href":"https://api.github.com/repos/tgstation/tgstation/issues/32680/comments"},"review_comments":{"href":"https://api.github.com/repos/tgstation/tgstation/pulls/32680/comments"},"review_comment":{"href":"https://api.github.com/repos/tgstation/tgstation/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/tgstation/tgstation/pulls/32680/commits"},"statuses":{"href":"https://api.github.com/repos/tgstation/tgstation/statuses/3c89db8811b4089632d9e78fc288599f174414e5"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"Cyberboss"}}