Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NPC scan and surveillance personality behavior changes #9714

Merged
merged 1 commit into from
Mar 7, 2024

Conversation

Amazinite
Copy link
Collaborator

@Amazinite Amazinite commented Jan 23, 2024

Feature

This PR addresses the issues with NPC scanning behavior noted by #9706, #4723, and #4240.

Summary

With this PR, ships with cargo and outfit scanners now behave as follows:

  • All ships with scanners:
    • Will not scan ships that have already been scanned by another ship in their government. (New)
      • This was previously always the case for non-surveillance ships, but is now also the case for surveillance ships, which would scan any ship they haven't scanned regardless of whether an ally has.
    • Will prefer to scan the closest target to them when finding a new target. (Unchanged)
    • Will prefer to continue scanning targets they have already started scanning. (Unchanged)
    • Will give up on scanning their target if an addition 1 minute has elapsed past their base search timer. (New)
  • Only non-surveillance ships:
    • Will make up to 6 successful scan before deciding to do something else. (New)
      • A successful scan is when either a cargo or an outfit scan completes. This means that a ship with both types of scanners that finishes both scans for every ship it scans will only scan 3 ships.
    • Will only search for scan targets for up to 2.5 minutes. (New)
    • Will give up on scanning their target if the target escapes beyond 2 times their scan range. (New)
    • Will only decide to start chasing and scanning a target if it is within 2 times their scan range. (New)
  • Only surveillance ships:
    • Won't assist you when you hail them. (Unchanged)
    • Will make up to 12 successful scans before deciding to do something else. (New)
    • Will only search for scan targets for up to 5 minutes. (New)
    • Won't give up on scanning their target based on its distance. (Will still give up if their timer has elapsed.) (New)
    • If there is a ship within 2 times their scan range that they are able to scan, they will always prefer to scan the ship. (New)
    • If there are no ships within 2 times their scan range, they will randomly choose between "scanning" a stellar object in the system (if the ship has the "atmosphere scan" attribute), leaving the system, or choosing a ship in the system regardless of its distance to target and scan. (New)
      • Previously, surveillance ships would always prioritize scanning ships if there were any ships in the system to scan before deciding to scan nearby stellar objects or leave the system. (The way DoSurveillance was set up made it seem like the intention was for surveillance ships to sometimes decide to leave the system instead of scanning every single ship, but in practice they would always have found a target before DoSurveillance is called and so track down that target for so long as there were available targets in the system.)

What this means is the following:

  • You will no longer get incessantly scanned by NPCs without end.
  • NPCs with scanners will no longer continually build up in systems with high spawn rates.
  • You can now escape/avoid ships with scanners by keeping your distance from them instead of only being able to either accept the scan or leave the system quicker than they can scan you.

Overall, not only should this result in less annoying behavior from scanning NPCs, but it should also make it so that running illegal goods is more viable given that you won't be scanned multiple times in the same system and you can avoid scanning ships from even targeting you by keeping your distance (which can make large arrival distance systems great places to run through).

Testing Done + Screenshots.

Idled in Sol with a vanilla version of the game and with this PR. In vanilla, the number of Gunboats in the system quickly increased and remained high.
image
With this PR, it's still possible for a large number of Gunboats to be in the system at the same time, but unlike vanilla, they eventually start leaving to do other things. Most of the time there are only a few Gunboats flying around.
image

Repeated the same experiment in Heia Due, where Hai surveillance personality fleets can spawn. In vanilla, I was scanned multiple times by multiple ships.
image
With this PR, I was scanned once and then never again.
image

Performance Impact

N/A

Side note

I'm pretty sure we're overusing the surveillance personality. A ship does not need the surveillance personality in order to scan other ships. All it needs is an outfit or cargo scanner and no hostiles in the system to distract it. The surveillance personality was always a way to make such ships more aggressive in their scanning, hence them scanning every ship personally instead of not scanning ships their government has already scanned. I've maintained the more aggressive scanning behavior of the surveillance personality by giving them a higher threshold for how many ships they can scan, for how long, and how they choose their scan targets, but we may still want to reevaluate the fleets we have given the surveillance personality.

Potential tweaks to these changes

While working on this, I figured that the reason that surveillance ships would scan a ship even if their government already scanned it was to give a sense of overbearingness to the surveillance ships, a sense that I feel is now lost with this PR.

This idea does seem to fit well with the Navy surveillance fleets; surveillance fleets only begin spawning after Geminus and Martini are bombed, and are primarily deployed around the Free Worlds. It makes sense that the Navy would be scanning every ship they can multiple times, as it is possible that the first scan may have missed something. It's also not as if there's a cost to scanning, so the Navy might as well do it as much as they can. And from the Free Worlds perspective, it simply reinforces their distaste for the Republic; even if they don't have issues with the Navy by itself, they understand that the Navy takes orders from the Republic, and that it could be the Republic commanding the Navy to be so liberal with their scanning.

More generally, if the purpose of the surveillance personality is to make smuggling goods more difficult, it's possible to have something like interference plating block the first scan, so it would make sense for surveillance fleets to make multiple scans if they're expecting their scan targets to have interference plating.

If we want to keep this idea of surveillance fleets being overbearing in their scans, there's likely a middle ground between the current "scan every ship as many times times as you can" and this PR's "only scan each ship once per day." Thoughts on making it so that surveillance fleets will still generally avoid scanning ships that have already been scanned by their government, but add a random chance in to ignore the fact that a ship was already scanned and scan it again?

