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