Fractal Softworks Forum

Please login or register.

Login with username, password and session length
Advanced search  

News:

Starsector 0.95a is out! (03/26/21); Blog post: Skill Changes, Part 2 (07/15/21)

Pages: [1] 2 3 ... 8

Author Topic: Personal Contacts  (Read 15425 times)

Alex

  • Administrator
  • Admiral
  • *****
  • Posts: 18914
    • View Profile
Personal Contacts
« on: August 13, 2020, 02:16:19 PM »

Blog post here.
Logged

Tartiflette

  • Admiral
  • *****
  • Posts: 3294
  • Toss a coin to your Modder, O' valley of plenty
    • View Profile
Re: Personal Contacts
« Reply #1 on: August 13, 2020, 02:22:32 PM »

Time to crash the new server through intense reading
Logged
 

arcibalde

  • Admiral
  • *****
  • Posts: 1728
    • View Profile
Re: Personal Contacts
« Reply #2 on: August 13, 2020, 02:24:01 PM »

 ;D
Logged
Creator of:
Relics MOD - vanilla balanced - Campaign integrated
Vanilla addon MOD - vanilla balanced - Campaign integrated
Project ONI MOD - mission only

Attroc

  • Ensign
  • *
  • Posts: 3
    • View Profile
    • Email
Re: Personal Contacts
« Reply #3 on: August 13, 2020, 02:26:24 PM »

Very very cool!
Logged

Tartiflette

  • Admiral
  • *****
  • Posts: 3294
  • Toss a coin to your Modder, O' valley of plenty
    • View Profile
Re: Personal Contacts
« Reply #4 on: August 13, 2020, 02:35:56 PM »

Welp, that indeed answered my concerns from yesterday. I will wait for this update because half of the quest related framework that I could implement in a mod would be replaced by those new systems.

[edit] One question though: What about chain missions? Is there anything here that by default would make a mission available only after completing a previous one? That would be the last building block missing to start some serious quest writing.
« Last Edit: August 13, 2020, 02:39:09 PM by Tartiflette »
Logged
 

Midnight Kitsune

  • Admiral
  • *****
  • Posts: 2784
  • Your Friendly Forum Friend
    • View Profile
Re: Personal Contacts
« Reply #5 on: August 13, 2020, 02:36:56 PM »

Just as the Hype Train was starting to slow down, Alex tosses another carload of fuel into the fires!
ALL ABOARD!!
Logged
Help out MesoTroniK, a modder in need

2021 is 2020 won
2022 is 2020 too

Alex

  • Administrator
  • Admiral
  • *****
  • Posts: 18914
    • View Profile
Re: Personal Contacts
« Reply #6 on: August 13, 2020, 02:44:36 PM »

[edit] One question though: What about chain missions? Is there anything here that by default would make a mission available only after completing a previous one? That would be the last building block missing to start some serious quest writing.

You could set a global memory flag once a mission is completed, and then for a mission that requires the previous mission, in its create() method, check whether that flag is set, and if not, bail out. It'd be a one-liner, or close to it, in each of the missions to connect them up like that.

(There *might* also end up being a more official way of doing it as we go through the story missions and see how that sort of structure is easiest to implement.)

Time to crash the new server through intense reading

Not going to lie, I was worried for a second when the slowdown hit. "Is this some kind of problem with the new server? Should I send them a support email?" But, it pulled through :)


Just as the Hype Train was starting to slow down, Alex tosses another carload of fuel into the fires!
ALL ABOARD!!

:D
Logged

Nicke535

  • Commander
  • ***
  • Posts: 240
  • Degenerate Core
    • View Profile
    • Email
Re: Personal Contacts
« Reply #7 on: August 13, 2020, 02:56:48 PM »

