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

Expand NECC Dialogue Dynamics #75392

Merged
merged 5 commits into from
Aug 29, 2024

Conversation

MNG-cataclysm
Copy link
Contributor

Summary

Content "Expand NECC dialogue dynamics."

Purpose of change

The NECC NPCs, while having very developed dialogue trees, lacked any conditionals for how they thought about the player or responded to their actions, and were known to overshare about themselves with (potentially) complete strangers. This PR will expand the conditionals to some of their dialogue and give them basic reactions to the player's actions.

Describe the solution

Using the NPC opinion values, I had various, personal NECC NPC topics track how friendly you are with the NPC and gate them behind that. I also added a long timer, similar to Rubik's, that slowly adds value over time, rewarding periodic interactions and makes stopping by occasionally rewarding. Mission will now add trust and value to the NPC's perception of you, and failing them increases anger, thus building friendship with the NPC's by completing their missions.

This new system is meant to better mimic the way actual friendships work and build over time, as more personal inquiries become available over the course of time and with engagement. This also stops the NPC's from oversharing about themselves to strangers, as you could previously interact with them once, ask all the questions available, and never interact with them again outside of missions.

I also added conditional dynamic lines to the NPCs based of off their anger value, giving them a reaction to player wrongdoings if they repeatedly fail missions or choose aggressiveness towards the NPC.

Describe alternatives you've considered

Not doing this, or having the friendship tracker base off of trust instead of value.

Testing

Everything works well, dialogues properly trigger and unlock.

Additional context

I plan to expand this system in the future, by adding more ways to gain trust and anger, adding more missions and ways to fail them, along with other NPC perceptions of you being able to influence the way their friends think about you. I also plan to add some sort of passive forgiveness system so that players aren't permanently locked out of interacting with NPCs because they're mad all of the time. This PR more-so begins laying the groundwork for my plans.

@github-actions github-actions bot added NPC / Factions NPCs, AI, Speech, Factions, Ownership [JSON] Changes (can be) made in JSON Missions Quests and missions Items: Food / Vitamins Comestibles and drinks labels Aug 2, 2024
Copy link
Contributor

github-actions bot commented Aug 2, 2024

Spell checker encountered unrecognized words in the in-game text added in this pull request. See below for details.

Click to expand
  • &Jane glaces at you, scowls, and ignores your presence.
  • Overall, you've been quite unpleasent to us, and I've frankly had enough of your prude nature. I won't repeat myself more, go away.
  • This is a fake response to prevent errors. Please dont give the player the variable below.
  • You think you're so tough <name_b>? I'm not taking Jeremiah on, certainly not when his representitive is so barbaric. I don't know how he got such a violent individual like yourself to do this, but I hope he can find someone else in the future.

This alert is automatically generated. You can simply disregard if this is inaccurate, or (optionally) you can also add the new words to tools/spell_checker/dictionary.txt so they will not trigger an alert next time.

Hints for adding a new word to the dictionary
  • If the word is normally in all lowercase, such as the noun word or the verb does, add it in its lower-case form; if the word is a proper noun, such as the surname George, add it in its initial-caps form; if the word is an acronym or has special letter case, such as the acronym CDDA or the unit mW, add it by preserving the case of all the letters. A word in the dictionary will also match its initial-caps form (if the word is in all lowercase) and all-uppercase form, so a word should be added to the dictionary in its normal letter case even if used in a different letter case in a sentence.
  • For a word to be added to the dictionary, it should either be a real, properly-spelled modern American English word, a foreign loan word (including romanized foreign names), or a foreign or made-up word that is used consistently and commonly enough in the game. Intentional misspelling (including eye dialect) of a word should not be added unless it has become a common terminology in the game, because while someone may have a legitimate use for it, another person may spell it that way accidentally.

@github-actions github-actions bot added astyled astyled PR, label is assigned by github actions json-styled JSON lint passed, label assigned by github actions labels Aug 2, 2024
@PatrikLundell
Copy link
Contributor

