Inventory logger
This commit is contained in:
parent
29fba4b7cb
commit
de2057789a
41 changed files with 12834 additions and 171 deletions
188
Shared/Spells/Spell.cs
Normal file
188
Shared/Spells/Spell.cs
Normal file
|
|
@ -0,0 +1,188 @@
|
|||
|
||||
namespace Mag.Shared.Spells
|
||||
{
|
||||
/// <summary>
|
||||
/// Use GetSpell() to intialize a Spell object
|
||||
/// </summary>
|
||||
public class Spell
|
||||
{
|
||||
public readonly int Id;
|
||||
public readonly string Name;
|
||||
public readonly int Difficulty;
|
||||
public readonly int Duration;
|
||||
public readonly int Family;
|
||||
|
||||
public enum BuffLevels
|
||||
{
|
||||
None,
|
||||
|
||||
I,
|
||||
II,
|
||||
III,
|
||||
IV,
|
||||
V,
|
||||
VI,
|
||||
VII,
|
||||
VIII,
|
||||
}
|
||||
public readonly BuffLevels BuffLevel;
|
||||
|
||||
public enum CantripLevels
|
||||
{
|
||||
None,
|
||||
|
||||
Feeble,
|
||||
Minor,
|
||||
Lesser,
|
||||
Moderate,
|
||||
Inner,
|
||||
Major,
|
||||
Epic,
|
||||
Legendary,
|
||||
}
|
||||
public readonly CantripLevels CantripLevel;
|
||||
|
||||
public Spell(int id, string name, int difficulty, int duration, int family)
|
||||
{
|
||||
Id = id;
|
||||
Name = name;
|
||||
Difficulty = difficulty;
|
||||
Duration = duration;
|
||||
Family = family;
|
||||
|
||||
if (name.EndsWith(" I"))
|
||||
BuffLevel = BuffLevels.I;
|
||||
else if (name.EndsWith(" II"))
|
||||
BuffLevel = BuffLevels.II;
|
||||
else if (name.EndsWith(" III"))
|
||||
BuffLevel = BuffLevels.III;
|
||||
else if (name.EndsWith(" IV"))
|
||||
BuffLevel = BuffLevels.IV;
|
||||
else if (name.EndsWith(" V"))
|
||||
BuffLevel = BuffLevels.V;
|
||||
else if (name.EndsWith(" VI"))
|
||||
BuffLevel = BuffLevels.VI;
|
||||
else if (name.EndsWith(" VII")) // This doesn't pick up every lvl 7
|
||||
BuffLevel = BuffLevels.VII;
|
||||
else if (name.StartsWith("Incantation ") || name.StartsWith("Aura of Incantation "))
|
||||
BuffLevel = BuffLevels.VIII;
|
||||
|
||||
if (name.StartsWith("Feeble "))
|
||||
CantripLevel = CantripLevels.Feeble;
|
||||
else if (name.StartsWith("Minor "))
|
||||
CantripLevel = CantripLevels.Minor;
|
||||
else if (name.StartsWith("Lesser "))
|
||||
CantripLevel = CantripLevels.Lesser;
|
||||
else if (name.StartsWith("Moderate "))
|
||||
CantripLevel = CantripLevels.Moderate;
|
||||
else if (name.StartsWith("Inner ") && name != "Inner Calm")
|
||||
CantripLevel = CantripLevels.Inner;
|
||||
else if (name.StartsWith("Major "))
|
||||
CantripLevel = CantripLevels.Major;
|
||||
else if (name.StartsWith("Epic "))
|
||||
CantripLevel = CantripLevels.Epic;
|
||||
else if (name.StartsWith("Legendary "))
|
||||
CantripLevel = CantripLevels.Legendary;
|
||||
|
||||
// Try to determine if this is a lvl x
|
||||
if (BuffLevel == BuffLevels.None && CantripLevel == CantripLevels.None)
|
||||
{
|
||||
// These spells don't have levels
|
||||
if (name.StartsWith("Prodigal ") || // Rares
|
||||
name.StartsWith("Cloaked in ") || name.StartsWith("Shroud of ")) // Cloaks
|
||||
return;
|
||||
|
||||
if (difficulty == 1 && duration == 1800)
|
||||
BuffLevel = BuffLevels.I;
|
||||
if (difficulty == 50 && duration == -1 && name.StartsWith("Evaporate "))
|
||||
BuffLevel = BuffLevels.II;
|
||||
|
||||
if (difficulty == 50 && duration == 1800)
|
||||
BuffLevel = BuffLevels.II;
|
||||
if (difficulty == 100 && duration == -1 && name.StartsWith("Extinguish "))
|
||||
BuffLevel = BuffLevels.II;
|
||||
|
||||
if (difficulty == 100 && duration == 1800)
|
||||
BuffLevel = BuffLevels.III;
|
||||
if (difficulty == 150 && duration == -1 && name.StartsWith("Cleanse "))
|
||||
BuffLevel = BuffLevels.III;
|
||||
|
||||
if (difficulty == 150 && duration == 1800)
|
||||
BuffLevel = BuffLevels.IV;
|
||||
if (difficulty == 200 && duration == -1 && name.StartsWith("Devour "))
|
||||
BuffLevel = BuffLevels.IV;
|
||||
|
||||
if (difficulty == 200 && duration == 1800)
|
||||
BuffLevel = BuffLevels.V;
|
||||
if (difficulty == 250 && duration == -1 && name.StartsWith("Purge "))
|
||||
BuffLevel = BuffLevels.V;
|
||||
|
||||
if (difficulty == 200 && duration == -1 && !name.StartsWith("Devour ")) // Ring spells
|
||||
BuffLevel = BuffLevels.VI;
|
||||
if (difficulty == 250 && duration == 2700)
|
||||
BuffLevel = BuffLevels.VI;
|
||||
if (difficulty == 300 && duration == -1 && name.StartsWith("Nullify "))
|
||||
BuffLevel = BuffLevels.VI;
|
||||
|
||||
if (difficulty == 300 && duration == -1 && !name.StartsWith("Nullify "))
|
||||
BuffLevel = BuffLevels.VII;
|
||||
if (difficulty == 300 && duration == 240)
|
||||
BuffLevel = BuffLevels.VII;
|
||||
if (difficulty == 300 && duration == 3600)
|
||||
BuffLevel = BuffLevels.VII;
|
||||
if (difficulty == 325 && duration == -1)
|
||||
BuffLevel = BuffLevels.VII;
|
||||
if (difficulty == 325 && duration == 240)
|
||||
BuffLevel = BuffLevels.VII;
|
||||
if (difficulty == 350 && duration == -1)
|
||||
BuffLevel = BuffLevels.VII;
|
||||
|
||||
if (difficulty == 400 && duration == 5400)
|
||||
BuffLevel = BuffLevels.VIII;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public bool IsOfSameFamilyAndGroup(Spell compareSpell)
|
||||
{
|
||||
if (Family != compareSpell.Family)
|
||||
return false;
|
||||
|
||||
if (BuffLevel != 0 && compareSpell.BuffLevel != 0)
|
||||
return true;
|
||||
|
||||
if (CantripLevel != 0 && compareSpell.CantripLevel != 0)
|
||||
return true;
|
||||
|
||||
// Are both spells are of an unkown group?
|
||||
if (BuffLevel == 0 && compareSpell.BuffLevel == 0 && CantripLevel == 0 && compareSpell.CantripLevel == 0)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool IsSameOrSurpasses(Spell compareSpell)
|
||||
{
|
||||
return (this == compareSpell || Surpasses(compareSpell));
|
||||
}
|
||||
|
||||
public bool Surpasses(Spell compareSpell)
|
||||
{
|
||||
if (Family == 0 || Family != compareSpell.Family)
|
||||
return false;
|
||||
|
||||
if (BuffLevel > 0 && compareSpell.BuffLevel > 0 && BuffLevel > compareSpell.BuffLevel)
|
||||
return true;
|
||||
|
||||
if (CantripLevel > 0 && compareSpell.CantripLevel > 0 && CantripLevel > compareSpell.CantripLevel)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return Name;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue