diff --git a/data/avgi/windjammers.txt b/data/avgi/windjammers.txt index bb40930c2c86..88aa8c932d5f 100644 --- a/data/avgi/windjammers.txt +++ b/data/avgi/windjammers.txt @@ -146,7 +146,7 @@ ship "Windjammer" thumbnail "ship/windjammer" "uncapturable" attributes - category "Space Liner" + category "Unclassified" "cost" 1111000 "hull" 6900 "required crew" 1 @@ -182,112 +182,112 @@ ship "Windjammer" "Jamfruit" 60 gun 0 -84.5 "Pinecone Launcher" - bay Fighter -14.5 -125 + bay "Unclassified Minor" -14.5 -125 under "launch effect" "basic launch" - bay Fighter 14.5 -125 + bay "Unclassified Minor" 14.5 -125 under "launch effect" "basic launch" - bay Fighter -32 -126 + bay "Unclassified Minor" -32 -126 under "launch effect" "basic launch" - bay Fighter 32 -126 + bay "Unclassified Minor" 32 -126 under "launch effect" "basic launch" - bay Fighter -49 -128 + bay "Unclassified Minor" -49 -128 under "launch effect" "basic launch" - bay Fighter 49 -128 + bay "Unclassified Minor" 49 -128 under "launch effect" "basic launch" - bay Fighter -91.5 -190.5 + bay "Unclassified Minor" -91.5 -190.5 under "launch effect" "basic launch" - bay Fighter 91.5 -190.5 + bay "Unclassified Minor" 91.5 -190.5 under "launch effect" "basic launch" - bay Fighter -106 -201.5 + bay "Unclassified Minor" -106 -201.5 under "launch effect" "basic launch" - bay Fighter 106 -201.5 + bay "Unclassified Minor" 106 -201.5 under "launch effect" "basic launch" - bay Fighter -123 -205.5 + bay "Unclassified Minor" -123 -205.5 under "launch effect" "basic launch" - bay Fighter 123 -205.5 + bay "Unclassified Minor" 123 -205.5 under "launch effect" "basic launch" - bay Fighter -141 -201 + bay "Unclassified Minor" -141 -201 under "launch effect" "basic launch" - bay Fighter 141 -201 + bay "Unclassified Minor" 141 -201 under "launch effect" "basic launch" - bay Fighter -156 -190.5 + bay "Unclassified Minor" -156 -190.5 under "launch effect" "basic launch" - bay Fighter 156 -190.5 + bay "Unclassified Minor" 156 -190.5 under "launch effect" "basic launch" - bay Fighter -164 -174 + bay "Unclassified Minor" -164 -174 under "launch effect" "basic launch" - bay Fighter 164 -174 + bay "Unclassified Minor" 164 -174 under "launch effect" "basic launch" - bay Fighter -163.5 -155 + bay "Unclassified Minor" -163.5 -155 under "launch effect" "basic launch" - bay Fighter 163.5 -155 + bay "Unclassified Minor" 163.5 -155 under "launch effect" "basic launch" - bay Fighter -156 -138.5 + bay "Unclassified Minor" -156 -138.5 under "launch effect" "basic launch" - bay Fighter 156 -138.5 + bay "Unclassified Minor" 156 -138.5 under "launch effect" "basic launch" - bay Fighter -141 -127.5 + bay "Unclassified Minor" -141 -127.5 under "launch effect" "basic launch" - bay Fighter 141 -127.5 + bay "Unclassified Minor" 141 -127.5 under "launch effect" "basic launch" - bay Fighter -121.5 -122 + bay "Unclassified Minor" -121.5 -122 under "launch effect" "basic launch" - bay Fighter 121.5 -122 + bay "Unclassified Minor" 121.5 -122 under "launch effect" "basic launch" - bay Fighter -104 -118 + bay "Unclassified Minor" -104 -118 under "launch effect" "basic launch" - bay Fighter 104 -118 + bay "Unclassified Minor" 104 -118 under "launch effect" "basic launch" - bay Fighter -86 -114.5 + bay "Unclassified Minor" -86 -114.5 under "launch effect" "basic launch" - bay Fighter 86 -114.5 + bay "Unclassified Minor" 86 -114.5 under "launch effect" "basic launch" - bay Fighter -68 -110.5 + bay "Unclassified Minor" -68 -110.5 under "launch effect" "basic launch" - bay Fighter 68 -110.5 + bay "Unclassified Minor" 68 -110.5 under "launch effect" "basic launch" - bay Fighter -24.5 -13 + bay "Unclassified Minor" -24.5 -13 under "launch effect" "basic launch" - bay Fighter 24.5 -13 + bay "Unclassified Minor" 24.5 -13 under "launch effect" "basic launch" - bay Fighter -24.5 5 + bay "Unclassified Minor" -24.5 5 under "launch effect" "basic launch" - bay Fighter 24.5 5 + bay "Unclassified Minor" 24.5 5 under "launch effect" "basic launch" @@ -302,7 +302,7 @@ ship "Bluejacket" thumbnail "ship/bluejacket" "uncapturable" attributes - category "Space Liner" + category "Unclassified" "cost" 1212100 "hull" 3200 "required crew" 1 @@ -338,76 +338,76 @@ ship "Bluejacket" "Jamfruit" 90 gun 0 -84.5 "Pinecone Launcher" - bay Fighter -14.5 -46 + bay "Unclassified Minor" -14.5 -46 under "launch effect" "basic launch" - bay Fighter 14.5 -46 + bay "Unclassified Minor" 14.5 -46 under "launch effect" "basic launch" - bay Fighter -32 -49 + bay "Unclassified Minor" -32 -49 under "launch effect" "basic launch" - bay Fighter 32 -49 + bay "Unclassified Minor" 32 -49 under "launch effect" "basic launch" - bay Fighter -49 -54.5 + bay "Unclassified Minor" -49 -54.5 under "launch effect" "basic launch" - bay Fighter 49 -54.5 + bay "Unclassified Minor" 49 -54.5 under "launch effect" "basic launch" - bay Fighter -65.5 -60 + bay "Unclassified Minor" -65.5 -60 under "launch effect" "basic launch" - bay Fighter 65.5 -60 + bay "Unclassified Minor" 65.5 -60 under "launch effect" "basic launch" - bay Fighter -82.5 -66.5 + bay "Unclassified Minor" -82.5 -66.5 under "launch effect" "basic launch" - bay Fighter 82.5 -66.5 + bay "Unclassified Minor" 82.5 -66.5 under "launch effect" "basic launch" - bay Fighter -99 -72 + bay "Unclassified Minor" -99 -72 under "launch effect" "basic launch" - bay Fighter 99 -72 + bay "Unclassified Minor" 99 -72 under "launch effect" "basic launch" - bay Fighter -118.5 -29 + bay "Unclassified Minor" -118.5 -29 under "launch effect" "basic launch" - bay Fighter 118.5 -29 + bay "Unclassified Minor" 118.5 -29 under "launch effect" "basic launch" - bay Fighter -119 -11 + bay "Unclassified Minor" -119 -11 under "launch effect" "basic launch" - bay Fighter 119 -11 + bay "Unclassified Minor" 119 -11 under "launch effect" "basic launch" - bay Fighter -110.5 5.5 + bay "Unclassified Minor" -110.5 5.5 under "launch effect" "basic launch" - bay Fighter 110.5 5.5 + bay "Unclassified Minor" 110.5 5.5 under "launch effect" "basic launch" - bay Fighter -94.5 16 + bay "Unclassified Minor" -94.5 16 under "launch effect" "basic launch" - bay Fighter 94.5 16 + bay "Unclassified Minor" 94.5 16 under "launch effect" "basic launch" - bay Fighter -76.5 19 + bay "Unclassified Minor" -76.5 19 under "launch effect" "basic launch" - bay Fighter 76.5 19 + bay "Unclassified Minor" 76.5 19 under "launch effect" "basic launch" - bay Fighter -55.5 17 + bay "Unclassified Minor" -55.5 17 under "launch effect" "basic launch" - bay Fighter 55.5 17 + bay "Unclassified Minor" 55.5 17 under "launch effect" "basic launch" @@ -422,7 +422,7 @@ ship "Pollen" sprite "ship/pollen" thumbnail "ship/pollen" attributes - category "Fighter" + category "Unclassified Minor" "cost" 126000 "hull" 200 "required crew" 1 @@ -455,7 +455,7 @@ ship "Sprout" thumbnail "ship/pollen" "uncapturable" attributes - category "Fighter" + category "Unclassified Minor" "cost" 126000 "hull" 200 "required crew" 1 diff --git a/data/categories.txt b/data/categories.txt index 92441274ae2b..829bd0e03da8 100644 --- a/data/categories.txt +++ b/data/categories.txt @@ -26,10 +26,10 @@ category "ship" "Superheavy" "Fighter" "Drone" + "Intrasolar" "Unclassified" "Unclassified Minor" "Game Mechanics" - "Intrasolar" # Ships of these types can be carried by other ships. diff --git a/data/drak/indigenous.txt b/data/drak/indigenous.txt index d8a9669011dc..163d7e1a0fad 100644 --- a/data/drak/indigenous.txt +++ b/data/drak/indigenous.txt @@ -128,7 +128,7 @@ ship "Void Sprite" "Void Sprite (Infant)" thumbnail "thumbnail/void sprite infant" "never disabled" attributes - category "Unclassified Minor" + category "Unclassified" "hull" 2800 "required crew" 2 "bunks" 2 diff --git a/data/human/free worlds 0 prologue.txt b/data/human/free worlds 0 prologue.txt index a969e02928b7..fee7b8800abe 100644 --- a/data/human/free worlds 0 prologue.txt +++ b/data/human/free worlds 0 prologue.txt @@ -2285,17 +2285,16 @@ mission "Defend Sabik" fighters names "republic fighter" variant - "Carrier" - "Lance" 8 - "Combat Drone" 6 - "Frigate" 2 - "Gunboat" 3 - "Rainmaker" 3 + "Cruiser" + "Combat Drone" 4 + "Frigate" + "Gunboat" 2 + "Rainmaker" npc evade government "Republic" personality heroic system "Kornephoros" - fleet 2 + fleet names "republic capital" fighters names "republic fighter" @@ -2335,7 +2334,7 @@ mission "Defend Sabik" "Falcon" "Osprey" 2 "Hawk" 3 - "Sparrow" 5 + "Sparrow" 4 npc government "Free Worlds" personality heroic disables @@ -2344,13 +2343,8 @@ mission "Defend Sabik" names "free worlds capital" variant "Bastion" 2 - "Argosy" 4 - "Fury" 6 - fleet - names "free worlds capital" - variant - "Bastion" 2 - "Argosy" 4 + "Argosy" 3 + "Fury" 2 npc government "Free Worlds" personality heroic disables @@ -2358,7 +2352,7 @@ mission "Defend Sabik" fleet names "free worlds capital" variant - "Falcon" 2 + "Falcon" npc government "Free Worlds" personality heroic waiting disables diff --git a/data/human/free worlds 1 start.txt b/data/human/free worlds 1 start.txt index a424afc5327d..c077f74164a5 100644 --- a/data/human/free worlds 1 start.txt +++ b/data/human/free worlds 1 start.txt @@ -53,7 +53,8 @@ mission "Liberate Kornephoros" names "free worlds capital" variant "Falcon" - "Osprey" 2 + "Osprey" + "Osprey (Missile)" npc government "Free Worlds" personality heroic disables @@ -61,6 +62,7 @@ mission "Liberate Kornephoros" fleet names "free worlds capital" variant + "Osprey" "Falcon (Heavy)" "Hawk" 2 fleet @@ -73,25 +75,20 @@ mission "Liberate Kornephoros" variant "Hawk (Rocket)" "Fury (Missile)" 2 - fleet - names "free worlds capital" - variant - "Osprey" - "Osprey (Missile)" fleet names "free worlds capital" variant "Falcon" - "Osprey" "Osprey (Laser)" - "Hawk" 3 - "Sparrow" 5 + "Hawk" + "Hawk (Rocket)" + "Sparrow" 3 fleet names "free worlds capital" variant "Bastion (Heavy)" 2 - "Argosy (Blaster)" 4 - "Fury" 6 + "Argosy (Blaster)" 3 + "Fury" 3 npc evade government "Republic" personality staying heroic @@ -103,7 +100,6 @@ mission "Liberate Kornephoros" variant "Cruiser (Heavy)" 2 "Combat Drone" 8 - "Frigate" 2 "Rainmaker" 2 fleet names "republic capital" @@ -112,18 +108,16 @@ mission "Liberate Kornephoros" variant "Cruiser (Heavy)" "Combat Drone" 4 - "Frigate" 2 + "Frigate" "Gunboat" 2 fleet names "republic capital" fighters names "republic fighter" variant - "Cruiser (Heavy)" - "Combat Drone" 4 "Gunboat" 2 - "Frigate" 2 - "Rainmaker" 2 + "Frigate" + "Rainmaker" on visit dialog `There are still Navy ships patrolling overhead. Staying on while your allies are dying in orbit would be a very bad idea.` @@ -1315,7 +1309,7 @@ mission "FW Pirates: Attack 2" on offer conversation - `When you land on , you find the fleet that Tomek mentioned: a few militia heavy and medium warships, a couple of carriers, three squadrons of interceptors, and even four merchant ships of varying sizes. In total the fleet is nearly as large as one of the fleets that defended Sabik or Kornephoros, but as you survey the motley mix of grizzled militia veterans, young, naive interceptor pilots, and eager merchant captains, you can't help but wonder if a fleet of this size has a good chance against the strongest pirate world in Southern space.` + `When you land on , you find the fleet that Tomek mentioned: a few militia heavy and medium warships, a carrier, three squadrons of interceptors, and even four merchant ships of varying sizes. In total the fleet is nearly as large as one of the fleets that defended Sabik or Kornephoros, but as you survey the motley mix of grizzled militia veterans, young, naive interceptor pilots, and eager merchant captains, you can't help but wonder if a fleet of this size has a good chance against the strongest pirate world in Southern space.` ` The Navy failed to conquer Longjump. Why would a fleet of a similar size be capable of conquering Greenrock? Perhaps the Senate was right in suggesting a diplomatic solution. Or perhaps luck will be in your favor.` choice ` (Go ahead and attack Greenrock, disobeying the Senate's orders regardless of the consequences.)` @@ -1334,27 +1328,20 @@ mission "FW Pirates: Attack 2" fleet names "free worlds capital" variant - "Falcon (Laser)" 2 + "Falcon (Laser)" "Bastion (Laser)" fleet names "free worlds capital" variant - "Falcon (Laser)" - "Bastion (Heavy)" "Osprey" - fleet - names "free worlds capital" - variant - "Osprey (Laser)" - "Osprey (Missile)" 2 + "Osprey (Missile)" fleet names "free worlds capital" fighters names "free worlds fighters" variant "Skein" - "Roost" - "Finch" 10 + "Finch" 6 fleet names "free worlds small" variant @@ -1366,7 +1353,7 @@ mission "FW Pirates: Attack 2" names "free worlds small" variant "Fury (Missile)" 2 - "Fury (Bomber)" 2 + "Fury (Bomber)" fleet names "free worlds small" variant @@ -1377,7 +1364,7 @@ mission "FW Pirates: Attack 2" fleet names "civilian" variant - "Leviathan" + "Firebird" "Behemoth" "Modified Argosy" "Clipper (Speedy)" @@ -1391,53 +1378,43 @@ mission "FW Pirates: Attack 2" variant "Falcon (Heavy)" "Clipper (Heavy)" - fleet - government "Pirate" - names "pirate" - variant - "Bastion" "Modified Argosy" fleet government "Pirate" names "pirate" variant - "Sparrow (Gatling)" 5 - fleet - government "Pirate" - names "pirate" - variant - "Protector (Proton)" - "Headhunter (Particle)" + "Bastion" + "Modified Argosy" 2 fleet government "Pirate" names "pirate" variant - "Splinter (Proton)" 2 - "Quicksilver (Proton)" + "Bastion" + "Sparrow (Gatling)" 3 fleet government "Pirate" names "pirate" variant - "Vanguard (Particle)" + "Splinter (Proton)" fleet government "Pirate" names "pirate" variant "Firebird (Plasma)" "Corvette (Speedy)" + "Scout (Speedy)" fleet government "Pirate" names "pirate" variant - "Raven (Afterburner)" 2 - "Scout (Speedy)" + "Hawk" + "Hawk (Rocket)" fleet government "Pirate" names "pirate" variant - "Aerie" 2 "Mule (Heavy)" - "Dagger" 9 + "Dagger" on visit dialog `You've landed on , but there are still pirates defending the system. All pirates in the system must be eliminated before can be taken.` @@ -1773,34 +1750,56 @@ mission "FW Early Warning 1" government "Republic" personality staying heroic system "Wei" - fleet "Small Republic" 2 + fleet + names "republic capital" + variant + "Frigate" + "Gunboat" 3 + "Rainmaker" npc government "Republic" personality staying heroic system "Seginus" - fleet "Large Republic" - fleet "Small Republic" + fleet + names "republic capital" + variant + "Frigate" 2 + "Gunboat" 2 + "Rainmaker" fleet names "republic capital" variant "Protector (Quad Blaster)" - "Protector" npc government "Republic" personality staying heroic system "Alphecca" - fleet "Large Republic" 2 - fleet "Small Republic" 2 + fleet + names "republic capital" + variant + "Frigate" 2 + "Gunboat" 2 + "Rainmaker" + fleet + names "republic capital" + variant + "Frigate" + "Gunboat" 2 + npc government "Republic" personality staying heroic system "Alioth" - fleet "Large Republic" - fleet "Small Republic" 2 + fleet + names "republic capital" + variant + "Gunboat" + "Rainmaker" 2 fleet names "republic capital" variant "Protector (Quad Blaster)" + "Protector" on visit dialog phrase "generic waypoint on visit" @@ -1987,7 +1986,7 @@ mission "FW Early Warning 4" names "free worlds capital" variant "Falcon" - "Osprey" 2 + "Osprey" fleet names "free worlds capital" variant @@ -2005,16 +2004,15 @@ mission "FW Early Warning 4" names "free worlds capital" variant "Falcon" - "Osprey" "Osprey (Laser)" "Hawk" 3 "Sparrow" 5 fleet names "free worlds capital" variant - "Bastion (Heavy)" 2 - "Argosy (Blaster)" 4 - "Fury" 6 + "Bastion (Heavy)" + "Argosy (Blaster)" 3 + "Fury" 4 npc government "Free Worlds" personality heroic disables entering escort @@ -2044,19 +2042,19 @@ mission "FW Early Warning 4" variant "Cruiser (Heavy)" 2 "Combat Drone" 8 - "Frigate" 2 + "Frigate" "Rainmaker" 2 fleet names "republic capital" variant - "Protector (Quad Blaster)" 2 + "Protector (Quad Blaster)" "Frigate" 2 "Gunboat" fleet names "republic capital" variant "Protector (Quad Blaster)" 2 - "Frigate" 2 + "Frigate" "Rainmaker" 2 on visit diff --git a/data/human/free worlds 2 middle.txt b/data/human/free worlds 2 middle.txt index aa03020a2034..6d6371476e33 100644 --- a/data/human/free worlds 2 middle.txt +++ b/data/human/free worlds 2 middle.txt @@ -483,7 +483,7 @@ mission "FW Southern Battle 2" system Rastaban personality heroic uninterested staying government "Republic" - fleet 2 + fleet names "republic capital" fighters names "republic fighter" @@ -1914,6 +1914,7 @@ mission "FW Rand 1" npc government "Free Worlds" personality heroic disables escort + ship "Dreadnought" "F.S. Jean Bart" ship "Dreadnought" "F.S. Elder" ship "Falcon (Plasma)" "F.S. Reliant" ship "Falcon (Heavy)" "F.S. Bismark" @@ -2314,7 +2315,7 @@ mission "FW Liberate Delta Sagittarii" "Carrier (Mark II)" "Lance" 8 "Combat Drone" 6 - "Gunboat (Mark II)" 4 + "Gunboat (Mark II)" 3 fleet names "republic capital" fighters @@ -2322,7 +2323,7 @@ mission "FW Liberate Delta Sagittarii" variant "Cruiser (Mark II)" "Combat Drone" 4 - "Rainmaker (Mark II)" 4 + "Rainmaker (Mark II)" 2 npc personality staying derelict diff --git a/data/human/free worlds 3 checkmate.txt b/data/human/free worlds 3 checkmate.txt index 51064850aac3..80c83e4c8ab6 100644 --- a/data/human/free worlds 3 checkmate.txt +++ b/data/human/free worlds 3 checkmate.txt @@ -41,8 +41,21 @@ mission "FWC Scouting 1" personality staying heroic system "Kaus Borealis" government "Republic" - fleet "Large Republic" 5 - + fleet 2 + names "republic capital" + fighters + names "republic fighter" + variant + "Carrier (Mark II)" + "Lance" 8 + "Combat Drone" 6 + fleet 3 + names "republic capital" + fighters + names "republic fighter" + variant + "Cruiser (Mark II)" + "Combat Drone" 4 mission "FWC Attack Kaus Borealis" @@ -222,9 +235,8 @@ mission "FWC Cebalrai 1" fighters names "republic fighter" variant - "Carrier (Mark II)" - "Lance" 8 - "Combat Drone" 6 + "Cruiser (Mark II)" + "Combat Drone" 4 "Gunboat (Mark II)" 2 @@ -313,7 +325,7 @@ mission "FWC Cebalrai 1B" variant "Cruiser" "Combat Drone" 4 - "Frigate" 2 + "Frigate" @@ -736,7 +748,7 @@ mission "FWC Checkmate 1" "Carrier (Mark II)" "Lance" 8 "Combat Drone" 6 - fleet 2 + fleet names "republic capital" fighters names "republic fighter" @@ -766,7 +778,7 @@ mission "FWC Checkmate 1" npc personality heroic - system Pherkad + system Alniyat government "Free Worlds" fleet names "free worlds capital" diff --git a/data/human/variants.txt b/data/human/variants.txt index 72b5b9b5d3d2..6628a6574347 100644 --- a/data/human/variants.txt +++ b/data/human/variants.txt @@ -1043,7 +1043,6 @@ ship "Carrier" "Carrier (Mark II)" "D94-YV Shield Generator" 2 "Large Radar Jammer" "Liquid Helium Cooler" - "Outfits Expansion" 4 "Brig" "Laser Rifle" 45 "Fragmentation Grenades" 45 diff --git a/data/incipias/tace mesa.txt b/data/incipias/tace mesa.txt index 908683e2d29b..56edc8b745c6 100644 --- a/data/incipias/tace mesa.txt +++ b/data/incipias/tace mesa.txt @@ -47,7 +47,7 @@ ship "Tace Mesa" swizzle 0 "never disabled" attributes - category "Interceptor" + category "Unclassified" cost 500000 "mass" 525 "outfit space" 45 diff --git a/data/vyrmeid/vyrmeid.txt b/data/vyrmeid/vyrmeid.txt index 7d425f5cd25a..bda2eef5a323 100644 --- a/data/vyrmeid/vyrmeid.txt +++ b/data/vyrmeid/vyrmeid.txt @@ -20,7 +20,7 @@ ship "Vyrmeid" swizzle 0 "never disabled" attributes - category "Fighter" + "category" "Unclassified Minor" "cost" 0 "shields" 0 "hull" 400 @@ -78,7 +78,7 @@ ship "Vyrmeid" "Vyrmeid (B)" swizzle 0 "never disabled" attributes - category "Fighter" + "category" "Unclassified Minor" "cost" 0 "shields" 0 "hull" 1420 @@ -130,7 +130,7 @@ ship "Vyrmeid" "Vyrmeid (C)" swizzle 0 "never disabled" attributes - category "Fighter" + category "Unclassified Minor" "cost" 0 "shields" 0 "hull" 860 @@ -185,7 +185,7 @@ ship "Astral Cetacean" swizzle 0 "never disabled" attributes - category "Transport" + category "Unclassified" "cost" 0 "shields" 0 "hull" 11000 diff --git a/data/whispering void/critters.txt b/data/whispering void/critters.txt index 584975149ec0..4fa901eeba1e 100644 --- a/data/whispering void/critters.txt +++ b/data/whispering void/critters.txt @@ -24,7 +24,7 @@ ship "Pincer Beast" sprite "ship/pincer beast" thumbnail "thumbnail/pincer beast" attributes - category "Light Freighter" + category "Unclassified" "hull" 14300 "self destruct" 1.0 "automaton" 1 diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index dd0d30252bb3..a79dfd17de4a 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -1,26 +1,59 @@ # Contributing to Endless Sky -## Posting issues +As a free and open source game, Endless Sky is the product of many people's work. Those who wish to contribute new content are encouraged to review the [wiki](https://github.com/endless-sky/endless-sky/wiki), and to post in the [community-run Discord](https://discord.gg/ZeuASSx) beforehand. There are also [discussion rooms](https://steamcommunity.com/app/404410/discussions/) for those who prefer to use Steam, or GitHub's [discussion zone](https://github.com/endless-sky/endless-sky/discussions). Our forums (especially the GitHub and Discord) have projects that could use your help developing artwork, storylines, and other writing. We also have a loosely defined [roadmap](https://github.com/endless-sky/endless-sky/wiki/DevelopmentRoadmap) that outlines what our current goals for game development are. + +We are always excited to welcome new contributors! Below are some guidelines and resources to help get involved. + +## Issues + +### Posting issues The [issues page](https://github.com/endless-sky/endless-sky/issues) on GitHub is for tracking bugs and feature requests. When posting a new issue, please: -* Check to make sure it's not a duplicate of an existing issue. +* Check to make sure it is not a duplicate of an existing issue. * Create a separate "issue" for each bug you are reporting and each feature you are requesting. -* Do not use the issues page for things other than bug reports and feature requests. Use the [discussions page](https://github.com/endless-sky/endless-sky/discussions) instead. +* Choose the correct issue template and fill it out to the best of your ability. +* Do not use the issues page for things other than what match the provided issue templates. Use the [discussions page](https://github.com/endless-sky/endless-sky/discussions) instead. Examples of what the discussion pages would be used for include topics that are not looking for a resolution (as the point of an issue is to have it be resolved) or topics that are extremely broad and not befitting of an issue because there is no single resolution to the topic. + +If requesting a new feature, first ask yourself: will this make the game more fun or interesting within the existing scope of the game? While features in other games may be fun or interesting, they may not fit Endless Sky. Be sure to check the game's [overall vision](https://github.com/endless-sky/endless-sky/wiki/Endless-Sky's-Vision) to get an idea of what our design values are. -If requesting a new feature, first ask yourself: will this make the game more fun or interesting? Remember that this is a game, not a simulator. Changes will not be made purely for the sake of realism, especially if they introduce needless complexity or aggravation. +### Closing issues -## Posting pull requests +If you believe your issue has been resolved, you can close the issue yourself. If your issue gets closed because a PR was merged, and you are not satisfied, please do not comment on the old issue. Open a new issue and explain the gap that you feel still needs to be addressed. + +## Pull requests + +### Posting pull requests If you are posting a pull request, please: +* Check if your pull request solves an existing issue. Note that just because an issue is open does not guarantee that it is something we will accept, as the number of issues we receive means that not all of them have been thoroughly discussed, and there may be open issues for features that we decide we do not want. * Do not combine multiple unrelated changes. * Check the diff and make sure the pull request does not contain unintended changes. * If changing the C++ code, follow the [coding standard](https://endless-sky.github.io/styleguide/styleguide.xml). -* When adding content that could impact the main game, keep in mind the guidelines from the [quality checklist](https://github.com/endless-sky/endless-sky/wiki/QualityChecklist) and [style goals](https://github.com/endless-sky/endless-sky/wiki/StyleGoals) documents. +* Fill out the pull request template to the best of your ability. GitHub's pull request template features are not as thorough as issue templates. You are able to delete the entire pull request template and put in whatever you want; please do not do this. The purpose of the pull request template is to help facilitate the review, approval, and merging of pull requests. +* If adding new content to the game (e.g. new ships, outfits, artwork, storylines, etc.) please take a look at the [Style Goals](https://github.com/endless-sky/endless-sky/wiki/StyleGoals) and [Quality Checklist](https://github.com/endless-sky/endless-sky/wiki/QualityChecklist) sections of our wiki to make sure that your content fits with Endless Sky's writing and art style. + +If proposing major changes to the game through your pull request, start by posting an issue or discussion and discussing the best way to implement it. Often the first strategy that occurs to you will not be the cleanest or most effective way to implement a new feature. + +Please keep in mind that **AI-generated/assisted content is forbidden** in Endless Sky development. + +### What to expect when opening a pull request + +Endless Sky is developed by a community of volunteers. We are a collection of people with various different interests and skill sets, so the type of pull request you open will influence who will be looking at it. + +All pull requests go through a review process before being merged. We have a group of dedicated Reviewers who help provide reviews to pull requests as they come in. We also have a group of Developers who make determinations on what does and does not get merged, and are the ones with the permissions to merge pull requests. + +* For smaller pull requests, such as typo fixes, it may only require a Developer seeing your pull request in order for it to be merged. +* Larger pull requests typically receive reviews from multiple Reviewers and Developers before they are merged. That, in addition to the current backlog of open pull requests, can result in the full review process taking a number of months before a larger pull request may be merged. We ask for your patience while your pull request undergoes the review process. We also ask that large content pull requests (for example, pull requests that introduce a new faction or large storyline/campaign) be discussed in a [discussion post](https://github.com/endless-sky/endless-sky/discussions) or on the game's [Discord server](https://discord.gg/ZeuASSx). This is so other contributors get a chance to review your writing when it is still in the planning stages, and prevent conflicts with other planned storylines or with existing lore. We would like to avoid situations where someone puts in a lot of effort into writing a new campaign or faction, only to be told that it requires fundamental changes once they've submitted a pull request. It is much easier to make conceptual changes to a story when it is not yet finalized and written. + +The type of pull request you open will also influence when it is eligible to be merged. We release updates alternating between "stable" and "unstable" versions. + +* During the development of an unstable release, any type of pull request is up for merging. Unstable releases are typically developed over the course of three to four months and with odd version numbers (e.g. v0.10.1). +* During the development of a stable release, we typically only accept bug fixes and minor content tweaks. Stable releases are typically developed over the course of two to six weeks and with even version numbers (e.g. v0.10.2). -If proposing a major pull request, start by posting an issue and discussing the best way to implement it. Often the first strategy that occurs to you will not be the cleanest or most effective way to implement a new feature. +If you have opened a new feature pull request during a stable release development cycle, it is unlikely to be merged until the stable release is finished. Similarly, if you open a large pull request toward the end of an unstable release, it will likely have to wait until the next unstable release development cycle has begun before people will begin reviewing it and it has a chance to be merged. This is because the time it would take to appropriately review the pull request is longer than the time until the next release, and Developers and Reviewers near the end of a release cycle are often focused on a priority list determined in advance closer to the release date. -## Closing issues +### Reviewing a pull request -If you believe your issue has been resolved, you can close the issue yourself. If your issue gets closed because a PR was merged, and you are not satisfied, please open a new issue. +Reviewing pull requests is an important part of maintaining Endless Sky and the main way that new content is added to the game. Your feedback helps contributors improve their work and ensures that new content is the best it can be. For more information, see the [wiki page](https://github.com/endless-sky/endless-sky/wiki/ReviewingPRs). diff --git a/utils/check_code_style.py b/utils/check_code_style.py old mode 100644 new mode 100755