Construction Set Error Check Results

From Project Tamriel Wiki
Jump to navigation Jump to search

The Construction Set's Error Check Results is a button at the bottom right of the dialogue window.

Unlike normal scripts, the scripts in dialogue results are not pre-compiled until they're triggered in the game, and by default they don't get error-checked by the Construction Set. Error Check Results makes the Construction Set simulate the scripts in all dialogue results and progressively give reports in pop-up windows as well as in Warnings.txt.

It is a valuable tool for detecting simple syntax errors or ID errors, with two drawbacks:

  • YOU MUST NEVER SAVE YOUR FILE after using Error Check Results. In the process of simulating dialogue results, it applies all changes to global variables, at the minimum modifying their default values.
  • It will always report a number of false positives, detailed below.

For other information on the Construction Set, refer to the Construction Set Tips instead.

False Positives

These are some cases where errors reported by Error Check Results will not give any actual errors in the game.

References That Do Not Exist Yet

Error Check Results reports errors when there is a reference to an object instance and no such instance exists. So far so good.

In dialogue results, however, it is permissible to refer to objects which do not yet exist anywhere in the loaded files' cell records, but which, by the time the dialogue is run, will necessarily have been created in the game or loaded from another plugin. (This is in contrast to compiled scripts, which can only target an explicit ID if an instance of that ID has been placed in the Construction Set, and only the first instance that existed). Error Check Results will, logically enough, still report errors in that case – an example is in Tamriel_Data's Orgnum Coffer, whose dialogue lines only become accessible once the coffer is dropped on the ground in the game:

Line 2 function reference object "T_Com_UNI_KingOrgnumCoffer_01" not found.

Note that, unlike other reports, this one won't copy the corresponding dialogue line's text in Warnings.txt.

References That Are Not Persistent

Again, targetting non-persistent references (instances of objects without References persist ticked) seems permissible for dialogue results where it wouldn't be for compiled scripts. This results in a simple warning: Object '...' is not persistent. Its presence is not guaranteed in game.

Implicit Local Variable Inside a Condition

Dialogue results implicitly target whoever speaks the line if no explicit target is specified. When a local variable on the speaker is implicitly checked inside a condition – for instance the variable short control in the condition If ( control == 1 ) – Error Check Results will report Script Error: EXPRESSION likely followed by Right eval or Left eval, as it apparently can't see that the speaker possesses the local variable, even in dialogue lines that specify a Speaker ID condition.

The error is in that case incorrect – the script will work. The false positive report can be prevented by giving the variable an explicit target, in this example If ( "SpeakerID".control == 1 ).

Implicit Local Variable Inside an Operation

Similar to the above, with an example in the Tribunal topic "selling off": the local variable rats on the right side of the operation set rats to rats + 1. Error Check Results will report Expression Error: SYNTAX and Set expression returned an error.

Similarly, in simple cases the false positive report could be prevented by giving the variable an explicit target, in this example set "rerlas mon".rats to ( "rerlas mon".rats + 1 ). When the operation involves both local variables and global variables, adding explicit references will not prevent the error report.

Local and Global Variables Inside an Operation or Condition

Similar to the above two cases but when global variables are also involved, Error Check Results will report Expression Error: SYNTAX and Set expression returned an error.

Unlike the previous two cases, such error reports can not be prevented by simple edits.

Local Variables and Script Functions, or Script Functions Inside an Operation

Similar to the above two cases, but when certain script functions are also involved, Error Check Results will report Expression Error: SYNTAX and Set expression returned an error.

Where several GetDeadCount are summed inside an explicit local variable, Error Check Results reports Expression Error: SYNTAX and Set expression returned an error.

Where several GetJournalIndex checks are summed inside a local variable, Error Check Results reports Expression Error: BADOBJECTPOINTER and Set expression returned an error.

More cases may exist when functions are compared or summed inside a condition; it is unclear at the time of writing.

These error reports can not be prevented by simple edits.

Known False Positives in Tamriel Rebuilt

When using Error Check Results on your quest/dialogue claim (remember again: YOU MUST NEVER SAVE YOUR FILE after using it), it is usually enough to disregard any errors that don't mention anything you're working on.

