In theory town scripts can't be run from scenario scripts.
In devising an Identify spell for BoA I found that a scenario script could start a dialog node even if nobody was around.
Further, dialog nodes can run town scripts.
In the scenario script a usable item calls state 97, this leads to some choices. Choosing one of them leads to this:
beginstate 130;
if (is_town() == 0)
print_str_color("The spell will only work when you are in a town.",1);
if (is_town() == 1) {
print_str_color("You call upon higher powers.",2);
begin_talk_mode(190);
}
break;
In the town dialog script, this occurs at the end:
begintalknode 190;
state = 100;
personality = 38;
nextstate = 101;
condition = 1;
question = "Run this town script.";
text1 = "It is done.";
code =
run_town_script(21);
break;
I tested this in town 13, Genmar and it worked okay.
Blades of Exile Terrain property #12, Call local special, would seem to be possible via the same indirect route.