{"action":"created","comment":{"url":"https://api.github.com/repos/wesnoth/wesnoth/pulls/comments/171116540","pull_request_review_id":99913310,"id":171116540,"diff_hunk":"@@ -0,0 +1,470 @@\n+\n+#define ADDON_DESCRIPTION\n+\t{SIMPLE_KEY name t_string}\n+\t{SIMPLE_KEY description t_string}\n+#enddef\n+\n+#define BASE_COMPATIBILITY_KEYS\n+\t{DEFAULT_KEY allow_new_game bool yes}\n+\t{SIMPLE_KEY allow_era string_list}\n+\t{SIMPLE_KEY disallow_era string_list}\n+\t{SIMPLE_KEY ignore_incompatible_era string_list}\n+\t{SIMPLE_KEY allow_modification string_list}\n+\t{SIMPLE_KEY disallow_modification string_list}\n+\t{SIMPLE_KEY ignore_incompatible_modification string_list}\n+#enddef\n+\n+[tag]\n+\tname=\"$side\"\n+\tmax=0\n+\t# TODO: This superclass should only be used if no_leader=no\n+\tsuper=\"units/$unit\"\n+\t{DEFAULT_KEY no_leader bool no}\n+\t{SIMPLE_KEY recruit string}\n+\t{DEFAULT_KEY gold int 100}\n+\t{DEFAULT_KEY income int 0}\n+\t{DEFAULT_KEY hidden bool no}\n+\t{SIMPLE_KEY fog bool}\n+\t{SIMPLE_KEY shroud bool}\n+\t{SIMPLE_KEY fog_data string}\n+\t{SIMPLE_KEY shroud_data string}\n+\t{SIMPLE_KEY persistent bool}\n+\t{SIMPLE_KEY save_id string}\n+\t{SIMPLE_KEY previous_save_id string}\n+\t{SIMPLE_KEY team_name string}\n+\t{SIMPLE_KEY user_team_name t_string}\n+\t{SIMPLE_KEY current_player string}\n+\t{SIMPLE_KEY side_name t_string}\n+\t{SIMPLE_KEY color string}\n+\t{SIMPLE_KEY flag string}\n+\t{SIMPLE_KEY flag_icon string}\n+\t{SIMPLE_KEY village_gold int}\n+\t{SIMPLE_KEY village_support int}\n+\t{SIMPLE_KEY recall_cost int}\n+\t{DEPRECATED_KEY share_maps string}\n+\t{DEPRECATED_KEY share_view string}\n+\t{SIMPLE_KEY share_vision share_vision}\n+\t{DEFAULT_KEY scroll_to_leader bool yes}\n+\t{DEFAULT_KEY suppress_end_turn_confirmation bool no}\n+\t{DEFAULT_KEY defeat_condition defeat_condition no_leader_left}\n+\t[tag]\n+\t\tname=\"unit\"\n+\t\tmax=infinite\n+\t\tsuper=\"units/$unit\"\n+\t[/tag]\n+\t[tag]\n+\t\tname=\"leader\"\n+\t\tmax=infinite\n+\t\tsuper=\"units/$unit\"\n+\t[/tag]\n+\t[tag]\n+\t\tname=\"village\"\n+\t\tmax=infinite\n+\t\t{SIMPLE_KEY x int}\n+\t\t{SIMPLE_KEY y int}\n+\t[/tag]\n+\t[tag]\n+\t\tname=\"fog_override\"\n+\t\tmax=infinite\n+\t\t{SIMPLE_KEY x int_list}\n+\t\t{SIMPLE_KEY y int_list}\n+\t[/tag]\n+\t[tag]\n+\t\tname=\"ai\"\n+\t\tmax=infinite\n+\t\tsuper=\"$ai\"\n+\t[/tag]\n+[/tag]\n+\n+[tag]\n+\tname=\"multiplayer_side\"\n+\tmax=infinite\n+\tsuper=\"$side\"\n+\t{REQUIRED_KEY id string}\n+\t{SIMPLE_KEY name t_string}\n+\t{SIMPLE_KEY description t_string}\n+\t{SIMPLE_KEY image string}\n+\t{SIMPLE_KEY leader string}\n+\t{SIMPLE_KEY random_leader string}\n+\t{DEFAULT_KEY random_faction bool no}\n+\t# TODO: below two keys only valid if above key is yes\n+\t{SIMPLE_KEY choices string_list}\n+\t{SIMPLE_KEY except string_list}\n+\t{SIMPLE_KEY terrain_liked terrain_list}\n+\n+\t{DEFAULT_KEY allow_player bool yes}\n+\t{DEFAULT_KEY disallow_observers bool no}\n+\t{DEFAULT_KEY disallow_shuffle bool no}\n+\t{SIMPLE_KEY chose_random bool}\n+\t{DEFAULT_KEY controller_lock bool no}\n+\t{DEFAULT_KEY team_lock bool no}\n+\t{DEFAULT_KEY color_lock bool no}\n+\t{DEFAULT_KEY gold_lock bool no}\n+\t{DEFAULT_KEY income_lock bool no}\n+\t{DEFAULT_KEY faction_lock bool no}\n+\t{DEFAULT_KEY leader_lock bool no}\n+\t{SIMPLE_KEY faction string}\n+\t{SIMPLE_KEY faction_from_recruit bool}\n+[/tag]\n+\n+# TODO: Is [event] really allowed at toplevel, outside a [scenario] or [era]?\n+[tag]\n+\tname=\"event\"\n+\tmax=infinite\n+\tsuper=\"$action_wml\"\n+\t{REQUIRED_KEY name string}\n+\t{SIMPLE_KEY id string}\n+\t{DEFAULT_KEY first_time_only bool yes}\n+\t{DEFAULT_KEY delayed_variable_substitution bool no}\n+\t\n+\t{FILTER_TAG \"filter\" unit ()}\n+\t{FILTER_TAG \"filter_second\" unit ()}\n+\t{FILTER_TAG \"filter_attack\" weapon ()}\n+\t{FILTER_TAG \"filter_second_attack\" weapon ()}\n+\t{FILTER_TAG \"filter_side\" side ()}\n+\t[tag]\n+\t\tname=\"filter_condition\"\n+\t\tsuper=\"$conditional_wml\"\n+\t[/tag]\n+[/tag]\n+\n+[tag]\n+\tname=\"$addon\"\n+\tmax=0\n+\t{REQUIRED_KEY id string}\n+\t# Not sure if this key is allowed in all addons, but it should be...\n+\t{SIMPLE_KEY addon_min_version version}\n+\t[tag]\n+\t\tname=\"load_resource\"\n+\t\tmax=infinite\n+\t\t{REQUIRED_KEY id string}\n+\t[/tag]\n+\t[link]\n+\t\tname=\"event\"\n+\t[/link]\n+\t[link]\n+\t\tname=\"lua\"\n+\t[/link]\n+\t[link]\n+\t\tname=\"ais/ai\"\n+\t[/link]\n+[/tag]\n+[tag]\n+\tname=\"campaign\"\n+\tmax=infinite\n+\tsuper=\"$addon\"\n+\t{ADDON_DESCRIPTION}\n+\t{SIMPLE_KEY icon string}\n+\t{SIMPLE_KEY abbrev t_string}\n+\t{SIMPLE_KEY image string}\n+\t{DEFAULT_KEY description_alignment text_alignment left}\n+\t{DEFAULT_KEY type addon_type sp}\n+\t{SIMPLE_KEY define string}\n+\t{SIMPLE_KEY extra_defines string_list}\n+\t{DEPRECATED_KEY difficulties string_list}\n+\t{DEPRECATED_KEY difficulty_descriptions string}\n+\t{DEFAULT_KEY allow_difficulty_change bool yes}\n+\t{REQUIRED_KEY first_scenario string}\n+\t{SIMPLE_KEY rank int}\n+\t{DEFAULT_KEY end_credits bool yes}\n+\t{SIMPLE_KEY end_text t_string}\n+\t{DEFAULT_KEY end_text_duration int 3500}\n+\t{SIMPLE_KEY start_year irdya_date}\n+\t{SIMPLE_KEY end_year irdya_date}\n+\t{SIMPLE_KEY year irdya_date}\n+\t[link]\n+\t\tname=\"era/options\"\n+\t[/link]\n+\t[link]\n+\t\tname=\"about\"\n+\t[/link]\n+\t[tag]\n+\t\tname=\"difficulty\"\n+\t\tmax=infinite\n+\t\t{REQUIRED_KEY define string}\n+\t\t{SIMPLE_KEY image string}\n+\t\t{SIMPLE_KEY label t_string}\n+\t\t{SIMPLE_KEY description t_string}\n+\t\t{SIMPLE_KEY default bool}\n+\t[/tag]\n+\t# Multiplayer specific\n+\t# TODO: These are probably only allowed if type is mp or hybrid?\n+\t{DEFAULT_KEY min_players int 2}\n+\t{SIMPLE_KEY max_players int}\n+\t{DEFAULT_KEY allow_era_choice bool yes}\n+\t{DEFAULT_KEY require_campaign bool yes}\n+[/tag]\n+[tag]\n+\tname=\"era\"\n+\tmax=infinite\n+\tsuper=\"$addon\"\n+\t{ADDON_DESCRIPTION}\n+\t{BASE_COMPATIBILITY_KEYS}\n+\t{SIMPLE_KEY force_modification string_list}\n+\t{SIMPLE_KEY require_era bool}\n+\t{DEFAULT_KEY hide_help bool no}\n+\t{DEFAULT_KEY type addon_type sp}\n+\t[link]\n+\t\tname=\"multiplayer_side\"\n+\t[/link]\n+\t[tag]\n+\t\tname=\"options\"\n+\t\t[tag]\n+\t\t\tname=\"checkbox\"\n+\t\t\tmax=infinite\n+\t\t\t{REQUIRED_KEY id string}\n+\t\t\t{DEFAULT_KEY default bool no}\n+\t\t\t{SIMPLE_KEY name t_string}\n+\t\t\t{SIMPLE_KEY description t_string}\n+\t\t[/tag]\n+\t\t[tag]\n+\t\t\tname=\"choice\"\n+\t\t\tmax=infinite\n+\t\t\t{REQUIRED_KEY id string}\n+\t\t\t{SIMPLE_KEY default string}\n+\t\t\t{SIMPLE_KEY name t_string}\n+\t\t\t{SIMPLE_KEY description t_string}\n+\t\t\t[tag]\n+\t\t\t\tname=\"item\"\n+\t\t\t\tmax=infinite\n+\t\t\t\t{REQUIRED_KEY value string}\n+\t\t\t\t{SIMPLE_KEY name t_string}\n+\t\t\t[/tag]\n+\t\t[/tag]\n+\t\t[tag]\n+\t\t\tname=\"entry\"\n+\t\t\tmax=infinite\n+\t\t\t{REQUIRED_KEY id string}\n+\t\t\t{SIMPLE_KEY default string}\n+\t\t\t{SIMPLE_KEY name t_string}\n+\t\t\t{SIMPLE_KEY description t_string}\n+\t\t[/tag]\n+\t\t[tag]\n+\t\t\tname=\"slider\"\n+\t\t\tmax=infinite\n+\t\t\t{REQUIRED_KEY id string}\n+\t\t\t{SIMPLE_KEY default int}\n+\t\t\t{SIMPLE_KEY min int}\n+\t\t\t{SIMPLE_KEY max int}\n+\t\t\t{SIMPLE_KEY step int}\n+\t\t\t{SIMPLE_KEY name t_string}\n+\t\t\t{SIMPLE_KEY description t_string}\n+\t\t[/tag]\n+\t\t[tag]\n+\t\t\tname=\"combo\"\n+\t\t\tmax=infinite\n+\t\t\tsuper=\"era/options/choice\"\n+\t\t\tdeprecated=yes\n+\t\t[/tag]\n+\t[/tag]\n+[/tag]\n+[tag]\n+\tname=\"modification\"\n+\tmax=infinite\n+\tsuper=\"$addon\"\n+\t{ADDON_DESCRIPTION}\n+\t# TODO: Is this the correct default value?\n+\t{DEFAULT_KEY type addon_type mp}\n+\t{BASE_COMPATIBILITY_KEYS}\n+\t{SIMPLE_KEY ignore_incompatible_scenario string_list}\n+\t{DEFAULT_KEY require_modification bool no}\n+\t[link]\n+\t\tname=\"era/options\"\n+\t[/link]\n+[/tag]\n+[tag]\n+\tname=\"resource\"\n+\tmax=infinite\n+\tsuper=\"$addon\"\n+[/tag]\n+[tag]\n+\tname=\"scenario\"\n+\tmax=infinite\n+\tsuper=\"$addon\"\n+\t{ADDON_DESCRIPTION}\n+\t{SIMPLE_KEY next_scenario string}\n+\t{SIMPLE_KEY name t_string}\n+\t{SIMPLE_KEY map_data string}\n+\t{DEFAULT_KEY turns int -1}\n+\t{DEFAULT_KEY turn_at int 1}\n+\t{DEFAULT_KEY random_start_time bool,int_list no} # Note: Is it random_start_time or random_starting_time? (There's some uses of the latter)\n+\t{DEPRECATED_KEY music string}\n+\t{SIMPLE_KEY defeat_music string}\n+\t{SIMPLE_KEY victory_music string}\n+\t{SIMPLE_KEY theme string_list}\n+\t{DEFAULT_KEY victory_when_enemies_defeated bool yes}\n+\t# TODO: The following two keys are only valid if the above key is yes (or omitted)\n+\t{SIMPLE_KEY carryover_percentage int}\n+\t{SIMPLE_KEY carryover_add bool}\n+\t{DEFAULT_KEY remove_from_carryover_on_defeat bool yes}\n+\t{DEFAULT_KEY disallow_recall bool no}\n+\t{DEFAULT_KEY experience_modifier int_percent 100}\n+\t{DEFAULT_KEY current_time int 0}\n+\t{SIMPLE_KEY map_generation string}\n+\t{SIMPLE_KEY scenario_generation string}\n+\t{SIMPLE_KEY force_lock_settings bool}\n+\t[tag]\n+\t\tname=\"story\"\n+\t\t# TODO: Remove this once the actual supported tags are properly documented (basically messages, insert_tag, if/then/else, switch/case)\n+\t\tany_tag=yes\n+\t\t# TODO: Is this really recognized at story toplevel? Wiki claims it is.\n+\t\t[tag]\n+\t\t\tname=\"image\"\n+\t\t\tmax=infinite\n+\t\t\t{SIMPLE_KEY x int}\n+\t\t\t{SIMPLE_KEY y int}\n+\t\t\t{SIMPLE_KEY centered bool}\n+\t\t\t{SIMPLE_KEY file string}\n+\t\t\t{SIMPLE_KEY delay int}\n+\t\t\t# These keys possibly not documented?\n+\t\t\t{SIMPLE_KEY scale_vertically bool}\n+\t\t\t{SIMPLE_KEY scale_horizontally bool}\n+\t\t\t{SIMPLE_KEY scale bool}\n+\t\t\t{SIMPLE_KEY tile_vertically bool}\n+\t\t\t{SIMPLE_KEY tile_horizontally bool}\n+\t\t\t{SIMPLE_KEY tile bool}\n+\t\t[/tag]\n+\t\t[tag]\n+\t\t\tname=\"part\"\n+\t\t\tmax=infinite\n+\t\t\t{SIMPLE_KEY background string}\n+\t\t\t{DEFAULT_KEY scale_background bool yes}\n+\t\t\t{SIMPLE_KEY story t_string}\n+\t\t\t{SIMPLE_KEY show_title bool}\n+\t\t\t{SIMPLE_KEY title t_string}\n+\t\t\t{SIMPLE_KEY music string}\n+\t\t\t{SIMPLE_KEY sound string_list}\n+\t\t\t{DEFAULT_KEY text_layout string bottom}\n+\t\t\t{DEFAULT_KEY title_alignment text_alignment left}\n+\t\t\t{SIMPLE_KEY delay int} # Not documented?\n+\t\t\t[tag]\n+\t\t\t\tname=\"background_layer\"\n+\t\t\t\tmax=infinite\n+\t\t\t\t{SIMPLE_KEY image string}\n+\t\t\t\t{SIMPLE_KEY scale_vertically bool}\n+\t\t\t\t{SIMPLE_KEY scale_horizontally bool}\n+\t\t\t\t{SIMPLE_KEY scale bool}\n+\t\t\t\t{SIMPLE_KEY keep_aspect_ratio bool}\n+\t\t\t\t{SIMPLE_KEY tile_vertically bool}\n+\t\t\t\t{SIMPLE_KEY tile_horizontally bool}\n+\t\t\t\t{SIMPLE_KEY tile bool}\n+\t\t\t\t{SIMPLE_KEY base_layer bool}\n+\t\t\t[/tag]\n+\t\t\t[tag]\n+\t\t\t\tname=\"if\"\n+\t\t\t\tmax=infinite\n+\t\t\t\tsuper=\"$conditional_wml\"\n+\t\t\t\t[tag]\n+\t\t\t\t\tname=\"then\"\n+\t\t\t\t\tsuper=\"scenario/story/part\"\n+\t\t\t\t[/tag]\n+\t\t\t\t[tag]\n+\t\t\t\t\tname=\"else\"\n+\t\t\t\t\tsuper=\"scenario/story/part\"\n+\t\t\t\t[/tag]\n+\t\t\t[/tag]\n+\t\t\t# TODO: Switch/case\n+\t\t\t[link]\n+\t\t\t\tname=\"scenario/story/image\"\n+\t\t\t[/link]\n+\t\t[/tag]\n+\t[/tag]\n+\t[tag]\n+\t\tname=\"label\"\n+\t\tmax=infinite\n+\t\t{SIMPLE_KEY x int}\n+\t\t{SIMPLE_KEY y int}\n+\t\t{SIMPLE_KEY text t_string}\n+\t\t{SIMPLE_KEY tooltip t_string} # Is this documented?\n+\t\t{SIMPLE_KEY immutable bool}\n+\t\t{SIMPLE_KEY visible_in_fog bool}\n+\t\t{SIMPLE_KEY visible_in_shroud bool}\n+\t\t{SIMPLE_KEY team_name string}\n+\t[/tag]\n+\t[tag]\n+\t\tname=\"item\"\n+\t\tmax=\"infinite\"\n+\t\t{SIMPLE_KEY x range_list}\n+\t\t{SIMPLE_KEY y range_list}\n+\t\t{SIMPLE_KEY image string}\n+\t\t{SIMPLE_KEY halo string}\n+\t[/tag]\n+\t[tag]\n+\t\tname=\"time\"\n+\t\tmax=infinite\n+\t\t{REQUIRED_KEY id string}\n+\t\t{SIMPLE_KEY name t_string}\n+\t\t{SIMPLE_KEY image string}\n+\t\t{SIMPLE_KEY mask string}\n+\t\t{SIMPLE_KEY lawful_bonus int}\n+\t\t{SIMPLE_KEY red int}\n+\t\t{SIMPLE_KEY green int}\n+\t\t{SIMPLE_KEY blue int}\n+\t\t{SIMPLE_KEY sound string}\n+\t[/tag]\n+\t[tag]\n+\t\tname=\"time_area\"\n+\t\tmax=infinite\n+\t\t{SIMPLE_KEY x range_list}\n+\t\t{SIMPLE_KEY y range_list}\n+\t\t[link]\n+\t\t\tname=\"scenario/time\"\n+\t\t[/link]\n+\t[/tag]\n+\t[tag]\n+\t\tname=\"side\"\n+\t\tmin=1\n+\t\tmax=infinite\n+\t\tsuper=\"$side\"\n+\t\t{REQUIRED_KEY side int}\n+\t\t# TODO: Pretty sure this isn't actually required?","path":"data/schema/core/addons.cfg","position":420,"original_position":420,"commit_id":"f09691c27c4a7fb0632b380f468d86eda7b8eb58","original_commit_id":"f09691c27c4a7fb0632b380f468d86eda7b8eb58","user":{"login":"CelticMinstrel","id":578731,"avatar_url":"https://avatars3.githubusercontent.com/u/578731?v=4","gravatar_id":"","url":"https://api.github.com/users/CelticMinstrel","html_url":"https://github.com/CelticMinstrel","followers_url":"https://api.github.com/users/CelticMinstrel/followers","following_url":"https://api.github.com/users/CelticMinstrel/following{/other_user}","gists_url":"https://api.github.com/users/CelticMinstrel/gists{/gist_id}","starred_url":"https://api.github.com/users/CelticMinstrel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CelticMinstrel/subscriptions","organizations_url":"https://api.github.com/users/CelticMinstrel/orgs","repos_url":"https://api.github.com/users/CelticMinstrel/repos","events_url":"https://api.github.com/users/CelticMinstrel/events{/privacy}","received_events_url":"https://api.github.com/users/CelticMinstrel/received_events","type":"User","site_admin":false},"body":"I think making it mandatory might be a bit much…","created_at":"2018-02-28T00:58:13Z","updated_at":"2018-02-28T00:58:13Z","html_url":"https://github.com/wesnoth/wesnoth/pull/2562#discussion_r171116540","pull_request_url":"https://api.github.com/repos/wesnoth/wesnoth/pulls/2562","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/wesnoth/wesnoth/pulls/comments/171116540"},"html":{"href":"https://github.com/wesnoth/wesnoth/pull/2562#discussion_r171116540"},"pull_request":{"href":"https://api.github.com/repos/wesnoth/wesnoth/pulls/2562"}},"in_reply_to_id":171058326},"pull_request":{"url":"https://api.github.com/repos/wesnoth/wesnoth/pulls/2562","id":171280141,"html_url":"https://github.com/wesnoth/wesnoth/pull/2562","diff_url":"https://github.com/wesnoth/wesnoth/pull/2562.diff","patch_url":"https://github.com/wesnoth/wesnoth/pull/2562.patch","issue_url":"https://api.github.com/repos/wesnoth/wesnoth/issues/2562","number":2562,"state":"open","locked":false,"title":"[WIP] Implement validation of the core game config WML","user":{"login":"CelticMinstrel","id":578731,"avatar_url":"https://avatars3.githubusercontent.com/u/578731?v=4","gravatar_id":"","url":"https://api.github.com/users/CelticMinstrel","html_url":"https://github.com/CelticMinstrel","followers_url":"https://api.github.com/users/CelticMinstrel/followers","following_url":"https://api.github.com/users/CelticMinstrel/following{/other_user}","gists_url":"https://api.github.com/users/CelticMinstrel/gists{/gist_id}","starred_url":"https://api.github.com/users/CelticMinstrel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CelticMinstrel/subscriptions","organizations_url":"https://api.github.com/users/CelticMinstrel/orgs","repos_url":"https://api.github.com/users/CelticMinstrel/repos","events_url":"https://api.github.com/users/CelticMinstrel/events{/privacy}","received_events_url":"https://api.github.com/users/CelticMinstrel/received_events","type":"User","site_admin":false},"body":"The schema validator has been around for who knows how long, but it was only ever used for the GUI2 WML. I decided it would be useful to extend it to work for the game data WML as well. This commit adds some additional features to the schema validator as well as creating a schema definition that covers about 90% of the core game data structure.\r\n\r\nIn other words, it's not done yet, but I'm opening it up for preliminary review.\r\n\r\nThrough this work I uncovered several errors which I will eventually push fixes for. For one example, a Dwarvish Thunderer who killed an enemy with his blade will then blow the smoke off of his firearm, which is not the intent of that animation.","created_at":"2018-02-26T04:27:39Z","updated_at":"2018-02-28T00:58:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"adaad2da772a298c6a79c5c77d7e0731b705fba7","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/wesnoth/wesnoth/pulls/2562/commits","review_comments_url":"https://api.github.com/repos/wesnoth/wesnoth/pulls/2562/comments","review_comment_url":"https://api.github.com/repos/wesnoth/wesnoth/pulls/comments{/number}","comments_url":"https://api.github.com/repos/wesnoth/wesnoth/issues/2562/comments","statuses_url":"https://api.github.com/repos/wesnoth/wesnoth/statuses/f09691c27c4a7fb0632b380f468d86eda7b8eb58","head":{"label":"wesnoth:schema","ref":"schema","sha":"f09691c27c4a7fb0632b380f468d86eda7b8eb58","user":{"login":"wesnoth","id":4024232,"avatar_url":"https://avatars2.githubusercontent.com/u/4024232?v=4","gravatar_id":"","url":"https://api.github.com/users/wesnoth","html_url":"https://github.com/wesnoth","followers_url":"https://api.github.com/users/wesnoth/followers","following_url":"https://api.github.com/users/wesnoth/following{/other_user}","gists_url":"https://api.github.com/users/wesnoth/gists{/gist_id}","starred_url":"https://api.github.com/users/wesnoth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wesnoth/subscriptions","organizations_url":"https://api.github.com/users/wesnoth/orgs","repos_url":"https://api.github.com/users/wesnoth/repos","events_url":"https://api.github.com/users/wesnoth/events{/privacy}","received_events_url":"https://api.github.com/users/wesnoth/received_events","type":"Organization","site_admin":false},"repo":{"id":9432220,"name":"wesnoth","full_name":"wesnoth/wesnoth","owner":{"login":"wesnoth","id":4024232,"avatar_url":"https://avatars2.githubusercontent.com/u/4024232?v=4","gravatar_id":"","url":"https://api.github.com/users/wesnoth","html_url":"https://github.com/wesnoth","followers_url":"https://api.github.com/users/wesnoth/followers","following_url":"https://api.github.com/users/wesnoth/following{/other_user}","gists_url":"https://api.github.com/users/wesnoth/gists{/gist_id}","starred_url":"https://api.github.com/users/wesnoth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wesnoth/subscriptions","organizations_url":"https://api.github.com/users/wesnoth/orgs","repos_url":"https://api.github.com/users/wesnoth/repos","events_url":"https://api.github.com/users/wesnoth/events{/privacy}","received_events_url":"https://api.github.com/users/wesnoth/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/wesnoth/wesnoth","description":"An open source, turn-based strategy game with a high fantasy theme. It features both singleplayer and online/hotseat multiplayer combat.","fork":false,"url":"https://api.github.com/repos/wesnoth/wesnoth","forks_url":"https://api.github.com/repos/wesnoth/wesnoth/forks","keys_url":"https://api.github.com/repos/wesnoth/wesnoth/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wesnoth/wesnoth/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wesnoth/wesnoth/teams","hooks_url":"https://api.github.com/repos/wesnoth/wesnoth/hooks","issue_events_url":"https://api.github.com/repos/wesnoth/wesnoth/issues/events{/number}","events_url":"https://api.github.com/repos/wesnoth/wesnoth/events","assignees_url":"https://api.github.com/repos/wesnoth/wesnoth/assignees{/user}","branches_url":"https://api.github.com/repos/wesnoth/wesnoth/branches{/branch}","tags_url":"https://api.github.com/repos/wesnoth/wesnoth/tags","blobs_url":"https://api.github.com/repos/wesnoth/wesnoth/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wesnoth/wesnoth/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wesnoth/wesnoth/git/refs{/sha}","trees_url":"https://api.github.com/repos/wesnoth/wesnoth/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wesnoth/wesnoth/statuses/{sha}","languages_url":"https://api.github.com/repos/wesnoth/wesnoth/languages","stargazers_url":"https://api.github.com/repos/wesnoth/wesnoth/stargazers","contributors_url":"https://api.github.com/repos/wesnoth/wesnoth/contributors","subscribers_url":"https://api.github.com/repos/wesnoth/wesnoth/subscribers","subscription_url":"https://api.github.com/repos/wesnoth/wesnoth/subscription","commits_url":"https://api.github.com/repos/wesnoth/wesnoth/commits{/sha}","git_commits_url":"https://api.github.com/repos/wesnoth/wesnoth/git/commits{/sha}","comments_url":"https://api.github.com/repos/wesnoth/wesnoth/comments{/number}","issue_comment_url":"https://api.github.com/repos/wesnoth/wesnoth/issues/comments{/number}","contents_url":"https://api.github.com/repos/wesnoth/wesnoth/contents/{+path}","compare_url":"https://api.github.com/repos/wesnoth/wesnoth/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wesnoth/wesnoth/merges","archive_url":"https://api.github.com/repos/wesnoth/wesnoth/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wesnoth/wesnoth/downloads","issues_url":"https://api.github.com/repos/wesnoth/wesnoth/issues{/number}","pulls_url":"https://api.github.com/repos/wesnoth/wesnoth/pulls{/number}","milestones_url":"https://api.github.com/repos/wesnoth/wesnoth/milestones{/number}","notifications_url":"https://api.github.com/repos/wesnoth/wesnoth/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wesnoth/wesnoth/labels{/name}","releases_url":"https://api.github.com/repos/wesnoth/wesnoth/releases{/id}","deployments_url":"https://api.github.com/repos/wesnoth/wesnoth/deployments","created_at":"2013-04-14T17:13:06Z","updated_at":"2018-02-27T17:22:37Z","pushed_at":"2018-02-27T20:42:43Z","git_url":"git://github.com/wesnoth/wesnoth.git","ssh_url":"git@github.com:wesnoth/wesnoth.git","clone_url":"https://github.com/wesnoth/wesnoth.git","svn_url":"https://github.com/wesnoth/wesnoth","homepage":"https://www.wesnoth.org/","size":2503340,"stargazers_count":1416,"watchers_count":1416,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":415,"mirror_url":null,"archived":false,"open_issues_count":696,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":415,"open_issues":696,"watchers":1416,"default_branch":"master"}},"base":{"label":"wesnoth:master","ref":"master","sha":"2e235f785da30b5a5c3210c0dc3014417815493e","user":{"login":"wesnoth","id":4024232,"avatar_url":"https://avatars2.githubusercontent.com/u/4024232?v=4","gravatar_id":"","url":"https://api.github.com/users/wesnoth","html_url":"https://github.com/wesnoth","followers_url":"https://api.github.com/users/wesnoth/followers","following_url":"https://api.github.com/users/wesnoth/following{/other_user}","gists_url":"https://api.github.com/users/wesnoth/gists{/gist_id}","starred_url":"https://api.github.com/users/wesnoth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wesnoth/subscriptions","organizations_url":"https://api.github.com/users/wesnoth/orgs","repos_url":"https://api.github.com/users/wesnoth/repos","events_url":"https://api.github.com/users/wesnoth/events{/privacy}","received_events_url":"https://api.github.com/users/wesnoth/received_events","type":"Organization","site_admin":false},"repo":{"id":9432220,"name":"wesnoth","full_name":"wesnoth/wesnoth","owner":{"login":"wesnoth","id":4024232,"avatar_url":"https://avatars2.githubusercontent.com/u/4024232?v=4","gravatar_id":"","url":"https://api.github.com/users/wesnoth","html_url":"https://github.com/wesnoth","followers_url":"https://api.github.com/users/wesnoth/followers","following_url":"https://api.github.com/users/wesnoth/following{/other_user}","gists_url":"https://api.github.com/users/wesnoth/gists{/gist_id}","starred_url":"https://api.github.com/users/wesnoth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wesnoth/subscriptions","organizations_url":"https://api.github.com/users/wesnoth/orgs","repos_url":"https://api.github.com/users/wesnoth/repos","events_url":"https://api.github.com/users/wesnoth/events{/privacy}","received_events_url":"https://api.github.com/users/wesnoth/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/wesnoth/wesnoth","description":"An open source, turn-based strategy game with a high fantasy theme. It features both singleplayer and online/hotseat multiplayer combat.","fork":false,"url":"https://api.github.com/repos/wesnoth/wesnoth","forks_url":"https://api.github.com/repos/wesnoth/wesnoth/forks","keys_url":"https://api.github.com/repos/wesnoth/wesnoth/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wesnoth/wesnoth/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wesnoth/wesnoth/teams","hooks_url":"https://api.github.com/repos/wesnoth/wesnoth/hooks","issue_events_url":"https://api.github.com/repos/wesnoth/wesnoth/issues/events{/number}","events_url":"https://api.github.com/repos/wesnoth/wesnoth/events","assignees_url":"https://api.github.com/repos/wesnoth/wesnoth/assignees{/user}","branches_url":"https://api.github.com/repos/wesnoth/wesnoth/branches{/branch}","tags_url":"https://api.github.com/repos/wesnoth/wesnoth/tags","blobs_url":"https://api.github.com/repos/wesnoth/wesnoth/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wesnoth/wesnoth/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wesnoth/wesnoth/git/refs{/sha}","trees_url":"https://api.github.com/repos/wesnoth/wesnoth/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wesnoth/wesnoth/statuses/{sha}","languages_url":"https://api.github.com/repos/wesnoth/wesnoth/languages","stargazers_url":"https://api.github.com/repos/wesnoth/wesnoth/stargazers","contributors_url":"https://api.github.com/repos/wesnoth/wesnoth/contributors","subscribers_url":"https://api.github.com/repos/wesnoth/wesnoth/subscribers","subscription_url":"https://api.github.com/repos/wesnoth/wesnoth/subscription","commits_url":"https://api.github.com/repos/wesnoth/wesnoth/commits{/sha}","git_commits_url":"https://api.github.com/repos/wesnoth/wesnoth/git/commits{/sha}","comments_url":"https://api.github.com/repos/wesnoth/wesnoth/comments{/number}","issue_comment_url":"https://api.github.com/repos/wesnoth/wesnoth/issues/comments{/number}","contents_url":"https://api.github.com/repos/wesnoth/wesnoth/contents/{+path}","compare_url":"https://api.github.com/repos/wesnoth/wesnoth/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wesnoth/wesnoth/merges","archive_url":"https://api.github.com/repos/wesnoth/wesnoth/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wesnoth/wesnoth/downloads","issues_url":"https://api.github.com/repos/wesnoth/wesnoth/issues{/number}","pulls_url":"https://api.github.com/repos/wesnoth/wesnoth/pulls{/number}","milestones_url":"https://api.github.com/repos/wesnoth/wesnoth/milestones{/number}","notifications_url":"https://api.github.com/repos/wesnoth/wesnoth/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wesnoth/wesnoth/labels{/name}","releases_url":"https://api.github.com/repos/wesnoth/wesnoth/releases{/id}","deployments_url":"https://api.github.com/repos/wesnoth/wesnoth/deployments","created_at":"2013-04-14T17:13:06Z","updated_at":"2018-02-27T17:22:37Z","pushed_at":"2018-02-27T20:42:43Z","git_url":"git://github.com/wesnoth/wesnoth.git","ssh_url":"git@github.com:wesnoth/wesnoth.git","clone_url":"https://github.com/wesnoth/wesnoth.git","svn_url":"https://github.com/wesnoth/wesnoth","homepage":"https://www.wesnoth.org/","size":2503340,"stargazers_count":1416,"watchers_count":1416,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":415,"mirror_url":null,"archived":false,"open_issues_count":696,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":415,"open_issues":696,"watchers":1416,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/wesnoth/wesnoth/pulls/2562"},"html":{"href":"https://github.com/wesnoth/wesnoth/pull/2562"},"issue":{"href":"https://api.github.com/repos/wesnoth/wesnoth/issues/2562"},"comments":{"href":"https://api.github.com/repos/wesnoth/wesnoth/issues/2562/comments"},"review_comments":{"href":"https://api.github.com/repos/wesnoth/wesnoth/pulls/2562/comments"},"review_comment":{"href":"https://api.github.com/repos/wesnoth/wesnoth/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/wesnoth/wesnoth/pulls/2562/commits"},"statuses":{"href":"https://api.github.com/repos/wesnoth/wesnoth/statuses/f09691c27c4a7fb0632b380f468d86eda7b8eb58"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"CelticMinstrel"}}