No nothing related to that is called in process(). This is the bit of code that seems to have caused it after I fixed the error relating to the signal I first posted:
xp_gain(0, total_xp_gain)
yield(self, "xp_done")
The xpdone signal is emitted at the end of the xpgain fucntion which looks like this:
func xp_gain(actor, amount):
var level_up = false
party_control[actor].get_node("XPBar").max_value = 5*party_characters[actor].level
party_control[actor].get_node("XPBar").value = party_characters[actor].xp
var remaining_amount = amount
for i in range(5):
party_control[actor].get_node("XPBar").update_value(party_characters[actor].xp + remaining_amount)
remaining_amount = remaining_amount - (party_control[actor].get_node("XPBar").max_value - party_control[actor].get_node("XPBar").value)
yield(self, "next")
if party_control[actor].get_node("XPBar").value == party_control[actor].get_node("XPBar").max_value:
level_up = true
party_characters[actor].level += 1
party_characters[actor].xp = 0
text_box.text = "%s has gained a level!" % party_characters[actor].character_name
text_box.scroll_start()
yield(self, "next")
party_control[actor].get_node("XPBar").max_value = 5*party_characters[actor].level
party_control[actor].get_node("XPBar").value = 0
yield(get_tree().create_timer(0.5), "timeout")
if remaining_amount <= 0:
party_characters[actor].xp = party_control[actor].get_node("XPBar").value
call_deferred("emit_signal", "xp_done")
break
I've cut out some of the decidedly irrelevant parts here so yea it's a pretty long function. The "next" signal is emitted both when a progress bar (in this case XP) is done filling up and when text is finished being written (I use scrolling text).
To clarify the error that I got in this case was that it resumed end_battle() (the function which the first code bit is from) after yield and stated once again that the script was gone. I know this is kind of a mess, but I can't seem to replicate the error again, so that makes it hard to get more specific.