- Some spells (blind, for example) display @target_possesive@ instead of proper pronouns.
NerdanelVampire: I'll look into it. I have been sort of assuming that that was an engine bug, and I haven't seen it that much anyway. I've been playing melee characters lately, since they are the least broken.
NerdanelVampire: Fixed. Turns out the problems were DarkGod's old typos that I had copypasted wholesale. (An s was missing from @target_possessive@.) That's the problem of trying to maintain something that has a lot in common with the ToME module but is increasingly diverging from it, while both are under heavy development.
- It's not possible to descend to the second level of the goat thief dungeon. Try changing the relevant entry for DUNGEON_GOAT_ROBBERS in dungeons.lua to:
mindepth = 1 maxdepth = 2
NerdanelVampire: So THAT was it. I was completely unable to find the solution so, frustrated, I decided to release 0.6.6 anyway. It had been months after all.
NerdanelVampire: Fixed.
- There doesn't appear to be any way to trigger quest completion for the goat quest. There are no goats, the Altar of Hell doesn't seem to do anything, and killing all of the monsters in the dungeon doesn't cause anything to happen.
NerdanelVampire: This was because I couldn't reach the second level, so there wasn't much point in writing code I couldn't debug. I think I wrote in the changelog something about that.
- Returning to the goat thief lair multiple times continually gives me the 'You hear the scream of a goat' message, even after everything has been killed, and there are no goats anywhere.
NerdanelVampire: This reminds me of how I should really do something about to handle quest dungeons better, so you could only enter once. Probably mark the quest as failed if you exit without completing, and vanish the stairs.
- I'm guessing a goat was sacrificed on the altar, but there's no indication of this. How about a MOVE_POST_DEST flag in the map file to handle this. This would be a good place to insert the quest completion as well. Something like:
map.symbol{ symbol='u' feat=FEAT_ALTAR_THASAIDON info=6 monster=MONSTER_DEMONIC_MESSENGER
flags = {
MOVE_POST_DEST=function()
-- or use a dialogue
if quest(QUEST_GOAT_ROBBERS).status == QUEST_STATUS_TAKEN then
message("You are too late! The poor goat has already been sacrificed.")
change_quest_status(QUEST_GOAT_ROBBERS, QUEST_STATUS_COMPLETED)
end
end
}
}
- Though, this code doesn't check to see if all the monsters had been killed. Maybe combine it with some of the examples on the main zothiq page.
NerdanelVampire: Thanks!
- After accepting the wolf quest, it is still possible to enter the goat thief lair...but when you leave, the entrance disappears and you're standing on granite.
NerdanelVampire: This shouldn't happen for two reasons. 1) You should get the house. 2) You should be unable to get the wolf quest with things before it both broken and unfinished. (But you used debugging, right?)
BucketMan: Yes, I had to to finish the quest. But looking at the Cith map file I see:
[{QUEST_STATUS_COMPLETED,QUEST_STATUS_FINISHED}] =
{ feat=FEAT_PERM_SOLID info=3 }
- Which makes it a perma wall instead of a house once the quest is completed.
NerdanelVampire: I actually found that by myself. Initially, the idea had been to make the entrance stone since the quest hadn't been implemented yet, but I had implemented that backwards and then forgot all about it...
- Could we have some kind of clue about where the wolves are?
NerdanelVampire: The wolf quest has the barest beginnings implemented. The approximate dialogue is there because I did it first and had to enable it so that I could debug. I probably should have commented out the dialogue after I had finished debugging it.
- I like the "you would make a great spouse for my daughter... or my son" line...but maybe this would be a good place to check for the player's gender. Try:
if player.get_sex() == "Female" then
NerdanelVampire: I actually did that on purpose. I don't know if anyone else thinks it's funny, but this old, rural villager is completely fine with alternate sexualities.
- Aren't we supposed to get a house out of all of this? Or a reward of some kind?
NerdanelVampire: Yes. I thought I had implemented getting the house if the quest gets completed somehow, but since I haven't been able to debug...
- Should clubs do twice as much damage as rapiers?
NerdanelVampire: I don't know. I know very little about weapons, basically only what I have picked up reading fantasy books. Perhaps it's a big heavy metal club? With spikes? (Although I suppose that would be a mace.)
NerdanelVampire: I looked into it and there indeed was an oversight in the balance. (I truly hate the new notation that replaced weapon dice, by the way.) Clubs are now 1d6, which means that they do slightly more damage than rapiers, but the damage is less dependable. Fixed.
- Movement mode running generates a LUA error. As of alpha17, 'player.skill_srh' doesn't exist anymore. Searching is now an intrinisc. Try:
player.inc_intrinsic(FLAG_SEARCH_POWER, amount_to_increase)
NerdanelVampire: There is something screwy with searching. It's one of those things that used to work, then get changed in the engine, and got fixed, but apparently not fixed enough.
BucketMan: I found it: Apparently searching became a subsystem with alpha17. Take a look at the changelog and it describes what needs to be done.
NerdanelVampire: I read that changelog. But the catch was that I had just added the subsystem to init.lua and changed a lot of things to conform to the new flags. Now I have copied the real way to add searching from the ToME module's player.lua. It turns out that in addition to the subsystem you need more lines if you actually wish for the player to be able to search for something, in this case traps and secret doors. It should work now (the game starts with no new errors), but it looks I'm going to first have to remove the newly-updated secret door hack to see if the secret doors work now.
NerdanelVampire: Yay! Searching for secret doors works confirmedly, and I got to remove the old hack too!
NerdanelVampire: I'm beginning to regret that I gave up on the quest, but somehow I guessed you would come up with the fix in no time at all... Still, I probably wouldn't have release 0.6.6 just yet if it hadn't been so late at night and my judgement so impaired. I'm going to go to sleep RIGHT NOW, this reply was my last thing to force through before sleep.
NerdanelVampire: The goat quest works! Thank you!
I have even implemented live goats. Now I just have to figure out how to have creatures that don't want to murder the player...
BucketMan: Yay! Goat quest!
Happy, cute little goats.
They attack the player? This could be handled a couple ways. Let me give you the 'proper' way, and then the 'easy' way. For example, if you wanted to have a friendly animal faction, you could have something like:
factions.new("ANIMAL", "animals")
factions.set_friendliness(FACTION_ANIMAL, FACTION_PLAYER, 0)
factions.set_friendliness(FACTION_PLAYER, FACTION_ANIMAL, 0)
And then add the following flag to all monsters you wanted to be friendly:
FACTION=FACTION_ANIMAL
The problem is that faction handling is a bit finicky. If you're not careful you may end up with goats that act as pets, and fight for the player. It's also a bit tricky to store faction relations in such a way that they can be changed. Do you want members of the FACTION to always be friendly, or should they be able to defend themselves when attacked? Etc.
The easy way would be to simply remove all melee and spell attacks from the goats, and then give them an AI that doesn't chase the player. The only caution here is that some of the default AI's don't behave exactly as you might think. ai.NEVER_MOVE actually does move when adjacent to the player, to allow deathmolds to deliver their melee attack. But with a friendly monster sometimes this means that they'll never move until you're close, and then chase you. ai.RANDOM_MOVE has the same problem. They move randomly...until adjacent to the player, and then chase him.
Simple solution: copy ai.DBT_RANDOM and ai.DBT_NEVER_MOVE from Dragonball T.
NerdanelVampire: It doesn't work!!! I tried to do it the "proper" way, and all I got was some Enemy(neutral animals) goats that still wanted to murder me. But since I had also added camels while I was at it, I had more pressing issues to worry about. The camels kick really hard for a 0th level critter.
I'm going to have to try giving them the DBT_RANDOM AI...
I can't see anything wrong in my new preliminary factions.lua.
factions.new("NEUTRAL", "neutral animals")
factions.new("HELL", "Hell")
factions.set_friendliness(FACTION_NEUTRAL, FACTION_DUNGEON, 0)
factions.set_friendliness(FACTION_NEUTRAL, FACTION_PLAYER, 0)
factions.set_friendliness(FACTION_NEUTRAL, FACTION_HELL, -10)
factions.set_friendliness(FACTION_PLAYER, FACTION_DUNGEON, -100)
factions.set_friendliness(FACTION_PLAYER, FACTION_NEUTRAL, 0)
factions.set_friendliness(FACTION_PLAYER, FACTION_HELL, -100)
factions.set_friendliness(FACTION_HELL, FACTION_DUNGEON, 0)
factions.set_friendliness(FACTION_HELL, FACTION_PLAYER, -100)
factions.set_friendliness(FACTION_HELL, FACTION_NEUTRAL, -10)I know the file gets read and my goats get tagged as neutral animals, so where is the problem???
BucketMan: That looks correct to me. My first guess is that it's a disgreement over how to treat a faction standing of zero. I used zero for neutrals in all of my modules, but I think the ToME module treats it differently. Try setting friendliness to a positive number. I think that should make them 'friends,' rather than neutral...but it's a move in the right direction.
NerdanelVampire: The goats are still enemies, but with the DBT_RANDOM AI they don't attack very much anymore... Now that things are getting better I'm thinking of releasing a bugfix version pretty soon...
BucketMan: ai.DBT_RANDOM will prevent them from chasing the player, but if factions are not working properly they'll still 'attack' the player whenever randomness causes them to try to walk onto the square where the player is. Try removing all melee and spell attacks from their definitions:
blows = {}
spells = {}
It will still be 'incorrect' until the faction problem is resolved, but it should at least prevent them from killing players. If they're considered enemies though, this won't probably prevent the player from attacking them until they're no longer considered 'enemies' by the faction system.
NerdanelVampire: I tried changing friendliness to 1, but the first goat I saw was again an enemy. However, with their random movement goats, camels, sparrows, and chaffinches aren't much of a threat, and camels really are particularly powerful only on the scale of level 0 creatures, so I think I'll leave things as they are and hope that a future update to the T-Engine fixes things by itself.
I've been looking into adding pack-behavior for pack monsters, but it appears that LURE_INTO_CORRIDOR isn't implemented, and I appear to have fixed the new bugs that my fixes caused, so I think I'll release 0.6.7... let's say about now. "Release early, release often" goes the saying.
NerdanelVampire: Weird. The faction issue apparently fixed itself with a fresh, new savefile. I thought I had already tried that. This means that the goats in other people's 0.6.7 should be friendly from the start.
ToME Wiki