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

Hired Escorts reimplemented as Hireable Vagabonds with mini-personalities #2152

Open
wants to merge 67 commits into
base: main
Choose a base branch
from

Conversation

ThrosturX
Copy link
Contributor

@ThrosturX ThrosturX commented Jun 30, 2022

This might be ready for merging, but I recommend perhaps revising my naming choices.

Summary:

"Hired Escorts" event forked & modified to make the escorts more like individuals, unlike the ships in your fleet who are more robotic, these guys have some chatter and a bunch of internal variables that make them feel more alive and playful. They talk less and less with time but every generated person has their own internal "chatter" variable determining their chance of idle chitchat. So the player can get fed up with a chatterbox and fire him, or whatever. It's interesting. Oh, and they cost a lot to maintain, so even though I let the player have 6 of them, they are a huge credit sink unless the player meticulously "trains" each one individually, or at least in small groups.

What they do:

  • They mostly behave like regular escorts, but they buy their own ships based on a calculated budget
  • They will board enemies and share the profits with the player (immediately on boarding for credits and on landing in case of commodities)
  • They have their own dream ship, their ultimate goal, and they will try to buy that ship more often and be more generous when they are in one
  • They like to say stuff (might need to be expanded upon, currently uses pirate AI for support)
  • When they arrive, there is a chance of chatter, same when they are attacked, when they board something, when they have a lot of debt (they buy their own ships, remember? They need to take loans if they aren't good at making money). The chatter they choose is affected by their last sentiment, if they have one (plundered a large bounty, was defeated in battle, etc).
  • When they have debt, some outfits might malfunction and they might complain about it or remain more silent than usual and it will take them longer to arrive in the system with the player
  • Each escort will remember some "favorite ships", and there is a chance that they will buy a "favorite ship" any time they need a replacement

I should note here that if they board an "Alive" bounty, the mission will be failed because the player can't board the target again.

What you can do with them:

  • You can make them attack and board things (though they need to pick up the attack mission before the target is disabled)
  • Boarding and profiting increases their experience level
  • You can give them tips, which increases their chances of buying a better ship next time they need a new ship
  • You can upgrade them at a shipyard, the escort will buy a random ship from the existing shipyard, or the most expensive one within its budget if it is a "commander" (they can still buy a dream ship even if it isn't at the shipyard)
  • Adding to the above, if you "force" your escort into a nice ship like a pirate starbridge (by upgrading at a pirate shipyard until you get the right ship) and then successfully board enough enemies to make it a favorite ship contender, there is a chance that your escort will buy that nice ship again

Okay, hold on, what's a commander?
A commander is the escort that can buy a large ship, like a kestrel or a hawking. All the other escorts can fly destroyers or the Zebra, and smaller. There can only be one commander for balance reasons, otherwise it's ridiculous for sure. Maybe in the future the commander is more interesting, but for now sometimes it will drop leadership and recruit the players other escorts and do whatever the native AI tells it to do. This adds a little bit of mystery and playfulness to the escorts. (I should add here that my pirate escort commander caused me a lot of trouble!)

Anything else?
Yes, I'm probably forgetting something, but one thing to mention is that I gave the "transport" escorts an intrinsic outfit that makes their defenses much better but their weapons weaker, basically increasing the chances of them being disabled but not destroyed and decreasing the chances of them destroying an enemy ship. This is to provide a more interesting gameplay experience when your escorts are flying transport ships for some reason, since these escorts don't share their cargo space with the player. A thing to note though is of course that the escorts with more cargo space can plunder more commodities to sell at the next station.

more chatter and some other extra stuff
"interesting" but somewhat generic pilot names
@ThrosturX ThrosturX marked this pull request as draft July 1, 2022 05:36
Copy link
Member

@bobbens bobbens left a comment

Choose a reason for hiding this comment

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

Just a few quick comments here and there. I can't test without the templates.scavenger file atm.

disable = 2.4, -- prefer disablers
-- some nice preferable escort outfits
prefer = {
[ "TeraCom Medusa Launcher"] = 6 , ["TeraCom Medusa Launcher"] = 2,
Copy link
Member

Choose a reason for hiding this comment

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

You're defining "TeraCom Medusa Launcher" twice.

if mem.allowbribe or (mem.natural and mem.bribe_rng < 0.95) then
mem.bribe_prompt = fmt.f(bribe_prompt_list[rnd.rnd(1, #bribe_prompt_list)], {credits = fmt.credits(mem.bribe)})
mem.bribe_prompt_nearby = bribe_prompt_nearby_list[rnd.rnd(1, #bribe_prompt_nearby_list)]
mem.bribe_paid = bribe_paid_list[rnd.rnd(1, #bribe_paid_list)]
Copy link
Member

Choose a reason for hiding this comment

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

bribe_prompt_list, bribe_prompt_nearby, and bribe_paid_list is not actually defined anywhere...

elseif
n == 2 and tk.yesno("", fmt.f(_("Are you sure you want to get rid of {name}? This cannot be undone."), edata))
then
local k = #mem.persons
Copy link
Member

Choose a reason for hiding this comment

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

This k is defined, but not actually used and shadowed by the k in the for loop.

local fmt = require "format"

-- For translation, just transliterate if necessary.
local articles = {
Copy link
Member

Choose a reason for hiding this comment

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

Seems to have lots of unused code (likely from copy pasting at the beginning). Should be made minimum.

Copy link
Member

Choose a reason for hiding this comment

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

I also pushed to the escorts branch on this repo some minor fixes. You might want to pull them. They are basically warnings from luacheck, although there's still a lot left.

@@ -13,4 +14,5 @@ equipopt.soromid = require 'equipopt.templates.soromid'
equipopt.pirate = require 'equipopt.templates.pirate'
equipopt.thurion = require 'equipopt.templates.thurion'
equipopt.proteron = require 'equipopt.templates.proteron'
equipopt.scavenger = require 'equipopt.templates.scavenger'
Copy link
Member

Choose a reason for hiding this comment

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

I don't think you committed the scavenger template.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Shouldn't be needed, artifact from my other modding activity...

@ThrosturX ThrosturX marked this pull request as ready for review August 1, 2022 08:17
@ThrosturX ThrosturX changed the title playful escorts Hired Escorts reimplemented as Hireable Vagabonds with mini-personalities Aug 3, 2022
@bobbens bobbens mentioned this pull request Feb 26, 2024
1 task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants