ainslec / adventuron-issue-tracker

Adventuron Issues Tracker
4 stars 0 forks source link

[BUG] n_char_parser doesn't disambiguate properly when there's another candidate. #429

Open nww02 opened 3 years ago

nww02 commented 3 years ago

I'm trying the n_char_parser mode, and am finding that if there's another potential match (for example if I have a filled_bottle and an empty_bottle) then naturally only one exists at any point in time, the other is in the ether, depending on whether the user has filled it or not.

Unfortunately, when in n_char_parser mode, the game seems to be unable to disambiguate (either automatically, OR manually, even with category set to "present") and select the bottle that's in the room / inventory.

With the following code, you can attempt to just use the usual "get bottle", or try the "lift bottle" to test the manual disambiguation. Neither work.

start_at = my_location

game_settings {

   n_char_parser = 5

}

locations {

   my_location : location "You are in a room." ;
}

objects {

  empty_bottle   : object "an empty bottle"
                     at    =  "my_location"
                     msg   =  "Useful." ;

   water_bottle   : object "a bottle of water"
                     msg   =  "Useful." ;

   oil_bottle     : object "A bottle of oil"
                     msg   = "Useful.";

on_command {

   : match "lift _"  {
      :disambiguate_s1 category="present";
      :print {("Attempting to get "+s1())};
      :get object->(s1());
   }

    :match "make water" {
      :create "water_bottle";
   }

   :match "make oil" {
      :create "water_bottle";
   }
}

You can use the "make water" and "make oil" to apparate the other two variants, and you'll see it's not just because they're in the ether...