public abstract float startDuration(SportsObject source, SportsObject target, GameRuleDurationEffect action);
    public SportsObject target; //this is the object that the action happened to

    #endregion Fields

    #region Constructors

    public GameRuleActionWaitTimer(GameRuleEventHappenedCondition grehc, SportsObject sos, SportsObject sot,
		GameRuleDurationEffect grde)
    {
        condition = grehc;
        source = sos;
        target = sot;
        effect = grde;
    }
 public override float startDuration(SportsObject source, SportsObject target, GameRuleDurationEffect action)
 {
     return duration;
 }
 public override float startDuration(SportsObject source, SportsObject target, GameRuleDurationEffect action)
 {
     GameRules.instance.waitTimers.Add(new GameRuleActionWaitTimer(untilCondition, source, target, action));
     return 1000000000.0f;
 }
    public SportsObject trigger; //this will cause the condition that ends the timer

    #endregion Fields

    #region Constructors

    public GameRuleActionWaitTimer(GameRuleEventHappenedCondition c, SportsObject tr, SportsObject ta,
		GameRuleDurationEffect e)
    {
        condition = c;
        trigger = tr;
        target = ta;
        effect = e;
    }