'an object with this type may be shot
define type <shootable>
action <BeforeShoot> doaction <$thisobject$; OnShoot>
action <OnShoot> {
'default functionality
doaction <$thisobject$; AfterShoot>
}
define action <AfterShoot> {
}
end define
define object <target>
type <shootable>
end define
'an object with this type may shoot
define type <shooting>
action <BeforeShooting> doaction <$thisobject$; OnShooting>
action <OnShooting> {
'default functionality
doaction <$thisobject$; AfterShooting>
}
define action <AfterShooting> {
}
end define
define object <gun>
type <shooting>
type <shootable>
end definecommand <shoot #@noun#> {
'Hmmmm?
}
command <shoot #object# with gun> {
# Step 1: search for a gun in your inventory etc... so sort out what your GUN is
# Step 2: search for your #object# that is going to be shot.. Make sure it isn't the gun from Step 1
}
command <shoot #object#> exec command <shoot #object# with gun>command <shoot #object# with gun> {
Yes, #@object# is purposefully left out since you are doing your own parsing... As you said - you don't want the user to get prompted for "which gun do you mean" type stuff.
I want to avoid prompting the player for information about this, if possible.
... as long as you make it CLEAR to the player that "shoot #@object#" is basically the short version of "shoot#@object# with gun", then I see no problem.