Erios909 / ShipCore-The-Game

A game in the ShipCore universe by Erios909
Other
5 stars 4 forks source link

FEATURE: NPCS #37

Open Erios909 opened 8 months ago

Erios909 commented 8 months ago

We will implement multiple types of NPCS to facilitate the game.

TODO: Setup templates for the creation of npcs based on zones Get more portraits for NPCS, figure out how to organize and list all the portraits available Create templates for HP, ATK, DEF, SPD for different NPC types

Static NPCS -- these exist only in the narrative and exist usually to facilitate usage of a place. They do not do combat and are static conversations in the world -- exampe: managers at a location who sell things or lease out apartments -- they are limited in scope and are hardcoded directly into the POI they are facilitating for the player.

Special NPCs -- these could be companions, encounter NPCS, or enemy leaders, etc -- they are highly detailed, can join the player's companion slots, and can only die narratively (no death in combat unless scripted) -- they have custom NPC conversation nodes and will be fleshed out much more than regular npcs

Companion NPCS -- essentially generic npcs for the player to recruit in bars, or other places etc -- they utilize a common NPC conversation node that will be generated via their array and stats and have limited narrative options -- however they can have their standard stats upgarded, and cards changed based on player resources, etc allowing the player to invest in better generic companions they keep around -- these are envisioned to be recruited en masse for the player's personal flagship, for command positions of fleets, stations, colonies, etc -- expect the player to have hundreds of them eventually

Generic NPCS -- basicly the same as companion npcs in the code now

THe main difference between Special NPCS is their custom conversation node, allowing for much more narrative things and routing of conversations etc, while companions have their common node which picks what the player can do without having tons of special text

Erios909 commented 8 months ago

It would be helpful to add the ability to store skills in npcs too, in a expandable way. Like Starship Skills = {Navigation, Gunnery, Leadership, etc} Business Skills = {Management, Procurement, etc} These could default to empty for no skills, or be added to later etc. Then we can use them for checks later.

Erios909 commented 8 months ago

More things with NPCS:

Add recruitment to a bar in the lower decks: hiring a random NPC there, with 1-3 options that could be increased or decreased etc Add firing for generic npcs: they go to a 'box' and can be rehired for a week if the player changes their mind, the 'box' should be a thing implemented in recruitment locations like bars etc (just put this one beside where you implement the recruitment from a bar) Handle Jax -- if you fire jax, handle that state and put him back in cold storage for recruiting again. Handle Dalton -- if you fire Dalton, put him in the Dojo where you can recruit him agian. Work out the conversation stuff in Companions.tw

Erios909 commented 8 months ago

add to the npc template/creation:

"Type": "", //Generic, Companion, Enemy, Boss, etc.
"Role": "", //Will be used when assigning to a fleet or division. Manager, Commander, Employee, etc.
"Skills": [], //Skills the character has.
"Inventory": [], //Items the character is carrying.
"IsNarrativelyImportant": false, //True for unique/important NPCs, false for generics.
"IsUnique": false, //True for unique/important NPCs, false for generics.
"IsCompanion": false, //True for companions, false for NPCs.
"CanDie": true, //False for unique/important NPCs, true for generics.
"CustomizationOptions": {
    "CanUpgradeStats": false, //False for unique/important NPCs, true for generics.
    "CanChangeSkills": false, //False for unique/important NPCs, true for generics.
    "CanChangePortrait": false //True for generic companions, false for unique/important NPCs.
},
"Origin": "", //Where the character is from. Meltisar, Ertan Republic, Corporate Systems, Solarian Federation, Imperium, Frontier, etc.
"FactionAlignment": "" //Which faction the character is aligned with. Player, Meltisar, Ertan Republic, Corporate Systems, Solarian Federation, Imperium, Frontier, etc.

};