How hacky with I6/custom parsing do you want to get?
The problem you have is that when the parser is trying to match a grammar line that requires one or more nouns but they have been omitted from the typed command, it REALLY REALLY wants to infer a noun (or second noun) itself, and will only ask the player to supply one when it is unable to find a single best guess.
The first thing it tries to do is identify (if it can) just one thing that makes sense in context. For example, if you type ‘give’, for the first noun it will automatically choose the thing carried by the player if the player only carries one thing.
If more than one thing makes sense in context, the parser will then instead go on to calculate a compound score for all things in scope, giving a bonus to any that made sense in context.
However, if what the player typed corresponds to any ‘Does the player mean’ rule, the score it gets from that will override all other considerations when the parser tries to choose a ‘best guess’ (because the scores from DTPM rules are so large), so if only one thing in scope fits a ‘Does the player mean’ rule with outcome ‘it is likely’ or ‘it is very likely’, that thing will automatically be chosen.
All this means that to get what you want you will either need to
(i) intervene before the parser gets going (by putting code to get input and manipulate the player’s command in an ‘After reading a command’ rule)
(ii) rejig the parser itself to behave differently
(iii) have simpler grammar lines that match what the player typed (e.g. understand "insert" as inserting it into
, `understand “insert [things preferably held]” as inserting it into) which will then fire the ‘supplying a missing noun’ or ‘supplying a missing second noun’ rules to get input to complete the command- these will fire before any DTPM rules.
EDIT
(iv) as Zarf suggests, manipulate the scenario so there is NEVER one best guess (can get tricky- Zarf’s trick will ensure that there’s always more than one thing that makes sense in context for giving, dropping or inserting, but when the parser then moves on to scoring you can only manipulate that through DTPM rules and if you’ve got broadly-stated DTPM rules like ‘doing something with the reusable-sky’, one thing is still quite likely to come out as the single highest-scoring winner)
(v) Alternatively, ensure that your DTPM rules always pick the winner you want, or exclude the ones you don’t want, or include/exclude the actions or group of actions you do/don’t want to interfere with. For example, if you want to specifically exclude inserting or giving the sky, you can do that in your DTPM rule:
Does the player mean doing anything to reusable-sky when ((not giving) and (not inserting)) and (player is in (REGION) and the location is not (ROOM IN THAT REGION):