Even if we added this back in, surveillance ships will still each individually only be able to make so many scans and spend so much time scanning before deciding to do something else. It's just that instead of having every single surveillance ship that spawns scan you, the first one would scan you and then maybe every tenth one after that would decide to scan you again.

@Amazinite Amazinite added balance A ship or weapon that seems too powerful or useless, or a mission that seems too easy or hard mechanics Things dealing with the mechanics & code of how the game works labels Jan 23, 2024
@Hecter94
Copy link
Member

If we want to keep this idea of surveillance fleets being overbearing in their scans, there's likely a middle ground between the current "scan every ship as many times as you can" and this PR's "only scan each ship once per day." Thoughts on making it so that surveillance fleets will still generally avoid scanning ships that have already been scanned by their government, but add a random chance in to ignore the fact that a ship was already scanned and scan it again?

Couldn't we tweak how NPCs scanning a player ship are displayed? If the concern here isn't how much your ships are being scanned and just annoyance at the scanning SFX, then reduce the scanning SFX.

If you're not carrying any illegal cargo, don't show any indication that your ship is being scanned. Or only show it at most, once every (x) seconds.
However, if you're carrying illegal cargo, you probably care about every scan. You are unlikely to get annoyed by it since it's important information to be aware of.

A different scanning sound or a different indicator would probably help a lot as well, like if you aren't carrying any illegal cargo, just play a short ding when an NPC completes a scan of your ship instead of the full scanning indicator we get now.
So, if you're not doing anything illegal, you're still aware that you're being scanned a lot because of the periodic dings of completed scans, but it's not constant overbearing noise.

@alexrovw
Copy link
Contributor

  • All ships with scanners:
    • Will not scan ships that have already been scanned by another ship in their government. (New)

Have you checked the impact of this change on the difficulty level of mission "FW Katya 3" for new players? Surveillance drones can be pretty fast, and if only one approaches you per system, then it might be tough to isolate it from its Cruiser.

@Hurleveur
Copy link
Member

They actually scan you? why didnt I notice that
You can just wait for them in ambush at a gas giant for a free drone, works every time
I wish they'd hint at that in the mission itself, but mb they do and I dont remember

@Amazinite
Copy link
Collaborator Author

Amazinite commented Jan 23, 2024

Have you checked the impact of this change on the difficulty level of mission "FW Katya 3" for new players? Surveillance drones can be pretty fast, and if only one approaches you per system, then it might be tough to isolate it from its Cruiser.

Surveillance Cruisers will still dump their drones in the system before leaving the system, and surveillance drones can still randomly choose to scan planets in the system since they have the atmosphere scan attribute, so it's still possible to get a surveillance drone away from other Navy ships in the system, they just won't go immediately for you before deciding to do something else.

@ThrawnCA
Copy link
Contributor

Have you checked the impact of this change on the difficulty level of mission "FW Katya 3" for new players? Surveillance drones can be pretty fast, and if only one approaches you per system, then it might be tough to isolate it from its Cruiser.

There's no time limit on that mission, though, and no danger if you have no drones to attack. So it's not necessarily a big problem if the player has to keep trying for longer.

@LepRyot
Copy link
Contributor

LepRyot commented Jan 24, 2024

Mildy unrelated but @Amazinite how do you view the in game message log like that?

@bene-dictator
Copy link
Member

The functionality was added in PR 9246.

Default is /

Copy link
Member

@Hurleveur Hurleveur left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good, I tested this in remnant space and it seemed to be working pretty well
I do have a few notes about how the code looks, however, but its nothing that absolutely needs changing

source/AI.cpp Show resolved Hide resolved
source/AI.cpp Show resolved Hide resolved
source/AI.cpp Show resolved Hide resolved
source/AI.cpp Show resolved Hide resolved
source/AI.cpp Show resolved Hide resolved
Copy link
Member

@Hurleveur Hurleveur left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me code wise, and it worked fine when I tested it. We could mb merge both function in a namespace one or smth but its not required and might break stuff

This reminds me we could use a way to not scan all ally govs but that should be for another PR.

