Slowly cleaning up prints, removing redundant Respawn() functions

This commit is contained in:
Marco Cawthorne 2020-03-31 07:18:51 +02:00
parent b1aef0c4b5
commit 1670f8f783
22 changed files with 85 additions and 160 deletions

View file

@ -90,27 +90,20 @@ float ambient_generic::SendEntity(entity ePEnt, float fChanged)
void ambient_generic::UseNormal(void)
{
sound(this, CHAN_VOICE, m_strActivePath, m_flVolume, m_flRadius, m_flPitch);
#ifdef GS_DEVELOPER
print( sprintf( "%s::UseNormal: Play `%s`\n",
this.classname, m_strActivePath ) );
#endif
}
void ambient_generic::UseLoop(void)
{
if (m_iToggleSwitch == TRUE) {
#ifdef GS_DEVELOPER
print( sprintf( "%s::UseLoop: Stop `%s`\n",
dprint( sprintf( "%s::UseLoop: Stop `%s`\n",
this.classname, m_strActivePath ) );
#endif
m_strActivePath = "common/null.wav";
} else {
m_strActivePath = m_strSoundPath;
#ifdef GS_DEVELOPER
print( sprintf( "%s::UseLoop: Play `%s`\n",
dprint( sprintf( "%s::UseLoop: Play `%s`\n",
this.classname, m_strActivePath ) );
#endif
}
m_iToggleSwitch = 1 - m_iToggleSwitch;

View file

@ -159,14 +159,14 @@ void CBaseMonster::FreeState(void)
CBaseTrigger trigger = 0;
trigger = (CBaseTrigger)find(trigger, CBaseTrigger::m_strTargetName, m_strRouteEnded);
if (!trigger) {
print(sprintf("^1CBaseMonster::FreeState^7: %s doesn't exist. Won't trigger\n", m_strRouteEnded));
dprint(sprintf("^1CBaseMonster::FreeState^7: %s doesn't exist. Won't trigger\n", m_strRouteEnded));
}
if (trigger.Trigger != __NULL__) {
print(sprintf("^2CBaseMonster::FreeState^7: %s triggered %f\n", m_strRouteEnded, time));
dprint(sprintf("^2CBaseMonster::FreeState^7: %s triggered %f\n", m_strRouteEnded, time));
trigger.Trigger();
} else {
print(sprintf("^1CBaseMonster::FreeState^7: %s not a valid trigger\n", m_strRouteEnded));
dprint(sprintf("^1CBaseMonster::FreeState^7: %s not a valid trigger\n", m_strRouteEnded));
}
}
@ -196,14 +196,14 @@ void CBaseMonster::CheckRoute(void)
flDist = floor( vlen( evenpos - origin ) );
if ( flDist < 8 ) {
print(sprintf("^2CBaseMonster::CheckRoute^7: %s reached node\n", this.m_strTargetName));
dprint(sprintf("^2CBaseMonster::CheckRoute^7: %s reached node\n", this.m_strTargetName));
m_iCurNode--;
velocity = [0,0,0]; /* clamp friction */
}
if (m_iCurNode < -1) {
ClearRoute();
print(sprintf("^2CBaseMonster::CheckRoute^7: %s reached end\n", this.m_strTargetName));
dprint(sprintf("^2CBaseMonster::CheckRoute^7: %s reached end\n", this.m_strTargetName));
/* mark that we've ended a sequence, if we're in one and que anim */
if (m_iSequenceState == SEQUENCESTATE_ACTIVE) {
@ -212,12 +212,12 @@ void CBaseMonster::CheckRoute(void)
m_iSequenceState = SEQUENCESTATE_ENDING;
think = FreeState;
nextthink = time + duration;
print(sprintf("^2CBaseMonster::CheckRoute^7: %s overriding anim for %f seconds (modelindex %d, frame %d)\n", this.m_strTargetName, duration, modelindex, m_flSequenceEnd));
dprint(sprintf("^2CBaseMonster::CheckRoute^7: %s overriding anim for %f seconds (modelindex %d, frame %d)\n", this.m_strTargetName, duration, modelindex, m_flSequenceEnd));
} else {
/* we still need to trigger targets */
think = FreeState;
nextthink = time;
print(sprintf("^2CBaseMonster::CheckRoute^7: %s has no anim, finished sequence.\n", this.m_strTargetName));
dprint(sprintf("^2CBaseMonster::CheckRoute^7: %s has no anim, finished sequence.\n", this.m_strTargetName));
}
}
}
@ -265,7 +265,7 @@ void CBaseMonster::NewRoute(vector destination)
/* we can walk there directly */
tracebox(p.origin, p.mins, p.maxs, dest, TRUE, this);
if (trace_fraction == 1.0) {
print("^2CBaseMonster::NewRoute^7: Walking directly to last node\n");
dprint("^2CBaseMonster::NewRoute^7: Walking directly to last node\n");
p.m_iCurNode = -1;
}
}

View file

@ -42,10 +42,8 @@ void CBaseTrigger :: UseTargets ( void )
{
for ( entity eFind = world; ( eFind = find( eFind, CBaseTrigger::m_strTargetName, m_strTarget ) ); ) {
CBaseTrigger trigger = (CBaseTrigger) eFind;
#ifdef GS_DEVELOPER
print( sprintf( "^2%s::^3UseTargets^7: Triggering %s `%s`\n",
dprint( sprintf( "^2%s::^3UseTargets^7: Triggering %s `%s`\n",
this.classname, eFind.classname, trigger.m_strTargetName ) );
#endif
if (trigger.Trigger != __NULL__) {
trigger.Trigger();
}
@ -95,10 +93,8 @@ void CBaseTrigger :: UseTargets_Delay ( float fDelay )
remove( self );
}
#ifdef GS_DEVELOPER
print( sprintf( "^2%s::^3UseTargets_Delay^7: Triggering `%s`\n",
this.classname, m_strTarget ) );
#endif
dprint( sprintf( "^2%s::^3UseTargets_Delay^7: Triggering `%s`\n",
this.classname, m_strTarget ) );
CBaseTrigger eTimer = spawn( CBaseTrigger );
eTimer.owner = eActivator;
@ -125,7 +121,7 @@ void CBaseTrigger :: InitBrushTrigger ( void )
solid = SOLID_TRIGGER;
setmodel( this, m_oldModel );
#ifdef GS_DEVELOPER
m_flRenderAmt = 0.0f;
m_flRenderAmt = 0.25f;
#else
modelindex = 0;
model = "";

View file

@ -74,7 +74,7 @@ void env_laser::think(void)
angles = t.origin;
if (!t) {
print("env_laser without valid target. Aborting\n");
print(sprintf("^1env_laser::think^7: %s has no valid target. Aborting\n", m_strTargetName));
return;
}

View file

@ -22,7 +22,7 @@
STUB!
*/
#define SF_CONVEYOR_VISUAL 1
#define SF_CONVEYOR_VISUAL 1
#define SF_CONVEYOR_NOTSOLID 2
class func_conveyor : func_wall
@ -38,16 +38,16 @@ class func_conveyor : func_wall
void func_conveyor :: SetMovementDirection ( void )
{
if ( angles == '0 -1 0' ) {
m_vecMoveDir = '0 0 1';
} else if ( angles == '0 -2 0' ) {
m_vecMoveDir = '0 0 -1';
if ( angles == [0,-1,0] ) {
m_vecMoveDir = [0,0,1];
} else if ( angles == [0,-2,0] ) {
m_vecMoveDir = [0,0,-1];
} else {
makevectors( angles );
m_vecMoveDir = v_forward;
}
angles = '0 0 0';
angles = [0,0,0];
}

View file

@ -284,7 +284,7 @@ void func_door_rotating::RotToDest(vector vDestAngle, void() func)
float flTravelLength, flTravelTime;
if (!m_flSpeed) {
print("^1func_door_rotating^7: No speed defined for moving entity!");
dprint(sprintf("^1func_door_rotating::RotToDest^7: No speed defined for %s!", m_strTargetName));
func_door_rotating::Respawn();
return;
}

View file

@ -60,7 +60,7 @@ void func_guntarget::Move(void)
node = (path_corner)find(world, CBaseTrigger::m_strTargetName, m_strTarget);
if (!node) {
print("^1func_guntarget^7: Path node not found!\n");
dprint(sprintf("^1func_guntarget::Move^7: Path node for %s not found!\n", m_strTargetName));
return;
}

View file

@ -44,11 +44,9 @@ void func_ladder :: func_ladder ( void )
solid = SOLID_BSP;
#ifdef GS_DEVELOPER
alpha = 0.5f;
effects = EF_FLAG2;
m_flRenderAmt = 0.5f;
#else
alpha = 0.0001f;
//effects = EF_NODRAW;
m_flRenderAmt = 0.0001f;
#endif
#else
Init();

View file

@ -128,11 +128,11 @@ void func_rotating :: Respawn ( void )
void func_rotating :: SetMovementDirection ( void )
{
if ( spawnflags & FR_ZAXIS ) {
m_vecMoveDir = '0 0 1';
m_vecMoveDir = [0,0,1];
} else if ( spawnflags & FR_XAXIS ) {
m_vecMoveDir = '1 0 0';
m_vecMoveDir = [1,0,0];
} else {
m_vecMoveDir = '0 1 0';
m_vecMoveDir = [0,1,0];
}
if ( spawnflags & FR_REVERSE ) {

View file

@ -44,7 +44,7 @@ void func_tracktrain::GoToTarget(void)
f = find(world, CBaseTrigger::m_strTargetName, m_strTarget);
if (!f) {
print("func_tracktrain::GoToTarget: Trigger-Target not found! Removing.\n");
dprint(sprintf("^1func_tracktrain::GoToTarget^7: Trigger-Target for %s not found! Removing.\n", m_strTargetName));
return;
}
@ -65,15 +65,8 @@ void func_tracktrain::NextPath(void)
{
CBaseTrigger current_target;
print(sprintf("func_tracktrain::NextPath: Talking to current target %s... ", m_strTarget));
current_target = (CBaseTrigger)find(world, CBaseTrigger::m_strTargetName, m_strTarget);
if (!current_target) {
print("^1FAILED.\n");
} else {
print("^2SUCCESS.\n");
}
m_strTarget = current_target.m_strTarget;
velocity = [0,0,0];
GoToTarget();
@ -90,12 +83,11 @@ void func_tracktrain::Find(void)
entity f = find(world, CBaseTrigger::m_strTargetName, m_strTarget);
if (!f) {
print(sprintf("func_tracktrain::Find: End-Target %s not found! Removing.\n",m_strTarget));
dprint(sprintf("^1func_tracktrain::GoToTarget^7: Trigger-Target %s for %s not found! Removing.\n", m_strTarget, m_strTargetName));
remove(this);
return;
}
print("func_tracktrain::Find: Successfully found first target.\n");
setorigin(this, f.origin);
}

View file

@ -49,7 +49,7 @@ void item_food :: Touch ( void )
void item_food :: Setup ( void )
{
solid = SOLID_TRIGGER;
setsize( this, '-16 -16 -16', '16 16 16' );
setsize( this, [-16,-16,-16], [16,16,16]);
touch = Touch;
if ( m_iIsCan ) {
@ -69,7 +69,7 @@ void item_food :: item_food ( void )
setmodel( this, "models/can.mdl" );
}
setsize( this, '0 0 0', '0 0 0' );
setsize( this, [0,0,0], [0,0,0]);
think = Setup;
nextthink = time + 1.0f;
}

View file

@ -61,10 +61,8 @@ void multi_manager :: Trigger (void)
entity eFind = find(world, CBaseTrigger::m_strTargetName, wow.m_strTarget);
#ifdef GS_DEVELOPER
print( sprintf( "%s::Trigger: %s (%s)\n",
dprint( sprintf( "^2%s::Trigger^7: %s (%s)\n",
this.classname, wow.m_strTarget, eFind.classname ) );
#endif
CBaseTrigger::UseTargets();
}

View file

@ -39,16 +39,16 @@ multisource::GetValue(void)
for (a = world; (a = find(a, CBaseTrigger::m_strTarget, m_strTargetName));) {
CBaseTrigger tTemp = (CBaseTrigger) a;
#ifdef GS_DEVELOPER
print("[^1MULTISOURCE^7] ");
print(tTemp.classname);
dprint("[^1MULTISOURCE^7] ");
dprint(tTemp.classname);
if (tTemp.GetValue() == FALSE) {
print(" is ^1OFF^7, name: ");
dprint(" is ^1OFF^7, name: ");
out = FALSE;
} else {
print(" is ^2ON^7, name: ");
dprint(" is ^2ON^7, name: ");
}
print(tTemp.m_strTargetName);
print("\n");
dprint(tTemp.m_strTargetName);
dprint("\n");
#else
/* exit out immediately as there's no point unless in-dev */
if (tTemp.GetValue() == FALSE) {

View file

@ -109,7 +109,7 @@ void scripted_sequence::Trigger(void)
m_iEnabled = FALSE;
}
print(sprintf("^2scripted_sequence::Trigger^7: with spawnflags %d\n", spawnflags));
dprint(sprintf("^2scripted_sequence::Trigger^7: with spawnflags %d\n", spawnflags));
f = (CBaseMonster)find(world, CBaseEntity::m_strTargetName, m_strMonster);
/* target doesn't exist/hasn't spawned */
@ -125,14 +125,14 @@ void scripted_sequence::Trigger(void)
/* cancel out. this trigger is broken. */
if (!f) {
print(sprintf("^1scripted_sequence::Trigger^7: Unknown target %s\n", m_strMonster));
dprint(sprintf("^1scripted_sequence::Trigger^7: Unknown target %s\n", m_strMonster));
return;
}
}
print(sprintf("\tName: %s\n", m_strTargetName));
print(sprintf("\tTarget: %s\n", m_strMonster));
print(sprintf("\tStarted: %f\n", time));
dprint(sprintf("\tName: %s\n", m_strTargetName));
dprint(sprintf("\tTarget: %s\n", m_strMonster));
dprint(sprintf("\tStarted: %f\n", time));
/* if we're told an anim, we better have it... or else. */
if (m_strActionAnim) {
@ -145,7 +145,7 @@ void scripted_sequence::Trigger(void)
/* entity to trigger after sequence ends */
if (m_strTarget) {
print(sprintf("\tTrigger when finished: %s\n", m_strTarget));
dprint(sprintf("\tTrigger when finished: %s\n", m_strTarget));
f.m_strRouteEnded = m_strTarget;
}
@ -156,29 +156,29 @@ void scripted_sequence::Trigger(void)
f.m_vecSequenceAngle = angles;
if (m_iMove == SS_NO) {
print("\tType: SS_NO\n");
dprint("\tType: SS_NO\n");
} else if (m_iMove == SS_WALK) {
f.NewRoute(origin);
f.m_flSequenceSpeed = 64;
print("\tType: SS_WALK\n");
dprint("\tType: SS_WALK\n");
return;
} else if (m_iMove == SS_RUN) {
f.NewRoute(origin);
f.m_flSequenceSpeed = 200;
print("\tType: SS_RUN\n");
dprint("\tType: SS_RUN\n");
return;
} else if (m_iMove == SS_INSTANTANEOUS) {
setorigin(f, this.origin);
print("\tType: SS_INSTANTANEOUS\n");
dprint("\tType: SS_INSTANTANEOUS\n");
} else if (m_iMove == SS_TURNTOFACE) {
print("\tType: SS_TURNTOFACE\n");
dprint("\tType: SS_TURNTOFACE\n");
}
/* all the non-moving targets will do this at least */
if (m_strActionAnim) {
duration = frameduration(f.modelindex, f.m_flSequenceEnd);
f.nextthink = time + duration;
print(sprintf(
dprint(sprintf(
"\tAnimation: %s Duration: %f seconds (modelindex %d, frame %d)\n",
m_strActionAnim,
duration,
@ -187,7 +187,7 @@ void scripted_sequence::Trigger(void)
));
} else {
f.nextthink = time;
print(sprintf(
dprint(sprintf(
"\t^1WARNING: %s skipping animation on script type %i\n",
f.m_strTargetName,
m_iMove
@ -196,7 +196,7 @@ void scripted_sequence::Trigger(void)
f.m_iSequenceState = SEQUENCESTATE_ENDING;
f.think = CBaseMonster::FreeState;
print(sprintf("\tEnding: %f\n", f.nextthink));
dprint(sprintf("\tEnding: %f\n", f.nextthink));
}
void scripted_sequence::Respawn(void)

View file

@ -42,10 +42,8 @@ void trigger_auto::think(void)
CBaseTrigger::UseTargets_Delay(m_flDelay);
if (spawnflags & 1) {
#ifdef GS_DEVELOPER
print( sprintf( "%s::think: Removed self after trigger\n",
this.classname ) );
#endif
dprint( sprintf( "%s::think: %s removed self after trigger\n",
m_strTargetName, this.classname ) );
remove(this);
}
}

View file

@ -26,7 +26,6 @@ class trigger_autosave:CBaseTrigger
float m_flDelay;
void() trigger_autosave;
virtual void() touch;
virtual void() Respawn;
};
void trigger_autosave::touch(void)
@ -43,10 +42,8 @@ void trigger_autosave::touch(void)
msg_entity = this;
multicast(origin, MULTICAST_ALL);
#ifdef GS_DEVELOPER
print( sprintf( "%s::touch: Called autosave\n",
this.classname) );
#endif
dprint( sprintf( "^2trigger_autosave::touch^7: %s called autosave\n",
other.netname) );
localcmd("save autosave");
Hide();
@ -57,18 +54,6 @@ void trigger_autosave::touch(void)
CBaseTrigger::UseTargets();
}
solid = SOLID_NOT;
#ifdef GS_DEVELOPER
alpha = 0.001f;
#endif
}
/* TODO: Make this redundant */
void trigger_autosave::Respawn(void)
{
solid = SOLID_TRIGGER;
#ifdef GS_DEVELOPER
alpha = 0.5f;
#endif
}
void trigger_autosave::trigger_autosave(void)

View file

@ -43,10 +43,8 @@ void trigger_camera::Trigger(void)
Client_TriggerCamera(eActivator, origin, angles, m_flWait);
#ifdef GS_DEVELOPER
print( sprintf( "%s::Trigger: Camera at %v, %v, for %f sec/s requested\n",
dprint( sprintf( "^2trigger_camera::Trigger^7: Camera at %v, %v, for %f sec/s requested\n",
this.classname, origin, angles, m_flWait ) );
#endif
}
void trigger_camera::trigger_camera(void)

View file

@ -33,10 +33,9 @@ void trigger_cdaudio :: Trigger ( void )
if (!(other.flags & FL_CLIENT)) {
return;
}
#ifdef GS_DEVELOPER
print( sprintf( "%s::Trigger: CD Track %i requested\n",
this.classname, m_iCDTrack ) );
#endif
dprint( sprintf( "^2trigger_cdaudio::Trigger^7: CD Track %i requested\n",
m_iCDTrack ) );
WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET);
WriteByte(MSG_MULTICAST, EV_MUSICTRACK);

View file

@ -80,17 +80,15 @@ void trigger_changelevel::Change(void)
info_landmark lm = (info_landmark)e;
/* found it */
if (lm.m_strTargetName == m_strLandmark) {
print(sprintf("^2trigger_changelevel::Change^7: Found landmark for %s\n", m_strLandmark));
dprint(sprintf("^2trigger_changelevel::Change^7: Found landmark for %s\n", m_strLandmark));
landmark = lm;
g_landmarkpos = m_activator.origin - landmark.origin;
}
}
changelevel(m_strMap, m_strLandmark);
} else {
#ifdef GS_DEVELOPER
print( sprintf( "%s::Change: Change to `%s`\n",
this.classname, m_strMap ) );
#endif
dprint( sprintf( "^2trigger_changelevel::Change^7: Change to `%s`\n",
m_strMap ) );
changelevel(m_strMap);
}
}
@ -105,17 +103,13 @@ void trigger_changelevel::Trigger(void)
m_activator = eActivator;
if (m_flChangeDelay) {
#ifdef GS_DEVELOPER
print( sprintf( "%s::Trigger: Delayed change to `%s` in %d sec/s\n",
this.classname, m_strMap, m_flChangeDelay ) );
#endif
dprint( sprintf( "^2trigger_changelevel::Trigger^7: Delayed change to `%s` in %d sec/s\n",
m_strMap, m_flChangeDelay ) );
think = Change;
nextthink = time + m_flChangeDelay;
} else {
#ifdef GS_DEVELOPER
print( sprintf( "%s::Trigger: Change to `%s`\n",
this.classname, m_strMap ) );
#endif
dprint( sprintf( "^2trigger_changelevel::Trigger^7: Change to `%s` requested\n",
m_strMap ) );
Change();
}
}
@ -157,7 +151,7 @@ vector Landmark_GetSpot(void)
info_landmark lm = (info_landmark)e;
/* found it */
if (lm.m_strTargetName == startspot) {
print(sprintf("^2Landmark_GetSpot^7: Found landmark for %s\n", startspot));
dprint(sprintf("^2Landmark_GetSpot^7: Found landmark for %s\n", startspot));
landmark = lm;
return landmark.origin + g_landmarkpos;
}

View file

@ -53,17 +53,13 @@ class trigger_hurt:CBaseTrigger
void trigger_hurt::Trigger(void)
{
if (solid != SOLID_NOT) {
#ifdef GS_DEVELOPER
print( sprintf( "%s::Trigger: Deactivated\n",
this.classname ) );
#endif
dprint( sprintf( "trigger_hurt::Trigger: %s deactivated\n",
m_strTargetName ) );
solid = SOLID_NOT;
touch = __NULL__;
} else {
#ifdef GS_DEVELOPER
print( sprintf( "%s::Trigger: Activated\n",
this.classname ) );
#endif
dprint( sprintf( "trigger_hurt::Trigger: %s activated\n",
m_strTargetName ) );
solid = SOLID_TRIGGER;
touch = Touch;
}
@ -103,10 +99,8 @@ void trigger_hurt::Touch(void)
Damage_Apply(other, this, m_iDamage, 0, DMG_GENERIC);
#ifdef GS_DEVELOPER
print( sprintf( "%s::Touch: Hurting '%s' with %i\n",
this.classname, other.netname, m_iDamage ) );
#endif
dprint( sprintf( "^2trigger_hurt::Touch^7: Hurting '%s' with %i\n",
other.netname, m_iDamage ) );
// Shut it down if used once
if (spawnflags & SF_HURT_ONCE) {
@ -118,10 +112,6 @@ void trigger_hurt::Touch(void)
void trigger_hurt::Respawn(void)
{
#ifdef GS_DEVELOPER
alpha = 0.5f;
#endif
/* reset */
m_flNextDmg = 0.5f;
m_flNextTrigger = 0.0f;

View file

@ -45,17 +45,16 @@ class trigger_push:CBaseTrigger
void trigger_push::SetMovementDirection(void)
{
if (angles == '0 -1 0') {
m_vecMoveDir = '0 0 1';
} else if (angles == '0 -2 0') {
m_vecMoveDir = '0 0 -1';
if (angles == [0,-1,0]) {
m_vecMoveDir = [0,0,1];
} else if (angles == [0,-2,0]) {
m_vecMoveDir = [0,0,-1];
} else {
makevectors(angles);
m_vecMoveDir = v_forward;
}
angles = '0 0 0';
//m_vecMoveDir *= 1;
angles = [0,0,0];
}
void trigger_push::Trigger(void)
@ -100,7 +99,7 @@ void trigger_push::touch(void)
void trigger_push::Respawn(void)
{
if (angles == '0 0 0') {
if (angles == [0,0,0]) {
angles[1] = 360;
}
SetMovementDirection();

View file

@ -27,7 +27,6 @@ class trigger_teleport:CBaseTrigger
void() trigger_teleport;
virtual void() touch;
virtual void() Respawn;
};
void trigger_teleport::touch(void)
@ -39,29 +38,15 @@ void trigger_teleport::touch(void)
if (eTarget) {
vector endpos = eTarget.origin + [0,0,16];
setorigin(other, endpos);
#ifdef GS_DEVELOPER
print( sprintf( "%s::touch: Teleported '%s' to `%v`\n",
this.classname, other.netname, endpos ) );
#endif
dprint( sprintf( "^2trigger_teleport::touch^7: Teleported '%s' to `%v`\n",
other.netname, endpos ) );
} else {
#ifdef GS_DEVELOPER
print( sprintf( "%s::touch: Failed to teleport '%s'\n",
this.classname, other.netname ) );
#endif
print( sprintf( "^2trigger_teleport::touch^7: Failed to teleport '%s'\n",
other.netname ) );
}
}
}
/* TODO: Make this redundant */
void trigger_teleport::Respawn(void)
{
solid = SOLID_TRIGGER;
#ifdef GS_DEVELOPER
alpha = 0.5f;
#endif
}
void trigger_teleport::trigger_teleport(void)
{
CBaseTrigger::CBaseTrigger();