// Creates formatting tokens for skill popups TextFile.Token[] CreateSkillTokens(DFCareer.Skills skill) { List <TextFile.Token> tokens = new List <TextFile.Token>(); TextFile.Token skillNameToken = new TextFile.Token(); skillNameToken.text = DaggerfallUnity.Instance.TextProvider.GetSkillName(skill); skillNameToken.formatting = TextFile.Formatting.Text; TextFile.Token skillValueToken = new TextFile.Token(); skillValueToken.text = string.Format("{0}%", playerEntity.Skills.GetSkillValue(skill)); skillValueToken.formatting = TextFile.Formatting.Text; DFCareer.Stats primaryStat = DaggerfallSkills.GetPrimaryStat(skill); TextFile.Token skillPrimaryStatToken = new TextFile.Token(); skillPrimaryStatToken.text = DaggerfallUnity.Instance.TextProvider.GetAbbreviatedStatName(primaryStat); skillPrimaryStatToken.formatting = TextFile.Formatting.Text; TextFile.Token spacesToken = new TextFile.Token(); spacesToken.formatting = TextFile.Formatting.Text; spacesToken.text = " "; TextFile.Token tabToken = new TextFile.Token(); tabToken.formatting = TextFile.Formatting.PositionPrefix; // Add tokens in order tokens.Add(skillNameToken); tokens.Add(tabToken); tokens.Add(tabToken); tokens.Add(skillValueToken); tokens.Add(spacesToken); tokens.Add(skillPrimaryStatToken); return(tokens.ToArray()); }
// Adds button for attribute popup text // NOTE: This has only partial functionality until %vars and all formatting tokens are supported void AddAttributePopupButton(DFCareer.Stats stat, Rect rect) { Button button = DaggerfallUI.AddButton(rect, NativePanel); button.Tag = DaggerfallUnity.TextProvider.GetStatDescriptionTextID(stat); button.OnMouseClick += StatButton_OnMouseClick; }
public void Blessing(PlayerEntity playerEntity, int donationAmount) { int boost = FormulaHelper.CalculateTempleBlessing(donationAmount, GetReputation(playerEntity)); if (boost > 0) { DFCareer.Stats stat = BlessingStat(); if (stat != NoStat) { // Apply stat blessing // TODO - wait for stat effects with timeouts to be implemented and use them Debug.Log("Blessing: boost stat " + stat); } else { if (deity == Divines.Stendarr) { Debug.Log("Blessing: boost legal rep"); } else if (deity == Divines.Zenithar) { Debug.Log("Blessing: boost mercantile skill"); } } DaggerfallUI.MessageBox(templeData[deity].blessingMsgId); } }
/// <summary> /// Gets permanent stat value by enum, does not include effect mods. /// </summary> /// <param name="stat">Stat to get.</param> /// <returns>Stat value.</returns> public int GetPermanentStatValue(DFCareer.Stats stat) { switch (stat) { case DFCareer.Stats.Strength: return(Strength); case DFCareer.Stats.Intelligence: return(Intelligence); case DFCareer.Stats.Willpower: return(Willpower); case DFCareer.Stats.Agility: return(Agility); case DFCareer.Stats.Endurance: return(Endurance); case DFCareer.Stats.Personality: return(Personality); case DFCareer.Stats.Speed: return(Speed); case DFCareer.Stats.Luck: return(Luck); default: return(0); } }
public string GetStatName(DFCareer.Stats stat) { switch (stat) { case DFCareer.Stats.Strength: return(TextManager.Instance.GetLocalizedText("strength")); case DFCareer.Stats.Intelligence: return(TextManager.Instance.GetLocalizedText("intelligence")); case DFCareer.Stats.Willpower: return(TextManager.Instance.GetLocalizedText("willpower")); case DFCareer.Stats.Agility: return(TextManager.Instance.GetLocalizedText("agility")); case DFCareer.Stats.Endurance: return(TextManager.Instance.GetLocalizedText("endurance")); case DFCareer.Stats.Personality: return(TextManager.Instance.GetLocalizedText("personality")); case DFCareer.Stats.Speed: return(TextManager.Instance.GetLocalizedText("speed")); case DFCareer.Stats.Luck: return(TextManager.Instance.GetLocalizedText("luck")); default: return(string.Empty); } }
public int GetStatDescriptionTextID(DFCareer.Stats stat) { switch (stat) { case DFCareer.Stats.Strength: return(0); case DFCareer.Stats.Intelligence: return(1); case DFCareer.Stats.Willpower: return(2); case DFCareer.Stats.Agility: return(3); case DFCareer.Stats.Endurance: return(4); case DFCareer.Stats.Personality: return(5); case DFCareer.Stats.Speed: return(6); case DFCareer.Stats.Luck: return(7); default: return(-1); } }
public string GetAbbreviatedStatName(DFCareer.Stats stat) { switch (stat) { case DFCareer.Stats.Strength: return("STR"); case DFCareer.Stats.Intelligence: return("INT"); case DFCareer.Stats.Willpower: return("WIL"); case DFCareer.Stats.Agility: return("AGI"); case DFCareer.Stats.Endurance: return("END"); case DFCareer.Stats.Personality: return("PER"); case DFCareer.Stats.Speed: return("SPD"); case DFCareer.Stats.Luck: return("LUC"); default: return(string.Empty); } }
public string GetStatName(DFCareer.Stats stat) { switch (stat) { case DFCareer.Stats.Strength: return("Strength"); case DFCareer.Stats.Intelligence: return("Intelligence"); case DFCareer.Stats.Willpower: return("Willpower"); case DFCareer.Stats.Agility: return("Agility"); case DFCareer.Stats.Endurance: return("Endurance"); case DFCareer.Stats.Personality: return("Personality"); case DFCareer.Stats.Speed: return("Speed"); case DFCareer.Stats.Luck: return("Luck"); default: return(string.Empty); } }
protected void SetStatMod(DFCareer.Stats stat, int value) { if (stat == DFCareer.Stats.None) { return; } statMods[(int)stat] = value; }
/// <summary> /// Gets the attribute modifier of this effect. /// </summary> /// <param name="stat">Attribute to query.</param> /// <returns>Current attribute modifier.</returns> public int GetAttributeMod(DFCareer.Stats stat) { if (stat == DFCareer.Stats.None) { return(0); } return(statMods[(int)stat]); }
protected void ChangeStatMod(DFCareer.Stats stat, int amount) { if (stat == DFCareer.Stats.None) { return; } statMods[(int)stat] += amount; }
/// <summary> /// Gets live stat value by enum, including effect mods. /// </summary> /// <param name="stat">Stat to get.</param> /// <returns>Stat value.</returns> public int GetLiveStatValue(DFCareer.Stats stat) { int mod = mods[(int)stat]; int value = GetPermanentStatValue(stat) + mod; // TODO: Any other clamping or processing return((short)value); }
// Creates formatting tokens for skill popups TextFile.Token[] CreateSkillTokens(DFCareer.Skills skill, bool twoColumn = false, int startPosition = 0) { bool highlight = playerEntity.GetSkillRecentlyIncreased(skill); List <TextFile.Token> tokens = new List <TextFile.Token>(); TextFile.Formatting formatting = highlight ? TextFile.Formatting.TextHighlight : TextFile.Formatting.Text; TextFile.Token skillNameToken = new TextFile.Token(); skillNameToken.formatting = formatting; skillNameToken.text = DaggerfallUnity.Instance.TextProvider.GetSkillName(skill); TextFile.Token skillValueToken = new TextFile.Token(); skillValueToken.formatting = formatting; skillValueToken.text = string.Format("{0}%", playerEntity.Skills.GetLiveSkillValue(skill)); DFCareer.Stats primaryStat = DaggerfallSkills.GetPrimaryStat(skill); TextFile.Token skillPrimaryStatToken = new TextFile.Token(); skillPrimaryStatToken.formatting = formatting; skillPrimaryStatToken.text = DaggerfallUnity.Instance.TextProvider.GetAbbreviatedStatName(primaryStat); TextFile.Token positioningToken = new TextFile.Token(); positioningToken.formatting = TextFile.Formatting.PositionPrefix; TextFile.Token tabToken = new TextFile.Token(); tabToken.formatting = TextFile.Formatting.PositionPrefix; // Add tokens in order if (!twoColumn) { tokens.Add(skillNameToken); tokens.Add(tabToken); tokens.Add(tabToken); tokens.Add(tabToken); tokens.Add(skillValueToken); tokens.Add(tabToken); tokens.Add(skillPrimaryStatToken); } else // miscellaneous skills { if (startPosition != 0) // if this is the second column { positioningToken.x = startPosition; tokens.Add(positioningToken); } tokens.Add(skillNameToken); positioningToken.x = startPosition + 85; tokens.Add(positioningToken); tokens.Add(skillValueToken); positioningToken.x = startPosition + 112; tokens.Add(positioningToken); tokens.Add(skillPrimaryStatToken); } return(tokens.ToArray()); }
/// <summary> /// Gets live stat value by enum, including effect mods. /// </summary> /// <param name="stat">Stat to get.</param> /// <returns>Stat value.</returns> public int GetLiveStatValue(DFCareer.Stats stat) { int mod = mods[(int)stat]; int value = GetPermanentStatValue(stat) + mod; // Clamp live stat to 1-100 value = Mathf.Clamp(value, 1, 100); return((short)value); }
/// <summary> /// Gets live stat value by enum, including effect mods. /// </summary> /// <param name="stat">Stat to get.</param> /// <returns>Stat value.</returns> public int GetLiveStatValue(DFCareer.Stats stat) { int mod = mods[(int)stat]; int value = GetPermanentStatValue(stat) + mod; // Clamp live stat to 1-MaxStatValue value = Mathf.Clamp(value, 1, FormulaHelper.MaxStatValue()); return((short)value); }
/// <summary> /// Gets live stat value by enum, including effect mods. /// </summary> /// <param name="stat">Stat to get.</param> /// <returns>Stat value.</returns> public int GetLiveStatValue(DFCareer.Stats stat) { int value = GetPermanentStatValue(stat) + mods[(int)stat]; int maxValue = FormulaHelper.MaxStatValue() + maxMods[(int)stat]; // Clamp live stat to 0-maxValue (accounting for any max value mods) value = Mathf.Clamp(value, 0, maxValue); return((short)value); }
public override void RestoreSaveData(object dataIn) { if (dataIn == null) { return; } SaveData_v1 data = (SaveData_v1)dataIn; fortifyStat = data.fortifyStat; }
public override void RestoreSaveData(object dataIn) { if (dataIn == null) { return; } SaveData_v1 data = (SaveData_v1)dataIn; attribute = data.attribute; minAttributeValue = data.minAttributeValue; }
public override void RestoreSaveData(object dataIn) { SaveData_v1 data = (SaveData_v1)dataIn; if (dataIn == null) { return; } fortifyStat = data.fortifyStat; casterStatMods = data.casterStatMods; forcedRoundsRemaining = data.forcedRoundsRemaining; }
public override void RestoreSaveData(object dataIn) { if (dataIn == null) { return; } SaveData_v1 data = (SaveData_v1)dataIn; magnitude = data.magnitude; drainStat = data.drainStat; forcedRoundsRemaining = data.forcedRoundsRemaining; }
public override void HealAttributeDamage(DFCareer.Stats stat, int amount) { // Can only heal incumbent matching drain if (!IsIncumbent || stat != drainStat) { return; } // Heal attribute base.HealAttributeDamage(stat, amount); // Reduce magnitude and cancel effect once reduced to 0 if (DecreaseMagnitude((int)amount) == 0) { forcedRoundsRemaining = 0; } }
/// <summary> /// Heal attribute damage by amount. /// Does nothing if this effect does not damage attributes. /// Attribute will not heal past 0. /// </summary> /// <param name="stat">Attribute to heal.</param> /// <param name="amount">Amount to heal. Must be positive value.</param> public virtual void HealAttributeDamage(DFCareer.Stats stat, int amount) { if (amount < 0) { Debug.LogWarning("EntityEffect.HealAttributeDamage() received a negative value for amount - ignoring."); return; } int result = GetAttributeMod(stat) + amount; if (result > 0) { result = 0; } SetStatMod(stat, result); Debug.LogFormat("Healed {0}'s {1} by {2} points", GetPeeredEntityBehaviour(manager).name, stat.ToString(), amount); }
public TextFile.Token[] GetSkillSummary(DFCareer.Skills skill, int startPosition) { PlayerEntity playerEntity = GameManager.Instance.PlayerEntity; bool highlight = playerEntity.GetSkillRecentlyIncreased(skill); List <TextFile.Token> tokens = new List <TextFile.Token>(); TextFile.Formatting formatting = highlight ? TextFile.Formatting.TextHighlight : TextFile.Formatting.Text; TextFile.Token skillNameToken = new TextFile.Token(); skillNameToken.formatting = formatting; skillNameToken.text = DaggerfallUnity.Instance.TextProvider.GetSkillName(skill); TextFile.Token skillValueToken = new TextFile.Token(); skillValueToken.formatting = formatting; skillValueToken.text = string.Format("{0}%", playerEntity.Skills.GetLiveSkillValue(skill)); DFCareer.Stats primaryStat = DaggerfallSkills.GetPrimaryStat(skill); TextFile.Token skillPrimaryStatToken = new TextFile.Token(); skillPrimaryStatToken.formatting = formatting; skillPrimaryStatToken.text = DaggerfallUnity.Instance.TextProvider.GetAbbreviatedStatName(primaryStat); TextFile.Token positioningToken = new TextFile.Token(); positioningToken.formatting = TextFile.Formatting.PositionPrefix; TextFile.Token tabToken = new TextFile.Token(); tabToken.formatting = TextFile.Formatting.PositionPrefix; if (startPosition != 0) // if this is the second column { positioningToken.x = startPosition; tokens.Add(positioningToken); } tokens.Add(skillNameToken); positioningToken.x = startPosition + 85; tokens.Add(positioningToken); tokens.Add(skillValueToken); positioningToken.x = startPosition + 112; tokens.Add(positioningToken); tokens.Add(skillPrimaryStatToken); return(tokens.ToArray()); }
/// <summary> /// Searches all effects in all bundles to find DrainEffect incumbent for a specific stat. /// </summary> /// <param name="drainStat">The stat being drained.</param> /// <returns>DrainEffect incumbent for drainStat, or null if not found.</returns> public DrainEffect FindDrainStatIncumbent(DFCareer.Stats drainStat) { foreach (InstancedBundle bundle in instancedBundles) { foreach (IEntityEffect effect in bundle.liveEffects) { if (effect is DrainEffect) { DrainEffect drainEffect = effect as DrainEffect; if (drainEffect.IsIncumbent && drainEffect.DrainStat == drainStat) { return(drainEffect); } } } } return(null); }
/// <summary> /// Sets permanent stat value by enum, does not change effect mods. /// </summary> /// <param name="stat">Stat to set.</param> /// <param name="value">Stat value.</param> public void SetPermanentStatValue(DFCareer.Stats stat, int value) { switch (stat) { case DFCareer.Stats.Strength: Strength = value; break; case DFCareer.Stats.Intelligence: Intelligence = value; break; case DFCareer.Stats.Willpower: Willpower = value; break; case DFCareer.Stats.Agility: Agility = value; break; case DFCareer.Stats.Endurance: Endurance = value; break; case DFCareer.Stats.Personality: Personality = value; break; case DFCareer.Stats.Speed: Speed = value; break; case DFCareer.Stats.Luck: Luck = value; break; } }
public override string End() { lastStat = DFCareer.Stats.Endurance; lastStatValue = parent.LiveEndurance; return(lastStatValue.ToString()); }
public override string Agi() { lastStat = DFCareer.Stats.Agility; lastStatValue = parent.LiveAgility; return(lastStatValue.ToString()); }
public override string Wil() { lastStat = DFCareer.Stats.Willpower; lastStatValue = parent.LiveWillpower; return(lastStatValue.ToString()); }
public override string Int() { lastStat = DFCareer.Stats.Intelligence; lastStatValue = parent.LiveIntelligence; return(lastStatValue.ToString()); }
public override string Str() { lastStat = DFCareer.Stats.Strength; lastStatValue = parent.LiveStrength; return(lastStatValue.ToString()); }