You're on the right track, just missing (or unaware of) a few extra steps (coding lines) that are needed, hehe.
1.
http://quest5.net/wiki/Category:All_Fun ... t_Commands (page 1, range: A-S)
2.
http://quest5.net/w/index.php?title=Cat ... h#mw-pages (page 2, range: S-Z)
there's quite a few ways to do this... hmm...
you're dealing with whether an Object "contains or has" other Objects, so you'll need:
1. "if..." Script (
http://quest5.net/wiki/If )
2. "HasObject" Script (
http://quest5.net/wiki/HasObject ) or "Contains" Script (
http://quest5.net/wiki/Contains ) or "ContainsAccessible" Script (
http://quest5.net/wiki/ContainsAccessible ) or "ContainsReachable" Script (
http://quest5.net/wiki/ContainsReachable ) or "ContainsVisible" Script (
http://quest5.net/wiki/ContainsVisible )
3. (optional) 1-3 Boolean Attributes (Booleans are same as Flags) or a "String List" Attribute or an "Object List" Attribute:
Booleans:
"stripped"
"unmade"
"made"
~OR~
String List:
"bed_string_list"
"stripped", "unmade", and "made"
Object List:
(I'm still having trouble with understanding them currently)
4. A "search" (custom) Verb or using a scripted (Run as script) "Look at" (built-in) Verb
-------------------
so for one example:
Object: room
-> Object: bed
->-> Verb: search
"search" Verb:
if (Contains (room.bed, pillow) and Contains (room.bed, quilt) and Contains (room.bed, sheet) = true) {
-> // whatever script
} else if (Contains (room.bed, pillow) or Contains (room.bed, quilt) or Contains (room.bed, sheet) = true) {
-> // whatever script
} else if (Contains (room.bed, pillow) and Contains (room.bed, quilt) and Contains (room.bed, sheet) = false) {
-> // whatever script
}
---------------
err... my bad...
I didn't notice these specifics of yours:
2) Things moved (i.e. anything has been taken or put/the original state is different but it still has objects on it) = "unmade"
3) Stripped (i.e. no objects on the bed except the container/surface/scenery part of the bed) = "stripped"
this stuff is a bit more complicated to implement... hmm...
2) Things moved (i.e. anything has been taken or put/the original state is different but it still has objects on it) = "unmade":
you'll have to work with Object Lists...
http://quest5.net/wiki/Using_Listshttp://quest5.net/wiki/Objectlisthttp://quest5.net/wiki/GetAllChildObjectshttp://quest5.net/wiki/GetDirectChildrenif (not GetDirectChildren (room.bed) = null and Contains (room.bed, pillow) and Contains (room.bed, quilt) and Contains (room.bed, sheet) = false) {
-> // whatever script
}
3) Stripped (i.e. no objects on the bed except the container/surface/scenery part of the bed) = "stripped":
you'll have to do a "foreach" + "checking" scripting...
foreach (object_x, room.bed) {
-> if (HasBoolean (object_x.scenery) = false) {
->-> if (
... err... this is too complicated for my brain at the moment... maybe later I can think clearly on this...