I have a quest I wrote in A20. At the time it worked. In A21, the quest still works in singleplayer when I give it to myself with givequest, but on my server, the first objective doesn't appear. Here it is on my singleplayer game, working fine:
And here it is on my server, after being acquired from a trader:
I cannot for the life of me figure out what is broken that's causing it to behave like this. It's like there's a spawnpoint for the quest that's not set or something. But my xpath for the quest is adapted from tier1_buried_supplies, which works fine, and hasn't changed since A20, when it also worked. If anyone sees anything in here that could be causing the problem, or knows some tidbit of information to get quests with RandomGotoNPC locations to work, please let me know:

And here it is on my server, after being acquired from a trader:

I cannot for the life of me figure out what is broken that's causing it to behave like this. It's like there's a spawnpoint for the quest that's not set or something. But my xpath for the quest is adapted from tier1_buried_supplies, which works fine, and hasn't changed since A20, when it also worked. If anyone sees anything in here that could be causing the problem, or knows some tidbit of information to get quests with RandomGotoNPC locations to work, please let me know:
Code:
<insertBefore xpath="/quests/quest_list[1]">
<quest id="tier5_find_mythril">
<property name="name_key" value="quest_FindMythril" param1="name"/>
<property name="subtitle_key" value="quest_FindMythril_subtitle"/>
<property name="description_key" value="quest_FindMythril_description"/>
<property name="icon" value="ui_game_symbol_mining"/>
<property name="repeatable" value="true"/>
<property name="category_key" value="quest"/>
<property name="offer_key" value="quest_FindMythril_offer" param1="offer"/>
<property name="difficulty" value="medium"/>
<property name="difficulty_tier" value="5" param1="difficulty"/>
<property name="statement_key" value="quest_FindMythril_statement"/>
<property name="response_key" value="quest_FindMythril_response"/>
<property name="login_rally_reset" value="true"/>
<property name="quest_hints" value="tier5_find_mythril_hint1,tier5_find_mythril_hint2,tier5_find_mythril_hint3" />
<property name="shareable" value="true"/>
<property name="reward_choices_count" value="5" />
<property name="completiontype" value="TurnIn"/>
<property name="completion_key" value="quest_FindMythril_completion"/>
<objective type="RandomGotoNPC" phase="1">
<property name="completion_distance" value="20"/>
<property name="distance" value="200-2000"/>
<property name="nav_object" value="quest" />
</objective>
<objective type="FetchKeep" id="resourceMythrilPowder" value="1000" phase="2"/>
<objective type="Craft" id="resourceMythril" value="50" phase="3"/>
<objective type="ReturnToNPC">
<property name="phase" value="4"/>
<property name="nav_object" value="return_to_trader" />
</objective>
<objective type="InteractWithNPC">
<property name="phase" value="4"/>
<property name="nav_object" value="return_to_trader" />
</objective>
<reward type="Exp" value="5000"/>
<reward type="LootItem" id="groupQuestT2SkillMagazineBundle" ischosen="true" isfixed="true" value="4"/>
<reward type="LootItem" id="groupQuestWeapons" ischosen="true" isfixed="true" value="5"/>
<reward type="LootItem" id="groupQuestArmor,groupQuestMedical" ischosen="true" value="5"/>
<reward type="LootItem" id="groupQuestAmmo" ischosen="true" value="5"/>
<reward type="LootItem" id="groupQuestTools" ischosen="true" value="5"/>
<reward type="LootItem" id="groupQuestSchematics" ischosen="true" value="5"/>
<reward type="LootItem" id="groupQuestMods" ischosen="true" value="5"/>
<reward type="LootItem" id="groupQuestSteel" ischosen="true"/>
<reward type="Item" id="casinoCoin" value="800"/>
</quest>
</insertBefore>
<append xpath="/quests/quest_list[@id='trader_quests']">
<quest id="tier5_find_mythril" />
</append>