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)
464 Trigger::Archive(arc);
466 arc.ArchiveFloat(&damage);
474 void TriggerCamera(
Event *ev);
482 void SetMins(
Event *ev);
483 void SetMaxs(
Event *ev);
486class TriggerMusic :
public Trigger
489 friend class SoundManager;
494 const_str altcurrent;
495 const_str altfallback;
498 CLASS_PROTOTYPE(TriggerMusic);
501 void SetCurrentMood(
Event *ev);
502 void SetFallbackMood(
Event *ev);
503 void SetAltCurrentMood(
Event *ev);
504 void SetAltFallbackMood(
Event *ev);
505 void ChangeMood(
Event *ev);
506 void AltChangeMood(
Event *ev);
507 void SetOneShot(
Event *ev);
509 void SetMood(
str crnt,
str fback);
510 void SetAltMood(
str crnt,
str fback);
511 void SetOneShot(qboolean once);
513 void Archive(
Archiver& arc)
override;
516class TriggerReverb :
public Trigger
519 friend class SoundManager;
525 float altreverblevel;
528 CLASS_PROTOTYPE(TriggerReverb);
531 void SetReverbLevel(
Event *ev);
532 void SetReverbType(
Event *ev);
533 void SetAltReverbType(
Event *ev);
534 void SetAltReverbLevel(
Event *ev);
535 void ChangeReverb(
Event *ev);
536 void AltChangeReverb(
Event *ev);
537 void SetOneShot(
Event *ev);
539 void SetReverb(
int type,
float level);
540 void SetAltReverb(
int type,
float level);
541 void SetOneShot(qboolean once);
543 void Archive(
Archiver& arc)
override;
546inline void TriggerReverb::Archive(
Archiver& arc)
549 Trigger::Archive(arc);
551 arc.ArchiveBoolean(&oneshot);
552 arc.ArchiveInteger(&reverbtype);
553 arc.ArchiveInteger(&altreverbtype);
554 arc.ArchiveFloat(&reverblevel);
555 arc.ArchiveFloat(&altreverblevel);
561 const_str triggername;
563 void setTriggerName(
Event *event);
568 qboolean respondTo(
Entity *other)
override;
571 void Archive(
Archiver& arc)
override;
574class TriggerGivePowerup :
public Trigger
578 const_str powerup_name;
581 CLASS_PROTOTYPE(TriggerGivePowerup);
583 TriggerGivePowerup();
585 void SetOneShot(
Event *ev);
586 void SetPowerupName(
Event *ev);
587 void GivePowerup(
Event *ev);
588 void Archive(
Archiver& arc)
override;
591class TriggerClickItem :
public Trigger
594 CLASS_PROTOTYPE(TriggerClickItem);
598 void SetClickItemModelEvent(
Event *ev);
599 void Archive(
Archiver& arc)
override;
602inline void TriggerClickItem::Archive(
Archiver& arc)
604 Trigger::Archive(arc);
617 void TakeNoDamage(
Event *ev);
630 qboolean respondTo(Entity *other)
override;
636 CLASS_PROTOTYPE(TriggerLandmine);
639 void Archive(
Archiver& arc)
override;
641 void EventIsAbandoned(
Event *ev);
642 void EventIsImmune(
Event *ev);
643 void EventSetDamageable(
Event *ev);
645 void SetDamageable(qboolean damageable);
646 qboolean IsImmune(
Entity *other)
const;
647 void SetTeam(
int team);
653inline void TriggerLandmine::Archive(
Archiver& arc)
655 Trigger::Archive(arc);
657 arc.ArchiveInteger(&team);
Definition container.h:85
Definition listener.h:246
Definition scriptmaster.h:42
Definition gamescript.h:165