30#include "gamescript.h"
34extern Event EV_Trigger_ActivateTargets;
35extern Event EV_Trigger_SetWait;
36extern Event EV_Trigger_SetDelay;
37extern Event EV_Trigger_SetCount;
38extern Event EV_Trigger_SetMessage;
39extern Event EV_Trigger_SetNoise;
40extern Event EV_Trigger_SetThread;
41extern Event EV_Trigger_Effect;
42extern Event EV_Trigger_StartThread;
43extern Event EV_Trigger_SetTriggerable;
44extern Event EV_Trigger_SetNotTriggerable;
46#define TRIGGER_PLAYERS 4
47#define TRIGGER_MONSTERS 8
48#define TRIGGER_PROJECTILES 16
50class Trigger :
public Animate
56 qboolean triggerActivated;
63 qboolean useTriggerDir;
69 qboolean edgeTriggered;
73 CLASS_PROTOTYPE(Trigger);
79 virtual qboolean respondTo(Entity *other);
82 virtual Entity *getActivator(Entity *other);
84 void SetModelEvent(
Event *ev);
85 void Touch(
Event *ev);
86 void EventSetWait(
Event *ev);
87 void EventSetDelay(
Event *ev);
88 void EventSetCount(
Event *ev);
89 void EventSetThread(
Event *ev);
90 void SetTriggerDir(
Event *ev);
91 void SetTriggerable(
Event *ev);
92 void SetNotTriggerable(
Event *ev);
93 void SetMultiFaceted(
Event *ev);
94 void SetEdgeTriggered(
Event *ev);
95 void SetTriggerCone(
Event *ev);
97 void EventSetMessage(
Event *ev);
98 void SetMessage(
const char *message);
101 void EventSetNoise(
Event *ev);
102 void SetNoise(
const char *text);
105 void SetTriggerDir(
float angle);
106 Vector GetTriggerDir(
void);
107 qboolean UsingTriggerDir(
void);
109 void SetMultiFaceted(
int newFacet);
110 void SetEdgeTriggered(qboolean newEdge);
112 int GetMultiFaceted(
void);
113 qboolean GetEdgeTriggered(
void);
115 void StartThread(
Event *ev);
116 void TriggerStuff(
Event *ev);
117 void ActivateTargets(
Event *ev);
118 void DamageEvent(
Event *ev)
override;
119 void EventGetActivator(
Event *ev);
120 void Archive(
Archiver& arc)
override;
128 qboolean respondTo(Entity *other)
override;
149 void Archive(
Archiver& arc)
override;
151 void TriggerStuff(
Event *ev);
152 bool IsTriggerable(Entity *other);
153 void SetTriggerTime(Entity *other,
float time);
156inline void TriggerAll::Archive(
Archiver& arc)
158 Trigger::Archive(arc);
160 entries.Archive(arc, &TriggerAllEntry::Archive);
163class TouchField :
public Trigger
170 CLASS_PROTOTYPE(TouchField);
173 virtual void Setup(Entity *ownerentity,
Event& ontouch,
Vector min,
Vector max,
int respondto);
174 void SendEvent(
Event *ev);
175 void Archive(
Archiver& arc)
override;
178inline void TouchField::Archive(
Archiver& arc)
180 Trigger::Archive(arc);
182 arc.ArchiveEventPointer(&ontouch);
183 arc.ArchiveSafePointer(&owner);
188class TriggerOnce :
public Trigger
191 CLASS_PROTOTYPE(TriggerOnce);
195class TriggerSave :
public TriggerOnce
201 CLASS_PROTOTYPE(TriggerSave);
205 void SaveGame(
Event *ev);
206 void EventSaveName(
Event *ev);
207 void Archive(
Archiver& arc)
override;
210class TriggerRelay :
public Trigger
213 CLASS_PROTOTYPE(TriggerRelay);
218class TriggerSecret :
public TriggerOnce
221 CLASS_PROTOTYPE(TriggerSecret);
224 void FoundSecret(
Event *ev);
225 void Activate(
Event *ev);
228class TriggerPush :
public Trigger
234 CLASS_PROTOTYPE(TriggerPush);
237 void Push(
Event *ev);
238 void SetPushDir(
Event *ev);
239 void SetPushSpeed(
Event *ev);
240 void Archive(
Archiver& arc)
override;
243inline void TriggerPush::Archive(
Archiver& arc)
245 Trigger::Archive(arc);
247 arc.ArchiveFloat(&speed);
250class TriggerPushAny :
public Trigger
256 CLASS_PROTOTYPE(TriggerPushAny);
259 void Push(
Event *ev);
260 void SetSpeed(
Event *ev);
261 void Archive(
Archiver& arc)
override;
264inline void TriggerPushAny::Archive(
Archiver& arc)
266 Trigger::Archive(arc);
268 arc.ArchiveFloat(&speed);
271#define AMBIENT_ON (1 << 0)
272#define AMBIENT_OFF (1 << 1)
273#define TOGGLESOUND (1 << 5)
275class TriggerPlaySound :
public Trigger
278 friend class SoundManager;
287 CLASS_PROTOTYPE(TriggerPlaySound);
290 void ToggleSound(
Event *ev);
291 void SetVolume(
Event *ev);
292 void SetMinDist(
Event *ev);
293 void SetChannel(
Event *ev);
295 void StartSound(
void);
296 void SetVolume(
float vol);
297 void SetMinDist(
float dist);
299 void Archive(
Archiver& arc)
override;
302inline void TriggerPlaySound::Archive(
Archiver& arc)
304 Trigger::Archive(arc);
306 arc.ArchiveInteger(&
state);
307 arc.ArchiveFloat(&min_dist);
308 arc.ArchiveFloat(&volume);
309 arc.ArchiveInteger(&channel);
310 arc.ArchiveBoolean(&ambient);
315 if (spawnflags & TOGGLESOUND) {
320 PostEvent(EV_Trigger_Effect, EV_POSTSPAWN);
325class TriggerSpeaker :
public TriggerPlaySound
328 CLASS_PROTOTYPE(TriggerSpeaker);
333class RandomSpeaker :
public TriggerSpeaker
336 friend class SoundManager;
343 CLASS_PROTOTYPE(RandomSpeaker);
346 void TriggerSound(
Event *ev);
347 void SetMinDelay(
Event *ev);
348 void SetMaxDelay(
Event *ev);
349 void SetChance(
Event *ev);
351 void SetMinDelay(
float value);
352 void SetMaxDelay(
float value);
353 void SetChance(
float value);
354 void ScheduleSound(
void);
356 void Archive(
Archiver& arc)
override;
359inline void RandomSpeaker::Archive(
Archiver& arc)
361 TriggerSpeaker::Archive(arc);
363 arc.ArchiveFloat(&chance);
364 arc.ArchiveFloat(&mindelay);
365 arc.ArchiveFloat(&maxdelay);
368class TriggerChangeLevel :
public Trigger
375 CLASS_PROTOTYPE(TriggerChangeLevel);
377 TriggerChangeLevel();
378 void SetMap(
Event *ev);
379 void SetSpawnSpot(
Event *ev);
380 void ChangeLevel(
Event *ev);
381 const char *Map(
void);
382 const char *SpawnSpot(
void);
383 void Archive(
Archiver& arc)
override;
386class TriggerExit :
public Trigger
389 CLASS_PROTOTYPE(TriggerExit);
392 void DisplayExitSign(
Event *ev);
393 void TurnExitSignOff(
Event *ev);
396class TriggerUse :
public Trigger
399 CLASS_PROTOTYPE(TriggerUse);
407class TriggerSidedUse :
public TriggerUse
410 CLASS_PROTOTYPE(TriggerSidedUse);
415class TriggerUseOnce :
public TriggerUse
418 CLASS_PROTOTYPE(TriggerUseOnce);
423class TriggerHurt :
public Trigger
428 void Hurt(
Event *ev);
429 void SetDamage(
Event *ev);
432 CLASS_PROTOTYPE(TriggerHurt);
435 void Archive(
Archiver& arc)
override;
438inline void TriggerHurt::Archive(
Archiver& arc)
440 Trigger::Archive(arc);
442 arc.ArchiveFloat(&damage);
445class TriggerDamageTargets :
public Trigger
450 void DamageTargets(
Event *ev);
451 void SetDamage(
Event *ev);
454 CLASS_PROTOTYPE(TriggerDamageTargets);
456 TriggerDamageTargets();
457 void PassDamage(
Event *ev);
458 void Archive(
Archiver& arc)
override;
461inline void TriggerDamageTargets::Archive(
Archiver& arc)
463 Trigger::Archive(arc);
465 arc.ArchiveFloat(&damage);
473 void TriggerCamera(
Event *ev);
481 void SetMins(
Event *ev);
482 void SetMaxs(
Event *ev);
485class TriggerMusic :
public Trigger
488 friend class SoundManager;
493 const_str altcurrent;
494 const_str altfallback;
497 CLASS_PROTOTYPE(TriggerMusic);
500 void SetCurrentMood(
Event *ev);
501 void SetFallbackMood(
Event *ev);
502 void SetAltCurrentMood(
Event *ev);
503 void SetAltFallbackMood(
Event *ev);
504 void ChangeMood(
Event *ev);
505 void AltChangeMood(
Event *ev);
506 void SetOneShot(
Event *ev);
508 void SetMood(
str crnt,
str fback);
509 void SetAltMood(
str crnt,
str fback);
510 void SetOneShot(qboolean once);
512 void Archive(
Archiver& arc)
override;
515class TriggerReverb :
public Trigger
518 friend class SoundManager;
524 float altreverblevel;
527 CLASS_PROTOTYPE(TriggerReverb);
530 void SetReverbLevel(
Event *ev);
531 void SetReverbType(
Event *ev);
532 void SetAltReverbType(
Event *ev);
533 void SetAltReverbLevel(
Event *ev);
534 void ChangeReverb(
Event *ev);
535 void AltChangeReverb(
Event *ev);
536 void SetOneShot(
Event *ev);
538 void SetReverb(
int type,
float level);
539 void SetAltReverb(
int type,
float level);
540 void SetOneShot(qboolean once);
542 void Archive(
Archiver& arc)
override;
545inline void TriggerReverb::Archive(
Archiver& arc)
547 Trigger::Archive(arc);
549 arc.ArchiveBoolean(&oneshot);
550 arc.ArchiveInteger(&reverbtype);
551 arc.ArchiveInteger(&altreverbtype);
552 arc.ArchiveFloat(&reverblevel);
553 arc.ArchiveFloat(&altreverblevel);
559 const_str triggername;
561 void setTriggerName(
Event *event);
566 qboolean respondTo(
Entity *other)
override;
569 void Archive(
Archiver& arc)
override;
572class TriggerGivePowerup :
public Trigger
576 const_str powerup_name;
579 CLASS_PROTOTYPE(TriggerGivePowerup);
581 TriggerGivePowerup();
583 void SetOneShot(
Event *ev);
584 void SetPowerupName(
Event *ev);
585 void GivePowerup(
Event *ev);
586 void Archive(
Archiver& arc)
override;
589class TriggerClickItem :
public Trigger
592 CLASS_PROTOTYPE(TriggerClickItem);
596 void SetClickItemModelEvent(
Event *ev);
597 void Archive(
Archiver& arc)
override;
600inline void TriggerClickItem::Archive(
Archiver& arc)
602 Trigger::Archive(arc);
615 void TakeNoDamage(
Event *ev);
628 qboolean respondTo(Entity *other)
override;
634 CLASS_PROTOTYPE(TriggerLandmine);
637 void Archive(
Archiver& arc)
override;
639 void EventIsAbandoned(
Event *ev);
640 void EventIsImmune(
Event *ev);
641 void EventSetDamageable(
Event *ev);
643 void SetDamageable(qboolean damageable);
644 qboolean IsImmune(
Entity *other)
const;
645 void SetTeam(
int team);
651inline void TriggerLandmine::Archive(
Archiver& arc)
653 Trigger::Archive(arc);
655 arc.ArchiveInteger(&team);
Definition container.h:85
Definition listener.h:246
Definition scriptmaster.h:42
Definition gamescript.h:165