When using it to error-check the entire project main or section files, it is useful to know which are known false positives. To that end, copied below is the state of Error Check Results, including disregarded errors from all the original game files, TR_Mainland.esp/.esm, and Tamriel_Data.esm, updated as of June 2021 (errors in bold are not false positives but actual errors from Data).

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "unlock Shamirr's bracers"
   "Shamirr is sorry to hear that, but %PCName did enough already. Farewell, %PCName. Shamirr has to find a way to his homeland even with his arms shackled."

Expression Error: BADOBJECTPOINTER in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "swindling Dark Elves"
   "Did you find out anything, %PCName?"

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "fight my champion"
   "That is correct. I have come to know you a bit, %PCName. I believe you can be of some use to me. But the plans I have will require someone of great strength or wit. Perhaps both. The time has come for you to prove this to me. You will return here tomorrow, and you will duel Karrod. If you are able to defeat him, we will discuss my plans for you."

Script Dialogue CompileAndRun
Dialogue topic CO_Stock was not found on line 3.
Compiled script not saved!
==>CompileAndRun problem was found in Topic "stock certificate"
   "Very well. Here you are."

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "troublesome slave"
   "You've done an amazing job, %PCName. I've never seen a change like that in a slave. You more than deserve this reward."

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "so much to write"
   "Did you bring me ten sheets of paper? I need them, there is too much that needs to be documented, in case Indoril Llathsa returns!"

Script Error: EXPRESSION in Dialogue CompileAndRun
Right eval
==>CompileAndRun problem was found in Topic "Temple vault"
   "Very well. Stand back while I raise the gate."

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "selling off"
   "Here is one of my finest pack rats.  He'll follow you around, right behind you, wherever you go. AND he'll carry small burdens for you. But take good care of him. Seems a shame to eat the poor little fellows, after all the trouble I have in capturing them and training them. But.. the customer is always right, and they're yours to do with as you wish."

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "selling off"
   "Thanks, %PCRace. Here is your very own pack rat. He'll follow you around, right behind you, wherever you go. AND he'll carry small burdens for you. But take good care of him. They don't grow on trees, you know."

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "selling off"
   "Here is one of my finest pet rats. He'll follow you around, right behind you, wherever you go. But take good care of him. They're hard to train, you know. Seems a shame to eat the poor little fellows, after all the trouble I have in capturing them and training them. But.. the customer is always right, and they're yours to do with as you wish."

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "selling off"
   "Thanks, %PCRace. Here is your very own rat. He'll follow you around, right behind you, wherever you go. Come back anytime if you need another or want a replacement!"

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "selling off"
   "Here is one of my finest pet scribs. He'll follow you around, right behind you, wherever you go. But take good care of him. They're hard to train, you know. Seems a shame to eat the poor little fellows, after all the trouble I have in capturing them and training them. But.. the customer is always right, and they're yours to do with as you wish."

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "selling off"
   "Thanks, %PCRace. Here is your very own scrib. He'll follow you around, right behind you, wherever you go. Come back anytime if you need another or want a replacement!"

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "cursed gems"
   "You can't be serious. This land is peppered with Daedric ruins! And the Dark Elves warn off anybody trying to approach them. There has to be plenty of treasure, and gems, left untouched... At least for one resourceful enough to deal with whatever guards them."

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Greeting "Greeting 1"
   "Shamirr understands. %PCName has helped enough. Shamirr thanks %PCName and will have to try to escape braced. Farewell, %PCName!"

Script Dialogue CompileAndRun
You need to enter a count on line 1?
Compiled script not saved!
==>CompileAndRun problem was found in Greeting "Greeting 3"
   "Oh, what a sickening sight. What cruel coincidence! I wish I could say I don't recall your name, %PCName, but my hinges still creak at the memory of such a maladaptive malingerer. Well, go on then. You, of all people, know how this works."

Script Dialogue CompileAndRun
Line 2 function reference object "T_Com_UNI_KingOrgnumCoffer_01" not found.
Script Dialogue CompileAndRun
You need to enter a count on line 2?
Compiled script not saved!
==>CompileAndRun problem was found in Greeting "Greeting 3"
   "Oh, just my luck; another one. I really can't stand you adventurer types. You think you can just barge in wherever you please and cart off everything that isn't nailed down! Hmm? 'You've never met talking furniture before'? Well, your limited worldiness is no"

