Example pack: The Ridge Raiders¶
A complete small mod: a new raider faction that hates survivors, a raider rifleman and brawler that spawn in the
wasteland, and a deserter you can hire away from them once they trust you. Copy it, rename the ridge prefix, and
change what you like.
DSD_NPCUtilities_RidgeRaiders/
ModInfo.xml
Config/
entityclasses.xml
entitygroups.xml
npc.xml
dialogs.xml
Localization.txt
NPCUtilities/
factions.xml
<configs>
<append xpath="/entity_classes">
<!-- shared look and faction -->
<entity_class name="ridgeRaiderBase" extends="dsdNpcTemplate">
<property name="Mesh" value="#@modfolder(DSD_NPCUtilities):Resources/dsdnpcutilities.unity3d?dsdNpcSurvivor"/>
<property name="PhysicsBody" value="dsdNpcSurvivor"/>
<property name="NPCID" value="ridgeRaider"/>
<property name="Faction" value="ridgeRaiders"/>
<property name="DSDNpcRole" value="bandit"/>
<property name="DSDNpcKillRep" value="0"/>
<property name="LootDropProb" value="1"/>
</entity_class>
<entity_class name="ridgeRaiderRifleman" extends="ridgeRaiderBase">
<property name="UserSpawnType" value="Menu"/>
<property name="DSDNpcWeapon" value="gunRifleT1HuntingRifle"/>
<property name="DSDNpcAmmo" value="30"/>
<property name="DSDNpcAim" value="0.5"/>
</entity_class>
<entity_class name="ridgeRaiderBrawler" extends="ridgeRaiderBase">
<property name="UserSpawnType" value="Menu"/>
<property name="DSDNpcWeapon" value="meleeWpnClubT1BaseballBat,meleeToolAxeT1IronFireaxe"/>
<effect_group name="Base Effects">
<passive_effect name="HealthMax" operation="base_set" value="350"/>
</effect_group>
</entity_class>
<!-- hireable once the raiders like you -->
<entity_class name="ridgeDeserter" extends="dsdNpcTemplate">
<property name="UserSpawnType" value="Menu"/>
<property name="Mesh" value="#@modfolder(DSD_NPCUtilities):Resources/dsdnpcutilities.unity3d?dsdNpcSurvivor"/>
<property name="PhysicsBody" value="dsdNpcSurvivor"/>
<property name="NPCID" value="ridgeDeserter"/>
<property name="Faction" value="ridgeRaiders"/>
<property name="DSDNpcRole" value="companion"/>
<property name="DSDNpcHireCost" value="8000"/>
<property name="DSDNpcRepHire" value="650"/>
<property name="DSDNpcWeapon" value="gunHandgunT1Pistol"/>
<property name="DSDNpcAmmo" value="40"/>
<property name="DSDNpcAim" value="0.3"/>
</entity_class>
</append>
</configs>
<configs>
<append xpath="/npc/factions">
<faction name="ridgeRaiders"/>
</append>
<append xpath="/npc">
<npc_info id="ridgeRaider" name="Ridge Raider" name_key="ridgeRaiderBase" faction="ridgeRaiders"
portrait="" greeting_type="nearby" stance="Dislike" voice_set="" dialog_id="dsdNpcCompanion"
quest_faction="0" localization_id="ridgeRaiderBase"/>
<npc_info id="ridgeDeserter" name="Deserter" name_key="ridgeDeserter" faction="ridgeRaiders"
portrait="" greeting_type="nearby" stance="Neutral" voice_set="" dialog_id="ridgeDeserterTalk"
quest_faction="0" localization_id="ridgeDeserter"/>
</append>
</configs>
<npcutilities>
<faction name="ridgeRaiders" player_start="350" hostile_below="250">
<relation faction="undead" value="0"/>
<relation faction="dsdSurvivors" value="0"/>
<relation faction="dsdBandits" value="600"/>
</faction>
</npcutilities>
Players start at 350: not hostile yet, but one dead raider (the template costs 150) tips them over.
<configs>
<append xpath="/dialogs">
<dialog id="ridgeDeserterTalk" startstatementid="start">
<statement id="start" text="ridgeDes_hello">
<response_entry id="hire"/>
<response_entry id="notyet"/>
<response_entry id="bye"/>
</statement>
<statement id="wait" text="ridgeDes_wait" nextstatementid="start"/>
<response id="hire" text="ridgeDes_hire">
<requirement type="DSDNpc, DSD_NPCUtilities" id="can_hire" requirementtype="Hide"/>
<action type="DSDNpc, DSD_NPCUtilities" id="hire"/>
</response>
<response id="notyet" text="ridgeDes_ask" nextstatementid="wait">
<requirement type="DSDNpc, DSD_NPCUtilities" id="hireable" requirementtype="Hide"/>
</response>
<response id="bye" text="ridgeDes_bye"/>
</dialog>
</append>
</configs>
Key,File,Type,UsedInMainMenu,NoTranslate,english
ridgeRaiderBase,entityclasses,Entity,,,Ridge Raider
ridgeRaiderRifleman,entityclasses,Entity,,,Ridge Raider Rifleman
ridgeRaiderBrawler,entityclasses,Entity,,,Ridge Raider Brawler
ridgeDeserter,entityclasses,Entity,,,Deserter
ridgeDes_hello,dialogs,Dialog,,,"Keep it down. If the Ridge sees me talking to you, we're both dead."
ridgeDes_ask,dialogs,Dialog,,,"Want to get out?"
ridgeDes_wait,dialogs,Dialog,,,"Not yet. Prove you're worth the risk, and bring Dukes."
ridgeDes_hire,dialogs,Dialog,,,"Let's go. Now. (8,000 Dukes)"
ridgeDes_bye,dialogs,Dialog,,,"Forget you saw me."
Check the group name
ZombiesWasteland must exist in your game's entitygroups.xml; open it and pick the biome group you want.