Very nice, definitely looking forward to this. Main complaint is that I might just procrastinate for the new patch instead of actually working on implementing the Vass questlines now that a system so close to what I needed will be in vanilla (heck, the current quest already has a basic system to pull of effectively what you've done here, but worse)!

Am I correct in assuming that since contacts show up in the intel screen, their display in said screen shouldn't be set in stone? For example, making the icon/name change dynamically (for an obvious example, someone who hides their identity until more trust is earned) or showing a "fake" importance that doesn't confirm to the 1-5 scale? Just making sure since having those displays completely set in stone on the coding side would make the system quite rigid and hard to use for mods.

SCC

  • Admiral
  • *****
  • Posts: 2874
    • View Profile
Re: Personal Contacts
« Reply #8 on: August 13, 2020, 02:59:31 PM »

Are contacts forcing you to choose one of the factions in the long term, or are there other mechanisms for that, or nothing at all? Currently you can amass quite some wealth without crossing any factions, at least until you plant a flag on some rock that flies faster than it falls. Speaking of that — wouldn't it make sense if hits on faction fleets were ordered by other factions, too? They have both more reasons and more money to make it happen.
Is there any cost to making new contracts? Credits, special items, relationship?
Will multi tag contacts offer special missions?

Also, I don't think I got that — does this system entirely replace other intel missions/bounties/etc. stuff, or is it meant to cover everything that isn't run of the mill basic stuff? System that entirely relies on contacts might not be easily noticed by newcomers.

Megas

  • Admiral
  • *****
  • Posts: 9378
    • View Profile
Re: Personal Contacts
« Reply #9 on: August 13, 2020, 03:17:13 PM »

Do you get contacts at your own colonies?  Say, my first colony developed into a nice size 6+ world that is as big as a major faction's capital world.  Player can get bar missions from his own worlds.

I wonder if contacts will be a gate to special missions with unique rewards like the Red Planet quest.  Basically, a reason to spare them from the eventual total core kill after I lose patience with babysitting and other annoyances.
Logged

Thaago

  • Global Moderator
  • Admiral
  • *****
  • Posts: 5669
  • Harpoon Affectionado
    • View Profile
    • Email
Re: Personal Contacts
« Reply #10 on: August 13, 2020, 03:25:39 PM »

This looks great! I wonder, are there any mechanics for contacts reaching out to contact the player if they've done something exceptional? I'm thinking if they are below their 5 contact limit and complete a "hard" general bounty there is some chance of this attracting the attention of a contact. Similarly for smuggling to someplace with demand, or trading in survey data.

If I have one wish on the modding side of things, its that those very convenient looking functions be in the autogenerated API somewhere, so modders have a complete list of them. Short descriptions of what they do would also be great, though I know that can turn into a lot of work.
Logged

Megas

  • Admiral
  • *****
  • Posts: 9378
    • View Profile
Re: Personal Contacts
« Reply #11 on: August 13, 2020, 03:34:51 PM »

Quote
Fortunately, we can leverage story points (talked about at length here) as a soft limiting mechanism. The rules are simple:

Up to 5 concurrent contacts are “free”; deleting a contact is also free
Contacts beyond 5 require a story point to develop
If the colony the contact lived in was destroyed or decivilized, is the contact dead and removed automatically, or does he become a waste of a slot until you dismiss him yourself?
Logged

Alex

  • Administrator
  • Admiral
  • *****
  • Posts: 18914
    • View Profile
Re: Personal Contacts
« Reply #12 on: August 13, 2020, 04:30:06 PM »

Am I correct in assuming that since contacts show up in the intel screen, their display in said screen shouldn't be set in stone? For example, making the icon/name change dynamically (for an obvious example, someone who hides their identity until more trust is earned) or showing a "fake" importance that doesn't confirm to the 1-5 scale? Just making sure since having those displays completely set in stone on the coding side would make the system quite rigid and hard to use for mods.

You could probably do whatever you want with a custom intel item. The default one will reflect changes in the PersonAPI backing it, though, so that sounds like it might be good enough for your purposes. Importance is locked to the 1-5 scale, though; with how many things are keyed off that, it wouldn't make sense not to.

Are contacts forcing you to choose one of the factions in the long term, or are there other mechanisms for that, or nothing at all? Currently you can amass quite some wealth without crossing any factions, at least until you plant a flag on some rock that flies faster than it falls.

It doesn't lock you to a faction, though it does make it easier to gain faction rep since completing missions for a contact will also increase your rep with the faction.

Speaking of that — wouldn't it make sense if hits on faction fleets were ordered by other factions, too? They have both more reasons and more money to make it happen.

Military contacts will in fact offer some missions that are military in nature :)

Is there any cost to making new contracts? Credits, special items, relationship?

Completing a mission for them (from the bar), generally. It's not hard but it's not supposed to be.

Will multi tag contacts offer special missions?

Not right now. It's easily possible - in fact there's explicit support for it via the mission spreadsheet. But multi-tag contacts aren't really much of a thing in vanilla; IIRC there's only one very low-importance one right now, mostly for flavor.

Also, I don't think I got that — does this system entirely replace other intel missions/bounties/etc. stuff, or is it meant to cover everything that isn't run of the mill basic stuff? System that entirely relies on contacts might not be easily noticed by newcomers.

It doesn't, though I might remove the basic Procurement mission, since it gets pretty much duplicated by the contact stuff. But Analyze/Survey missions and bounties are I think in a good place - the surface-level stuff anyone has access too, and then you can dig into contacts as well.


Do you get contacts at your own colonies?  Say, my first colony developed into a nice size 6+ world that is as big as a major faction's capital world.  Player can get bar missions from his own worlds.

You might get underworld contacts there, but not player-faction contacts. Those would be too weird - the default interaction writing doesn't work, etc.


