////////////////////////////////////////////////////////////////////////////// // // File : aura_tag.skrit // Author(s): Witness (Lisa Hui) // Purpose : basic aura visuals management for a single target // // Versions : v1.1 [August 8, 2004] // - added enchantment handling, can enchant from the // // v1.0 [August 1, 2004] // - first release // //---------------------------------------------------------------------------- // Version: 1.1 Date: August 8, 2004 //---------------------------------------------------------------------------- ////////////////////////////////////////////////////////////////////////////// property string sfx_target$ = "" doc = "target sfx"; property string sfx_target_params$ = "" doc = "target sfx parameters"; property string sfx_replay$ = "" doc = "replay sfx"; property string sfx_replay_params$ = "" doc = "replay sfx parameters"; property float sfx_replay_interval$ = 0.0 doc = "delay between replays"; property int enchant_target$ = 0 doc = ""; owner = GoSkritComponent; ////////////////////////////////////////////////////////////////////////////// // GLOBALS ////////////////////////////////////////////////////////////////////////////// Goid manager$, target$, source$; ////////////////////////////////////////////////////////////////////////////// // STATES ////////////////////////////////////////////////////////////////////////////// startup State Init$ { event OnGoHandleMessage$( eWorldEvent e$, WorldMessage msg$ ) { if ( e$ == WE_REQ_ACTIVATE ) { manager$ = msg$.SendFrom; if ( !manager$.IsValid ) { SetState Exiting$; return; } target$ = MakeGoid( msg$.Data1 ); if ( !target$.IsValid ) { SetState Exiting$; return; } SetState Tracking$; } } } State Tracking$ { SFxSID sfx_id$; int source_enchantments$; string source_enchantments_name$; ToggleEnchantments$() { //report.screenf("tracker toggling %d ENCHANTMENTS",enchant_target$); if ( enchant_target$ > 0 ) { int index$ = enchant_target$; while ( index$ > 0 ) { manager$.Go.Magic.SApplyEnchantmentsByName( target$, target$, MakeStringF( "%s_%d", manager$.Go.Magic.StateName, index$ ) ); index$ -= 1; } } } event OnEnterState$ { ToggleEnchantments$(); if ( sfx_target$ != "" ) { sfx_id$ = SiegeFx.SRunMpScript( sfx_target$, target$, target$, sfx_target_params$, owner.Goid, WE_REQ_ACTIVATE ); } GoDb.StartWatching( owner.Goid, target$ ); if ( sfx_replay_interval$ > 0 ) { if ( sfx_replay$ != "" ) { this.CreateTimer( 1, sfx_replay_interval$ ); this.SetTimerRepeatCount( 1, -1 ); } } } trigger OnTimer$( 1 ) { if ( target$.IsValid ) { SiegeFx.SRunScript( sfx_replay$, target$, target$, sfx_replay_params$, owner.Goid, WE_REQ_CAST ); return; } SetState Exiting$; } event OnGoHandleMessage$( eWorldEvent e$, WorldMessage msg$ ) { if ( e$ == WE_REQ_DEACTIVATE ) { SetState Exiting$; } else if ( e$ == WE_TRIGGER_ACTIVATE ) { if ( manager$ == msg$.SendFrom ) { //if ( msg$.Data1 > 0 ) { // source$ = MakeGoid( msg$.Data1 ); // if ( source$.IsValid ) { ToggleEnchantments$(); this.CreateTimer( 2, 0.1 ); // } //} } } } trigger OnTimer$( 2 ) { ToggleEnchantments$(); } event OnExitState$ { if ( target$.IsValid ) { if ( sfx_target$ != "" ) { SiegeFx.SStopScript( sfx_id$ ); } GoDb.StopWatching( owner.Goid, target$ ); ToggleEnchantments$(); if ( sfx_replay_interval$ > 0 && sfx_replay$ != "" ) { this.DestroyTimer( 1 ); } } } transition -> Exiting$ : OnGoHandleMessage( WE_REQ_DEACTIVATE ); transition -> Exiting$ : OnGoHandleCCMessage( WE_KILLED ) = { if ( source$.IsValid ) { PostWorldMessage( WE_REQ_DEACTIVATE, owner.Goid, source$, MakeInt( target$ ), 0 ); } } } State Exiting$ { event OnEnterState$ { PostWorldMessage( WE_REQ_DELETE, owner.Goid, owner.Goid, 0 ); } }