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