0.10.7 quest NPC/Foe spawn point

Post here if you need help getting started with Daggerfall Unity or just want to clarify a potential bug. Questions about playing or modding classic Daggerfall should be posted to Community.
User avatar
Yagiza
Posts: 120
Joined: Wed Jul 31, 2019 5:16 pm

0.10.7 quest NPC/Foe spawn point

Post by Yagiza »

Since v. 0.10.7 quest NPC and Foes, spawned with place npc and place foe actions appear at the same point, where quest item spawned with place item appears, when the same place is specified.
In v. 0.10.4 there were different points for item and NPC/Foe spawn.

User avatar
Jay_H
Posts: 4070
Joined: Tue Aug 25, 2015 1:54 am
Contact:

Re: 0.10.7 quest NPC/Foe spawn point

Post by Jay_H »

Yes, that was altered by this commit.

User avatar
Interkarma
Posts: 7242
Joined: Sun Mar 22, 2015 1:51 am

Re: 0.10.7 quest NPC/Foe spawn point

Post by Interkarma »

To clarify, the second resource placed is stacked on the first.

If you place a Foe first, a Spawn marker is selected. If you place an Item first, an Item marker is selected. Subsequent placements will stack on the first marker type used.

This behaviour matches classic and is used in multiple classic quests.

I'm likely to allow a means around this eventually to support splitting up resources around the dungeon. Classic also seems to have some capacity for this, as used in Tipton's version of Cyndassa's werebeast quest. The way that quest has to go about it by splitting dungeon into multiple static parts defined in the compiler isn't ideal though.

User avatar
Yagiza
Posts: 120
Joined: Wed Jul 31, 2019 5:16 pm

Re: 0.10.7 quest NPC/Foe spawn point

Post by Yagiza »

Interkarma wrote: Thu Sep 12, 2019 8:05 pm To clarify, the second resource placed is stacked on the first.

If you place a Foe first, a Spawn marker is selected. If you place an Item first, an Item marker is selected. Subsequent placements will stack on the first marker type used.

This behaviour matches classic and is used in multiple classic quests.
IIRC, in the original Daggerfall from Bethsoft, I could control object spawn points by create npc at action. Right now, in DFU create npc at does nothing. So, I'll check it again in Daggerfall and write here, how it should work.

User avatar
Interkarma
Posts: 7242
Joined: Sun Mar 22, 2015 1:51 am

Re: 0.10.7 quest NPC/Foe spawn point

Post by Interkarma »

The relevant part from Tipton's TEMPLATE docs are below:
At least, so far as my testing has shown, create npc at without a corresponding place npc action has no visible effect in the game world.
As far as I'm aware, "place npc" is working perfectly fine in DFU. If you can point to a classic quest where this isn't working as expected, I'm happy to take a look.

This is unrelated to the stacking behaviour mentioned above though, which also matches classic. If you'd like a way to split out spawns to different marker locations, I understand completely. This is something I'll look at adding sometime in the future using DFU's variant of TEMPLATE.

User avatar
Yagiza
Posts: 120
Joined: Wed Jul 31, 2019 5:16 pm

Re: 0.10.7 quest NPC/Foe spawn point

Post by Yagiza »

Interkarma wrote: Fri Sep 13, 2019 3:20 am The relevant part from Tipton's TEMPLATE docs are below:
At least, so far as my testing has shown, create npc at without a corresponding place npc action has no visible effect in the game world.
As far as I'm aware, "place npc" is working perfectly fine in DFU. If you can point to a classic quest where this isn't working as expected, I'm happy to take a look.
Yes, that's what I plan to do soon.

User avatar
Yagiza
Posts: 120
Joined: Wed Jul 31, 2019 5:16 pm

Re: 0.10.7 quest NPC/Foe spawn point

Post by Yagiza »

I tried, but... is it possible to run template.exe on windows'7 x64? I tried DosBox, but template.exe crashes in it.

Err... it seems, the problem is not DosBox, but modern hardware. It crashes the same way in Windows'XP 32 bit.

