You are looking at a material called difficult

This material can be used to make things a bit harder to do.

It requires some preparation.

Commands that currently work with this material: use, go

Step 1. Create the object, or choose one you already created.

Step 2. Put this material on the object

material it as _difficult_

Step 3. Script the object.

Make a difficultdata block that sets the following variables: $dcommand, $dlevel, $dskill, $dskillcap, and $dskilltip.

Then script something for failure under a fail* block (where * is the command name you put in $dcommand).

If you don't do that, then the following scripts will happen by default:

##difficultdata:
$dcommand = 'use';
$dlevel = 5;
$dreq = 0;
$dskill = 'problem solving';
$dskillcap = 10;
$dskilltip = 69106;

##failuse:
"[$init_obj] has trouble figuring out [$target]";

Note: double-quotes appear as ", so if you copy/paste the above you will need to change them back.

The settings:
$dcommand - The command that will be difficult when this object is the target (or second).
$dlevel - The value used for the skillcheck.
$dreq - The minimum skill required to even attempt this.
$dskill - The skill to be compared with the command.
$dskillcap - If the player doesn't have this skill, cap it at this value.
$dskilltip - if the player doen't have the skill, this is the object id of what tips the player on how to increase their 1st cap. find: [69106] to see how the above example is set up.

failuse - This block is called whenever the player tries to use the object but fails the skill-check. Other block names could be failpush, failpull, failgo, failget, etc.

Skill checks
Skill checks are only performed if the player meets the minimum $dreq. This is the basis for the spell system, where spells can only be cast if one trains 1st within the appropriate school, and some trainers refuse to train those who have used skills they are strongly against.

To pass a skill check, the system generates a random number between 0 and the sum of the player's skill value with the $dlevel value. If the number is higher than the $dlevel value, then they pass the test. If the number is less, then the player is awared a point towards the next level of that skill.

Step 4. Prepare the object

init it

The material will read the values in the difficultdata block and assign them to the material's values. Then it will report back with all of the difficulties placed on the object (uhh... when Thorn gets that report done).

Step 5. Repeat step 3 and 4 for each additional command.

Change the script in the difficultdata block and prepare again via the init command to make it difficult for more commands.

For example, let's say you have a trumpet that is hard to play. You could require a skill like 'music' for the use, play, and blow commands. Since the commands are synonymous, just edit the $dcommand to each command then prepare the object with init to add it.

And finally...
If you ever decide you don't want the object to be difficult, simply remove the _difficult_ material.

Or perhaps you messed up and want to start over, simply material it as _easy_, then init it. The easy material will remove the settings prepared previously with the _difficult_ material. Now replace _easy_ with _difficult_ and go to step 3.

think I could even make myself difficult
Code