Interkarma / daggerfall-unity

Open source recreation of Daggerfall in the Unity engine
http://www.dfworkshop.net
MIT License
2.7k stars 327 forks source link

PcAt : ActionTemplate support dungeons #2614

Closed Jagget closed 2 months ago

Jagget commented 6 months ago

In Quests-Places.txt records with p1 == 0 are dungeons but function Place.IsPlayerAtBuildingType() forbids using anything but buildings.

if (!playerEnterExit.IsPlayerInsideBuilding)
    return false;
KABoissonneault commented 6 months ago

player at any is a DFU extension. It should have implemented dungeons from the beginning, that's a bug, from me.

https://github.com/KABoissonneault/daggerfall-unity/commit/0f83e6390fa0b4b60fec2c9712bdf4ef9932c75d

We should just implement "pc at any dungeon9" (for Laboratory), and make it work.

First, we implement Place.IsPlayerAtDungeonType. Then, PcAt could store p1, and then we could call Place.IsPlayerAtDungeonType if p1 is 1 instead of 0.

For people to start using "dungeon type" checks, we could maybe add comments to document which dungeon number is which type. I was thinking of adding this to Quests-Places.txt

-- Crypt
dungeon0,           1, 0 , 0
-- Orc Stronghold
dungeon1,           1, 1 , 0
-- Human Stronghold
dungeon2,           1, 2 , 0
-- Prison
dungeon3,           1, 3 , 0
-- Desecrated Temple
dungeon4,           1, 4 , 0
-- Mine
dungeon5,           1, 5 , 0
-- Natural Cave
dungeon6,           1, 6 , 0
-- Coven
dungeon7,           1, 7 , 0
-- Vampire Haunt
dungeon8,           1, 8 , 0
-- Laboratory
dungeon9,           1, 9 , 0
-- Harpy Nest
dungeon10,          1, 10, 0
-- Ruined Castle
dungeon11,          1, 11, 0
-- Spider Nest
dungeon12,          1, 12, 0
-- Giant Stronghold
dungeon13,          1, 13, 0
-- Dragon's Den
dungeon14,          1, 14, 0
-- Barbarian Stronghold
dungeon15,          1, 15, 0
-- Volcanic Caves
dungeon16,          1, 16, 0

--  Dungeons17-18 contain no quest or item markers
--  Can only be used with "remote dungeon exterior"

-- Scorpion Nest
dungeon17,          1, 17, 0
-- Cemetery
dungeon18,          1, 18, 0

I think with that, people could use this sort of condition more, for themed quests.