So, the question is how to compile quests for Daggerfall on modern hardware?

User avatar
JorisVanEijden
Posts: 114
Joined: Mon Aug 12, 2019 5:02 pm

Re: 0.10.7 quest NPC/Foe spawn point

Post by JorisVanEijden »

There's some quest editors listed here you can try: https://en.m.uesp.net/wiki/Daggerfall:F ... nd_Viewers
I can confirm that at least WQE14EXE works on windows 10.

What I know about "create npc at":
- In classic there are two opcodes affecting NPC and Location: 30 and 81
Tipton's template interprets 30 as "place npc" and 81 as "create npc"
- opcode 30: "place npc" is always used with both an NPC and a location and it is used in quest for both initial npc placement and for moving npcs around.
- The real meaning of the opcode 81 has never been ascertained. Only that it is mostly used to with either an NPC or with a Location, but not both (except M0B21Y19 and R0C10Y13). "create npc (at)" is just an interpretation of Tipton's decompiler.

User avatar
Yagiza
Posts: 120
Joined: Wed Jul 31, 2019 5:16 pm

Re: 0.10.7 quest NPC/Foe spawn point

Post by Yagiza »

JorisVanEijden wrote: Fri Sep 13, 2019 6:50 pm - The real meaning of the opcode 81 has never been ascertained. Only that it is mostly used to with either an NPC or with a Location, but not both (except M0B21Y19 and R0C10Y13). "create npc (at)" is just an interpretation of Tipton's decompiler.
Yes, I know that. But what I remember, when I was editing quests a few years ago, I found, that "create npc at" was affecting following "place npc", "place item" and "place foe" actions. And I was using it to place quest objects and foes in different points of the same location.
I need to check it again, but can't run template anymore.

User avatar
JorisVanEijden
Posts: 114
Joined: Mon Aug 12, 2019 5:02 pm

Re: 0.10.7 quest NPC/Foe spawn point

Post by JorisVanEijden »

Yagiza wrote: Sat Sep 14, 2019 3:25 am I need to check it again, but can't run template anymore.
You can use wqe14 or try another editor.

I did like the hypothesis that opcode 81 has something to do with spawnmarkers inside locations.
Then I started writing this in my investigation but it quickly led nowhere so I'm not including the rest. If you make the correlation complicated enough you can explain anything. (like opcode 81 is needed to prepare locations for checking if the player enter except when the location is already added to the map or is a fixed permanent location)
JorisVanEijden wrote: Let's see in which contexts the four variants (only npc, only location, both, not called at all) are called.

Only NPC:
$CUREVAM - called with npc vamp1 which is never "placed at" anywhere. So probably to create a "home" location.
70C00Y00 - called with npc contact which is never "placed at" anywhere. So probably to create a "home" location.
80C00Y00, 80C0XY00 - called with npc qgfriend after monster is dead. They are never "placed at" anywhere. So probably to create a "home" location.
A0C00Y11 - same for healer and cousin npcs.
A0C00Y14 - same for pickuplocal npc.
A0C00Y15 - same for pickupregion npc.
A0C00Y16 - same for friend1 to friend4 npcs.
A0C01Y03 - same for spouse npc.


Only location:
$CUREWER - called with predefined childhouse location which is later used to place both the child npc and the wereboar mob. Possibly to ensure child and wereboar are not spawned on the same spot?
A0C00Y07 - called with predefined location house which is only used to spawn (not place) mobs when the player enters it. Possibly to "activate" the location for spawning?
A0C00Y17 - called with destination location which is used to place the questgiver npc at when the player enters the location. To prepare for the player location check or the npc placement?
A0C01Y01- called with qgiverhome location which is used to place the qgiver npc at when the player enters the location. To prepare for the player location check?

Both:

None:
00B00Y00 - mob monster is placed at location mondung
A0C01Y06 - both npc master and mob mmaster are placed at location meetingplace. Perhaps not called to ensure the mob is placed at the same point as the npc?

Post Reply