Temporal triggers #63


  • Accepted
Open
  • _ForgeUser3346498 created this issue Oct 6, 2009

    It would be nice to be able to use time-based triggers:
    Event: Every X seconds logged in.
    Event: I have been idle for X seconds.
    Event: Despite all the stuff I've been doing, and SpeakinSpell being turned on all this time, absolutely nothing has actually triggered it because I have all the proc chances set way too low!

  • _ForgeUser3346498 added the tags New Enhancment Oct 6, 2009
  • rismisner posted a comment Oct 6, 2009

    Event: Despite all the stuff I've been doing, and SpeakinSpell being turned on all this time, absolutely nothing has actually triggered it because I have all the proc chances set way too low!

    Brainstorming a short label for this one... Event: SpeakinSpell has been quiet for X minutes

  • rismisner posted a comment Oct 6, 2009

    This inspired me to spin off ticket 65 - <time> and <date> substitutions

  • rismisner removed a tag New Oct 6, 2009
  • rismisner added a tag Accepted Oct 6, 2009
  • rismisner posted a comment Oct 6, 2009

    These events should support substitutions for <seconds> and <minutes>, but it's context-sensitive to this idea, so it doesn't merit it's own ticket. Event-specific substitutions are supported, these events only need to add data to the DetectedEventStub:

    local DetectedEventStub = { -- System Event: Once per minute
        name = "Once per minute",
        type = "EVENT",
        minutes = some_variable_calculated_above,
    }
    SpeakinSpell:OnSpeechEvent( DetectedEventStub )
    
  • rismisner posted a comment Oct 7, 2009

    I see 2 basic approaches for defining the interval, X.

    1) Choose several intervals that make sense Event: Every 1 minute logged in Event: Every 5 minutes logged in Event: Every 15 minutes logged in Event: Every 30 minutes logged in Event: Every 1 hour logged in

    Event: Every 1 minute after exiting combat Event: Every 5 minutes after exiting combat Event: Every 15 minutes after exiting combat Event: Every 30 minutes after exiting combat Event: Every 1 hour after exiting combat

    Event: Every 1 minute after entering combat Event: Every 5 minutes after entering combat Event: Every 10 minutes after entering combat

    Event: Every 1 minute after the last SpeakinSpell speech Event: Every 5 minutes after the last SpeakinSpell speech Event: Every 15 minutes after the last SpeakinSpell speech Event: Every 30 minutes after the last SpeakinSpell speech Event: Every 1 hour after the last SpeakinSpell speech

    2) Create a GUI with 2 drop-down lists Timed Event: Event [select] minutes after [select]

    [Create Button] create the timed event data in your settings, and I only create the timer thread if an event is defined, and I can probably set the timeout in the thread so that it only runs as needed.

    Should use option 2 for performance reasons.

    Option 1 is more expedient for purposes of an experimental or initial release of this feature prior to creating a GUI, but would result in a lot of throw-away code which would have to be recycled/revamped for use under option 2.

  • rismisner posted a comment Aug 6, 2010

    Duerma added some new ideas along these lines as ticket 121: http://www.wowace.com/addons/speakinspell/tickets/121-random-timer-events/

    quoting the entire post (with some manual formatting to fix copy-paste vs. wikicreole markup)

    What is the enhancement in mind? How should it look and feel?

    Allow users to create events that do not fire based on an in-game trigger, but rather fire regularly after defined periods of time.

    Please provide any additional information below.

    The UI would be like this -

    Timer Event 1

    • Average interval length in minutes: [ 10 ]
    • Variation in minutes: [ 3 ]
    • Then the standard UI with chance to fire, phrases, etc.

    The example above would fire every 7-13 minutes. This feature would be most useful to roleplayers who had a nervous tic, for instance. With a more limited appeal, this feature should be implemented as a module, to be loaded on demand.

  • rismisner posted a comment Aug 6, 2010

    Thinking out loud...

    My biggest concern is still the event key, and how to find the EventTableEntry for this in the EventTable.

    The existence of this event will require spinning off a thread or timer - TBH I don't know how that works in lua. When the timer fires, we need to create a DetectedEventStub. It can use the name "Timer Event N" which can also be the event key.

    Then i guess timer options can vary and be stored as optional data in the EventTableEntry in order to reset the timer.

    Building on my code fragment below...

    function OnTimer( ... ) -- when the timer fires for one of these events
        local DetectedEventStub = { -- timer event
            name = "Timer Event N", -- identified by the parameters
            type = "TIMER", --new event type
            minutes = some_variable_calculated_above,
        }
        SpeakinSpell:OnSpeechEvent( DetectedEventStub )
    end
    
  • GaronneBC posted a comment Nov 29, 2010

    I'm not sure if this is a good idea. Especially "every X seconds logged in" gives me headaches. It just too much sounds like trade- and goldspam.

    Additionally... I'm not sure what these triggers should be good for.

    If you could give me any exaple what these triggers might do positive I'll probably reconsider...

    Currently I'll have to give this Ticket a -3 voting...

  • rismisner posted a comment Nov 29, 2010

    I can think of 2 useful applications:

    • Roleplaying a narcoleptic who randomly falls to /sleep every 10-30 minutes.
    • A reminder to yourself in self-only chat that says "You've been logged in for <X> hours" every hour... or at a self-imposed cap to remind yourself "You've been logged in for 8 hours straight, ZOMG get some sleep"

    and I think a few other possibilities are touched on below.

  • _ForgeUser3346498 posted a comment Dec 14, 2010

    I'll define one of the ways I was using a work-around to get this effect, and why I was using it: I had an event set up to fire when I first logged in, 100% chance, that triggered a macro "/in 30 /ss macro voices", relying on Chronos for the time-delay command.

    That one also had a 100% chance to fire, and it also called /ss macros, which were set lower, and were all on the self-speech mode "Mysterious Voice whispers". It also called itself again, "/in 30 /ss macro voices", ensuring that the event would run again.

    Over all, this generated the effect that the character this was running on had voices in his head, cropping up at semi-random intervals. In this case, it would be an "every X seconds" trigger, with the intent being purely personal entertainment and an attempt to help myself stay in-character while playing a truly insane warlock.

  • rismisner removed their assignment Jan 16, 2013
  • rismisner assigned issue to _ForgeUser228323 Jan 16, 2013
  • rismisner posted a comment Jan 16, 2013

    I'm re-assigning all my tickets to Duerma

  • rismisner posted a comment May 7, 2015

    Unassigning tickets that are not actively being worked on

  • rismisner unassigned issue from _ForgeUser228323 May 7, 2015

To post a comment, please login or register a new account.