What's the (room-)attribute for ''Objects here go to:''?

Curt A. P.
21 Dec 2021, 11:27

In an object's room tab is the option to set an object where dropped objects go to. I want to know what the attribute for this option is, because I want it to be an expression.
(Couldn't find it in the Documentation)


DarkLizerd
21 Dec 2021, 22:21

Not sure how many people use that option, but...
If you are climbing a tree, and you drop something, it could be used to drop that object to the ground. (IE the room the tree in in.)
Or, you are in a room where the floor is a grate, anything dropped would fall to the room below the grate.
At least, that's my thought.


Curt A. P.
22 Dec 2021, 08:23

If you are climbing a tree, and you drop something, it could be used to drop that object to the ground. (IE the room the tree in in.)

Yes, and if the tree is a randomly cloned object, an expression for that option would be useful (in the tree's room tab):
Objects dropped here go to: this.parent or exit.to

Or, you are in a room where the floor is a grate, anything dropped would fall to the room below the grate.

Maybe some items are to large to slip through the grate. Anyway, it seems like the Quest UI couldn't show an expression as that option's value.
Makes more sense to handle it via the drop script for each object individually...


mrangel
22 Dec 2021, 08:40

I think the only time I've used it was remaking an 80s game "Circus", where objects dropped on the tightrope land in the ring below.

The attribute is dropdestination. Sadly, it can't be an expression; it needs to be an object attribute. However, if you're using the desktop version of Quest there's nothing to stop you altering the DoDrop function to allow it to be an expression.

Somethinglike this (click for code) Change this part: ``` if (HasObject(game.pov.parent, "dropdestination")) { destination = game.pov.parent.dropdestination } else { destination = game.pov.parent } ```1 to ``` destination = game.pov.parent.destination if (TypeOf (destination) = "string") { destination = eval (destination, QuickParams ("this", game.pov.parent, "object", object)) } if (Equal (destination, null) or not TypeOf (destination) = "object") { destination = game.pov.parent } ```

It's worth noting that if you are writing a specific "drop" script for the object, this will be accessible as the `destination` variable. It's important to make sure that your custom drop scripts use `destination`, because those scripts are also called for "put object in box" commands – it seems that people on the forum often recomment code using `player.parent` or `game.pov.parent` in a drop script, which would have the side effect of meaning that ytou can't put those objects in a container.

mrangel
22 Dec 2021, 08:53

Sorry, I missed this part of the question:

Yes, and if the tree is a randomly cloned object, an expression for that option would be useful (in the tree's room tab):
Objects dropped here go to: this.parent or exit.to

In this case, you don't need it to be an expression. You could do something like:

newclone = CloneObjectAndMove (tree, SomeExpressionToDetermineWhereToPutIt())
newclone.dropdestination = newclone.parent

when you're creating the clone.
Or if it might move around, you could give it a changedparent script that simply says:

this.dropdestination = this.parent