This sounds like a good improvement, but it also opens up the possibility of a source of irritation present in other games:
You interact with an NPC, and it responds and seems to change. This causes the player to get the impression there is more behind the character than just talk (i.e. quests). One example of this currently is a pair of women in the refugee center, where one gives quests while the other one just seems to wait for an unknown trigger that never happens to give one.
The other case is that you're doing quests for such a character, seem to further progress a relation, and then it just stops because it runs out of dialog a fair bit after the quest chain ends.

Raising hopes for contents that never appears is not good, in my view.

@MNG-cataclysm
Copy link
Contributor Author

Raising hopes for contents that never appears is not good, in my view.

That is true, yes. I figured I'd solve that issue by just adding more overall content to the NPCs, but that could take a while to get all 22 of them up to that par.
Do you have any ideas as to how I could eliminate the issue in the meantime?

@PatrikLundell
Copy link
Contributor

PatrikLundell commented Aug 2, 2024

One obvious part is to remove the option to ask about jobs when there aren't any left. I'd probably leave this at the end of the quest chain so you can ask a last time and get an answer that states there aren't going to be any more (and not provide the topic if the NPC never has any quests). This might be done with a standardized phrasing for when a custom one can't be found (or the writer can't be bothered to try to come up with one), or custom ones, such as saying you've fulfilled all the requests, or they can't come up with anything they might want to have done, etc..

For the case where there aren't any new jobs currently but there are (potential) ones in the future, I'd probably have quest query answers indicating the conditions for future ones (not enough trust, time needed to process what's been delivered, need to get facilities in better order (usable for faction camps where other NPC quests may be required to upgrade the facilities), reluctance to burden someone they don't know that well with requests, etc.). Again, after those answers I'd remove the job question until quests become available again. That saves the player to have to manually check something that should be indicated to the PC as part of the idle conversation.
In general, I think conversation choices should only be available if they actually provide any new information/possible actions or are intermediary nodes to reach such topics (and such extra steps should probably be avoided in general).

If something happens to block off all future quests, I'd probably have the NPC tell the PC next time they talk. Something along the lines that they'd thought about getting in contact with X, but since it's now destroyed that would be pointless, but you're still welcome for social visits (and trade, if applicable). Getting too far on their faction's bad side could also be indicated by telling you they won't make use of your services in the future (bad relations, but still willing to talk, and possibly perform low trust trading).

As a later improvement, the ability of NPCs to contact you via radio would make it possible to provide you with notifications about new developments. Companions reporting missed calls from NPCs?
This is obviously out of scope for this PR (and probably the follow on ones, as I would guess you'd do this work in several increments, rather than sitting on it until it's all done).

@Zireael07
Copy link
Contributor

Just as a FYI, Endless Sky has a 4th wall breaking text that indicates where things in the questlines are not implemented yet

@MNG-cataclysm MNG-cataclysm reopened this Aug 2, 2024
@MNG-cataclysm MNG-cataclysm reopened this Aug 3, 2024
@github-actions github-actions bot added the BasicBuildPassed This PR builds correctly, label assigned by github actions label Aug 3, 2024
@MNG-cataclysm MNG-cataclysm marked this pull request as draft August 21, 2024 01:17
@MNG-cataclysm
Copy link
Contributor Author

MNG-cataclysm commented Aug 21, 2024

This should probably be put on hold until #75535 is worked out.
Nevermind, #75535 needs more work.

@MNG-cataclysm MNG-cataclysm marked this pull request as ready for review August 23, 2024 20:15
@Maleclypse Maleclypse merged commit 1a0bd0c into CleverRaven:master Aug 29, 2024
24 checks passed
Knut-Aage-Hofseth pushed a commit to Knut-Aage-Hofseth/Cataclysm-DDA that referenced this pull request Aug 29, 2024
* Add the changes

* Bugfix 1

* Convert old value checks to the new system

* Missed a spot
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
astyled astyled PR, label is assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions Items: Food / Vitamins Comestibles and drinks [JSON] Changes (can be) made in JSON json-styled JSON lint passed, label assigned by github actions Missions Quests and missions NPC / Factions NPCs, AI, Speech, Factions, Ownership
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants