[Help] Looking to restrict npc types into certain roles.

The place to discuss scripting and game modifications for X4: Foundations.

Moderators: Scripting / Modding Moderators, Moderators for English X Forum

snackynak
Posts: 36
Joined: Sun, 12. Feb 12, 07:59
xr

[Help] Looking to restrict npc types into certain roles.

Post by snackynak »

With bigger fleets and more ships to manage, it makes hand picking certain npc types very tedious. What I am looking into doing is restricting certain NPCs from being in certain roles, like pilot and forcing others into roles like captain, if that makes any sense.
Basically, here's what I looking to do for the Argon:
"Flight suit" npcs are only pilots in S sized craft
"Engineer" and "officer" npcs are only service crew
"Armored" npcs are only marines
"Officer" npcs as captains of M-XL sized craft.

So, what I've done so far is:
Step 1 I removed the helmet props from the officer-type npcs inthe character_macro.xml file.
Step 2 I re-arranged the charactergroups.xml file for the service, marine, pilot and commander groups to have the appropriate npc types.

Code: Select all

<diff>

<replace sel="/characters/character[@name='argon.service.male']">
  <character name="argon.service.male">
    <select macro="character_argon_male_engineer_01_macro" />
    <select macro="character_argon_male_engineer_02_macro" />
    <select macro="character_argon_male_engineer_03_macro" />
    <select macro="character_argon_male_engineer_04_macro" />
    <select macro="character_argon_male_engineer_05_macro" />
    <select macro="character_argon_male_engineer_06_macro" />
</character>
 </replace>
 
 <replace sel="/characters/character[@name='argon.service.female']">
 <character name="argon.service.female">
    <select macro="character_argon_female_engineer_01_macro" />
    <select macro="character_argon_female_engineer_02_macro" />
    <select macro="character_argon_female_engineer_03_macro" />
    <select macro="character_argon_female_engineer_04_macro" />
    <select macro="character_argon_female_engineer_05_macro" />
    
  </character>
 </replace>
 
 <replace sel="/characters/character[@name='argon.commander.male']">
 <character name="argon.commander.male">
    
    <select macro="character_argon_male_pilot_06_macro" />
    <select macro="character_argon_male_pilot_07_macro" />
  </character>
  </replace>
  
  <replace sel="/characters/character[@name='argon.commander.female']">
  <character name="argon.commander.female">
    <select macro="character_argon_female_pilot_06_macro" />
    <select macro="character_argon_female_pilot_07_macro" />
    <select macro="character_argon_female_pilot_08_macro" />
	<select macro="character_argon_female_pilot_09_macro" />
  </character>
  </replace>
  
  <replace sel="/characters/character[@name='argon.pilot.female']">
  <character name="argon.pilot.female">
    <select macro="character_argon_female_pilot_02_macro" />
    <select macro="character_argon_female_pilot_03_macro" />
    <select macro="character_argon_female_pilot_04_macro" />
    <select macro="character_argon_female_pilot_05_macro" />
    
  </character>
  </replace>
  
  <replace sel="/characters/character[@name='argon.pilot.male']">
  <character name="argon.pilot.male">
    <select macro="character_argon_male_pilot_01_macro" />
    <select macro="character_argon_male_pilot_02_macro" />
    <select macro="character_argon_male_pilot_03_macro" />
    <select macro="character_argon_male_pilot_04_macro" />
    
  </character>
  </replace>

</diff>
Step 3 I tried to re-assigned tags in the character.xml file, but so far it doesn't seem to do anything. I still get just random Argon NPCs as crew and pilots.

Code: Select all

<diff> 

<replace sel="/characters/character[@id='trader_argon_random']">
<character id="trader_argon_random" group="argon.trader">
    <category tags="[masstraffic]" faction="[argon, antigone, scaleplate, hatikvah, alliance, faction.player]" race="argon"/>
    <skills>
      <skill type="piloting" min="7" max="14"/>
      <skill type="morale" max="12"/>

      <skill type="engineering" max="2"/>
      <skill type="management" max="1"/>
      <skill type="boarding" exact="0"/>
    </skills>
    <owner list="[argon, antigone]"/>
  </character>
  </replace>
  
  <replace sel="/characters/character[@id='fighter_argon_random']">
  <character id="fighter_argon_random" group="argon.pilot">
    <category tags="[pilot, aipilot, fighterpilot, masstraffic, watchdog]" faction="[argon, antigone, scaleplate, hatikvah, alliance, faction.player]" race="argon"/>
    <skills>
      <skill type="piloting" min="7" max="14"/>
      <skill type="morale" max="12"/>

      <skill type="engineering" max="2"/>
      <skill type="management" exact="0"/>
      <skill type="boarding" exact="0"/>
    </skills>
	</replace>
	
	<replace sel="/characters/character[@id='passenger_argon_random']">
	<character id="passenger_argon_random" group="argon.passenger">
    <category tags="[passenger]" faction="[argon, antigone, scaleplate, hatikvah, alliance, faction.player]" race="argon"/>
    <skills>
      <skill type="boarding" exact="0"/>
      <skill type="engineering" exact="0"/>
      <skill type="management" exact="0"/>
      <skill type="morale" max="12"/>
      <skill type="piloting" min="2" max="4"/>
    </skills>
    <owner list="[argon, antigone]"/>
  </character>
  </replace>
  
  <replace sel="/characters/character[@id='prisoner_argon_random']">
  <character id="prisoner_argon_random" group="argon.prisoner">
    <category tags="[prisoner]" faction="[argon, antigone, scaleplate, hatikvah, alliance, faction.player]" race="argon"/>
    <skills>
      <skill type="boarding" exact="0"/>
      <skill type="engineering" exact="0"/>
      <skill type="management" exact="0"/>
      <skill type="morale" max="12"/>
      <skill type="piloting" min="2" max="4"/>
    </skills>
    <owner list="[argon, antigone]"/>
  </character>
  </replace>
  
  <replace sel="/characters/character[@id='manager_argon_random']">
  <character id="manager_argon_random" group="argon.manager">
    <category tags="[manager]" faction="[argon, antigone, scaleplate, hatikvah, alliance, faction.player]" race="argon"/>
    <skills>
      <skill type="management" min="4" max="11"/>
      <skill type="morale" max="12"/>

      <skill type="piloting" min="2" max="4"/>
      <skill type="engineering" exact="0"/>
      <skill type="boarding" exact="0"/>
    </skills>
    <owner list="[argon, antigone]"/>
  </character>
  </replace>

</diff> 
I don't really know that much about xml patching or coding in general, so I've just been sort of stumbling around. So far I haven't been able to really sort out how the NPCs are even grouped to a role, let alone making a seperate pilot group for the bigger ships.

Return to “X4: Foundations - Scripts and Modding”