could you please, keep your posts a bit shorter? It's a tad difficult to read.
or add some empty lines to split the text into sections.
and use the "code" button to add highlight to code, it's the </>
button.
and you don't need to post the line number before the line. the spaces before each line however are VERY important for gdscript like they are in python.
func _on_player_action_1(location): #signal works, argument incorrect
var dropped = ball.instantiate() #working
add_child(dropped) #working
location = dropped.position #object spawned at scene location and not updated player position
I think this is your problem
you are passing location
which is a Vector2, then you are modifying location, but the variable you are receiving is local to the function, you are receiving a VALUE, not an OBJECT.
at the same time, the mainscript is probably outside player, which means the object is instantiated parallel to player. this means you HAVE to use global_position.
maybe you meant to do:
dropped.position = location
but if you meant to modify the location you received, you should instead pass the object as an argument.