public void SetToVar(IdleVar Var)
    {
        switch (Var.ToInitialVar.To)
        {
        case SetToPreVar.MoneyMultiplier:
            Var.Value = Main.MoneyMultiplier;
            break;

        case SetToPreVar.DamageDone:
            Var.Value = Main.Damage;
            break;

        case SetToPreVar.DamageMultiplier:
            Var.Value = Main.MoneyMultiplier;
            break;

        case SetToPreVar.GemChances:
            Var.Value = GemController.GemChances;
            break;

        case SetToPreVar.MoneyPerSec:
            Var.Value = Main.IdleMoneyPerSec;
            break;

        case SetToPreVar.AutoTap:
            Var.Value = (decimal)Main.TapPerSec;
            break;
        }
    }
 public void AdvRecieveMessages(IdleVar Var, DoOn On)
 {
     for (int i = 0; i < Var.Effectors.Length; i++)
     {
         if (Var.Effectors[i].On == On && Var.Effectors[i].On != DoOn.Message && Var.Effectors[i].On != DoOn.DeltaTime)
         {
             AdvEffect(Var, Var.Effectors[i]);
         }
         else if (Var.Effectors[i].On == DoOn.DeltaTime)
         {
             AdvEffect(Var, Var.Effectors[i], true);
         }
         else if (Var.Effectors[i].On == DoOn.Message)
         {
             for (int k = 0; k < Messages.Count; k++)
             {
                 if (Messages[k] == Var.Effectors[i].MessageName)
                 {
                     AdvEffect(Var, Var.Effectors[i]);
                     Messages.RemoveAt(k);
                 }
             }
         }
     }
 }
    public void AdvEffect(IdleVar Var, Effect eff, bool DeltaTime = false)
    {
        decimal Value = 0;
        bool    Done  = false;

        if (eff.VarInstead)
        {
            for (int i = 0; i < eff.SetToOf.Variables.Length; i++)
            {
                if (eff.SetToOf.Variables[i].Name == eff.VariableName)
                {
                    Value = Variables[i].Value;
                    Done  = true;
                }
            }
        }
        else
        {
            Value = System.Convert.ToDecimal(eff.By);
        }
        if (eff.On == DoOn.Inactive)
        {
            if (!PlayerPrefs.HasKey("LastPlayTime"))
            {
                return;
            }
            System.TimeSpan LastTimePlayed = System.DateTime.Now - (System.Convert.ToDateTime(PlayerPrefs.GetString("LastPlayTime")));
            Value *= (decimal)LastTimePlayed.TotalSeconds;
        }
        if (!Done && eff.VarInstead)
        {
            Debug.LogError("WARNING: No variable of name '" + eff.VariableName + "' was found in the instance." +
                           " Please make sure everything is properly set. Value will be used as the By Value now" +
                           " This occoured in instance name '" + gameObject.name + "'");
            Value = System.Convert.ToDecimal(eff.By);
        }

        if (DeltaTime)
        {
            Value *= (decimal)Time.deltaTime;
        }

        switch (eff.Type)
        {
        case CalcType.Add:
            Var.Value += Value;
            break;

        case CalcType.Divide:
            Var.Value /= Value;
            break;

        case CalcType.Multiply:
            Var.Value *= Value;
            break;

        case CalcType.Subtract:
            Var.Value -= Value;
            break;

        case CalcType.SetTo:
            Var.Value = Value;
            break;
        }
                #if UNITY_EDITOR
        Var.InitialValue = Var.Value.ToString();
                #endif
    }