Newbie question about containers
Foamhead
13 Jan 2018, 10:21I have a container, a medicine cabinet and inside is a bottle of painkillers. I want the painkillers to only be visible when the cabinet is open. I have it set so it makes the painkillers visible when the cabinet is open, and disappears when it's closed.
Problem is when I click to close the medicine cabinet the parser says it's already closed. Huh?
When it is telling me the container is closed when I never closed it?
How do I make this work.
Also, I want to have a limited number of uses for the bottle of painkillers. How might I accomplish this? Thanks in advance for any help.
XanMag
13 Jan 2018, 15:50Make sure you manually add “open object” script. If you use a script of your own you must also add the open script on your own. Same when you close object manually.
hegemonkhan
13 Jan 2018, 15:58the built-in 'helper' Scripts/Functions (such as: 'open', 'close', 'onopen', 'onclose',etc) really confuse things up, at least for myself anyways...
what actually controls ' being open vs being closed' is the built-in 'isopen' Boolean Attribute, an example in/as code scripting:
medicine_cabinet.isopen = true // it's open
medicine_cabinet.isopen = false // it's closed
so, in your 'open' and 'close' Verbs' scripting, you need to add these lines, an example:
<object name="medicine_cabinet">
<inherit name="container_closed" />
<attr name="isopen" type="boolean">false</attr>
<attr name="open" type="script">
if (this.isopen) {
msg (this.name + " is already open, silly")
} else {
this.isopen = true
msg ("You open the " + this.name + " up.")
}
</attr>
<attr name="close" type="script">
if (this.isopen) {
this.isopen = false
msg ("You close the " + this.name + ".")
} else {
msg (this.name + " is already closed, silly")
}
</attr>
</object>
<verb>
<property>open</property>
<pattern>open</pattern>
<defaultexpression>You can't open that!</defaultexpression>
</verb>
<verb>
<property>close</property>
<pattern>close</pattern>
<defaultexpression>You can't open that!</defaultexpression>
</verb>
Foamhead
13 Jan 2018, 17:27Non-coder here, so you just hurt my head :)
Thanks for the help guys. I finally figured out what I was doing wrong.
The Pixie
13 Jan 2018, 17:32You should not need to do any scripting at all. Just select it as aclosed container, and tick the transparent checkbox.
Foamhead
13 Jan 2018, 17:36I found it. Now to figure out a way to have a bottle of painkillers that run out.