Example #1
0
    public int EnhanceDuration(DCPlayer player, int duration)
    {
        (string _, int strength)     = player.GetStat(Stat.STR);
        (string _, int dexterity)    = player.GetStat(Stat.DEX);
        (string _, int intelligence) = player.GetStat(Stat.INT);
        (string _, int faith)        = player.GetStat(Stat.FTH);
        (string _, int luck)         = player.GetStat(Stat.LCK);

        return(Mathf.RoundToInt(((float)STR * (float)DEX * (float)INT * (float)FTH * (float)LCK
                                 * strength * dexterity * intelligence * faith * luck) / Mathf.Pow(BattleManager.maxSkillLevel * (float)Scaling.S, 2) *
                                duration));
    }
 public void SaveGame()
 {
     try
     {
         GameManager.INSTANCE.profile.SaveStoryGame(classID, currentChapterID, currentSituationID, pathPlayerTook,
                                                    player.GetAttributes(), player.GetUnlockedAttacks(), player.GetLevel(), player.GetSkillPoints(),
                                                    player.GetStat(Stat.STR).Item2, player.GetStat(Stat.DEX).Item2, player.GetStat(Stat.INT).Item2,
                                                    player.GetStat(Stat.FTH).Item2, player.GetStat(Stat.LCK).Item2, player.GetUnlockedPerks(), startSet
                                                    );
         GameManager.INSTANCE.SaveProfile(GameManager.INSTANCE.profile);
     }
     catch (NullReferenceException) { };
 }
    GetAttackInfo(DCPlayer player, bool preview = false)
    {
        (string _, int STR) = player.GetStat(Stat.STR);
        (string _, int DEX) = player.GetStat(Stat.DEX);
        (string _, int INT) = player.GetStat(Stat.INT);
        (string _, int FTH) = player.GetStat(Stat.FTH);
        (string _, int LCK) = player.GetStat(Stat.LCK);

        (Scaling[] scalings, float damageMultiplier, float critMultiplier,
         float statusProbability, List <Status> statuses) = Perk.ApplyAttackPerks(player.GetActivePerks(), this);
        Scaling newSTR = scalings[0];
        Scaling newDEX = scalings[1];
        Scaling newINT = scalings[2];
        Scaling newFTH = scalings[3];
        Scaling newLCK = scalings[4];

        float luck    = (float)newLCK * LCK / BattleManager.maxSkillLevel;
        float scaling = (preview ? 1f : Random.Range(0.9f, 1.1f)) + ((float)newSTR * STR + (float)newDEX * DEX +
                                                                     (float)newINT * INT + (float)newFTH * FTH + (float)newLCK * LCK) /
                        (BattleManager.maxSkillLevel * (float)Scaling.C * 4);

        if (status != Status.None)
        {
            statusProbability += luck;
            for (int i = 0; i < timesStatusApplied; i++)
            {
                if (statusProbability > Random.Range(0f, 1f) || preview)
                {
                    statuses.Add(status);
                }
            }
        }
        scaling *= damageMultiplier;
        scaling *= luck > Random.Range(0, 1f) && !preview ? critMultiplier : 1f;
        return(healthDamage * scaling, staminaDamage *scaling, manaDamage *scaling, statuses, statusProbability, luck);
    }
 private void Update()
 {
     if (player == null)
     {
         player = storyManager.GetPlayerCharacter();
     }
     if (player == null)
     {
         return;
     }
     else
     {
         (string name, int value) = player.GetStat(stat);
         text.text = $"{name}\n{value}";
     }
 }