How to check if player is wearing an object possibly by attribute or flag?

I'm trying to make a function to see if the player is wearing some kind of restraints. Like, if they're in handcuffs, it would be IsWristsRestrained = true.
I'd like to have the function checking what the player is wearing to see if any worn object has the attribute, in this example, wristrestraint = true or similar (easy to make one of the default attributes for wearables a boolean like that). Or, if I must, set up a script to assign the same flag to objects on game start, though that's a little more annoying.
But I can't seem to figure out how to have the game check worn objects for that attribute/flag. The closest I can get is checking every carried object, but that makes things difficult if they're just carrying a pair of handcuffs and aren't actually restrained. Any ideas how I can set this up?


I think there might be built-in functions I've forgotten about that could help you; but if not, I'd create a function something like this.

Function name: CheckWornAttribute
Parameters: attr
Type: Boolean
Script:

foreach (obj, GetAllChildObjects (game.pov)) {
  if (GetBoolean (obj, attr) and GetBoolean (obj, "worn") and GetBoolean (obj, "visible")) {
    return (true)
  }
}
return (false)

Then you could do something like:

if (CheckWornAttribute ("wristrestraint")) {
  // Do whatever it is
}

This is beautiful Mr. Angel. Can this be modified to check the integer values of that found attribute and return the total of them?

Say if each object had a magicbonus, is there a modification that can not only find the magicbonus attribute, but tally up the sum of all the values? +1, +2, -1 ?


This is beautiful Mr. Angel. Can this be modified to check the integer values of that found attribute and return the total of them?

Off the top of my head…

<function name="SumAttributeOfWornObjects" parameters="attr" type="int32">
  total = 0;
  foreach (obj, GetAllChildObjects (game.pov)) {
    if (HasInt (obj, attr) and GetBoolean (obj, "worn") and GetBoolean (obj, "visible")) {
      total = total + GetInt (obj, attr)
    }
  }
  return (total)
</function>

Mr Angel, your function worked perfectly. I can't thank you enough for your help, this will streamline so much of the process!


This topic is now closed. Topics are closed after 60 days of inactivity.

Support

Forums