static void LevelUp() { var player = GameState.Instance.PlayerRpgState; player.Experience = RpgValues.XPToNext(player.Level); player.CheckLevelUp(); }
public void CheckLevelUp() { if (Experience >= RpgValues.XPToNext(Level)) { QdmsMessageBus.Instance.PushBroadcast(new QdmsFlagMessage("RpgLevelUp")); QdmsMessageBus.Instance.PushBroadcast(new HUDPushMessage("<l:IGUI_MESSAGE:LevelUp>")); } }
private void RecalculateStats() { //copy base stats DerivedStats = new StatsSet(BaseStats); //apply conditions foreach (Condition c in Conditions) { c.Apply(BaseStats, DerivedStats); } //apply equipment bonuses (armor basically) if (Equipped.ContainsKey(EquipSlot.Body)) { ArmorItemModel aim = Equipped[EquipSlot.Body].ItemModel as ArmorItemModel; if (aim != null) { foreach (var key in BaseStats.DamageResistance.Keys) { if (aim.DamageResistance.ContainsKey((DamageType)key)) { DerivedStats.DamageResistance[key] = BaseStats.DamageResistance[key] + aim.DamageResistance[(DamageType)key]; } if (aim.DamageThreshold.ContainsKey((DamageType)key)) { DerivedStats.DamageThreshold[key] = BaseStats.DamageThreshold[key] + aim.DamageThreshold[(DamageType)key]; } } } else { Debug.LogWarning("Player has non-armor item in armor slot!"); } } //apply derived skills if (GameParams.UseDerivedSkills) { RpgValues.SkillsFromStats(BaseStats, DerivedStats); } //recalculate max health and energy DerivedStats.MaxHealth = RpgValues.MaxHealth(this); DerivedStats.MaxEnergy = RpgValues.MaxEnergy(this); //apply endurance from difficulty float endurance = ConfigState.Instance.GetGameplayConfig().Difficulty.PlayerEndurance; DerivedStats.MaxHealth *= endurance; DerivedStats.MaxEnergy *= endurance; }