@Amazinite Amazinite merged commit 575546e into endless-sky:master Mar 7, 2024
21 checks passed
@Amazinite Amazinite deleted the scan-ai-updates branch March 7, 2024 07:26
Zitchas added a commit to Zitchas/endless-sky that referenced this pull request May 18, 2024
* feat(enhancement): Allow ships to define their center of rotation (endless-sky#9423)

* feat(balance) Nerf Shield Refactor Module (endless-sky#9447)

* ci/cd: Run integration tests without OpenGL (endless-sky#9466)

* chore: Migrate to C++17 (endless-sky#8996)

Co-authored-by: quyykk <quyykk@protonmail.com>

* feat(ui): Added keyboard navigation to the preference and plugin panels (endless-sky#9581)

* fix(ui): Better switching from mouse to keyboard navigation in plugins menu (endless-sky#9610)

* feat(artwork): Unique projectile & hit effect for Ionic Turret (endless-sky#9596)

* feat(enhancement): NPCs can be given a "restricted" personality to follow their government travel restrictions (endless-sky#9412)

* refactor: Resolve some C++17 todo items (endless-sky#9613)

* ci: Make the integration tests a bit more deterministic (endless-sky#9546)

* ci: Use C++ instead of the test_parse scripts (endless-sky#9449)

* refactor: Rename confusingly named variables in Engine (endless-sky#9522)

* feat(mechanics): Make escorts only pathfind through systems that the player has visited (endless-sky#6127)

* fix(build): Fix compilation error on SDL before v2.0.22 (endless-sky#9609)

* fix(typo): Correct grammar around payment replacements (endless-sky#9619)

* feat(ui): Shop keyboard navigation remembers selected column when moving between differently sized rows (endless-sky#9617)

* fix(typo): Typo in "Pookie, Part 3" (endless-sky#9625)

* ci: Don't cancel commits to the main branch (endless-sky#9618)

* ci: Allow and run integration tests on every platform (endless-sky#9607)

* feat(enhancement): New minable payload attributes and prospecting weapons (endless-sky#9397)

* fix(typo): Fix uses of "v" vs "w" in Skadenga + some other tweaks (endless-sky#9622)

Ser -> Captain
`<destination>` -> `<stopovers>` in a mission dialog.

* feat(content): Insert joke about black box in Sheragi quest line (endless-sky#9589)

* feat(ui): Allow "u" and "e" to be used as "Buy/Sell All" shortcuts on the trading panel (endless-sky#9623)

* feat(content): A new set of bounty jobs where the bounty ship enters the source system (endless-sky#9532)

* fix(artwork): Adjust brightness of Core space on map sprite (endless-sky#9434)

* feat(content): Sell Typhoons from Lovelace Labs outfitters shortly after their release (endless-sky#9629)

* feat(enhancement): Create flotsam tractor beams (endless-sky#9398)

* fix(content): Fixed outdated event condition in FW Bloodsea missions (endless-sky#9636)

* feat(content): Diversify the Assisting Merchants boarding missions (endless-sky#9446)

* feat(enhancement): "Shrouded" systems that can't be seen unless in visible range (endless-sky#9396)

* feat(content): Add large Swiftsong Hai transport jobs (endless-sky#9575)

* feat(mechanics): Adjust scaling of scan times with increasing number of scanners (endless-sky#9552)

* feat(ui): Add scrolling to the plugins page for both the plugins list and the selected plugin description (endless-sky#9603)

* fix(mechanics): Consider rings entirely contained within a mask as colliding with it (endless-sky#9644)

Fixes a bug where flotsam could skip past the collection radius around the edge of a sprite and get stuck in the middle of it.

* fix(typo): Add missing punctuation in FW (endless-sky#9646)

* fix(content): Correctly account for whether the player attacked Greenrock in the FW campaign (endless-sky#9647)

* feat(content): Small wording tweaks in the intro missions (endless-sky#9649)

* fix(typo): Pluralize "drive" in mission text (endless-sky#9651)

* feat(content): Change how Sayari refers to humans when translating for the Wanderers (endless-sky#9654)

* fix(ui): Ensure that all steps of the player's travel plan are visible (endless-sky#9624)

* feat(enhancement): Allow projectiles to penetrate through ships, dealing damage multiple times (endless-sky#6276)

* feat(content): Add a carrier variant option for the Kestrel (endless-sky#9653)

* feat(content): Gegno Intro Content Adjustments (endless-sky#9652)

* fix(content): Coalition mission grammar/consistency changes (endless-sky#9633)

* feat(content): New mining-focused ships and outfits (endless-sky#9621)

* feat(content): Add a new pirate territory to the South, including new ships, outfits, and more (endless-sky#9597)

* fix(shader): Fix a shader compilation error that can occur on older OpenGL versions (endless-sky#9667)

* fix(content): Add a location filter to the "remnant cafeteria" news so that they can display (endless-sky#9666)

* fix(typo): Remove erroneous article (endless-sky#9664)

* fix(content): Change Lunarium rescue jobs distances to prevent location overlap (endless-sky#9660)

* refactor(ui): Convert ShopPanel to using the new ScrollVar for its scrolling panes (endless-sky#9645)

* feat(enhancement): Added a message log panel for reviewing past hails and status messages (endless-sky#9246)

* feat(content): You can now ask the Quarg about the Coalition after having joined the Heliarchs or Lunarium (endless-sky#9538)

* feat(content): Change the Ringworld Debris: Quarg conversation to be more vague about the Ringworld's fate (endless-sky#9672)

* fix(ui): Fix segmentation fault when opening the message log (endless-sky#9675)

* fix(typo): Fix various typos (endless-sky#9677)

* fix(ci): Output the reason why an integration test failed if it failed because of a segfault (endless-sky#9678)

* feat(content): Add missions where you transport a Hai film crew to Darkrest (endless-sky#9606)

* feat(content): Add a mission transporting a group of Hai college students to Darkrest (endless-sky#9601)

* feat(content): Add a mining tutorial mission to the Sparrow intro quest (endless-sky#9163)

* fix(typo): Gegno planet description improvements (endless-sky#9680)

* feat(enhancement): Add an action that can be triggered when encountering an NPC (endless-sky#9049)

* feat(input): Tie the state of the caps lock to the state of fast-forward if caps lock is used as the fast-forward key (endless-sky#9676)

* fix(content): Fix location filters for Hai Film Crew missions (endless-sky#9681)

* fix(typo): Fix typos in various missions (endless-sky#9683)

* fix(content): Disable the Gegno Intro if the player has not met the Quarg yet (endless-sky#9684)

* feat(ui): Add a tooltip for the message log key (endless-sky#9685)

* fix(content): Correctly restrict offering of the Hai wormhole warning mission if you've started the Hai Reveal storyline (endless-sky#9688)

* fix(mechanics): Always face the flight direction on takeoff (endless-sky#9687)

* fix(ui): Reset zoom modifier if "Landing zoom" setting is off (endless-sky#9686)

* feat(mechanics): Variants can now add licenses on top of a base model using a licenses node in "add attributes" (endless-sky#9682)

* fix(content): Mention all possible missing objectives in the on visit dialog of "Remnant: Void Sprites 3" (endless-sky#9694)

* fix(content): Add proper location attributes to Clink and Mutiny (endless-sky#9695)

* fix(content): Add missing Nest mining variant (endless-sky#9702)

* fix(typo): Convert various single quotes to double quotes and put punctuation inside quotations (endless-sky#9708)

* fix(segfault): Fix a segfault on losing your ship during boarding (endless-sky#9718)

* fix(mechanics): Only add variant licenses to the base attributes of the ship (endless-sky#9724)

* docs: v0.10.5 changelog (endless-sky#9668)

* docs: 0.10.5 credits and docs update (endless-sky#9725)

* fix: Steam workflow test parsing (endless-sky#9726)

Co-authored-by: M*C*O <mcofficer@gmx.de>

* chore: Update version numbers for 0.10.6-alpha (endless-sky#9727)

* fix(docs): Correctly update remaining version numbers for 0.10.6-alpha (endless-sky#9732)

* docs: Add "GOG" as an option for "Game source" in the bug report issue template (endless-sky#9730)

* feat(content): Reduce the spawn rate of Astral Cetaceans (endless-sky#9712)

* feat(content): Reduce size and spawn rate of Embersylph (endless-sky#9711)

* fix(content): Fix reference in 'First Contact: Gegno Vi' (endless-sky#9744)

* fix(typo): Missing spaces in boarding mission phrases(endless-sky#9736)

* feat(content): Edit descriptions for Hai stations (endless-sky#9698)

* fix(content): Give required crew to the Javelin and Gatling Turrets (endless-sky#9778)

* fix(content): Check correct conditions in Gemini Shipyards jobs (endless-sky#9798)

* fix(typo): Gemini -> Geminus (endless-sky#9800)

* feat(balance): Give Dreadnoughts back their fourth torpedo launcher (endless-sky#9795)

* fix(ui): Fix the padding between lines in the ship info display (endless-sky#9788)

* refactor: Remove unused ShopPanel::Search declaration (endless-sky#9784)

* feat(content): Mention abandoned Navy bases on planets during Checkmate (endless-sky#9782)

* feat(content): Make Lasher Pistols more defensive than offensive (endless-sky#9779)

* Docs: Rename feature request template (endless-sky#9775)

* feat(ui): Reset the scroll speed of the credits if it was previously set to 0 (endless-sky#9774)

* feat(content): Adding hails about dumping cargo for pirates (endless-sky#9758)

* fix(typo): Various typo fixes (endless-sky#9752)

* fix(content): Uninhabited systems & Kaus Borealis switch sides throughout the FW campaign (endless-sky#9748)

* fix(ui): Render animated sprites in the hail panel correctly (endless-sky#9767)

* fix(content): Add the ramming personality to the timer ship so that it doesn't avoid damaging itself (endless-sky#9751)

* fix(typo): Move apostrophe in Solifuge description (endless-sky#9807)

* fix(typo): Typos in Southern Fiance 2 and Gegno: First Contact (endless-sky#9808)

* fix(content): Remove second "on complete" in "Lunarium: Combat Training 2" (endless-sky#9816)

* fix(typo): Various typos and wording style changes (endless-sky#9812)

* fix(typo): Grammar adjustments in various Lunarium missions (endless-sky#9793)

* fix(ui): Add missing color definitions for message log colors (endless-sky#9831)

* fix(docs): Correct some copyright entry orders and file patterns (endless-sky#9731)

* List less specific file patterns in stanzas before more specific ones.
  * For example, 'images/land/*' is less specific than 'images/land/mars*' and so its stanza should be listed first.
* Replace some spaces in file patterns with '?' as file patterns cannot contain spaces.

* fix(ui): Correct message log colors (endless-sky#9836)

* feat(content): Add `lingering` to Gegno Protolith Fleet (endless-sky#9804)

* docs: 0.10.6 changelog and docs update (endless-sky#9803)

* fix(typo): Fix typo in changelog (endless-sky#9837)

* docs: 0.10.7 alpha versions (endless-sky#9839)

* chore(CI): Update Github Actions versions (endless-sky#9821)

* feat(CI): Stricter copyright checking (endless-sky#9750)

Certain warnings will now be considered to be errors.

* fix(CI): Fix edge case in code style checker (endless-sky#9789)

* feat(content): Give the harvest personality to Unfettered fleets (endless-sky#9810)

* feat(balance): Reduce the chances of finding Bactrians in random pirate fleet spawns by half (endless-sky#9699)

Also removed Bactrians from Hired Gun fleets and as a pirate job target.

* feat(enhancement): Autocondition for testing if you can land on a given planet (endless-sky#9716)

* fix(content): Earth day jobs no longer offer unless you can land on Earth (endless-sky#9715)

* feat(balance): Nerf the Unfettered medical jobs (endless-sky#9232)

* feat(UI): Include messages when hailing other ships in the message log (endless-sky#9787)

* fix(content): Make TMBR 3a dialogue choice order consistent (endless-sky#9806)

* refactor: Improve load panel tooltip timestamp generation (endless-sky#9773)

No longer make use of manual memory management.

* fix(typo): Add missing word in "Bounty Hunting (Small, Hidden)" (endless-sky#9845)

* feat(enhancement): Added a "fused" weapon tag that causes projectiles to explode at the end of their life (endless-sky#9822)

* feat(enhancement): Added tags that stop projectiles from colliding with different object types (endless-sky#9823)

* feat(ui): The shop now has tooltips for viewing your unabbreviated credits and the names of your ships without needing to select them (endless-sky#9825)

* fix: Don't consider "Parsing: <file>" output when in debug mode as errors when test parsing (endless-sky#9855)

* fix(crash): Fix game crash on short error messages (endless-sky#9869)

* feat(mechanics): Remove the forced-default disabled hails from Government (endless-sky#9866)

* feat(mechanics): Disabled hails are now sent passively (endless-sky#9858)

* feat(enhancement): Add a "quiet" personality that prevents passive hails but still allows direct hails (endless-sky#9857)

By contrast, mute blocks all hails with a ship.

* feat(content): Add a mission transporting a Hai to Unfettered space (endless-sky#9753)

* feat(content): add Unfettered-related Hai news (endless-sky#9756)

* feat(content): Add missions about Hogshead referencing Boaty McBoatface story (endless-sky#9770)

* fix(content): Add blocked message to Hai Film Crew 3 (endless-sky#9886)

* fix(content): Add missing indent, remove unnecessary labels and gotos to Mafia Extortion mission (endless-sky#9875)

* fix(ui): Don't draw name tooltips for ships hidden under the shop sidebar footer (endless-sky#9883)

* feat(content): Add Coalition culture conversations (endless-sky#9790)

* refactor: Style updates to Armament (endless-sky#9842)

* feat(content): Add new human merchant hails about mining asteroids (endless-sky#9769)

* fix(content): Fix overlapping stars in Umbral system (endless-sky#9889)

* feat(balance): Cut Wanderer sun reactor energy capacity in half + -20% energy generation on the biochemical cells (endless-sky#9743)

Wanderer sun reactor energy capacities were doubled back in 0.9.15. The Wanderer sun reactors were already dominant before their energy capacity was increased, and they have remained dominant due to not losing out as much relatively to the energy capacity buff that was given to other outfits. Reverting the energy capacity buff gives other reactors and battery outfits more breathing room.

In that same update, biochemical cells received a 10x energy capacity buff. This pushed them into the realm of being great batteries with some energy generation rather than a weak energy generator with some energy capacity, although the combined effect has ended up being a bit too strong. As such, reduced the energy generation by 20% as opposed to reverting part of the energy capacity buff to keep them in their niche while not being too overpowered.

* feat(AI): NPC scan and surveillance personality behavior changes (endless-sky#9714)

* fix(content): Fix attribute on Vyrmeid lifeform (endless-sky#9898)

* fix(ship): Variant ships correctly inherit display names from base ships (endless-sky#9897)

* fix(UI): Use singular "ship" in messages when recalling/deploying a single ship (endless-sky#9908)

* fix(docs): Fix errors in the copyright file (endless-sky#9853)

* fix(syntax): Rename variable to avoid ambiguity with std::queue in some versions of clang (endless-sky#9907)

* feat(ux): Hide unknown system names in the escort HUD (endless-sky#8816)

Escorts located in systems that the player hasn't visited don't leak the system name in the UX, and instead show "???" instead of the actual system name.

Co-authored-by: Amazinite <jsteck2000@gmail.com>
Co-authored-by: Nick <quyykk@protonmail.com>

* feat(ui): Allow multiple pages of controls (endless-sky#9913)

Also splits the interface control on a separate page to separate them from the gameplay controls.

* fix(ci): Don't check for leading/trailing spaces in substitutions defined in missions (endless-sky#9915)

* build(IDE): Support CodeBlocks no longer stand-alone, but only through CMake (endless-sky#8095)

* fix(content): Give Cruiser in "FWC Cebalrai 1B" Combat Drones instead of Lances (endless-sky#9919)

* fix(mechanics): Fix ship parenting on takeoff with fighter flagship (endless-sky#9905)

* feat(CI): Check copyright with a linter (endless-sky#9882)

* Refactor: General purpose TaskQueue instead of SpriteQueue. (endless-sky#6928)

Use a general purpose TaskQueue instead of SpriteQueue.

Co-authored-by: EjoThims <JEIPH@MAC.COM>
Co-authored-by: tibetiroka <68112292+tibetiroka@users.noreply.github.com>

* refactor(content): Refactor the Argosy Hijacking mission (endless-sky#9901)

* feat(ui): Conditions to word-form numbers in conversations (endless-sky#8798)

Allow converting conditions to word form numbers in conversations.

* feat(mechanics): Disabled fighters and drones will no longer be hit by stray projectiles (endless-sky#9760)

This greatly increases their odds of survival after being disabled.
Explosions will still damage them.

* feat(mechanics): Separate delayed and non-delayed shield generation and hull repair attributes (endless-sky#9771)

* feat(ui): A help message for managing multiple ships in the outfitter (endless-sky#9910)

* feat(content): Create more passenger jobs requiring keystones in Hai space (endless-sky#9872)

* fix(ui): Correctly handle arrow keys with no item selected in the shop (endless-sky#9929)

* feat(content): edits to Unfettered missions (endless-sky#9757)

* fix(content): Add new "CCOR Logistics" fleet for non-combat ships (endless-sky#9932)

* fix(ui): Align plugin checkbox clickzones correctly (endless-sky#9922)

* fix(mechanics): Fix mission distance calculations with different settings (endless-sky#9921)

* feat(content): Add more human news referring to Korath attacks in the Core (endless-sky#9928)

* fix(internal): Improvements to fix crashes when loading/unloading images (endless-sky#9941)

* fix: Fix custom port button name when using "add port" (endless-sky#9946)

* feat(content): Reworked the distribution of outfits in southern and pirate outfitters (endless-sky#9944)

* fix(content): Allow quantum keystone jobs to offer properly (endless-sky#9936)

* feat(UI): Added a preference to turn off the sobel filter on your flagship and target ship in the HUD (endless-sky#9942)

* fix(content): Update New China and Geyser to have outfitters and tribute fleets that match their region (endless-sky#9939)

* fix(copyright): Fix the attribution of various copyright entries (endless-sky#9900)

* feat(UI): Rotate interface images (endless-sky#9943)

* feat(balance): Cut the asteroid scanner's price in half (endless-sky#9947)

* feat(content): Conspiracy theorist spaceport news (endless-sky#9937)

* ci: Run CI workflows when their configuration file is changed (endless-sky#9945)

Modifying a CI workflow file now triggers every job inside of it. This is to make sure that any changes to the file are caught by CI instead of being skipped and requiring a separate (temp) change to trigger the jobs in question.

* feat(content): Add logbook entries for Alastair Korban (endless-sky#9938)

* fix(parsing): Corrected the parsing of the initial player rep grandchild node in Government (endless-sky#9954)

* feat(enhancement): Added a control for toggling the turret tracking setting (endless-sky#9916)

This control by default isn't mapped to anything, but is available for people to map if they wish to use it.

* fix(typo): Replace two mentions of "Burthensider" with "Burthenian" (endless-sky#9955)

* feat(content): Remove facilities from evacuated Wanderer worlds (endless-sky#9931)

* feat(enhancement): Allow boarding (repair or capture) ships with a fighter flagship (endless-sky#9741)

* fix(content): Remove duplicate Korath phrase (endless-sky#9962)

* fix(content): Clarify the description of the Far Osk 27 (endless-sky#9976)

* fix(content): Remove outfit scanning capabilities from Grey's person ship (endless-sky#9983)

* feat(balance): Reduce the requirements for unlocking the Kestrel the first time (endless-sky#9988)

* chore(docs): Fix typo in and add Hungarian language description to Unix metadata file (endless-sky#9990)

* fix(content): Block "Lunarium: Questions" from completing while assisting the Heliarchs (endless-sky#9985)

* fix(ui): Use "strftime" instead of "put_time" to correctly generate save file timestamps (endless-sky#9975)

* feat(content): Various improvements to human hails (endless-sky#9865)

- Adds three new civilian hails (two on zero-g cricket and one on the Quarg, derived from a previous hail).
- Adds one new variation on a Navy hail.
- Removes one hail but integrates its text into another hail set and adds some more to them (as those "in Soviet Russia"-type jokes were happening too often).
- Revises some other hails & cuts down on some truly absurd variations.
- Adds some new variation to a bunch of other hails.
- Adds new sets of pirate disabled hails and makes the pirate governments use those hails.

* fix(content): Reword Deep's description (endless-sky#9982)

* fix(copyright): List correct attributions for Unsplash images (endless-sky#9459)

* fix(ui): Draw distance to the selected system after mission markers (endless-sky#10003)

* fix(UI): Ships with "disables" personality ask for help disabling, instead of destroying, their enemies (endless-sky#10011)

* fix(typo): Fix various typos (endless-sky#10001)

* fix(typo): Correct indentation in "Ask Quarg About Coalition Late" (endless-sky#10012)

* fix(ui): Suppress missions require landing in the next system messages from failed missions (endless-sky#10014)

* Enhancement: conditional links (endless-sky#7987)

* fix: Remove outdated watchdog (endless-sky#10023)

Watchdogs are no longer used within tests; remove from recently merged test as well.

* fix(content): Add back instances of "ser" and explain what it means in the Skadenga and Stones of Our Fathers missions (endless-sky#9989)

* feat(content): Update the descriptions of two Sestor worlds after the factories are shut down (endless-sky#10016)

* feat(content): Add some additional mentions of how Tele'ek's Molt is progressing to the last few missions in Wanderers Middle (endless-sky#10005)

* fix(typo): Fix two typos (endless-sky#10019)

* feat(build): Link GLEW::glew instead of GLEW::GLEW in CMakeLists.txt (endless-sky#9978)

* feat(build): Simplify CMake build on Linux and MacOS (endless-sky#9950)

* fix(typo): Remove unnecessary speech mark (endless-sky#10029)

* feat(content): Add mention of the CCOR in a FW pirate recon mission (endless-sky#10006)

* feat(content): Outfitters near Earth and the Dirt Belt stock Kraz and Delta V after the war begins (endless-sky#10021)

* feat(content): remove pirates from Ildaria (endless-sky#9809)

* feat(content): A short set of missions involving the Wanderers and Mereti (endless-sky#9979)


Co-authored-by: bene_dictator <benstaples8068@gmail.com>
Co-authored-by: Lorenzo.BdO <81255699+LorenzoBolla@users.noreply.github.com>

* feat(content): More new human planets and stations, update Kraken Station landing image (endless-sky#9917)

* feat(content): Add new uninhabited landable planets to existing systems in Human space (endless-sky#9879)


Co-authored-by: bene_dictator <benstaples8068@gmail.com>
Co-authored-by: tibetiroka <68112292+tibetiroka@users.noreply.github.com>
Co-authored-by: ziproot <109186806+ziproot@users.noreply.github.com>
Co-authored-by: Amazinite <jsteck2000@gmail.com>

* feat(balance): Revert old human missile initial velocity changes + additional tweaks (endless-sky#9973)

* feat(balance): Reduced the Heavy Rocket's damage while increasing its blast radius (endless-sky#9912)

Reduces the damage dealt by heavy rockets from 1060/900 to 790/670, and increase their blast radius from 50 to 90. This is a drop of about 25% to damage, and an increase of 80% to blast radius.

The description of heavy rockets notes that they're primarily effective against groups of fighters, and this change leans further into that, making them more clearly distinct from the Torpedo, the premier anti-HW weapon for small ships.

* feat(content): Make the "Remnant: Cognizance 4" mission description more helpful (endless-sky#10017)


Co-authored-by: mOctave <73318970+mOctave@users.noreply.github.com>

* feat(balance): Tweak Marauder loadouts, including removing campaign unlocked outfits (endless-sky#9819)


Co-authored-by: Quantumshark <thedup.adg@gmail.com>

* fix(typo): Minor spelling in cognizance (hanger -> hangar) (endless-sky#10037)

* fix(content): make the <npc> substitution in Wanderers: Mereti: The Plant 5 point to the right npc (endless-sky#10036)

* feat(content): Changes to Pre-war Missions (endless-sky#9924)

* [Mechanic] Disabled Self-Repair (endless-sky#9846)

Co-authored-by: EjoThims <JEIPH@MAC.COM>

* feat(balance): Toned down the missile strength and turn rate of the Firelight (endless-sky#10038)

* fix(content): Don't offer the Terraforming missions at non-sensical times (endless-sky#10027)

* feat(balance): Give the Quicksilver +20 weapon capacity & a Capybara Reverse Thruster

* feat(content): Sell normal blaster weapons on pirate planets (endless-sky#10034)

* feat(enhancement): Game actions can now play music with a `music` node (endless-sky#10008)

* fix(content): Fixed an inconsistency in variable names used by Patir Mystery and Cognizance (endless-sky#10028)

* Feat(mechanics): Cloaking flexibility with additional attributes (endless-sky#7025)

Co-authored-by: EjoThims <JEIPH@MAC.COM>
Co-Authored-By: Nick <85879619+quyykk@users.noreply.github.com>
Co-authored-by: Peter van der Meer <peter.vd.meer@gmail.com>
Co-authored-by: TomGoodIdea <108272452+TomGoodIdea@users.noreply.github.com>
Co-authored-by: warp-core <warp-core@users.noreply.github.com>
Co-authored-by: Zitchas <32169904+Zitchas@users.noreply.github.com>

* fix(typo): "cloaking shield" -> "cloaking shields" (endless-sky#10047)

"cloaking shield" -> "cloaking shields"

* feat(content): Bringing a lost dog to its owner on Glory (endless-sky#9961)


Co-authored-by: bene_dictator <benstaples8068@gmail.com>

* fix(content): Syntax in Lost Dog missions (endless-sky#10050)

* feat(cloaking): Update some cloaking tooltips (endless-sky#10052)

* fix(content): Don't select Graffias as a target for Free Worlds "Scouting Run" jobs (endless-sky#10053)

* feat: Ability to limit turret firing arc (endless-sky#7094)

* Introduce a capability to limit the rotation of a turret.

Co-authored-by: Hurleveur <94366726+Hurleveur@users.noreply.github.com>
Co-authored-by: oo13 <ooyooxei+gh@gmail.com>
Co-authored-by: OOTA, Masato <ooyooxei+gh@gmail.com>
Co-authored-by: Rising Leaf <85687254+RisingLeaf@users.noreply.github.com>
Co-authored-by: tehhowch <tehhowch@users.noreply.github.com>
Co-authored-by: tibetiroka <68112292+tibetiroka@users.noreply.github.com>
Co-authored-by: TomGoodIdea <108272452+TomGoodIdea@users.noreply.github.com>

* feat(code): Ensuring label and line positions adapt to Weapons box positioning (endless-sky#10059)

Co-authored-by: Rising Leaf <85687254+RisingLeaf@users.noreply.github.com>

* feat(content): Core Pirate Ship Variants with Tractor Beams (endless-sky#9772)

* fix(mechanics): Properly check if a mission is failed (endless-sky#10015)

* feat(content): Prevent "Deep: Interrogation" from offering during the main campaign (endless-sky#10055)

* fix(content): "Remnant: Continue Research" no longer offers if you've completed the missions after it (endless-sky#10056)

* feat(ui): "Fancy" cloaked ship outlines (endless-sky#9642)

* feat(content): Various improvements to some pirate jobs (endless-sky#9740)

* "Drug Running" missions are now "infiltrating";
* Added (and used) generic aborted phrases for pirate slave jobs;
* Failing or aborting a pirate slave job causes a reduction in reputation with the "Pirate" government;
* Many jobs now have a minimum travel distance of 4, instead of 3, to prevent them from involving travelling between the Men system and a CCOR world, as this route does not involve any territory hostile to pirates. Affected jobs:
  * "Cargo Smuggling", "Bulk", and "Stealth (South)" variations,
  * "Drug Running", and "Stealth (South)" variation,
  * "Slave Transport", and "Bulk" variation,
  * "Escort Illegal Cargo" South variation, and
  * "Escort Stolen Vessel" South variation;
* The targets NPCs in "Eliminating Law Enforcement" jobs have been given the "marked" personality;
* Alphabetized the list of personalities for the target NPCs in "Eliminating Competition" jobs;
* Various jobs will only place NPCs in systems neighbored by a non-Pirate system. Affected jobs are:
  * "Eliminating Law Enforcement" Core and South variations,
  * "Raid on Merchants" North and South variations, and
  * "Cargo Theft (South)"; and
* Various jobs will only offer from systems neighbored by a non-Pirate system (that is, they will no longer offer from CCOR worlds). Affected jobs are:
  * "Eliminating Law Enforcement (South)",
  * "Southern Pirate Defense",
  * "Cargo Theft (South)", and
  * "FW Assassination".

* feat(content): Adjust Imo Dep Minables & Add Hai Mining fleets (endless-sky#10057)

* feat(content): Added derelict ships that can randomly spawn in some human systems (endless-sky#9039)

---------

Co-authored-by: Rising Leaf <85687254+RisingLeaf@users.noreply.github.com>
Co-authored-by: Arachi-Lover <82293490+Arachi-Lover@users.noreply.github.com>
Co-authored-by: Nick <quyykk@protonmail.com>
Co-authored-by: tibetiroka <68112292+tibetiroka@users.noreply.github.com>
Co-authored-by: Daniel <101683475+Koranir@users.noreply.github.com>
Co-authored-by: Hurleveur <94366726+Hurleveur@users.noreply.github.com>
Co-authored-by: mOctave <73318970+mOctave@users.noreply.github.com>
Co-authored-by: Alex Rov <98854112+alexrovw@users.noreply.github.com>
Co-authored-by: Amazinite <jsteck2000@gmail.com>
Co-authored-by: Ezra Alvarion <ezraalvarion71@gmail.com>
Co-authored-by: Quantumshark <thedup.adg@gmail.com>
Co-authored-by: Daeridanii1 <20879740+Daeridanii1@users.noreply.github.com>
Co-authored-by: roadrunner56 <65418682+roadrunner56@users.noreply.github.com>
Co-authored-by: Unordered Sigh <116329264+UnorderedSigh@users.noreply.github.com>
Co-authored-by: thewierdnut <9004013+thewierdnut@users.noreply.github.com>
Co-authored-by: bene_dictator <benstaples8068@gmail.com>
Co-authored-by: The-Legendary-M <130106565+The-Legendary-M@users.noreply.github.com>
Co-authored-by: Saugia <93169396+Saugia@users.noreply.github.com>
Co-authored-by: opusforlife2 <53176348+opusforlife2@users.noreply.github.com>
Co-authored-by: warp-core <warp-core@users.noreply.github.com>
Co-authored-by: LepRyot <88047246+LepRyot@users.noreply.github.com>
Co-authored-by: TomGoodIdea <108272452+TomGoodIdea@users.noreply.github.com>
Co-authored-by: williaji <70952724+williaji@users.noreply.github.com>
Co-authored-by: Timothy <tcollett+github@topazgryphon.org>
Co-authored-by: ThrawnCA <shell_layer-github@yahoo.com.au>
Co-authored-by: ziproot <109186806+ziproot@users.noreply.github.com>
Co-authored-by: M*C*O <mcofficer@gmx.de>
Co-authored-by: Max Horn <max@quendi.de>
Co-authored-by: Oversurge <42477777+AlexBassett@users.noreply.github.com>
Co-authored-by: neurotrope <137111201+neurotrope@users.noreply.github.com>
Co-authored-by: EjoThims <JEIPH@MAC.COM>
Co-authored-by: AvianGeneticist <64111606+AvianGeneticist@users.noreply.github.com>
Co-authored-by: xxxyyyqqq12345 <xxxyyyqqq12345@gmail.com>
Co-authored-by: Brendan Jones <16049594+brendanjones@users.noreply.github.com>
Co-authored-by: ovari <17465872+ovari@users.noreply.github.com>
Co-authored-by: Cromha <87318892+OcelotWalrus@users.noreply.github.com>
Co-authored-by: Peter van der Meer <peter.vd.meer@gmail.com>
Co-authored-by: enot888 <168086319+enot888@users.noreply.github.com>
Co-authored-by: Lorenzo.BdO <81255699+LorenzoBolla@users.noreply.github.com>
Co-authored-by: Anarchist2 <60202690+Anarchist2@users.noreply.github.com>
Co-authored-by: a4358 <a43582@gmail.com>
Co-authored-by: Azure_ <42621251+Azure3141@users.noreply.github.com>
Co-authored-by: lumbar527 <125756761+lumbar527@users.noreply.github.com>
Co-authored-by: eebop <68796004+eebop@users.noreply.github.com>
Co-authored-by: Nick <85879619+quyykk@users.noreply.github.com>
Co-authored-by: Dane <90231647+SpearDane@users.noreply.github.com>
Co-authored-by: 1010todd <19187937+1010todd@users.noreply.github.com>
Co-authored-by: oo13 <ooyooxei+gh@gmail.com>
Co-authored-by: tehhowch <tehhowch@users.noreply.github.com>
Co-authored-by: Petersupes <77224539+Petersupes@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
balance A ship or weapon that seems too powerful or useless, or a mission that seems too easy or hard mechanics Things dealing with the mechanics & code of how the game works
Projects
None yet
7 participants