This looks great! I wonder, are there any mechanics for contacts reaching out to contact the player if they've done something exceptional? I'm thinking if they are below their 5 contact limit and complete a "hard" general bounty there is some chance of this attracting the attention of a contact. Similarly for smuggling to someplace with demand, or trading in survey data.

There aren't - right now, it's entirely bar-based. I've been half-thinking about whether other stuff - such as, say, handing in Alpha Cores - could/should result in contacts, as well. I think "how the player gets contacts, especially high importance ones" could be an interesting area to expand. But it's not something that's really gotten much attention at this point; the focus has just been on adding missions etc. There's a lot of them!

If I have one wish on the modding side of things, its that those very convenient looking functions be in the autogenerated API somewhere, so modders have a complete list of them. Short descriptions of what they do would also be great, though I know that can turn into a lot of work.

They'll be in the API javadoc, yeah, since they're all implemented in base mission classes. Comments/descriptions, though... not very likely, no. Most of the methods have names that pretty much describe what they do anyway. Something tricky, though, I could see adding a comment here and there for.

If the colony the contact lived in was destroyed or decivilized, is the contact dead and removed automatically, or does he become a waste of a slot until you dismiss him yourself?

Neither. They lose one level of importance and move to another faction colony. If importance is already very low or there's no colony to move to, then they go away.
Logged

BringerofBabies

  • Lieutenant
  • **
  • Posts: 98
    • View Profile
Re: Personal Contacts
« Reply #13 on: August 13, 2020, 06:02:57 PM »

Do you get contacts at your own colonies?  Say, my first colony developed into a nice size 6+ world that is as big as a major faction's capital world.  Player can get bar missions from his own worlds.

You might get underworld contacts there, but not player-faction contacts. Those would be too weird - the default interaction writing doesn't work, etc.

It could be interesting if sometimes you could find other faction contacts on your worlds - a Tri-Tachyon trader who stays on your world to manage trade routes, or a Hegemony diplomat/military attaché, for example. Holding out for such a contact would be inefficient for a player who wants to improve their standing with a specific faction, but a lucky player could take advantage of those contacts to streamline their core world visits. Those contacts could also have a lower maximum importance, too - after all, if they were really that important why have they been sent to someone else's planet instead of staying at their organization's HQ?
« Last Edit: August 13, 2020, 06:04:47 PM by BringerofBabies »
Logged

Wispborne

  • Commander
  • ***
  • Posts: 164
  • Discord: Wisp#0302
    • View Profile
Re: Personal Contacts
« Reply #14 on: August 13, 2020, 06:06:06 PM »

This is awesome! Pumped to see creating quests become more accessible.

It was fun/gratifying to see the specific shift from an imperative to a declarative system for the quests; I wrote my own wrapper to make quests declarative already, although yours is, of course, far more accessible and comprehensive.

https://github.com/davidwhitman/Gates-Awakened/blob/master/src/main/kotlin/org/wisp/gatesawakened/midgame/MidgameQuestBeginning.kt

Code
class MidgameQuestBeginning : BarEventDefinition<MidgameQuestBeginning>(
    shouldShowEvent = { Midgame.shouldOfferQuest(it) },
    interactionPrompt = {
        addPara {
            "You spot a familiar tattoo; a grey circle around the eye of a $manOrWoman" +
                    " in the corner of the bar, glowing a faint white. " +
                    "You realize that it looks a bit like a ${mark("Gate")}."
        }
    },
    textToStartInteraction = {
        "Move in for a closer look at the tattooed $manOrWoman's tripad screen."
    },
    onInteractionStarted = {
        planetWithCache = Midgame.planetWithCache!! // Must exist for quest to be offered
    }
.......

Note: Below, I critique some example code from the blog post without full context of the rest of the API. What's more, this is *your* codebase and your project - please feel free to ignore my critique; I have my own baby codebase, I understand and won't be offended.

I do have a question; how much will the order in which you call methods in this new, declarative API matter?

That is, I presume that you must first call beginTrigger(...), then define triggers, and then endTrigger(). Is that the case, and if so, why not add a class to define a trigger so that the order that quest bits are declared doesn't matter (like a Builder pattern)?
eg
Code
beginWithTrigger(
  new HyperspaceRangeTrigger(planet, 1f, false, Stage.GO_TO_RUINS, new TriggerConditions() {
    triggerCreateFleet(FleetSize.MEDIUM, FleetQuality.DEFAULT, Factions.PIRATES);
    triggerSetStandardAggroPirateFlags();
    triggerFleetAllowLongPursuit();
    triggerPickLocationAtInSystemJumpPoint(planet.getStarSystem());
    triggerSpawnFleetAtPickedLocation(“$gada_pirate”, null);
    triggerOrderFleetPatrol(planet);
  }
);
Pages: [1] 2 3 ... 8