inkgd icon indicating copy to clipboard operation
inkgd copied to clipboard

call_external_function errors when a parameter is populated with a blank/Nil value

Open Bard09 opened this issue 1 year ago • 0 comments

Describe the bug Have an External Function in your Ink with a parameter that is populated with a blank value eg. "", you get the following error on line 1411 in ink_story.gd (Godot4 branch) when you handle the External Function.

while i < number_of_arguments:
		var popped_obj = InkUtils.as_or_null(self.state.pop_evaluation_stack(), "Value")
		var value_obj = popped_obj.value_object
		arguments.append(value_obj)

		i += 1

The error in this case is: Invalid get index 'value_object' (on base: 'Nil').

popped_obj renders as Void when I do a print on it.

To Reproduce

  1. Add an External Function in Ink with a parameter
  2. In your Ink code, call the External Function and populate the parameter as ""
  3. Bind/call the External Function via InkGD. You'll get the error documented above.

Expected behavior Null/blank values passed into External Functions are considered acceptable values and do not throw errors. In my specific scenario, I have a random variable that populates 25% of the time. In the scenarios when it is blank, I'd like that blank result to be passed via External Function the same way as any other parameter. I can technically workaround this with a specific nuller External Function, but that's not my preference.

Ink files ink_story.gd

Environment:

  • OS: Windows 11
  • Godot version: Godot 4.2 mono
  • inkgd version: godot4 branch

Bard09 avatar Feb 02 '24 07:02 Bard09