Making a Turnscript debuger

Talon
08 May 2020, 15:15

For my games I tend to use alot of turnscripts, and as tends to happen they like to clobber each other. I'd like to make a simple script to let a player manually turn them off one by one.. the code i have so far is

SetObjectFlagOn (player, "DEBUG")
foreach (x, AllTurnScripts()) {
  if (x.enabled=True) {
    msg (x.name)
    Ask ("Would you like to disable this Turnscript") {
      if (result) {
        x.enabled = False
      }
    }
  }
}

Is there a way to let the script pause for input from the player then go on? Was thinking setting it up to have the script end after the players choice but if a script didn't want to be disabled that would pretty much ruin it, any sugjestions?


mrangel
08 May 2020, 15:53

Is there a way to let the script pause for input from the player then go on? Was thinking setting it up to have the script end after the players choice but if a script didn't want to be disabled that would pretty much ruin it, any sugjestions?

Not easily. I'd suggest something like this (assuming this is a command):

if (not HasAttribute (this, "turnscripts_to_check")) {
  this.turnscripts_to_check = FilterByAttribute (AllTurnScripts(), "enabled", true)
}
if (ListCount (this.turnscripts_to_check) > 0) {
  x = ListItem (this.turnscripts_to_check, 0)
  msg (x.name)
  Ask ("Would you like to disable this Turnscript") {
    x = ListItem (this.turnscripts_to_check, 0)
    list remove (this.turnscripts_to_check, x)
    if (result) {
      x.enabled = false
    }
    // run this script again to handle the next one
    do (this, "script")
  }
}
else {
  msg ("No more scripts to disable")
}

Talon
08 May 2020, 18:08

Will give that a try, currently just using it as a verb attached to a debug item(Just easier for me when futzing around with things that i don't want the players to get till i have mostly functional) The logic should work there as well if Im reading your code correctly

---Edit
Hmm it comes back with a compiling error(My eternal Nemisi, "this" )
"Error running script: Error compiling expression 'ListItem (this.turnscripts_to_check, 0)': Unknown object or variable 'this'"


mrangel
08 May 2020, 20:22

Sorry, wasn't thinking clearly there. Within an Ask, there is no this. So it would have to be the name of the object.

(And if it's a verb, you'd have to change do (this, "script") to do (name_of_object, "name_of_verb"))