Another clothing question.
BlitzDotExe
11 Dec 2021, 23:27I'm trying apply sizing to my clothes, and the web help section on clothing gives me the code to apply that, but it doesn't tell me where to input said code, and for the life of me, I can't figure it out. I tried putting it in the After wearing the object
section, but as the name suggests, it puts the item on first, and then I just get a bunch of errors.
The code looks as follows:
if (GetBoolean(object, "toosmall")) {
msg("That is too small for you!")
return (false)
}
return (true)
Also I'm not clear on the object
part of the code. I keep putting shirt.toosmall there, and I think thats where some of the errors are coming from, but what else do I put there? It would also help if I knew what return
actually meant.
mrangel
12 Dec 2021, 10:45There is no variable object
unless you've created one.
In the "after wearing" script (and just about every other script attached to an object), you can refer to the object itself as this
.
Also, you can't use return
in a script attribute; it doesn't do anything useful.
I tried putting it in the
After wearing the object
section
It looks like that code belongs in a function named TestGarment
.
TestGarment is a function which is run when the player tries to wear a garment, and if it returns false the garment isn't worn.
Unfortunately, you can only edit this in the desktop editor; it's not an option online. There is a default function called TestGarment
which always returns true, and the web editor doesn't allow you to modify core functions.
If you want to do it using the web editor, your "after wearing" function would become something like:
if (GetBoolean (this, "toosmall")) {
msg ("That is too small for you.")
_DoRemove (this)
}
OR you could modify the wear
command so that it checks before doing everything else. The online editor doesn't let you modify core commands, either, but you can change them during the game. So you would put this in your game's start script:
wear.script => {
if (multiple and ListCount(object) = 0) {
msg("[NothingToWear]")
}
else{
foreach (obj, object) {
if (multiple) {
OutputTextNoBr(GetDisplayAlias(obj) + ": ")
}
if (GetBoolean (obj, "toosmall") and ContainsReachable (game.pov, object)) {
msg ("That is too small for you.")
}
else {
f = _DoWear(obj)
}
}
UpdateArmour
}
}
(That's mostly the default wear
script with a few lines added. I checked ContainsReachable
so that it only gives the "too small" message for garments the player is carrying; but you might want to change that)
BlitzDotExe
12 Dec 2021, 18:38I am using the desktop version, sorry, I should have specified. So knowing that, how do I alter the TestGarment and other core functions?