Script Dialogue CompileAndRun
You need to enter a count on line 1?
Compiled script not saved!
==>CompileAndRun problem was found in Greeting "Greeting 3"
   "Please, just reach your grubby hands in and help yourself. I truly feel honored to serve you, mortal. No, really, I mean it."

Script Dialogue CompileAndRun
You need to enter a count on line 1?
Compiled script not saved!
==>CompileAndRun problem was found in Greeting "Greeting 3"
   "Once again, the mighty adventurer has misplaced their purse. Go ahead, rob me of my riches; it's not like I need them."

Script Dialogue CompileAndRun
You need to enter a count on line 1?
Compiled script not saved!
==>CompileAndRun problem was found in Greeting "Greeting 3"
   "Yes, mortal, loot me once more of my precious treasures; I don't mind at all. It's my favorite activity and the sole purpose of my existence."

Script Dialogue CompileAndRun
You need to enter a count on line 1?
Compiled script not saved!
==>CompileAndRun problem was found in Greeting "Greeting 3"
   "Coinless again, %PCRace? That's just great. Really."

Script Dialogue CompileAndRun
You need to enter a count on line 1?
Compiled script not saved!
==>CompileAndRun problem was found in Greeting "Greeting 3"
   "What is it this time, mortal? Oh, you're broke and want to plunder my innards once more? How curious. I really wasn't expecting that from you."

Script Error: EXPRESSION in Dialogue CompileAndRun
Right eval
==>CompileAndRun problem was found in Greeting "Greeting 5"
   "Leka-these, n'hawe? Ana-se alosthe."

Script Error: EXPRESSION in Dialogue CompileAndRun
Right eval
==>CompileAndRun problem was found in Greeting "Greeting 5"
   "Hlena-se ald serpuul. Hen enante-se hlenath ga'esa serpu'ul. Hlena-sethe ka'rat meru, shil havan-se julanthe."

Script Dialogue CompileAndRun
Only local variables allowed on line 4?
Compiled script not saved!
==>CompileAndRun problem was found in Greeting "Greeting 5"
   "Oh no, not another Malakite. I have enough worries without you barging in here, Orc."

Script Dialogue CompileAndRun
Only local variables allowed on line 2?
Compiled script not saved!
==>CompileAndRun problem was found in Topic "go free"
   "There's not much to say. I was a simple laborer back in the marsh. One day I got slightly drunk and fell asleep; when I woke up I was in a cage. Now they tell me I'm a slave and whip me when I tell them I'm an Imperial citizen."

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "Shamirr"
   "You say you have killed Dras Varethi? That was quite bold of you, but it was not bright to leave the cat alone and unguarded. It is as good as gone. You will understand I cannot give you any reward for letting the slave escape, but you have dealt with the thieving Telvanni, and for that you still deserve half the gold."

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "Shamirr"
   "You say you have killed Dras Varethi? That was quite bold of you, but it was not bright to leave the cat alone and unguarded. It is as good as gone. You will understand I cannot give you any reward for letting the slave escape, but you have dealt with the thieving Telvanni, and for that you still deserve half the gold."

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "Shamirr"
   "Have you not brought the cat with you? Are you really so dim-witted? It is gone by now, thanks to your negligence, so do not expect any form of payment. To hell with it -- we had to feed it and it barely gathered its daily stint of crop. Now we must deal with this conjurer who believes he can steal slaves from us wth impunity. Go! I have no need for you anymore."

Expression Error: SYNTAX in Dialogue CompileAndRun.
Set expression returned an error.
==>CompileAndRun problem was found in Topic "Calitia"
   "Where's that damn Hlaalu rogue? We're losing our patience..."

Script Dialogue CompileAndRun
Dialogue topic MS_MatchMakeFons was not found on line 1.
Compiled script not saved!
==>CompileAndRun problem was found in Topic "women"
   "Well, I suppose that figures.  You know what they say about the cute ones - they always have ugly friends, anyway.  But, ah, let me know if you should happen to run into any cute girls, will you?  I'm sure they'd be anxious to find out what you're going to miss out on..."