public EquippedDictionaryProxy(CharacterModel characterModel) { CharacterModel = characterModel; }
public static ShieldParams ShieldParams(CharacterModel characterModel) => ShieldParamsImpl(characterModel);
public static int AdjustedSellPrice(CharacterModel character, float value) => AdjustedSellPriceImpl(character, value);
public static float MaxHealth(CharacterModel characterModel) => MaxHealthImpl(characterModel);
public static float MaxEnergy(CharacterModel characterModel) => MaxEnergyImpl(characterModel);
public static int LevelsForExperience(CharacterModel character) => LevelsForExperienceImpl(character);
public static int XPAfterMaxLevel(CharacterModel character) => XPAfterMaxLevelImpl(character);
/// <summary> /// Calculates damage to shields, armor, and character given damage and a character model /// </summary> public static (float damageToShields, float damageToArmor, float damageToCharacter) DamageRatio(float damage, float pierce, CharacterModel character) => DamageRatioImpl(damage, pierce, character);
public static int PotentialPointsForLevel(int newLevel, CharacterModel character) => PotentialPointsForLevelImpl(newLevel, character);
public static float MaxMagic(CharacterModel characterModel) => MaxMagicImpl(characterModel);
/// <summary> /// Calculates damage to shields, armor, and character given damage and a character model /// </summary> public static (float damageToShields, float damageToArmor, float damageToCharacter) DamageRatio(ActorHitInfo hitInfo, CharacterModel character) => DamageRatioImpl(hitInfo, character);
public override AidItemApplyResult Apply(CharacterModel target, InventoryItemInstance itemInstance) { StringBuilder messageBuilder = new StringBuilder(); AidItemScriptResult scriptResult = new AidItemScriptResult() { ReturnSuccess = true, ContinueApply = true, ConsumeItem = !CheckFlag(ItemFlag.AidDoNotConsume), ShowMessage = !CheckFlag(ItemFlag.AidNoMessage) }; //apply script if (!string.IsNullOrEmpty(Scripts.OnApply)) { scriptResult = ApplyScript(this, target, itemInstance); } if (scriptResult.ContinueApply) { //apply base if (AType != AidType.None) { float amountRestored = ApplyBase(this, target); messageBuilder.AppendLine(base.GetSuccessMessage(amountRestored)); } //apply nodes if (RestoreNodes != null && RestoreNodes.Count > 0) { foreach (var restoreNode in RestoreNodes) { if (!restoreNode.AutoApply) { continue; } float amountRestored = ApplyNode(restoreNode.AType, restoreNode.RType, restoreNode.Amount, target); messageBuilder.AppendLine($"Restored {(int)amountRestored} {restoreNode.AType.ToString()}!"); } } } //concat messages string message; if (scriptResult.MessageOverride != null) { if (CheckFlag(ItemFlag.ComboAidKeepAllMessages)) { message = scriptResult.MessageOverride + '\n' + messageBuilder.ToString(); } else { message = scriptResult.MessageOverride; } } else { message = messageBuilder.ToString(); } return(new AidItemApplyResult() { ConsumeItem = scriptResult.ConsumeItem, Message = message, ShowMessage = scriptResult.ShowMessage, Success = scriptResult.ReturnSuccess }); }
protected static float ApplyNode(AidType aType, RestoreType rType, float amount, CharacterModel player) { float amountRestored = 0; //this is super gross but I will improve it later switch (aType) { case AidType.Health: { switch (rType) { case RestoreType.Add: float oldHealth = player.Health; player.Health = Math.Min(player.Health + amount, player.DerivedStats.MaxHealth); amountRestored = player.Health - oldHealth; break; case RestoreType.Boost: player.Health += amount; amountRestored = amount; break; case RestoreType.Override: player.Health = amount; amountRestored = amount; break; default: break; } } break; case AidType.Energy: { switch (rType) { case RestoreType.Add: float oldEnergy = player.Energy; player.Energy = Math.Min(player.Energy + amount, player.DerivedStats.MaxEnergy); amountRestored = player.Energy - oldEnergy; break; case RestoreType.Boost: player.Energy += amount; amountRestored = amount; break; case RestoreType.Override: player.Energy = amount; amountRestored = amount; break; default: break; } } break; case AidType.Magic: { switch (rType) { case RestoreType.Add: float oldMagic = player.Magic; player.Magic = Math.Min(player.Magic + amount, player.DerivedStats.MaxMagic); amountRestored = player.Magic - oldMagic; break; case RestoreType.Boost: player.Magic += amount; amountRestored = amount; break; case RestoreType.Override: player.Magic = amount; amountRestored = amount; break; default: break; } } break; case AidType.Shields: { switch (rType) { case RestoreType.Add: float oldShields = player.Shields; player.Shields = Math.Min(player.Shields + amount, player.DerivedStats.ShieldParams.MaxShields); amountRestored = player.Shields - oldShields; break; case RestoreType.Boost: player.Shields += amount; amountRestored = amount; break; case RestoreType.Override: player.Shields = amount; amountRestored = amount; break; default: break; } } break; } return(amountRestored); }
protected static float ApplyBase(AidItemModel item, CharacterModel player) { return(ApplyNode(item.AType, item.RType, item.Amount, player)); }