1 /* GemRB - Infinity Engine Emulator 2 * Copyright (C) 2003 The GemRB Project 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License 6 * as published by the Free Software Foundation; either version 2 7 * of the License, or (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 17 * 18 * 19 */ 20 21 #ifndef GAMESCRIPT_H 22 #define GAMESCRIPT_H 23 24 #include "exports.h" 25 26 #include "SymbolMgr.h" 27 #include "Variables.h" 28 #include "Scriptable/Actor.h" 29 #include "System/DataStream.h" 30 31 #include <cstdio> 32 #include <vector> 33 34 // absent from msvc6 35 #ifdef _MSC_VER 36 #ifndef __FUNCTION__ 37 #define __FUNCTION__ "no message" 38 #endif 39 #endif 40 41 namespace GemRB { 42 43 class Action; 44 class GameScript; 45 46 class StringBuffer; 47 48 //escapearea flags 49 #define EA_DESTROY 1 //destroy actor at the exit (otherwise move to new place) 50 #define EA_NOSEE 2 //no need to see the exit 51 52 //displaystring flags 53 #define DS_WAIT 1 54 #define DS_HEAD 2 55 #define DS_CONSOLE 4 56 #define DS_CONST 8 57 #define DS_NONAME 16 58 #define DS_SILENT 32 59 #define DS_SPEECH 64 60 #define DS_AREA 128 61 #define DS_QUEUE 256 62 #define DS_CIRCLE 512 63 64 //verbal constant (bg2), we have a lookup table (vcremap) for other games 65 #define VB_INITIALMEET 0 66 #define VB_PANIC 1 67 #define VB_HAPPY 2 68 #define VB_UNHAPPY 3 // UNHAPPY_ANNOYED 69 #define VB_UNHAPPY_SERIOUS 4 70 #define VB_BREAKING_POINT 5 71 #define VB_LEADER 6 72 #define VB_TIRED 7 73 #define VB_BORED 8 74 #define VB_ATTACK 9 // 5 battle cries, 4 attacks 75 #define VB_DAMAGE 18 76 #define VB_DIE 19 77 #define VB_HURT 20 78 #define VB_AREA_FOREST 21 // these are handled through comment.2da / Actor::GetAreaComment 79 #define VB_AREA_CITY 22 80 #define VB_AREA_DUNGEON 23 81 #define VB_AREA_DAY 24 82 #define VB_AREA_NIGHT 25 83 #define VB_SELECT 26 // -31 select 84 #define VB_COMMAND 32 // -34 select action; -38 rare select, -43 interaction 85 #define VB_INSULT 44 // -46 86 #define VB_COMPLIMENT 47 // -49 87 #define VB_SPECIAL 50 // -52 88 #define VB_REACT 53 // REACT_TO_DIE_GENERAL 89 #define VB_REACT_S 54 // REACT_TO_DIE_SPECIFIC 90 #define VB_RESP_COMP 55 // -57 91 #define VB_RESP_INS 58 // -60 92 #define VB_HOSTILE 61 93 #define VB_DIALOG 62 // DIALOG_DEFAULT 94 #define VB_SELECT_RARE 63 // -64 95 #define VB_CRITHIT 65 96 #define VB_CRITMISS 66 97 #define VB_TIMMUNE 67 98 #define VB_INVENTORY_FULL 68 99 #define VB_PP_SUCC 69 100 #define VB_EXISTENCE 69 101 #define VB_HIDE 70 102 #define VB_SPELL_DISRUPTED 71 103 #define VB_TRAP_SET 72 104 //#define VB_EXISTANCE_4 73 105 #define VB_BIO 74 106 107 //markspellandobject (iwd2) 108 #define MSO_IGNORE_SEE 1 109 #define MSO_IGNORE_INVALID 2 110 #define MSO_RANDOM_SPELL 4 111 #define MSO_IGNORE_HAVE 8 112 #define MSO_IGNORE_RANGE 16 113 #define MSO_IGNORE_NULL 32 114 115 // delta.ids (pst) 116 #define DM_LOWER 1 117 #define DM_RAISE 2 118 #define DM_SET 3 119 120 //attack core flags 121 #define AC_NO_SOUND 1 122 #define AC_RUNNING 2 123 124 //spelll core flags 125 #define SC_NO_DEAD 1 126 #define SC_RANGE_CHECK 2 127 #define SC_DEPLETE 4 128 #define SC_SETLEVEL 8 129 #define SC_INSTANT 16 130 #define SC_AURA_CHECK 32 131 #define SC_NOINTERRUPT 64 132 133 #define ACF_REALLOW_SCRIPTS 1 134 135 //trigger flags stored in triggers in .bcs files 136 #define TF_NEGATE 1 //negate trigger result 137 #define TF_APPLIED 2 //set in living when trigger applied 138 #define TF_ADDED 4 //set in scriptable when trigger added/applied 139 140 #define MAX_OBJECT_FIELDS 10 141 #define MAX_NESTING 5 142 143 typedef std::vector<ieDword> SrcVector; 144 145 struct targettype { 146 Scriptable *actor; //hmm, could be door 147 unsigned int distance; 148 }; 149 150 typedef std::list<targettype> targetlist; 151 152 class GEM_EXPORT Targets { 153 public: Targets()154 Targets() 155 { 156 } 157 ~Targets()158 ~Targets() 159 { 160 Clear(); 161 } 162 private: 163 targetlist objects; 164 public: 165 int Count() const; 166 void dump() const; 167 targettype *RemoveTargetAt(targetlist::iterator &m); 168 const targettype *GetNextTarget(targetlist::iterator &m, int Type); 169 const targettype *GetLastTarget(int Type); 170 const targettype *GetFirstTarget(targetlist::iterator &m, int Type); 171 Scriptable *GetTarget(unsigned int index, int Type); 172 void AddTarget(Scriptable* target, unsigned int distance, int flags); 173 void Clear(); 174 void FilterObjectRect(const Object *oC); 175 }; 176 177 class Canary { 178 private: 179 volatile unsigned long canary; 180 protected: Canary()181 Canary() // protected constructor 182 { 183 canary = (unsigned long) 0xdeadbeef; 184 } ~Canary()185 ~Canary() // protected destructor 186 { 187 AssertCanary("Destroying Canary"); 188 canary = 0xdddddddd; 189 } AssertCanary(const char * msg)190 void AssertCanary(const char* msg) const 191 { 192 if (!CheckCanary()) { 193 error("Canary Died", "Canary([0x%08lX]) != 0xdeadbeef. Message: %s\n", canary, msg); 194 } 195 } CheckCanary()196 bool CheckCanary() const 197 { 198 return (canary == (unsigned long) 0xdeadbeef); 199 } 200 }; 201 202 class GEM_EXPORT Object : protected Canary { 203 public: Object()204 Object() 205 { 206 memset( objectName, 0, 65 ); 207 memset( objectFields, 0, MAX_OBJECT_FIELDS * sizeof( int ) ); 208 memset( objectFilters, 0, MAX_NESTING * sizeof( int ) ); 209 } 210 public: 211 int objectFields[MAX_OBJECT_FIELDS]; 212 int objectFilters[MAX_NESTING]; 213 Region objectRect{}; 214 char objectName[65]; 215 216 public: 217 void dump() const; 218 void dump(StringBuffer&) const; Release()219 void Release() 220 { 221 delete this; 222 } 223 bool isNull() const; 224 }; 225 226 class GEM_EXPORT Trigger : protected Canary { 227 public: Trigger()228 Trigger() 229 { 230 triggerID = 0; 231 flags = 0; 232 objectParameter = NULL; 233 memset(string0Parameter, 0, 65); 234 memset(string1Parameter, 0, 65); 235 int0Parameter = 0; 236 int1Parameter = 0; 237 int2Parameter = 0; 238 pointParameter.null(); 239 } ~Trigger()240 ~Trigger() 241 { 242 if (objectParameter) { 243 objectParameter->Release(); 244 objectParameter = NULL; 245 } 246 } 247 int Evaluate(Scriptable *Sender) const; 248 249 unsigned short triggerID; 250 int int0Parameter; 251 int flags; 252 int int1Parameter; 253 int int2Parameter; 254 Point pointParameter; 255 char string0Parameter[65]; 256 char string1Parameter[65]; 257 Object* objectParameter; 258 259 void dump() const; 260 void dump(StringBuffer&) const; 261 Release()262 void Release() 263 { 264 delete this; 265 } 266 }; 267 268 class GEM_EXPORT Condition : protected Canary { 269 public: ~Condition()270 ~Condition() 271 { 272 for (size_t c = 0; c < triggers.size(); ++c) { 273 if (triggers[c]) { 274 triggers[c]->Release(); 275 triggers[c] = NULL; 276 } 277 } 278 } Release()279 void Release() 280 { 281 delete this; 282 } 283 bool Evaluate(Scriptable *Sender) const; 284 285 std::vector<Trigger*> triggers; 286 }; 287 288 class GEM_EXPORT Action : protected Canary { 289 public: Action(bool autoFree)290 Action(bool autoFree) 291 { 292 actionID = 0; 293 objects[0] = NULL; 294 objects[1] = NULL; 295 objects[2] = NULL; 296 memset(string0Parameter, 0, 65); 297 memset(string1Parameter, 0, 65); 298 int0Parameter = 0; 299 pointParameter.null(); 300 int1Parameter = 0; 301 int2Parameter = 0; 302 //changed now 303 if (autoFree) { 304 RefCount = 0; //refcount will be increased by each AddAction 305 } else { 306 RefCount = 1; //one reference hold by the script 307 } 308 flags = 0; 309 } ~Action()310 ~Action() 311 { 312 for (int c = 0; c < 3; c++) { 313 if (objects[c]) { 314 objects[c]->Release(); 315 objects[c] = NULL; 316 } 317 } 318 } 319 320 unsigned short actionID; 321 Object* objects[3]; 322 int int0Parameter; 323 Point pointParameter; 324 int int1Parameter; 325 int int2Parameter; 326 char string0Parameter[65]; 327 char string1Parameter[65]; 328 unsigned short flags; 329 private: 330 int RefCount; 331 public: GetRef()332 int GetRef() { 333 return RefCount; 334 } 335 336 void dump() const; 337 void dump(StringBuffer&) const; 338 Release()339 void Release() 340 { 341 AssertCanary(__FUNCTION__); 342 if (!RefCount) { 343 error("GameScript", "WARNING!!! Double Freeing in %s: Line %d\n", __FILE__, 344 __LINE__); 345 } 346 RefCount--; 347 if (!RefCount) { 348 delete this; 349 } 350 } IncRef()351 void IncRef() 352 { 353 AssertCanary(__FUNCTION__); 354 RefCount++; 355 if (RefCount >= 65536) { 356 error("GameScript", "Refcount increased to: %d in action %d\n", RefCount, 357 actionID); 358 } 359 } 360 }; 361 362 class GEM_EXPORT Response : protected Canary { 363 public: Response()364 Response() 365 { 366 weight = 0; 367 } ~Response()368 ~Response() 369 { 370 for (size_t c = 0; c < actions.size(); c++) { 371 if (actions[c]) { 372 if (actions[c]->GetRef()>2) { 373 print("Residue action %d with refcount %d", actions[c]->actionID, actions[c]->GetRef()); 374 } 375 actions[c]->Release(); 376 actions[c] = NULL; 377 } 378 } 379 } Release()380 void Release() 381 { 382 delete this; 383 } 384 int Execute(Scriptable* Sender); 385 386 unsigned char weight; 387 std::vector<Action*> actions; 388 }; 389 390 class GEM_EXPORT ResponseSet : protected Canary { 391 public: ~ResponseSet()392 ~ResponseSet() 393 { 394 for (size_t b = 0; b < responses.size(); b++) { 395 responses[b]->Release(); 396 responses[b] = NULL; 397 } 398 } Release()399 void Release() 400 { 401 delete this; 402 } 403 int Execute(Scriptable* Sender); 404 405 std::vector<Response*> responses; 406 }; 407 408 class GEM_EXPORT ResponseBlock : protected Canary { 409 public: ResponseBlock()410 ResponseBlock() 411 { 412 condition = NULL; 413 responseSet = NULL; 414 } ~ResponseBlock()415 ~ResponseBlock() 416 { 417 if (condition) { 418 condition->Release(); 419 condition = NULL; 420 } 421 if (responseSet) { 422 responseSet->Release(); 423 responseSet = NULL; 424 } 425 } Release()426 void Release() 427 { 428 delete this; 429 } 430 431 Condition* condition; 432 ResponseSet* responseSet; 433 }; 434 435 class GEM_EXPORT Script : protected Canary { 436 public: ~Script()437 ~Script() 438 { 439 for (unsigned int i = 0; i < responseBlocks.size(); i++) { 440 if (responseBlocks[i]) { 441 responseBlocks[i]->Release(); 442 responseBlocks[i] = NULL; 443 } 444 } 445 } 446 447 std::vector<ResponseBlock*> responseBlocks; 448 Release()449 void Release() 450 { 451 delete this; 452 } 453 }; 454 455 typedef int (* TriggerFunction)(Scriptable *, const Trigger *); 456 typedef void (* ActionFunction)(Scriptable*, Action*); 457 typedef Targets *(* ObjectFunction)(const Scriptable *, Targets*, int ga_flags); 458 typedef int (* IDSFunction)(const Actor *, int parameter); 459 460 #define TF_NONE 0 461 #define TF_CONDITION 1 //this isn't a trigger, just a condition (0x4000) 462 #define TF_SAVED 2 //trigger is in svtriobj.ids 463 #define TF_MERGESTRINGS 8 //same value as actions' mergestring 464 465 struct TriggerLink { 466 const char* Name; 467 TriggerFunction Function; 468 short Flags; 469 }; 470 471 //createcreature flags 472 #define CC_OFFSET 1 473 #define CC_OBJECT 2 474 #define CC_OFFSCREEN 3 475 #define CC_MASK 3 476 #define CC_CHECK_IMPASSABLE 4 //adjust position (searchmap) 477 #define CC_PLAY_ANIM 8 //play animation 478 #define CC_STRING1 16 //resref is in second string 479 #define CC_CHECK_OVERLAP 32 //other actors 480 #define CC_COPY 64 //copy appearance 481 #define CC_SCRIPTNAME 128 //scriptname in 2nd string 482 483 //begindialog flags 484 #define BD_STRING0 0 485 #define BD_TARGET 1 486 #define BD_SOURCE 2 487 #define BD_RESERVED 3 //playerX resref 488 #define BD_INTERACT 4 //banter dialogs 489 #define BD_LOCMASK 7 //where is the dialog resref 490 #define BD_TALKCOUNT 8 //increases talkcount 491 #define BD_SETDIALOG 16 //also sets dialog (for string0) 492 #define BD_CHECKDIST 32 //checks distance, if needs, walks up 493 #define BD_OWN 64 //source == target, works for player only 494 #define BD_INTERRUPT 128 //interrupts action 495 #define BD_NUMERIC 256 //target is numeric 496 #define BD_ITEM 512 //talk to an item 497 #define BD_NOEMPTY 1024 //don't display '... has nothing to say to you' 498 499 #define AF_NONE 0 500 #define AF_IMMEDIATE 1 501 #define AF_CONTINUE 2 502 #define AF_MASK 3 //none, immediate or continue 503 #define AF_BLOCKING 4 504 #define AF_MERGESTRINGS 8 505 //we could use this flag to restrict player scripts from using dangerous 506 //opcodes, it would be a very useful and easy to implement feature! 507 #define AF_RESTRICTED 16 508 //#define AF_RESTRICTED_LEVEL2 32 //maybe we could use 2 bits for this??? 509 #define AF_SCRIPTLEVEL 64 //this hack will transfer scriptlevel to int0parameter at runtime (changecurrentscript relies on it) 510 #define AF_INVALID 128 511 #define AF_DIRECT 256 //this hack will transfer target from gamecontrol to object1 at compile time 512 #define AF_ALIVE 512 //only alive actors can do this 513 #define AF_CHASE 1024 // ??? actions involving movement ??? 514 #define AF_SLEEP 2048 //only awake actors can do this 515 #define AF_DLG_INSTANT 4096 //instant dialog actions 516 #define AF_SCR_INSTANT 8192 //instant script actions 517 #define AF_INSTANT (AF_DLG_INSTANT|AF_SCR_INSTANT) //only iwd2 treats them separately; 12288 518 519 struct ActionLink { 520 const char* Name; 521 ActionFunction Function; 522 short Flags; 523 }; 524 525 struct ObjectLink { 526 const char* Name; 527 ObjectFunction Function; 528 }; 529 530 struct IDSLink { 531 const char* Name; 532 IDSFunction Function; 533 }; 534 535 #define MAX_TRIGGERS 300 536 #define MAX_ACTIONS 400 537 #define MAX_OBJECTS 256 538 #define AI_SCRIPT_LEVEL 4 //the script level of special ai scripts 539 540 extern void ScriptDebugLog(int bit, const char* message, ...); 541 extern int RandomNumValue; 542 543 class GEM_EXPORT GameScript { 544 public: 545 GameScript(const ieResRef ResRef, Scriptable* Myself, 546 int ScriptLevel = 0, bool AIScript = false); 547 ~GameScript(); 548 549 bool dead = false; // Script replaced itself with another and should be deleted when done running 550 bool running = false; // Script is currently running so defer any deletion to caller 551 GetName()552 const char *GetName() const { return Name; } 553 static void ExecuteString(Scriptable* Sender, const char* String); 554 static int EvaluateString(Scriptable* Sender, char* String); 555 static void ExecuteAction(Scriptable* Sender, Action* aC); 556 557 bool Update(bool *continuing = NULL, bool *done = NULL); 558 void EvaluateAllBlocks(); 559 private: //Internal Functions 560 Script* CacheScript(ieResRef ResRef, bool AIScript); 561 ResponseBlock* ReadResponseBlock(DataStream* stream); 562 ResponseSet* ReadResponseSet(DataStream* stream); 563 Response* ReadResponse(DataStream* stream); 564 Trigger* ReadTrigger(DataStream* stream); 565 static int InParty(Scriptable *Sender, const Trigger *parameters, bool allowdead); 566 567 // Internal variables 568 Scriptable* const MySelf; 569 ieResRef Name; 570 Script* script; 571 unsigned int lastAction; 572 int scriptlevel; 573 public: //Script Functions 574 static int ID_Alignment(const Actor *actor, int parameter); 575 static int ID_Allegiance(const Actor *actor, int parameter); 576 static int ID_AVClass(const Actor *actor, int parameter); 577 static int ID_Class(const Actor *actor, int parameter); 578 static int ID_ClassMask(const Actor *actor, int parameter); 579 static int ID_Faction(const Actor *actor, int parameter); 580 static int ID_Gender(const Actor *actor, int parameter); 581 static int ID_General(const Actor *actor, int parameter); 582 static int ID_Race(const Actor *actor, int parameter); 583 static int ID_Specific(const Actor *actor, int parameter); 584 static int ID_Subrace(const Actor *actor, int parameter); 585 static int ID_Team(const Actor *actor, int parameter); 586 587 //Triggers 588 static int ActionListEmpty(Scriptable *Sender, const Trigger *parameters); 589 static int ActuallyInCombat(Scriptable *Sender, const Trigger *parameters); 590 static int Acquired(Scriptable *Sender, const Trigger *parameters); 591 static int Alignment(Scriptable *Sender, const Trigger *parameters); 592 static int Allegiance(Scriptable *Sender, const Trigger *parameters); 593 static int AnimationID(Scriptable *Sender, const Trigger *parameters); 594 static int AnimState(Scriptable *Sender, const Trigger *parameters); 595 static int AnyPCOnMap(Scriptable *Sender, const Trigger *parameters); 596 static int AnyPCSeesEnemy(Scriptable *Sender, const Trigger *parameters); 597 static int AreaCheck(Scriptable *Sender, const Trigger *parameter); 598 static int AreaCheckObject(Scriptable *Sender, const Trigger *parameter); 599 static int AreaFlag(Scriptable *Sender, const Trigger *parameter); 600 static int AreaRestDisabled(Scriptable *Sender, const Trigger *parameter); 601 static int AreaStartsWith(Scriptable *Sender, const Trigger *parameter); //InWatchersKeep 602 static int AreaType(Scriptable *Sender, const Trigger *parameter); 603 static int Assign(Scriptable */*Sender*/, const Trigger */*parameters*/); 604 static int AtLocation(Scriptable *Sender, const Trigger *parameter); 605 static int AttackedBy(Scriptable *Sender, const Trigger *parameters); 606 static int BecameVisible(Scriptable *Sender, const Trigger *parameters); 607 static int BeenInParty(Scriptable *Sender, const Trigger */*parameters*/); 608 static int BitCheck(Scriptable *Sender, const Trigger *parameters); 609 static int BitCheckExact(Scriptable *Sender, const Trigger *parameters); 610 static int BitGlobal_Trigger(Scriptable *Sender, const Trigger *parameters); 611 static int BouncingSpellLevel(Scriptable *Sender, const Trigger *parameters); 612 static int BreakingPoint(Scriptable *Sender, const Trigger *parameters); 613 static int CalendarDay(Scriptable *Sender, const Trigger *parameters); 614 static int CalendarDayGT(Scriptable *Sender, const Trigger *parameters); 615 static int CalendarDayLT(Scriptable *Sender, const Trigger *parameters); 616 static int CalledByName(Scriptable *Sender, const Trigger *parameters); 617 static int ChargeCount(Scriptable *Sender, const Trigger *parameters); 618 static int CharName(Scriptable *Sender, const Trigger *parameters); 619 static int CheckAreaDiffLevel(Scriptable */*Sender*/, const Trigger *parameters); 620 static int CheckDoorFlags(Scriptable *Sender, const Trigger *parameters); 621 static int CheckPartyAverageLevel(Scriptable *Sender, const Trigger *parameters); 622 static int CheckPartyLevel(Scriptable *Sender, const Trigger *parameters); 623 static int CheckSkill(Scriptable *Sender, const Trigger *parameters); 624 static int CheckSkillGT(Scriptable *Sender, const Trigger *parameters); 625 static int CheckSkillLT(Scriptable *Sender, const Trigger *parameters); 626 static int CheckSpellState(Scriptable *Sender, const Trigger *parameters); 627 static int CheckStat(Scriptable *Sender, const Trigger *parameters); 628 static int CheckStatGT(Scriptable *Sender, const Trigger *parameters); 629 static int CheckStatLT(Scriptable *Sender, const Trigger *parameters); 630 static int Class(Scriptable *Sender, const Trigger *parameters); 631 static int ClassEx(Scriptable *Sender, const Trigger *parameters); 632 static int ClassLevel(Scriptable *Sender, const Trigger *parameters); 633 static int ClassLevelGT(Scriptable *Sender, const Trigger *parameters); 634 static int ClassLevelLT(Scriptable *Sender, const Trigger *parameters); 635 static int Clicked(Scriptable *Sender, const Trigger *parameters); 636 static int Closed(Scriptable *Sender, const Trigger *parameters); 637 static int CombatCounter(Scriptable *Sender, const Trigger *parameters); 638 static int CombatCounterGT(Scriptable *Sender, const Trigger *parameters); 639 static int CombatCounterLT(Scriptable *Sender, const Trigger *parameters); 640 static int Contains(Scriptable *Sender, const Trigger *parameters); 641 static int CreatureHidden( Scriptable* Sender, const Trigger *parameters); 642 static int CurrentAmmo(Scriptable *Sender, const Trigger *parameters); 643 static int CurrentAreaIs(Scriptable *Sender, const Trigger *parameters); 644 static int DamageTaken(Scriptable *Sender, const Trigger *parameters); 645 static int DamageTakenGT(Scriptable *Sender, const Trigger *parameters); 646 static int DamageTakenLT(Scriptable *Sender, const Trigger *parameters); 647 static int Dead(Scriptable *Sender, const Trigger *parameters); 648 static int Delay(Scriptable *Sender, const Trigger *parameters); 649 static int Detect(Scriptable *Sender, const Trigger *parameters); 650 static int Detected(Scriptable *Sender, const Trigger *parameters); 651 static int Die(Scriptable *Sender, const Trigger *parameters); 652 static int Died(Scriptable *Sender, const Trigger *parameters); 653 static int Difficulty(Scriptable *Sender, const Trigger *parameters); 654 static int DifficultyGT(Scriptable *Sender, const Trigger *parameters); 655 static int DifficultyLT(Scriptable *Sender, const Trigger *parameters); 656 static int Disarmed(Scriptable *Sender, const Trigger *parameters); 657 static int DisarmFailed(Scriptable *Sender, const Trigger *parameters); 658 static int E(Scriptable */*Sender*/, const Trigger *parameters); 659 static int Entered(Scriptable *Sender, const Trigger *parameters); 660 static int EntirePartyOnMap(Scriptable *Sender, const Trigger *parameters); 661 static int Exists(Scriptable *Sender, const Trigger *parameters); 662 static int ExtendedStateCheck(Scriptable *Sender, const Trigger *parameters); 663 static int ExtraProficiency(Scriptable *Sender, const Trigger *parameters); 664 static int ExtraProficiencyGT(Scriptable *Sender, const Trigger *parameters); 665 static int ExtraProficiencyLT(Scriptable *Sender, const Trigger *parameters); 666 static int Eval(Scriptable */*Sender*/, const Trigger */*parameters*/); 667 static int Faction(Scriptable *Sender, const Trigger *parameters); 668 static int FallenPaladin(Scriptable *Sender, const Trigger *parameters); 669 static int FallenRanger(Scriptable *Sender, const Trigger *parameters); 670 static int False(Scriptable *Sender, const Trigger *parameters); 671 static int ForceMarkedSpell_Trigger(Scriptable *Sender, const Trigger *parameters); 672 static int Frame(Scriptable *Sender, const Trigger *parameters); 673 static int Gender(Scriptable *Sender, const Trigger *parameters); 674 static int General(Scriptable *Sender, const Trigger *parameters); 675 static int G_Trigger(Scriptable *Sender, const Trigger *parameters); 676 static int Global(Scriptable *Sender, const Trigger *parameters); 677 static int GlobalAndGlobal_Trigger(Scriptable *Sender, const Trigger *parameters); 678 static int GlobalBAndGlobal_Trigger(Scriptable *Sender, const Trigger *parameters); 679 static int GlobalBAndGlobalExact(Scriptable *Sender, const Trigger *parameters); 680 static int GlobalBitGlobal_Trigger(Scriptable *Sender, const Trigger *parameters); 681 static int GlobalGT(Scriptable *Sender, const Trigger *parameters); 682 static int GlobalGTGlobal(Scriptable *Sender, const Trigger *parameters); 683 static int GlobalLT(Scriptable *Sender, const Trigger *parameters); 684 static int GlobalLTGlobal(Scriptable *Sender, const Trigger *parameters); 685 static int GlobalOrGlobal_Trigger(Scriptable *Sender, const Trigger *parameters); 686 static int GlobalsEqual(Scriptable *Sender, const Trigger *parameters); 687 static int GlobalsGT(Scriptable *Sender, const Trigger *parameters); 688 static int GlobalsLT(Scriptable *Sender, const Trigger *parameters); 689 static int GlobalTimerExact(Scriptable *Sender, const Trigger *parameters); 690 static int GlobalTimerExpired(Scriptable *Sender, const Trigger *parameters); 691 static int GlobalTimerNotExpired(Scriptable *Sender, const Trigger *parameters); 692 static int GlobalTimerStarted(Scriptable *Sender, const Trigger *parameters); 693 static int GGT_Trigger(Scriptable *Sender, const Trigger *parameters); 694 static int GLT_Trigger(Scriptable *Sender, const Trigger *parameters); 695 static int GT(Scriptable */*Sender*/, const Trigger *parameters); 696 static int Happiness(Scriptable *Sender, const Trigger *parameters); 697 static int HappinessGT(Scriptable *Sender, const Trigger *parameters); 698 static int HappinessLT(Scriptable *Sender, const Trigger *parameters); 699 static int HarmlessClosed(Scriptable *Sender, const Trigger *parameters); 700 static int HarmlessEntered(Scriptable *Sender, const Trigger *parameters); 701 static int HarmlessOpened(Scriptable *Sender, const Trigger *parameters); 702 static int HasBounceEffects(Scriptable *Sender, const Trigger *parameters); 703 static int HasDLC(Scriptable */*Sender*/, const Trigger */*parameters*/); 704 static int HasImmunityEffects(Scriptable *Sender, const Trigger *parameters); 705 static int HasInnateAbility(Scriptable *Sender, const Trigger *parameters); 706 static int HasItem(Scriptable *Sender, const Trigger *parameters); 707 static int HasItemEquipped(Scriptable *Sender, const Trigger *parameters); 708 static int HasItemSlot(Scriptable *Sender, const Trigger *parameters); 709 static int HasItemTypeSlot(Scriptable *Sender, const Trigger *parameters); 710 static int HasWeaponEquipped(Scriptable *Sender, const Trigger *parameters); 711 static int HaveAnySpells(Scriptable *Sender, const Trigger *parameters); 712 static int HaveSpellParty(Scriptable *Sender, const Trigger *parameters); 713 static int HaveSpell(Scriptable *Sender, const Trigger *parameters); 714 static int HaveUsableWeaponEquipped(Scriptable *Sender, const Trigger *parameters); 715 static int Heard(Scriptable *Sender, const Trigger *parameters); 716 static int Help_Trigger(Scriptable *Sender, const Trigger *parameters); 717 static int HelpEX(Scriptable *Sender, const Trigger *parameters); 718 static int HitBy(Scriptable *Sender, const Trigger *parameters); 719 static int HotKey(Scriptable *Sender, const Trigger *parameters); 720 static int HP(Scriptable *Sender, const Trigger *parameters); 721 static int HPGT(Scriptable *Sender, const Trigger *parameters); 722 static int HPLost(Scriptable *Sender, const Trigger *parameters); 723 static int HPLostGT(Scriptable *Sender, const Trigger *parameters); 724 static int HPLostLT(Scriptable *Sender, const Trigger *parameters); 725 static int HPLT(Scriptable *Sender, const Trigger *parameters); 726 static int HPPercent(Scriptable *Sender, const Trigger *parameters); 727 static int HPPercentGT(Scriptable *Sender, const Trigger *parameters); 728 static int HPPercentLT(Scriptable *Sender, const Trigger *parameters); 729 static int ImmuneToSpellLevel(Scriptable *Sender, const Trigger *parameters); 730 static int InActiveArea(Scriptable *Sender, const Trigger *parameter); 731 static int InCutSceneMode(Scriptable *Sender, const Trigger *parameter); 732 static int InLine(Scriptable *Sender, const Trigger *parameter); 733 static int InMyArea(Scriptable *Sender, const Trigger *parameter); 734 static int InMyGroup(Scriptable *Sender, const Trigger *parameter); 735 static int InParty(Scriptable *Sender, const Trigger *parameters); 736 static int InPartyAllowDead(Scriptable *Sender, const Trigger *parameters); 737 static int InPartySlot(Scriptable *Sender, const Trigger *parameters); 738 static int InteractingWith(Scriptable *Sender, const Trigger *parameters); 739 static int Internal(Scriptable *Sender, const Trigger *parameters); 740 static int InternalGT(Scriptable *Sender, const Trigger *parameters); 741 static int InternalLT(Scriptable *Sender, const Trigger *parameters); 742 static int InTrap(Scriptable *Sender, const Trigger *parameters); 743 static int InventoryFull(Scriptable *Sender, const Trigger *parameter); 744 static int InWeaponRange(Scriptable *Sender, const Trigger *parameter); 745 static int IsAClown(Scriptable *Sender, const Trigger *parameters); 746 static int IsActive(Scriptable *Sender, const Trigger *parameters); 747 static int IsCreatureAreaFlag( Scriptable* Sender, const Trigger *parameters); 748 static int IsCreatureHiddenInShadows( Scriptable* Sender, const Trigger *parameters); 749 static int IsGabber(Scriptable *Sender, const Trigger *parameters); 750 static int IsExtendedNight(Scriptable *Sender, const Trigger *parameters); 751 static int IsFacingObject(Scriptable *Sender, const Trigger *parameters); 752 static int IsFacingSavedRotation(Scriptable *Sender, const Trigger *parameters); 753 static int IsInGuardianMantle(Scriptable *Sender, const Trigger *parameters); 754 static int IsLocked(Scriptable *Sender, const Trigger *parameters); 755 static int IsMarkedSpell(Scriptable *Sender, const Trigger *parameters); 756 static int IsOverMe(Scriptable *Sender, const Trigger *parameters); 757 static int IsPathCriticalObject( Scriptable* Sender, const Trigger *parameters); 758 static int IsPlayerNumber( Scriptable* Sender, const Trigger *parameters); 759 static int IsRotation(Scriptable *Sender, const Trigger *parameters); 760 static int IsSpellTargetValid( Scriptable* Sender, const Trigger *parameters); 761 static int IsTeamBitOn(Scriptable *Sender, const Trigger *parameters); 762 static int IsTouchGUI(Scriptable */*Sender*/, const Trigger */*parameters*/); 763 static int IsValidForPartyDialog(Scriptable *Sender, const Trigger *parameters); 764 static int IsWeaponRanged(Scriptable *Sender, const Trigger *parameters); 765 static int IsWeather(Scriptable *Sender, const Trigger *parameters); 766 static int ItemIsIdentified(Scriptable *Sender, const Trigger *parameters); 767 static int Joins(Scriptable *Sender, const Trigger *parameters); 768 static int Kit(Scriptable *Sender, const Trigger *parameters); 769 static int Killed(Scriptable *Sender, const Trigger *parameters); 770 static int KnowSpell(Scriptable *Sender, const Trigger *parameters); 771 static int LastMarkedObject_Trigger(Scriptable *Sender, const Trigger *parameters); 772 static int LastPersonTalkedTo(Scriptable *Sender, const Trigger *parameters); 773 static int Leaves(Scriptable *Sender, const Trigger *parameters); 774 static int Level(Scriptable *Sender, const Trigger *parameters); 775 static int LevelGT(Scriptable *Sender, const Trigger *parameters); 776 static int LevelLT(Scriptable *Sender, const Trigger *parameters); 777 static int LevelInClass(Scriptable *Sender, const Trigger *parameters); 778 static int LevelInClassGT(Scriptable *Sender, const Trigger *parameters); 779 static int LevelInClassLT(Scriptable *Sender, const Trigger *parameters); 780 static int LevelParty(Scriptable *Sender, const Trigger *parameters); 781 static int LevelPartyGT(Scriptable *Sender, const Trigger *parameters); 782 static int LevelPartyLT(Scriptable *Sender, const Trigger *parameters); 783 static int LocalsEqual(Scriptable *Sender, const Trigger *parameters); 784 static int LocalsGT(Scriptable *Sender, const Trigger *parameters); 785 static int LocalsLT(Scriptable *Sender, const Trigger *parameters); 786 static int LOS(Scriptable *Sender, const Trigger *parameters); 787 static int LT(Scriptable */*Sender*/, const Trigger *parameters); 788 static int ModalState(Scriptable *Sender, const Trigger *parameters); 789 static int Morale(Scriptable *Sender, const Trigger *parameters); 790 static int MoraleGT(Scriptable *Sender, const Trigger *parameters); 791 static int MoraleLT(Scriptable *Sender, const Trigger *parameters); 792 static int MovementRate(Scriptable *Sender, const Trigger *parameters); 793 static int MovementRateGT(Scriptable *Sender, const Trigger *parameters); 794 static int MovementRateLT(Scriptable *Sender, const Trigger *parameters); 795 static int NamelessBitTheDust(Scriptable *Sender, const Trigger *parameters); 796 static int NearbyDialog(Scriptable *Sender, const Trigger *parameters); 797 static int NearLocation(Scriptable *Sender, const Trigger *parameters); 798 static int NearSavedLocation(Scriptable *Sender, const Trigger *parameters); 799 static int NightmareModeOn(Scriptable *Sender, const Trigger *parameters); 800 static int NotStateCheck(Scriptable *Sender, const Trigger *parameters); 801 static int NullDialog(Scriptable *Sender, const Trigger *parameters); 802 static int NumBouncingSpellLevel(Scriptable *Sender, const Trigger *parameters); 803 static int NumBouncingSpellLevelGT(Scriptable *Sender, const Trigger *parameters); 804 static int NumBouncingSpellLevelLT(Scriptable *Sender, const Trigger *parameters); 805 static int NumCreatures(Scriptable *Sender, const Trigger *parameters); 806 static int NumCreaturesAtMyLevel(Scriptable *Sender, const Trigger *parameters); 807 static int NumCreaturesGT(Scriptable *Sender, const Trigger *parameters); 808 static int NumCreaturesGTMyLevel(Scriptable *Sender, const Trigger *parameters); 809 static int NumCreaturesLT(Scriptable *Sender, const Trigger *parameters); 810 static int NumCreaturesLTMyLevel(Scriptable *Sender, const Trigger *parameters); 811 static int NumCreatureVsParty(Scriptable *Sender, const Trigger *parameters); 812 static int NumCreatureVsPartyGT(Scriptable *Sender, const Trigger *parameters); 813 static int NumCreatureVsPartyLT(Scriptable *Sender, const Trigger *parameters); 814 static int NumDead(Scriptable *Sender, const Trigger *parameters); 815 static int NumDeadGT(Scriptable *Sender, const Trigger *parameters); 816 static int NumDeadLT(Scriptable *Sender, const Trigger *parameters); 817 static int NumImmuneToSpellLevel(Scriptable *Sender, const Trigger *parameters); 818 static int NumImmuneToSpellLevelGT(Scriptable *Sender, const Trigger *parameters); 819 static int NumImmuneToSpellLevelLT(Scriptable *Sender, const Trigger *parameters); 820 static int NumItems(Scriptable *Sender, const Trigger *parameters); 821 static int NumItemsGT(Scriptable *Sender, const Trigger *parameters); 822 static int NumItemsLT(Scriptable *Sender, const Trigger *parameters); 823 static int NumItemsParty(Scriptable *Sender, const Trigger *parameters); 824 static int NumItemsPartyGT(Scriptable *Sender, const Trigger *parameters); 825 static int NumItemsPartyLT(Scriptable *Sender, const Trigger *parameters); 826 static int NumMirrorImages(Scriptable *Sender, const Trigger *parameters); 827 static int NumMirrorImagesGT(Scriptable *Sender, const Trigger *parameters); 828 static int NumMirrorImagesLT(Scriptable *Sender, const Trigger *parameters); 829 static int NumTimesInteracted(Scriptable *Sender, const Trigger *parameters); 830 static int NumTimesInteractedGT(Scriptable *Sender, const Trigger *parameters); 831 static int NumTimesInteractedLT(Scriptable *Sender, const Trigger *parameters); 832 static int NumTimesInteractedObject(Scriptable *Sender, const Trigger *parameters); 833 static int NumTimesInteractedObjectGT(Scriptable *Sender, const Trigger *parameters); 834 static int NumTimesInteractedObjectLT(Scriptable *Sender, const Trigger *parameters); 835 static int NumTimesTalkedTo(Scriptable *Sender, const Trigger *parameters); 836 static int NumTimesTalkedToGT(Scriptable *Sender, const Trigger *parameters); 837 static int NumTimesTalkedToLT(Scriptable *Sender, const Trigger *parameters); 838 static int NumTrappingSpellLevel(Scriptable *Sender, const Trigger *parameters); 839 static int NumTrappingSpellLevelGT(Scriptable *Sender, const Trigger *parameters); 840 static int NumTrappingSpellLevelLT(Scriptable *Sender, const Trigger *parameters); 841 static int ObjectActionListEmpty(Scriptable *Sender, const Trigger *parameters); 842 static int OnCreation(Scriptable *Sender, const Trigger *parameters); 843 static int OnIsland(Scriptable *Sender, const Trigger *parameters); 844 static int OnScreen(Scriptable *Sender, const Trigger *parameters); 845 static int Opened(Scriptable *Sender, const Trigger *parameters); 846 static int OpenFailed(Scriptable *Sender, const Trigger *parameters); 847 static int OpenState(Scriptable *Sender, const Trigger *parameters); 848 static int Or(Scriptable *Sender, const Trigger *parameters); 849 static int OriginalClass(Scriptable *Sender, const Trigger *parameters); 850 static int OutOfAmmo(Scriptable *Sender, const Trigger *parameters); 851 static int OwnsFloaterMessage(Scriptable *Sender, const Trigger *parameters); 852 static int PartyCountEQ(Scriptable *Sender, const Trigger *parameters); 853 static int PartyCountGT(Scriptable *Sender, const Trigger *parameters); 854 static int PartyCountLT(Scriptable *Sender, const Trigger *parameters); 855 static int PartyCountAliveEQ(Scriptable *Sender, const Trigger *parameters); 856 static int PartyCountAliveGT(Scriptable *Sender, const Trigger *parameters); 857 static int PartyCountAliveLT(Scriptable *Sender, const Trigger *parameters); 858 static int PartyGold(Scriptable *Sender, const Trigger *parameters); 859 static int PartyGoldGT(Scriptable *Sender, const Trigger *parameters); 860 static int PartyGoldLT(Scriptable *Sender, const Trigger *parameters); 861 static int PartyHasItem(Scriptable *Sender, const Trigger *parameters); 862 static int PartyHasItemIdentified(Scriptable *Sender, const Trigger *parameters); 863 static int PartyMemberDied(Scriptable *Sender, const Trigger *parameters); 864 static int PartyRested(Scriptable *Sender, const Trigger *parameters); 865 static int PCCanSeePoint(Scriptable *Sender, const Trigger *parameters); 866 static int PCInStore(Scriptable *Sender, const Trigger *parameters); 867 static int PersonalSpaceDistance(Scriptable *Sender, const Trigger *parameters); 868 static int PickLockFailed(Scriptable *Sender, const Trigger *parameters); 869 static int PickpocketFailed(Scriptable *Sender, const Trigger *parameters); 870 static int Proficiency(Scriptable *Sender, const Trigger *parameters); 871 static int ProficiencyGT(Scriptable *Sender, const Trigger *parameters); 872 static int ProficiencyLT(Scriptable *Sender, const Trigger *parameters); 873 static int Race(Scriptable *Sender, const Trigger *parameters); 874 static int RandomNum(Scriptable *Sender, const Trigger *parameters); 875 static int RandomNumGT(Scriptable *Sender, const Trigger *parameters); 876 static int RandomNumLT(Scriptable *Sender, const Trigger *parameters); 877 static int RandomStatCheck(Scriptable *Sender, const Trigger *parameters); 878 static int Range(Scriptable *Sender, const Trigger *parameters); 879 static int Reaction(Scriptable *Sender, const Trigger *parameters); 880 static int ReactionLT(Scriptable *Sender, const Trigger *parameters); 881 static int ReactionGT(Scriptable *Sender, const Trigger *parameters); 882 static int RealGlobalTimerExact(Scriptable *Sender, const Trigger *parameters); 883 static int RealGlobalTimerExpired(Scriptable *Sender, const Trigger *parameters); 884 static int RealGlobalTimerNotExpired(Scriptable *Sender, const Trigger *parameters); 885 static int ReceivedOrder(Scriptable *Sender, const Trigger *parameters); 886 static int Reputation(Scriptable *Sender, const Trigger *parameters); 887 static int ReputationGT(Scriptable *Sender, const Trigger *parameters); 888 static int ReputationLT(Scriptable *Sender, const Trigger *parameters); 889 static int School(Scriptable *Sender, const Trigger *parameters); 890 static int See(Scriptable *Sender, const Trigger *parameters); 891 static int Sequence(Scriptable *Sender, const Trigger *parameters); 892 static int SetLastMarkedObject(Scriptable *Sender, const Trigger *parameters); 893 static int SetMarkedSpell_Trigger(Scriptable *Sender, const Trigger *parameters); 894 static int SetSpellTarget(Scriptable *Sender, const Trigger *parameters); 895 static int Specifics(Scriptable *Sender, const Trigger *parameters); 896 static int SpellCast(Scriptable *Sender, const Trigger *parameters); 897 static int SpellCastInnate(Scriptable *Sender, const Trigger *parameters); 898 static int SpellCastOnMe(Scriptable *Sender, const Trigger *parameters); 899 static int SpellCastPriest(Scriptable *Sender, const Trigger *parameters); 900 static int StateCheck(Scriptable *Sender, const Trigger *parameters); 901 static int StealFailed(Scriptable *Sender, const Trigger *parameters); 902 static int StoreHasItem(Scriptable *Sender, const Trigger *parameters); 903 static int StoryModeOn(Scriptable *Sender, const Trigger */*parameters*/); 904 static int StuffGlobalRandom(Scriptable *Sender, const Trigger *parameters); 905 static int SubRace(Scriptable *Sender, const Trigger *parameters); 906 static int SummoningLimit(Scriptable *Sender, const Trigger *parameters); 907 static int SummoningLimitGT(Scriptable *Sender, const Trigger *parameters); 908 static int SummoningLimitLT(Scriptable *Sender, const Trigger *parameters); 909 static int SystemVariable_Trigger(Scriptable *Sender, const Trigger *parameters); 910 static int TargetUnreachable(Scriptable *Sender, const Trigger *parameters); 911 static int Team(Scriptable *Sender, const Trigger *parameters); 912 static int Time(Scriptable *Sender, const Trigger *parameters); 913 static int TimeGT(Scriptable *Sender, const Trigger *parameters); 914 static int TimeLT(Scriptable *Sender, const Trigger *parameters); 915 static int TimeOfDay(Scriptable *Sender, const Trigger *parameters); 916 static int TimerActive(Scriptable *Sender, const Trigger *parameters); 917 static int TimerExpired(Scriptable *Sender, const Trigger *parameters); 918 static int TimeStopCounter(Scriptable */*Sender*/, const Trigger *parameters); 919 static int TimeStopCounterGT(Scriptable */*Sender*/, const Trigger *parameters); 920 static int TimeStopCounterLT(Scriptable */*Sender*/, const Trigger *parameters); 921 static int TimeStopObject(Scriptable *Sender, const Trigger *parameters); 922 static int TookDamage(Scriptable *Sender, const Trigger *parameters); 923 static int TotalItemCnt(Scriptable *Sender, const Trigger *parameters); 924 static int TotalItemCntExclude(Scriptable *Sender, const Trigger *parameters); 925 static int TotalItemCntExcludeGT(Scriptable *Sender, const Trigger *parameters); 926 static int TotalItemCntExcludeLT(Scriptable *Sender, const Trigger *parameters); 927 static int TotalItemCntGT(Scriptable *Sender, const Trigger *parameters); 928 static int TotalItemCntLT(Scriptable *Sender, const Trigger *parameters); 929 static int TrapTriggered(Scriptable *Sender, const Trigger *parameters); 930 static int TriggerTrigger(Scriptable *Sender, const Trigger *parameters); 931 static int TriggerSetGlobal(Scriptable *Sender, const Trigger *parameters); 932 static int True(Scriptable *Sender, const Trigger *parameters); 933 static int TurnedBy(Scriptable *Sender, const Trigger *parameters); 934 static int Unlocked(Scriptable *Sender, const Trigger *parameters); 935 static int UnselectableVariable(Scriptable *Sender, const Trigger *parameters); 936 static int UnselectableVariableGT(Scriptable *Sender, const Trigger *parameters); 937 static int UnselectableVariableLT(Scriptable *Sender, const Trigger *parameters); 938 static int Unusable(Scriptable *Sender, const Trigger *parameters); 939 static int UsedExit(Scriptable *Sender, const Trigger *parameters); 940 static int Vacant(Scriptable *Sender, const Trigger *parameters); 941 static int WalkedToTrigger(Scriptable *Sender, const Trigger *parameters); 942 static int WasInDialog(Scriptable *Sender, const Trigger *parameters); 943 static int Xor(Scriptable *Sender, const Trigger *parameters); 944 static int XP(Scriptable *Sender, const Trigger *parameters); 945 static int XPGT(Scriptable *Sender, const Trigger *parameters); 946 static int XPLT(Scriptable *Sender, const Trigger *parameters); 947 948 //Actions 949 static void Activate(Scriptable* Sender, Action* parameters); 950 static void ActivatePortalCursor(Scriptable* Sender, Action* parameters); 951 static void AddAreaFlag(Scriptable* Sender, Action* parameters); 952 static void AddAreaType(Scriptable* Sender, Action* parameters); 953 static void AddExperienceParty(Scriptable *Sender, Action* parameters); 954 static void AddExperiencePartyCR(Scriptable *Sender, Action* parameters); 955 static void AddExperiencePartyGlobal(Scriptable *Sender, Action* parameters); 956 static void AddFeat(Scriptable *Sender, Action* parameters); 957 static void AddGlobals(Scriptable* Sender, Action* parameters); 958 static void AddHP(Scriptable* Sender, Action* parameters); 959 static void AddJournalEntry(Scriptable* Sender, Action* parameters); 960 static void AddKit(Scriptable* Sender, Action* parameters); 961 static void AddMapnote(Scriptable* Sender, Action* parameters); 962 static void AddSpecialAbility(Scriptable* Sender, Action* parameters); 963 static void AddSuperKit(Scriptable* Sender, Action* parameters); 964 static void AddWayPoint(Scriptable* Sender, Action* parameters); 965 static void AddWorldmapAreaFlag(Scriptable* /*Sender*/, Action* parameters); 966 static void AddXP2DA(Scriptable *Sender, Action* parameters); 967 static void AddXPObject(Scriptable *Sender, Action* parameters); 968 static void AddXPVar(Scriptable *Sender, Action* parameters); 969 static void AdvanceTime(Scriptable *Sender, Action* parameters); 970 static void Ally(Scriptable* Sender, Action* parameters); 971 static void AmbientActivate(Scriptable* Sender, Action* parameters); 972 static void AnkhegEmerge(Scriptable* Sender, Action* parameters); 973 static void AnkhegHide(Scriptable* Sender, Action* parameters); 974 static void ApplyDamage(Scriptable* Sender, Action* parameters); 975 static void ApplyDamagePercent(Scriptable* Sender, Action* parameters); 976 static void ApplySpell(Scriptable* Sender, Action* parameters); 977 static void ApplySpellPoint(Scriptable* Sender, Action* parameters); 978 static void AttachTransitionToDoor(Scriptable* Sender, Action* parameters); 979 static void Attack(Scriptable* Sender, Action* parameters); 980 static void AttackNoSound(Scriptable* Sender, Action* parameters); 981 static void AttackOneRound(Scriptable* Sender, Action* parameters); 982 static void AttackReevaluate(Scriptable* Sender, Action* parameters); 983 static void BanterBlockFlag(Scriptable* Sender, Action* parameters); 984 static void BanterBlockTime(Scriptable* Sender, Action* parameters); 985 static void BashDoor(Scriptable* Sender, Action* parameters); 986 static void BattleSong(Scriptable* Sender, Action* parameters); 987 static void Berserk(Scriptable* Sender, Action* parameters); 988 static void BitClear(Scriptable* Sender, Action* parameters); 989 static void BitGlobal(Scriptable* Sender, Action* parameters); 990 static void BreakInstants(Scriptable* Sender, Action* parameters); 991 static void Calm(Scriptable* Sender, Action* parameters); 992 static void ChangeAIScript(Scriptable* Sender, Action* parameters); 993 static void ChangeAIType(Scriptable* Sender, Action* parameters); 994 static void ChangeAlignment(Scriptable* Sender, Action* parameters); 995 static void ChangeAllegiance(Scriptable* Sender, Action* parameters); 996 static void ChangeAnimation(Scriptable* Sender, Action* parameters); 997 static void ChangeAnimationNoEffect(Scriptable* Sender, Action* parameters); 998 static void ChangeClass(Scriptable* Sender, Action* parameters); 999 static void ChangeColor(Scriptable* Sender, Action* parameters); 1000 // static void ChangeCurrentScript(Scriptable* Sender, Action* parameters); 1001 static void ChangeDestination(Scriptable* Sender, Action* parameters); 1002 static void ChangeDialogue(Scriptable* Sender, Action* parameters); 1003 static void ChangeGender(Scriptable* Sender, Action* parameters); 1004 static void ChangeGeneral(Scriptable* Sender, Action* parameters); 1005 static void ChangeRace(Scriptable* Sender, Action* parameters); 1006 static void ChangeSpecifics(Scriptable* Sender, Action* parameters); 1007 static void ChangeStat(Scriptable* Sender, Action* parameters); 1008 static void ChangeStatGlobal(Scriptable* Sender, Action* parameters); 1009 static void ChangeStoreMarkup(Scriptable* Sender, Action* parameters); 1010 static void ChangeTileState(Scriptable* Sender, Action* parameters); 1011 static void ChunkCreature(Scriptable *Sender, Action* parameters); 1012 static void ClearActions(Scriptable* Sender, Action* parameters); 1013 static void ClearAllActions(Scriptable* Sender, Action* parameters); 1014 static void ClearPartyEffects(Scriptable* Sender, Action* parameters); 1015 static void ClearSpriteEffects(Scriptable* Sender, Action* parameters); 1016 static void ClickLButtonObject(Scriptable* Sender, Action* parameters); 1017 static void ClickLButtonPoint(Scriptable* Sender, Action* parameters); 1018 static void ClickRButtonObject(Scriptable* Sender, Action* parameters); 1019 static void ClickRButtonPoint(Scriptable* Sender, Action* parameters); 1020 static void CloseDoor(Scriptable* Sender, Action* parameters); 1021 static void ContainerEnable(Scriptable* Sender, Action* parameters); 1022 static void Continue(Scriptable* Sender, Action* parameters); 1023 static void CopyGroundPilesTo(Scriptable* Sender, Action* parameters); 1024 static void CreateCreature(Scriptable* Sender, Action* parameters); 1025 static void CreateCreatureAtLocation(Scriptable* Sender, Action* parameters); 1026 static void CreateCreatureAtFeet(Scriptable* Sender, Action* parameters); 1027 static void CreateCreatureCopyPoint(Scriptable* Sender, Action* parameters); 1028 static void CreateCreatureDoor(Scriptable* Sender, Action* parameters); 1029 static void CreateCreatureImpassable(Scriptable* Sender, Action* parameters); 1030 static void CreateCreatureImpassableAllowOverlap(Scriptable* Sender, 1031 Action* parameters); 1032 static void CreateCreatureObject(Scriptable* Sender, Action* parameters); 1033 static void CreateCreatureObjectCopy(Scriptable* Sender, Action* parameters); 1034 static void CreateCreatureObjectDoor(Scriptable* Sender, Action* parameters); 1035 static void CreateCreatureObjectOffset(Scriptable* Sender, Action* parameters); 1036 static void CreateCreatureObjectOffScreen(Scriptable* Sender, Action* parameters); 1037 static void CreateCreatureOffScreen(Scriptable* Sender, Action* parameters); 1038 static void CreateItem(Scriptable* Sender, Action* parameters); 1039 static void CreateItemNumGlobal(Scriptable* Sender, Action* parameters); 1040 static void CreatePartyGold(Scriptable *Sender, Action *parameters); 1041 static void CreateVisualEffect(Scriptable* Sender, Action* parameters); 1042 static void CreateVisualEffectObject(Scriptable* Sender, 1043 Action* parameters); 1044 static void CreateVisualEffectObjectSticky(Scriptable* Sender, 1045 Action* parameters); 1046 static void CutSceneID(Scriptable* Sender, Action* parameters); 1047 static void Damage(Scriptable* Sender, Action* parameters); 1048 static void DayNight(Scriptable *Sender, Action* parameters); 1049 static void Deactivate(Scriptable* Sender, Action* parameters); 1050 static void Debug(Scriptable* Sender, Action* parameters); 1051 static void DemoEnd(Scriptable* Sender, Action* parameters); 1052 static void DestroyAllDestructableEquipment(Scriptable* Sender, 1053 Action* parameters); 1054 static void DestroyAllEquipment(Scriptable* Sender, Action* parameters); 1055 static void DestroyAllFragileEquipment(Scriptable* Sender, Action* parameters); 1056 static void DestroyGold(Scriptable* Sender, Action* parameters); 1057 static void DestroyItem(Scriptable* Sender, Action* parameters); 1058 static void DestroyPartyGold(Scriptable* Sender, Action* parameters); 1059 static void DestroyPartyItem(Scriptable* Sender, Action* parameters); 1060 static void DestroyPartyItemNum(Scriptable* Sender, Action* parameters); 1061 static void DestroySelf(Scriptable* Sender, Action* parameters); 1062 static void DetectSecretDoor(Scriptable* Sender, Action* parameters); 1063 static void Dialogue(Scriptable* Sender, Action* parameters); 1064 static void DialogueForceInterrupt(Scriptable* Sender, Action* parameters); 1065 static void DialogueInterrupt(Scriptable* Sender, Action* parameters); 1066 static void DisableFogDither(Scriptable* Sender, Action* parameters); 1067 static void DisableSpriteDither(Scriptable* Sender, Action* parameters); 1068 static void DisplayMessage(Scriptable* Sender, Action* parameters); 1069 static void DisplayString(Scriptable* Sender, Action* parameters); 1070 static void DisplayStringHead(Scriptable* Sender, Action* parameters); 1071 static void DisplayStringHeadOwner(Scriptable* Sender, Action* parameters); 1072 static void DisplayStringNoName(Scriptable* Sender, Action* parameters); 1073 static void DisplayStringNoNameHead(Scriptable* Sender, Action* parameters); 1074 static void DisplayStringWait(Scriptable* Sender, Action* parameters); 1075 static void DoubleClickLButtonObject(Scriptable* Sender, Action* parameters); 1076 static void DoubleClickLButtonPoint(Scriptable* Sender, Action* parameters); 1077 static void DoubleClickRButtonObject(Scriptable* Sender, Action* parameters); 1078 static void DoubleClickRButtonPoint(Scriptable* Sender, Action* parameters); 1079 static void DropInventory(Scriptable* Sender, Action* parameters); 1080 static void DropInventoryEX(Scriptable* Sender, Action* parameters); 1081 static void DropItem(Scriptable* Sender, Action* parameters); 1082 static void EnableFogDither(Scriptable* Sender, Action* parameters); 1083 static void EnablePortalTravel(Scriptable* Sender, Action* parameters); 1084 static void EnableSpriteDither(Scriptable* Sender, Action* parameters); 1085 static void EndCredits(Scriptable* Sender, Action* parameters); 1086 static void EndCutSceneMode(Scriptable* Sender, Action* parameters); 1087 static void Enemy(Scriptable* Sender, Action* parameters); 1088 static void EscapeArea(Scriptable* Sender, Action* parameters); 1089 static void EscapeAreaDestroy(Scriptable* Sender, Action* parameters); 1090 static void EscapeAreaNoSee(Scriptable* Sender, Action* parameters); 1091 static void EscapeAreaObject(Scriptable* Sender, Action* parameters); 1092 static void EscapeAreaObjectNoSee(Scriptable* Sender, Action* parameters); 1093 static void EquipItem(Scriptable *Sender, Action *parameters); 1094 static void EquipMostDamagingMelee(Scriptable *Sender, Action *parameters); 1095 static void EquipRanged(Scriptable *Sender, Action *parameters); 1096 static void EquipWeapon(Scriptable *Sender, Action *parameters); 1097 static void ExitPocketPlane(Scriptable* Sender, Action* parameters); 1098 static void ExpansionEndCredits(Scriptable* Sender, Action* parameters); 1099 static void Explore(Scriptable *Sender, Action *parameters); 1100 static void ExploreMapChunk(Scriptable *Sender, Action *parameters); 1101 static void ExportParty(Scriptable *Sender, Action *parameters); 1102 static void Face(Scriptable* Sender, Action* parameters); 1103 static void FaceObject(Scriptable* Sender, Action* parameters); 1104 static void FaceSavedLocation(Scriptable* Sender, Action* parameters); 1105 static void FadeFromColor(Scriptable* Sender, Action* parameters); 1106 static void FadeToAndFromColor(Scriptable* Sender, Action* parameters); 1107 static void FadeToColor(Scriptable* Sender, Action* parameters); 1108 static void FakeEffectExpiryCheck(Scriptable* Sender, Action* parameters); 1109 static void FillSlot(Scriptable *Sender, Action* parameters); 1110 static void FindTraps(Scriptable* Sender, Action* parameters); 1111 static void FixEngineRoom(Scriptable *Sender, Action* parameters); 1112 static void FloatMessageFixed(Scriptable* Sender, Action* parameters); 1113 static void FloatMessageFixedRnd(Scriptable* Sender, Action* parameters); 1114 static void FloatMessageRnd(Scriptable* Sender, Action* parameters); 1115 static void FloatRebus(Scriptable* Sender, Action* parameters); 1116 static void Follow(Scriptable* Sender, Action* parameters); 1117 static void FollowCreature(Scriptable* Sender, Action* parameters); 1118 static void FollowObjectFormation(Scriptable* Sender, Action* parameters); 1119 static void ForceAIScript(Scriptable* Sender, Action* parameters); 1120 static void ForceAttack(Scriptable* Sender, Action* parameters); 1121 static void ForceFacing(Scriptable* Sender, Action* parameters); 1122 static void ForceHide(Scriptable* Sender, Action* parameters); 1123 static void ForceLeaveAreaLUA(Scriptable* Sender, Action* parameters); 1124 static void ForceMarkedSpell(Scriptable* Sender, Action* parameters); 1125 static void ForceSpell(Scriptable* Sender, Action* parameters); 1126 static void ForceSpellRange(Scriptable* Sender, Action* parameters); 1127 static void ForceSpellPoint(Scriptable* Sender, Action* parameters); 1128 static void ForceSpellPointRange(Scriptable* Sender, Action* parameters); 1129 static void ForceUseContainer(Scriptable* Sender, Action* parameters); 1130 static void Formation(Scriptable* Sender, Action* parameters); 1131 static void FullHeal(Scriptable* Sender, Action* parameters); 1132 static void GenerateMaze(Scriptable* Sender, Action* parameters); 1133 static void GeneratePartyMember(Scriptable* Sender, Action* parameters); 1134 static void GetItem(Scriptable* Sender, Action* parameters); 1135 static void GetStat(Scriptable* Sender, Action* parameters); 1136 static void GiveItem(Scriptable* Sender, Action* parameters); 1137 static void GiveOrder(Scriptable* Sender, Action* parameters); 1138 static void GivePartyAllEquipment(Scriptable* Sender, Action* parameters); 1139 static void GivePartyGold(Scriptable* Sender, Action* parameters); 1140 static void GivePartyGoldGlobal(Scriptable* Sender, Action* parameters); 1141 static void GlobalAddGlobal(Scriptable* Sender, Action* parameters); 1142 static void GlobalAndGlobal(Scriptable* Sender, Action* parameters); 1143 static void GlobalBAnd(Scriptable* Sender, Action* parameters); 1144 static void GlobalBAndGlobal(Scriptable* Sender, Action* parameters); 1145 static void GlobalBitGlobal(Scriptable* Sender, Action* parameters); 1146 static void GlobalBOr(Scriptable* Sender, Action* parameters); 1147 static void GlobalBOrGlobal(Scriptable* Sender, Action* parameters); 1148 static void GlobalMax(Scriptable* Sender, Action* parameters); 1149 static void GlobalMaxGlobal(Scriptable* Sender, Action* parameters); 1150 static void GlobalMin(Scriptable* Sender, Action* parameters); 1151 static void GlobalMinGlobal(Scriptable* Sender, Action* parameters); 1152 static void GlobalOrGlobal(Scriptable* Sender, Action* parameters); 1153 static void GlobalSetGlobal(Scriptable* Sender, Action* parameters); 1154 static void GlobalShL(Scriptable* Sender, Action* parameters); 1155 static void GlobalShLGlobal(Scriptable* Sender, Action* parameters); 1156 static void GlobalShout(Scriptable* Sender, Action* parameters); 1157 static void GlobalShR(Scriptable* Sender, Action* parameters); 1158 static void GlobalShRGlobal(Scriptable* Sender, Action* parameters); 1159 static void GlobalSubGlobal(Scriptable* Sender, Action* parameters); 1160 static void GlobalXor(Scriptable* Sender, Action* parameters); 1161 static void GlobalXorGlobal(Scriptable* Sender, Action* parameters); 1162 static void Help(Scriptable* Sender, Action* parameters); 1163 static void Hide(Scriptable* Sender, Action* parameters); 1164 static void HideAreaOnMap(Scriptable* Sender, Action* parameters); 1165 static void HideCreature(Scriptable* Sender, Action* parameters); 1166 static void HideGUI(Scriptable* Sender, Action* parameters); 1167 static void IncInternal(Scriptable* Sender, Action* parameters); 1168 static void IncMoraleAI(Scriptable* Sender, Action* parameters); 1169 static void IncrementChapter(Scriptable* Sender, Action* parameters); 1170 static void IncrementExtraProficiency(Scriptable* Sender, Action* parameters); 1171 static void IncrementGlobal(Scriptable* Sender, Action* parameters); 1172 static void IncrementGlobalOnce(Scriptable* Sender, Action* parameters); 1173 static void IncrementKillStat(Scriptable* Sender, Action* parameters); 1174 static void IncrementProficiency(Scriptable* Sender, Action* parameters); 1175 static void Interact(Scriptable* Sender, Action* parameters); 1176 static void JoinParty(Scriptable* Sender, Action* parameters); 1177 static void JumpToObject(Scriptable* Sender, Action* parameters); 1178 static void JumpToPoint(Scriptable* Sender, Action* parameters); 1179 static void JumpToPointInstant(Scriptable* Sender, Action* parameters); 1180 static void JumpToSavedLocation(Scriptable* Sender, Action* parameters); 1181 static void Kill(Scriptable* Sender, Action* parameters); 1182 static void KillFloatMessage(Scriptable* Sender, Action* parameters); 1183 static void Leader(Scriptable* Sender, Action* parameters); 1184 static void LeaveAreaLUA(Scriptable* Sender, Action* parameters); 1185 static void LeaveAreaLUAEntry(Scriptable* Sender, Action* parameters); 1186 static void LeaveAreaLUAPanic(Scriptable* Sender, Action* parameters); 1187 static void LeaveAreaLUAPanicEntry(Scriptable* Sender, Action* parameters); 1188 static void LeaveParty(Scriptable* Sender, Action* parameters); 1189 static void Lock(Scriptable* Sender, Action* parameters); 1190 static void LockScroll(Scriptable* Sender, Action* parameters); 1191 static void MakeGlobal(Scriptable* Sender, Action* parameters); 1192 static void MakeUnselectable(Scriptable* Sender, Action* parameters); 1193 static void MarkObject(Scriptable* Sender, Action* parameters); 1194 static void MarkSpellAndObject(Scriptable* Sender, Action* parameters); 1195 static void MatchHP(Scriptable* Sender, Action* parameters); 1196 static void MoraleDec(Scriptable* Sender, Action* parameters); 1197 static void MoraleInc(Scriptable* Sender, Action* parameters); 1198 static void MoraleSet(Scriptable* Sender, Action* parameters); 1199 static void MoveBetweenAreas(Scriptable* Sender, Action* parameters); 1200 static void MoveBetweenAreasEffect(Scriptable* Sender, Action* parameters); 1201 static void MoveCursorPoint(Scriptable* Sender, Action* parameters); 1202 static void MoveGlobal(Scriptable* Sender, Action* parameters); 1203 static void MoveGlobalObject(Scriptable* Sender, Action* parameters); 1204 static void MoveGlobalObjectOffScreen(Scriptable* Sender, Action* parameters); 1205 static void MoveGlobalsTo(Scriptable* Sender, Action* parameters); 1206 static void MoveInventory(Scriptable *Sender, Action* parameters); 1207 static void MoveToCenterOfScreen(Scriptable* Sender, Action* parameters); 1208 static void MoveToExpansion(Scriptable* Sender, Action* parameters); 1209 static void MoveToObject(Scriptable* Sender, Action* parameters); 1210 static void MoveToObjectFollow(Scriptable* Sender, Action* parameters); 1211 static void MoveToObjectNoInterrupt(Scriptable* Sender, Action* parameters); 1212 static void MoveToObjectUntilSee(Scriptable* Sender, Action* parameters); 1213 static void MoveToOffset(Scriptable* Sender, Action* parameters); 1214 static void MoveToPoint(Scriptable* Sender, Action* parameters); 1215 static void MoveToPointNoInterrupt(Scriptable* Sender, Action* parameters); 1216 static void MoveToPointNoRecticle(Scriptable* Sender, Action* parameters); 1217 static void MoveToSavedLocation(Scriptable* Sender, Action* parameters); 1218 static void MoveViewPoint(Scriptable* Sender, Action* parameters); 1219 static void MoveViewObject(Scriptable* Sender, Action* parameters); 1220 static void MultiPlayerSync(Scriptable* Sender, Action* parameters); 1221 static void NIDSpecial1(Scriptable* Sender, Action* parameters); 1222 static void NIDSpecial2(Scriptable* Sender, Action* parameters); 1223 static void NoAction(Scriptable* Sender, Action* parameters); 1224 static void NoActionAtAll(Scriptable* Sender, Action* parameters); 1225 static void OpenDoor(Scriptable* Sender, Action* parameters); 1226 static void Panic(Scriptable* Sender, Action* parameters); 1227 static void PauseGame(Scriptable *Sender, Action* parameters); 1228 static void PermanentStatChange(Scriptable* Sender, Action* parameters); 1229 static void PickLock(Scriptable* Sender, Action* parameters); 1230 static void PickPockets(Scriptable* Sender, Action* parameters); 1231 static void PickUpItem(Scriptable* Sender, Action* parameters); 1232 static void PlayBardSong(Scriptable* Sender, Action* parameters); 1233 static void PlayDead(Scriptable* Sender, Action* parameters); 1234 static void PlayDeadInterruptable(Scriptable* Sender, Action* parameters); 1235 static void PlayerDialogue(Scriptable* Sender, Action* parameters); 1236 static void PlaySequence(Scriptable* Sender, Action* parameters); 1237 static void PlaySequenceGlobal(Scriptable* Sender, Action* parameters); 1238 static void PlaySequenceTimed(Scriptable* Sender, Action* parameters); 1239 static void PlaySound(Scriptable* Sender, Action* parameters); 1240 static void PlaySoundNotRanged(Scriptable* Sender, Action* parameters); 1241 static void PlaySoundPoint(Scriptable* Sender, Action* parameters); 1242 static void Plunder(Scriptable* Sender, Action* parameters); 1243 static void Polymorph(Scriptable* Sender, Action* parameters); 1244 static void PolymorphCopy(Scriptable* Sender, Action* parameters); 1245 static void PolymorphCopyBase(Scriptable* Sender, Action* parameters); 1246 static void ProtectObject(Scriptable* Sender, Action* parameters); 1247 static void ProtectPoint(Scriptable* Sender, Action* parameters); 1248 static void QuitGame(Scriptable* Sender, Action* parameters); 1249 static void RandomFly(Scriptable* Sender, Action* parameters); 1250 static void RandomRun(Scriptable* Sender, Action* parameters); 1251 static void RandomTurn(Scriptable* Sender, Action* parameters); 1252 static void RandomWalk(Scriptable* Sender, Action* parameters); 1253 static void RandomWalkContinuous(Scriptable* Sender, Action* parameters); 1254 static void RealSetGlobalTimer(Scriptable* Sender, Action* parameters); 1255 static void ReallyForceSpell(Scriptable* Sender, Action* parameters); 1256 static void ReallyForceSpellDead(Scriptable* Sender, Action* parameters); 1257 static void ReallyForceSpellPoint(Scriptable* Sender, Action* parameters); 1258 static void Recoil(Scriptable* Sender, Action* parameters); 1259 static void RegainPaladinHood(Scriptable* Sender, Action* parameters); 1260 static void RegainRangerHood(Scriptable* Sender, Action* parameters); 1261 static void RemoveAreaFlag(Scriptable* Sender, Action* parameters); 1262 static void RemoveAreaType(Scriptable* Sender, Action* parameters); 1263 static void RemoveJournalEntry(Scriptable* Sender, Action* parameters); 1264 static void RemoveMapnote(Scriptable* Sender, Action* parameters); 1265 static void RemovePaladinHood(Scriptable* Sender, Action* parameters); 1266 static void RemoveRangerHood(Scriptable* Sender, Action* parameters); 1267 static void RemoveSpell(Scriptable* Sender, Action* parameters); 1268 static void RemoveTraps(Scriptable* Sender, Action* parameters); 1269 static void RemoveWorldmapAreaFlag(Scriptable* /*Sender*/, Action* parameters); 1270 static void ReputationInc(Scriptable* Sender, Action* parameters); 1271 static void ReputationSet(Scriptable* Sender, Action* parameters); 1272 static void RestorePartyLocation(Scriptable *Sender, Action* parameters); 1273 static void Rest(Scriptable *Sender, Action* parameters); 1274 static void RestNoSpells(Scriptable *Sender, Action* parameters); 1275 static void RestParty(Scriptable *Sender, Action* parameters); 1276 static void RestUntilHealed(Scriptable *Sender, Action* parameters); 1277 static void ReturnToSavedLocation(Scriptable* Sender, Action* parameters); 1278 static void ReturnToSavedLocationDelete(Scriptable* Sender, Action* parameters); 1279 static void ReturnToStartLocation(Scriptable* Sender, Action* parameters); 1280 static void RevealAreaOnMap(Scriptable* Sender, Action* parameters); 1281 static void RunAwayFrom(Scriptable* Sender, Action* parameters); 1282 static void RunAwayFromNoInterrupt(Scriptable* Sender, Action* parameters); 1283 static void RunAwayFromNoLeaveArea(Scriptable* Sender, Action* parameters); 1284 static void RunFollow(Scriptable* Sender, Action* parameters); 1285 static void RunningAttack(Scriptable* Sender, Action* parameters); 1286 static void RunningAttackNoSound(Scriptable* Sender, Action* parameters); 1287 static void RunToObject(Scriptable* Sender, Action* parameters); 1288 static void RunToPoint(Scriptable* Sender, Action* parameters); 1289 static void RunToPointNoRecticle(Scriptable* Sender, Action* parameters); 1290 static void RunToSavedLocation(Scriptable* Sender, Action* parameters); 1291 static void SaveGame(Scriptable* Sender, Action* parameters); 1292 static void SaveLocation(Scriptable* Sender, Action* parameters); 1293 static void SaveObjectLocation(Scriptable* Sender, Action* parameters); 1294 static void ScreenShake(Scriptable* Sender, Action* parameters); 1295 static void SelectWeaponAbility(Scriptable* Sender, Action* parameters); 1296 static void SendTrigger(Scriptable* Sender, Action* parameters); 1297 static void SetApparentName(Scriptable* Sender, Action* parameters); 1298 static void SetAreaFlags(Scriptable* Sender, Action* parameters); 1299 static void SetAreaRestFlag(Scriptable* Sender, Action* parameters); 1300 static void SetArmourLevel(Scriptable* Sender, Action* parameters); 1301 static void SetBeenInPartyFlags(Scriptable* Sender, Action* parameters); 1302 static void SetBestWeapon(Scriptable *Sender, Action *parameters); 1303 static void SetCursorState(Scriptable* Sender, Action* parameters); 1304 static void SetCreatureAreaFlag(Scriptable* Sender, Action* parameters); 1305 static void SetCriticalPathObject(Scriptable* Sender, Action* parameters); 1306 static void SetDialogue(Scriptable* Sender, Action* parameters); 1307 static void SetDialogueRange(Scriptable* Sender, Action* parameters); 1308 static void SetDoorFlag(Scriptable* Sender, Action* parameters); 1309 static void SetDoorLocked(Scriptable* Sender, Action* parameters); 1310 static void SetEncounterProbability(Scriptable* Sender, Action* parameters); 1311 static void SetExtendedNight(Scriptable* Sender, Action* parameters); 1312 static void SetFaction(Scriptable* Sender, Action* parameters); 1313 static void SetGabber(Scriptable* Sender, Action* parameters); 1314 static void SetGlobal(Scriptable* Sender, Action* parameters); 1315 static void SetGlobalRandom(Scriptable* Sender, Action* parameters); 1316 static void SetGlobalTimer(Scriptable* Sender, Action* parameters); 1317 static void SetGlobalTimerOnce(Scriptable* Sender, Action* parameters); 1318 static void SetGlobalTimerRandom(Scriptable* Sender, Action* parameters); 1319 static void SetGlobalTint(Scriptable* Sender, Action* parameters); 1320 static void SetHomeLocation(Scriptable* Sender, Action* parameters); 1321 static void SetHP(Scriptable* Sender, Action* parameters); 1322 static void SetHPPercent(Scriptable* Sender, Action* parameters); 1323 static void SetInternal(Scriptable* Sender, Action* parameters); 1324 static void SetInterrupt(Scriptable* Sender, Action* parameters); 1325 static void SetItemFlags(Scriptable* Sender, Action* parameters); 1326 static void SetLeavePartyDialogFile(Scriptable* Sender, Action* parameters); 1327 static void SetMarkedSpell(Scriptable* Sender, Action* parameters); 1328 static void SetMasterArea(Scriptable* Sender, Action* parameters); 1329 static void SetMazeEasier(Scriptable* Sender, Action* parameters); 1330 static void SetMazeHarder(Scriptable* Sender, Action* parameters); 1331 static void SetMoraleAI(Scriptable* Sender, Action* parameters); 1332 static void SetMusic(Scriptable* Sender, Action* parameters); 1333 static void SetMyTarget(Scriptable* Sender, Action* parameters); 1334 static void SetNamelessClass(Scriptable* Sender, Action* parameters); 1335 static void SetNamelessDeath(Scriptable* Sender, Action* parameters); 1336 static void SetNamelessDisguise(Scriptable* Sender, Action* parameters); 1337 static void SetNoOneOnTrigger(Scriptable* Sender, Action* parameters); 1338 static void SetNumTimesTalkedTo(Scriptable* Sender, Action* parameters); 1339 static void SetOriginalClass(Scriptable* Sender, Action* parameters); 1340 static void SetPlayerSound(Scriptable* Sender, Action* parameters); 1341 static void SetQuestDone(Scriptable* Sender, Action* parameters); 1342 static void SetRegularName(Scriptable* Sender, Action* parameters); 1343 static void SetRestEncounterChance(Scriptable* Sender, Action* parameters); 1344 static void SetRestEncounterProbabilityDay(Scriptable* Sender, Action* parameters); 1345 static void SetRestEncounterProbabilityNight(Scriptable* Sender, Action* parameters); 1346 static void SetSavedLocation(Scriptable* Sender, Action* parameters); 1347 static void SetSavedLocationPoint(Scriptable* Sender, Action* parameters); 1348 static void SetScriptName(Scriptable* Sender, Action* parameters); 1349 static void SetSelection(Scriptable* Sender, Action* parameters); 1350 static void SetStartPos(Scriptable* Sender, Action* parameters); 1351 static void SetTeam(Scriptable* Sender, Action* parameters); 1352 static void SetTeamBit(Scriptable* Sender, Action* parameters); 1353 static void SetTextColor(Scriptable* Sender, Action* parameters); 1354 static void SetToken(Scriptable* Sender, Action* parameters); 1355 static void SetToken2DA(Scriptable* Sender, Action* parameters); 1356 static void SetTokenGlobal(Scriptable* Sender, Action* parameters); 1357 static void SetTokenObject(Scriptable* Sender, Action* parameters); 1358 static void SetTrackString(Scriptable* Sender, Action* parameters); 1359 static void SetupWish(Scriptable* Sender, Action* parameters); 1360 static void SetupWishObject(Scriptable* Sender, Action* parameters); 1361 static void SetVisualRange(Scriptable* Sender, Action* parameters); 1362 static void SG(Scriptable* Sender, Action* parameters); 1363 static void Shout(Scriptable* Sender, Action* parameters); 1364 static void SmallWait(Scriptable* Sender, Action* parameters); 1365 static void SmallWaitRandom(Scriptable* Sender, Action* parameters); 1366 static void SoundActivate(Scriptable* Sender, Action* parameters); 1367 static void SpawnPtActivate(Scriptable* Sender, Action* parameters); 1368 static void SpawnPtDeactivate(Scriptable* Sender, Action* parameters); 1369 static void SpawnPtSpawn(Scriptable* Sender, Action* parameters); 1370 static void Spell(Scriptable* Sender, Action* parameters); 1371 static void SpellCastEffect(Scriptable* Sender, Action* parameters); 1372 static void SpellHitEffectPoint(Scriptable* Sender, Action* parameters); 1373 static void SpellHitEffectSprite(Scriptable* Sender, Action* parameters); 1374 static void SpellNoDec(Scriptable* Sender, Action* parameters); 1375 static void SpellPoint(Scriptable* Sender, Action* parameters); 1376 static void SpellPointNoDec(Scriptable* Sender, Action* parameters); 1377 static void StartCombatCounter(Scriptable* Sender, Action* parameters); 1378 static void StartCutScene(Scriptable* Sender, Action* parameters); 1379 static void StartCutSceneEx(Scriptable* Sender, Action* parameters); 1380 static void StartCutSceneMode(Scriptable* Sender, Action* parameters); 1381 static void StartDialogue(Scriptable* Sender, Action* parameters); 1382 static void StartDialogueInterrupt(Scriptable* Sender, Action* parameters); 1383 static void StartDialogueNoSet(Scriptable* Sender, Action* parameters); 1384 static void StartDialogueNoSetInterrupt(Scriptable* Sender, 1385 Action* parameters); 1386 static void StartDialogueOverride(Scriptable* Sender, Action* parameters); 1387 static void StartDialogueOverrideInterrupt(Scriptable* Sender, 1388 Action* parameters); 1389 static void StartMovie(Scriptable* Sender, Action* parameters); 1390 static void StartMusic(Scriptable* Sender, Action* parameters); 1391 static void StartRainNow(Scriptable* Sender, Action* parameters); 1392 static void StartRandomTimer(Scriptable* Sender, Action* parameters); 1393 static void StartSong(Scriptable* Sender, Action* parameters); 1394 static void StartStore(Scriptable* Sender, Action* parameters); 1395 static void StartTimer(Scriptable* Sender, Action* parameters); 1396 static void StateOverrideFlag(Scriptable* Sender, Action* parameters); 1397 static void StateOverrideTime(Scriptable* Sender, Action* parameters); 1398 static void StaticPalette(Scriptable* Sender, Action* parameters); 1399 static void StaticStart(Scriptable* Sender, Action* parameters); 1400 static void StaticStop(Scriptable* Sender, Action* parameters); 1401 static void StopMoving(Scriptable* Sender, Action* parameters); 1402 static void StorePartyLocation(Scriptable *Sender, Action* parameters); 1403 static void Swing(Scriptable* Sender, Action* parameters); 1404 static void SwingOnce(Scriptable* Sender, Action* parameters); 1405 static void TakeItemList(Scriptable* Sender, Action* parameters); 1406 static void TakeItemListParty(Scriptable* Sender, Action* parameters); 1407 static void TakeItemListPartyNum(Scriptable* Sender, Action* parameters); 1408 static void TakeItemReplace(Scriptable* Sender, Action* parameters); 1409 static void TakePartyGold(Scriptable* Sender, Action* parameters); 1410 static void TakePartyItem(Scriptable* Sender, Action* parameters); 1411 static void TakePartyItemAll(Scriptable* Sender, Action* parameters); 1412 static void TakePartyItemNum(Scriptable* Sender, Action* parameters); 1413 static void TakePartyItemRange(Scriptable* Sender, Action* parameters); 1414 static void TeleportParty(Scriptable* Sender, Action* parameters); 1415 static void TextScreen(Scriptable* Sender, Action* parameters); 1416 static void ToggleDoor(Scriptable* Sender, Action* parameters); 1417 static void TimedMoveToPoint(Scriptable* Sender, Action* parameters); 1418 static void TransformItem(Scriptable* Sender, Action* parameters); 1419 static void TransformItemAll(Scriptable* Sender, Action* parameters); 1420 static void TransformPartyItem(Scriptable* Sender, Action* parameters); 1421 static void TransformPartyItemAll(Scriptable* Sender, Action* parameters); 1422 static void TriggerActivation(Scriptable* Sender, Action* parameters); 1423 static void TriggerWalkTo(Scriptable* Sender, Action* parameters); 1424 static void Turn(Scriptable* Sender, Action* parameters); 1425 static void TurnAMT(Scriptable* Sender, Action* parameters); 1426 static void UndoExplore(Scriptable *Sender, Action *parameters); 1427 static void Unhide(Scriptable* Sender, Action* parameters); 1428 static void UnhideGUI(Scriptable* Sender, Action* parameters); 1429 static void Unlock(Scriptable* Sender, Action* parameters); 1430 static void UnlockScroll(Scriptable* Sender, Action* parameters); 1431 static void UseContainer(Scriptable* Sender, Action* parameters); 1432 static void UseDoor(Scriptable* Sender, Action* parameters); 1433 static void UseItem(Scriptable* Sender, Action* parameters); 1434 static void UseItemPoint(Scriptable* Sender, Action* parameters); 1435 static void VerbalConstant(Scriptable* Sender, Action* parameters); 1436 static void VerbalConstantHead(Scriptable* Sender, Action* parameters); 1437 static void Wait(Scriptable* Sender, Action* parameters); 1438 static void WaitAnimation(Scriptable* Sender, Action* parameters); 1439 static void WaitRandom(Scriptable* Sender, Action* parameters); 1440 static void Weather(Scriptable* Sender, Action* parameters); 1441 static void XEquipItem(Scriptable *Sender, Action *parameters); 1442 1443 //Objects 1444 static Targets *BestAC(const Scriptable *Sender, Targets *parameters, int ga_flags); 1445 static Targets *EighthNearest(const Scriptable *Sender, Targets *parameters, int ga_flagss); 1446 static Targets *EighthNearestDoor(const Scriptable *Sender, Targets *parameters, int ga_flagss); 1447 static Targets *EighthNearestEnemyOf(const Scriptable *Sender, Targets *parameters, int ga_flagss); 1448 static Targets *EighthNearestEnemyOfType(const Scriptable *Sender, Targets *parameters, int ga_flagss); 1449 static Targets *EighthNearestMyGroupOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1450 static Targets *Farthest(const Scriptable *Sender, Targets *parameters, int ga_flags); 1451 static Targets *FarthestEnemyOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1452 static Targets *FifthNearest(const Scriptable *Sender, Targets *parameters, int ga_flags); 1453 static Targets *FifthNearestDoor(const Scriptable *Sender, Targets *parameters, int ga_flags); 1454 static Targets *FifthNearestEnemyOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1455 static Targets *FifthNearestEnemyOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1456 static Targets *FifthNearestMyGroupOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1457 static Targets *FourthNearest(const Scriptable *Sender, Targets *parameters, int ga_flags); 1458 static Targets *FourthNearestDoor(const Scriptable *Sender, Targets *parameters, int ga_flags); 1459 static Targets *FourthNearestEnemyOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1460 static Targets *FourthNearestEnemyOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1461 static Targets *FourthNearestMyGroupOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1462 static Targets *Gabber(const Scriptable *Sender, Targets *parameters, int ga_flags); 1463 static Targets *GroupOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1464 static Targets *LastAttackerOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1465 static Targets *LastCommandedBy(const Scriptable *Sender, Targets *parameters, int ga_flags); 1466 static Targets *LastHeardBy(const Scriptable *Sender, Targets *parameters, int ga_flags); 1467 static Targets *LastHelp(const Scriptable *Sender, Targets *parameters, int ga_flags); 1468 static Targets *LastHitter(const Scriptable *Sender, Targets *parameters, int ga_flags); 1469 static Targets *LastMarkedObject(const Scriptable *Sender, Targets *parameters, int ga_flags); 1470 static Targets *LastSeenBy(const Scriptable *Sender, Targets *parameters, int ga_flags); 1471 static Targets *LastSummonerOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1472 static Targets *LastTalkedToBy(const Scriptable *Sender, Targets *parameters, int ga_flags); 1473 static Targets *LastTargetedBy(const Scriptable *Sender, Targets *parameters, int ga_flags); 1474 static Targets *LastTrigger(const Scriptable *Sender, Targets *parameters, int ga_flags); 1475 static Targets *LeaderOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1476 static Targets *LeastDamagedOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1477 static Targets *MostDamagedOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1478 static Targets *Myself(const Scriptable *Sender, Targets *parameters, int ga_flags); 1479 static Targets *MyTarget(const Scriptable *Sender, Targets *parameters, int ga_flags); 1480 static Targets *Nearest(const Scriptable *Sender, Targets *parameters, int ga_flags); 1481 static Targets *NearestDoor(const Scriptable *Sender, Targets *parameters, int ga_flags); 1482 static Targets *NearestEnemyOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1483 static Targets *NearestEnemyOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1484 static Targets *NearestEnemySummoned(const Scriptable *Sender, Targets *parameters, int ga_flags); 1485 static Targets *NearestMyGroupOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1486 static Targets *NearestPC(const Scriptable *Sender, Targets *parameters, int ga_flags); 1487 static Targets *NinthNearest(const Scriptable *Sender, Targets *parameters, int ga_flags); 1488 static Targets *NinthNearestDoor(const Scriptable *Sender, Targets *parameters, int ga_flags); 1489 static Targets *NinthNearestEnemyOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1490 static Targets *NinthNearestEnemyOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1491 static Targets *NinthNearestMyGroupOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1492 static Targets *Nothing(const Scriptable *Sender, Targets *parameters, int ga_flags); 1493 static Targets *Player1(const Scriptable *Sender, Targets *parameters, int ga_flags); 1494 static Targets *Player1Fill(const Scriptable *Sender, Targets *parameters, int ga_flags); 1495 static Targets *Player2(const Scriptable *Sender, Targets *parameters, int ga_flags); 1496 static Targets *Player2Fill(const Scriptable *Sender, Targets *parameters, int ga_flags); 1497 static Targets *Player3(const Scriptable *Sender, Targets *parameters, int ga_flags); 1498 static Targets *Player3Fill(const Scriptable *Sender, Targets *parameters, int ga_flags); 1499 static Targets *Player4(const Scriptable *Sender, Targets *parameters, int ga_flags); 1500 static Targets *Player4Fill(const Scriptable *Sender, Targets *parameters, int ga_flags); 1501 static Targets *Player5(const Scriptable *Sender, Targets *parameters, int ga_flags); 1502 static Targets *Player5Fill(const Scriptable *Sender, Targets *parameters, int ga_flags); 1503 static Targets *Player6(const Scriptable *Sender, Targets *parameters, int ga_flags); 1504 static Targets *Player6Fill(const Scriptable *Sender, Targets *parameters, int ga_flags); 1505 static Targets *Protagonist(const Scriptable *Sender, Targets *parameters, int ga_flags); 1506 static Targets *ProtectedBy(const Scriptable *Sender, Targets *parameters, int ga_flags); 1507 static Targets *ProtectorOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1508 static Targets *SecondNearest(const Scriptable *Sender, Targets *parameters, int ga_flags); 1509 static Targets *SecondNearestDoor(const Scriptable *Sender, Targets *parameters, int ga_flags); 1510 static Targets *SecondNearestEnemyOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1511 static Targets *SecondNearestEnemyOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1512 static Targets *SecondNearestMyGroupOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1513 static Targets *SelectedCharacter(const Scriptable *Sender, Targets *parameters, int ga_flags); 1514 static Targets *SeventhNearest(const Scriptable *Sender, Targets *parameters, int ga_flags); 1515 static Targets *SeventhNearestDoor(const Scriptable *Sender, Targets *parameters, int ga_flags); 1516 static Targets *SeventhNearestEnemyOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1517 static Targets *SeventhNearestEnemyOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1518 static Targets *SeventhNearestMyGroupOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1519 static Targets *SixthNearest(const Scriptable *Sender, Targets *parameters, int ga_flags); 1520 static Targets *SixthNearestDoor(const Scriptable *Sender, Targets *parameters, int ga_flags); 1521 static Targets *SixthNearestEnemyOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1522 static Targets *SixthNearestEnemyOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1523 static Targets *SixthNearestMyGroupOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1524 static Targets *SpellTarget(const Scriptable *Sender, Targets *parameters, int ga_flags); 1525 static Targets *StrongestOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1526 static Targets *StrongestOfMale(const Scriptable *Sender, Targets *parameters, int ga_flags); 1527 static Targets *TenthNearest(const Scriptable *Sender, Targets *parameters, int ga_flags); 1528 static Targets *TenthNearestDoor(const Scriptable *Sender, Targets *parameters, int ga_flags); 1529 static Targets *TenthNearestEnemyOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1530 static Targets *TenthNearestEnemyOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1531 static Targets *TenthNearestMyGroupOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1532 static Targets *ThirdNearest(const Scriptable *Sender, Targets *parameters, int ga_flags); 1533 static Targets *ThirdNearestDoor(const Scriptable *Sender, Targets *parameters, int ga_flags); 1534 static Targets *ThirdNearestEnemyOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1535 static Targets *ThirdNearestEnemyOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1536 static Targets *ThirdNearestMyGroupOfType(const Scriptable *Sender, Targets *parameters, int ga_flags); 1537 static Targets *WeakestOf(const Scriptable *Sender, Targets *parameters, int ga_flags); 1538 static Targets *WorstAC(const Scriptable *Sender, Targets *parameters, int ga_flags); 1539 1540 /*GemRB extensions/actions*/ 1541 static void RunAwayFromPoint(Scriptable* Sender, Action* parameters); 1542 static void UnMakeGlobal(Scriptable* Sender, Action* parameters); 1543 static void UnloadArea(Scriptable* Sender, Action* parameters); 1544 1545 /*GemRB extensions/objects*/ 1546 static Targets *Player7(const Scriptable *Sender, Targets *parameters, int ga_flags); 1547 static Targets *Player7Fill(const Scriptable *Sender, Targets *parameters, int ga_flags); 1548 static Targets *Player8(const Scriptable *Sender, Targets *parameters, int ga_flags); 1549 static Targets *Player8Fill(const Scriptable *Sender, Targets *parameters, int ga_flags); 1550 static Targets *Player9(const Scriptable *Sender, Targets *parameters, int ga_flags); 1551 static Targets *Player9Fill(const Scriptable *Sender, Targets *parameters, int ga_flags); 1552 static Targets *Player10(const Scriptable *Sender, Targets *parameters, int ga_flags); 1553 static Targets *Player10Fill(const Scriptable *Sender, Targets *parameters, int ga_flags); 1554 }; 1555 1556 GEM_EXPORT Action* GenerateAction(const char* String); 1557 Action *GenerateActionDirect(const char *String, const Scriptable *object); 1558 GEM_EXPORT Trigger* GenerateTrigger(char* String); 1559 1560 void InitializeIEScript(); 1561 1562 } 1563 1564 #endif 1565