Page 10 of 12
Re: [Map for CFD2012 ] "The Descent" -File and discussion th
Posted: Tue Dec 04, 2012 11:53 pm
by Ancylus
Having the note mention needing something, rather than having it, is certainly an improvement. Changing the secret door into an ordinary door or portcullis might also help hint that something should still be done in that room. I still wouldn't consider it an easy puzzle, but at least I might have figured it out then.
Re: [Map for CFD2012 ] "The Descent" -File and discussion th
Posted: Wed Dec 05, 2012 12:19 am
by SpiderFighter
Ancylus wrote:Having the note mention needing something, rather than having it, is certainly an improvement. Changing the secret door into an ordinary door or portcullis might also help hint that something should still be done in that room. I still wouldn't consider it an easy puzzle, but at least I might have figured it out then.
Excellent points. To the player, that will also link the hall to the earlier portcullis with the herder (after stepping out from that huge dead space that used to be the telemaze).
Thanks again, to both of you!
Re: [Map for CFD2012 ] "The Descent" -File and discussion th
Posted: Wed Dec 05, 2012 12:44 am
by Xanathar
BTW: I tried step by step John's log.
I'm under the pit at 2nd level over an invulnerable spider.
Seems to happen if and only if you kill the spider exactly over the pit (the spider over the pit).
It totally looks as a game engine bug: the spider is able to attack (and kill) but receives no damage whatsoever. It cannot be killed, not even by rejumping over it.
Reloading or changing resolution removes the spider.
Happens about with 50% chance.
Screenshot with all entities at that tile dumped:
Re: [Map for CFD2012 ] "The Descent" -File and discussion th
Posted: Wed Dec 05, 2012 1:15 am
by SpiderFighter
Xanathar wrote:BTW: I tried step by step John's log.
I'm under the pit at 2nd level over an invulnerable spider.
Seems to happen if and only if you kill the spider exactly over the pit (the spider over the pit).
It totally looks as a game engine bug: the spider is able to attack (and kill) but receives no damage whatsoever. It cannot be killed, not even by rejumping over it.
Reloading or changing resolution removes the spider.
Happens about with 50% chance.
Screenshot with all entities at that tile dumped:
Pretty freaky, eh? I couldn't replicate it (of course!), even though I did the same thing he did. In any case, it's been squished in the next version already. I've moved the tile that spawns the ogre, killed the plate that the ogre triggered (to open the spider cage), and made the spider room a bit more interesting/exciting.
It is a fascinating bug, though. Check out the links I posted about it (in my reply to his post); it's been kicking around the forums (very rarely though) for a month or two.
I haven't had much time at the computer tonight (a minute here, a minute there), but I think I have that final crash squished, too.
Re: [Map for CFD2012 ] "The Descent" -File and discussion th
Posted: Wed Dec 05, 2012 3:25 pm
by Ancylus
SpiderFighter wrote:Ancylus wrote:[Re: Serpent Bracer Room] Don't get me wrong, I don't object to the deadliness of the puzzle at all, since it's voluntary and has a very fair warning. It's just the specific triggering condition that seems strange to me: I would expect the trap to trigger if I take the bracer without having placed the right item into the alcove, while other items would be ignored entirely. That said, this really isn't a big deal, just something that felt a little bit off.
I see what you're saying now. That's probably just a limitation of my scripting abilities. I did notice just now (while playing through to check lighting) that the room doesn't reset if you put the bracer back, and that seems unfair to me. I can take a look at this, but it's probably just beyond me right now. My eyes are bigger than my stomach when it comes to scripting, if that makes any sense.
I would handle the trap with a script like this:
Code: Select all
function checkItems(alcove)
for item in alcove:containedItems() do
if item.name == "serpent_bracer" or item.name == "skull" then
-- one of the items found, reset the trap if it has been triggered
return
end
end
-- neither item found, trigger the trap
end
Re: [Map for CFD2012 ] "The Descent" -File and discussion th
Posted: Wed Dec 05, 2012 7:16 pm
by SpiderFighter
Ancylus wrote:SpiderFighter wrote:Ancylus wrote:[Re: Serpent Bracer Room] Don't get me wrong, I don't object to the deadliness of the puzzle at all, since it's voluntary and has a very fair warning. It's just the specific triggering condition that seems strange to me: I would expect the trap to trigger if I take the bracer without having placed the right item into the alcove, while other items would be ignored entirely. That said, this really isn't a big deal, just something that felt a little bit off.
I see what you're saying now. That's probably just a limitation of my scripting abilities. I did notice just now (while playing through to check lighting) that the room doesn't reset if you put the bracer back, and that seems unfair to me. I can take a look at this, but it's probably just beyond me right now. My eyes are bigger than my stomach when it comes to scripting, if that makes any sense.
I would handle the trap with a script like this:
Code: Select all
function checkItems(alcove)
for item in alcove:containedItems() do
if item.name == "serpent_bracer" or item.name == "skull" then
-- one of the items found, reset the trap if it has been triggered
return
end
end
-- neither item found, trigger the trap
end
Thanks, Ancylus! I already has a laundry list of 20 other fixes/additions/changes to the next version. This will be very handy. I'm trying to learn as much as I can; I hate being crippled by my own ignorance.
Re: [Map for CFD2012 ] "The Descent" -File and discussion th
Posted: Wed Dec 05, 2012 7:50 pm
by SpiderFighter
Having problems with that part of the script. If I use item.name then I have errors, because of how the script is set up. I've managed to have it work if the bracer is replaced, but then the script stops checking because of the "else" (so the player can just safely remove the bracer at that point).
Here's what I have:
Code: Select all
function orbcove9aaContents(entity, item)
for i in entity:containedItems() do
if i.name == item then
return true
end
end
return false
end
function orbcove9aaCheck()
if orbcove9aaContents(orbcove9aa, "humanskull")
then
humanskull_1:destroy()
sfjnd_wooden_2:open()
sfjnd_metal_1:close()
sfjnd_metal_2:close()
else
if orbcove9aaContents(orbcove9aa, "serpent_bracer")
then
sfjnd_wooden_2:open()
sfjnd_metal_1:close()
sfjnd_metal_2:close()
else
sfjnd_wooden_2:close()
sfjnd_metal_1:open()
sfjnd_metal_2:open()
end
end
end
Re: [Map for CFD2012 ] "The Descent" -File and discussion th
Posted: Wed Dec 05, 2012 8:56 pm
by Ancylus
Oh right, I forgot that you wanted to destroy the skull. In that case it's best to use a variable to keep track of whether it has been placed. Here's a slightly modified version of your code. (Although I don't quite see how replacing the bracer would break your script.)
Code: Select all
skull_found = false
function orbcove9aaContents(entity, item)
for i in entity:containedItems() do
if i.name == item then
return true
end
end
return false
end
function orbcove9aaCheck()
if not skull_found then
if orbcove9aaContents(orbcove9aa, "humanskull") then
skull_found = true
humanskull_1:destroy()
sfjnd_wooden_2:open()
sfjnd_metal_1:close()
sfjnd_metal_2:close()
else
if orbcove9aaContents(orbcove9aa, "serpent_bracer") then
sfjnd_wooden_2:open()
sfjnd_metal_1:close()
sfjnd_metal_2:close()
else
sfjnd_wooden_2:close()
sfjnd_metal_1:open()
sfjnd_metal_2:open()
end
end
end
end
Re: [Map for CFD2012 ] "The Descent" -File and discussion th
Posted: Wed Dec 05, 2012 9:14 pm
by SpiderFighter
Ancylus wrote:Oh right, I forgot that you wanted to destroy the skull. In that case it's best to use a variable to keep track of whether it has been placed. Here's a slightly modified version of your code. (Although I don't quite see how replacing the bracer would break your script.)
Code: Select all
skull_found = false
function orbcove9aaContents(entity, item)
for i in entity:containedItems() do
if i.name == item then
return true
end
end
return false
end
function orbcove9aaCheck()
if not skull_found then
if orbcove9aaContents(orbcove9aa, "humanskull") then
skull_found = true
humanskull_1:destroy()
sfjnd_wooden_2:open()
sfjnd_metal_1:close()
sfjnd_metal_2:close()
else
if orbcove9aaContents(orbcove9aa, "serpent_bracer") then
sfjnd_wooden_2:open()
sfjnd_metal_1:close()
sfjnd_metal_2:close()
else
sfjnd_wooden_2:close()
sfjnd_metal_1:open()
sfjnd_metal_2:open()
end
end
end
end
Hmm...I don't know why either, but this acted exactly the same as my other script: Remove the bracer and the ogre doors open, put it back and ogre doors close, but then you can pick up the bracer again and nothing happens.
Re: [Map for CFD2012 ] "The Descent" -File and discussion th
Posted: Wed Dec 05, 2012 9:47 pm
by Ancylus
SpiderFighter wrote:Hmm...I don't know why either, but this acted exactly the same as my other script: Remove the bracer and the ogre doors open, put it back and ogre doors close, but then you can pick up the bracer again and nothing happens.
I just tried it and it worked fine. How is your alcove connected to the script? It should have a single connector with Event
any and Action
orbcove9aaCheck, and Activate Always should be enabled. And do you have any other scripts affecting any of these entities?