diff --git a/ChampionsOfForest.csproj b/ChampionsOfForest.csproj index f00ac0c..8fcd519 100644 --- a/ChampionsOfForest.csproj +++ b/ChampionsOfForest.csproj @@ -21,311 +21,330 @@ prompt 4 - - - + ../../../libs/BaseModLib.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/Assembly-CSharp-firstpass.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/Assembly-CSharp.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/Assembly-UnityScript-firstpass.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/Assembly-UnityScript.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/bolt.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/bolt.user.dll False - + + ..\..\..\..\..\SteamLibrary\steamapps\common\The Forest\TheForest_Data\Managed\BuilderCore.dll + + ../../../modlib/TheForest/TheForest_data/Managed/SteamworksManaged.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/Boo.Lang.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/Mono.Security.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/UnityScript.Lang.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/Boo.Lang.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/Mono.Posix.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/Mono.Security.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/mscorlib.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/Pathfinding.ClipperLib.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/Pathfinding.Ionic.Zip.Reduced.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/Pathfinding.JsonFx.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/Pathfinding.Poly2Tri.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/PlayMaker.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/Rewired_Core.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/System.Configuration.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/System.Core.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/System.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/System.Security.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/System.Xml.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/TheForest.Commons.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/TheForest.Modding.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/UnityEngine.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/UnityEngine.Networking.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/UnityEngine.UI.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/UnityScript.Lang.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/udpkit.dll False - + ../../../modlib/TheForest/TheForest_data/Managed/udpkit.common.dll False - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Configuration/DebugFeatures.cs b/Configuration/DebugFeatures.cs index 202f5bf..0a18ab2 100644 --- a/Configuration/DebugFeatures.cs +++ b/Configuration/DebugFeatures.cs @@ -136,7 +136,7 @@ partial void DrawDebug() GUI.Label(r, $"Client distance = {Vector3.Distance(rulerEnd, LocalPlayer.Transform.position)}\nLineLen = {Vector3.Distance(rulerStart, rulerEnd)}"); } } - if (PlayerInventoryMod.EquippedModel != BaseItem.WeaponModelType.None) + if (PlayerInventoryMod.EquippedModel != BaseItem.ItemSubtype.None) { GUI.Label(new Rect(600, 300, 500, 30), "Offset"); GUI.Label(new Rect(600, 330, 100, 30), PlayerInventoryMod.customWeapons[PlayerInventoryMod.EquippedModel].offset.x.ToString()); diff --git a/Configuration/Initializer.cs b/Configuration/Initializer.cs index f23ff75..92469e1 100644 --- a/Configuration/Initializer.cs +++ b/Configuration/Initializer.cs @@ -4,6 +4,7 @@ using ChampionsOfForest.Effects.Sound_Effects; using ChampionsOfForest.Enemies.EnemyAbilities; using ChampionsOfForest.ExpSources; +using ChampionsOfForest.Items; using ChampionsOfForest.Localization; using ChampionsOfForest.Player; using ChampionsOfForest.Player.Crafting; @@ -37,7 +38,7 @@ public static void Initialize() new GameObject("NetworkManagerObj").AddComponent(); GameObject go = new GameObject("Playerobj"); go.AddComponent(); - ItemDataBase.Initialize(); + ItemDatabase.Initialize(); EnemyManager.Initialize(); Network.NetworkManager.instance.onGetMessage += Network.CommandReader.OnCommand; ExpEvents.Initialize(); @@ -83,7 +84,7 @@ public static void Initialize() Network.CommandInitializer.Init(); CustomCrafting.Init(); BuffDB.FillBuffList(); - ItemDataBase.Initialize(); + ItemDatabase.Initialize(); SpellDataBase.Initialize(); EnemyManager.Initialize(); Network.NetworkManager.instance.onGetMessage += Network.CommandReader.OnCommand; diff --git a/DedicatedServer/COTFDS.cs b/DedicatedServer/COTFDS.cs index 38b94a2..52831c9 100644 --- a/DedicatedServer/COTFDS.cs +++ b/DedicatedServer/COTFDS.cs @@ -16,9 +16,9 @@ public static void ReadDediServerConfig() var difficultyRegex = new Regex(@"(?<=Difficulty=)\d+"); var friendlyFireRegex = new Regex(@"(?<=FriendlyFire=)\d+"); - ModSettings.difficulty = (ModSettings.Difficulty)(int.Parse(difficultyRegex.Match(content).Value)); - ModSettings.FriendlyFire = difficultyRegex.Match(content).Value == "1"; - ModSettings.DifficultyChosen = true; + //ModSettings.difficulty = (ModSettings.GameDifficulty)(int.Parse(difficultyRegex.Match(content).Value)); + //ModSettings.FriendlyFire = difficultyRegex.Match(content).Value == "1"; + //ModSettings.DifficultyChosen = true; } else { diff --git a/Effects/Berserker.cs b/Effects/Berserker.cs index b8a9962..3fc9811 100644 --- a/Effects/Berserker.cs +++ b/Effects/Berserker.cs @@ -22,8 +22,8 @@ public static void OnEnable() active = true; ModdedPlayer.Stats.allDamage.Multiply(ModdedPlayer.Stats.spell_berserkDamage); ModdedPlayer.Stats.attackSpeed.Multiply(ModdedPlayer.Stats.spell_berserkAttackSpeed); - ModdedPlayer.Stats.movementSpeed.Multiply(ModdedPlayer.Stats.spell_berserkMovementSpeed); - ModdedPlayer.Stats.maxHealthMult.Multiply(ModdedPlayer.Stats.spell_berserkMaxHP); + ModdedPlayer.Stats.mOVEMENT_SPEED.Multiply(ModdedPlayer.Stats.spell_berserkMOVEMENT_SPEED); + ModdedPlayer.Stats.maxLifeMult.Multiply(ModdedPlayer.Stats.spell_berserkMaxHP); ModdedPlayer.Stats.allDamageTaken.Multiply(2f); castTimestamp = Time.time; @@ -35,8 +35,8 @@ public static void OnDisable() active = false; ModdedPlayer.Stats.allDamage.Divide(ModdedPlayer.Stats.spell_berserkDamage); ModdedPlayer.Stats.attackSpeed.Divide(ModdedPlayer.Stats.spell_berserkAttackSpeed); - ModdedPlayer.Stats.movementSpeed.Divide(ModdedPlayer.Stats.spell_berserkMovementSpeed); - ModdedPlayer.Stats.maxHealthMult.Divide(ModdedPlayer.Stats.spell_berserkMaxHP); + ModdedPlayer.Stats.mOVEMENT_SPEED.Divide(ModdedPlayer.Stats.spell_berserkMOVEMENT_SPEED); + ModdedPlayer.Stats.maxLifeMult.Divide(ModdedPlayer.Stats.spell_berserkMaxHP); ModdedPlayer.Stats.allDamageTaken.Divide( 2f); if (ModdedPlayer.Stats.i_setcount_BerserkSet < 2) BuffDB.AddBuff(18, 51, LocalPlayer.Stats.Energy, 15); diff --git a/Effects/BlackFlame.cs b/Effects/BlackFlame.cs index 6b8177c..2f5ff0b 100644 --- a/Effects/BlackFlame.cs +++ b/Effects/BlackFlame.cs @@ -14,18 +14,73 @@ public class BlackFlame : MonoBehaviour { public static BlackFlame instance; public static float DmgAmp = 1; - public static float FireDamageBonus => (30 + ModdedPlayer.Stats.spellFlatDmg / ModdedPlayer.Stats.spell_blackFlameDamageScaling) * ModdedPlayer.Stats.TotalMagicDamageMultiplier * DmgAmp / 3; + public static float FireDamageBonus => (30 + ModdedPlayer.Stats.baseSpellDamage / ModdedPlayer.Stats.spell_blackFlameDamageScaling) * ModdedPlayer.Stats.TotalMagicDamageMultiplier * DmgAmp / 3; private static Material mat1; private static Material mat2; public static GameObject instanceLocalPlayer; public static Component[] particleSystems; + public static bool IsOn = false; + public static float Cost = 20; + public static bool GiveDamageBuff; public static bool GiveAfterburn; public const float afterburn_duration = 20f, afterburn_debuff_amount = 1.8f, afterburn_chance = 0.10f; + + private static Dictionary blackFlamesClients = new Dictionary(); + + + + public void Start() + { + StartCoroutine(StartCoroutine()); + if (instance == null) + instance = this; + } + + public IEnumerator StartCoroutine() + { + yield return null; + yield return null; + while (ModReferences.rightHandTransform == null) + { + yield return null; + LocalPlayer.Inventory?.SendMessage("GetRightHand"); + } + yield return null; + if (instanceLocalPlayer == null) + { + var created = Create(); + instanceLocalPlayer = created.item0; + particleSystems = created.item1; + instanceLocalPlayer.transform.position = ModReferences.rightHandTransform.position; + instanceLocalPlayer.transform.rotation = ModReferences.rightHandTransform.rotation; + instanceLocalPlayer.transform.parent = ModReferences.rightHandTransform; + instanceLocalPlayer.SetActive(false); + } + } + + private void Update() + { + if (IsOn) + { + if (ModdedPlayer.Stats.perk_danceOfFiregod.value) + SpellCaster.RemoveStamina(Cost * 0.75f * Math.Max(LocalPlayer.Rigidbody.velocity.magnitude, 0.5f) * Time.deltaTime); + else + SpellCaster.RemoveStamina(Cost * Time.deltaTime); + if (LocalPlayer.Stats.Stamina < 5) + { + Toggle(); + } + if (GiveDamageBuff) + { + BuffDB.AddBuff(9, 44, 1.33f, 1f); + } + } + } public static STuple Create() { AnimationCurve sizecurve = new AnimationCurve(new Keyframe(0, 0, 5.129462f, 5.129462f), new Keyframe(0.2449522f, 1, 0, 0), new Keyframe(1, 0, -1.242162f, -1.242162f)); @@ -100,57 +155,6 @@ public static STuple Create() return new STuple(go, comps); } - public static bool IsOn = false; - public static float Cost = 20; - - public void Start() - { - StartCoroutine(StartCoroutine()); - if (instance == null) - instance = this; - } - - public IEnumerator StartCoroutine() - { - yield return null; - yield return null; - while (ModReferences.rightHandTransform == null) - { - yield return null; - LocalPlayer.Inventory?.SendMessage("GetRightHand"); - } - yield return null; - if (instanceLocalPlayer == null) - { - var created = Create(); - instanceLocalPlayer = created.item0; - particleSystems = created.item1; - instanceLocalPlayer.transform.position = ModReferences.rightHandTransform.position; - instanceLocalPlayer.transform.rotation = ModReferences.rightHandTransform.rotation; - instanceLocalPlayer.transform.parent = ModReferences.rightHandTransform; - instanceLocalPlayer.SetActive(false); - } - } - - private void Update() - { - if (IsOn) - { - if (ModdedPlayer.Stats.perk_danceOfFiregod.value) - SpellCaster.RemoveStamina(Cost * 0.75f * Math.Max(LocalPlayer.Rigidbody.velocity.magnitude,0.5f) * Time.deltaTime); - else - SpellCaster.RemoveStamina(Cost * Time.deltaTime); - if (LocalPlayer.Stats.Stamina < 5) - { - Toggle(); - } - if (GiveDamageBuff) - { - BuffDB.AddBuff(9, 44, 1.33f, 1f); - } - } - } - public static void Toggle() { IsOn = !IsOn; @@ -187,18 +191,12 @@ public static void Toggle() } } - private static Dictionary blackFlamesClients = new Dictionary(); - public static void ToggleOtherPlayer(string playerName, bool isOn) { - //ModAPI.Console.Write("Toggling black flames for client " + playerName + isOn); - if (!ModReferences.PlayerHands.ContainsKey(playerName)) - { - ModReferences.FindHands(); - } - if (ModReferences.PlayerHands.ContainsKey(playerName)) + var playerState = ModReferences.PlayerStates.GetPlayerState(playerName); + if (playerState.hand != null) { - Transform t = ModReferences.PlayerHands[playerName]; + Transform t = playerState.hand; if (blackFlamesClients.ContainsKey(t)) { blackFlamesClients[t].SetActive(isOn); diff --git a/Effects/BlackHole.cs b/Effects/BlackHole.cs index aac16a8..90b2e6e 100644 --- a/Effects/BlackHole.cs +++ b/Effects/BlackHole.cs @@ -62,7 +62,7 @@ private IEnumerator Start() { AudioSource source = gameObject.AddComponent(); source.clip = Res.ResourceLoader.instance.LoadedAudio[1000]; - source.volume = 16; + source.volume = 5; source.spatialBlend = 1f; source.rolloffMode = AudioRolloffMode.Linear; source.maxDistance = 150f; @@ -203,12 +203,9 @@ private IEnumerator HitEverySecond() } while (FromEnemy) { - if ((LocalPlayer.Transform.position - transform.position).sqrMagnitude < scale * 4 * scale * 4) + if ((LocalPlayer.Transform.position - transform.position).sqrMagnitude < scale * scale * 2) { - if (Random.value <= ModdedPlayer.Stats.getHitChance) - LocalPlayer.Stats.HealthChange(-damage * ModdedPlayer.Stats.allDamageTaken * ModdedPlayer.Stats.magicDamageTaken * 0.5f); - else - COTFEvents.Instance.OnDodge.Invoke(); + LocalPlayer.Stats.HealthChange(-damage * ModdedPlayer.Stats.allDamageTaken * ModdedPlayer.Stats.damageFromElites * 0.5f); yield return new WaitForSeconds(0.5f); } else @@ -224,9 +221,8 @@ private IEnumerator HitEnemies() { if (t.Value != null) { - t.Value.HitMagic(damage); - yield return null; - + t.Value.HitMagic(damage); + yield return null; } } } diff --git a/Effects/Cataclysm.cs b/Effects/Cataclysm.cs index a10e05b..d042eca 100644 --- a/Effects/Cataclysm.cs +++ b/Effects/Cataclysm.cs @@ -31,7 +31,7 @@ public static void AssignPrefabs() } catch (Exception e) { - CotfUtils.Log("Assign Prefabs error " + e.Message); + Utils.Log("Assign Prefabs error " + e.Message); } } @@ -50,11 +50,11 @@ public static void Create(Vector3 position, float radius, float damage, float du c.duration = duration; c.isFromEnemy = isFromEnemy; c.isArcane = tornadoType == TornadoType.Arcane; - CotfUtils.Log("Created cataclysm"); + Utils.Log("Created cataclysm"); } catch (Exception e) { - CotfUtils.Log("Creating cataclysm error " + e.Message); + Utils.Log("Creating cataclysm error " + e.Message); } } @@ -82,12 +82,12 @@ private void Start() particleParent = transform.GetChild(1).gameObject; particleParent.SetActive(false); Invoke("EnableParticles", 2); - CotfUtils.Log("start cataclysm"); + Utils.Log("start cataclysm"); dmg = (int)damage; } catch (Exception e) { - CotfUtils.Log("Start cataclysm error " + e.Message); + Utils.Log("Start cataclysm error " + e.Message); } } @@ -98,11 +98,11 @@ private void EnableParticles() particleParent.SetActive(true); warmUpDone = true; Invoke("End", duration); - CotfUtils.Log("enabled particles cataclysm"); + Utils.Log("enabled particles cataclysm"); } catch (Exception e) { - CotfUtils.Log("Enabling particles cataclysm error " + e.Message); + Utils.Log("Enabling particles cataclysm error " + e.Message); } } @@ -176,7 +176,7 @@ private void SendHitFromEnemy() float sqrMagnitude = (LocalPlayer.Transform.position - transform.position).sqrMagnitude; if (sqrMagnitude < radius * radius) { - int dmg = (int)(damage * (1 - ModdedPlayer.Stats.magicDamageTaken)); + int dmg = (int)(damage * (ModdedPlayer.Stats.damageFromElites)); if (isArcane) { @@ -192,7 +192,7 @@ private void SendHitFromEnemy() BuffDB.AddBuff(2, 65, 0.7f, 6); LocalPlayer.Stats.Burn(); } - LocalPlayer.Stats.Hit((int)(dmg * (1 - ModdedPlayer.Stats.magicDamageTaken)), false, PlayerStats.DamageType.Drowning); + LocalPlayer.Stats.Hit((int)(dmg * (ModdedPlayer.Stats.damageFromElites)), false, PlayerStats.DamageType.Drowning); } } @@ -210,7 +210,7 @@ private void End() } catch (Exception e) { - CotfUtils.Log("End cataclysm error " + e.Message); + Utils.Log("End cataclysm error " + e.Message); } } } diff --git a/Effects/Flare.cs b/Effects/Flare.cs index f6d9378..c93ea1e 100644 --- a/Effects/Flare.cs +++ b/Effects/Flare.cs @@ -229,7 +229,7 @@ private void Update() { if (Random.value <= ModdedPlayer.Stats.getHitChance) { - LocalPlayer.Stats.HealthChange(-damageAmount * Time.deltaTime * ( ModdedPlayer.Stats.magicDamageTaken) * ModdedPlayer.Stats.allDamageTaken); + LocalPlayer.Stats.HealthChange(-damageAmount * Time.deltaTime * ( ModdedPlayer.Stats.damageFromElites) * ModdedPlayer.Stats.allDamageTaken); BuffDB.AddBuff(1, 5, slowAmount, 20); LocalPlayer.Stats.Burn(); } diff --git a/Effects/Gold.cs b/Effects/Gold.cs index 538baae..7349ad0 100644 --- a/Effects/Gold.cs +++ b/Effects/Gold.cs @@ -62,8 +62,8 @@ public static void Enable() public static void Disable() { renderer.material = originalMaterial; - ModdedPlayer.Stats.stunImmunity.Substract(1); - ModdedPlayer.Stats.debuffResistance.Substract(1); + ModdedPlayer.Stats.stunImmunity.Sub(1); + ModdedPlayer.Stats.debuffResistance.Sub(1); ModdedPlayer.Stats.attackSpeed .Divide( 1.2f); if (ModdedPlayer.Stats.perk_goldenResolve) diff --git a/Effects/RealisticBlackHoleEffect.cs b/Effects/RealisticBlackHoleEffect.cs index d310356..1b03f6b 100644 --- a/Effects/RealisticBlackHoleEffect.cs +++ b/Effects/RealisticBlackHoleEffect.cs @@ -46,7 +46,7 @@ public void Awake() } catch (System.Exception e) { - CotfUtils.Log(e.ToString()); + Utils.Log(e.ToString()); } } diff --git a/Enemies/EnemyAbilities/EnemyLaser.cs b/Enemies/EnemyAbilities/EnemyLaser.cs index 4c7d9e6..5b430d2 100644 --- a/Enemies/EnemyAbilities/EnemyLaser.cs +++ b/Enemies/EnemyAbilities/EnemyLaser.cs @@ -71,45 +71,45 @@ private IEnumerator Shoot(int index) go.transform.LookAt(Direction); int dmg = Random.Range(30, 40); - switch (ModSettings.difficulty) + switch (ModSettings.Difficulty) { - case ModSettings.Difficulty.Veteran: + case ModSettings.GameDifficulty.Veteran: dmg = Random.Range(85, 105); break; - case ModSettings.Difficulty.Elite: + case ModSettings.GameDifficulty.Elite: dmg = Random.Range(221, 234); break; - case ModSettings.Difficulty.Master: + case ModSettings.GameDifficulty.Master: dmg = Random.Range(444, 470); break; - case ModSettings.Difficulty.Challenge1: + case ModSettings.GameDifficulty.Challenge1: dmg = 4124; break; - case ModSettings.Difficulty.Challenge2: + case ModSettings.GameDifficulty.Challenge2: dmg = 15653; break; - case ModSettings.Difficulty.Challenge3: + case ModSettings.GameDifficulty.Challenge3: dmg = 72346; break; - case ModSettings.Difficulty.Challenge4: + case ModSettings.GameDifficulty.Challenge4: dmg = 85932; break; - case ModSettings.Difficulty.Challenge5: + case ModSettings.GameDifficulty.Challenge5: dmg = 124636; break; - case ModSettings.Difficulty.Challenge6: + case ModSettings.GameDifficulty.Challenge6: dmg = 164636; break; - case ModSettings.Difficulty.Hell: + case ModSettings.GameDifficulty.Hell: dmg = 224636; break; } diff --git a/Enemies/EnemyAbilities/EnemyLaserBeam.cs b/Enemies/EnemyAbilities/EnemyLaserBeam.cs index 197bb32..4421cd4 100644 --- a/Enemies/EnemyAbilities/EnemyLaserBeam.cs +++ b/Enemies/EnemyAbilities/EnemyLaserBeam.cs @@ -32,7 +32,7 @@ public IEnumerator DoAction() { if (hit.transform.root == LocalPlayer.Transform.root) { - LocalPlayer.Stats.Hit((int)(dmg * 0.3f * (1 - ModdedPlayer.Stats.magicDamageTaken)), false, PlayerStats.DamageType.Fire); + LocalPlayer.Stats.Hit((int)(dmg * 0.3f * (ModdedPlayer.Stats.damageFromElites)), false, PlayerStats.DamageType.Fire); BuffDB.AddBuff(10, 67, 0.5f, 15); BuffDB.AddBuff(2, 66, 0.5f, 15); BuffDB.AddBuff(3, 68, dmg / 13, 5); diff --git a/Enemies/EnemyAbilities/FireAura.cs b/Enemies/EnemyAbilities/FireAura.cs index ea24dbd..9dc7a25 100644 --- a/Enemies/EnemyAbilities/FireAura.cs +++ b/Enemies/EnemyAbilities/FireAura.cs @@ -51,7 +51,7 @@ private void Update() { if ((LocalPlayer.Transform.position - transform.position).sqrMagnitude < 49) { - float dmgPerTick = Time.deltaTime * damage * ModdedPlayer.Stats.allDamageTaken * ModdedPlayer.Stats.magicDamageTaken * ModReferences.DamageReduction((int)ModdedPlayer.Stats.TotalArmor); + float dmgPerTick = Time.deltaTime * damage * ModdedPlayer.Stats.allDamageTaken * ModdedPlayer.Stats.damageFromElites * ModReferences.DamageReduction((int)ModdedPlayer.Stats.TotalArmor); if (LocalPlayer.Stats.Health - 1 > dmgPerTick) LocalPlayer.Stats.Health -= dmgPerTick; diff --git a/Enemies/EnemyAbilities/MeteorSpawner.cs b/Enemies/EnemyAbilities/MeteorSpawner.cs index c1f8a52..512387c 100644 --- a/Enemies/EnemyAbilities/MeteorSpawner.cs +++ b/Enemies/EnemyAbilities/MeteorSpawner.cs @@ -36,49 +36,49 @@ private IEnumerator DoSpawnCoroutine(Vector3 position, int seed) { System.Random random = new System.Random(seed); int Damage = 10; - switch (ModSettings.difficulty) + switch (ModSettings.Difficulty) //todo make this a function dependent on enemy level instead of difficulty { - case ModSettings.Difficulty.Easy: + case ModSettings.GameDifficulty.Easy: Damage = Random.Range(40, 50); break; - case ModSettings.Difficulty.Veteran: + case ModSettings.GameDifficulty.Veteran: Damage = Random.Range(100, 150); break; - case ModSettings.Difficulty.Elite: + case ModSettings.GameDifficulty.Elite: Damage = Random.Range(300, 355); break; - case ModSettings.Difficulty.Master: + case ModSettings.GameDifficulty.Master: Damage = Random.Range(660, 700); break; - case ModSettings.Difficulty.Challenge1: + case ModSettings.GameDifficulty.Challenge1: Damage = 3000; break; - case ModSettings.Difficulty.Challenge2: + case ModSettings.GameDifficulty.Challenge2: Damage = 9000; break; - case ModSettings.Difficulty.Challenge3: + case ModSettings.GameDifficulty.Challenge3: Damage = 14000; break; - case ModSettings.Difficulty.Challenge4: + case ModSettings.GameDifficulty.Challenge4: Damage = 25000; break; - case ModSettings.Difficulty.Challenge5: + case ModSettings.GameDifficulty.Challenge5: Damage = 50000; break; - case ModSettings.Difficulty.Challenge6: + case ModSettings.GameDifficulty.Challenge6: Damage = 65000; break; - case ModSettings.Difficulty.Hell: + case ModSettings.GameDifficulty.Hell: Damage = 75000; break; } diff --git a/Enemies/EnemyHealthMod.cs b/Enemies/EnemyHealthMod.cs index 230178e..0be32c0 100644 --- a/Enemies/EnemyHealthMod.cs +++ b/Enemies/EnemyHealthMod.cs @@ -139,7 +139,6 @@ protected override void HitFire() base.HitReal(i); } - progression.armorReduction += i; } } diff --git a/Enemies/EnemyHitTriggerMod.cs b/Enemies/EnemyHitTriggerMod.cs index eed16bd..4686bfb 100644 --- a/Enemies/EnemyHitTriggerMod.cs +++ b/Enemies/EnemyHitTriggerMod.cs @@ -269,7 +269,7 @@ protected override void OnTriggerEnter(Collider other) playerHitEnemy.Target = entity; //this integer make the attack not stagger the enemy playerHitEnemy.getAttackerType = 2000000; - playerHitEnemy.Hit = DamageMath.GetSendableDamage(ModdedPlayer.Stats.TotalThornsDamage); + playerHitEnemy.Hit = DamageUtils.GetSendableDamage(ModdedPlayer.Stats.TotalThornsDamage); playerHitEnemy.Send(); } } @@ -285,7 +285,7 @@ protected override void OnTriggerEnter(Collider other) num = EnemyProg.DamageAmp * EnemyProg.DebuffDmgMult + num - 20f; hitDamage = num; - CotfUtils.Log($"Damage dealt to player: d{hitDamage} amp{EnemyProg.DamageAmp} lv{EnemyProg.level} php{hitDamage*100 / ModdedPlayer.Stats.TotalMaxHealth}%", true); + Utils.Log($"Damage dealt to player: d{hitDamage} amp{EnemyProg.DamageAmp} lv{EnemyProg.level} php{hitDamage*100 / ModdedPlayer.Stats.TotalMaxHealth}%", true); //POISON ATTACKS if (EnemyProg.abilities.Contains(EnemyProgression.Abilities.Poisonous)) diff --git a/Enemies/EnemyProgression/EnemyProgression.cs b/Enemies/EnemyProgression/EnemyProgression.cs index 9182c96..4090c19 100644 --- a/Enemies/EnemyProgression/EnemyProgression.cs +++ b/Enemies/EnemyProgression/EnemyProgression.cs @@ -91,7 +91,7 @@ public enum EnemyRarity public Avenger avengerability; private float timeOfDeath; private Color normalColor; - private ModSettings.Difficulty setupDifficulty; + private ModSettings.GameDifficulty setupDifficulty; public enum Abilities { Steadfast, BossSteadfast, EliteSteadfast, Blizzard, Radiance, Chains, BlackHole, Trapper, Juggernaut, Gargantuan, Tiny, ExtraDamage, ExtraHealth, Basher, Warp, RainEmpowerment, Shielding, Meteor, Flare, Undead, Laser, Poisonous, Sacrifice, Avenger, FireCataclysm, ArcaneCataclysm @@ -121,7 +121,7 @@ public enum Enemy PaintedMale = 0b1000000000000000000, PaintedLeaderMale = 0b10000000000000000000, PaintedFemale = 0b100000000000000000000, - Fireman = 0b1000000000000000000000 + Fireman = 0b1000000000000000000000, }; #endregion Variables @@ -390,7 +390,7 @@ public bool OnDie() } catch (Exception ex) { - ModAPI.Log.Write("DIEING ENEMY EXCEPTION " + ex); + ModAPI.Log.Write("DYING ENEMY EXCEPTION " + ex); } return true; @@ -398,7 +398,7 @@ public bool OnDie() private void DropLoot() { - if (Random.value <= 0.1f * ModSettings.DropChanceMultiplier * ModdedPlayer.Stats.magicFind.Value || AIScript.creepy_boss || abilities.Count > 0) + if (Random.value <= 0.1f * ModSettings.DropChanceMultiplier * ModdedPlayer.Stats.magicFind_quantity.Value || AIScript.creepy_boss || abilities.Count > 0) { int itemCount = Random.Range(2, 4); if (AIScript.creepy_boss) @@ -407,8 +407,8 @@ private void DropLoot() int pc = ModReferences.Players.Count; for (int i = 0; i < pc; i++) { - //Drop megan only amulet - Network.NetworkManager.SendItemDrop(new Item(ItemDataBase.ItemBases[80]), LocalPlayer.Transform.position + Vector3.up * 2, ItemPickUp.DropSource.EnemyOnDeath); + ////Drop megan only amulet + //Network.NetworkManager.SendItemDrop(new Item(ItemDatabase.itemLookup[80]), LocalPlayer.Transform.position + Vector3.up * 2, ItemPickUp.DropSource.EnemyOnDeath); } } else if (abilities.Count >= 3) diff --git a/Enemies/EnemyProgression/EnemyProgression_Damage.cs b/Enemies/EnemyProgression/EnemyProgression_Damage.cs index 305898d..06dcce0 100644 --- a/Enemies/EnemyProgression/EnemyProgression_Damage.cs +++ b/Enemies/EnemyProgression/EnemyProgression_Damage.cs @@ -71,47 +71,47 @@ public float ClampDamage(bool pure, float damage, bool magic) } else if (shieldingCD <= 0) { - switch (ModSettings.difficulty) + switch (ModSettings.Difficulty) { - case ModSettings.Difficulty.Easy: + case ModSettings.GameDifficulty.Easy: shieldingCD = 60; break; - case ModSettings.Difficulty.Veteran: + case ModSettings.GameDifficulty.Veteran: shieldingCD = 55; break; - case ModSettings.Difficulty.Elite: + case ModSettings.GameDifficulty.Elite: shieldingCD = 50; break; - case ModSettings.Difficulty.Master: + case ModSettings.GameDifficulty.Master: shieldingCD = 45; break; - case ModSettings.Difficulty.Challenge1: + case ModSettings.GameDifficulty.Challenge1: shieldingCD = 40; break; - case ModSettings.Difficulty.Challenge2: + case ModSettings.GameDifficulty.Challenge2: shieldingCD = 35; break; - case ModSettings.Difficulty.Challenge3: + case ModSettings.GameDifficulty.Challenge3: shieldingCD = 30; break; - case ModSettings.Difficulty.Challenge4: + case ModSettings.GameDifficulty.Challenge4: shieldingCD = 25; break; - case ModSettings.Difficulty.Challenge5: + case ModSettings.GameDifficulty.Challenge5: shieldingCD = 20; break; @@ -138,7 +138,7 @@ public float ClampDamage(bool pure, float damage, bool magic) reduction /= 1.5f; } - float dmg = damage * (1 - reduction); + float dmg = damage * (1f - reduction); if (Steadfast != 100) { dmg = Mathf.Min(dmg, steadfastCap); @@ -173,47 +173,47 @@ public int ClampDamage(bool pure, int damage) } else if (shieldingCD <= 0) { - switch (ModSettings.difficulty) + switch (ModSettings.Difficulty) { - case ModSettings.Difficulty.Easy: + case ModSettings.GameDifficulty.Easy: shieldingCD = 60; break; - case ModSettings.Difficulty.Veteran: + case ModSettings.GameDifficulty.Veteran: shieldingCD = 55; break; - case ModSettings.Difficulty.Elite: + case ModSettings.GameDifficulty.Elite: shieldingCD = 50; break; - case ModSettings.Difficulty.Master: + case ModSettings.GameDifficulty.Master: shieldingCD = 45; break; - case ModSettings.Difficulty.Challenge1: + case ModSettings.GameDifficulty.Challenge1: shieldingCD = 40; break; - case ModSettings.Difficulty.Challenge2: + case ModSettings.GameDifficulty.Challenge2: shieldingCD = 35; break; - case ModSettings.Difficulty.Challenge3: + case ModSettings.GameDifficulty.Challenge3: shieldingCD = 30; break; - case ModSettings.Difficulty.Challenge4: + case ModSettings.GameDifficulty.Challenge4: shieldingCD = 25; break; - case ModSettings.Difficulty.Challenge5: + case ModSettings.GameDifficulty.Challenge5: shieldingCD = 20; break; @@ -254,7 +254,8 @@ public int ClampDamage(bool pure, int damage) { dmg = Mathf.Min(dmg, (int)steadfastCap); } - + if (dmg < 0) + return -dmg; return dmg; } diff --git a/Enemies/EnemyProgression/EnemyProgression_Setup.cs b/Enemies/EnemyProgression/EnemyProgression_Setup.cs index f9ce02c..2cf00c3 100644 --- a/Enemies/EnemyProgression/EnemyProgression_Setup.cs +++ b/Enemies/EnemyProgression/EnemyProgression_Setup.cs @@ -59,14 +59,14 @@ private void Setup() DamageOverTimeList = new List(); abilities = new List(); - bool isElite = (Random.value < 0.1 || (AIScript.creepy_boss && !AIScript.girlFullyTransformed) || ModSettings.difficulty == ModSettings.Difficulty.Hell) && ModSettings.AllowElites; + bool isElite = (Random.value < 0.1 || (AIScript.creepy_boss && !AIScript.girlFullyTransformed) || ModSettings.Difficulty == ModSettings.GameDifficulty.Hell) && ModSettings.AllowElites; SetType(ref isElite); //picking abilities if (isElite) { - int abilityAmount = (int)ModSettings.difficulty > (int)ModSettings.Difficulty.Veteran ? Random.Range(3, 7) : 2; + int abilityAmount = (int)ModSettings.Difficulty > (int)ModSettings.GameDifficulty.Veteran ? Random.Range(3, 7) : 2; if (AIScript.creepy_boss) { abilityAmount = 10; @@ -127,7 +127,7 @@ private void Setup() } else if (ab == Abilities.ArcaneCataclysm || ab == Abilities.BlackHole || ab == Abilities.FireCataclysm || ab == Abilities.Meteor) { - if ((int)ModSettings.difficulty < (int)ModSettings.Difficulty.Master) + if ((int)ModSettings.Difficulty < (int)ModSettings.GameDifficulty.Master) canAdd = false; } if (abilities.Contains(ab)) @@ -148,14 +148,12 @@ private void Setup() SetLevel(); RollName(isElite); - setupDifficulty = ModSettings.difficulty; + setupDifficulty = ModSettings.Difficulty; //Assigning rest of stats - int dif = (int)setupDifficulty; DamageMult = level < 65 ? (Mathf.Pow(2.7182818284f,level/6) + level) //e^(x/6) + x : Mathf.Pow(level-60, 2.60f) * 600; - armor = Mathf.FloorToInt(Random.Range(Mathf.Pow(level, 2.43f) * 0.3333f + 1, Mathf.Pow(level, 2.43f) * 0.66666f + 20) * ModSettings.EnemyArmorMultiplier); - armor *= dif / 2 + 1; + armor = Mathf.FloorToInt(Random.Range(Mathf.Pow(level, 2.0f) * 0.3333f + 1, Mathf.Pow(level, 2.0f) * 0.66666f + 20) * ModSettings.EnemyArmorMultiplier); armorReduction = 0; //Set HP; @@ -320,7 +318,7 @@ private void Setup() } catch (Exception e) { - CotfUtils.Log(e.Message); + Utils.Log(e.Message); } { @@ -374,7 +372,7 @@ private void RollName(bool isElite) { if (AIScript.creepy_boss) { - enemyName = "Megan Cross"; + enemyName = "Ultimate Champion Megan Cross"; return; } if (!isElite) @@ -573,63 +571,64 @@ private void SetLevel() } } - switch (ModSettings.difficulty) + switch (ModSettings.Difficulty) { - case ModSettings.Difficulty.Easy: + case ModSettings.GameDifficulty.Easy: level = Random.Range(1, 4); break; - case ModSettings.Difficulty.Veteran: + case ModSettings.GameDifficulty.Veteran: level = Random.Range(10, 14); break; - case ModSettings.Difficulty.Elite: + case ModSettings.GameDifficulty.Elite: level = Random.Range(20, 25); break; - case ModSettings.Difficulty.Master: + case ModSettings.GameDifficulty.Master: level = Random.Range(30, 40); break; - case ModSettings.Difficulty.Challenge1: + case ModSettings.GameDifficulty.Challenge1: level = Random.Range(50, 60); break; - case ModSettings.Difficulty.Challenge2: + case ModSettings.GameDifficulty.Challenge2: level = Random.Range(89, 92); break; - case ModSettings.Difficulty.Challenge3: + case ModSettings.GameDifficulty.Challenge3: level = Random.Range(100, 101); break; - case ModSettings.Difficulty.Challenge4: + case ModSettings.GameDifficulty.Challenge4: level = Random.Range(130, 133); break; - case ModSettings.Difficulty.Challenge5: + case ModSettings.GameDifficulty.Challenge5: level = Random.Range(160, 165); break; - case ModSettings.Difficulty.Challenge6: + case ModSettings.GameDifficulty.Challenge6: level = 200; break; - case ModSettings.Difficulty.Hell: + case ModSettings.GameDifficulty.Hell: level = 300; break; } - level = Mathf.CeilToInt(level + extraLevels + ModSettings.EnemyLevelIncrease); + level = Mathf.CeilToInt(level + extraLevels + ModSettings.EnemyLevelIncreaseGlobal); + } diff --git a/Enemies/SpawnMutantsMod.cs b/Enemies/SpawnMutantsMod.cs index f0d9d17..403cd7c 100644 --- a/Enemies/SpawnMutantsMod.cs +++ b/Enemies/SpawnMutantsMod.cs @@ -34,8 +34,8 @@ protected override void OnDestroy() if ((spawnInCave || sinkholeSpawn) && ModSettings.AllowCaveRespawn) { copy.gameObject.SetActive(true); - copy.InvokeRepeating("checkSpawn", 60f * ModSettings.CaveRespawnDelay, 4f); - CotfUtils.Log("Destroying spawner", true); + copy.InvokeRepeating("checkSpawn", ModSettings.CaveRespawnDelay, ModSettings.CaveRespawnDelay); + Utils.Log("Destroying spawner", true); } else if (copy != null) { diff --git a/Enemies/WormHealthMod.cs b/Enemies/WormHealthMod.cs index 7232184..18b6667 100644 --- a/Enemies/WormHealthMod.cs +++ b/Enemies/WormHealthMod.cs @@ -1,4 +1,5 @@ -using ChampionsOfForest.Player; +using ChampionsOfForest.Items; +using ChampionsOfForest.Player; using TheForest.Utils; @@ -50,41 +51,41 @@ protected override void Update() if (GameSetup.IsMpServer || GameSetup.IsSinglePlayer) { long Exp; - switch (ModSettings.difficulty) + switch (ModSettings.Difficulty) { - case ModSettings.Difficulty.Easy: + case ModSettings.GameDifficulty.Easy: Exp = 5000; break; - case ModSettings.Difficulty.Veteran: + case ModSettings.GameDifficulty.Veteran: Exp = 20000; break; - case ModSettings.Difficulty.Elite: + case ModSettings.GameDifficulty.Elite: Exp = 100000; break; - case ModSettings.Difficulty.Master: + case ModSettings.GameDifficulty.Master: Exp = 3000000; break; - case ModSettings.Difficulty.Challenge1: + case ModSettings.GameDifficulty.Challenge1: Exp = 50000000; break; - case ModSettings.Difficulty.Challenge2: + case ModSettings.GameDifficulty.Challenge2: Exp = 100000000; break; - case ModSettings.Difficulty.Challenge3: + case ModSettings.GameDifficulty.Challenge3: Exp = 500000000; break; - case ModSettings.Difficulty.Challenge4: + case ModSettings.GameDifficulty.Challenge4: Exp = 1000000000; break; - case ModSettings.Difficulty.Challenge5: + case ModSettings.GameDifficulty.Challenge5: Exp = 5000000000; break; @@ -113,7 +114,7 @@ protected override void Update() int itemCount = Random.Range(15, 26); for (int i = 0; i < itemCount; i++) { - Network.NetworkManager.SendItemDrop(ItemDataBase.GetRandomItem(Exp,transform.position), LocalPlayer.Transform.position + Vector3.up * 2, ItemPickUp.DropSource.EnemyOnDeath); + Network.NetworkManager.SendItemDrop(ItemDatabase.GetRandomItem(Exp,transform.position), LocalPlayer.Transform.position + Vector3.up * 2, ItemPickUp.DropSource.EnemyOnDeath); } } Destroy(base.gameObject); @@ -147,42 +148,42 @@ protected override void RunExplode() if (collider.transform.root == LocalPlayer.Transform.root) { int damage = 85; - switch (ModSettings.difficulty) + switch (ModSettings.Difficulty) { - case ModSettings.Difficulty.Veteran: + case ModSettings.GameDifficulty.Veteran: damage = 150; break; - case ModSettings.Difficulty.Elite: + case ModSettings.GameDifficulty.Elite: damage = 230; break; - case ModSettings.Difficulty.Master: + case ModSettings.GameDifficulty.Master: damage = 360; break; - case ModSettings.Difficulty.Challenge1: + case ModSettings.GameDifficulty.Challenge1: damage = 1500; break; - case ModSettings.Difficulty.Challenge2: + case ModSettings.GameDifficulty.Challenge2: damage = 5000; break; - case ModSettings.Difficulty.Challenge3: + case ModSettings.GameDifficulty.Challenge3: damage = 12000; break; - case ModSettings.Difficulty.Challenge4: + case ModSettings.GameDifficulty.Challenge4: damage = 20000; break; - case ModSettings.Difficulty.Challenge5: + case ModSettings.GameDifficulty.Challenge5: damage = 30000; break; - case ModSettings.Difficulty.Challenge6: - case ModSettings.Difficulty.Hell: + case ModSettings.GameDifficulty.Challenge6: + case ModSettings.GameDifficulty.Hell: damage = 40000; break; } diff --git a/ExpSources/AnimalExp.cs b/ExpSources/AnimalExp.cs index f07faf3..32266a3 100644 --- a/ExpSources/AnimalExp.cs +++ b/ExpSources/AnimalExp.cs @@ -68,7 +68,7 @@ protected override void Die() if (xp > 82) { if(Random.value < 0.5f) - Network.NetworkManager.SendItemDrop(ItemDataBase.GetRandomItem(xp,transform.position), transform.position + Vector3.up * 4f, ItemPickUp.DropSource.EnemyOnDeath); + Network.NetworkManager.SendItemDrop(ItemDatabase.GetRandomItem(xp,transform.position), transform.position + Vector3.up * 4f, ItemPickUp.DropSource.EnemyOnDeath); } base.Die(); diff --git a/ExpSources/CutEffigyMod.cs b/ExpSources/CutEffigyMod.cs index 268c561..2901bed 100644 --- a/ExpSources/CutEffigyMod.cs +++ b/ExpSources/CutEffigyMod.cs @@ -14,9 +14,9 @@ protected override void CutDown() { long expAmount = 35; ModdedPlayer.instance.AddFinalExperience(expAmount); - if (!GameSetup.IsMpClient && Random.value * ModdedPlayer.Stats.magicFind < 0.5f) + if (!GameSetup.IsMpClient && Random.value * ModdedPlayer.Stats.magicFind_quantity < 0.5f) { - Network.NetworkManager.SendItemDrop(ItemDataBase.GetRandomItem(170*ModdedPlayer.Stats.magicFind.Value, EnemyProgression.Enemy.NormalSkinnyMale,ModSettings.difficulty, transform.position), transform.position + Vector3.up * (1.75f), ItemPickUp.DropSource.Effigy); + Network.NetworkManager.SendItemDrop(ItemDatabase.GetRandomItem(170*ModdedPlayer.Stats.magicFind_quantity.Value, EnemyProgression.Enemy.NormalSkinnyMale,ModSettings.difficulty, transform.position), transform.position + Vector3.up * (1.75f), ItemPickUp.DropSource.Effigy); } if (ModdedPlayer.Stats.perk_doubleStickHarvesting) { diff --git a/ExpSources/FishEX.cs b/ExpSources/FishEX.cs index bc73930..6fcad1f 100644 --- a/ExpSources/FishEX.cs +++ b/ExpSources/FishEX.cs @@ -39,9 +39,9 @@ public void SharkKilled() } if (!GameSetup.IsMpClient) { - Network.NetworkManager.SendItemDrop(ItemDataBase.GetRandomItem(270,transform.position), LocalPlayer.Transform.position + Vector3.up * 6f, ItemPickUp.DropSource.EnemyOnDeath); - Network.NetworkManager.SendItemDrop(ItemDataBase.GetRandomItem(310, transform.position), LocalPlayer.Transform.position + Vector3.up * 6f, ItemPickUp.DropSource.EnemyOnDeath); - Network.NetworkManager.SendItemDrop(ItemDataBase.GetRandomItem(370, transform.position), LocalPlayer.Transform.position + Vector3.up * 6f, ItemPickUp.DropSource.EnemyOnDeath); + Network.NetworkManager.SendItemDrop(ItemDatabase.GetRandomItem(270,transform.position), LocalPlayer.Transform.position + Vector3.up * 6f, ItemPickUp.DropSource.EnemyOnDeath); + Network.NetworkManager.SendItemDrop(ItemDatabase.GetRandomItem(310, transform.position), LocalPlayer.Transform.position + Vector3.up * 6f, ItemPickUp.DropSource.EnemyOnDeath); + Network.NetworkManager.SendItemDrop(ItemDatabase.GetRandomItem(370, transform.position), LocalPlayer.Transform.position + Vector3.up * 6f, ItemPickUp.DropSource.EnemyOnDeath); } } } diff --git a/Fun/Cheats.cs b/Fun/Cheats.cs index be73c9d..7f9af93 100644 --- a/Fun/Cheats.cs +++ b/Fun/Cheats.cs @@ -1,5 +1,6 @@ using System.Linq; +using ChampionsOfForest.Items; using ChampionsOfForest.Player; using TheForest; @@ -37,10 +38,7 @@ public static void Respec() public static void CotfItem(int id, int level) { - Item item = new Item(ItemDataBase.ItemBases[id], 1, 0, false) - { - level = level - }; + Item item = new Item(ItemDatabase.itemLookup[id], level); item.RollStats(); Inventory.Instance.AddItem(item); } @@ -124,7 +122,7 @@ private void _cotfresetpoints(string param) private void _cotflistitems(string param) { string s = ""; - foreach (var item in ItemDataBase.ItemBases) + foreach (var item in ItemDatabase.itemLookup) { s += string.Concat(new object[] { @@ -162,14 +160,14 @@ private void _cotflistperks(string param) private void _cotfliststats(string param) { string s = ""; - foreach (var item in ItemDataBase.Stats) + foreach (var item in ItemDatabase.Stats) { s += string.Concat(new object[] { "[", item.Key, "] ", - item.Value.Name, + item.Value.name, "\n" }); } @@ -180,8 +178,8 @@ private void _cotfliststats(string param) private void _cotfsetdifficulty(string param) { int i = int.Parse(param); - ModSettings.difficulty = (ModSettings.Difficulty)i; - Debug.LogWarning("Difficulty changed to: " + (ModSettings.Difficulty)i); + ModSettings.difficulty = (ModSettings.GameDifficulty)i; + Debug.LogWarning("Difficulty changed to: " + (ModSettings.GameDifficulty)i); } private void _cotfspawnitem(string param) @@ -197,7 +195,7 @@ private void _cotfspawnitem(string param) private void _cotfspawnitembyname(string param) { - var matches = ItemDataBase.ItemBases.Where(x => x.Value.name.ToLower().StartsWith(param)).Select(x => x.Value.ID).ToArray(); + var matches = ItemDatabase.itemLookup.Where(x => x.Value.name.ToLower().StartsWith(param)).Select(x => x.Value.id).ToArray(); if (matches.Length > 0) { CotfCheats.CotfItem(matches[0], ModdedPlayer.instance.level); @@ -207,7 +205,7 @@ private void _cotfspawnitembyname(string param) } private void _cotflogitemdatabase(string param) { - ItemDataBase.LogInfo(); + ItemDatabase.LogInfo(); } private void _sleep(string param) { diff --git a/Items/BaseItem.cs b/Items/BaseItem.cs deleted file mode 100644 index c8f6a39..0000000 --- a/Items/BaseItem.cs +++ /dev/null @@ -1,308 +0,0 @@ -using System.Collections.Generic; - -using ChampionsOfForest.Effects.Sound_Effects; - -using UnityEngine; - -namespace ChampionsOfForest -{ - public class BaseItem - { - public enum ItemType - { - Shield, Quiver, Weapon, Other, Material, Helmet, Boot, Pants, ChestArmor, ShoulderArmor, Glove, Bracer, Amulet, Ring, SpellScroll - } - - public delegate void OnItemEquip(); - - public delegate void OnItemUnequip(); - - public delegate bool OnItemConsume(Item other); - - public List> PossibleStats; - public int Rarity = 0; //rarity to display in different color - public int ID = 0; //the id of an item - public int StackSize = 1; //how many items can be placed in one item slot? - public bool CanConsume = false; //can you eat this bad boy? - public ItemType type = ItemType.Weapon; //determines on which inv slot can this item be placed in - - public enum WeaponModelType { None, GreatSword, LongSword, Hammer, Polearm, Axe, Greatbow }; - - public WeaponModelType weaponModel = WeaponModelType.None; - public OnItemEquip onEquip; - public OnItemUnequip onUnequip; - public OnItemConsume onConsume; - public string name; //name of item, - public string description; //what is this item basically - public string lore; //some cool story to make this item have any sense, or a place for a joke - public string uniqueStat; //what should be displayed in the tooltip of this item - public int level = 1; //level of this item - public int minLevel = 1; - public int maxLevel = 1; - public Texture2D icon; //icon of this item - public bool PickUpAll = true; //should the item be picked one by one, or grab all at once - public int subtype = 0; - - //Drop settings - public EnemyProgression.Enemy lootTable = EnemyProgression.Enemy.All; - - public BaseItem() - { - } - - private readonly int[] commonstatIds = new int[] - { - 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,21,22,23,24,25,26,31,34,35,36,37,38,39,40,41,42,43,44,45,46,47,49,50,51,52,53,54,55,56,57,59,60,61,62,63,64,65,66,67 - }; - - public BaseItem(params int[][] possibleStats) - { - PossibleStats = new List>(); - foreach (int[] a in possibleStats) - { - List list = new List(); - foreach (int statID in a) - { - if (statID == 0) - { - list.Add(null); - } - else if (statID == -1) - { - foreach (int c in commonstatIds) - { - list.Add(new ItemStat(ItemDataBase.Stats[c])); - } - } - else - { - list.Add(new ItemStat(ItemDataBase.Stats[statID])); - } - } - PossibleStats.Add(list); - } - ID = ItemDataBase._Item_Bases.Count; - ItemDataBase._Item_Bases.Add(this); - } - - public BaseItem(params ItemDataBase.Stat[][] possibleStats) - { - PossibleStats = new List>(); - foreach (var statRow in possibleStats) - { - List list = new List(); - foreach (var stat in statRow) - { - int statID = (int)stat; - if (statID == 0) - { - list.Add(null); - } - else if (statID == -1) - { - foreach (int c in commonstatIds) - { - list.Add(new ItemStat(ItemDataBase.Stats[c])); - } - } - else - { - list.Add(new ItemStat(ItemDataBase.Stats[statID])); - } - } - PossibleStats.Add(list); - } - ID = ItemDataBase._Item_Bases.Count; - ItemDataBase._Item_Bases.Add(this); - } - - public BaseItem(List> possibleStats, int rarity, int StackSize, ItemType itemType, string name, string description, string lore, string tooltip, int minlevel, int maxlevel, Texture2D texture, bool pickupAll = false) - { - PossibleStats = possibleStats; - Rarity = rarity; - ID = ItemDataBase._Item_Bases.Count; - this.StackSize = StackSize; - type = itemType; - PickUpAll = pickupAll; - this.name = name; - this.description = description; - this.lore = lore; - this.uniqueStat = tooltip; - this.minLevel = minlevel; - this.maxLevel = maxlevel; - LootsFromAssignDefault(); - ItemDataBase._Item_Bases.Add(this); - icon = texture; - } - - public BaseItem(int[][] possibleStats, int rarity, int StackSize, ItemType itemType, string name, string description, string lore, string tooltip, int minlevel, int maxlevel, Texture2D texture, bool pickupAll = false) - { - PossibleStats = new List>(); - foreach (int[] a in possibleStats) - { - List list = new List(); - foreach (int b in a) - { - list.Add(b == 0 ? null : ItemDataBase.Stats[b]); - } - PossibleStats.Add(list); - } - Rarity = rarity; - ID = ItemDataBase._Item_Bases.Count; - this.StackSize = StackSize; - type = itemType; - PickUpAll = pickupAll; - this.name = name; - this.description = description; - this.lore = lore; - this.uniqueStat = tooltip; - this.minLevel = minlevel; - this.maxLevel = maxlevel; - LootsFromAssignDefault(); - ItemDataBase._Item_Bases.Add(this); - icon = texture; - } - - public BaseItem(int[][] possibleStats, int rarity, int iD, int StackSize, WeaponModelType weaponModel, string name, string description, string lore, string tooltip, int minlevel, int maxlevel, Texture2D texture, bool pickupAll = false) - { - PossibleStats = new List>(); - foreach (int[] a in possibleStats) - { - List list = new List(); - foreach (int b in a) - { - list.Add(b == 0 ? null : ItemDataBase.Stats[b]); - } - PossibleStats.Add(list); - } - Rarity = rarity; - ID = iD; - this.StackSize = StackSize; - type = ItemType.Weapon; - this.weaponModel = weaponModel; - PickUpAll = pickupAll; - this.name = name; - this.description = description; - this.lore = lore; - this.uniqueStat = tooltip; - this.minLevel = minlevel; - this.maxLevel = maxlevel; - LootsFromAssignDefault(); - ItemDataBase._Item_Bases.Add(this); - icon = texture; - } - - /// - /// set to this by default - /// - private void LootsFromAssignDefault() - { - //Lootable from everything - lootTable = (EnemyProgression.Enemy)0b1111111111111111111111; - } - - //Sets the item to drop from only a specyfic group of enemies - public void DropSettings_OnlyArmsy() - { - lootTable = EnemyProgression.Enemy.RegularArmsy | EnemyProgression.Enemy.PaleArmsy; - } - - public void DropSettings_OnlyVags() - { - lootTable = EnemyProgression.Enemy.PaleVags | EnemyProgression.Enemy.RegularVags; - } - - public void DropSettings_OnlyCow() - { - lootTable = EnemyProgression.Enemy.Cowman; - } - - public void DropSettings_OnlyBaby() - { - lootTable = EnemyProgression.Enemy.Baby; - } - - public void DropSettings_OnlyMegan() - { - lootTable = EnemyProgression.Enemy.Megan; - } - - public void DropSettings_OnlyCreepy() - { - lootTable = EnemyProgression.Enemy.RegularArmsy | EnemyProgression.Enemy.PaleArmsy | EnemyProgression.Enemy.RegularVags | EnemyProgression.Enemy.PaleVags | EnemyProgression.Enemy.Cowman | EnemyProgression.Enemy.Baby | EnemyProgression.Enemy.Girl | EnemyProgression.Enemy.Worm | EnemyProgression.Enemy.Megan; - } - - public void DropSettings_OnlyCannibals() - { - lootTable = - EnemyProgression.Enemy.NormalMale | EnemyProgression.Enemy.NormalLeaderMale | EnemyProgression.Enemy.NormalFemale | EnemyProgression.Enemy.NormalSkinnyMale | EnemyProgression.Enemy.NormalSkinnyFemale | EnemyProgression.Enemy.PaleMale | EnemyProgression.Enemy.PaleSkinnyMale | EnemyProgression.Enemy.PaleSkinnedMale | EnemyProgression.Enemy.PaleSkinnedSkinnyMale | EnemyProgression.Enemy.PaintedMale | EnemyProgression.Enemy.PaintedLeaderMale | EnemyProgression.Enemy.PaintedFemale | EnemyProgression.Enemy.Fireman; - } - - public GlobalSFX.SFX GetInvSound() - { - switch (type) - { - case ItemType.Shield: - return GlobalSFX.SFX.Invshiel; - case ItemType.Quiver: - return GlobalSFX.SFX.Invlarm; - case ItemType.Weapon: - switch (weaponModel) - { - case WeaponModelType.GreatSword: - return GlobalSFX.SFX.Invharm; - case WeaponModelType.LongSword: - return GlobalSFX.SFX.Invsword; - case WeaponModelType.Hammer: - return GlobalSFX.SFX.Invanvl; - case WeaponModelType.Polearm: - return GlobalSFX.SFX.Invstaf; - case WeaponModelType.Axe: - return GlobalSFX.SFX.Invaxe; - case WeaponModelType.Greatbow: - return GlobalSFX.SFX.Invbow; - default: - return GlobalSFX.SFX.Invharm; - } - case ItemType.Other: - return GlobalSFX.SFX.Invbody; - case ItemType.Material: - return GlobalSFX.SFX.Invrock; - case ItemType.Helmet: - return GlobalSFX.SFX.Invcap; - case ItemType.Boot: - return GlobalSFX.SFX.Invgrab; //change - case ItemType.Pants: - return GlobalSFX.SFX.Invblst; //change - case ItemType.ChestArmor: - return GlobalSFX.SFX.Invsign; - case ItemType.ShoulderArmor: - return GlobalSFX.SFX.Invharm; //change - case ItemType.Glove: - return GlobalSFX.SFX.Invlarm; //change - case ItemType.Bracer: - return GlobalSFX.SFX.Invbook; //change - case ItemType.Amulet: - return GlobalSFX.SFX.Invring; - case ItemType.Ring: - return GlobalSFX.SFX.Invring; - case ItemType.SpellScroll: - return GlobalSFX.SFX.Invscrol; - default: - return GlobalSFX.SFX.ClickDown; - } - } - - public int GetDropSoundID() - { - int ID = ((int)GetInvSound()) + 1052; - return ID < 1070 ? ID : Random.Range(1050, 1052); - } - - - public float GetInvSoundPitch() - { - return 1.15f - (float)Rarity / 15f; - } - } -} \ No newline at end of file diff --git a/Items/Item.cs b/Items/Item.cs index 647e4b8..c9e7afe 100644 --- a/Items/Item.cs +++ b/Items/Item.cs @@ -1,7 +1,7 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; -using ChampionsOfForest.Items; using ChampionsOfForest.Localization; using ChampionsOfForest.Player; @@ -9,70 +9,96 @@ using UnityEngine; -namespace ChampionsOfForest +using Random = UnityEngine.Random; + +namespace ChampionsOfForest.Items { - public class Item : BaseItem + public class Item : ItemDefinition { - public int Amount; - public bool Equipped; - public List Stats = new List(); - + public int level; + public int stackedAmount; + public bool isEquipped; + public List stats = new List(); + public int currentEmptySockets; + public int currentMaxEmptySockets; + + #region Grouping stats of the same id private Dictionary groupedStats; - private void GroupStats() { var grouped = new Dictionary>(); - foreach (var stat in Stats) + foreach (var stat in stats) { - if (grouped.ContainsKey(stat.StatID)) - grouped[stat.StatID].Add(stat.Amount); + if (grouped.ContainsKey(stat.id)) + grouped[stat.id].Add(stat.amount); else - grouped.Add(stat.StatID, new List() { stat.Amount }); + grouped.Add(stat.id, new List() { stat.amount }); } groupedStats = new Dictionary(grouped.Count); foreach (var group in grouped) { - groupedStats.Add(group.Key, ItemDataBase.StatByID(group.Key).EvaluateTotalIncrease(group.Value)); + groupedStats.Add(group.Key, ItemDatabase.StatByID(group.Key).EvaluateTotalIncrease(group.Value)); } } - public Dictionary GetGroupedStats() { - if (Stats.Count == 0) + if (stats.Count == 0) return null; if (groupedStats == null) GroupStats(); return groupedStats; } + #endregion + + public bool HasEmptySocket => currentEmptySockets > 0; + + public bool PlaceItemInSocket(Item other) + { + if (other == null) + return false; + if (other.type == ItemType.SocketableGem + && HasEmptySocket) + { + if (other.onUsedOnAnotherItemCallback.Invoke(this)) + { + //item was successfully socketed + currentEmptySockets--; + return true; + } + } + return false; + } + // called when another item is dragged and dropped on top of this item public bool CombineItems(Item other) { - //if other is a socketable item + // if other is a material + // materials can be used to upgrade items, reroll their values, etc if (other.type == ItemType.Material) { - if (other.onConsume != null) + if (other.onUsedOnAnotherItemCallback != null) { - if (Equipped) + if (isEquipped) OnUnequip(); - bool returnval = other.onConsume.Invoke(this); + bool returnval = other.onUsedOnAnotherItemCallback.Invoke(this); OnEquip(); return returnval; } - else if (this.Stats.Any(x => x.StatID == 3000)) - { - if (Equipped) - { - OnUnequip(); - } - - int statindex = Stats.FindIndex(x => x.StatID == 3000); - Stats[statindex] = StatActions.GetSocketedStat(other.Rarity, this.type, other.subtype); + } + else if (other.type == ItemType.SocketableGem) + { + bool wasEquipped = isEquipped; + if (isEquipped) + OnUnequip(); + PlaceItemInSocket(other); + if (wasEquipped) OnEquip(); - return true; - } + + return true; } + return false; } @@ -158,12 +184,6 @@ public int destinationSlotID case ItemType.Weapon: return -12; - case ItemType.Other: - return -1; - - case ItemType.Material: - return -1; - case ItemType.Helmet: return -2; @@ -203,36 +223,38 @@ public string TypeName() { switch (this.type) { - case BaseItem.ItemType.Shield: + case ItemDefinition.ItemType.Shield: return Translations.Item_1/*Shield*/; //tr - case BaseItem.ItemType.Quiver: + case ItemDefinition.ItemType.Quiver: return Translations.Item_2/*Quiver*/; //tr - case BaseItem.ItemType.Weapon: + case ItemDefinition.ItemType.Weapon: return Translations.Item_3/*Weapon*/; //tr - case BaseItem.ItemType.Other: + case ItemDefinition.ItemType.Other: return Translations.Item_4/*Other*/; //tr - case BaseItem.ItemType.Material: + case ItemDefinition.ItemType.Material: return Translations.Item_5/*Material*/; //tr - case BaseItem.ItemType.Helmet: + case ItemDefinition.ItemType.Helmet: return Translations.Item_6/*Helmet*/; //tr - case BaseItem.ItemType.Boot: + case ItemDefinition.ItemType.Boot: return Translations.Item_7/*Boots*/; //tr - case BaseItem.ItemType.Pants: + case ItemDefinition.ItemType.Pants: return Translations.Item_8/*Pants*/; //tr - case BaseItem.ItemType.ChestArmor: + case ItemDefinition.ItemType.ChestArmor: return Translations.Item_9/*Chest armor*/; //tr - case BaseItem.ItemType.ShoulderArmor: + case ItemDefinition.ItemType.ShoulderArmor: return Translations.Item_10/*Shoulder armor*/; //tr - case BaseItem.ItemType.Glove: + case ItemDefinition.ItemType.Glove: return Translations.Item_11/*Gloves*/; //tr - case BaseItem.ItemType.Bracer: + case ItemDefinition.ItemType.Bracer: return Translations.Item_12/*Bracers*/; //tr - case BaseItem.ItemType.Amulet: + case ItemDefinition.ItemType.Amulet: return Translations.Item_13/*Amulet*/; //tr - case BaseItem.ItemType.Ring: + case ItemDefinition.ItemType.Ring: return Translations.Item_14/*Ring*/; //tr - case BaseItem.ItemType.SpellScroll: + case ItemDefinition.ItemType.SpellScroll: return Translations.Item_15/*Scroll*/; //tr + case ItemDefinition.ItemType.Consumable: + return "Consumable"; //tr default: return type.ToString(); } @@ -246,183 +268,123 @@ public Item() /// /// creates a item based on a BaseItem object, rolls values /// - public Item(BaseItem b, int amount = 1, int increasedLevel = 0, bool roll = true) - { - base.description = b.description; - base.minLevel = b.minLevel; - base.maxLevel = b.maxLevel; - if (increasedLevel != -1) - { - base.level = Random.Range(minLevel, maxLevel + 1) + increasedLevel; - } - else - { - int averageLevel; - if (GameSetup.IsMultiplayer) - { - int sum = ModReferences.PlayerLevels.Values.Sum(); - int count = ModReferences.PlayerLevels.Values.Count; + /// - if (!ModSettings.IsDedicated) - { - sum += ModdedPlayer.instance.level; - count++; - } - else - { - //ModAPI.Log.Write("Is dedicated server bool set to true."); - } - sum = Mathf.Max(1, sum); - count = Mathf.Max(1, count); - sum /= count; - averageLevel = sum; - } - else - { - averageLevel = ModdedPlayer.instance.level; - } - averageLevel = Mathf.Max(1, averageLevel); - base.level = averageLevel; - } - base.lore = b.lore; - base.name = b.name; - base.onEquip = b.onEquip; - base.onUnequip = b.onUnequip; - base.PossibleStats = b.PossibleStats; - base.Rarity = b.Rarity; - base.uniqueStat = b.uniqueStat; - base.ID = b.ID; - base.type = b.type; - base.StackSize = b.StackSize; - base.icon = b.icon; - base.onConsume = b.onConsume; - base.CanConsume = b.CanConsume; - base.weaponModel = b.weaponModel; - base.lootTable = b.lootTable; - base.subtype = b.subtype; - Amount = amount; - Equipped = false; - Stats = new List(); - if (roll) - { - RollStats(); - } - } - - public float GetRarityMultiplier() + public Item(ItemDefinition itemDefinition, int level) { - switch (Rarity) - { - case 0: - return 0.5f; - - case 1: - return 0.7f; - - case 2: - return 1f; - - case 3: - return 1.4f; - - case 4: - return 2.3f; + this.level = level; + this.minLevel = itemDefinition.minLevel; + this.maxLevel = itemDefinition.maxLevel; + this.lore = itemDefinition.lore; + this.name = itemDefinition.name; + this.onEquipCallback = itemDefinition.onEquipCallback; + this.onUnequipCallback = itemDefinition.onUnequipCallback; + this.statSlots = itemDefinition.statSlots; + this.rarity = itemDefinition.rarity; + this.uniqueStat = itemDefinition.uniqueStat; + this.id = itemDefinition.id; + this.type = itemDefinition.type; + this.stackSize = itemDefinition.stackSize; + this.icon = itemDefinition.icon; + this.onUsedOnAnotherItemCallback = itemDefinition.onUsedOnAnotherItemCallback; + this.subtype = itemDefinition.subtype; + this.lootTable = itemDefinition.lootTable; + this.lootWeight = itemDefinition.lootWeight; + this.stackedAmount = 1; + isEquipped = false; + stats = new List(); + } - case 5: - return 3.4f; + - case 6: - return 4.5f; - case 7: - return 5.6f; - } - return 1; + public float GetRarityMultiplier() + { + return Mathf.Pow(1.3f, (int)rarity); } + public bool isEquippable => destinationSlotID < -1; //rolls 'amount' on every item stat on this object public void RollStats() { groupedStats = null; - Stats.Clear(); - int i = 0; - foreach (List PS in PossibleStats) + stats.Clear(); + float rarityMult = GetRarityMultiplier(); + + for (int i = 0; i < statSlots.Count; i++) { - int random = Random.Range(0, PS.Count); - if (PS[random] != null) + StatSlot statSlot = statSlots[i]; + + if (Random.value <= statSlot.probability) { - ItemStat stat = new ItemStat(PS[random], level); - stat.Amount *= GetRarityMultiplier(); - if (stat.ValueCap != 0) + // roll a random stat from pool + int selected = Random.Range(0, statSlot.options.Count); + + ItemStat newstat = new ItemStat(statSlot.options[selected], level, i, rarityMult); + //if (stats.Any(stat => stat.id == newstat.id)) // if stats should be grouped + //{ + // stats.First(stat => stat.id == newstat.id).amount += newstat.amount; + //} + //else { - stat.Amount = Mathf.Min(stat.Amount, stat.ValueCap); + stats.Add(newstat); } - stat.possibleStatsIndex = i; - Stats.Add(stat); } - i++; } - - if (this.destinationSlotID < -1 && this.level > 20 && Random.value <= 0.175f) + } + public void RollSockets() + { + if (minimumEmptySockets > 0 || (isEquippable && level >= ModSettings.MinimumLevelForSocketsToAppear && Random.value <= ModSettings.ChanceForFirstSocketToAppear)) { - var socketAmount = StatActions.GetMaxSocketAmountOnItem(this.type); - if (socketAmount > 0) + int socketAmount = Math.Max(minimumEmptySockets,1); + + while (Random.value <= ModSettings.ChanceForSubsequentSocketsToAppear && socketAmount < maximumSocketSlots) { - socketAmount = Random.Range(1, socketAmount + 1); - for (int j = 0; j < socketAmount; j++) - { - Stats.Add(new ItemStat(ItemDataBase.StatByID(3000))); - } + socketAmount++; } + + currentMaxEmptySockets = socketAmount; + currentEmptySockets = socketAmount; + } - SortStats(); - } - public void SortStats() - { - Stats = Stats.OrderBy(x => -x.Rarity).ToList(); } public void OnEquip() { - Equipped = true; - foreach (ItemStat item in Stats) + isEquipped = true; + foreach (ItemStat item in stats) { - if (item.Amount != 0) + if (item.amount != 0) { - item.OnEquip?.Invoke(item.Amount); + item.OnEquip?.Invoke(item.amount); } } - onEquip?.Invoke(); + onEquipCallback?.Invoke(); } public void OnUnequip() { - Equipped = false; - foreach (ItemStat item in Stats) + isEquipped = false; + foreach (ItemStat item in stats) { - if (item.Amount != 0) + if (item.amount != 0) { - item.OnUnequip(item.Amount); + item.OnUnequip(item.amount); } } - onUnequip?.Invoke(); + onUnequipCallback?.Invoke(); } - public bool OnConsume() + private readonly static RarityDisplayInfo[] rarityInfos = new RarityDisplayInfo[] { - if (CanConsume) - { - onEquip?.Invoke(); - foreach (ItemStat item in Stats) - { - if (item.Amount != 0) - { - item.OnConsume(item.Amount); - } - } - return true; - } - return false; - } + new RarityDisplayInfo(Rarity.Common, Color.white, Color.white, 0), + new RarityDisplayInfo(Rarity.Uncommon, new Color(0.1f,1f,0.1f), new Color(0.1f,1f,0.1f), 0.2f), + new RarityDisplayInfo(Rarity.Magic, new Color(0.1f,0.5f,1f), new Color(0.1f,0.5f,1f), 0.4f), + new RarityDisplayInfo(Rarity.Rare, new Color(1f,1f,0.0f), new Color(1f,1f,0.0f), 0.6f), + new RarityDisplayInfo(Rarity.Legendary, new Color(0.94f,0.05f,0.05f), new Color(0.94f,0.05f,0.05f), 1f), + }; + public Color RarityColor => rarityInfos[(int)rarity].color; + public Color GlowColor => rarityInfos[(int)rarity].glowColor; + public float GlowIntensity => rarityInfos[(int)rarity].glowIntensity; } } \ No newline at end of file diff --git a/Items/ItemDataBase.cs b/Items/ItemDataBase.cs index 48c9be2..2a89476 100644 --- a/Items/ItemDataBase.cs +++ b/Items/ItemDataBase.cs @@ -1,187 +1,102 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.IO; using System.Linq; -namespace ChampionsOfForest +using static ChampionsOfForest.Items.ItemDefinition; +using static TheForest.Items.World.PickUp; + +namespace ChampionsOfForest.Items { - public static partial class ItemDataBase + public static partial class ItemDatabase { - public static List _Item_Bases; - public static Dictionary ItemBases; - public static List statList; + internal static Dictionary> ItemTemplateStorage; + public static Dictionary itemLookup; public static Dictionary Stats; - private static Dictionary> ItemRarityGroups; + private static Dictionary> ItemRarityGroups; //Called from Initializer public static void Initialize() { - _Item_Bases = new List(); - ItemBases = new Dictionary(); - statList = new List(); + ItemTemplateStorage = Enum.GetValues(typeof(ItemDefinition.ItemType)) + .Cast() + .ToDictionary(k => k, v => new List()); + + itemLookup = new Dictionary(); Stats = new Dictionary(); - ItemRarityGroups = new Dictionary>(); + ItemRarityGroups = new Dictionary>(); + PopulateStats(); - for (int i = 0; i < statList.Count; i++) - { - Stats.Add(statList[i].StatID, statList[i]); - } + try { - PopulateItems(); + AddAmulets(); + AddBoots(); + AddBracers(); + AddChestArmors(); + AddConsumables(); + AddGloves(); + AddHelmets(); + AddMaterials(); + AddPants(); + AddQuivers(); + AddRings(); + AddShields(); + AddShoulderArmor(); + AddSpellScrolls(); + + SanitizeItems(); } catch (System.Exception ex) { - CotfUtils.Log("Error with item " + ex.ToString()); - } - ItemBases.Clear(); - for (int i = 0; i < _Item_Bases.Count; i++) - { - try - { - ItemBases.Add(_Item_Bases[i].ID, _Item_Bases[i]); - if (ItemRarityGroups.ContainsKey(_Item_Bases[i].Rarity)) - { - ItemRarityGroups[_Item_Bases[i].Rarity].Add(_Item_Bases[i].ID); - } - else - { - ItemRarityGroups.Add(_Item_Bases[i].Rarity, new List() { _Item_Bases[i].ID }); - } - } - catch (System.Exception ex) - { - ModAPI.Log.Write("Error with adding an item " + ex.ToString()); - } + Utils.Log("Error with item " + ex.ToString()); } + itemLookup.Clear(); - //LogInfo(); - } - - /// - /// Prints a pretty summary to a log file - /// - public static void LogInfo() - { - string s = "There are " + Stats.Count + " stats:\n"; - for (int i = 0; i < 8; i++) + for (int i = 0; i < (int) Rarity.Max; i++) { - ItemStat[] stats = statList.Where(a => a.Rarity == i).ToArray(); - s += " • Rarity tier of stat[" + i + "] = " + stats.Length; - foreach (ItemStat a in stats) - { - s += "\n\t • Stat \"" + a.Name + " ID [" + a.StatID + "]\""; - } - s += "\n"; - } - s += "\n\n\n There are " + ItemBases.Count + " items:\n"; - for (int i = 0; i < 8; i++) - { - BaseItem[] items = _Item_Bases.Where(a => a.Rarity == i).ToArray(); - s += " • Rarity tier of item [" + i + "] = " + items.Length; - foreach (BaseItem a in items) - { - s += "\n\t • Item \"" + a.name + " ID [" + a.ID + "]\""; - } - s += "\n"; - } + ItemRarityGroups.Add(i, new List()); - s += "\n\n\nItem types:"; - System.Array array = System.Enum.GetValues(typeof(BaseItem.ItemType)); - for (int i = 0; i < array.Length; i++) - { - BaseItem.ItemType t = (BaseItem.ItemType)array.GetValue(i); - - BaseItem[] items = _Item_Bases.Where(a => a.type == t).ToArray(); - - s += "\n • Item type: [" + t.ToString() + "] = " + items.Length; - for (int b = 0; b < 8; b++) - { - BaseItem[] items2 = items.Where(a => a.Rarity == b).ToArray(); - s += "\n\t\t • RARITY " + b + " \"" + items2.Length + "\""; - } - - foreach (BaseItem a in items) - { - s += "\n\t • Item \"" + a.name + " ID [" + a.ID + "] RARITY [" + a.Rarity + "]\""; - } - s += "\n"; } - - ModAPI.Log.Write(s); - - - var f = File.CreateText("items.csv"); - f.WriteLine("ITEMS;" + ItemBases.Count); - for (int i = 0; i <=(int)BaseItem.ItemType.SpellScroll; i++) + foreach (KeyValuePair> kvPair in ItemTemplateStorage) { - BaseItem.ItemType t = (BaseItem.ItemType)i; - var itemsByType = _Item_Bases.Where(a => a.type== t); - f.WriteLine(t+";" + itemsByType.Count()); - - if (t == BaseItem.ItemType.Weapon) + List items = kvPair.Value; + foreach (ItemDefinition item in items) { - for (int j = 1; j <= (int)BaseItem.WeaponModelType.Greatbow; j++) - { - var weapons = itemsByType.Where(a => a.weaponModel == (BaseItem.WeaponModelType)j).OrderBy(a => a.ID + a.Rarity * 100000); - f.WriteLine(((BaseItem.WeaponModelType)j) + ";" + weapons.Count()); - f.WriteLine("ID;RARITY;NAME;UNIQUE STAT;MIN LEVEL; MIN STATS QUANTITY;MAX STATS QUANTITY"); - foreach (var weapon in weapons) - { - f.WriteLine(weapon.ID + ";" + weapon.Rarity + ";" + weapon.name + ";" + weapon.uniqueStat + " ;" + weapon.minLevel + ";" + weapon.PossibleStats.Count(y => !y.Contains(null)) + ";" + weapon.PossibleStats.Count); - - } - f.WriteLine(" "); - - } + ItemRarityGroups[(int)item.rarity].Add(item); + itemLookup.Add(item.id, item); } - else - { - itemsByType = itemsByType.OrderBy(a => a.ID + a.Rarity * 100000); - f.WriteLine("ID;RARITY;NAME;UNIQUE STAT;MIN LEVEL; MIN STATS QUANTITY;MAX STATS QUANTITY"); - foreach (var item in itemsByType) - { - f.WriteLine(item.ID + ";" + item.Rarity + ";" + item.name + ";" + item.uniqueStat + " ;" + item.minLevel + ";" + item.PossibleStats.Count(y => !y.Contains(null)) + ";" + item.PossibleStats.Count); - } - f.WriteLine(" "); - } } - - - f.Close(); - } - - public static void AddItem(BaseItem item) - { - _Item_Bases.Add(item); } - - public static void AddStat(ItemStat item) - { - statList.Add(item); - } - + public static ItemStat StatByID(int id) { - return ItemDataBase.Stats[id]; - } - - public static BaseItem ItemBaseByName(string name) - { - return ItemBases.Values.First(x => x.name == name); + return ItemDatabase.Stats[id]; } - public static void AddPercentage(ref float variable1, float f) + public static ItemDefinition ItemBaseByName(string name) { - variable1 += ((1 - variable1) * f); + return itemLookup.Values.First(x => x.name == name); } - public static void RemovePercentage(ref float variable1, float f) + private static void SanitizeItems() { - variable1 -= ((1 - variable1) * f); + foreach (var keyValuePair in itemLookup) + { + var itemDef = keyValuePair.Value; + if (itemDef.lootTable == EnemyProgression.Enemy.All) + { + itemDef.lootTable = (EnemyProgression.Enemy)0b11111111111111111111111; + } + if (itemDef.lootWeight <= 0) + { + itemDef.lootWeight = ItemDefinition.DefaultLootWeight; + } + } } } } \ No newline at end of file diff --git a/Items/ItemDataBase_ItemDefinitions.cs b/Items/ItemDataBase_ItemDefinitions.cs deleted file mode 100644 index 4bab350..0000000 --- a/Items/ItemDataBase_ItemDefinitions.cs +++ /dev/null @@ -1,7982 +0,0 @@ -using System.Linq; - -using ChampionsOfForest.Items; -using ChampionsOfForest.Items.Sets; -using ChampionsOfForest.Localization; -using ChampionsOfForest.Player; - -using static ChampionsOfForest.ItemDataBase.Stat; - -namespace ChampionsOfForest -{ - public static partial class ItemDataBase - { - public static void PopulateItems() - { - new BaseItem(new int[][] - { - new int[] { 34 }, - new int[] {43,0,39,59,67 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_1/*Broken Flip-Flops*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_2/*A pair of damaged shoes. Judging by their condition, i can imagine what happened to their owner.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_3/*Worn by one of the passengers of the plane that Eric also flew in.*/, //tr - Rarity = 0, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }; - new BaseItem(new int[][] - { - new int[] {34 }, - new int[] {34,0,40,41 }, - new int[] {43 }, - new int[] {43,0 ,67 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_4/*Old Boots*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_5/*A pair of old boots. They must have been lying here for ages.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_6/*Found on the Peninsula, but judging by their condition, they belong neither to a plane passenger nor a cannibal.*/, //tr - Rarity = 0, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }; - new BaseItem(new int[][] - { - new int[] {34 }, - new int[] {34,40,41 }, - new int[] {43,3,2 }, - new int[] {43,65,67 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_7/*Damaged Leather Boots*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_8/*A pair of leather boots. They look good and have only some scratches.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_9/*They arrived to the Peninsula the same way Eric did. Since they were in a baggage, they avoided a lot of damage.*/, //tr - Rarity = 1, - minLevel = 1, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }; - new BaseItem(new int[][] - { - new int[] {34 }, - new int[] {3,2 }, - new int[] {43,3,2,1,4 }, - new int[] {43,65,67 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_10/*Sturdy Leather Boots*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_11/*A pair of leather boots. They are in a very good condition.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_12/*They arrived to the Peninsula the same way Eric did. Eric found them undamaged in their original box. They still had a pricetag - $419,99.*/, //tr - Rarity = 2, - minLevel = 7, - maxLevel = 12, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }; - new BaseItem(new int[][] - { - new int[] {34 }, - new int[] {34,39,41,11,57 }, - new int[] {-1}, - new int[] {16,7,8 }, - new int[] {43,65,67 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_13/*Damaged Army Boots*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_14/*Sturdy, hard, resistant but damaged boots.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_15/*They look modern, almost too modern for everything here.*/, //tr - Rarity = 3, - minLevel = 4, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }; - new BaseItem(new int[][] - { - new int[] {34 }, - new int[] {34,3,2,11 }, - new int[] {-1}, - new int[] {16,7,8 }, - new int[] {43,65,67 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_16/*Army Boots*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_17/*Sturdy, hard, resistant boots.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_15/*They look modern, almost too modern for everything here.*/, //tr - Rarity = 4, - minLevel = 10, - maxLevel = 14, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }; - new BaseItem(new int[][] - { - new int[] {25,22 }, - new int[] {11,1,3,17 }, - new int[] {22,1,3,17 }, - new int[] {28,1,65 }, - new int[] {-1 }, - new int[] {5,6,16,31,7,8,9,10 }, - new int[] {5,6,16,31,7,8,9,10 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_18/*Armsy Skin Footwear*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_19/*Severed armsy legs, with all of their insides removed. All thats left is dried mutated skin.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_20/*Armsy, the second heaviest of the mutants needs very resistant skin. It often drags its legs on the ground when it moves. The skin on their legs grew very thick, and has bone tissue mixed with skin tissue.*/, //tr - Rarity = 6, - minLevel = 5, - maxLevel = 8, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }.DropSettings_OnlyArmsy(); - new BaseItem(new int[][] - { - new int[] {42,0 }, - new int[] {40,41,26,25,67 }, - new int[] {43,65,0 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_21/*Finger Warmer*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_22/*A little glove to keep your fingers warm and cozy.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_23/*Made of wool.*/, //tr - Rarity = 0, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new int[][] - { - new int[] {39,40,41,42,43,24,25,26 }, - new int[] {39,40,41,42,43,24,25,26,44 }, - new int[] {43,0,7,0,5,6,8,0,21,22,23,16,67 }, - new int[] {43,0,7,0,5,6,8,0,0,0,0,21,22,23,65,66,67 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_24/*Thick Rubber Glove*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_25/*A glove that helps get a better grip.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_23/*Made of wool.*/, //tr - Rarity = 1, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new int[][] - { - new int[] {39,40,41,42}, - new int[] {39,40,41,42}, - new int[] {1,2,3,4,5,6,7}, - new int[] {0,18,14}, - new int[] {-1 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_26/*Tribal Glove*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_27/*Offers medicore protection.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_28/*Glove made out of thin bones, some may possibly be from a human.*/, //tr - Rarity = 3, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new int[][] - { - new int[] {1,2,4,6,8,9}, - new int[] {1,11,65}, - new int[] {21,22,23}, - new int[] {12,13,15}, - new int[] {12,13,24,25,26}, - new int[] {24,25,26,44,35}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_29/*Tribe Leader Glove*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_30/*A glove that offers little protection but a lot of offensive stats.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_31/*A glove made of bones, some have engravings of crosses.*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 4, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new int[][] - { - new int[] {43,0 }, - new int[] {43,39,40,41,42 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_32/*Worn Shorts*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_33/*Some protection for legs.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_34/*Short, made out of cheap thin fabric, and on top of that they are damaged. But its better than nothing.*/, //tr - Rarity = 0, - minLevel = 1, - maxLevel = 4, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - new BaseItem(new int[][] - { - new int[] {1000,1001,1002}, - new int[] {1000,1001,1002,1003,1004,0,0,0,0}, - new int[] {8,9,0,0,0,0 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_35/*Cargo Shorts*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_36/*No protection at all but they allow to carry more items.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_37/*They are ugly as hell tho*/, //tr - Rarity = 1, - minLevel = 1, - maxLevel = 4, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - new BaseItem(new int[][] - { - new int[] {5 }, - new int[] {43,16,0,41 }, - new int[] {39,40,41,42,43,44,0,0,0,0,0,0,1003,1004}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_38/*Passenger's Jacket*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_39/*It's a little torn. */, //tr - lore = Translations.ItemDataBase_ItemDefinitions_40/*This jacket was worn by Preston A. the 34th passenger on the plane. Eric talked to him at the airport. Guy was odd, and now he's dead.*/, //tr - Rarity = 0, - minLevel = 1, - maxLevel = 4, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - new BaseItem(new int[][] - { - new int[] {5 }, - new int[] {1,2,3,4,5,6,65}, - new int[] {43,16,0,41,3,2,1 }, - new int[] {6,7,8,9,10,16,17,31, }, - new int[] {39,40,41,42,43,44,0,0,0,0,0,0,1003,1004}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_41/*Leather Jacket*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_42/*Offers little protection*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_43/*This jacket was in a baggage of one of the plane passengers*/, //tr - Rarity = 1, - minLevel = 4, - maxLevel = 7, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - new BaseItem(new int[][] - { - new int[] {5,3,1 }, - new int[] {5 }, - new int[] {16}, - new int[] {7,11 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_44/*Boar Skin Armor*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_45/*It's made from a skin of a huge individual. It's heavy and thick, and surely can protect from attacks of weaker enemies.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_46/*Boar, one of the animals on the peninsula, is rather rare and it's skin is very durable.*/, //tr - Rarity = 1, - minLevel = 4, - maxLevel = 8, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - new BaseItem(new int[][] - { - new int[] {5 }, - new int[] {5,3,4,2,1 }, - new int[] {14,0,0,0 }, - new int[] {6,8,9}, - new int[] {6,8,9}, - new int[] {12,13,0,65,66 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_47/*Crocodile Skin Armor*/, //tr - Rarity = 2, - minLevel = 7, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - BaseItem baseItem1 = new BaseItem(new int[][] - { - new int[] {5 }, - new int[] {16 }, - new int[] {18,17,16}, - new int[] {11}, - new int[] {65,0}, - new int[] {12,13,1,2,3,4}, - new int[] {25,22,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_48/*Plate armour*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 5, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - baseItem1.PossibleStats[1][0].Multipier = 2.5f; - new BaseItem(new int[][] - { - new int[] {5 }, - new int[] {65 }, - new int[] {16}, - new int[] {16,43}, - new int[] {16,0,43}, - new int[] {6,8,9}, - new int[] {45,43,39,42}, - new int[] {7,10,11,17,18,31,66}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_49/*Bear Skin Armor*/, //tr - Rarity = 3, - minLevel = 7, - maxLevel = 8, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - new BaseItem(new int[][] - { - new int[] {5 }, - new int[] {12,13}, - new int[] {13,23,26}, - new int[] {23,26}, - new int[] {34,2,2}, - new int[] {15,14}, - new int[] {16,23,4,5,6,66}, - new int[] {16,23,4,5,6,0,0,0,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_50/*Archer's Gear*/, //tr - Rarity = 5, - minLevel = 7, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - new BaseItem(new int[][] - { - new int[] {5 }, - new int[] {23,26,2 }, - new int[] {23,26 }, - new int[] {12,13}, - new int[] {13,23,26}, - new int[] {23,26}, - new int[] {34,2,2}, - new int[] {15,14}, - new int[] {16,23,4,5,6}, - new int[] {45,46,66}, - new int[] {27,48}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_51/*Hazard's Gear*/, //tr - Rarity = 6, - minLevel = 5, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - new BaseItem(new int[][] - { - new int[] {47 }, - new int[] {4,29 }, - new int[] {4,29 }, - new int[] {4,29 }, - new int[] {4,17,6,44,38,21,24,8,9}, - new int[] {4,17,6,44,38,21,24,8,9}, - new int[] {4,17,6,44,38,21,24,8,9}, - new int[] {4,17,6,44,38,21,24,8,9}, - new int[] {4,17,6,44,38,21,24,8,9}, - new int[] {4,17,6,44,38,21,24,8,9}, - new int[] {4,17,6,44,38,21,24,8,9}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_52/*Mysterious robe*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_53/*Magic flows through the entirety of this object. It's made out of unknown material*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_54/*Robe looks like it was created yesterday, but its older than the oldest of mankinds' civilizations. Simply looking at it sends chills down the spine.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_55/*Empowers cataclysm. The vortex turns blue, damage is increased, freezes enemies */, //tr - Rarity = 7, - minLevel = 15, - maxLevel = 20, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - onEquip = () => ModdedPlayer.Stats.spell_cataclysmArcane.value = true, - onUnequip = () => ModdedPlayer.Stats.spell_cataclysmArcane.value = false - }; - new BaseItem(new int[][] - { - new int[] {39,40,41,42,44,8,14,49 }, - new int[] {39,40,41,42,44,8,14,49 }, - new int[] {0,62,63,64}, - new int[] {1,0,65}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_56/*Rusty Longsword*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_57/*A long, very heavy sword. Edge got dull over time. Still, it's in a condition that allows me to slice some enemies in half.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_58/*The sword appears to be from medieval ages, through it's not. It was made a lot later. It never was used as a weapon in battles, because it was merely a decoration.*/, //tr - Rarity = 3, - minLevel = 13, - maxLevel = 15, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.LongSword, - icon = Res.ResourceLoader.GetTexture(89), - }; - new BaseItem(new int[][] - { - new int[] {25 }, - new int[] {25 ,62,63,64}, - new int[] {6,49}, - new int[] {22,0,25,1,2,3,4}, - new int[] {1,2,3,4}, - new int[] {39,40,41,42,44,8,18,65 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_59/*Longsword*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_60/*Sharp and long*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_61/*The sword is in perfect contidion.*/, //tr - Rarity = 4, - minLevel = 20, - maxLevel = 27, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.LongSword, - icon = Res.ResourceLoader.GetTexture(89), - }; - new BaseItem(new int[][] - { - new int[] {25 }, - new int[] {6,49}, - new int[] {22,0,25,1,2,3,4}, - new int[] {1,2,3,4,8}, - new int[] {1,2,3,4,8}, - new int[] {5,6,45,46,16,8}, - new int[] {39,40,41,42,44,8 }, - new int[] {39,40,41,42,44,8,62,63,64 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_62/*Full Metal Sword*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_63/*It's sooo big...*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_64/*A normal human cannot lift this.*/, //tr - Rarity = 6, - minLevel = 50, - maxLevel = 52, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.GreatSword, - icon = Res.ResourceLoader.GetTexture(88), - }; - new BaseItem(new int[][] - { - new int[] {25,1,3 }, - new int[] {25,22,1,3 }, - new int[] {25,22,0,0,0,0 }, - new int[] {49 }, - new int[] {14 }, - new int[] {14,1 }, - new int[] {14,31,49 }, - new int[] {14,18,49 }, - new int[] {38,36,1,3,4,5,6,16 ,62,63,64}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_65/*The Leech*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_66/*Hey where did my health g- oh it's back...*/, //tr - Rarity = 6, - minLevel = 60, - maxLevel = 61, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.GreatSword, - icon = Res.ResourceLoader.GetTexture(88), - }; - new BaseItem(new int[][] - { - new int[] {1,2,3,4 }, - new int[] {1,2,3,15,4,0,0,0 }, - new int[] {12,13,1,2,3,4,5, }, - new int[] {18,16,23,26,19 }, - new int[] {18,16,23,26 }, - new int[] {34,44,45,46 }, - new int[] {2,23,26}, - new int[] {2,23,26,51}, - new int[] {2,23,26,20,16,15,60}, - new int[] {52,66,60,0,0}, - new int[] {66}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_67/*Smokey's Sacred Quiver*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_68/*SmokeyTheBear died because he never used this item.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_69/*Smokey was the friend of allmighty Hazard, who can materialize any kind of weapon at the snap of his fingers. Hazard remebered Smokey's favourite playstyle and he gave him this as a gift to purge the sh** out of mutants.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_70("250%", "500%")/*Crossbows operate at 250% speed and deal 400% increased damage*/, //tr - Rarity = 7, - minLevel = 5, - maxLevel = 8, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Quiver, - icon = Res.ResourceLoader.GetTexture(98), - onEquip = () => { ModdedPlayer.Stats.i_SmokeyCrossbowQuiver.value = true; ModdedPlayer.Stats.perk_crossbowDamageMult.Multiply(5); }, - onUnequip = () => - { - ModdedPlayer.Stats.i_SmokeyCrossbowQuiver.value = false; - ModdedPlayer.Stats.perk_crossbowDamageMult.Divide(5); - }, - }; - new BaseItem(new int[][] - { - new int[] {0,42 }, - new int[] {50 }, - new int[] {43,16 }, - new int[] {1,0 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_71/*Broken shield*/, //tr - Rarity = 0, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - }; - new BaseItem(new int[][] - { - new int[] {1,2,3,4,0,42 }, - new int[] {0,42 }, - new int[] {50 }, - new int[] {1,0 }, - new int[] {43,16 }, - new int[] {43,16,0,0 }, - }) - { - name = Translations.Item_1/*Shield*/, //tr - Rarity = 1, - minLevel = 3, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - }; - new BaseItem(new int[][] - { - new int[] {16}, - new int[] {16}, - new int[] {16}, - new int[] {16,0}, - new int[] {16,0,45,46}, - new int[] {0,42,11 }, - new int[] {50 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_72/*Tower Shield*/, //tr - Rarity = 3, - minLevel = 5, - maxLevel = 8, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - }; - new BaseItem(new int[][] - { - new int[] {5,6,7,8,0,0,0}, - new int[] {43}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_73/*Broken Leather Shoulder Armor*/, //tr - Rarity = 0, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - }; - new BaseItem(new int[][] - { - new int[] {5,6,7,8}, - new int[] {43}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_74/*Leather Shoulder Armor*/, //tr - Rarity = 1, - minLevel = 2, - maxLevel = 5, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - }; - new BaseItem(new int[][] - { - new int[] {16}, - new int[] {1,2,3,4}, - new int[] {17}, - new int[] {17}, - new int[] {8,9,49,47}, - new int[] {8,9,49,47}, - new int[] {16,18,11,34}, - new int[] {37,34}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_75/*Phase Pauldrons*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_76/*The distance of blink is increased by 40 meters, and blink now hits everything that you teleported through*/, //tr - Rarity = 7, - minLevel = 5, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - onEquip = () => { ModdedPlayer.Stats.spell_blinkRange.Add(40); ModdedPlayer.Stats.spell_blinkDamage.Add(60); }, - onUnequip = () => { ModdedPlayer.Stats.spell_blinkRange.Substract(40); ModdedPlayer.Stats.spell_blinkDamage.Substract(60); }, - }; - new BaseItem(new int[][] - { - new int[] {39,49,5,6,7,8,0,0,0}, - new int[] {43,0}, - new int[] {43}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_77/*MAGA Cap*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_78/*Wearing this item channels the power of D.Trump to you*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_79/*... or does it?*/, //tr - Rarity = 1, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - new BaseItem(new int[][] - { - new int[] {2000}, - new int[] {2001}, - new int[] {2002}, - new int[] {2003}, - new int[] {16}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {1,2,3,4}, - new int[] {21,6}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_80/*Hubble's Vision*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_81/*Wearing this item empowers your black hole spell*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_82/*Man, fuck gravity.*/, //tr - Rarity = 6, - minLevel = 10, - maxLevel = 11, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - new BaseItem(new int[][] - { - new int[] {39,40,41,42,43,12,13}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_83/*Broken Loop*/, //tr - Rarity = 0, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), - }; - new BaseItem(new int[][] - { - new int[] {-1}, - new int[] {39,40,41,42,43,12,13}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_84/*Loop*/, //tr - Rarity = 1, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), - }; - new BaseItem(new int[][] - { - new int[] {63}, - new int[] {-1}, - new int[] {39,40,41,42,43,12,13,5,6,7,8,9,12,13,15,16,17,18,10,11}, - new int[] {1,2,3,4,21,22,23,24,25,26,43,12,13}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_85/*Toxic Ring*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_87/*What the fuck did you just fucking say about me, you little bitch? I'll have you know I graduated top of my class in the Navy Seals, and I've been involved in numerous secret raids on Al-Quaeda, and I have over 300 confirmed kills. I am trained in gorilla warfare and I'm the top sniper in the entire US armed forces. You are nothing to me but just another target. I will wipe you the fuck out with precision the likes of which has never been seen before on this Earth, mark my fucking words. You think you can get away with saying that shit to me over the Internet? Think again, fucker. As we speak I am contacting my secret network of spies across the USA and your IP is being traced right now so you better prepare for the storm, maggot. The storm that wipes out the pathetic little thing you call your life. You're fucking dead, kid. I can be anywhere, anytime, and I can kill you in over seven hundred ways, and that's just with my bare hands. Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the United States Marine Corps and I will use it to its full extent to wipe your miserable ass off the face of the continent, you little shit. If only you could have known what unholy retribution your little /'clever\' comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo."*/, //tr - Rarity = 3, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), - }; - new BaseItem(new int[][] - { - new int[] {39,40,41,42,43}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_88/*Scarf*/, //tr - Rarity = 1, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(100), - }; - new BaseItem(new int[][] - { - new int[] {39,40,41,42,43}, - new int[] {43}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_89/*Damaged Bracer*/, //tr - Rarity = 0, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - }; - new BaseItem(new int[][] - { - new int[] {39,40,41,42,43}, - new int[] {43}, - new int[] {16}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_90/*Worn Bracer*/, //tr - Rarity = 1, - minLevel = 3, - maxLevel = 10, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - }; - new BaseItem(new int[][] - { - new int[] {39,40,41,42,43}, - new int[] {16}, - new int[] {-1}, - new int[] {5,6,7,8,9,10}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_91/*Leather Bracer*/, //tr - Rarity = 2, - minLevel = 4, - maxLevel = 10, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(94), - }; - new BaseItem(new int[][] - { - new int[] {32}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_92/*Greater Mutated Heart*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_93/*Can be consumed by right clicking it*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = true, - StackSize = 100, - type = BaseItem.ItemType.Other, - icon = Res.ResourceLoader.GetTexture(105), - }; - new BaseItem(new int[][] - { - new int[] {33}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_94/*Lesser Mutated Heart*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_93/*Can be consumed by right clicking it*/, //tr - Rarity = 5, - minLevel = 1, - maxLevel = 6, - CanConsume = true, - StackSize = 1, - type = BaseItem.ItemType.Other, - icon = Res.ResourceLoader.GetTexture(105), - }; - new BaseItem(new int[][] - { - new int[] {1,2}, - new int[] {1,2,3,5,6}, - new int[] {65}, - new int[] {-1}, - new int[] {-1}, - new int[] {53,54}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_95/*Spiked ring*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_96/*Armor piercing for either melee or ranged weapons*/, //tr - Rarity = 4, - minLevel = 10, - maxLevel = 16, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), - }; - - new BaseItem(new int[][] - { - new int[] {1,2,3,4,5,6}, - new int[] {1,2,3,4,5,6,65}, - new int[] {-1}, - new int[] {-1 }, - new int[] {1,2,3,4,21,22,23,24,25,26,18,16}, - new int[] {55}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_97/*Piercer*/, //tr - Rarity = 4, - minLevel = 11, - maxLevel = 15, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), - }; - new BaseItem(new int[][] - { - new int[] {59 }, - new int[] {21 }, - new int[] {34,0,40,41 }, - new int[] {16,34}, - new int[] {12 }, - new int[] {-1 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_98/*Moon Boots*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_99/*A pair of boots from the moon.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_100/*It is said that the wearer will not take fall damage while wearing these boots and will jump like on the moon, I wouldn't trust it tough.*/, //tr - Rarity = 4, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 10, - maxLevel = 14, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), //icon ids, don't worry about that - }; - new BaseItem(new int[][] - { - new int[] {1}, - new int[] {1,57,18,36}, - new int[] {12,13,1}, - new int[] {22,25,1}, - new int[] {22,25,1}, - new int[] {50,53,35}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_101/*Golden Ring of Strength*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_103/*A Golden Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 10, - maxLevel = 14, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - new BaseItem(new int[][] - { - new int[] {3}, - new int[] {3,31,6,7,8,9}, - new int[] {5,3,41,45}, - new int[] {7,10,31,14}, - new int[] {14,16,11,17}, - new int[] {65,57,45,46}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_104/*Golden Ring of Vitality*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_103/*A Golden Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 10, - maxLevel = 14, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {2}, - new int[] {12,13,8,9, }, - new int[] {15,18,34,36}, - new int[] {23,48,54,26,59,55,16}, - new int[] {6,57,2,34,}, - new int[] {52,66,51,2,23} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_105/*Golden Ring of Agility*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_103/*A Golden Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 10, - maxLevel = 20, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - new BaseItem(new int[][] - { - new int[] {4}, - new int[] {12,13,21,24,6}, - new int[] {12,13,21,24}, - new int[] {19,47,49}, - new int[] { 37,38,4,24,61,44}, - new int[] { 57,44,6,24,21,47} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_106/*Golden Ring of Intelligence*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_103/*A Golden Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 10, - maxLevel = 20, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - //Silver Rings--------------------------------------------------------------------------- - new BaseItem(new int[][] - { - new int[] {1}, - new int[] {22,25,12,13}, - new int[] {35,50,53}, - new int[] {20,0,0,0} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_107/*Silver Ring of Strength*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_108/*A Silver Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 4, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 5, - maxLevel = 20, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {3}, - new int[] {7,10,31,5, }, - new int[] {11,17,0}, - new int[] {14,16,45}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_109/*Silver Ring of Vitality*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_108/*A Silver Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 4, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 5, - maxLevel = 8, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {2}, - new int[] {12,13,51,8,9, }, - new int[] {15,18,34,36,0}, - new int[] {23,48,54,26,6,57,0,0,0 } - }) - { - name = Translations.ItemDataBase_ItemDefinitions_110/*Silver Ring of Agility*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_108/*A Silver Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 4, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 5, - maxLevel = 20, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {4}, - new int[] { 12, 13, 21, 24,12, 13,21,24,0}, - new int[] {19,47,49,6}, - new int[] { 57,37,38,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_111/*Silver Ring of Intelligence*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_108/*A Silver Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 4, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 5, - maxLevel = 20, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - - //Steel Rings------------------------------------------------------------------- - new BaseItem(new int[][] - { - new int[] {1}, - new int[] {12,13,65}, - new int[] {22,25, 57,35,50,53,20}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_112/*Steel Ring of Strength*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_113/*A Steel Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 1, - maxLevel = 6, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {3}, - new int[] {7,10,31,5,65}, - new int[] {14,16, 45,11,17,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_114/*Steel Ring of Vitality*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_113/*A Steel Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 1, - maxLevel = 6, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {2}, - new int[] {8,9, 12,13,51,57}, - new int[] {23,54,26,59,18,34}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_115/*Steel Ring of Agility*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_113/*A Steel Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 1, - maxLevel = 10, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {4}, - new int[] {12,13,21,24,6}, - new int[] {19,47,49,57,37,38,21,24}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_116/*Steel Ring of Intelligence*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_113/*A Steel Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 1, - maxLevel = 6, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - - //One Ring to rule them all---------------------------------------------------------- - - new BaseItem(new int[][] - { - new int[] {1,3,2,4}, - new int[] {12,13}, - new int[] {22,25,30,}, - new int[] {35,50,53,20}, - new int[] {5,28}, - new int[] {7,10,31}, - new int[] {11,17,14,16 }, - new int[] {8,9,27,45}, - new int[] {51,52,66}, - new int[] {15,18,34,36,57}, - new int[] {23,48,54,26}, - new int[] {21,24}, - new int[] {19,47,49,57,6}, - new int[] {29,37,38,57}, - new int[] {65}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_117/*The One Ring To Rule Them All*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_118/*An Ancient magical Ring of great power.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_119/*It looks like and ordinay ring, but a strange energy is surrounding it. The Ring is said to have been found inside a volcanic rock by an archeologist, who went mad and isolated himself on the peninsula many years ago. But that's just a fairy tale, ring?*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_120/*Attracts unwanted attention of an unknown entity.*/, //tr - Rarity = 7, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 20, - maxLevel = 30, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - - //Golden Lockets--------------------------------------------------------------------- - - new BaseItem(new int[][] - { - new int[] {1}, - new int[] {12,13}, - new int[] {22,25,57,}, - new int[] {35,50,53}, - new int[] {65,1,57,47,34,36,18} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_121/*Golden Locket of Strength*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_123/*A Golden Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 3, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 15, - maxLevel = 20, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {3}, - new int[] {5,6,7}, - new int[] {7,10,31}, - new int[] {11,17}, - new int[] {14,16,45}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_124/*Golden Locket of Vitality*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_123/*A Golden Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 3, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 15, - maxLevel = 20, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {2}, - new int[] {12,13,51,52,66,8,9,}, - new int[] {12,13,51,52,66}, - new int[] {23,48,54,26}, - new int[] {57,18,47} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_125/*Golden Locket of Agility*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_123/*A Golden Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 3, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 15, - maxLevel = 20, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {4}, - new int[] {12,13,21,24}, - new int[] {12,13,21,24,19,47,49,}, - new int[] {57,37,38,6}, - new int[] {4,37,38,} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_126/*Golden Locket of Intelligence*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_123/*A Golden Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 3, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 15, - maxLevel = 20, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - //Silver Lockets--------------------------------------------------------------------------- - - new BaseItem(new int[][] - { - new int[] {1}, - new int[] {12,13}, - new int[] {22,25,57,}, - new int[] {35,50,53,0}, - new int[] {20,0,0,0} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_127/*Silver Locket of Strength*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_128/*A Silver Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 5, - maxLevel = 20, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {3}, - new int[] {7,10,31,5,}, - new int[] {11,17,0}, - new int[] {14,16,0}, - new int[] {45,0,0,0} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_129/*Silver Locket of Vitality*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_128/*A Silver Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 5, - maxLevel = 20, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {2}, - new int[] {12,13,51,52,66,8,9,6,}, - new int[] {12,13,51,52,66,0}, - new int[] {15,18,34,36,0}, - new int[] {23,48,54,26}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_130/*Silver Locket of Agility*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_128/*A Silver Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 5, - maxLevel = 8, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {4}, - new int[] {12,13,21,24}, - new int[] {12,13,21,24,6}, - new int[] {19,47,49,0}, - new int[] {57,37,38,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_131/*Silver Locket of Intelligence*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_128/*A Silver Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 5, - maxLevel = 8, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - // Emerald Pendant----------------------------------------------------------- - - new BaseItem(new int[][] - { - new int[] {1}, - new int[] {12,13}, - new int[] {22,25,57,1}, - new int[] {35,50,53}, - new int[] {36,65,22,25}, - new int[] {11,18,37,6,8}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_132/*Emerald Pendant of Strength*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_134/*An Emerald Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 10, - maxLevel = 12, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {3}, - new int[] {7,10,31,5}, - new int[] {11,17}, - new int[] {14,16,57,55}, - new int[] {5,7,10,3,31}, - new int[] {57,65}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_135/*Emerald Pendant of Vitality*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_134/*An Emerald Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 10, - maxLevel = 12, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {2}, - new int[] {8,9,12,13,51,52,66}, - new int[] {12,13,51,52,66}, - new int[] {15,18,34,36}, - new int[] {23,48,54,26}, - new int[] {52,66,23,26,2}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_136/*Emerald Pendant of Agility*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_134/*An Emerald Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 10, - maxLevel = 12, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {4}, - new int[] {29,37,21,24,46,56,19}, - new int[] {12,13,21,24,6}, - new int[] {21,4,47,49}, - new int[] {4,57,47,24}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_137/*Emerald Pendant of Intelligence*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_134/*An Emerald Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 10, - maxLevel = 12, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - // Diamond Pendant----------------------------------------------------------- - - new BaseItem(new int[][] - { - new int[] {1}, - new int[] {12,13}, - new int[] {22,25,1,}, - new int[] {35,50,53, }, - new int[] {65,30}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_138/*Diamond Pendant of Strength*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_139/*A Diamond Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 12, - maxLevel = 14, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {3}, - new int[] {5,6,7,8,9,10}, - new int[] {7,10,31}, - new int[] {11,17}, - new int[] {14,16}, - new int[] {28,11}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_140/*Diamond Pendant of Vitality*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_139/*A Diamond Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 12, - maxLevel = 14, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {2}, - new int[] {8,9,12,13,51,52,66}, - new int[] {12,13,51,52,66,15,18,34,36 }, - new int[] {23,48,54,26}, - new int[] {54,52,66,2}, - new int[] {2,18,38}, - new int[] {57,2,6}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_141/*Diamond Pendant of Agility*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_139/*A Diamond Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 12, - maxLevel = 14, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - new BaseItem(new int[][] - { - new int[] {4}, - new int[] {12,13,21,24}, - new int[] {12,13,21,24,6,65}, - new int[] {19,47,49,11,5,6,7,8,46,34}, - new int[] {29,4}, - new int[] {21,4,47,49}, - new int[] {4,57,47,24}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_142/*Diamond Pendant of Intelligence*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_139/*A Diamond Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 12, - maxLevel = 14, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - - //Rare Amulets ----------------------------------------------------------------------------------------- - - var armsyFingerNecklace = new BaseItem(new int[][] - { - new int[] {1}, - new int[] {65}, - new int[] {18,11}, - new int[] {-1}, - new int[] {12,13}, - new int[] {22,25,30,}, - new int[] {35,50,53,57}, - new int[] {20,57} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_143/*Armsy Finger Necklace*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_144/*A Necklace decorated with armsy fingertips.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_145/*A Necklace made from the fingertips of an armsy, yeilding it's raw power and strentgh.*/, //tr - Rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 1, - maxLevel = 5, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - - }; - armsyFingerNecklace.DropSettings_OnlyArmsy(); - armsyFingerNecklace.PossibleStats[0][0].Multipier = 2; - armsyFingerNecklace.PossibleStats[1][0].Multipier = 2; - var virginiaHeartPedant = new BaseItem(new int[][] - { - new int[] {2}, - new int[] {23}, - new int[] {48}, - new int[] {-1}, - new int[] {5,28}, - new int[] {7,10,31}, - new int[] {11,17,57}, - new int[] {14,16,57}, - new int[] {45,57} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_146/*Virginia Heart Pendant*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_147/*A Pendant of a petrified Virginia heart.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_148/*A Pendant made from a petrified Virginia heart, yeilding it's love and Vitality.*/, //tr - Rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 1, - maxLevel = 5, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - virginiaHeartPedant.DropSettings_OnlyVags(); - virginiaHeartPedant.PossibleStats[0][0].Multipier = 2; - virginiaHeartPedant.PossibleStats[1][0].Multipier = 2.25f; - - var cowmanToeNecklace = new BaseItem(new int[][] - { - new int[] {3}, - new int[] {31,6}, - new int[] {28}, - new int[] {8,9,27}, - new int[] {12,13,51,52,66}, - new int[] {12,13,51,52,66,57}, - new int[] {15,18,34,36,57}, - new int[] {23,48,54,26}, - new int[] {65,57} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_149/*Cowman Toe Necklace*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_150/*A Necklace decorated with cowman toes.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_151/*A Necklace made from the fingertips of an armsy, yeilding it's speed and agility.*/, //tr - Rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 20, - maxLevel = 40, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - cowmanToeNecklace.DropSettings_OnlyCow(); - cowmanToeNecklace.PossibleStats[0][0].Multipier = 3; - cowmanToeNecklace.PossibleStats[1][0].Multipier = 2; - new BaseItem(new int[][] - { - new int[] {47}, - new int[] {4,0}, - new int[] {21,0}, - new int[] {38,31,49,14}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {12,13,21,24,6}, - new int[] {19,47,49,6}, - new int[] {29,37,38}, - new int[] {29,37,38,}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_152/*Pendant of Perpetual Rebirth*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_153/*A Pendant of a shrunken babyhead.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_154/*A pedant of great power. Obtainable only from babies or crafting*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_155(1)/*decrease a random cooldown by 1 second whenever you hit something with melee or ranged attack.*/, //tr - Rarity = 7, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 30, - maxLevel = 40, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - onEquip = () => ModdedPlayer.Stats.i_infinityLoop.value = true, - onUnequip = () => ModdedPlayer.Stats.i_infinityLoop.value = false, - }.DropSettings_OnlyBaby(); - - //Boss drop Amulet---------------------------------------------------------------------------------------- - - new BaseItem(new int[][] - { - new int[] {1,2,4}, - new int[] {12,13}, - new int[] {22,25,30,18,5,28}, - new int[] {35,50,53,57,56,20,57,19,18}, - new int[] {7,10,31}, - new int[] {45,16,10,11,9,8, 14, 16, 57,11, 17,57}, - new int[] { 51, 52,66,8, 9,27}, - new int[] {15,18,34,36,57}, - new int[] {23,48,54,26}, - new int[] {6,55,46,54,53}, - new int[] {19,47,49,57, 21,24,29,37,38,57}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_156/*Megan's Locket*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_157/*The Locket Megan wore.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_158/*Megan wore this Locket, it has a picture of her mom in it.*/, //tr - Rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 1, - maxLevel = 4, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }.DropSettings_OnlyMegan(); - - BaseItem RelicHammer = new BaseItem(new int[][] - { - new int[] {25 }, - new int[] {18 }, - new int[] {2004 }, - new int[] {1,62,63,64 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_159/*Relic Hammer*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_160/*It's slow and weak.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_161/*Slows on hit*/, //tr - Rarity = 2, - minLevel = 20, - maxLevel = 22, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Hammer, - icon = Res.ResourceLoader.GetTexture(109), - }; - RelicHammer.PossibleStats[1][0].Multipier = -4; - - BaseItem GreaterHammer = new BaseItem(new int[][] - { - new int[] {25 }, - new int[] {18 }, - new int[] {2004 }, - new int[] {1,3,62,63,64}, - new int[] {53,16}, - new int[] {39,31,43,0,0}, - new int[] {25 ,22,1,12,13,5,6}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_162/*Black Hammer*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_163/*It's slow but with enough strength i can make it a very deadly tool*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_161/*Slows on hit*/, //tr - Rarity = 4, - minLevel = 30, - maxLevel = 35, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Hammer, - icon = Res.ResourceLoader.GetTexture(109), - }; - GreaterHammer.PossibleStats[1][0].Multipier = -3; - //Item 0/6 - new BaseItem(new int[][] - { - new int[] {23,26}, - new int[] {2,6,4}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_164/*Potato Sack*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_165/*Can be used as a quiver*/, //tr - Rarity = 0, - minLevel = 1, - maxLevel = 4, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Quiver, - icon = Res.ResourceLoader.GetTexture(98), - }; - - //Item 1/6 - new BaseItem(new int[][] - { - new int[] {23,26}, - new int[] {40,41,42}, - new int[] {40,16,60}, - new int[] {2}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_166/*Rabbit Skin Quiver*/, //tr - Rarity = 1, - minLevel = 2, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Quiver, - icon = Res.ResourceLoader.GetTexture(98), - }; - - //Item 2/6 - new BaseItem(new int[][] - { - new int[] {26}, - new int[] {23,2,54}, - new int[] {18,60,61}, - new int[] {40,41,16,5,6,40}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_167/*Hollow Log*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_168/*It allows for faster drawing of arrow than a cloth quiver*/, //tr - Rarity = 2, - minLevel = 6, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Quiver, - icon = Res.ResourceLoader.GetTexture(98), - }; - - //Item 3/6 - new BaseItem(new int[][] - { - new int[] {26,23}, - new int[] {24,21}, - new int[] {17,16,18,54,51,52,66}, - new int[] {2,3,4,15,14,13,12,11,10}, - new int[] {5,6,47,60,61}, - new int[] {2,3,4,5,6,7,8,11,12,16,18,37}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_169/*Spellbound Quiver*/, //tr - Rarity = 3, - minLevel = 6, - maxLevel = 11, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Quiver, - icon = Res.ResourceLoader.GetTexture(98), - }; - - //Item 4/6 - new BaseItem(new int[][] - { - new int[] {23,26}, - new int[] {23}, - new int[] {2,3,4}, - new int[] {34,18,17,16,15,14,60,61,55,}, - new int[] {16,19,23,31,54,51,52,66,57}, - new int[] {2,0}, - new int[] {2,3,4,5,6,7,8,9,10}, - new int[] {2,1,5,6}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_170/*Long Lost Quiver*/, //tr - Rarity = 5, - minLevel = 12, - maxLevel = 20, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Quiver, - icon = Res.ResourceLoader.GetTexture(98), - }; - - //Item 5/6 - new BaseItem(new int[][] - { - new int[] {37, 24,47}, - new int[] {42,6,17,61}, - new int[] {-1}, - new int[] {4,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_171/*Spell Scroll*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_172/*Contains a lot of information on how to properly cast spells to achieve better results*/, //tr - Rarity = 1, - minLevel = 1, - maxLevel = 1, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.SpellScroll, - icon = Res.ResourceLoader.GetTexture(110), - }; - - new BaseItem(new int[][] - { - new int[] {16,43}, - new int[] {43,39,40,41,42}, - new int[] {43,39,40,41,42}, - new int[] {43,0,0,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_173/*Cloth Pants*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_174/*Offer little protction*/, //tr - Rarity = 1, - minLevel = 2, - maxLevel = 5, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - - //Item 1/7 - new BaseItem(new int[][] - { - new int[] {16}, - new int[] {1,2,3,4}, - new int[] {5,6}, - new int[] {16,43,39,40,41,42}, - new int[] {1000,1001,1002,1003,1004,43,0,0,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_175/*Rough Hide Leggins*/, //tr - Rarity = 3, - minLevel = 1, - maxLevel = 1, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - - //Item 2/7 - new BaseItem(new int[][] - { - new int[] {16,}, - new int[] {1,2,3,4}, - new int[] {5,44,7,8}, - new int[] {6,16,3}, - new int[] {1,2,3,4,11}, - new int[] {17,16,10,9}, - new int[] {16,43}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_176/*Plate Leggins*/, //tr - Rarity = 4, - minLevel = 4, - maxLevel = 10, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - - //Item 3/7 - new BaseItem(new int[][] - { - new int[] {16}, - new int[] {19}, - new int[] {1,2,3,4,5,6,7,8}, - new int[] {39,40,41,42,43}, - new int[] {4}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_177/*Sage's Robes*/, //tr - Rarity = 3, - minLevel = 1, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - - //Item 4/7 - new BaseItem(new int[][] - { - new int[] {1,2,3,4}, - new int[] {1,5}, - new int[] {16}, - new int[] {22,25}, - new int[] {11,12,13,14,5,6,1,2,3,4}, - new int[] {7,8,9,10,44,45,46,49}, - new int[] {31,1,3,}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_178/*Hammer Jammers*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_179("450%")/*Damage of your smash attack is increased by 450%, hammer stun duration is doubled*/, //tr - Rarity = 7, - minLevel = 20, - maxLevel = 28, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - onEquip = () => { ModdedPlayer.Stats.smashDamage.Multiply(4.5f); ModdedPlayer.Stats.i_HammerStunAmount.Multiply(2); }, - onUnequip = () => { ModdedPlayer.Stats.smashDamage.Divide(4.5f); ModdedPlayer.Stats.i_HammerStunAmount.Divide(2); }, - }; - - //Item 5/7 - new BaseItem(new int[][] - { - new int[] {16}, - new int[] {34}, - new int[] {1,2,4,6,7,8}, - new int[] {-1}, - new int[] {26,23,24,21}, - new int[] {1000, 1001,1002, 1003, 1004, 0,0,0,1,2,4}, - new int[] {51,1,2,3,4,55}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_180/*Pirate Pants*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_181/*Those pants are ligh and comfortable. They offer plenty of mobility but lack in protection.*/, //tr - Rarity = 5, - minLevel = 1, - maxLevel = 1, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - - //Item 6/7 - new BaseItem(new int[][] - { - new int[] {16}, - new int[] {1,2,3,4,16,17}, - new int[] {18,34}, - new int[] {1,2,3,4}, - new int[] {5,6,15,16,13,12,11}, - new int[] {8,4,2,9}, - new int[] {22,21,23}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_182/*Hexed Pants of Mr M.*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_183/*They look like yoga pants but for a man the size of a wardrobe*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_184/*Once upon a time there was a man who was in a basement and fed himself with nothing but nuggets. He got so obese that friends and family started worrying. Hazard noticed this man and cursed his pants to force him to excercise.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_185("60%", "1%")/*While moving, energy regeneration and damage is increased by 40%. While standing still for longer than a second, you loose 1% of max health per second.*/, //tr - Rarity = 7, - minLevel = 14, - maxLevel = 15, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - onEquip = () => ModdedPlayer.Stats.i_HexedPantsOfMrM_Enabled.value = true, - onUnequip = () => ModdedPlayer.Stats.i_HexedPantsOfMrM_Enabled.value = false, - }; - new BaseItem(new int[][] - { -new int[] {39,40,41,42,43}, -new int[] {39,40,41,42,43}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_186/*Leather Mantle*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_187/*A piece of cloth to give protection from */, //tr - Rarity = 1, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - }; - - //Item 1/6 - new BaseItem(new int[][] - { -new int[] {16}, -new int[] {16}, -new int[] {1,2,3,4,5,6}, -new int[] {39,40,41,42,43}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_188/*Shoulder Guards*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_189/*Medium armor piece.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_190/*Heavy armor*/, //tr - Rarity = 2, - minLevel = 4, - maxLevel = 7, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - }; - - //Item 2/6 - BaseItem Heavy_Shoulder_Plates = new BaseItem(new int[][] - { - new int[] {34}, - new int[] {18}, - new int[] {16}, - new int[] {16,65}, - new int[] {1,2,3,4}, - new int[] {1,2,3,4,5,8,9,7,10}, - new int[] {17,10,5,8,9,7,10}, - new int[] {5,45,3}, - new int[] {11}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_191/*Heavy Shoulder Plates*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_192/*Heavy armor piece. They offer great protection at the cost of attack speed and movement speed decrease*/, //tr - Rarity = 4, - minLevel = 15, - maxLevel = 20, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - }; - Heavy_Shoulder_Plates.PossibleStats[0][0].Multipier = -1; - Heavy_Shoulder_Plates.PossibleStats[1][0].Multipier = -1; - Heavy_Shoulder_Plates.PossibleStats[2][0].Multipier = 3; - - //Item 3/6 - new BaseItem(new int[][] - { - new int[] {21,22,23,24,25,26}, - new int[] {16}, - new int[] {1,2,3,4}, - new int[] {1,2,3,4,16,39,40,41,42,43}, - new int[] {1,2,3,4,16,39,40,41,42,43}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_193/*Etched Mantle*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_194/*Those pauldrons empower wearer's combat skill*/, //tr - Rarity = 3, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - }; - - //Item 4/6 - new BaseItem(new int[][] - { - new int[] {22,25}, - new int[] {1,2,3,4}, - new int[] {16}, - new int[] {12,11,13,14}, - new int[] {5,6}, - new int[] {10,15,16,17,18,19,31,35,36,44,45,46,47,49,50,53,55}, - new int[] {10,15,16,17,18,19,31,35,36,44,45,46,47,49,50,53,55}, - new int[] {53,55}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_195/*Assassins Pauldrons*/, //tr - Rarity = 5, - minLevel = 4, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - }; - - //Item 5/6 - new BaseItem(new int[][] - { - new int[] {11}, - new int[] {1,2,3,4}, - new int[] {16}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {21,22,23,24,25,26}, - new int[] {5,14,7,10,45}, - new int[] {1,2,3,4}, - new int[] {12,13,15,16,18}, - new int[] {17,19,21,22,23}, - new int[] {37,35,36,38,44,45,47}, - new int[] {1,2,4}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_196/*Death Pact*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_197/*Find the greatest strength on the border of life and death.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_198("6%", "5%")/*Every attack you make decreases your health by 7% of max health. For every percent of missing health you gain 5% damage amplification. This damage cannot kill you.*/, //tr - Rarity = 7, - minLevel = 5, - maxLevel = 8, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - onEquip = () => ModdedPlayer.Stats.i_DeathPact_Enabled.value = true, - onUnequip = () => ModdedPlayer.Stats.i_DeathPact_Enabled.value = false, - }; - new BaseItem(new int[][] - { - new int[] {56}, - new int[] {-1}, - new int[] {-1}, - new int[] {1,2,3,4}, - new int[] {11,12,13,14,15,16,17,18}, - new int[] {11,12,13,14,15,16,17,18}, - new int[] {5,6,7,8,9,10,31}, - new int[] {55,54,53,50}, - new int[] {1,2,3,4,21,22,23,24,25,26}, - new int[] {16,0,0,0,1,2,3,4,0,0,0,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_199/*Maximale Qualitöt*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_200/*A platinum ring with the most expensive jewels engraved on it. It's quality is uncomparable.*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 4, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), - }; - new BaseItem(new int[][] - { - }) - { - name = Translations.ItemDataBase_ItemDefinitions_201/*Heart of Purity*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_202/*A object filled with both destructive and creative energy. Allows to re-assign all spent mutation points*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_203/*This powerful relic contains so much power, that it can kill anything and force it to come back to life, resulting in it's rebirth.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_204/*Can be consumed by right clicking it. */, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 2, - CanConsume = true, - StackSize = 100, - type = BaseItem.ItemType.Other, - icon = Res.ResourceLoader.GetTexture(105), - onEquip = ModdedPlayer.Respec - }; - - new BaseItem(new int[][] - { -new int[] {1,2,3,4,57}, -new int[] {16,17,14}, -new int[] {50,11}, -new int[] {49,39,40,41,42,45,44}, -new int[] {5,6,9,8,10,12,13,14,}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_205/*Round Shield*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_206/*A sturdy shield made of wood and reinforced with iron.*/, //tr - Rarity = 2, - minLevel = 5, - maxLevel = 8, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - }; - - //Item 1/5 - new BaseItem(new int[][] - { -new int[] {1,11,5,7}, -new int[] {57,2,3,4,5,6,7,8,10,11}, -new int[] {39,40,41,42,43,44,45,46}, -new int[] {50}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_207/*Old Buckler*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_208/*An old shield.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_209/*This item has a lot of scratches that look like they were made by something with sharp claws.*/, //tr - Rarity = 1, - minLevel = 4, - maxLevel = 12, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - }; - - //Item 2/5 - new BaseItem(new int[][] - { -new int[] {16}, -new int[] {16,50}, -new int[] {-1}, -new int[] {-1}, -new int[] {-1}, -new int[] {11}, -new int[] {39,40,41,42,43,50,57}, -new int[] {39,40,41,42,43,50,57}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_210/*Dark Oak Shield*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 1, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - }; - - //Item 3/5 - new BaseItem(new int[][] - { -new int[] {15,14}, -new int[] {2,3,4,1,41,42,57}, -new int[] {-1}, -new int[] {-1}, -new int[] {-1}, -new int[] {65,1,16,25}, -new int[] {2,4,5,6}, -new int[] {16,7,8,22,23,25,26}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_211/*Bone Shield*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_212/*A shield made of bones, held together by thick steel wire.*/, //tr - Rarity = 3, - minLevel = 1, - maxLevel = 1, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - }; - - new BaseItem(new int[][] - { -new int[] {18}, -new int[] {0,0,0,0,62,63,64}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_213/*Dull Longsword*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_214/*It's round on the edges*/, //tr - Rarity = 0, - minLevel = 15, - maxLevel = 20, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.LongSword, - icon = Res.ResourceLoader.GetTexture(89), - }.PossibleStats[0][0].Multipier = -3; - - new BaseItem(new int[][] - { - new int[] {16}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {65}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_215/*Iron Horn*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_216("10%")/*When using Warcry, you and all allies recieve armor bonus equal to 10% of your armor*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), - onEquip = () => ModdedPlayer.Stats.spell_warCryGiveArmor.value = true, - onUnequip = () => ModdedPlayer.Stats.spell_warCryGiveArmor.value = false, - }.PossibleStats[0][0].Multipier = 2; - - //Item 1/5 - new BaseItem(new int[][] - { - new int[] {16}, - new int[] {31,7,8,9,10}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_217/*The Great Iron Horn*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_216("10%") + Translations.ItemDataBase_ItemDefinitions_608/*When using Warcry, you and all allies recieve armor bonus equal to 10% of your armor*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), - onEquip = () => - { - ModdedPlayer.Stats.spell_warCryGiveArmor.value = true; - ModdedPlayer.Stats.spell_warCryGiveDamageResistance.value = true; - }, - onUnequip = () => - { - ModdedPlayer.Stats.spell_warCryGiveArmor.value = false; - ModdedPlayer.Stats.spell_warCryGiveDamageResistance.value = true; - }, - }.PossibleStats[0][0].Multipier = 5; - - //Item 2/5 - new BaseItem(new int[][] - { - new int[] {16}, - new int[] {1}, - new int[] {65,0}, - new int[] {5,16,18}, - new int[] {21,22,23,0,0,0}, - new int[] {24,25,26,0,0,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_218/*Horned Helmet*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_219/*A viking helmet*/, //tr - Rarity = 2, - minLevel = 2, - maxLevel = 8, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - - //Item 3/5 - new BaseItem(new int[][] - { - new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,31,36,37,38,43,44,45,46,47,49,50,53,54,55,57}, - new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,31,36,37,38,43,44,45,46,47,49,50,53,54,55,57}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_220/*Mask*/, //tr - Rarity = 2, - minLevel = 1, - maxLevel = 5, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - - //Item 4/5 - BaseItem mask = new BaseItem(new int[][] - { - new int[] {18}, - new int[] {22,23,21}, - new int[] {11}, - new int[] {1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,31,36,37,38,43,44,45,46,47,49,50,53,54,55,57}, - new int[] {1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,31,36,37,38,43,44,45,46,47,49,50,53,54,55,57}, - new int[] {1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,31,36,37,38,43,44,45,46,47,49,50,53,54,55,57}, - new int[] {24,25,26,0,0,0}, - new int[] {29,30,48}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_221/*Mask of Madness*/, //tr - Rarity = 5, - minLevel = 2, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - mask.PossibleStats[2][0].Multipier = -4; - mask.PossibleStats[0][0].Multipier = 1.5f; - mask.PossibleStats[1][0].Multipier = 2.5f; - mask.PossibleStats[1][1].Multipier = 2.5f; - mask.PossibleStats[1][2].Multipier = 2.5f; - - new BaseItem(new int[][] - { - new int[] {47,49,37,38}, - new int[] {42,4}, - new int[] {44}, - new int[] {21}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_222/*Old Scroll*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_172/*Contains a lot of information on how to properly cast spells to achieve better results*/, //tr - Rarity = 3, - minLevel = 1, - maxLevel = 1, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.SpellScroll, - icon = Res.ResourceLoader.GetTexture(110), - }; - new BaseItem(new int[][] - { - new int[] {57}, - new int[] {1,2,3,4}, - new int[] {5,46}, - new int[] {6,45}, - new int[] {21,24,11,12,13,14,15,16}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {4,18,7,8,19}, - new int[] {27,28,29,30,48,47}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_223/*Wormhole Stabilizators*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_224/*High-tech gear*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_225/*Hazard remember to put some fucking lore in here, don't leave it like this!*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_226("570")/*Increases the duration of a portal by 570 seconds*/, //tr - Rarity = 7, - minLevel = 4, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(94), - onEquip = () => ModdedPlayer.Stats.spell_portalDuration.Add(570), - onUnequip = () => ModdedPlayer.Stats.spell_portalDuration.Substract(570), - }; - new BaseItem(new int[][] - { - new int[] {57}, - new int[] {1,2,3,4}, - new int[] {5,46}, - new int[] {6,45}, - new int[] {21,24,11,12,13,14,15,16}, - new int[] {16}, - new int[] {17}, - new int[] {4,18,7,8,19}, - new int[] {27,28,29,30,48,47}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_227/*Cripplers*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_228(15)/*Increases the duration of a magic arrow's negative effect by 10 seconds*/, //tr - Rarity = 7, - minLevel = 3, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - onEquip = () => ModdedPlayer.Stats.spell_magicArrowDuration.Add(15), - onUnequip = () => ModdedPlayer.Stats.spell_magicArrowDuration.Substract(15), - }; - - new BaseItem(new int[][] - { - new int[] {24,4}, - new int[] {26,4}, - new int[] {21,2}, - new int[] {23,2,0,0,0,0}, - new int[] {2,4,57,16}, - new int[] {6,8,9,44,46}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {12,13,14,15,16,18}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_229/*Crossfire*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_230/*Infused with powerful magic. This item is a dangerous tool of destruction.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_231/*When hitting an enemy with a projectile, create a magic arrow pointed at the enemy and shoot it without using in energy. This effect may occur once every seconds, but can be interval can be shortened with cooldown reduction.*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Quiver, - icon = Res.ResourceLoader.GetTexture(98), - onEquip = () => ModdedPlayer.Stats.i_CrossfireQuiver.value = true, - onUnequip = () => ModdedPlayer.Stats.i_CrossfireQuiver.value = false, - }; - - new BaseItem(new int[][] - { - new int[] {44}, - new int[] {44,8}, - new int[] {44,4,6,9,4}, - new int[] {49,7,0}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_232/*Scroll of Recovery*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_233/*Recovers health and stamina*/, //tr - Rarity = 1, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.SpellScroll, - icon = Res.ResourceLoader.GetTexture(110), - }; - - new BaseItem(new int[][] - { - new int[] {11}, - new int[] {-1}, - new int[] {16,15}, - new int[] {37,38}, - new int[] {42,24}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_234/*Tiara*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_235/*A beautiful tiara */, //tr - lore = Translations.ItemDataBase_ItemDefinitions_236/*This tiara may not provide much protection, but it sure is pretty*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_237/*Shiny*/, //tr - Rarity = 2, - minLevel = 5, - maxLevel = 10, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - - //Item 1/2 - new BaseItem(new int[][] - { - new int[] {-1}, - new int[] {15}, - new int[] {15}, - new int[] {17,16}, - new int[] {17,16}, - new int[] {0,65}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_238/*Chastity belt*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_239/*Dodge those fukbois*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_240/*This belt will stop those cheeky cannibals and armsies from getting into your pants*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_241("99%")/* 100% damage reduction while sleeping*/, //tr - Rarity = 2, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - new BaseItem(new int[][] - { - new int[] {2005}, - new int[] {-1}, - new int[] {-1}, - new int[] {42,43}, - new int[] {44,0,49,}, - new int[] {21,24,0,0,0,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_242/*Ice Scroll*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_243/*A spell surrounded by flying shards of ice, contains tramendous power of cold.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_244/*Created at the top of the mountain.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_581("250", 2)/*Snap freeze damage is increased and the slow duration is increased by 1 second*/, //tr - Rarity = 4, - minLevel = 30, - maxLevel = 40, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.SpellScroll, - icon = Res.ResourceLoader.GetTexture(110), - onEquip = () => { ModdedPlayer.Stats.spell_snapDamageScaling.Add(250f); ModdedPlayer.Stats.spell_snapFreezeDuration.Add(2); }, - onUnequip = () => { ModdedPlayer.Stats.spell_snapDamageScaling.Substract(250f); ModdedPlayer.Stats.spell_snapFreezeDuration.Add(2); } - }; - new BaseItem(new int[][] - { - new int[] {2006}, - new int[] {57,1,2,3,4}, - new int[] {34,45,46,15,1,2,3,4,57,11,14,7,10,59}, - new int[] {8,1,2,3,4,9,5,6}, - new int[] {1000,1001,1002}, - new int[] {1000,1001,1002, 1003, 1004, 0,0,0,0,0,0,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_245/*Motorboat Modification Blueprints*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_246/*Sheet of paper that allows to turn any raft into a high speed. Increases carry amount and increases speed of rafts.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_247/*Who did this lmao.*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 4, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.SpellScroll, - icon = Res.ResourceLoader.GetTexture(110), - }; - new BaseItem(new int[][] - { - new int[]{1,2,3,4}, - new int[]{18}, - new int[]{18,0,0,62,63,64}, - new int[] {1,2,3,4,6,55}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_248/*Axe of Swiftness*/, //tr - Rarity = 3, - minLevel = 15, - maxLevel = 17, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Axe, - icon = Res.ResourceLoader.GetTexture(138), - }.PossibleStats[1][0].Multipier = 1.6f; - new BaseItem(new int[][] - { - new int[]{1,26,22}, - new int[]{18}, - new int[]{18,62,63,64}, - new int[] {1,2,3,4,6,55,59,57,34,35,36,14,44,49}, - new int[] {53,22,25,12,13}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_249/*Severer*/, //tr - Rarity = 4, - minLevel = 25, - maxLevel = 25, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Axe, - icon = Res.ResourceLoader.GetTexture(138), - }.PossibleStats[1][0].Multipier = 2.5f; - - new BaseItem(new int[][] - { - new int[]{1,26,22}, - new int[]{18}, - new int[]{1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,20,34,35,36,37,38,44,45,46,47,49,53,54,55,}, - new int[]{62,63,64,0,0,0}, - new int[]{19,56}, - new int[] {1,2,3,4,6,55,59,57,34,35,36,14,44,49}, - new int[] {53,22,25,12,13,1,2,3,4,39,40,41,42,43}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_250/*Golden Axe of Fortune*/, //tr - Rarity = 5, - minLevel = 35, - maxLevel = 36, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Axe, - icon = Res.ResourceLoader.GetTexture(138), - }.PossibleStats[1][0].Multipier = 2.5f; - new BaseItem(new int[][] - { - new int[]{26,22}, - new int[]{63}, - new int[]{1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,20,34,35,36,37,38,44,45,46,47,49,53,54,55,}, - new int[]{62,63,64,65}, - new int[]{19,56}, - new int[] {26}, - new int[] {53,22,25,12,13,1,2,3,4,39,40,41,42,43}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_251/*Axe of Misfortune*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_252/*Misfortunate are the ones on the recieving end. They will bleed a lot*/, //tr - Rarity = 5, - minLevel = 6, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Axe, - icon = Res.ResourceLoader.GetTexture(138), - }.PossibleStats[1][0].Multipier = 3; - - new BaseItem(new int[][] - { - new int[] {1,2,3,4}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_253/*Golden Ring*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_103/*A Golden Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 4, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 1, - maxLevel = 4, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - new BaseItem(new int[][] - { - new int[] {1,2,3,4}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_254/*Golden Locket*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_123/*A Golden Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr - Rarity = 3, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 1, - maxLevel = 4, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that - }; - new BaseItem(new int[][] - { - new int[]{0,39} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_255/*Dull Axe*/, //tr - Rarity = 0, - minLevel = 15, - maxLevel = 24, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Axe, - icon = Res.ResourceLoader.GetTexture(138), - }; - new BaseItem(new int[][] - { - new int[] {1,2,3,4 }, - new int[] {1,2,3,15,4,0,0,0 }, - new int[] {12,13,1,2,3,4,5, }, - new int[] {18,16,23,26,19 }, - new int[] {18,16,23,26 }, - new int[] {34,44,45,46 }, - new int[] {2,23,26}, - new int[] {2,23,26,51}, - new int[] {2,23,26,20,16,15,60}, - new int[] {52,66,60,0,0}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_256/*Precise Adjustments*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_257(15)/*Focus attack speed buff duration is increased by 16 seconds*/, //tr - Rarity = 7, - minLevel = 5, - maxLevel = 8, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Quiver, - icon = Res.ResourceLoader.GetTexture(98), - onEquip = () => ModdedPlayer.Stats.spell_focusOnAtkSpeedDuration.Add(16), - onUnequip = () => ModdedPlayer.Stats.spell_focusOnAtkSpeedDuration.Substract(16), - }; - new BaseItem(new int[][] - { - new int[] {25 }, - new int[] {22,1,18,}, - new int[] {1,2,3,4,57,}, - new int[] {27,28,30}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {15,14,45,7,35,10}, - new int[] {62,63,64, }, - new int[] {53,61 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_258/*Rage*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_259(15)/*Increases maximum stacks of frenzy by 10*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_260/*Swords go brrrrrrttt*/, //tr - Rarity = 7, - minLevel = 6, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.GreatSword, - icon = Res.ResourceLoader.GetTexture(88), - onEquip = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Add(15), - onUnequip = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Substract(15), - }.PossibleStats[0][0].Multipier = 5; - - BaseItem jaggedRipper = new BaseItem(new int[][] - { - new int[] {1,2,3,4,57,}, - new int[]{18}, - new int[] {25 }, - new int[] {62,63,64, }, - new int[] {53, }, - new int[] {49,14, }, - new int[] {35,36,15,12, }, - new int[] {27,28,30}, - new int[]{18,62,63,64}, - new int[] {65}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_261/*Jagged Edge*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_262("30%", "30%")/*Bash has 30% a chance to make enemies to bleed for 30% of damage dealt per second for duration of slow*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 5, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Axe, - icon = Res.ResourceLoader.GetTexture(138), - onEquip = () => ModdedPlayer.Stats.spell_bashBleedChance.Add(0.3f), - onUnequip = () => ModdedPlayer.Stats.spell_bashBleedChance.Substract(0.3f), - }; - jaggedRipper.PossibleStats[1][0].Multipier = 2; - - new BaseItem(new int[][] - { - new int[] {25 }, - new int[] {22,}, - new int[] {1,2,3,4,57,}, - new int[] {27,28,30}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {15,14,45,7,35,10}, - new int[] {62,63,64, }, - new int[] {53,61 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_263/*Bloodthirster*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_264/*Drenched in blood of many unfortunate foes.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_265("2%")/*Bash lifesteals 2% of damage dealt into energy and health*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 5, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.LongSword, - icon = Res.ResourceLoader.GetTexture(89), - onEquip = () => ModdedPlayer.Stats.spell_bashLifesteal.Add(0.02f), - onUnequip = () => ModdedPlayer.Stats.spell_bashLifesteal.Substract(0.02f), - }.PossibleStats[0][0].Multipier = 3; - new BaseItem(new int[][] - { - new int[] {25 }, - new int[] {22 }, - new int[] {2004 }, - new int[] {62,63,64 }, - new int[] {27,28,30,29,48}, - new int[] {1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_266/*Frost Giant*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_267/*Melee hits freeze enemies*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Hammer, - icon = Res.ResourceLoader.GetTexture(109), - onEquip = () => - { - ModdedPlayer.Stats.i_HammerStunDuration.Multiply(2); - ModdedPlayer.Stats.i_HammerStunAmount.Multiply(0); - }, - onUnequip = () => - { - ModdedPlayer.Stats.i_HammerStunDuration.Divide(2); - ModdedPlayer.Stats.i_HammerStunAmount.Reset(); - }, - }.PossibleStats[0][0].Multipier = 3.25f; - - new BaseItem(new int[][] - { - new int[] {11}, - new int[] {65}, - new int[] {16,17}, - new int[] {1,11,45}, - new int[] {15}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_268/*Alexander's Shield*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_269/*Parry has a chance to be casted when getting it. Requires parry to be equipped*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - onEquip = () => ModdedPlayer.Stats.spell_chanceToParryOnHit.value = true, - onUnequip = () => ModdedPlayer.Stats.spell_chanceToParryOnHit.value = false, - }; - - new BaseItem(new int[][] - { - new int[] {1}, - new int[] {12,3,16,45,46}, - new int[] {13,4,62,64}, - new int[] {22}, - new int[] {25,22}, - new int[] {25}, - new int[] {11,1}, - new int[] {30,1,57}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_270/*King Qruies*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_271/*A mighty sword seeking for it's owner*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_272/*Gain additional melee damage equal to the last instance of physical damage taken.*/, //tr - Rarity = 7, - minLevel = 10, - maxLevel = 12, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.LongSword, - icon = Res.ResourceLoader.GetTexture(89), - onEquip = () => ModdedPlayer.Stats.i_KingQruiesSword.value = true, - onUnequip = () => ModdedPlayer.Stats.i_KingQruiesSword.value = false, - }; - - new BaseItem(new int[][] - { - new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, - new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, - new int[] {13,4,62,64}, - new int[] {26,2,34,57,55}, - new int[] {26,23}, - new int[] {18,16}, - new int[] {48,2,55}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_273/*Grip of Sora*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_274/*Look, a porcupine! -Sora*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_275("20%", "+4")/*Multishot drains 20% less energy and shoots +4 projectiles. Additional projectiles do not increase the cost of multishot*/, //tr - Rarity = 7, - minLevel = 10, - maxLevel = 12, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - onEquip = () => ModdedPlayer.Stats.i_SoraBracers.value = true, - onUnequip = () => ModdedPlayer.Stats.i_SoraBracers.value = false, - }; - new BaseItem(new int[][] - { - new int[] {18}, - new int[] {60,0}, - new int[] {2,40}, - new int[] {12,13,2,40,16,66}, - new int[] {39,40,41,42,43,0,0}, - new int[] {23,26}, - new int[] {-1,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_276/*Ancient Greatbow*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_277/*A massive and slow bow, deals extra damage*/, //tr - Rarity = 4, - minLevel = 10, - maxLevel = 12, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Greatbow, - icon = Res.ResourceLoader.GetTexture(170), - }.PossibleStats[0][0].Multipier = -1.55f; - - new BaseItem(new int[][] - { - new int[] {18}, - new int[] {61}, - new int[] {2,0,0,0}, - new int[] {12,13,2,40,16}, - new int[] {39,40,41,42,43,0,0}, - new int[] {23,26,2,66}, - new int[] {23,26}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_278/*Phoenix's Death*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_279/*Ignites enemies on hit*/, //tr - Rarity = 6, - minLevel = 10, - maxLevel = 12, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Greatbow, - icon = Res.ResourceLoader.GetTexture(170), - onEquip = () => ModdedPlayer.Stats.i_greatBowIgnites.value = true, - onUnequip = () => ModdedPlayer.Stats.i_greatBowIgnites.value = false, - }.PossibleStats[0][0].Multipier = -1.7f; - - new BaseItem(new int[][] - { - new int[] {18}, - new int[] {61,48}, - new int[] {2,3,5}, - new int[] {12,13,2,40,16}, - new int[] {39,40,41,42,43,66}, - new int[] {23,26}, - new int[] {23,26}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_280/*Soulstring*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_281/*A massive and slow bow*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_282(100)/*Blood infused arrow now deals additional 20 points of damage per health consumed*/, //tr - Rarity = 7, - minLevel = 10, - maxLevel = 12, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Greatbow, - icon = Res.ResourceLoader.GetTexture(170), - onEquip = () => ModdedPlayer.Stats.spell_bia_HealthDmMult.Add(100), - onUnequip = () => ModdedPlayer.Stats.spell_bia_HealthDmMult.Substract(100), - }.PossibleStats[0][0].Multipier = -1.7f; - - new BaseItem(new int[][] - { - new int[] {18}, - - new int[] {2,40,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_283/*Greatbow*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_277/*A massive and slow bow, deals extra damage*/, //tr - Rarity = 2, - minLevel = 25, - maxLevel = 28, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Greatbow, - icon = Res.ResourceLoader.GetTexture(170), - }.PossibleStats[0][0].Multipier = -2.7f; - - new BaseItem(new int[][] - { - new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, - new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, - new int[] {13,4,62,64}, - new int[] {26,2,34,57,55}, - new int[] {26,23}, - new int[] {26,0,0}, - new int[] {18,16}, - new int[] {30,1,57}, - new int[] {5}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_284/*Withered Crown*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_285/*Worn by Hazard.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_286("4")/*A single cast of blood infused arrow affects 4 more projectiles*/, //tr - Rarity = 7, - minLevel = 10, - maxLevel = 12, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - onEquip = () => ModdedPlayer.Stats.i_HazardCrown.value = true, - onUnequip = () => ModdedPlayer.Stats.i_HazardCrown.value = false, - }; - new BaseItem(new int[][] - { - new int[] {39,40,41,42,43,4}, - new int[] {4,6,24,21,16,3,42,43,49}, - new int[] {0,6,24,21,16,3,47,49,38,17,10,11,9,8,7,6}, - new int[] {37,4}, - new int[] {43,16,17,37,47 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_287/*Novice Magic Caster's Bracers*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - }; - new BaseItem(new int[][] - { - new int[] {2,12,13,23,26,40,43,54}, - new int[] {2,12,13,23,26,40,43,60,62,63,51,52,66}, - new int[] {5,6,7,8,9,10,16,17,26}, - new int[] {37,0,0,0}, - new int[] {43,16,2 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_288/*Ranger's Bracers*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - }; - new BaseItem(new int[][] - { - new int[] {1,16,5,6,18,39,14,22,25,53,62,63,57,45}, - new int[] {2,12,13,22,25,40,43,54}, - new int[] {5,6,7,8,9,10,16,17,26}, - new int[] {37,1,17,18,16}, - new int[] {43,1,65 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_289/*Swordsman's Bracers*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - }; - new BaseItem(new int[][] - { - new int[] {3,5,6,7,8,9,10,11,14,15,16}, - new int[] {7,16,18,0,0}, - new int[] {39,40,41,42,43,31,16}, - new int[] {1,2,3,4,5,57,39,40,41,42,43,31,16}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_290/*Healer's Bracers*/, //tr - Rarity = 5, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - }; - new BaseItem(new int[][] - { - new int[] {39,40,41,42,43,4}, - new int[] {4,6,24,21,16,3,42,43,49}, - new int[] {0,6,24,21,16,3,47,49,38,17,10,11,9,8,7,6}, - new int[] {37,0,0,0}, - new int[] {43,4 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_291/*Novice Magic Caster's Gloves*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new int[][] - { - new int[] {2,12,13,23,26,40,43,54}, - new int[] {2,12,13,23,26,40,43,60,62,63,51,52,66}, - new int[] {5,6,7,8,9,10,16,17,26}, - new int[] {37,68}, - new int[] {43,2 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_292/*Ranger's Gloves*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new int[][] - { - new int[] {1,16,5,6,18,39,14,22,25,53,62,63,57,45}, - new int[] {2,12,13,23,26,40,43,54}, - new int[] {5,6,7,8,9,10,16,17,26}, - new int[] {37,18,7,0}, - new int[] {43,1,65 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_293/*Swordsman's Gloves*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new int[][] - { - new int[] {3,5,6,7,8,9,10,11,14,15,16}, - new int[] {7,16,18,0,0}, - new int[] {39,40,41,42,43,31,16}, - new int[] {1,2,3,4,5,57,39,40,41,42,43,31,16}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_294/*Healer's Gloves*/, //tr - Rarity = 5, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new int[][] - { - new int[] {62,63,64,55,54,53,48,30,29,28,27}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_295/*Fate Gloves*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new int[][] - { - new int[] {62,63,64,55,54,53,48,30,29,28,27}, - new int[] {34}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_296/*Fate Boots*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }; - new BaseItem(new int[][] - { - new int[] {62,63,64,55,54,53,48,30,29,28,27}, - new int[] {34}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_297/*Greed*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_298/*Automatically casts wide reach every second*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - onEquip = () => ModdedPlayer.Stats.i_isGreed.value = true, - onUnequip = () => ModdedPlayer.Stats.i_isGreed.value = false, - }; - BaseItem titaniumleggins = new BaseItem(new int[][] - { - new int[] { 16}, - new int[] {31}, - new int[] {1,2,3,4}, - new int[] {5,}, - new int[] {-1,65}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_299/*Titanium Leggins*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_300/*Heavily armored leg protection. Suffers from the same weaknesses as spartan armor.*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - titaniumleggins.PossibleStats[0][0].Multipier = 3; - titaniumleggins.PossibleStats[1][0].Multipier = 1.5f; - new BaseItem(new int[][] - { - new int[] {42,39,40,41,43,0,0 }, - new int[] {16,24,25,26,5,6,7,8,9,10,11,12,13,14,15,17,18,55,60,61,62,63,64,0,0,0 }, - new int[] {16,24,25,26,5,6,7,8,9,10,11,12,13,14,15,17,18,55,60,61,62,63,64 }, - new int[] {43,0,0,0,16 }, - new int[] {65,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_301/*Iron Gauntlet*/, //tr - Rarity = 2, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - - new BaseItem(new int[][] - { - new int[] {4,3,6}, - new int[] {21,24,16 }, - new int[] {29,4 }, - new int[] {16,15,17 }, - new int[] {47,49,44,45,46 }, - new int[] {-1 }, - new int[] {-1 }, - new int[] {-1 }, - new int[] {-1 }, - new int[] {-1 }, - new int[] {-1 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_302/*Magefist*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_303/*Gloves that amplify magic*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_304/*Spells deal double damage but have double the energy cost*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - onEquip = () => { ModdedPlayer.Stats.spellIncreasedDmg.valueMultiplicative *= 2f; ModdedPlayer.Stats.spellCost.valueMultiplicative *= 2f; }, - onUnequip = () => { ModdedPlayer.Stats.spellIncreasedDmg.valueMultiplicative /= 2f; ModdedPlayer.Stats.spellCost.valueMultiplicative /= 2f; } - }; - new BaseItem(new int[][] - { - new int[] {34 }, - new int[] {34,5,1,2,4,3,2,11 }, - new int[] {16,3,2,1,4 }, - new int[] {16,7,8 }, - new int[] {16, }, - new int[] {-1 }, - new int[] {43 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_305/*Armored Boots*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_306/*Heavily armored, resistant to damage boots.*/, //tr - Rarity = 5, - minLevel = 10, - maxLevel = 14, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }; - new BaseItem(new int[][] - { - new int[] {16}, - new int[] {16,18,57,53}, - new int[] {16,1,2,3,4,21,22,23,24,25,26,31,15,5,6,7,8,9}, - new int[] {1,2,3,4,57}, - new int[] {16,45,46,0,0,0}, - new int[] {-1 }, - new int[] {-1 }, - new int[] {-1 }, - new int[] {-1 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_307/*Broken Protector*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_308/*This shield failed to protect those behind it.*/, //tr - Rarity = 6, - minLevel = 5, - maxLevel = 8, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - }.PossibleStats[0][0].Multipier = 2; - - new BaseItem(new int[][] - { - new int[] {4}, - new int[] {6,4,3,44}, - new int[] {21,24}, - new int[] {21,24}, - new int[] {-1,}, - new int[] {-1}, - new int[] {-1}, - new int[] {47,4,5,6,7,61,17,0,0,0,0,2,56,57,49,64}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_309/*Forbidden Scroll*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_310/*Too powerful to be kept.*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 1, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.SpellScroll, - icon = Res.ResourceLoader.GetTexture(110), - }; - - new BaseItem(new int[][] - { - new int[] {16}, - new int[] {1,2,3,4}, - new int[] {17}, - new int[] {8,9,49,47}, - new int[] {16,18,11,34}, - new int[] {37,34}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_311/*Doom Pauldrons*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_312/*Despite the cool name, they are completely normal pair of shoulder armor.*/, //tr - Rarity = 6, - minLevel = 5, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - }; - new BaseItem(new int[][] - { - new int[] {16}, - new int[] {1,2,3,4,57,53,54,55}, - new int[] {17,18,11,15}, - new int[] {15}, - new int[] {34}, - new int[] {16,5,6,7,8,9,10,11,12,13,14,15,17,18,59,47,45,46,60}, - new int[] {23,22,30,27,34,44,48,59}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_313/*Wind armor*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_314/*Run fast like the wind*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_315("20%", "35%", "2000", "5%")/*Upon dodging an attack, gain 20% movement speed, 35% damage, 2000 armor, and heal for 5% of your maximum health*/, //tr - Rarity = 7, - minLevel = 5, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - onEquip = () => ModdedPlayer.Stats.i_isWindArmor.value = true, - onUnequip = () => ModdedPlayer.Stats.i_isWindArmor.value = false, - }; - new BaseItem(new int[][] - { - new int[] {11}, - new int[] {22,23,21}, - new int[] {16}, - new int[] {1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,31,36,37,38,43,44,45,46,47,49,50,53,54,55,57}, - new int[] {-1}, - new int[] {-1}, - new int[] {24,25,26,0,0,0}, - //new int[] {29,30,48}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_316/*Crusader Helmet*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_317/*You're talking mad shit for someone within crusading distance*/, //tr - Rarity = 5, - minLevel = 2, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - - new BaseItem(new int[][] - { - new int[] {1,2,3,4,5,6,57}, - new int[] {-1}, - new int[] {-1}, - new int[] {24,25,26,10,47,0,0,0}, - //new int[] {29,30,48}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_318/*Hood*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_319/*Hats provide usefull stat bonuses*/, //tr - Rarity = 3, - minLevel = 2, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - new BaseItem(new int[][] - { - new int[] {47 }, - new int[] {4,29 }, - new int[] {4,29 }, - new int[] {4,17,6,44,38,21,24,8,9}, - new int[] {4,17,6,44,38,21,24,8,9}, - new int[] {4,17,6,44,38,21,24,8,9}, - new int[] {4,17,6,44,38,21,24,8,9}, - new int[] {4,17,6,44,38,21,24,8,9}, - new int[] {2000,2002,49}, - new int[] {2001,4,29,24,21}, - new int[] {2002,4}, - new int[] {2003,-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_320/*The Spark of Light in The Darkness*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_321/*Magic Scroll of great quality*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_322/*Written in a language i canno't understand. Decyphering this text is impossible, so is the full utilization of the scroll.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_323("5")/*If a black hole hits 5 or more enemies during it's lifetime, a ball lightning is summoned after it ends.*/, //tr - Rarity = 7, - minLevel = 15, - maxLevel = 20, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.SpellScroll, - icon = Res.ResourceLoader.GetTexture(110), - onEquip = () => ModdedPlayer.Stats.i_sparkOfLightAfterDark.value = true, - onUnequip = () => ModdedPlayer.Stats.i_sparkOfLightAfterDark.value = false - }; - new BaseItem(new int[][] - { - new int[] {21,22,23,24,25,26,1,2,4}, - new int[] {12,13,11,47}, - new int[] {62,63,64,1000,1001,1002,1003,1004}, - new int[] {61}, - new int[] {5,57}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_324/*Purgatory*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_325/*Golden ring with a bone chilling feel about it. This thing will only bring harm, but not to the wearer*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_326/*Ring made of Netherrite*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_327("300%")/*Purge increases all of your damage based on missing health. Up to 300%*/, //tr - Rarity = 7, - minLevel = 20, - maxLevel = 26, - CanConsume = false, - StackSize = 1, - onEquip = () => ModdedPlayer.Stats.spell_purgeDamageBonus.value = true, - onUnequip = () => ModdedPlayer.Stats.spell_purgeDamageBonus.value = false, - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), - }.DropSettings_OnlyCannibals(); - - new BaseItem(new int[][] - { - new int[] {18}, - new int[] {61,48}, - new int[] {2,3,5}, - new int[] {12,13,2,40,16}, - new int[] {39,40,41,42,43,0,0}, - new int[] {23,26}, - new int[] {23,26}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_328/*Eruption*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_329/*Incarnation of devastation*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_330/*Headshots cause explosions*/, //tr - Rarity = 7, - minLevel = 10, - maxLevel = 12, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Greatbow, - icon = Res.ResourceLoader.GetTexture(170), - onEquip = () => ModdedPlayer.Stats.i_EruptionBow.value = true, - onUnequip = () => ModdedPlayer.Stats.i_EruptionBow.value = false, - }.PossibleStats[0][0].Multipier = -1.6f; - - new BaseItem(new int[][] - { - new int[] {18}, - new int[] {61,48}, - new int[] {2,3,5}, - new int[] {12,13,2,40,16}, - new int[] {39,40,41,42,43,0,0}, - new int[] {23,26}, - new int[] {23,26}, - new int[] {31}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_331/*Archangel*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_332/*Spread the goodness*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_333("30")/*Shooting another player causes them to be greatly empowered for 30 seconds*/, //tr - Rarity = 7, - minLevel = 10, - maxLevel = 12, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Greatbow, - icon = Res.ResourceLoader.GetTexture(170), - onEquip = () => ModdedPlayer.Stats.i_ArchangelBow.value = true, - onUnequip = () => ModdedPlayer.Stats.i_ArchangelBow.value = false, - }.PossibleStats[0][0].Multipier = -2f; - new BaseItem(new int[][] - { - new int[] {1,4 }, - new int[] {1,3,5,6,49 }, - new int[] {22}, - new int[] {25}, - new int[] {12}, - new int[] {13}, - new int[] {1,12,13,22,25,30,53,57,65 }, - new int[] {-1 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_334/*The Executioner*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_335/*A sword for decapitating*/, //tr - Rarity = 4, - minLevel = 25, - maxLevel = 27, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.LongSword, - icon = Res.ResourceLoader.GetTexture(89), - }; - new BaseItem(new int[][] - { - new int[] {48 }, - new int[] {23,26,2 }, - new int[] {23,26 }, - new int[] {12,13}, - new int[] {60}, - new int[] {13,23,26}, - new int[] {23,26}, - new int[] {34,2,2,54}, - new int[] {15,14}, - new int[] {16,23,2,4,5,6}, - new int[] {45,46}, - new int[] {27,49}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_336/*Moon Cuirass*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_337/*A piece of armor designed for an archer. */, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_338("120")/*Landing a headshot with an arrow without the homing effect of seeking arrow at a distance greater than 120 feet deals five-fold damage, and hits the enemy two extra times*/, //tr - Rarity = 7, - minLevel = 20, - maxLevel = 22, - CanConsume = false, - StackSize = 1, - onEquip = () => ModdedPlayer.Stats.perk_trueAimUpgrade.value = true, - onUnequip = () => ModdedPlayer.Stats.perk_trueAimUpgrade.value = false, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - new BaseItem(new int[][] - { - new int[] {65 }, - new int[] {1 }, - new int[] {3}, - new int[] {5,65}, - new int[] {5,6,11,10,7,45}, - new int[] {53}, - new int[] {22}, - new int[] {1,3,4,5,31}, - new int[] {28}, - new int[] {63}, - new int[] {16}, - new int[] {-1}, - new int[] {-1}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_339/*Thornmail*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_340/*Spiked death on the outside, really comfy on the inside*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_341/*Thorns deal double damage*/, //tr - Rarity = 7, - minLevel = 20, - maxLevel = 22, - CanConsume = false, - StackSize = 1, - onEquip = () => ModdedPlayer.Stats.thornsDmgMult.valueMultiplicative *= 2, - onUnequip = () => ModdedPlayer.Stats.thornsDmgMult.valueMultiplicative /= 2, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - - new BaseItem(new int[][] - { - new int[] {1 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_342/*Rusty Polearm*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_343/*Used by the Ubersreik Five*/, //tr - Rarity = 1, - minLevel = 10, - maxLevel = 16, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Polearm, - icon = Res.ResourceLoader.GetTexture(181), - }; - new BaseItem(new int[][] - { - new int[] {1 }, - new int[] {25,0 }, - new int[] {25 ,62,63,64}, - new int[] {6,49}, - new int[] {39,40,41,42,44,8,18,65 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_344/*Giant Polearm*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_345/*Used by the Sir Kruber*/, //tr - Rarity = 4, - minLevel = 20, - maxLevel = 24, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Polearm, - icon = Res.ResourceLoader.GetTexture(181), - }; - - //Feathers - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_346/*Crude Feather*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_582/*If equipped on a weapon, increases ranged damage by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Weapon, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_583/*If equipped on boots, increases movement speed by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Boot, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_584/*If equipped on a helmet, increases critical hit chance by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Helmet, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_585/*If equipped on accessories, increases ranged armor piercing by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Amulet, 1).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_586/*If equipped in other slots, increases agility by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.ChestArmor, 1).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 3, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 1, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(185), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_348/*Soft Feather*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_582/*If equipped on a weapon, increases ranged damage by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Weapon, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_583/*If equipped on boots, increases movement speed by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Boot, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_584/*If equipped on a helmet, increases critical hit chance by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Helmet, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_585/*If equipped on accessories, increases ranged armor piercing by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Amulet, 1).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_586/*If equipped in other slots, increases agility by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.ChestArmor, 1).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 4, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 1, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(185), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_349/*Ornate Feather*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_582/*If equipped on a weapon, increases ranged damage by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Weapon, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_583/*If equipped on boots, increases movement speed by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Boot, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_584/*If equipped on a helmet, increases critical hit chance by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Helmet, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_585/*If equipped on accessories, increases ranged armor piercing by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Amulet, 1).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_586/*If equipped in other slots, increases agility by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.ChestArmor, 1).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 5, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 1, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(185), - }; - - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_350/*Wonderful Feather*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_582/*If equipped on a weapon, increases ranged damage by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Weapon, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_583/*If equipped on boots, increases movement speed by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Boot, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_584/*If equipped on a helmet, increases critical hit chance by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Helmet, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_585/*If equipped on accessories, increases ranged armor piercing by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Amulet, 1).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_586/*If equipped in other slots, increases agility by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.ChestArmor, 1).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 6, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 1, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(185), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_351/*White Crow's Feather*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_582/*If equipped on a weapon, increases ranged damage by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Weapon, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_583/*If equipped on boots, increases movement speed by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Boot, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_584/*If equipped on a helmet, increases critical hit chance by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Helmet, 1).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_585/*If equipped on accessories, increases ranged armor piercing by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Amulet, 1).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_586/*If equipped in other slots, increases agility by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.ChestArmor, 1).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 7, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 1, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(185), - }; - - //-------------- Shark teeth - - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_352/*Reef Shark*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_587/*If equipped on a weapon, increases melee damage by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Weapon, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_588/*If equipped on boots, decreases damage taken by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Boot, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_589/*If equipped on a helmet, increases cattack speed by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Helmet, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_590/*If equipped on accessories, increases melee armor piercing by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Amulet, 2).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_591/*If equipped in other slots, increases strength by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.ChestArmor, 2).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 3, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 2, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(186), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_353/*Tiger Shark Tooth*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_587/*If equipped on a weapon, increases melee damage by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Weapon, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_588/*If equipped on boots, decreases damage taken by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Boot, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_589/*If equipped on a helmet, increases cattack speed by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Helmet, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_590/*If equipped on accessories, increases melee armor piercing by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Amulet, 2).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_591/*If equipped in other slots, increases strength by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.ChestArmor, 2).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 4, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 2, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(186), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_354/*Whale Shark Tooth*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_587/*If equipped on a weapon, increases melee damage by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Weapon, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_588/*If equipped on boots, decreases damage taken by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Boot, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_589/*If equipped on a helmet, increases cattack speed by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Helmet, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_590/*If equipped on accessories, increases melee armor piercing by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Amulet, 2).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_591/*If equipped in other slots, increases strength by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.ChestArmor, 2).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 5, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 2, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(186), - }; - - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_355/*Great White Shark Tooth*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_587/*If equipped on a weapon, increases melee damage by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Weapon, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_588/*If equipped on boots, decreases damage taken by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Boot, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_589/*If equipped on a helmet, increases cattack speed by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Helmet, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_590/*If equipped on accessories, increases melee armor piercing by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Amulet, 2).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_591/*If equipped in other slots, increases strength by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.ChestArmor, 2).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 6, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 2, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(186), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_356/*Megalodon's Tooth*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_587/*If equipped on a weapon, increases melee damage by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Weapon, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_588/*If equipped on boots, decreases damage taken by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Boot, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_589/*If equipped on a helmet, increases cattack speed by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Helmet, 2).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_590/*If equipped on accessories, increases melee armor piercing by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Amulet, 2).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_591/*If equipped in other slots, increases strength by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.ChestArmor, 2).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 7, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 2, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(186), - }; - - //------------- Sapphires - - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_357/*Uncut Sapphire*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_592/*If equipped on a weapon, increases magic damage by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Weapon, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_593/*If equipped on boots, decreases spell cost by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Boot, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_594/*If equipped on a helmet, decreases spell cooldown by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Helmet, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_595/*If equipped on accessories, increases energy on hit by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Amulet, 3).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_596/*If equipped in other slots, increases intelligence by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.ChestArmor, 3).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 3, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 3, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(187), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_358/*Clear Sapphire*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_592/*If equipped on a weapon, increases magic damage by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Weapon, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_593/*If equipped on boots, decreases spell cost by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Boot, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_594/*If equipped on a helmet, decreases spell cooldown by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Helmet, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_595/*If equipped on accessories, increases energy on hit by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Amulet, 3).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_596/*If equipped in other slots, increases intelligence by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.ChestArmor, 3).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 4, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 3, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(187), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_359/*Shiny Sapphire*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_592/*If equipped on a weapon, increases magic damage by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Weapon, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_593/*If equipped on boots, decreases spell cost by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Boot, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_594/*If equipped on a helmet, decreases spell cooldown by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Helmet, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_595/*If equipped on accessories, increases energy on hit by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Amulet, 3).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_596/*If equipped in other slots, increases intelligence by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.ChestArmor, 3).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 5, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 3, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(187), - }; - - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_360/*Enchanted Sapphire*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_592/*If equipped on a weapon, increases magic damage by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Weapon, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_593/*If equipped on boots, decreases spell cost by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Boot, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_594/*If equipped on a helmet, decreases spell cooldown by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Helmet, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_595/*If equipped on accessories, increases energy on hit by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Amulet, 3).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_596/*If equipped in other slots, increases intelligence by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.ChestArmor, 3).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 6, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 3, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(187), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_361/*Celestial Sapphire*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_592/*If equipped on a weapon, increases magic damage by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Weapon, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_593/*If equipped on boots, decreases spell cost by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Boot, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_594/*If equipped on a helmet, decreases spell cooldown by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Helmet, 3).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_595/*If equipped on accessories, increases energy on hit by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Amulet, 3).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_596/*If equipped in other slots, increases intelligence by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.ChestArmor, 3).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 7, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 3, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(187), - }; - - // -------- Moonstones - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_362/*Uncut Moonstone*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_597/*If equipped on a weapon, increases all healing by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Weapon, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_598/*If equipped on boots, increases magic find by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Boot, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_599/*If equipped on a helmet, increases experience gained by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Helmet, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_600/*If equipped on accessories, increases life per second by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Amulet, 4).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_601/*If equipped in other slots, increases vitality by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.ChestArmor, 4).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 3, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 4, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(188), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_363/*Clear Moonstone*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_597/*If equipped on a weapon, increases all healing by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Weapon, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_598/*If equipped on boots, increases magic find by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Boot, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_599/*If equipped on a helmet, increases experience gained by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Helmet, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_600/*If equipped on accessories, increases life per second by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Amulet, 4).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_601/*If equipped in other slots, increases vitality by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.ChestArmor, 4).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 4, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 4, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(188), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_364/*Shiny Moonstone*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_597/*If equipped on a weapon, increases all healing by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Weapon, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_598/*If equipped on boots, increases magic find by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Boot, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_599/*If equipped on a helmet, increases experience gained by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Helmet, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_600/*If equipped on accessories, increases life per second by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Amulet, 4).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_601/*If equipped in other slots, increases vitality by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.ChestArmor, 4).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 5, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 4, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(188), - }; - - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_365/*Enchanted Moonstone*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_597/*If equipped on a weapon, increases all healing by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Weapon, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_598/*If equipped on boots, increases magic find by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Boot, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_599/*If equipped on a helmet, increases experience gained by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Helmet, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_600/*If equipped on accessories, increases life per second by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Amulet, 4).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_601/*If equipped in other slots, increases vitality by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.ChestArmor, 4).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 6, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 4, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(188), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_366/*Celestial Moonstone*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_597/*If equipped on a weapon, increases all healing by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Weapon, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_598/*If equipped on boots, increases magic find by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Boot, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_599/*If equipped on a helmet, increases experience gained by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Helmet, 4).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_600/*If equipped on accessories, increases life per second by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Amulet, 4).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_601/*If equipped in other slots, increases vitality by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.ChestArmor, 4).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 7, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 4, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(188), - }; - - // ----------------- Ores - - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_367/*Lead Ore*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_602/*If equipped on a weapon, increases crit damage by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Weapon, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_603/*If equipped on boots, increases resistance to magic by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Boot, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_604/*If equipped on a helmet, increases health by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Helmet, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_605/*If equipped on accessories, increases thorns by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Amulet, 5).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_606/*If equipped in other slots, increases armor by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.ChestArmor, 5).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 3, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 5, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(184), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_368/*Vanadium Ore*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_602/*If equipped on a weapon, increases crit damage by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Weapon, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_603/*If equipped on boots, increases resistance to magic by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Boot, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_604/*If equipped on a helmet, increases health by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Helmet, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_605/*If equipped on accessories, increases thorns by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Amulet, 5).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_606/*If equipped in other slots, increases armor by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.ChestArmor, 5).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 4, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 5, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(184), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_369/*Titanium Ore*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_602/*If equipped on a weapon, increases crit damage by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Weapon, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_603/*If equipped on boots, increases resistance to magic by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Boot, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_604/*If equipped on a helmet, increases health by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Helmet, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_605/*If equipped on accessories, increases thorns by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Amulet, 5).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_606/*If equipped in other slots, increases armor by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.ChestArmor, 5).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 5, - - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 5, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(184), - }; - - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_370/*Chromium Ore*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_602/*If equipped on a weapon, increases crit damage by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Weapon, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_603/*If equipped on boots, increases resistance to magic by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Boot, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_604/*If equipped on a helmet, increases health by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Helmet, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_605/*If equipped on accessories, increases thorns by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Amulet, 5).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_606/*If equipped in other slots, increases armor by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.ChestArmor, 5).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 6, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 5, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(184), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_371/*Tungsten Ore*/, //tr - description = - Translations.ItemDataBase_ItemDefinitions_602/*If equipped on a weapon, increases crit damage by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Weapon, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_603/*If equipped on boots, increases resistance to magic by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Boot, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_604/*If equipped on a helmet, increases health by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Helmet, 5).ToString("P") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_605/*If equipped on accessories, increases thorns by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Amulet, 5).ToString("N") + "\n" + //tr - Translations.ItemDataBase_ItemDefinitions_606/*If equipped in other slots, increases armor by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.ChestArmor, 5).ToString("N"), //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr - Rarity = 7, - minLevel = 20, - maxLevel = 21, - CanConsume = false, - StackSize = 100, - subtype = 5, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(184), - }; - - //This is the new better way of defining items, no longer uses item ids, now uses enum like in C++, the enum is Stats, you can find it in ItemDataBase_StatDefinitons.cs - new BaseItem(new Stat[][] - { - new [] {MELEEDMGFROMSTR}, - new [] {STRENGTH}, - new [] {BASEMELEEDAMAGE,MELEEDAMAGEINCREASE}, - new [] {MELEEARMORPIERCING,ARMORPIERCING,ALLATTRIBUTES}, - new [] {ATTACKCOSTREDUCTION,ATTACKSPEED}, - new [] {ATTACKSPEED}, - new [] {ALLATTRIBUTES,MELEEWEAPONRANGE,VITALITY,MAXIMUMLIFE}, - new [] {ENERGYONHIT,VITALITY,LIFEONHIT } - }) - { - name = Translations.ItemDataBase_ItemDefinitions_372/*Knife on a stick*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_373/*Kasper named this item, his fault*/, //tr - Rarity = 5, - minLevel = 30, - maxLevel = 34, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Polearm, - icon = Res.ResourceLoader.GetTexture(181), - }; - new BaseItem(new Stat[][] - { - new [] {STRENGTH}, - new [] {STRENGTH,ALLATTRIBUTES,MELEEARMORPIERCING,MELEEDAMAGEINCREASE,COOLDOWNREDUCTION,SPELLDAMAGEINCREASE}, - new [] {MAXIMUMLIFE,VITALITY,PERCENTMAXIMUMLIFE,ALLATTRIBUTES}, - new [] {MELEEDAMAGEINCREASE,DAMAGEREDUCTION}, - new [] {THORNS}, - new [] {VITALITY,LIFEPERSECOND,LIFEREGENERATION}, - new [] {VITALITY,LIFEPERSECOND,LIFEREGENERATION,THORNS}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ENERGYPERSECOND,MAXIMUMENERGY,DODGECHANCE,ARMOR,}, - new [] {STRENGTH,INTELLIGENCE,ARMOR,ARMORPIERCING,THORNS,} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_374/*Fists of Nails*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_375/*Swiss sheese makers*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_376("900%")/*Gain 5 thorns per vitality*/, //tr - Rarity = 7, - minLevel = 20, - maxLevel = 22, - CanConsume = false, - StackSize = 1, - onEquip = () => ModdedPlayer.Stats.thornsPerVit.Add(9), - onUnequip = () => ModdedPlayer.Stats.thornsPerVit.Substract(9), - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new int[][] - { - new int[] {1000}, - new int[] {1001}, - new int[] {1002}, - new int[] {1003}, - new int[] {1004}, - new int[] {1,2,3,4,5,6 }, - new int[] {-1 }, - new int[] {-1 }, - new int[] {-1 }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_377/*Cargo Shorts MK2*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_378/*Deepest pockets out there*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_379/*Improved cargo pants. Twice as many pockets, and since they didnt fit on the outside, they are inside. They are still ugly as hell tho*/, //tr - Rarity = 4, - minLevel = 30, - maxLevel = 33, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - new BaseItem(new Stat[][] - { - new [] {INTELLIGENCE,AGILITY}, - new [] {MAGICFIND,SPELLDAMAGEINCREASE,BASESPELLDAMAGE}, - new [] {SPELLDAMAGEINCREASE,BASESPELLDAMAGE}, - new [] {MAXENERGYFROMAGI,SPELLDMGFROMINT,RANGEDDMGFROMAGI}, - new [] {ARMOR}, - new [] {VITALITY,LIFEPERSECOND,LIFEREGENERATION,INTELLIGENCE,AGILITY,STRENGTH,ALLATTRIBUTES}, - new [] {COOLDOWNREDUCTION,SPELLCOSTREDUCTION,SPELLCOSTTOSTAMINA,MOVEMENTSPEED,DAMAGEREDUCTION}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {DODGECHANCE,ARMOR,BASESPELLDAMAGE,BASERANGEDDAMAGE}, - new [] {BASERANGEDDAMAGE,RANGEDARMORPIERCING,RANGEDDAMAGEINCREASE} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_380/*Aezyn*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_381/*Enchanted with magic as strong as power swing. It's purpose? Hit harder.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_382("1666%")/*Magic arrow damage scaling is increased by 666%*/, //tr - Rarity = 7, - minLevel = 20, - maxLevel = 22, - CanConsume = false, - StackSize = 1, - onEquip = () => ModdedPlayer.Stats.spell_magicArrowDamageScaling.Add(16.66f), - onUnequip = () => ModdedPlayer.Stats.spell_magicArrowDamageScaling.Substract(16.66f), - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - }; - new BaseItem(new Stat[][] - { - new [] {INTELLIGENCE,AGILITY}, - new [] {CRITICALHITCHANCE}, - new [] {CRITICALHITDAMAGE}, - new [] {VITALITY,LIFEPERSECOND,LIFEREGENERATION,INTELLIGENCE,AGILITY,STRENGTH,ALLATTRIBUTES}, - new [] {COOLDOWNREDUCTION,SPELLCOSTREDUCTION,SPELLCOSTTOSTAMINA,MOVEMENTSPEED,DAMAGEREDUCTION}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {DODGECHANCE,ARMOR,BASESPELLDAMAGE,BASERANGEDDAMAGE}, - new [] {BASERANGEDDAMAGE,RANGEDARMORPIERCING,RANGEDDAMAGEINCREASE} - }) - { - name = Translations.ItemDataBase_ItemDefinitions_383/*Punny's Reflective Ring*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_381/*Enchanted with magic as strong as power swing. It's purpose? Hit harder.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_384/*Magic arrow is shot in volleys. This effect can stack.*/, //tr - Rarity = 7, - minLevel = 20, - maxLevel = 22, - CanConsume = false, - StackSize = 1, - onEquip = () => ModdedPlayer.Stats.spell_magicArrowVolleyCount.Add(3), - onUnequip = () => ModdedPlayer.Stats.spell_magicArrowVolleyCount.Substract(3), - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), - }; - new BaseItem(new int[][] - { - new int[] {39,0}, - new int[] {43,0}, - new int[] {67}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_385/*Eyepatch*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_386/*A wise man once said:*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_387/*Everyone thinks I'm just a one-eyed bloody monster, god damnit... (sobbing)*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_388/*Explosion damage is also applied when performing jump attacks*/, //tr - Rarity = 0, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - new BaseItem(new Stat[][] - { - new [] {RANGEDARMORPIERCING}, - new [] {AGILITY}, - new [] {BASERANGEDDAMAGE,RANGEDDAMAGEINCREASE}, - new [] {SPEARDAMAGE}, - new [] {PROJECTILESPEED}, - new [] {ALLATTRIBUTES,PROJECTILESIZE,LESSERAGILITY}, - new [] {ENERGYONHIT,VITALITY,LIFEONHIT } - }) - { - name = Translations.ItemDataBase_ItemDefinitions_389/*Javelin*/, //tr - Rarity = 5, - minLevel = 30, - maxLevel = 34, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Polearm, - icon = Res.ResourceLoader.GetTexture(181), - }; - new BaseItem(new Stat[][] - { - new [] {STRENGTH}, - new [] {MAXIMUMLIFE, VITALITY,PERCENTMAXIMUMLIFE}, - new [] {MELEEARMORPIERCING, MELEEDAMAGEINCREASE,BASEMELEEDAMAGE}, - new [] {MELEEDAMAGEINCREASE,BASEMELEEDAMAGE}, - new [] {ATTACKSPEED, CRITICALHITDAMAGE,CRITICALHITCHANCE}, - new [] {MAXENERGYFROMAGI,PERCENTMAXIMUMENERGY,ENERGYONHIT,LIFEONHIT,LIFEPERSECOND,LIFEREGENERATION,STAMINAPERSECOND,STAMINAREGENERATION}, - new [] {ARMOR,THORNS,DAMAGEREDUCTION,PERCENTMAXIMUMLIFE}, - new [] {ALL}, - new [] {ALL}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_390/*Warplate*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_391/*Enchanted with the power of the GOD's armor. It's purpose? Hit harder, daddy.*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_392/*Strength comes from the power of will, the stronger the will the stronger you are*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - { - var SomeItem = new BaseItem(new Stat[][] - { - new [] {STRENGTH}, - new [] {MAXIMUMLIFE, VITALITY,MAXHEALTHFROMVIT,PERCENTMAXIMUMLIFE}, - new [] {MELEEARMORPIERCING, MELEEDAMAGEINCREASE,BASEMELEEDAMAGE,ATTACKSPEED}, - new [] {SPELLCOSTREDUCTION, CRITICALHITDAMAGE,CRITICALHITCHANCE}, - new [] {ALL}, - new [] {STRENGTH, THORNS}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_393/*Torso of Strength*/, //tr - - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - SomeItem.PossibleStats[0][0].Multipier = 2; - } - { - var demoVestItem = new BaseItem(new Stat[][] - { - new [] {EXPLOSIONDAMAGE}, - new [] {AGILITY,INTELLIGENCE, ALLATTRIBUTES}, - new [] {MAXIMUMLIFE, VITALITY, LIFEONHIT}, - new [] {ALLHEALINGPERCENT}, - new [] {ALL}, - new [] {MELEEWEAPONRANGE,ENERGYONHIT,ARMORPIERCING, DODGECHANCE}, - new [] {MOVEMENTSPEED,BLOCK,MAGICFIND}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_394/*Demoman's Vest*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_395/*What makes me a good demoman? If I were a bad demoman, I wouldn't be sittin' here discussin' it with you, now would I?! LET'S DO IT! Not one of you's gonna survive this! One crossed wire, one wayward pinch of potassium chlorate, one errant twitch, and KA-BLOOIE! I got a manky eye. I'm a black Scottish cyclops. They got more fecking sea monsters in the great Lochett Ness than they got the likes of me. So! T'all you fine dandies, so proud, so cocksure, prancin' about with your heads full of eyeballs... come and get me, I say! I'll be waitin' on you with a whiff of the old brimstone! I'm a Grimm bloody fable with an unhappy bloody end! Oh, they're going to have to glue you back together...IN HELL!*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_392/*Strength comes from the power of will, the stronger the will the stronger you are*/, //tr - Rarity = 5, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - demoVestItem.PossibleStats[0][0].Multipier = 7; - - } - new BaseItem(new Stat[][] - { - new [] {STRENGTH,ALLATTRIBUTES,BASEMELEEDAMAGE}, - new [] {MAXIMUMLIFE, VITALITY,DAMAGEREDUCTION,MELEEWEAPONRANGE}, - new [] {MELEEARMORPIERCING, MELEEDAMAGEINCREASE}, - new [] {MELEEDAMAGEINCREASE,MELEEDMGFROMSTR}, - new [] {SPELLCOSTREDUCTION, CRITICALHITDAMAGE}, - new [] {ALL}, - new [] {STRENGTH,THORNS,BASEMELEEDAMAGE,CRITICALHITCHANCE,ATTACKSPEED,MELEEWEAPONRANGE}, - new [] {ARMOR}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_396/*Brawler's Gloves*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new Stat[][] - { - new [] {ALLATTRIBUTES,STRENGTH,AGILITY,INTELLIGENCE}, - new [] {MAXIMUMLIFE, VITALITY,STRENGTH,INTELLIGENCE}, - new [] {MELEEARMORPIERCING, MELEEDAMAGEINCREASE,RANGEDDAMAGEINCREASE,BASERANGEDDAMAGE,RANGEDARMORPIERCING}, - new [] {SPELLCOSTREDUCTION, CRITICALHITDAMAGE,CRITICALHITCHANCE,SPELLDAMAGEINCREASE,COOLDOWNREDUCTION}, - new [] {ARMORPIERCING}, - new [] {ALL}, - new [] {ARMOR,DAMAGEREDUCTION,RESISTANCETOMAGIC,VITALITY,LESSERVITALITY}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_397/*Nail Gloves*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_398/*Enchanted with the power of penetration. It's purpose? Hit harder.*/, //tr - Rarity = 3, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - - new BaseItem(new Stat[][] - { - new [] {ATTACKSPEED}, - new [] {RANGEDDAMAGEINCREASE,RANGEDDMGFROMAGI}, - new [] {BASERANGEDDAMAGE}, - new [] {BASERANGEDDAMAGE,NONE}, - new [] {PROJECTILESIZE,LESSERAGILITY,AGILITY}, - new [] {PROJECTILESPEED,CRITICALHITCHANCE,CRITICALHITDAMAGE}, - new [] {AGILITY,NONE}, - new [] {RANGEDARMORPIERCING, ARMORPIERCING,ENERGYONHIT}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_399/*Hand-held Ballista*/, //tr - Rarity = 5, - minLevel = 10, - maxLevel = 12, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Greatbow, - icon = Res.ResourceLoader.GetTexture(170), - - }.PossibleStats[0][0].Multipier = -2f; - - new BaseItem(new Stat[][] - { - new [] {STRENGTH,LESSERSTRENGTH}, - new [] {MAXIMUMLIFE, VITALITY,MELEEDMGFROMSTR,ARMOR}, - new [] {MELEEARMORPIERCING, MELEEDAMAGEINCREASE}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_400/*Kuldars's Scarf*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_401/*Strength comes from the power of will*/, //tr - Rarity = 2, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(100), - }; - new BaseItem(new Stat[][] - { - new [] {MELEEDAMAGEINCREASE,MELEEDMGFROMSTR}, - new [] {MAXIMUMLIFE, VITALITY,MELEEDAMAGEINCREASE,BASEMELEEDAMAGE}, - new [] {MELEEARMORPIERCING, MELEEDAMAGEINCREASE,MELEEWEAPONRANGE,ARMOR}, - new [] {SPELLCOSTREDUCTION, CRITICALHITDAMAGE,CRITICALHITCHANCE}, - new [] {ALL}, - new [] {STRENGTH,LESSERSTRENGTH}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_402/*Sword Devil's Scarf*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(100), - }; - new BaseItem(new Stat[][] - { - new [] {STRENGTH}, - new [] {MAXIMUMLIFE, VITALITY}, - new [] {MELEEARMORPIERCING, MELEEDAMAGEINCREASE}, - new [] {SPELLCOSTREDUCTION, CRITICALHITDAMAGE}, - new [] {STRENGTH}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_403/*Peasant's Scarf*/, //tr - Rarity = 3, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(100), - }; - new BaseItem(new Stat[][] - { - new [] {EXPLOSIONDAMAGE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {EXPLOSIONDAMAGE}, - new [] {EXPLOSIONDAMAGE}, - new [] {EXPLOSIONDAMAGE,NONE}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_404/*Bombastinc Choker*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(100), - }.PossibleStats[0][0].Multipier = 7f; - new BaseItem(new Stat[][] - { - new [] {STRENGTH,VITALITY,AGILITY,ALLATTRIBUTES,INTELLIGENCE}, - new [] {MAXENERGYFROMAGI,MELEEDMGFROMSTR,SPELLDMGFROMINT,RANGEDDMGFROMAGI,MAXHEALTHFROMVIT}, - new [] {ARMOR,DAMAGEREDUCTION}, - new [] { CRITICALHITCHANCE, CRITICALHITDAMAGE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {EXPLOSIONDAMAGE}, - new [] {EXPLOSIONDAMAGE,NONE}, - new [] {EXPLOSIONDAMAGE,NONE}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_405/*Explosive Touch*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_406/*Enchanted with the power of the explosions armor. It's purpose? Become the true explosion master*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_407/*Strength comes from the power of will, the stronger the will the stronger the explosion*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new Stat[][] - { - new [] {ARMOR}, - new [] {MAXIMUMLIFE, VITALITY}, - new [] {CRITICALHITCHANCE, CRITICALHITDAMAGE,ATTACKSPEED,BASESPELLDAMAGE,STAMINAPERSECOND}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALLATTRIBUTES}, - new [] {EXPLOSIONDAMAGE}, - new [] {EXPLOSIONDAMAGE}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_408/*Volatile Bracers*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_406/*Enchanted with the power of the explosions armor. It's purpose? Become the true explosion master*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_407/*Strength comes from the power of will, the stronger the will the stronger the explosion*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - }; - new BaseItem(new Stat[][] - { - new [] {ARMOR}, - new [] {MAXIMUMLIFE, VITALITY}, - new [] {CRITICALHITCHANCE, CRITICALHITDAMAGE,ATTACKSPEED,BASESPELLDAMAGE,STAMINAPERSECOND}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {EMPTYSOCKET}, - new [] {EMPTYSOCKET}, - new [] {EXPLOSIONDAMAGE}, - new [] {EXPLOSIONDAMAGE}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_409/*Volatile Helmet*/, //tr - - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - new BaseItem(new Stat[][] - { - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {MAXIMUMLIFE, VITALITY,ARMOR,PERCENTMAXIMUMLIFE,PERCENTMAXIMUMENERGY,MAXHEALTHFROMVIT,THORNS,RESISTANCETOMAGIC}, - new [] {JUMPPOWER}, - new [] {MOVEMENTSPEED}, - new [] {EMPTYSOCKET}, - new [] {EMPTYSOCKET}, - new [] {EXPLOSIONDAMAGE}, - new [] {EXPLOSIONDAMAGE}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_410/*Gunpowder filled socks*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }; - new BaseItem(new Stat[][] - { - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {MAXIMUMLIFE, VITALITY,ARMOR,PERCENTMAXIMUMLIFE,PERCENTMAXIMUMENERGY,MAXHEALTHFROMVIT,THORNS,RESISTANCETOMAGIC}, - new [] {EMPTYSOCKET}, - new [] {EMPTYSOCKET}, - new [] {EXPLOSIONDAMAGE}, - new [] {EXPLOSIONDAMAGE}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_411/*Red Skirt*/, //tr - Rarity = 5, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - new BaseItem(new Stat[][] - { - new [] {ALL}, - new [] {MAXIMUMLIFE, VITALITY,ARMOR}, - new [] {MELEEARMORPIERCING, RANGEDARMORPIERCING}, - new [] {ARMOR, ALLATTRIBUTES,VITALITY,LESSERVITALITY}, - new [] {EXTRACARRIEDSTICKS,EXTRACARRIEDROCKS,EXTRACARRIEDROPES}, - new [] {EXPLOSIONDAMAGE}, - new [] {EXPLOSIONDAMAGE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_412/*Gunpowder Boxers*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - - new BaseItem(new Stat[][] - { - new [] {EXPLOSIONDAMAGE}, - new [] {EXPLOSIONDAMAGE}, - new [] {EXPLOSIONDAMAGE}, - new [] {EXPLOSIONDAMAGE}, - new [] {EXPLOSIONDAMAGE}, - new [] {EXPLOSIONDAMAGE}, - new [] {EXPLOSIONDAMAGE,NONE}, - new [] {EXPLOSIONDAMAGE,NONE}, - new [] {ARMOR}, - new [] {PERCENTMAXIMUMLIFE}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_413/*Jihad Vest*/, //tr - Rarity = 5, - minLevel = 1, - maxLevel = 4, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - - new BaseItem(new Stat[][] - { - new [] {CRITICALHITCHANCE}, - new [] {MAGICFIND,NONE,EXPGAIN}, - new [] {RANGEDDAMAGEINCREASE,MELEEDAMAGEINCREASE}, - new [] {STRENGTH,AGILITY}, - new [] {ALL}, - new [] {CHANCEONHITTOBLEED}, - new [] {CHANCEONHITTOSLOW}, - new [] {CHANCEONHITTOWEAKEN}, - new [] {MAXENERGYFROMAGI,FIREDAMAGE,CRITICALHITDAMAGE,RANGEDDMGFROMAGI,MELEEDMGFROMSTR}, - - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_414/*Ring of Fortune*/, //tr - Rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 10, - maxLevel = 14, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - new BaseItem(new Stat[][] - { - new [] {SPELLDAMAGEINCREASE}, - new [] {INTELLIGENCE}, - new [] {COOLDOWNREDUCTION}, - new [] {ALLATTRIBUTES, INTELLIGENCE,SPELLDAMAGEINCREASE}, - new [] {SPELLDMGFROMINT,MAXENERGYFROMAGI}, - new [] {BASESPELLDAMAGE}, - new [] {PERCENTMAXIMUMENERGY,ENERGYONHIT,ENERGYPERSECOND}, - new [] {FIREDAMAGE,SPELLCOSTREDUCTION,SPELLCOSTTOSTAMINA}, - - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_415/*Mana Ring*/, //tr - Rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 10, - maxLevel = 14, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - new BaseItem(new Stat[][] - { - new [] {MELEEDMGFROMSTR,ALLATTRIBUTES,STAMINAPERSECOND,STAMINAREGENERATION,DODGECHANCE}, - new [] {STRENGTH,LESSERSTRENGTH,VITALITY,ARMOR}, - new [] {MELEEWEAPONRANGE,BASERANGEDDAMAGE,BASEMELEEDAMAGE}, - new [] {VITALITY}, - new [] {MAXHEALTHFROMVIT,MAXENERGYFROMAGI}, - new [] {LIFEPERSECOND}, - new [] {LIFEONHIT}, - new [] {ENERGYONHIT,ENERGYPERSECOND,INTELLIGENCE,AGILITY}, - new [] {MAXIMUMLIFE}, - new [] {PERCENTMAXIMUMLIFE,CRITICALHITCHANCE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_416/*Life Ring*/, //tr - Rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare - minLevel = 10, - maxLevel = 14, - CanConsume = false, - StackSize = 1, //stacking in inventory like in mc, one means single item - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - new BaseItem(new Stat[][] - { - new [] {STRENGTH}, - new [] {MOVEMENTSPEED,DODGECHANCE,DAMAGEREDUCTION}, - new [] {VITALITY,MAXHEALTHFROMVIT,MAXIMUMLIFE,PERCENTMAXIMUMLIFE,ARMOR}, - new [] {INTELLIGENCE,MAXENERGYFROMAGI,PERCENTMAXIMUMENERGY,MAXIMUMENERGY,BASEMELEEDAMAGE,MELEEDAMAGEINCREASE,ARMOR,DAMAGEREDUCTION}, - new [] {MELEEARMORPIERCING,MELEEDAMAGEINCREASE}, - new [] {ARMOR,ATTACKSPEED,STRENGTH}, - new [] {BASEMELEEDAMAGE}, - new [] {BASEMELEEDAMAGE,MELEEDAMAGEINCREASE}, - new [] {MELEEDAMAGEINCREASE,MELEEDMGFROMSTR}, - new [] {CRITICALHITCHANCE,MELEEWEAPONRANGE,ATTACKSPEED}, - new [] {CRITICALHITDAMAGE, MELEEDAMAGEINCREASE, STRENGTH}, - new [] {ENERGYONHIT,ENERGYPERSECOND,MAXIMUMLIFE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_417/*Moritz's Gear*/, //tr - Rarity = 6, - minLevel = 5, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - new BaseItem(new Stat[][] - { - new [] {STRENGTH,BASEMELEEDAMAGE,MELEEDAMAGEINCREASE,ATTACKSPEED}, - new [] {MOVEMENTSPEED,DODGECHANCE,DAMAGEREDUCTION}, - new [] {VITALITY,MAXHEALTHFROMVIT,MAXIMUMLIFE,PERCENTMAXIMUMLIFE,MELEEARMORPIERCING}, - new [] {INTELLIGENCE,STRENGTH,CRITICALHITDAMAGE,PERCENTMAXIMUMENERGY,MAXIMUMENERGY}, - new [] {BASEMELEEDAMAGE}, - new [] {BASEMELEEDAMAGE,MELEEDAMAGEINCREASE}, - new [] {MELEEDAMAGEINCREASE,MELEEDMGFROMSTR}, - new [] {CRITICALHITCHANCE,MELEEWEAPONRANGE}, - new [] {CRITICALHITDAMAGE, MELEEDAMAGEINCREASE, STRENGTH}, - new [] {ENERGYONHIT,ENERGYPERSECOND,MAXIMUMLIFE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_418/*Band of Hurting*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_419/*A ring for a warrior*/, //tr - Rarity = 6, - minLevel = 5, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that - }; - - new BaseItem(new Stat[][] - { - new [] {AGILITY,RANGEDDAMAGEINCREASE}, - new [] {ALLATTRIBUTES, ARMOR,PERCENTMAXIMUMLIFE}, - new [] {CRITICALHITCHANCE}, - new [] {CRITICALHITDAMAGE,NONE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_420/*Straw Hat*/, //tr - Rarity = 2, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - new BaseItem(new Stat[][] - { - new [] {INTELLIGENCE}, - new [] {ALLATTRIBUTES, ARMOR,ENERGYONHIT}, - new [] {BASESPELLDAMAGE}, - new [] {FIREDAMAGE,SPELLDAMAGEINCREASE,SPELLCOSTREDUCTION}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_318/*Hood*/, //tr - Rarity = 2, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - new BaseItem(new Stat[][] - { - new [] {SPEARDAMAGE}, - new [] {AGILITY}, - new [] {STAMINAPERSECOND}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_421/*Rusty Javelin*/, //tr - Rarity = 3, - minLevel = 10, - maxLevel = 16, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Polearm, - icon = Res.ResourceLoader.GetTexture(181), - }; - new BaseItem(new Stat[][] - { - new [] {INTELLIGENCE}, - new [] {DODGECHANCE,DAMAGEREDUCTION}, - new [] {VITALITY,MAXHEALTHFROMVIT,MAXIMUMLIFE,PERCENTMAXIMUMLIFE}, - new [] {SPELLDMGFROMINT}, - new [] {SPELLCOSTREDUCTION,COOLDOWNREDUCTION}, - new [] {SPELLCOSTREDUCTION,COOLDOWNREDUCTION}, - new [] {ENERGYPERSECOND,PERCENTMAXIMUMENERGY,MAXENERGYFROMAGI}, - new [] {BASESPELLDAMAGE,SPELLDAMAGEINCREASE,INTELLIGENCE}, - new [] {BASESPELLDAMAGE,SPELLDAMAGEINCREASE,INTELLIGENCE}, - new [] {BASESPELLDAMAGE,SPELLDAMAGEINCREASE,INTELLIGENCE}, - new [] {BASESPELLDAMAGE,SPELLDAMAGEINCREASE,INTELLIGENCE}, - new [] {ENERGYONHIT,ENERGYPERSECOND,MAXIMUMLIFE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_422/*Star Robe*/, //tr - Rarity = 6, - minLevel = 5, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - new BaseItem(new Stat[][] - { - new [] {ATTACKSPEED}, - new [] {BASESPELLDAMAGE}, - new [] {DODGECHANCE,DAMAGEREDUCTION,MELEEWEAPONRANGE,ARMORPIERCING,FIREDAMAGE,CRITICALHITCHANCE}, - new [] {VITALITY,MAXHEALTHFROMVIT,MAXIMUMLIFE,PERCENTMAXIMUMLIFE,LIFEPERSECOND,LIFEONHIT}, - new [] {SPELLDMGFROMINT}, - new [] {SPELLCOSTREDUCTION,COOLDOWNREDUCTION,CRITICALHITCHANCE,CRITICALHITDAMAGE}, - new [] {SPELLCOSTREDUCTION,COOLDOWNREDUCTION,SPELLCOSTTOSTAMINA,PERCENTMAXIMUMENERGY,LIFEREGENERATION}, - new [] {ENERGYPERSECOND,PERCENTMAXIMUMENERGY,MAXENERGYFROMAGI}, - new [] {INTELLIGENCE,STAMINAPERSECOND,STAMINAREGENERATION}, - new [] {BASESPELLDAMAGE,SPELLDAMAGEINCREASE,INTELLIGENCE,BASEMELEEDAMAGE,ALLATTRIBUTES}, - new [] {BASESPELLDAMAGE,SPELLDAMAGEINCREASE,INTELLIGENCE,DAMAGEREDUCTION}, - new [] {ENERGYONHIT,ENERGYPERSECOND,MAXIMUMLIFE,MASSACREDURATION,MAGICFIND,EXPLOSIONDAMAGE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_423/*Anger*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_424/*Downscaled version of Greatsword Rage, made to be wielded by flimsy wizards*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_425(15)/*Increases maximum stacks of frenzy by 10*/, //tr - Rarity = 7, - minLevel = 6, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.LongSword, - icon = Res.ResourceLoader.GetTexture(88), - onEquip = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Add(15), - onUnequip = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Substract(15), - }.PossibleStats[0][0].Multipier = 1.5f; - - - new BaseItem(new Stat[][] - { - new[] { ARMOR }, - new[] { MOVEMENTSPEED}, - new[] { SPELLDMGFROMINT }, - new[] { SPELLCOSTREDUCTION,SPELLCOSTTOSTAMINA,ARMOR,ALLATTRIBUTES}, - new[] { BASESPELLDAMAGE, SPELLDAMAGEINCREASE, INTELLIGENCE, ALLATTRIBUTES }, - new[] { BASESPELLDAMAGE, SPELLDAMAGEINCREASE, INTELLIGENCE, DAMAGEREDUCTION }, - new[] { VITALITY, MAXHEALTHFROMVIT, MAXIMUMLIFE, PERCENTMAXIMUMLIFE, LIFEPERSECOND, LIFEONHIT }, - new[] { SPELLCOSTREDUCTION, COOLDOWNREDUCTION, CRITICALHITCHANCE, CRITICALHITDAMAGE, ARMOR,MAXHEALTHFROMVIT }, - new[] { SPELLCOSTREDUCTION, COOLDOWNREDUCTION, SPELLCOSTTOSTAMINA, PERCENTMAXIMUMENERGY, LIFEREGENERATION }, - new[] { ENERGYPERSECOND, PERCENTMAXIMUMENERGY, MAXENERGYFROMAGI }, - new[] { INTELLIGENCE, STAMINAPERSECOND, STAMINAREGENERATION, ALLATTRIBUTES, ALLHEALINGPERCENT }, - new[] { ENERGYONHIT, ENERGYPERSECOND, MAXIMUMLIFE, MASSACREDURATION, MAGICFIND, EXPLOSIONDAMAGE }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_426/*Yuki-Onna Strides*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_433("50%", "300%")/*Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by 50%*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_428/*Boots looted off a snow demon*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_429("50%")/*Increses snowstorm damage by 50%*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - onEquip = () => AkagiSet.Equip(), - onUnequip = () => AkagiSet.Unequip(), - }; - - new BaseItem(new Stat[][] - { - new[] { INTELLIGENCE,NONE }, - new[] { ARMOR }, - new[] { ALLHEALINGPERCENT,DODGECHANCE,SPELLDAMAGEINCREASE,BASESPELLDAMAGE}, - new[] { SPELLDMGFROMINT,DAMAGEREDUCTION }, - new[] { SPELLCOSTREDUCTION,SPELLCOSTTOSTAMINA,ARMOR,ALLATTRIBUTES}, - new[] { ARMOR,DAMAGEREDUCTION ,RESISTANCETOMAGIC}, - new[] { INTELLIGENCE, MAXIMUMLIFE,LIFEPERSECOND,SPELLDAMAGEINCREASE,BASESPELLDAMAGE }, - new[] { VITALITY, MAXIMUMLIFE, PERCENTMAXIMUMLIFE, LIFEPERSECOND, LIFEONHIT }, - new[] { SPELLCOSTREDUCTION, COOLDOWNREDUCTION, CRITICALHITCHANCE, CRITICALHITDAMAGE, ARMOR }, - new[] { SPELLCOSTREDUCTION, COOLDOWNREDUCTION, SPELLCOSTTOSTAMINA, PERCENTMAXIMUMENERGY, LIFEREGENERATION,RESISTANCETOMAGIC }, - new[] { ENERGYPERSECOND, PERCENTMAXIMUMENERGY, MAXENERGYFROMAGI,MAXHEALTHFROMVIT }, - new[] { INTELLIGENCE, STAMINAPERSECOND, STAMINAREGENERATION, ALLATTRIBUTES, ALLHEALINGPERCENT }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_430/*Yuki-Onna Greaves*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_433("50%", "300%")/*Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by 50%*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_429("50%")/*Increses snowstorm damage by 50%*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - onEquip = () => AkagiSet.Equip(), - onUnequip = () => AkagiSet.Unequip(), - }; - - new BaseItem(new Stat[][] - { - new[] { INTELLIGENCE,NONE }, - new[] { ARMOR }, - new[] { ALLHEALINGPERCENT,DODGECHANCE}, - new[] { SPELLDMGFROMINT,DAMAGEREDUCTION }, - new[] { SPELLCOSTREDUCTION,SPELLCOSTTOSTAMINA,ARMOR,ALLATTRIBUTES}, - new[] { ARMOR,DAMAGEREDUCTION ,RESISTANCETOMAGIC,SPELLDAMAGEINCREASE,BASESPELLDAMAGE}, - new[] { INTELLIGENCE, MAXIMUMLIFE,LIFEPERSECOND,SPELLDAMAGEINCREASE,BASESPELLDAMAGE }, - new[] { VITALITY, MAXIMUMLIFE, PERCENTMAXIMUMLIFE, LIFEPERSECOND, LIFEONHIT }, - new[] { SPELLCOSTREDUCTION, COOLDOWNREDUCTION, CRITICALHITCHANCE, CRITICALHITDAMAGE, ARMOR }, - new[] { SPELLCOSTREDUCTION, COOLDOWNREDUCTION, SPELLCOSTTOSTAMINA, PERCENTMAXIMUMENERGY, LIFEREGENERATION,RESISTANCETOMAGIC }, - new[] { ENERGYPERSECOND, PERCENTMAXIMUMENERGY, MAXENERGYFROMAGI,MAXHEALTHFROMVIT }, - new[] { INTELLIGENCE, STAMINAPERSECOND, STAMINAREGENERATION, ALLATTRIBUTES, ALLHEALINGPERCENT }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_431/*Yuki-Onna Kimono*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_433("50%", "300%")/*Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by 50%*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_429("50%")/*Increses snowstorm damage by 50%*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - onEquip = () => AkagiSet.Equip(), - onUnequip = () => AkagiSet.Unequip(), - }; - - new BaseItem(new Stat[][] - { - new[] { INTELLIGENCE,NONE }, - new[] { ARMOR }, - new[] { CRITICALHITCHANCE,CRITICALHITDAMAGE}, - new[] { SPELLDMGFROMINT }, - new[] { SPELLCOSTREDUCTION,SPELLCOSTTOSTAMINA,ARMOR,ALLATTRIBUTES}, - new[] { ARMOR, SPELLDAMAGEINCREASE, BASESPELLDAMAGE, RESISTANCETOMAGIC}, - new[] { INTELLIGENCE, MAXIMUMLIFE,LIFEPERSECOND }, - new[] { SPELLDAMAGEINCREASE,BASESPELLDAMAGE, MAXIMUMLIFE, PERCENTMAXIMUMLIFE, LIFEPERSECOND, LIFEONHIT }, - new[] { SPELLCOSTREDUCTION, COOLDOWNREDUCTION, CRITICALHITCHANCE, CRITICALHITDAMAGE, ARMOR }, - new[] { SPELLCOSTREDUCTION, COOLDOWNREDUCTION, SPELLCOSTTOSTAMINA, PERCENTMAXIMUMENERGY, LIFEREGENERATION,RESISTANCETOMAGIC }, - new[] { ENERGYPERSECOND, PERCENTMAXIMUMENERGY, MAXENERGYFROMAGI,MAXHEALTHFROMVIT }, - new[] { INTELLIGENCE, STAMINAPERSECOND, STAMINAREGENERATION, ALLATTRIBUTES, ALLHEALINGPERCENT }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_432/*Yuki-Onna's Headdress*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_433("50%", "300%")/*Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by 50% and damage is increased by 300%*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_429("50%")/*Increses snowstorm damage by 50%*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - onEquip = () => AkagiSet.Equip(), - onUnequip = () => AkagiSet.Unequip(), - }; - - new BaseItem(new Stat[][] - { - new[] { INTELLIGENCE,NONE }, - new[] { ARMOR }, - new[] { CRITICALHITCHANCE,CRITICALHITDAMAGE}, - new[] { SPELLDMGFROMINT }, - new[] { SPELLCOSTREDUCTION,SPELLCOSTTOSTAMINA,ARMOR,ALLATTRIBUTES}, - new[] { ARMOR, SPELLDAMAGEINCREASE, BASESPELLDAMAGE, RESISTANCETOMAGIC}, - new[] { INTELLIGENCE, MAXIMUMLIFE,LIFEPERSECOND }, - new[] { SPELLDAMAGEINCREASE,BASESPELLDAMAGE, MAXIMUMLIFE, PERCENTMAXIMUMLIFE, LIFEPERSECOND, LIFEONHIT }, - new[] { SPELLCOSTREDUCTION, COOLDOWNREDUCTION, CRITICALHITCHANCE, CRITICALHITDAMAGE, ARMOR }, - new[] { SPELLCOSTREDUCTION, COOLDOWNREDUCTION, SPELLCOSTTOSTAMINA, PERCENTMAXIMUMENERGY, LIFEREGENERATION,RESISTANCETOMAGIC }, - new[] { ENERGYPERSECOND, PERCENTMAXIMUMENERGY, MAXENERGYFROMAGI,MAXHEALTHFROMVIT }, - new[] { INTELLIGENCE, STAMINAPERSECOND, STAMINAREGENERATION, ALLATTRIBUTES, ALLHEALINGPERCENT }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_434/*Lama Mega's Blood Bag*/, //tr - description = "", //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_435("15 000%", 15)/*Melee hits cause enemies to bleed for 100% of your health as damage for 15 seconds*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(100), - onEquip = () => COTFEvents.Instance.OnHitMelee.AddListener(UniqueItemFunctions.EnemyBleedForPlayerHP), - onUnequip = () => COTFEvents.Instance.OnHitMelee.RemoveListener(UniqueItemFunctions.EnemyBleedForPlayerHP), - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_436/*Socket Drill*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_437/*A convienient one use tool*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_438/*What's a drill doing here in a place full of primitive tribes?*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_439/*Adds one socket to an item, unless the item can't have any more sockets.*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 100, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(190), - onConsume = x => - { - int socketMax = StatActions.GetMaxSocketAmountOnItem(in x.type); - int socketCurrent = x.Stats.Count(y => y.StatID >= 3000); - if (socketCurrent < socketMax) - { - x.Stats.Add(new ItemStat(ItemDataBase.StatByID(3000))); - return true; - } - return false; - } - }; - new BaseItem(new Stat[][] - { - new[] { MOVEMENTSPEED}, - new[] { INTELLIGENCE,STRENGTH,AGILITY }, - new[] { ALLATTRIBUTES,VITALITY }, - new[] { ARMOR }, - new[] { NONE,JUMPPOWER}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_440/*Moonwalkers*/, //tr - description = "", //tr - lore = Translations.ItemDataBase_ItemDefinitions_441/*Cha cha real smooth.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_442/*Inverts movement*/, //tr - Rarity = 3, - minLevel = 16, - maxLevel = 18, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - onEquip = () => ModdedPlayer.Stats.movementSpeed.Multiply(-1.2f), - onUnequip = () => ModdedPlayer.Stats.movementSpeed.Divide(-1.2f) - }.PossibleStats[0][0].Multipier = 3; - - new BaseItem(new Stat[][] - { - new[] { JUMPPOWER}, - new[] { LESSERAGILITY}, - new[] { LESSERARMOR}, - new[] { PROJECTILESIZE,PROJECTILESIZE,ALLATTRIBUTES,LIFEREGENERATION,LIFEPERSECOND,LESSERVITALITY,AGILITY}, - new[] { RANGEDARMORPIERCING,RANGEDDAMAGEINCREASE,BASERANGEDDAMAGE,ATTACKSPEED}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_443/*Rabbit Ears Hairband*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_444/*Cute*/, //tr - lore = "", //tr - Rarity = 3, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - new BaseItem(new Stat[][] - { - new[] { JUMPPOWER}, - new[] { AGILITY}, - new[] { ARMOR}, - new[] { PROJECTILESIZE,PROJECTILESIZE,ALLATTRIBUTES,LIFEREGENERATION,LIFEPERSECOND,VITALITY,INTELLIGENCE,AGILITY}, - new[] { RANGEDARMORPIERCING,RANGEDDAMAGEINCREASE,BASERANGEDDAMAGE,ATTACKSPEED}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_445/*Bunny Ears Hairband*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_444/*Cute*/, //tr - lore = "", //tr - Rarity = 4, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - new BaseItem(new int[][] - { - new int[] {11}, - new int[] {16}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000}, - new int[] {3000,0}, - new int[] {3000,0}, - new int[] {3000,0}, - new int[] {3000,0}, - new int[] {3000,0}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_446/*Iron plate full of holes*/, //tr - description = "", //tr - lore = Translations.ItemDataBase_ItemDefinitions_447/*The integrity of this item is questionable*/, //tr - Rarity = 3, - minLevel = 50, - maxLevel = 60, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - new BaseItem(new Stat[][] - { - new [] {ALL}, - new [] {BASESPELLDAMAGE,BASERANGEDDAMAGE,BASEMELEEDAMAGE}, - new [] {SPELLDMGFROMINT,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,DAMAGEREDUCTION}, - new [] {ALLATTRIBUTES,AGILITY,STRENGTH,INTELLIGENCE,VITALITY}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_448/*Small Tribal Necklace*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_449(2)/*Increases maximum stacks of frenzy by 2*/, //tr - Rarity = 4, - minLevel = 6, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(100), - onEquip = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Add(2), - onUnequip = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Substract(2), - }; - new BaseItem(new Stat[][] - { - new [] {ALL}, - new [] {ALL}, - new [] {BASESPELLDAMAGE,BASERANGEDDAMAGE,BASEMELEEDAMAGE}, - new [] {SPELLDMGFROMINT,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,DAMAGEREDUCTION}, - new [] {ALLATTRIBUTES,AGILITY,STRENGTH,INTELLIGENCE,VITALITY}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_450/*Tribal Necklace*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_451(3)/*Increases maximum stacks of frenzy by 3*/, //tr - Rarity = 4, - minLevel = 6, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(100), - onEquip = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Add(3), - onUnequip = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Substract(3), - }; - new BaseItem(new Stat[][] - { - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {BASESPELLDAMAGE,BASERANGEDDAMAGE,BASEMELEEDAMAGE}, - new [] {SPELLDMGFROMINT,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,DAMAGEREDUCTION}, - new [] {ALLATTRIBUTES,AGILITY,STRENGTH,INTELLIGENCE,VITALITY}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_452/*Warlord Necklace*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_453(4)/*Increases maximum stacks of frenzy by 4*/, //tr - Rarity = 5, - minLevel = 6, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(100), - onEquip = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Add(4), - onUnequip = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Substract(4), - }; - new BaseItem(new Stat[][] - { - new [] {ALL}, - new [] {ALL}, - new [] {MOVEMENTSPEED,COOLDOWNREDUCTION}, - new [] {JUMPPOWER,ATTACKSPEED,MOVEMENTSPEED,ENERGYPERSECOND}, - new [] {BASESPELLDAMAGE,BASERANGEDDAMAGE,BASEMELEEDAMAGE,CRITICALHITCHANCE,CRITICALHITDAMAGE}, - new [] {ALLATTRIBUTES,AGILITY,STRENGTH,INTELLIGENCE,VITALITY}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_454/*Travel Band*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_455(25)/*The distance of blink is increased by 20 feet*/, //tr - Rarity = 5, - minLevel = 5, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), - onEquip = () => { ModdedPlayer.Stats.spell_blinkRange.Add(25); }, - onUnequip = () => { ModdedPlayer.Stats.spell_blinkRange.Substract(25); }, - }; - - new BaseItem(new Stat[][] - { - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {COOLDOWNREDUCTION,NONE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_456/*Destroyed Void Shard*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_457/*Only a fraction of its previous might remains*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_154/*A pedant of great power. Obtainable only from babies or crafting*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_458(1)/*Decrease the cooldown of one ability by 1 second whenever you hit something with melee or ranged attack.*/, //tr - Rarity = 6, - minLevel = 80, - maxLevel = 90, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(101), - onEquip = () => ModdedPlayer.Stats.i_infinityLoop.value = true, - onUnequip = () => ModdedPlayer.Stats.i_infinityLoop.value = false, - }; - new BaseItem(new int[][] - { - new int[] {25 }, - new int[] {18 }, - new int[] {2004 }, - new int[] {1,3,62,63,64}, - new int[] {53,16}, - new int[] {25 ,22,1,12,13,5,6}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_459/*Famine Hammer*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_163/*It's slow but with enough strength i can make it a very deadly tool*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_460("30%")/*Chance to weaken enemies, causing them to take more damage from all attacks, is increased by 30%*/, //tr - Rarity = 4, - minLevel = 30, - maxLevel = 35, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Hammer, - icon = Res.ResourceLoader.GetTexture(109), - onEquip = () => ModdedPlayer.Stats.chanceToWeaken.Add(0.3f), - onUnequip = () => ModdedPlayer.Stats.chanceToWeaken.Substract(0.3f), - }; - - new BaseItem(new int[][] - { - new int[] {25 }, - new int[] {18 }, - new int[] {-1 }, - new int[] {2004 }, - new int[] {1,3,62,63,64}, - new int[] {53,16}, - new int[] {25 ,22,1,12,13,5,6}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_461/*Curse Hammer*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_462/*Omnious Weapon*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_463("45%")/*Chance to weaken enemies, causing them to take more damage from all attacks, is increased by 40%*/, //tr - Rarity = 5, - minLevel = 30, - maxLevel = 35, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Hammer, - icon = Res.ResourceLoader.GetTexture(109), - onEquip = () => ModdedPlayer.Stats.chanceToWeaken.Add(0.45f), - onUnequip = () => ModdedPlayer.Stats.chanceToWeaken.Substract(0.45f), - }; - new BaseItem(new Stat[][] - { - new [] {ALL}, - new [] {ALL}, - new [] {MELEEDAMAGEINCREASE,MELEEDMGFROMSTR}, - new [] {STRENGTH}, - new [] {BASEMELEEDAMAGE}, - new [] {ATTACKCOSTREDUCTION,ATTACKSPEED,LIFEONHIT,ENERGYONHIT,NONE,NONE,NONE}, - new [] {ALLATTRIBUTES,VITALITY,MELEEDAMAGEINCREASE,MELEEARMORPIERCING}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_464/*Smasher*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_163/*It's slow but with enough strength i can make it a very deadly tool*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_465/*Smash damage is increased tripled*/, //tr - Rarity = 5, - minLevel = 30, - maxLevel = 35, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Hammer, - icon = Res.ResourceLoader.GetTexture(109), - onEquip = () => { ModdedPlayer.Stats.smashDamage.Multiply(3f); }, - onUnequip = () => { ModdedPlayer.Stats.smashDamage.Divide(3f); }, - }; - new BaseItem(new Stat[][] - { - new [] {ALL}, - new [] {LIFEONHIT}, - new [] {ENERGYONHIT}, - new [] {STAMINAREGENERATION,PERCENTMAXIMUMENERGY,PERCENTMAXIMUMLIFE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_466/*Vampiric Band*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_467(1)/*Gain 1 stamina on ranged and melee hit or double that amount on critical hits*/, //tr - Rarity = 3, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), - onEquip = () => COTFEvents.Instance.OnHitEnemy.AddListener(UniqueItemFunctions.Gain1EnergyOnHit), - onUnequip = () => COTFEvents.Instance.OnHitEnemy.RemoveListener(UniqueItemFunctions.Gain1EnergyOnHit), - }; - new BaseItem(new Stat[][] - { - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {LIFEONHIT}, - new [] {CRITICALHITCHANCE,CRITICALHITDAMAGE}, - new [] {MELEEDAMAGEINCREASE,RANGEDDAMAGEINCREASE,SPELLDAMAGEINCREASE}, - new [] {ENERGYONHIT}, - new [] {STAMINAREGENERATION,PERCENTMAXIMUMENERGY,PERCENTMAXIMUMLIFE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_468/*Vampire Ring*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_469(10)/*Gain 10 stamina on ranged and melee hit or double that amount on critical hits*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Ring, - icon = Res.ResourceLoader.GetTexture(90), - onEquip = () => COTFEvents.Instance.OnHitEnemy.AddListener(UniqueItemFunctions.Gain10EnergyOnHit), - onUnequip = () => COTFEvents.Instance.OnHitEnemy.RemoveListener(UniqueItemFunctions.Gain10EnergyOnHit), - }; - new BaseItem(new Stat[][] - { - new [] {SPELLDAMAGEINCREASE,INTELLIGENCE,BASESPELLDAMAGE}, - new [] {SPELLDAMAGEINCREASE,INTELLIGENCE,BASESPELLDAMAGE}, - new [] {VITALITY,LIFEPERSECOND,LIFEREGENERATION,INTELLIGENCE,AGILITY,STRENGTH,ALLATTRIBUTES}, - new [] {COOLDOWNREDUCTION,SPELLCOSTREDUCTION,SPELLCOSTTOSTAMINA,INTELLIGENCE,DAMAGEREDUCTION}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_470/*Tricksters Scarf*/, //tr - description = "", //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_471(1)/*Magic arrow shoots 1 additional arrow.*/, //tr - Rarity = 4, - minLevel = 20, - maxLevel = 22, - CanConsume = false, - StackSize = 1, - onEquip = () => ModdedPlayer.Stats.spell_magicArrowVolleyCount.Add(1), - onUnequip = () => ModdedPlayer.Stats.spell_magicArrowVolleyCount.Substract(1), - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(100) - }; - new BaseItem(new Stat[][] - { - new [] {SPELLDAMAGEINCREASE,INTELLIGENCE,BASESPELLDAMAGE}, - new [] {SPELLDAMAGEINCREASE,INTELLIGENCE,BASESPELLDAMAGE}, - new [] {VITALITY,LIFEPERSECOND,LIFEREGENERATION,INTELLIGENCE,AGILITY,STRENGTH,ALLATTRIBUTES}, - new [] {COOLDOWNREDUCTION,SPELLCOSTREDUCTION,SPELLCOSTTOSTAMINA,INTELLIGENCE,DAMAGEREDUCTION}, - new [] {INTELLIGENCE}, - new [] {ALL}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_472/*Magus' Necktie*/, //tr - description = "", //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_473(2)/*Magic arrow shoots 2 additional arrows.*/, //tr - Rarity = 5, - minLevel = 50, - maxLevel = 52, - CanConsume = false, - StackSize = 1, - onEquip = () => ModdedPlayer.Stats.spell_magicArrowVolleyCount.Add(2), - onUnequip = () => ModdedPlayer.Stats.spell_magicArrowVolleyCount.Substract(2), - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(100) - }; - new BaseItem(new int[][] - { - new int[] {23,26}, - new int[] {34,18,17,16,15,14,60,61,55,}, - new int[] {16,19,23,31,54,51,52,66,57}, - new int[] {2,3,4,5,6,7,8,9,10}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_474/*Discounted Knockoff Magic Quiver*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_475("15%")/*There's a 15% increased chance to not consume ammo when firing a projectile.*/, //tr - Rarity = 3, - minLevel = 2, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Quiver, - icon = Res.ResourceLoader.GetTexture(98), - onEquip = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Add(0.15f), - onUnequip = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Substract(0.15f), - }; - new BaseItem(new int[][] - { - new int[] {23,26}, - new int[] {34,18,17,16,15,14,60,61,55,}, - new int[] {16,19,23,31,54,51,52,66,57}, - new int[] {2,48,0,0}, - new int[] {2,3,4,5,6,7,8,9,10}, - new int[] {2,1,5,6,0}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_476/*Magic Quiver*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_477("20%")/*There's a 20% increased chance to not consume ammo when firing a projectile.*/, //tr - Rarity = 4, - minLevel = 2, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Quiver, - icon = Res.ResourceLoader.GetTexture(98), - onEquip = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Add(0.2f), - onUnequip = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Substract(0.2f), - }; - new BaseItem(new int[][] - { - new int[] {23,26}, - new int[] {23}, - new int[] {34,18,17,16,15,14,60,61,55,}, - new int[] {16,19,23,31,54,51,52,66,57}, - new int[] {2,48}, - new int[] {2,3,4,5,6,7,8,9,10}, - new int[] {2,1,5,6}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_478/*Improved Magic Quiver*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_479("25%")/*There's a 25% increased chance to not consume ammo when firing a projectile.*/, //tr - Rarity = 5, - minLevel = 2, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Quiver, - icon = Res.ResourceLoader.GetTexture(98), - onEquip = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Add(0.25f), - onUnequip = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Substract(0.25f), - }; - new BaseItem(new int[][] - { - new int[] {23,26}, - new int[] {23}, - new int[] {34,18,17,16,15,14,60,61,55,}, - new int[] {16,19,23,31,54,51,52,66,57}, - new int[] {2,16,14}, - new int[] {2,3,4,5,6,7,8,9,10}, - new int[] {48}, - new int[] {-1}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_480/*Factory Quiver*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_481("40%")/*There's a 40% increased chance to not consume ammo when firing a projectile.*/, //tr - Rarity = 6, - minLevel = 12, - maxLevel = 20, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Quiver, - icon = Res.ResourceLoader.GetTexture(98), - onEquip = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Add(0.4f), - onUnequip = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Substract(0.4f), - }; - - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_482/*Enzyme STR/34*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_484/*Changes Vitality, Agility or Intelligence stat on an item to Strength or changes Ranged or Spell damage stat to Melee Damage*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 100, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(193), - onConsume = x => - { - if (x.Equipped) - return false; - - var stats = x.Stats.Where(y => y.StatID == (int)VITALITY || y.StatID == (int)INTELLIGENCE || y.StatID == (int)AGILITY - || y.StatID == (int)LESSERVITALITY || y.StatID == (int)LESSERINTELLIGENCE || y.StatID == (int)LESSERAGILITY - || y.StatID == (int)BASERANGEDDAMAGE || y.StatID == (int)BASESPELLDAMAGE - || y.StatID == (int)RANGEDDAMAGEINCREASE || y.StatID == (int)SPELLDAMAGEINCREASE).ToArray(); - - int c = stats.Count(); - - - if (c == 0) - return false; - int i = UnityEngine.Random.Range(0, c); - ItemStat stat = stats[i]; - int index = x.Stats.IndexOf(stat); - - ItemStat newStat; - Stat statID = (Stat)stat.StatID; - switch (statID) - { - case VITALITY: - case INTELLIGENCE: - case AGILITY: - newStat = new ItemStat(StatByID((int)STRENGTH)); - break; - case LESSERVITALITY: - case LESSERINTELLIGENCE: - case LESSERAGILITY: - newStat = new ItemStat(StatByID((int)LESSERSTRENGTH)); - break; - case BASERANGEDDAMAGE: - case BASESPELLDAMAGE: - newStat = new ItemStat(StatByID((int)BASEMELEEDAMAGE)); - break; - case RANGEDDAMAGEINCREASE: - case SPELLDAMAGEINCREASE: - newStat = new ItemStat(StatByID((int)MELEEDAMAGEINCREASE)); - break; - default: - return false; - } - newStat.Amount = stat.Amount; - newStat.possibleStatsIndex = stat.possibleStatsIndex; - x.Stats[index] = newStat; - return true; - } - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_485/*Enzyme INT/33*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_486/*Changes Vitality, Agility or Strength stat on an item to Intelligence or changes Ranged or Melee damage stat to Spell Damage*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 100, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(191), - onConsume = x => - { - if (x.Equipped) - return false; - - var stats = x.Stats.Where(y => y.StatID == (int)VITALITY || y.StatID == (int)STRENGTH || y.StatID == (int)AGILITY - || y.StatID == (int)LESSERVITALITY || y.StatID == (int)LESSERSTRENGTH || y.StatID == (int)LESSERAGILITY - || y.StatID == (int)BASERANGEDDAMAGE || y.StatID == (int)BASEMELEEDAMAGE - || y.StatID == (int)RANGEDDAMAGEINCREASE || y.StatID == (int)MELEEDAMAGEINCREASE).ToArray(); - - int c = stats.Count(); - - - if (c == 0) - return false; - int i = UnityEngine.Random.Range(0, c); - ItemStat stat = stats[i]; - int index = x.Stats.IndexOf(stat); - - ItemStat newStat; - Stat statID = (Stat)stat.StatID; - switch (statID) - { - case VITALITY: - case STRENGTH: - case AGILITY: - newStat = new ItemStat(StatByID((int)INTELLIGENCE)); - break; - case LESSERVITALITY: - case LESSERSTRENGTH: - case LESSERAGILITY: - newStat = new ItemStat(StatByID((int)LESSERINTELLIGENCE)); - break; - case BASERANGEDDAMAGE: - case BASEMELEEDAMAGE: - newStat = new ItemStat(StatByID((int)BASESPELLDAMAGE)); - break; - case RANGEDDAMAGEINCREASE: - case MELEEDAMAGEINCREASE: - newStat = new ItemStat(StatByID((int)SPELLDAMAGEINCREASE)); - break; - default: - return false; - } - newStat.Amount = stat.Amount; - newStat.possibleStatsIndex = stat.possibleStatsIndex; - x.Stats[index] = newStat; - return true; - } - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_487/*Enzyme AGI/39*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_488/*Changes Vitality, Intelligence or Strength stat on an item to Agility or changes Melee or Spell damage stat to Ranged Damage*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 100, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(192), - onConsume = x => - { - if (x.Equipped) - return false; - - var stats = x.Stats.Where(y => y.StatID == (int)VITALITY || y.StatID == (int)STRENGTH || y.StatID == (int)INTELLIGENCE - || y.StatID == (int)LESSERVITALITY || y.StatID == (int)LESSERSTRENGTH || y.StatID == (int)LESSERINTELLIGENCE - || y.StatID == (int)BASESPELLDAMAGE || y.StatID == (int)BASEMELEEDAMAGE - || y.StatID == (int)SPELLDAMAGEINCREASE || y.StatID == (int)MELEEDAMAGEINCREASE).ToArray(); - - int c = stats.Count(); - - - if (c == 0) - return false; - int i = UnityEngine.Random.Range(0, c); - ItemStat stat = stats[i]; - int index = x.Stats.IndexOf(stat); - - ItemStat newStat; - Stat statID = (Stat)stat.StatID; - switch (statID) - { - case VITALITY: - case INTELLIGENCE: - case STRENGTH: - newStat = new ItemStat(StatByID((int)AGILITY)); - break; - case LESSERVITALITY: - case LESSERINTELLIGENCE: - case LESSERSTRENGTH: - newStat = new ItemStat(StatByID((int)LESSERAGILITY)); - break; - case BASEMELEEDAMAGE: - case BASESPELLDAMAGE: - newStat = new ItemStat(StatByID((int)BASERANGEDDAMAGE)); - break; - case MELEEDAMAGEINCREASE: - case SPELLDAMAGEINCREASE: - newStat = new ItemStat(StatByID((int)RANGEDDAMAGEINCREASE)); - break; - default: - return false; - } - newStat.Amount = stat.Amount; - newStat.possibleStatsIndex = stat.possibleStatsIndex; - x.Stats[index] = newStat; - return true; - } - }; - - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_489/*Enzyme VIT/449*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_490/*Changes Agility, Intelligence or Strength stat on an item to Vitality*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 100, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(199), - onConsume = x => - { - if (x.Equipped) - return false; - - var stats = x.Stats.Where(y => y.StatID == (int)VITALITY || y.StatID == (int)STRENGTH || y.StatID == (int)INTELLIGENCE - || y.StatID == (int)LESSERAGILITY || y.StatID == (int)LESSERSTRENGTH || y.StatID == (int)LESSERINTELLIGENCE).ToArray(); - - int c = stats.Count(); - - - if (c == 0) - return false; - int i = UnityEngine.Random.Range(0, c); - ItemStat stat = stats[i]; - int index = x.Stats.IndexOf(stat); - - ItemStat newStat; - Stat statID = (Stat)stat.StatID; - switch (statID) - { - case AGILITY: - case INTELLIGENCE: - case STRENGTH: - newStat = new ItemStat(StatByID((int)VITALITY)); - break; - case LESSERAGILITY: - case LESSERINTELLIGENCE: - case LESSERSTRENGTH: - newStat = new ItemStat(StatByID((int)LESSERVITALITY)); - break; - default: - return false; - } - newStat.Amount = stat.Amount; - newStat.possibleStatsIndex = stat.possibleStatsIndex; - x.Stats[index] = newStat; - return true; - } - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_491/*Stomach Acid*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_492/*Removes all stats with negative values from an item*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 100, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(198), - onConsume = x => - { - if (x.Equipped) - return false; - - var stats = x.Stats.RemoveAll(y => y.Amount < 0); - if (stats > 0) - return true; - return false; - } - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_493/*Elite Stomach Acid*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_494/*Changes negative stat values into positive values on an item*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 100, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(198), - onConsume = x => - { - if (x.Equipped) - return false; - - var stats = x.Stats.Where(y => y.Amount < 0).ToList(); - if (stats.Count > 0) - { - for (int i = 0; i < stats.Count; i++) - { - stats[i].Amount *= -1; - } - return true; - } - return false; - } - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_495/*Crimson Solution*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_496/*Upgrades item of any rarity to one of the same type but of Legendary rarity*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 100, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(196), - onConsume = x => - { - if (x.Equipped) - return false; - var itemType = x.type; - if (itemType == BaseItem.ItemType.Other || itemType == BaseItem.ItemType.Material || x.Amount > 1) - return false; - if (Player.Inventory.Instance.ItemSlots.ContainsValue(x)) - { - for (int slotIndex = 0; slotIndex < Inventory.SlotCount; slotIndex++) - { - if (Player.Inventory.Instance.ItemSlots[slotIndex] == x) - { - var options = ItemDataBase.ItemBases.Where(y => y.Value.Rarity == 7 && y.Value.type == itemType && (itemType != BaseItem.ItemType.Weapon || y.Value.weaponModel == x.weaponModel)).Select(y => y.Key).ToList(); - if (options.Count == 0) - { - ModAPI.Log.Write("No tier 7 items for type: " + itemType); - return false; - } - var random = options[UnityEngine.Random.Range(0, options.Count)]; - Item item = new Item(ItemDataBase.ItemBases[random], 1, 0, false) - { - level = x.level - }; - item.RollStats(); - Inventory.Instance.ItemSlots[slotIndex] = item; - return true; - } - } - } - return false; - } - }; - - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_497/*Weak Armor Hardening Mixture*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_498/*Adds Armor Stat to a piece of equipment if the item does not already have it*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 100, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(197), - onConsume = x => - { - if (x.Equipped) - return false; - var itemType = x.type; - if (itemType == BaseItem.ItemType.Other || itemType == BaseItem.ItemType.Material || x.Amount > 1) - return false; - if (!x.Stats.Any(y => y.StatID == (int)ARMOR || y.StatID == (int)LESSERARMOR)) - { - ItemStat stat = new ItemStat(StatByID((int)ARMOR), x.level); - x.Stats.Add(stat); - return true; - } - return false; - } - }; - - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_499/*Upgraded Armor Hardening Mixture*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_500/*Adds Damage Reduction Stat to a piece of equipment if the item does not already have it*/, //tr - Rarity = 5, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 100, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(197), - onConsume = x => - { - if (x.Equipped) - return false; - var itemType = x.type; - if (itemType == BaseItem.ItemType.Other || itemType == BaseItem.ItemType.Material || x.Amount > 1) - return false; - if (!x.Stats.Any(y => y.StatID == (int)DAMAGEREDUCTION)) - { - ItemStat stat = new ItemStat(StatByID((int)DAMAGEREDUCTION), x.level); - x.Stats.Add(stat); - return true; - } - return false; - } - }; - - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_501/*Chaos Water*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_502/*Rerolls all stats on an item of rarity no higher than orange*/, //tr - Rarity = 4, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 100, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(195), - onConsume = x => - { - if (x.Equipped) - return false; - var itemType = x.type; - if (itemType == BaseItem.ItemType.Other || itemType == BaseItem.ItemType.Material || x.Amount > 1 || x.Rarity > 5) - return false; - if (x.Stats.Count > 1) - { - x.RollStats(); - return true; - } - return false; - } - }; - new BaseItem(new int[][] { }) - { - name = Translations.ItemDataBase_ItemDefinitions_503/*Upgraded Chaos Water*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_504/*Rerolls all stats on an item of any rarity*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 100, - type = BaseItem.ItemType.Material, - icon = Res.ResourceLoader.GetTexture(194), - onConsume = x => - { - if (x.Equipped) - return false; - var itemType = x.type; - if (itemType == BaseItem.ItemType.Other || itemType == BaseItem.ItemType.Material || x.Amount > 1) - return false; - if (x.Stats.Count > 1) - { - x.RollStats(); - return true; - } - return false; - } - }; - new BaseItem(new Stat[][] - { - new [] {SPELLCOSTREDUCTION,MELEEDAMAGEINCREASE,SPELLDAMAGEINCREASE,COOLDOWNREDUCTION,DAMAGEREDUCTION, RANGEDDMGFROMAGI, ATTACKSPEED}, - new [] {AGILITY,LESSERAGILITY}, - new [] {MELEEARMORPIERCING,RANGEDARMORPIERCING,ARMORPIERCING,ARMOR}, - new [] {RANGEDDAMAGEINCREASE,RANGEDDMGFROMAGI,BASERANGEDDAMAGE,CRITICALHITCHANCE,CRITICALHITDAMAGE,ALLATTRIBUTES}, - new [] {INTELLIGENCE,STRENGTH,AGILITY,VITALITY,ALLATTRIBUTES,MAXIMUMLIFE,MAXIMUMENERGY}, - new [] {INTELLIGENCE,STRENGTH,AGILITY,VITALITY,ALLATTRIBUTES,LIFEONHIT,ENERGYONHIT,ENERGYPERSECOND,ALLHEALINGPERCENT}, - new [] {RANGEDDAMAGEINCREASE,BASERANGEDDAMAGE,AGILITY}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_505/*Gun Blade*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_506("150%")/*Increases pistol damage by 150%*/, //tr - Rarity = 6, - minLevel = 35, - maxLevel = 36, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Axe, - icon = Res.ResourceLoader.GetTexture(138), - onEquip = () => ModdedPlayer.Stats.perk_bulletDamageMult.Multiply(2.5f), - onUnequip = () => ModdedPlayer.Stats.perk_bulletDamageMult.Divide(2.5f), - }.PossibleStats[0][0].Multipier = -1f; - - new BaseItem(new Stat[][] - { - new [] {SPELLCOSTREDUCTION,BASESPELLDAMAGE,SPELLDAMAGEINCREASE,COOLDOWNREDUCTION,DAMAGEREDUCTION}, - new [] {ATTACKSPEED,PROJECTILESIZE,PROJECTILESPEED}, - new [] {AGILITY,LESSERAGILITY}, - new [] {HEADSHOTDAMAGE}, - new [] {MELEEARMORPIERCING,RANGEDARMORPIERCING,ARMORPIERCING,ARMOR,RESISTANCETOMAGIC,MAGICFIND}, - new [] {RANGEDDAMAGEINCREASE,RANGEDDMGFROMAGI,BASERANGEDDAMAGE,CRITICALHITCHANCE,CRITICALHITDAMAGE,ALLATTRIBUTES,MAXENERGYFROMAGI}, - new [] {RANGEDDAMAGEINCREASE,BASERANGEDDAMAGE,AGILITY,VITALITY,INTELLIGENCE,CRITICALHITCHANCE,CRITICALHITDAMAGE}, - new [] {RANGEDDAMAGEINCREASE,BASERANGEDDAMAGE,AGILITY,VITALITY,INTELLIGENCE,HEADSHOTDAMAGE}, - new [] {INTELLIGENCE,STRENGTH,AGILITY,VITALITY,ALLATTRIBUTES,MAXIMUMLIFE,MAXIMUMENERGY}, - new [] {INTELLIGENCE,STRENGTH,AGILITY,VITALITY,ALLATTRIBUTES,LIFEONHIT,ENERGYONHIT,ENERGYPERSECOND,ALLHEALINGPERCENT}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_507/*Sharpshooter's Axe*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_508("50%", "600%")/*Increases pistol headshot chance by 50% and pistol damage by 600%*/, //tr - Rarity = 7, - minLevel = 35, - maxLevel = 36, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Axe, - icon = Res.ResourceLoader.GetTexture(138), - onEquip = () => { ModdedPlayer.Stats.perk_bulletDamageMult.Multiply(6f); ModdedPlayer.Stats.perk_bulletCritChance.Add(0.5f); }, - onUnequip = () => { ModdedPlayer.Stats.perk_bulletDamageMult.Divide(6f); ModdedPlayer.Stats.perk_bulletCritChance.Substract(0.5f); }, - }; - new BaseItem(new Stat[][] - { - new [] {ARMORPIERCING,MELEEARMORPIERCING,NONE}, - new [] {BLOCK,NONE}, - new [] {ARMOR,MAXIMUMLIFE,MAXHEALTHFROMVIT,DAMAGEREDUCTION,RESISTANCETOMAGIC,DODGECHANCE}, - new [] {ARMOR,MAXIMUMLIFE,MAXHEALTHFROMVIT,DAMAGEREDUCTION,VITALITY,STRENGTH,ALLATTRIBUTES}, - new [] {ARMOR,MAXIMUMLIFE,MAXHEALTHFROMVIT,DAMAGEREDUCTION,VITALITY,STRENGTH,ALLATTRIBUTES,THORNS}, - new [] {THORNS,MELEEDAMAGEINCREASE,VITALITY,STRENGTH}, - new [] {STRENGTH,ARMOR,MELEEARMORPIERCING}, - new [] {MELEEDAMAGEINCREASE,MELEEDMGFROMSTR,BASEMELEEDAMAGE}, - new [] {MELEEDAMAGEINCREASE,ATTACKSPEED,BASEMELEEDAMAGE,MELEEWEAPONRANGE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_509/*Shield Blade*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_510/*So large can be used as a shield*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_511/*A normal human cannot lift this weapon.*/, //tr - Rarity = 6, - minLevel = 50, - maxLevel = 52, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.GreatSword, - icon = Res.ResourceLoader.GetTexture(88), - }; - new BaseItem(new Stat[][] - { - new [] {ARMORPIERCING,MELEEARMORPIERCING}, - new [] {BLOCK,NONE}, - new [] {ARMOR,MAXIMUMLIFE,MAXHEALTHFROMVIT,DAMAGEREDUCTION,RESISTANCETOMAGIC,DODGECHANCE}, - new [] {ARMOR,MAXIMUMLIFE,MAXHEALTHFROMVIT,DAMAGEREDUCTION,VITALITY,STRENGTH,ALLATTRIBUTES}, - new [] {ARMOR,MAXIMUMLIFE,MAXHEALTHFROMVIT,DAMAGEREDUCTION,VITALITY,STRENGTH,ALLATTRIBUTES,THORNS}, - new [] {THORNS,MELEEDAMAGEINCREASE,VITALITY,STRENGTH}, - new [] {STRENGTH,ARMOR,MELEEARMORPIERCING}, - new [] {MELEEDAMAGEINCREASE,MELEEDMGFROMSTR,BASEMELEEDAMAGE}, - new [] {MELEEDAMAGEINCREASE,ATTACKSPEED,BASEMELEEDAMAGE,MELEEWEAPONRANGE}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_512/*Blunt Blade for Bashing Skulls*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_510/*So large can be used as a shield*/, //tr - lore = Translations.ItemDataBase_ItemDefinitions_511/*A normal human cannot lift this weapon.*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_513("200%")/*Bash damage debuff on enemies is increased by 200%*/, //tr - Rarity = 7, - minLevel = 50, - maxLevel = 52, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.GreatSword, - icon = Res.ResourceLoader.GetTexture(88), - onEquip = () => ModdedPlayer.Stats.spell_bashDamageDebuffAmount.Add(2.00f), - onUnequip = () => ModdedPlayer.Stats.spell_bashDamageDebuffAmount.Substract(2.00f), - }; - - new BaseItem(new Stat[][] - { - new[] { ARMORPIERCING, MELEEARMORPIERCING }, - new[] { BLOCK,STRENGTH}, - new[] { ARMOR, MAXIMUMLIFE, MAXHEALTHFROMVIT, DAMAGEREDUCTION, RESISTANCETOMAGIC, DODGECHANCE }, - new[] { ARMOR, MAXIMUMLIFE , DAMAGEREDUCTION, VITALITY, STRENGTH, ALLATTRIBUTES }, - new[] { ARMOR, MAXIMUMLIFE, DAMAGEREDUCTION, VITALITY, STRENGTH, ALLATTRIBUTES, THORNS }, - new[] { THORNS, MELEEDAMAGEINCREASE, VITALITY, STRENGTH }, - new[] { STRENGTH, ARMOR, MELEEARMORPIERCING }, - new[] { MELEEDAMAGEINCREASE, MELEEDMGFROMSTR, BASEMELEEDAMAGE }, - new[] { MELEEDAMAGEINCREASE, ATTACKSPEED, BASEMELEEDAMAGE, MELEEWEAPONRANGE }, - new[] { ALL }, - new[] { ALL }, - new[] { ALL }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_514/*Madman's Legacy*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_515("69%")/*Frenzy damage per stack is increased by 50%*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - onEquip = () => ModdedPlayer.Stats.spell_frenzyDmg.Add(0.69f), - onUnequip = () => ModdedPlayer.Stats.spell_frenzyDmg.Add(0.69f), - }; - new BaseItem(new Stat[][] - { - new[] { ARMOR,BASEMELEEDAMAGE }, - new[] { BLOCK}, - new[] { ARMOR, MAXIMUMLIFE,MAXIMUMENERGY,STAMINAREGENERATION, DAMAGEREDUCTION, RESISTANCETOMAGIC, DODGECHANCE }, - new[] { ARMOR, MAXIMUMLIFE, MAXIMUMENERGY, DAMAGEREDUCTION, VITALITY, STRENGTH, ALLATTRIBUTES,CHANCEONHITTOBLEED,CHANCEONHITTOSLOW,CHANCEONHITTOWEAKEN }, - new[] { ARMOR, MAXIMUMLIFE, MAXHEALTHFROMVIT, DAMAGEREDUCTION, VITALITY, STRENGTH, ALLATTRIBUTES, THORNS }, - new[] { THORNS, MELEEDAMAGEINCREASE, VITALITY, STRENGTH }, - new[] { MELEEDAMAGEINCREASE, ATTACKSPEED, BASEMELEEDAMAGE, MELEEWEAPONRANGE,PERCENTMAXIMUMLIFE,PERCENTMAXIMUMENERGY,ALLHEALINGPERCENT }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_516/*Buckler*/, //tr - Rarity = 5, - minLevel = 1, - maxLevel = 2, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - }; - new BaseItem(new Stat[][] - { - new [] {FIREDAMAGE}, - new [] {MAXIMUMENERGY,MAXIMUMLIFE,PERCENTMAXIMUMENERGY,PERCENTMAXIMUMLIFE}, - new [] {STRENGTH,INTELLIGENCE,AGILITY,SPELLCOSTREDUCTION}, - new [] {SPELLDAMAGEINCREASE,BASESPELLDAMAGE, INTELLIGENCE ,ALLATTRIBUTES}, - new [] {SPELLDAMAGEINCREASE,BASESPELLDAMAGE, INTELLIGENCE ,ALLATTRIBUTES}, - new [] {ARMOR,DAMAGEREDUCTION}, - new [] {RESISTANCETOMAGIC,MAGICFIND,MOVEMENTSPEED,ARMOR}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_517/*Pyromancy Mask*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_518("200%")/*Ignited enemies burn for 200% extended perioid of time.*/, //tr - Rarity = 5, - minLevel = 2, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - onEquip = () => ModdedPlayer.Stats.fireDuration.Add(2f), - onUnequip = () => ModdedPlayer.Stats.fireDuration.Substract(2f), - }.PossibleStats[0][0].Multipier = 2; - - new BaseItem(new Stat[][] - { - new [] {FIREDAMAGE}, - new [] {SPELLDMGFROMINT,MELEEDMGFROMSTR,RANGEDDMGFROMAGI}, - new [] {MAXENERGYFROMAGI,MAXHEALTHFROMVIT}, - new [] {MAXIMUMENERGY,MAXIMUMLIFE,PERCENTMAXIMUMENERGY,PERCENTMAXIMUMLIFE}, - new [] {STRENGTH,INTELLIGENCE,AGILITY,SPELLCOSTREDUCTION}, - new [] {SPELLDAMAGEINCREASE,BASESPELLDAMAGE, INTELLIGENCE ,ALLATTRIBUTES}, - new [] {SPELLDAMAGEINCREASE,BASESPELLDAMAGE, INTELLIGENCE ,ALLATTRIBUTES}, - new [] {ALL}, - new [] {ALL}, - new [] {ARMOR,DAMAGEREDUCTION}, - new [] {RESISTANCETOMAGIC,MAGICFIND,MOVEMENTSPEED,ARMOR}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_519/*Ember Mask*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_520("700%")/*Ignited enemies burn for 300% extended perioid of time and fire ticks thrice as fast.*/, //tr - Rarity = 7, - minLevel = 2, - maxLevel = 6, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - onEquip = () => { ModdedPlayer.Stats.fireDuration.Add(7f); ModdedPlayer.Stats.fireTickRate.Add(3f); }, - onUnequip = () => { ModdedPlayer.Stats.fireDuration.Substract(7f); ModdedPlayer.Stats.fireTickRate.Substract(3f); }, - }.PossibleStats[0][0].Multipier = 5; - - - new BaseItem(new Stat[][] - { - new [] {FIREDAMAGE}, - new [] {ARMOR,DODGECHANCE}, - new [] {MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT,MELEEDMGFROMSTR,RANGEDDMGFROMAGI}, - new [] {MAXIMUMENERGY,MAXIMUMLIFE,PERCENTMAXIMUMENERGY,PERCENTMAXIMUMLIFE}, - new [] {STRENGTH,INTELLIGENCE,AGILITY,SPELLCOSTREDUCTION,PROJECTILESPEED,PROJECTILESIZE}, - new [] {SPELLDAMAGEINCREASE,BASESPELLDAMAGE, INTELLIGENCE ,ALLATTRIBUTES}, - new [] {SPELLDAMAGEINCREASE,BASESPELLDAMAGE, INTELLIGENCE ,ALLATTRIBUTES}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ARMOR,DAMAGEREDUCTION}, - new [] {RESISTANCETOMAGIC,MAGICFIND,MOVEMENTSPEED,ARMOR}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_521/*Flame Pauldrons*/, //tr - description = "", //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_522(10, "750%")/*Firebolt costs 30 additional energy to cast and its damage scaling is increased by 250%*/, //tr - Rarity = 7, - minLevel = 5, - maxLevel = 8, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - onEquip = () => - { - ModdedPlayer.Stats.spell_fireboltEnergyCost.Add(5); - ModdedPlayer.Stats.spell_fireboltDamageScaling.Add(7.5f); - }, - onUnequip = () => - { - ModdedPlayer.Stats.spell_fireboltEnergyCost.Substract(5); - ModdedPlayer.Stats.spell_fireboltDamageScaling.Substract(7.5f); - }, - }; - new BaseItem(new Stat[][] - { - new [] {SPELLDMGFROMINT}, - new [] {MAXENERGYFROMAGI,MAXHEALTHFROMVIT}, - new [] {MAXIMUMENERGY,MAXIMUMLIFE,PERCENTMAXIMUMENERGY,PERCENTMAXIMUMLIFE}, - new [] {STRENGTH,INTELLIGENCE,AGILITY,SPELLCOSTREDUCTION,COOLDOWNREDUCTION,SPELLCOSTTOSTAMINA}, - new [] {SPELLDAMAGEINCREASE,BASESPELLDAMAGE, INTELLIGENCE ,ALLATTRIBUTES}, - new [] {SPELLDAMAGEINCREASE,BASESPELLDAMAGE, INTELLIGENCE ,ALLATTRIBUTES}, - new [] {ALL}, - new [] {ALL}, - new [] {RESISTANCETOMAGIC,ENERGYONHIT,ENERGYPERSECOND,STAMINAREGENERATION,STAMINAPERSECOND}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_523/*Ancient Scroll*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_607/*Firebolt deals increased damage*/, //tr - Rarity = 6, - minLevel = 1, - maxLevel = 1, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.SpellScroll, - icon = Res.ResourceLoader.GetTexture(110), - onEquip = () => ModdedPlayer.Stats.spell_fireboltDamageScaling.Add(8), - onUnequip = () => ModdedPlayer.Stats.spell_fireboltDamageScaling.Substract(8), - }; - new BaseItem(new Stat[][] - { - new [] {SPELLDMGFROMINT}, - new [] {MAXENERGYFROMAGI,MAXHEALTHFROMVIT}, - new [] {MAXIMUMENERGY,MAXIMUMLIFE,PERCENTMAXIMUMENERGY,PERCENTMAXIMUMLIFE}, - new [] {STRENGTH,INTELLIGENCE,AGILITY,SPELLCOSTREDUCTION,COOLDOWNREDUCTION,SPELLCOSTTOSTAMINA}, - new [] {SPELLDAMAGEINCREASE,BASESPELLDAMAGE, INTELLIGENCE ,ALLATTRIBUTES}, - new [] {SPELLDAMAGEINCREASE,BASESPELLDAMAGE, INTELLIGENCE ,ALLATTRIBUTES}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {RESISTANCETOMAGIC,ENERGYONHIT,ENERGYPERSECOND,STAMINAREGENERATION,STAMINAPERSECOND}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_524/*Guide on Tearing Spacetime*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_525/*Blink creates an explosion at the exit point, and the damage of the explosion is increased by velocity and the radius is increased by the distance of blink*/, //tr - Rarity = 7, - minLevel = 1, - maxLevel = 1, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.SpellScroll, - icon = Res.ResourceLoader.GetTexture(110), - onEquip = () => ModdedPlayer.Stats.spell_blinkDoExplosion.value = true, - onUnequip = () => ModdedPlayer.Stats.spell_blinkDoExplosion.value = false, - }; - new BaseItem(new Stat[][] - { - new [] {STRENGTH}, - new [] {MELEEDAMAGEINCREASE}, - new [] {ATTACKSPEED}, - new [] {MELEEDMGFROMSTR}, - new [] {BLOCK,ARMOR,DAMAGEREDUCTION}, - new [] {BASEMELEEDAMAGE,NONE}, - new [] {BASEMELEEDAMAGE,MELEEDAMAGEINCREASE,STRENGTH}, - new [] {MELEEARMORPIERCING,ARMORPIERCING,ALLATTRIBUTES}, - new [] {ATTACKCOSTREDUCTION,ATTACKSPEED}, - new [] {ALLATTRIBUTES,MELEEWEAPONRANGE,VITALITY,MAXIMUMLIFE}, - new [] {ENERGYONHIT,VITALITY,LIFEONHIT } - }) - { - name = Translations.ItemDataBase_ItemDefinitions_526/*300th Spear*/, //tr - Rarity = 6, - minLevel = 30, - maxLevel = 34, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.Polearm, - icon = Res.ResourceLoader.GetTexture(181), - }.PossibleStats[0][0].Multipier = 6; - - - - new BaseItem(new Stat[][] - { - new [] {MOVEMENTSPEED,ATTACKSPEED}, - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL}, - new [] {ALL,NONE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_527/*Stone Pauldrons*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.03f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.03f), - Rarity = 2, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - }.PossibleStats[0][0].Multipier = -0.3f; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_529/*Iron Shoulder Pads*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.04f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.04f), - Rarity = 3, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_531/*Steel Shoulder Pads*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.05f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.05f), - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_533/*Battle scarred Shoulder Pads*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.06f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.06f), - Rarity = 5, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - }; - - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_535/*Mystery Shoulder Pads*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.1f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.1f), - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - }; - - new BaseItem(new Stat[][] - { - new [] {MOVEMENTSPEED,ATTACKSPEED}, - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL}, - new [] {ALL,NONE}, - new [] {BLOCK}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_537/*Stone Shield*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.03f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.03f), - Rarity = 2, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - }.PossibleStats[0][0].Multipier = -0.3f; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {BLOCK}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_538/*Iron Shield*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.04f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.04f), - Rarity = 3, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL,ARMOR}, - new [] {BLOCK}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_539/*Steel Tower Shield*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.05f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.05f), - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - }; - new BaseItem(new Stat[][] - { - - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {BLOCK}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_540/*Guardian*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.06f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.06f), - Rarity = 5, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - }; - - new BaseItem(new Stat[][] - { - new [] {BLOCK}, - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_541/*Mystery Shield*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.1f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.1f), - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Shield, - icon = Res.ResourceLoader.GetTexture(99), - }.PossibleStats[0][0].Multipier = 2f; - - - new BaseItem(new Stat[][] - { - new [] {MOVEMENTSPEED}, - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL}, - new [] {ALL,NONE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_542/*Light Boot*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.03f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.03f), - Rarity = 2, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }.PossibleStats[0][0].Multipier = 1.3f; - new BaseItem(new Stat[][] - { - new [] {MOVEMENTSPEED}, - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_543/*Iron Boots*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.04f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.04f), - Rarity = 3, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }; - new BaseItem(new Stat[][] - { - new [] {MOVEMENTSPEED}, - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL,ARMOR}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_544/*Steel Boots*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.05f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.05f), - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }; - new BaseItem(new Stat[][] - { - new [] {MOVEMENTSPEED}, - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_545/*Threads*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.06f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.06f), - Rarity = 5, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }; - - new BaseItem(new Stat[][] - { - new [] {MOVEMENTSPEED}, - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_546/*Mystery Boots*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.1f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.1f), - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }; - - - - - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL}, - new [] {ALL,NONE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_547/*Wraps*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.03f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.03f), - Rarity = 2, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }.PossibleStats[0][0].Multipier = -0.3f; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_301/*Iron Gauntlet*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.04f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.04f), - Rarity = 3, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_548/*Steel Gauntlet*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.05f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.05f), - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_549/*Titanium Gauntlet*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.06f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.06f), - Rarity = 5, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_550/*Mystery Gauntlet*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.1f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.1f), - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - - - - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_551/*Leather Tasset*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.03f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.03f), - Rarity = 2, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }.PossibleStats[0][0].Multipier = -0.3f; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_552/*Iron Tasset*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.04f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.04f), - Rarity = 3, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_553/*Steel Tasset*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.05f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.05f), - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_554/*Black Steel Leggins*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.06f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.06f), - Rarity = 5, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_555/*Mystery Leggins*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.1f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.1f), - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL}, - new [] {ALL,NONE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_556/*Leather Vest*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.03f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.03f), - Rarity = 2, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }.PossibleStats[0][0].Multipier = -0.3f; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_557/*Iron Breastplate*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.04f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.04f), - Rarity = 3, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_558/*Steel Breastplate*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.05f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.05f), - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_559/*Silver Armor*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.06f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.06f), - Rarity = 5, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_560/*Mystery Breastplate*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.1f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.1f), - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL}, - new [] {ALL,NONE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_561/*Cloth Band*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.03f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.03f), - Rarity = 2, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - }.PossibleStats[0][0].Multipier = -0.3f; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_562/*Iron Wristguard*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.04f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.04f), - Rarity = 3, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_563/*Steel Wristguard*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.05f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.05f), - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_564/*Baron Wristguards*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.06f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.06f), - Rarity = 5, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - }; - - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_565/*Mystery Wristguards*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.1f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.1f), - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - }; - - - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_218/*Horned Helmet*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.03f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.03f), - Rarity = 2, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }.PossibleStats[0][0].Multipier = -0.3f; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_566/*Iron Helmet*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.04f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.04f), - Rarity = 3, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_567/*Steel Helmet*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.05f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.05f), - Rarity = 4, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {ALL,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_568/*Armored Hood*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.06f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.06f), - Rarity = 5, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {MELEEDMGFROMSTR,RANGEDDMGFROMAGI,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_569/*Mystery Helmet*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr - onEquip = () => ModdedPlayer.Stats.allDamage.Add(0.1f), - onUnequip = () => ModdedPlayer.Stats.allDamage.Substract(0.1f), - Rarity = 6, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {MELEEDMGFROMSTR,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {MELEEDAMAGEINCREASE,MELEEWEAPONRANGE,BASEMELEEDAMAGE,STRENGTH}, - new [] {MELEEDAMAGEINCREASE,ATTACKSPEED,BASEMELEEDAMAGE,STRENGTH}, - new [] {CRITICALHITCHANCE,CRITICALHITDAMAGE,}, - new [] {MELEEDAMAGEINCREASE,NONE,MAXIMUMLIFE,PERCENTMAXIMUMLIFE}, - new [] {STRENGTH,VITALITY,INTELLIGENCE,ATTACKSPEED,ATTACKCOSTREDUCTION,COOLDOWNREDUCTION}, - new [] {ALL}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ARMOR,DAMAGEREDUCTION}, - new [] {EMPTYSOCKET,NONE}, - new [] {EMPTYSOCKET,NONE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_570/*Yorium's Gaze*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_571("30%")/*SET PIECE. Melee weapon range is increased by 30%, attack cost in stamina is halved.*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_572(15, "35%", 15, "5%")/*Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by 15 seconds\n4 Pieces - Each second of berserk being in effect increases damage by 35%.\n5 Pieces - For the first 15 seconds of Berserk attack speed increases by 30% per second, and lasts till the end of the spell's duration.*/, //tr - onEquip = () => BerserkSet.Equip(), - onUnequip = () => BerserkSet.Unequip(), - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Helmet, - icon = Res.ResourceLoader.GetTexture(91), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {MELEEDMGFROMSTR,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {MELEEDAMAGEINCREASE,MELEEWEAPONRANGE,BASEMELEEDAMAGE,STRENGTH}, - new [] {MELEEDAMAGEINCREASE,ATTACKSPEED,BASEMELEEDAMAGE,STRENGTH}, - new [] {MAXIMUMLIFE}, - new [] {MELEEDAMAGEINCREASE,MAXIMUMLIFE,PERCENTMAXIMUMLIFE}, - new [] {STRENGTH,VITALITY,INTELLIGENCE,ATTACKSPEED,ATTACKCOSTREDUCTION,COOLDOWNREDUCTION}, - new [] {ALL}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ARMOR,DAMAGEREDUCTION,ALLATTRIBUTES}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_573/*Yorium's Ruthlessness*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_571("30%")/*SET PIECE. Melee weapon range is increased by 30%, attack cost in stamina is halved.*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_572(15, "35%", 15, "5%")/*Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by 15 seconds\n4 Pieces - Each second of berserk being in effect increases damage by 35%.\n5 Pieces - For the first 15 seconds of Berserk attack speed increases by 30% per second, and lasts till the end of the spell's duration.*/, //tr - onEquip = () => BerserkSet.Equip(), - onUnequip = () => BerserkSet.Unequip(), - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ChestArmor, - icon = Res.ResourceLoader.GetTexture(96), - }; - - new BaseItem(new Stat[][] - { - new [] {ALL,}, - new [] {MELEEDMGFROMSTR,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {MELEEDAMAGEINCREASE,MELEEWEAPONRANGE,BASEMELEEDAMAGE,STRENGTH}, - new [] {MELEEDAMAGEINCREASE,ATTACKSPEED,BASEMELEEDAMAGE,STRENGTH}, - new [] {MAXIMUMLIFE}, - new [] {MELEEDAMAGEINCREASE,MAXIMUMLIFE,PERCENTMAXIMUMLIFE}, - new [] {STRENGTH,VITALITY,INTELLIGENCE,ATTACKSPEED,ATTACKCOSTREDUCTION,COOLDOWNREDUCTION}, - new [] {ALL}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ARMOR,DAMAGEREDUCTION,ALLATTRIBUTES}, - new [] {EMPTYSOCKET,NONE}, - new [] {EMPTYSOCKET,NONE}, - new [] {EMPTYSOCKET,NONE}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_574/*Yorium's Burden*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_571("30%")/*SET PIECE. Melee weapon range is increased by 30%, attack cost in stamina is halved.*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_572(15, "35%", 15, "5%")/*Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by 15 seconds\n4 Pieces - Each second of berserk being in effect increases damage by 35%.\n5 Pieces - For the first 15 seconds of Berserk attack speed increases by 30% per second, and lasts till the end of the spell's duration.*/, //tr - onEquip = () => BerserkSet.Equip(), - onUnequip = () => BerserkSet.Unequip(), - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.ShoulderArmor, - icon = Res.ResourceLoader.GetTexture(95), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,}, - new [] {MELEEDMGFROMSTR,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {MELEEDAMAGEINCREASE,MELEEWEAPONRANGE,BASEMELEEDAMAGE,STRENGTH}, - new [] {MELEEDAMAGEINCREASE,ATTACKSPEED,BASEMELEEDAMAGE,STRENGTH}, - new [] {MAXIMUMLIFE}, - new [] {MELEEDAMAGEINCREASE,MAXIMUMLIFE,PERCENTMAXIMUMLIFE}, - new [] {STRENGTH,VITALITY,INTELLIGENCE,ATTACKSPEED,ATTACKCOSTREDUCTION,COOLDOWNREDUCTION}, - new [] {ALL}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ARMOR,DAMAGEREDUCTION,ALLATTRIBUTES}, - new [] {EMPTYSOCKET,NONE}, - new [] {EMPTYSOCKET,NONE}, - new [] {EMPTYSOCKET,NONE}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_575/*Yorium's Resolve*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_571("30%")/*SET PIECE. Melee weapon range is increased by 30%, attack cost in stamina is halved.*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_572(15, "35%", 15, "5%")/*Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by 15 seconds\n4 Pieces - Each second of berserk being in effect increases damage by 35%.\n5 Pieces - For the first 15 seconds of Berserk attack speed increases by 30% per second, and lasts till the end of the spell's duration.*/, //tr - onEquip = () => BerserkSet.Equip(), - onUnequip = () => BerserkSet.Unequip(), - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - }; - new BaseItem(new Stat[][] - { - new [] {MOVEMENTSPEED}, - new [] {MELEEDMGFROMSTR,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {MELEEDAMAGEINCREASE,MELEEWEAPONRANGE,BASEMELEEDAMAGE,STRENGTH}, - new [] {MELEEDAMAGEINCREASE,ATTACKSPEED,BASEMELEEDAMAGE,STRENGTH}, - new [] {MAXIMUMLIFE}, - new [] {MELEEDAMAGEINCREASE,MAXIMUMLIFE,PERCENTMAXIMUMLIFE}, - new [] {STRENGTH,VITALITY,INTELLIGENCE,ATTACKSPEED,ATTACKCOSTREDUCTION,COOLDOWNREDUCTION}, - new [] {ALL}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ARMOR,DAMAGEREDUCTION,ALLATTRIBUTES}, - new [] {EMPTYSOCKET,NONE}, - new [] {EMPTYSOCKET,NONE}, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_576/*Atomic Augmentation*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_571("30%")/*SET PIECE. Melee weapon range is increased by 30%, attack cost in stamina is halved.*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_572(15, "35%", 15, "5%")/*Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by 15 seconds\n4 Pieces - Each second of berserk being in effect increases damage by 35%.\n5 Pieces - For the first 15 seconds of Berserk attack speed increases by 30% per second, and lasts till the end of the spell's duration.*/, //tr - onEquip = () => BerserkSet.Equip(), - onUnequip = () => BerserkSet.Unequip(), - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Boot, - icon = Res.ResourceLoader.GetTexture(85), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,}, - new [] {MELEEDMGFROMSTR,MAXENERGYFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {MELEEDAMAGEINCREASE,MELEEWEAPONRANGE,BASEMELEEDAMAGE,STRENGTH}, - new [] {MELEEDAMAGEINCREASE,ATTACKSPEED,BASEMELEEDAMAGE,STRENGTH}, - new [] {MAXIMUMLIFE}, - new [] {MELEEDAMAGEINCREASE,MAXIMUMLIFE,PERCENTMAXIMUMLIFE}, - new [] {STRENGTH,VITALITY,INTELLIGENCE,ATTACKSPEED,ATTACKCOSTREDUCTION,COOLDOWNREDUCTION}, - new [] {ALL}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ARMOR,DAMAGEREDUCTION,ALLATTRIBUTES}, - new [] {EMPTYSOCKET,NONE}, - new [] {EMPTYSOCKET,NONE}, - new [] {EMPTYSOCKET,NONE}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_577/*Yorium's Assault*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_571("30%")/*SET PIECE. Melee weapon range is increased by 30%, attack cost in stamina is halved.*/, //tr - description = Translations.ItemDataBase_ItemDefinitions_572(15, "35%", 15, "5%")/*Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by 15 seconds\n4 Pieces - Each second of berserk being in effect increases damage by 35%.\n5 Pieces - For the first 15 seconds of Berserk attack speed increases by 30% per second, and lasts till the end of the spell's duration.*/, //tr - onEquip = () => BerserkSet.Equip(), - onUnequip = () => BerserkSet.Unequip(), - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Glove, - icon = Res.ResourceLoader.GetTexture(86), - }; - new BaseItem(new Stat[][] - { - new [] {ALL,EXPGAIN,MAGICFIND}, - new [] {MELEEDMGFROMSTR,MAXENERGYFROMAGI,RANGEDDMGFROMAGI,MAXHEALTHFROMVIT,SPELLDMGFROMINT}, - new [] {MELEEDAMAGEINCREASE,BASEMELEEDAMAGE,STRENGTH}, - new [] {RANGEDDAMAGEINCREASE,BASERANGEDDAMAGE,AGILITY}, - new [] {SPELLDAMAGEINCREASE,BASESPELLDAMAGE,INTELLIGENCE}, - new [] {ALL}, - new [] {MAXIMUMLIFE}, - new [] {MAXIMUMLIFE,PERCENTMAXIMUMLIFE,MAXIMUMENERGY,PERCENTMAXIMUMENERGY}, - new [] {STRENGTH,VITALITY,INTELLIGENCE,AGILITY,ALLATTRIBUTES,ATTACKSPEED,ATTACKCOSTREDUCTION,SPELLCOSTREDUCTION,COOLDOWNREDUCTION}, - new [] {ALL}, - new [] {ALL,NONE}, - new [] {ALL,NONE}, - new [] {ALL}, - new [] {ALL}, - new [] {ARMOR,DAMAGEREDUCTION,ALLATTRIBUTES,NONE}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_578/*Undying Promise*/, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_579(1)/*Resist lethal damage on a 1 minute cooldown*/, //tr - onEquip = () => COTFEvents.Instance.OnTakeLethalDamage.AddListener(UniqueItemFunctions.ResistDeath), - onUnequip = () => COTFEvents.Instance.OnTakeLethalDamage.RemoveListener(UniqueItemFunctions.ResistDeath), - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - }; - new BaseItem(new Stat[][] - { - new [] {CRITICALHITDAMAGE}, - new [] {STRENGTH,VITALITY,INTELLIGENCE,AGILITY }, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ARMOR,DAMAGEREDUCTION }, - new [] {MAXIMUMLIFE}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_609, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_610, //tr - Rarity = 7, - minLevel = 20, - maxLevel = 28, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Pants, - icon = Res.ResourceLoader.GetTexture(87), - onEquip = () => { ModdedPlayer.Stats.spell_frenzy_active_critChance.Add(0.05f); ModdedPlayer.Stats.spell_frenzyAtkSpeed.Add(0.03f); }, - onUnequip = () => { ModdedPlayer.Stats.spell_frenzy_active_critChance.Substract(0.05f); ModdedPlayer.Stats.spell_frenzyAtkSpeed.Add(0.03f); }, - }; - - - - new BaseItem(new Stat[][] - { - new [] {BASEMELEEDAMAGE,BASESPELLDAMAGE}, - new [] {BASEMELEEDAMAGE,BASESPELLDAMAGE}, - new [] {STRENGTH,VITALITY,INTELLIGENCE,AGILITY }, - new [] {MELEEDAMAGEINCREASE, SPELLDAMAGEINCREASE }, - new [] {ATTACKSPEED}, - new [] {CRITICALHITCHANCE}, - new [] {CRITICALHITDAMAGE}, - new [] {MELEEDMGFROMSTR}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {BLOCK, NONE}, - new [] {MAXIMUMLIFE}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_611, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_612("300%"), //tr - Rarity = 7, - minLevel = 6, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.GreatSword, - icon = Res.ResourceLoader.GetTexture(88), - onEquip = () => ModdedPlayer.Stats.spell_berserkDamage.Add(3f), - onUnequip = () => ModdedPlayer.Stats.spell_berserkDamage.Substract(3f), - }.PossibleStats[0][0].Multipier = 5; - new BaseItem(new Stat[][] - { - new [] {BASEMELEEDAMAGE,BASESPELLDAMAGE}, - new [] {BASEMELEEDAMAGE, NONE}, - new [] {STRENGTH,VITALITY,INTELLIGENCE,AGILITY }, - new [] {MELEEDAMAGEINCREASE, SPELLDAMAGEINCREASE }, - new [] {ATTACKSPEED}, - new [] {CRITICALHITCHANCE}, - new [] {CRITICALHITDAMAGE}, - new [] {MELEEDMGFROMSTR}, - new [] {STRENGTH}, - new [] {ALL}, - new [] {ALL}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_613, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_612("100%"), //tr - Rarity = 6, - minLevel = 6, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Weapon, - weaponModel = BaseItem.WeaponModelType.GreatSword, - icon = Res.ResourceLoader.GetTexture(88), - onEquip = () => ModdedPlayer.Stats.spell_berserkDamage.Add(1f), - onUnequip = () => ModdedPlayer.Stats.spell_berserkDamage.Substract(1f), - }.PossibleStats[0][0].Multipier = 2; - - new BaseItem(new Stat[][] - { - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {BASESPELLDAMAGE,BASERANGEDDAMAGE,BASEMELEEDAMAGE, NONE}, - new [] {SPELLDMGFROMINT,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,DAMAGEREDUCTION}, - new [] {ALLATTRIBUTES,AGILITY,STRENGTH,INTELLIGENCE,VITALITY}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_614, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_615("10%"), //tr - Rarity = 5, - minLevel = 6, - maxLevel = 9, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(100), - onEquip = () => - { - ModdedPlayer.Stats.spell_berserkAttackSpeed.Add(0.1f); - ModdedPlayer.Stats.spell_berserkMovementSpeed.Add(0.1f); - }, - onUnequip = () => - { - ModdedPlayer.Stats.spell_berserkAttackSpeed.Substract(0.1f); - ModdedPlayer.Stats.spell_berserkMovementSpeed.Substract(0.1f); - }, - }; - new BaseItem(new Stat[][] - { - new [] {STRENGTH,VITALITY,AGILITY,ALLATTRIBUTES,INTELLIGENCE}, - new [] {MAXENERGYFROMAGI,MELEEDMGFROMSTR,SPELLDMGFROMINT,RANGEDDMGFROMAGI,MAXHEALTHFROMVIT}, - new [] {ARMOR,DAMAGEREDUCTION}, - new [] { CRITICALHITCHANCE, CRITICALHITDAMAGE}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {ALL}, - new [] {BASESPELLDAMAGE,BASERANGEDDAMAGE,BASEMELEEDAMAGE, NONE}, - new [] {SPELLDMGFROMINT,MELEEDMGFROMSTR,RANGEDDMGFROMAGI,DAMAGEREDUCTION}, - - }) - { - name = Translations.ItemDataBase_ItemDefinitions_616, //tr - uniqueStat = $"Berserk increases melee and ranged damage by 100%, increases movement speed by 30% and attack speed by 15%", //tr - Rarity = 7, - minLevel = 60, - maxLevel = 62, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Amulet, - icon = Res.ResourceLoader.GetTexture(100), - onEquip = () => - { - ModdedPlayer.Stats.meleeIncreasedDmg.Multiply(2f); - ModdedPlayer.Stats.rangedIncreasedDmg.Multiply(2f); - ModdedPlayer.Stats.spell_berserkAttackSpeed.Add(0.15f); - ModdedPlayer.Stats.spell_berserkMovementSpeed.Add(0.3f); - }, - onUnequip = () => - { - ModdedPlayer.Stats.meleeIncreasedDmg.Divide(2f); - ModdedPlayer.Stats.rangedIncreasedDmg.Divide(2f); - ModdedPlayer.Stats.spell_berserkAttackSpeed.Substract(0.15f); - ModdedPlayer.Stats.spell_berserkMovementSpeed.Substract(0.3f); - }, - }; - new BaseItem(new Stat[][] - { - new[] { LIFEPERSECOND }, - new[] { ARMOR, NONE, ALLHEALINGPERCENT }, - new[] { ALL}, - new[] { SPELLDMGFROMINT }, - new[] { SPELLCOSTREDUCTION,SPELLCOSTTOSTAMINA,ARMOR,ALLATTRIBUTES}, - new[] { BASESPELLDAMAGE, SPELLDAMAGEINCREASE, INTELLIGENCE, ALLATTRIBUTES }, - new[] { BASESPELLDAMAGE, SPELLDAMAGEINCREASE, INTELLIGENCE, DAMAGEREDUCTION }, - new[] { VITALITY, MAXHEALTHFROMVIT, MAXIMUMLIFE, PERCENTMAXIMUMLIFE, LIFEPERSECOND, LIFEONHIT }, - new[] { SPELLCOSTREDUCTION, COOLDOWNREDUCTION, CRITICALHITCHANCE, CRITICALHITDAMAGE, ARMOR,MAXHEALTHFROMVIT }, - new[] { DAMAGEREDUCTION, PERCENTMAXIMUMENERGY, LIFEREGENERATION }, - new[] { ENERGYPERSECOND, PERCENTMAXIMUMENERGY, MAXENERGYFROMAGI }, - new[] { INTELLIGENCE, STAMINAPERSECOND, STAMINAREGENERATION, ALLATTRIBUTES, ALLHEALINGPERCENT }, - new[] { ENERGYONHIT, ENERGYPERSECOND, MAXIMUMLIFE, MASSACREDURATION, MAGICFIND, EXPLOSIONDAMAGE }, - }) - { - name = Translations.ItemDataBase_ItemDefinitions_617, //tr - uniqueStat = Translations.ItemDataBase_ItemDefinitions_618("100%", "40%"),//tr - Rarity = 7, - minLevel = 1, - maxLevel = 3, - CanConsume = false, - StackSize = 1, - type = BaseItem.ItemType.Bracer, - icon = Res.ResourceLoader.GetTexture(93), - onEquip = () => - { - ModdedPlayer.Stats.spell_healingDomeCooldownRate.Add(1.0f); - ModdedPlayer.Stats.spell_healingDomeSpellCostReduction.Substract(0.4f); - }, - onUnequip = () => - { - ModdedPlayer.Stats.spell_healingDomeCooldownRate.Substract(1.0f); - ModdedPlayer.Stats.spell_healingDomeSpellCostReduction.Add(0.4f); - }, - }; - } - } -} \ No newline at end of file diff --git a/Items/ItemDataBase_Loot.cs b/Items/ItemDataBase_Loot.cs index bc9350b..fb152a1 100644 --- a/Items/ItemDataBase_Loot.cs +++ b/Items/ItemDataBase_Loot.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Linq; using ChampionsOfForest.Player; @@ -9,75 +10,58 @@ using Random = UnityEngine.Random; -namespace ChampionsOfForest +namespace ChampionsOfForest.Items { - public static partial class ItemDataBase + public static partial class ItemDatabase { + static int randomItemPoolLevel = -1; // at which level was the random item pool created + static RandomItemPoolEntry[] randomItemPoolEntries = new RandomItemPoolEntry[(int)ItemDefinition.Rarity.Max]; + static int[] odds = new int[] + { + // odds of upgrading from one rarity to another + // the odds are 1 in x + 3, // Common + 10, // Magic + 25, // Rare + 200, // Legendary + }; + + static System.Random rng = new System.Random(); + + private static int GetLevel(Vector3 pos) { int level; { if (GameSetup.IsMultiplayer) { - switch (ModSettings.lootLevelPolicy) + var states = ModReferences.PlayerStates.All; + switch (ModSettings.LootLevelRule) { - case ModSettings.LootLevelPolicy.HighestPlayerLevel: - { - ModReferences.RequestAllPlayerLevels(); - int highestLevel = ModdedPlayer.instance.level; - foreach (var l in ModReferences.PlayerLevels.Values) - { - if (l > highestLevel) - highestLevel = l; - } - level = highestLevel; - } - + case ModSettings.LootLevelRules.HighestPlayerLevel: + level = states.Max(x => x.level); break; - case ModSettings.LootLevelPolicy.AverageLevel: - { - ModReferences.RequestAllPlayerLevels(); - float levelSum = ModdedPlayer.instance.level; - foreach (var l in ModReferences.PlayerLevels.Values) - { - levelSum += l; - } - level = Convert.ToInt32(levelSum / (1 + ModReferences.PlayerLevels.Count)); - } - + case ModSettings.LootLevelRules.AverageLevel: + level = (int)states.Average(x => (double)x.level); break; - case ModSettings.LootLevelPolicy.LowestLevel: - { - ModReferences.RequestAllPlayerLevels(); - int lowestLevel - = ModdedPlayer.instance.level; - foreach (var l in ModReferences.PlayerLevels.Values) - { - if (l < lowestLevel) - lowestLevel = l; - } - level = lowestLevel; - } + case ModSettings.LootLevelRules.LowestLevel: + level = states.Min(x => x.level); break; - case ModSettings.LootLevelPolicy.ClosestPlayer: + case ModSettings.LootLevelRules.ClosestPlayer: { level = ModdedPlayer.instance.level; - float dist = Vector3.Distance(LocalPlayer.Transform.position, pos); - IPlayerState state = null; - foreach (var playerstate in ModReferences.PlayerStates) + float dist = (LocalPlayer.Transform.position - pos).sqrMagnitude; + foreach (var state in states) { - float d = Vector3.Distance(playerstate.Transform.Position, pos); + float d = (state.gameObject.transform.position - pos).sqrMagnitude; if (d < dist) { dist = d; - state = playerstate; + level = state.level; } } - if(state != null) - level = ModReferences.PlayerLevels[state.name]; } break; - case ModSettings.LootLevelPolicy.HostLevel: default: level = ModdedPlayer.instance.level; break; @@ -90,130 +74,93 @@ int lowestLevel } return level; } - public static Item GetRandomItem(float Worth, Vector3 pos) - { - int level = GetLevel(pos); - float w = Worth; - w *= ModdedPlayer.Stats.magicFind.Value; - int rarity = GetRarity(w, ModSettings.difficulty); - int[] itemIdPool = null; - while (itemIdPool == null) + class RandomItemPoolEntry + { + public List items; + public RandomItemPoolEntry(int level, int rarity) { - itemIdPool = ItemRarityGroups[rarity].Where(i => (AllowItemDrop(i, level, EnemyProgression.Enemy.All))).ToArray(); - if (itemIdPool.Length == 0) + items = new List(); + foreach (var item in ItemRarityGroups[rarity]) { - rarity--; - itemIdPool = null; + if (item.minLevel <= level) + { + items.Add(item); + } } - if (rarity == -1) - return null; } - int randomID = Random.Range(0, itemIdPool.Length); - Item item = new Item(ItemBases[itemIdPool[randomID]]); + }; - item.level = level; - if (item.ID == 42 || item.ID == 103 || item.type == BaseItem.ItemType.Material) - item.level = 1; - item.RollStats(); - return item; + static ItemDefinition GetItemFromPool(List pool, int randomWeight, int totalWeight) + { + randomWeight = Mathf.Max(randomWeight, totalWeight); + int i = 0; + while (randomWeight > totalWeight && i < pool.Count - 1) + { + if (randomWeight < pool[i].lootWeight) + return pool[i]; + else + { + randomWeight -= pool[i].lootWeight; + i++; + } + } + return pool[i]; } - public static bool AllowItemDrop(int i, in int level, EnemyProgression.Enemy e) + static List GetPool(int level, int rarity, EnemyProgression.Enemy enemyType) { - if (!ItemBases.ContainsKey(i)) + if (randomItemPoolLevel != level) { - return true; + randomItemPoolLevel = level; + for (int i = 0; i < randomItemPoolEntries.Length; i++) + randomItemPoolEntries[i] = new RandomItemPoolEntry(level, i); + } - if ((int)ItemBases[i].lootTable != 0) - return (ItemBases[i].lootTable & e) != 0 && ItemBases[i].minLevel <= level; - return ItemBases[i].minLevel <= level; + if (rarity < randomItemPoolEntries.Length) + return randomItemPoolEntries[rarity].items.Where(item => (item.lootTable & enemyType) > 0).ToList(); + return null; } - public static Item GetRandomItem(float Worth, EnemyProgression.Enemy killedEnemyType, ModSettings.Difficulty difficulty, Vector3 pos) + // returns a list of random items that meet the criteria of the enemy type and level of players + public static Item[] GetRandomItems(EnemyProgression.Enemy killedEnemyType, ModSettings.GameDifficulty difficulty, Vector3 pos, int count) { int level = GetLevel(pos); - float w = Worth / (level); - w *= ModdedPlayer.Stats.magicFind.Value; - - int rarity = GetRarity(w, difficulty); - - int[] itemIdPool = null; - while (itemIdPool == null) + ItemDefinition.Rarity rarity = GetRandomRarity(level, ModdedPlayer.Stats.magicFind_quality.Value, difficulty); + List pool = GetPool(level, (int)rarity, killedEnemyType); + if (pool.Count == 0) { - itemIdPool = ItemRarityGroups[rarity].Where(i => (AllowItemDrop(i, level, EnemyProgression.Enemy.All))).ToArray(); - if (itemIdPool.Length == 0) - { - rarity--; - itemIdPool = null; - } - if (rarity == -1) - return null; + Debug.LogError($"No items for pool level:{level} rarity:{rarity} enemy:{killedEnemyType}"); + return null; } - int randomID = Random.Range(0, itemIdPool.Length); - Item item = new Item(ItemBases[itemIdPool[randomID]]); + int totalWeight = pool.Sum(x => x.lootWeight); + Item[] items = new Item[count]; + for (int i = 0; i < count; i++) + { + items[i] = new Item(GetItemFromPool(pool, Random.Range(0, totalWeight), totalWeight), level); + } + return items; - item.level = level; - if (item.ID == 42 || item.ID == 103 || item.type == BaseItem.ItemType.Material) - item.level = 1; - item.RollStats(); - return item; } - public static int GetRarity(float w, ModSettings.Difficulty difficulty) + public static ItemDefinition.Rarity GetRandomRarity(int level, float qualitymult, ModSettings.GameDifficulty difficulty) { - int dif = (int)difficulty; - int rarity = 0; - float mf = Mathf.Sqrt(ModdedPlayer.Stats.magicFind.Value) - 1; - if ((w > 20 && Random.value < 0.70f + 0.45 * mf + dif * 0.075) || (dif > 5 && w > 2000)) - { - rarity = 1; - - if (w > 80 && (Random.value < 0.50f + 0.4 * mf + dif * 0.07 || w > 2200 && dif > 6)) - { - rarity = 2; - if (w > 180 && (Random.value < 0.50f + 0.35 * mf + 0.05f * dif) || w > 5000 && dif > 7 && Random.value < 0.90f) - { - if (dif > 0 || Random.value < 0.05f) - { - rarity = 3; - if (w > 360 && (Random.value < 0.5f + 0.22 * mf + 0.034f * dif) || dif > 8 && Random.value < 0.70f) - { - if (dif > 1 || Random.value < 0.02f) - { - rarity = 4; - if (w > 720 && (Random.value < 0.26f + 0.085 * mf + 0.02f * dif)) - { - if (dif > 2 || Random.value < 0.01f) - { - rarity = 5; - if (w > 1440 && (Random.value < 0.18f + 0.033 * mf + (0.003f * dif))) - { - if (dif > 3 || Random.value < 0.05f) - { - rarity = 6; - if (w > 5000 && (Random.value < 0.04f + 0.01 * mf)) - { - if (dif > 4 || Random.value < 0.001f) - { - rarity = 7; - } - } - } - } - } - } - } - } - } - } - } + qualitymult += (int)difficulty * ModSettings.MagicFindPerDifficultyLevel; + int rarityNum = 0; + while (rarityNum < (int)ItemDefinition.Rarity.Max - 1) + { + double chance = (odds[rarityNum] / qualitymult); + double rand = rng.NextDouble() * chance; + if (rand < 1.0) + rarityNum++; + else + break; } - return rarity; + return (ItemDefinition.Rarity)rarityNum; } } } \ No newline at end of file diff --git a/Items/ItemDataBase_StatDefinitions.cs b/Items/ItemDataBase_StatDefinitions.cs index fb3b72b..680f716 100644 --- a/Items/ItemDataBase_StatDefinitions.cs +++ b/Items/ItemDataBase_StatDefinitions.cs @@ -8,376 +8,609 @@ using UnityEngine; -namespace ChampionsOfForest +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items { - public static partial class ItemDataBase + public static partial class ItemDatabase { public enum Stat { - ALL = -1, NONE = 0, STRENGTH = 1, AGILITY, VITALITY, INTELLIGENCE, - MAXIMUMLIFE, - MAXIMUMENERGY, - LIFEPERSECOND, - STAMINAPERSECOND, - STAMINAREGENERATION, - LIFEREGENERATION, - DAMAGEREDUCTION, - CRITICALHITCHANCE, - CRITICALHITDAMAGE, - LIFEONHIT, - DODGECHANCE, + MAX_LIFE, + MAX_ENERGY, + LIFE_REGEN_BASE, + STAMINA_REGEN_BASE, + STAMINA_AND_ENERGY_REGEN_MULT, + LIFE_REGEN_MULT, + DAMAGE_REDUCTION, + CRIT_CHANCE, + CRIT_DAMAGE, + LIFE_ON_HIT, + DODGE_CHANCE, ARMOR, - RESISTANCETOMAGIC, + ELITE_DAMAGE_REDUCTION, ATTACKSPEED, - EXPGAIN, - MASSACREDURATION, - SPELLDAMAGEINCREASE, - MELEEDAMAGEINCREASE, - RANGEDDAMAGEINCREASE, - BASESPELLDAMAGE, - BASEMELEEDAMAGE, - BASERANGEDDAMAGE, - MAXENERGYFROMAGI, - MAXHEALTHFROMVIT, - SPELLDMGFROMINT, - MELEEDMGFROMSTR, - ALLHEALINGPERCENT, - PERMANENTPERKPOINTS, - EXPERIENCE, - MOVEMENTSPEED, - MELEEWEAPONRANGE, - ATTACKCOSTREDUCTION, - SPELLCOSTREDUCTION, - SPELLCOSTTOSTAMINA, - LESSERSTRENGTH, - LESSERAGILITY, - LESSERVITALITY, - LESSERINTELLIGENCE, - LESSERARMOR, - ENERGYPERSECOND, - PERCENTMAXIMUMLIFE, - PERCENTMAXIMUMENERGY, - COOLDOWNREDUCTION, - RANGEDDMGFROMAGI, - ENERGYONHIT, + EXP_GAIN_MULT, + MASSACRE_DURATION, + SPELL_DAMAGE_MULTIPLIER, + MELEE_DAMAGE_INCREASE, + RANGED_DAMAGE_INCREASE, + BASE_SPELL_DAMAGE, + BASE_MELEE_DAMAGE, + BASE_RANGED_DAMAGE, + MAX_ENERGY_FROM_AGILITY, + MAX_HEALTH_FROM_VITALITY, + SPELL_DMG_FROM_INT, + MELEE_DMG_FROM_STR, + ALL_RECOVERY, + MOVEMENT_SPEED, + MELEE_WEAPON_RANGE, + ATTACK_COST_REDUCTION, + SPELL_COST_REDUCTION, + SPELL_COST_TO_STAMINA, + ENERGY_REGEN_BASE, + MAX_LIFE_MULT, + MAX_ENERGY_MULT, + COOLDOWN_REDUCTION, + RANGED_DMG_FROM_AGI, + ENERGY_ON_HIT, BLOCK, - PROJECTILESPEED, - PROJECTILESIZE, - MELEEARMORPIERCING, - RANGEDARMORPIERCING, - ARMORPIERCING, - MAGICFIND, - ALLATTRIBUTES, + PROJECTILE_SPEED, + PROJECTILE_SIZE, + MELEE_ARMOR_PIERCING, + RANGED_ARMOR_PIERCING, + ARMOR_PIERCING, + LOOT_QUANTITY, + LOOT_QUALITY, + ALL_ATTRIBUTES, REFUNDPOINTS, - JUMPPOWER, - HEADSHOTDAMAGE, - FIREDAMAGE, - CHANCEONHITTOSLOW, - CHANCEONHITTOBLEED, - CHANCEONHITTOWEAKEN, + JUMP_POWER, + HEADSHOT_DAMAGE_MULT, + FIRE_DAMAGE, + CHANCE_ON_HIT_TO_SLOW, + CHANCE_ON_HIT_TO_BLEED, + CHANCE_ON_HIT_TO_WEAKEN, THORNS, - PIERCECHANCE, - EXPLOSIONDAMAGE, - SPEARDAMAGE, - - EXTRACARRIEDSTICKS = 1000, - EXTRACARRIEDROCKS, - EXTRACARRIEDROPES, - EXTRACARRIEDDRINKS, - EXTRACARRIEDFOOD, - - BLACKHOLESIZE = 2000, - BLACKHOLELIFETIME, - BLACKHOLEGRAVITATIONALFORCE, - BLACKHOLEDAMAGE, - STUNONHIT, - SNAPFREEZEDURATION, - RAFTSPEED, - - EMPTYSOCKET = 3000, + THORNS_MULT, + PROJECTILE_PIERCE_CHANCE, + EXPLOSION_DAMAGE, + THROWN_SPEAR_DAMAGE, + + EXTRA_CARRIED_STICKS, + EXTRA_CARRIED_ROCKS, + EXTRA_CARRIED_ROPES, + EXTRA_CARRIED_DRINKS, + EXTRA_CARRIED_FOOD, + + BLACKHOLE_SIZE, + BLACK_HOLE_DURATION, + BLACK_HOLE_GRAVITY_FORCE, + BLACK_HOLE_DAMAGE, + HAMMER_STUN_ON_HIT, + SNAP_FREEZE_DURATION, + RAFT_SPEED, + } - public static void PopulateStats() + private static void PopulateStats() { - var scAdd = new ItemStat.StatCompare(x => { return x.Sum(); }); - var scMult = new ItemStat.StatCompare(x => - { - float f = 1; - for (int j = 0; j < x.Count; j++) - f *= x[j]; - return f - 1; - }); - var scMultPlusOne = new ItemStat.StatCompare(x => - { - float f = 1; - for (int j = 0; j < x.Count; j++) - f *= 1+ x[j]; - return f; - }); - var scOneMinusMult = new ItemStat.StatCompare(x => - { - float f = 1; - for (int k = 0; k < x.Count; k++) - f *= 1 - x[k]; - return 1 - f; - }); - - int i = 1; - new ItemStat(i, 1.5f, 2.2f, 0.8f, Translations.MainMenu_Guide_4/*Strength*/, scAdd, 4, //tr - ()=>ModdedPlayer.Stats.strength.GetFormattedAmount(), StatActions.AddStrength, StatActions.RemoveStrength, StatActions.AddStrength); - i++; - new ItemStat(i, 1.5f, 2.2f, 0.8f, Translations.MainMenu_Guide_6/*Agility*/, scAdd, 4, () => ModdedPlayer.Stats.agility.GetFormattedAmount(), StatActions.AddAgility, StatActions.RemoveAgility, StatActions.AddAgility); //tr - i++; - new ItemStat(i, 1.5f, 2.2f, 0.8f, Translations.MainMenu_Guide_8/*Vitality*/, scAdd, 4, () => ModdedPlayer.Stats.vitality.GetFormattedAmount(), StatActions.AddVitality, StatActions.RemoveVitality, StatActions.AddVitality); //tr - i++; - new ItemStat(i, 1.5f, 2.2f, 0.8f, Translations.MainMenu_Guide_10/*Intelligence*/, scAdd, 4, () => ModdedPlayer.Stats.intelligence.GetFormattedAmount(), StatActions.AddIntelligence, StatActions.RemoveIntelligence, StatActions.AddIntelligence); //tr - i++; - new ItemStat(i, 3.75f, 5.65f, 1.21f, Translations.ItemDataBase_StatDefinitions_1/*Maximum Life*/, scAdd, 3, () => ModdedPlayer.Stats.maxHealth.GetFormattedAmount(), StatActions.AddHealth, StatActions.RemoveHealth, StatActions.AddHealth); //tr - i++; - new ItemStat(i, 1f, 1.30f, 1.21f, Translations.ItemDataBase_StatDefinitions_2/*Maximum Energy*/, scAdd, 3, () => ModdedPlayer.Stats.maxEnergy.GetFormattedAmount(), StatActions.AddEnergy, StatActions.RemoveEnergy, StatActions.AddEnergy); //tr - i++; - new ItemStat(i, 0.013f, 0.0225f, 1.05f, Translations.ItemDataBase_StatDefinitions_3/*Life Per Second*/, scAdd, 3, () => ModdedPlayer.Stats.healthRecoveryPerSecond.GetFormattedAmount(), StatActions.AddHPRegen, StatActions.RemoveHPRegen, StatActions.AddHPRegen) { DisplayAsPercent = false, RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.025f, 0.031f, 1.23f, Translations.ItemDataBase_StatDefinitions_4/*Stamina Per Second*/, scAdd, 2, () => ModdedPlayer.Stats.staminaRecoveryperSecond.GetFormattedAmount(), StatActions.AddStaminaRegen, StatActions.RemoveStaminaRegen, StatActions.AddStaminaRegen) { DisplayAsPercent = false, RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.02f, 0.03f, 0.45f, Translations.ItemDataBase_StatDefinitions_5/*Energy Regeneration*/, scAdd,5, () => ModdedPlayer.Stats.staminaPerSecRate.GetFormattedAmount(), StatActions.AddStaminaRegenPercent, StatActions.RemoveStaminaRegenPercent, StatActions.AddStaminaRegenPercent) { DisplayAsPercent = true, RoundingCount = 1, ValueCap = 2f }; //tr - i++; - new ItemStat(i, 0.02f, 0.03f, 0.45f, Translations.ItemDataBase_StatDefinitions_6/*Life Regeneration*/, scAdd, 5, () => ModdedPlayer.Stats.healthPerSecRate.GetFormattedAmount(), StatActions.AddHealthRegenPercent, StatActions.RemoveHealthRegenPercent, StatActions.AddHealthRegenPercent) { DisplayAsPercent = true, RoundingCount = 1, ValueCap = 1.5f }; //tr - i++; - new ItemStat(i, 0.005f, 0.0075f, 0.5f, Translations.MainMenu_Guide_23/*Damage Reduction*/, scOneMinusMult, 4, () => (1-ModdedPlayer.Stats.allDamageTaken).ToString("P"), StatActions.AddDamageReduction, StatActions.RemoveDamageReduction, StatActions.AddDamageReduction) { ValueCap = 0.4f, DisplayAsPercent = true, RoundingCount = 1 }; //tr - i++; - new ItemStat(i, 0.008f, 0.0125f, 0.25f, Translations.ItemDataBase_StatDefinitions_7/*Critical Hit Chance*/, scAdd, 6, () => ModdedPlayer.Stats.critChance.GetFormattedAmount(), StatActions.AddCritChance, StatActions.RemoveCritChance, StatActions.AddCritChance) { DisplayAsPercent = true, RoundingCount = 1, ValueCap = 0.5f }; //tr - i++; - new ItemStat(i, 0.03f, 0.06f, 0.4f, Translations.MainMenu_Guide_46, scAdd, 6, () => ModdedPlayer.Stats.critDamage.GetFormattedAmount(), StatActions.AddCritDamage, StatActions.RemoveCritDamage, StatActions.AddCritDamage) { DisplayAsPercent = true, RoundingCount = 1, ValueCap = 10f };//tr - i++; - new ItemStat(i, 0.07f, 0.13f, 1f, Translations.ItemDataBase_StatDefinitions_8/*Life on hit*/, scAdd, 4, () => ModdedPlayer.Stats.healthOnHit.GetFormattedAmount(), StatActions.AddLifeOnHit, StatActions.RemoveLifeOnHit, StatActions.AddLifeOnHit) - { - DisplayAsPercent = false, - RoundingCount = 1 - }; //tr - i++; - new ItemStat(i, 0.003f, 0.008f, 0.38f, Translations.ItemDataBase_StatDefinitions_9/*Dodge chance*/, scOneMinusMult, 4, () => (1-ModdedPlayer.Stats.getHitChance).ToString("P"), StatActions.AddDodgeChance, StatActions.RemoveDodgeChance, StatActions.AddDodgeChance) { ValueCap = 0.35f, DisplayAsPercent = true, RoundingCount = 1 }; //tr - i++; - new ItemStat(i, 5f, 9f, 1.4f, Translations.MainMenu_Guide_17/*Armor*/, scAdd, 3, () => ModdedPlayer.Stats.armor.GetFormattedAmount(), StatActions.AddArmor, StatActions.RemoveArmor, StatActions.AddArmor); //tr - i++; - new ItemStat(i, 0.004f, 0.018f, 0.5f, Translations.ItemDataBase_StatDefinitions_10/*Resistance to magic*/, scOneMinusMult, 5, () => (1 - ModdedPlayer.Stats.magicDamageTaken).ToString("P"), StatActions.AddMagicResistance, StatActions.RemoveMagicResistance, StatActions.AddMagicResistance) { ValueCap = 0.5f, DisplayAsPercent = true, RoundingCount = 1 }; //tr - i++; - new ItemStat(i, 0.004f, 0.005f, 0.2f, Translations.MainMenu_Guide_49/*Attack speed*/, scAdd, 6, () => ModdedPlayer.Stats.attackSpeed.GetFormattedAmount(), StatActions.AddAttackSpeed, StatActions.RemoveAttackSpeed, StatActions.AddAttackSpeed) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - i++; - new ItemStat(i, 0.015f, 0.025f, 0.25f, Translations.ItemDataBase_StatDefinitions_11/*Experience gain*/, scMult, 7, () => ModdedPlayer.Stats.expGain.GetFormattedAmount(), StatActions.AddExpFactor, StatActions.RemoveExpFactor, StatActions.AddExpFactor) { DisplayAsPercent = true, RoundingCount = 1, ValueCap = 1f }; //tr - i++; - new ItemStat(i, 1.5f, 2f, 0f, Translations.MainMenu_Guide_120/*Massacre Duration*/, scAdd, 7, () => ModdedPlayer.Stats.maxMassacreTime.GetFormattedAmount(), StatActions.AddMaxMassacreTime, StatActions.RemoveMaxMassacreTime, StatActions.AddMaxMassacreTime) //tr - { - RoundingCount = 1 - }; - i++; - new ItemStat(i, 0.014f, 0.018f, 0.4f, Translations.ItemDataBase_StatDefinitions_12/*Spell Damage Increase*/, scAdd, 5, () => ModdedPlayer.Stats.spellIncreasedDmg.GetFormattedAmount(), StatActions.AddSpellDamageAmplifier, StatActions.RemoveSpellDamageAmplifier, StatActions.AddSpellDamageAmplifier) //tr + // Attributes + new ItemStatBuilder(Stat.STRENGTH, "Strength", 2f, 3f) + .AffectsStat(ModdedPlayer.Stats.strength) + .Additive(ModdedPlayer.Stats.strength) + .LevelScaling(0.4f); + + new ItemStatBuilder(Stat.AGILITY, "Agility", 2f, 3f) + .AffectsStat(ModdedPlayer.Stats.agility) + .Additive(ModdedPlayer.Stats.agility) + .LevelScaling(0.4f); + + new ItemStatBuilder(Stat.VITALITY, "Vitality", 2f, 3f) + .AffectsStat(ModdedPlayer.Stats.vitality) + .Additive(ModdedPlayer.Stats.vitality) + .LevelScaling(0.4f); + + new ItemStatBuilder(Stat.INTELLIGENCE, "Intelligence", 2f, 3f) + .AffectsStat(ModdedPlayer.Stats.vitality) + .Additive(ModdedPlayer.Stats.vitality) + .LevelScaling(0.4f); + + new ItemStatBuilder(Stat.ALL_ATTRIBUTES, "All attributes", 1f, 1.5f) { - DisplayAsPercent = true, - RoundingCount = 1 - }; - i++; - new ItemStat(i, 0.014f, 0.018f, 0.4f, Translations.ItemDataBase_StatDefinitions_13/*Melee Damage Increase*/, scAdd, 5, () => ModdedPlayer.Stats.meleeIncreasedDmg.GetFormattedAmount(), StatActions.AddMeleeDamageAmplifier, StatActions.RemoveMeleeDamageAmplifier, StatActions.AddMeleeDamageAmplifier) { DisplayAsPercent = true, RoundingCount = 1, ValueCap =2f }; //tr - i++; - new ItemStat(i, 0.014f, 0.018f, 0.4f, Translations.ItemDataBase_StatDefinitions_14/*Ranged Damage Increase*/, scAdd, 5, () => ModdedPlayer.Stats.rangedIncreasedDmg.GetFormattedAmount(), StatActions.AddRangedDamageAmplifier, StatActions.RemoveRangedDamageAmplifier, StatActions.AddRangedDamageAmplifier) { DisplayAsPercent = true, RoundingCount = 1, ValueCap = 2f }; //tr - i++; - new ItemStat(i, 0.5f, 1.1f, 0.8f, Translations.ItemDataBase_StatDefinitions_15/*Base Spell Damage*/, scAdd, 4, () => ModdedPlayer.Stats.spellFlatDmg.GetFormattedAmount(), StatActions.AddspellFlatDmg, StatActions.RemovespellFlatDmg, StatActions.AddspellFlatDmg); //tr - i++; - new ItemStat(i, 0.5f, 1.1f, 0.8f, Translations.ItemDataBase_StatDefinitions_16/*Base Melee Damage*/, scAdd, 4, () => ModdedPlayer.Stats.meleeFlatDmg.GetFormattedAmount(), StatActions.AddMeleeDamageBonus, StatActions.RemoveMeleeDamageBonus, StatActions.AddMeleeDamageBonus); //tr - i++; - new ItemStat(i, 0.5f, 1.1f, 0.8f, Translations.ItemDataBase_StatDefinitions_17/*Base Ranged Damage*/, scAdd, 4,() => ModdedPlayer.Stats.rangedFlatDmg.GetFormattedAmount(), StatActions.AddRangedDamageBonus, StatActions.RemoveRangedDamageBonus, StatActions.AddRangedDamageBonus); //tr - i++; - new ItemStat(i, 0.011f, 0.025f, 0f, Translations.ItemDataBase_StatDefinitions_18/*Energy Per Agility*/, scAdd, 7, () => ModdedPlayer.Stats.maxEnergyFromAgi.GetFormattedAmount(), StatActions.AddmaxEnergyFromAgi, StatActions.RemovemaxEnergyFromAgi, StatActions.AddmaxEnergyFromAgi) { DisplayAsPercent = false, RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.07f, 0.25f, 0f, Translations.ItemDataBase_StatDefinitions_19/*Health Per Vitality*/, scAdd, 7, () => ModdedPlayer.Stats.maxHealthFromVit.GetFormattedAmount(), StatActions.AddmaxHealthFromVit, StatActions.RemovemaxHealthFromVit, StatActions.AddmaxHealthFromVit) { DisplayAsPercent = false, RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.001f, 0.0018f, 0f, Translations.ItemDataBase_StatDefinitions_20/*Spell Damage Per Int*/, scAdd, 7, () => ModdedPlayer.Stats.spellDmgFromInt.GetFormattedAmount(), StatActions.AddspellDmgFromInt, StatActions.RemovespellDmgFromInt, StatActions.AddspellDmgFromInt) { DisplayAsPercent = true, RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.001f, 0.0018f, 0f, Translations.ItemDataBase_StatDefinitions_21/*Melee Damage Per Strength*/, scAdd,7, () => ModdedPlayer.Stats.meleeDmgFromStr.GetFormattedAmount(), StatActions.AddmeleeDmgFromStr, StatActions.RemovemeleeDmgFromStr, StatActions.AddmeleeDmgFromStr) { DisplayAsPercent = true, RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.0015f, 0.007f, 0.6f, Translations.ItemDataBase_StatDefinitions_22/*All Recovery*/, scMultPlusOne, 6, () => ModdedPlayer.Stats.allRecoveryMult.GetFormattedAmount(), StatActions.AddHealingMultipier, StatActions.RemoveHealingMultipier, StatActions.AddHealingMultipier) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - i++; - new ItemStat(i, 1f / 4f, 1f / 4f, 0f, Translations.ItemDataBase_StatDefinitions_23/*PERMANENT PERK POINTS*/, scAdd, 6,()=> ModdedPlayer.instance.MutationPoints.ToString(), null, null, StatActions.PERMANENT_perkPointIncrease); //tr - i++; - new ItemStat(i, 30f, 30f, 3f, Translations.ItemDataBase_StatDefinitions_25/*EXPERIENCE*/, scAdd, 5,()=> ModdedPlayer.instance.ExpCurrent.ToString("N")+ Translations.ItemDataBase_StatDefinitions_24/* / */ + ModdedPlayer.instance.ExpGoal.ToString("N"), null, null, StatActions.PERMANENT_expIncrease); //tr - i++; - new ItemStat(i, 0.01f, 0.020f, 0.2f, Translations.MainMenu_Guide_109/*Movement Speed*/, scAdd, 6, () => ModdedPlayer.Stats.movementSpeed.GetFormattedAmount(), StatActions.AddMoveSpeed, StatActions.RemoveMoveSpeed, StatActions.AddMoveSpeed) { DisplayAsPercent = true, RoundingCount = 2, ValueCap = 0.5f }; //tr - i++; - new ItemStat(i, 0.01f, 0.03f, 0.35f, Translations.ItemDataBase_StatDefinitions_26/*Weapon Size*/, scMultPlusOne, 4, () => ModdedPlayer.Stats.weaponRange.GetFormattedAmount(), f => ModdedPlayer.Stats.weaponRange.Multiply(1 + f), f => ModdedPlayer.Stats.weaponRange.Divide(1 + f), null) { DisplayAsPercent = true, RoundingCount = 2, ValueCap = 0.4f }; //tr - i++; - new ItemStat(i, 0.02f, 0.038f, 0.4f, Translations.ItemDataBase_StatDefinitions_27/*Attack Cost Reduction*/, scOneMinusMult, 3, () => (ModdedPlayer.Stats.attackStaminaCost-1).ToString("P"), f => ModdedPlayer.Stats.attackStaminaCost.Multiply(1 - f), f => ModdedPlayer.Stats.attackStaminaCost.Divide(1 - f)) { DisplayAsPercent = true, RoundingCount = 2, ValueCap = 0.75f }; //tr - i++; - new ItemStat(i, 0.005f, 0.01f, 0.3f, Translations.MainMenu_Guide_96/*Spell Cost Reduction*/, scOneMinusMult, 6, () => (1 - ModdedPlayer.Stats.spellCost).ToString("P"), f => ModdedPlayer.Stats.spellCost.valueMultiplicative *= 1 - f, f => ModdedPlayer.Stats.spellCost.valueMultiplicative /= 1 - f, f => ModdedPlayer.Stats.spellCost.valueMultiplicative*= 1 - f) { DisplayAsPercent = true, RoundingCount = 2, ValueCap = 0.5f }; //tr - i++; - new ItemStat(i, 0.0075f, 0.01f, 0.34f, Translations.ItemDataBase_StatDefinitions_28/*Spell Cost to Stamina*/, scOneMinusMult, 2, () => (ModdedPlayer.Stats.SpellCostToStamina).ToString("P"), f => ModdedPlayer.Stats.spellCostEnergyCost.Multiply(1-f), f => ModdedPlayer.Stats.spellCostEnergyCost.Divide(1 - f)) { ValueCap = 0.55f, DisplayAsPercent = true, RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.6f, 1f, 0.8f, Translations.MainMenu_Guide_4/*Strength*/, scAdd, 2, () => ModdedPlayer.Stats.strength.GetFormattedAmount(), StatActions.AddStrength, StatActions.RemoveStrength, StatActions.AddStrength); //tr - i++; - new ItemStat(i, 0.6f, 1f, 0.8f, Translations.MainMenu_Guide_6/*Agility*/, scAdd, 2, () => ModdedPlayer.Stats.agility.GetFormattedAmount(), StatActions.AddAgility, StatActions.RemoveAgility, StatActions.AddAgility); //tr - i++; - new ItemStat(i, 0.6f, 1f, 0.8f, Translations.MainMenu_Guide_8/*Vitality*/, scAdd, 2, () => ModdedPlayer.Stats.vitality.GetFormattedAmount(), StatActions.AddVitality, StatActions.RemoveVitality, StatActions.AddVitality); //tr - i++; - new ItemStat(i, 0.6f, 1f, 0.8f, Translations.MainMenu_Guide_10/*Intelligence*/, scAdd, 2, () => ModdedPlayer.Stats.intelligence.GetFormattedAmount(), StatActions.AddIntelligence, StatActions.RemoveIntelligence, StatActions.AddIntelligence); //tr - i++; - new ItemStat(i, 1f, 1.75f, 1.35f, Translations.MainMenu_Guide_17/*Armor*/, scAdd, 2, () => ModdedPlayer.Stats.armor.GetFormattedAmount(), StatActions.AddArmor, StatActions.RemoveArmor, StatActions.AddArmor); //tr - i++; - new ItemStat(i, 0.0075f, 0.01f, 0.833f, Translations.ItemDataBase_StatDefinitions_29/*Energy Per Second*/, scAdd, 5, () => ModdedPlayer.Stats.energyRecoveryperSecond.GetFormattedAmount(), StatActions.AddEnergyRegen, StatActions.RemoveEnergyRegen, StatActions.AddEnergyRegen) { RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.006f, 0.009f, 0.35f, Translations.ItemDataBase_StatDefinitions_1/*Maximum Life*/, scAdd, 6, () => ModdedPlayer.Stats.maxHealthMult.GetFormattedAmount(), f => ModdedPlayer.Stats.maxHealthMult.valueAdditive += f, f => ModdedPlayer.Stats.maxHealthMult.valueAdditive -= f) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - i++; - new ItemStat(i, 0.006f, 0.009f, 0.35f, Translations.ItemDataBase_StatDefinitions_2/*Maximum Energy*/, scAdd, 6, () => ModdedPlayer.Stats.maxEnergyMult.GetFormattedAmount(), f => ModdedPlayer.Stats.maxEnergyMult.valueAdditive+= f, f => ModdedPlayer.Stats.maxEnergyMult.valueAdditive -= f, f => ModdedPlayer.Stats.maxEnergyMult.valueAdditive += f) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - i++; - new ItemStat(i, 0.004f, 0.00675f, 0.35f, Translations.MainMenu_Guide_99/*Cooldown Reduction*/, scOneMinusMult, 6, () => (1-ModdedPlayer.Stats.cooldown).ToString("P"), f => ModdedPlayer.Stats.cooldown.valueMultiplicative *= (1 - f), f => ModdedPlayer.Stats.cooldown.valueMultiplicative /= (1 - f), f => ModdedPlayer.Stats.cooldown.valueMultiplicative *= (1 - f)) { DisplayAsPercent = true, RoundingCount = 2, ValueCap = 0.5f }; //tr - i++; - new ItemStat(i, 0.001f, 0.0018f, 0f, Translations.ItemDataBase_StatDefinitions_30/*Ranged Damage Per Agi*/, scAdd, 7, () => ModdedPlayer.Stats.rangedDmgFromAgi.GetFormattedAmount(), f => ModdedPlayer.Stats.rangedDmgFromAgi.valueAdditive += f, f => ModdedPlayer.Stats.rangedDmgFromAgi.valueAdditive += -f, f => ModdedPlayer.Stats.rangedDmgFromAgi.valueAdditive += f) { DisplayAsPercent = true, RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.02f, 0.04f, 0.67f, Translations.MainMenu_Guide_39/*Energy on hit*/, scAdd, 4, () => ModdedPlayer.Stats.energyOnHit.GetFormattedAmount(), f => ModdedPlayer.Stats.energyOnHit.valueAdditive += f, f => ModdedPlayer.Stats.energyOnHit.valueAdditive += -f, f => ModdedPlayer.Stats.energyOnHit.valueAdditive += f) { RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.95f, 1.65f, 1f, Translations.PerkDatabase_387/*Block*/, scAdd, 1, () => ModdedPlayer.Stats.block.GetFormattedAmount(), f => ModdedPlayer.Stats.block.valueAdditive += f, f => ModdedPlayer.Stats.block.valueAdditive += -f, f => ModdedPlayer.Stats.block.valueAdditive += f); //tr - i++; - new ItemStat(i, 0.01f, 0.02f, 0.3f, Translations.MainMenu_Guide_71/*Projectile speed*/, scAdd, 4, () => ModdedPlayer.Stats.projectileSpeed.GetFormattedAmount(), f => ModdedPlayer.Stats.projectileSpeed.valueAdditive += f, f => ModdedPlayer.Stats.projectileSpeed.valueAdditive += -f, f => ModdedPlayer.Stats.projectileSpeed.valueAdditive += f) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - i++; - new ItemStat(i, 0.02f, 0.03f, 0.34f, Translations.MainMenu_Guide_73/*Projectile size*/, scAdd, 4, () => ModdedPlayer.Stats.projectileSize.GetFormattedAmount(), f => ModdedPlayer.Stats.projectileSize.valueAdditive += f, f => ModdedPlayer.Stats.projectileSize.valueAdditive += -f, f => ModdedPlayer.Stats.projectileSize.valueAdditive += f) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - i++; - new ItemStat(i, 1.5f, 2.25f, 1.21f, Translations.ItemDataBase_StatDefinitions_31/*Melee armor piercing*/, scAdd, 5, () => ModdedPlayer.Stats.TotalMeleeArmorPiercing.ToString(), f => ModdedPlayer.Stats.meleeArmorPiercing.valueAdditive += Mathf.RoundToInt(f), f => ModdedPlayer.Stats.meleeArmorPiercing.valueAdditive += -Mathf.RoundToInt(f), f => ModdedPlayer.Stats.meleeArmorPiercing.valueAdditive += Mathf.RoundToInt(f)); //tr - i++; - new ItemStat(i, 0.95f, 1.25f, 1.2f, Translations.ItemDataBase_StatDefinitions_32/*Ranged armor piercing*/, scAdd, 5, () => ModdedPlayer.Stats.TotalRangedArmorPiercing.ToString(), f => ModdedPlayer.Stats.rangedArmorPiercing.valueAdditive += Mathf.RoundToInt(f), f => ModdedPlayer.Stats.rangedArmorPiercing.valueAdditive += -Mathf.RoundToInt(f), f => ModdedPlayer.Stats.rangedArmorPiercing.valueAdditive += Mathf.RoundToInt(f)); //tr - i++; - new ItemStat(i, 0.75f, 1f, 1.2f, Translations.ItemDataBase_StatDefinitions_33/*Armor piercing*/, //tr - scAdd, 5, () => $"M{ModdedPlayer.Stats.TotalMeleeArmorPiercing} R{ModdedPlayer.Stats.TotalRangedArmorPiercing}", f => ModdedPlayer.Stats.allArmorPiercing.valueAdditive += Mathf.RoundToInt(f), f => ModdedPlayer.Stats.allArmorPiercing.valueAdditive += -Mathf.RoundToInt(f), f => ModdedPlayer.Stats.allArmorPiercing.valueAdditive += Mathf.RoundToInt(f)); - i++; - new ItemStat(i, 0.01f, 0.02f, 0.15f, Translations.MainMenu_Guide_126/*Magic Find*/, scMultPlusOne, 7, () => ModdedPlayer.Stats.magicFind.Value.ToString("P"), StatActions.AddMagicFind, StatActions.RemoveMagicFind, StatActions.AddMagicFind) { DisplayAsPercent = true, RoundingCount = 1, ValueCap = 0.25f }; //tr - i++; - new ItemStat(i, 0.5f, 0.8f, 0.8f, Translations.PerkDatabase_44/*All attributes*/, scAdd, 4, () => //tr - $"S{ModdedPlayer.Stats.strength} A{ModdedPlayer.Stats.agility} I{ModdedPlayer.Stats.intelligence} V{ModdedPlayer.Stats.vitality}", StatActions.AddAllStats, StatActions.RemoveAllStats, StatActions.AddAllStats); - i++; - new ItemStat(i, 0, 0, 0, Translations.ItemDataBase_StatDefinitions_34/*Refund points*/, scAdd, 7,()=>"", f => ModdedPlayer.Respec(), f => ModdedPlayer.Respec(), f => ModdedPlayer.Respec()); //tr - i++; - new ItemStat(i, 0.02f, 0.033f, 0.24f, Translations.MainMenu_Guide_111/*Jump Power*/, scAdd, 4,()=> ModdedPlayer.Stats.jumpPower.GetFormattedAmount() ,StatActions.AddJump, StatActions.RemoveJump, StatActions.AddJump) { DisplayAsPercent = true, RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.052f, 0.13f, 0.35f, Translations.ItemDataBase_StatDefinitions_35/*Headshot Damage*/, scMultPlusOne, 4, () => ModdedPlayer.Stats.headShotDamage.GetFormattedAmount(), f => ModdedPlayer.Stats.headShotDamage.Add(f), f => ModdedPlayer.Stats.headShotDamage.Substract(f), null) { DisplayAsPercent = true, RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.015f, 0.042f, 0.34f, Translations.ItemDataBase_StatDefinitions_36/*Fire Damage*/, scAdd, 4, () => ModdedPlayer.Stats.fireDamage.GetFormattedAmount(), f => ModdedPlayer.Stats.fireDamage.valueAdditive += f, f => ModdedPlayer.Stats.fireDamage.valueAdditive -= f, null) { DisplayAsPercent = true, RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.008f, 0.015f, 0.25f, Translations.ItemDataBase_StatDefinitions_37/*Chance on hit to slow*/, scAdd, 3, () => ModdedPlayer.Stats.chanceToSlow.GetFormattedAmount(), f => ModdedPlayer.Stats.chanceToSlow.valueAdditive += f, f => ModdedPlayer.Stats.chanceToSlow.valueAdditive -= f, null) { DisplayAsPercent = true, RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.006f, 0.01f, 0.25f, Translations.ItemDataBase_StatDefinitions_38/*Chance on hit to bleed*/, scAdd, 3, () => ModdedPlayer.Stats.chanceToBleed.GetFormattedAmount(), f => ModdedPlayer.Stats.chanceToBleed.valueAdditive += f, f => ModdedPlayer.Stats.chanceToBleed.valueAdditive -= f, null) { DisplayAsPercent = true, RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 0.008f, 0.015f, 0.25f, Translations.ItemDataBase_StatDefinitions_39/*Chance on hit to weaken*/, scAdd, 3, () => ModdedPlayer.Stats.chanceToWeaken.GetFormattedAmount(), f => ModdedPlayer.Stats.chanceToWeaken.valueAdditive += f, f => ModdedPlayer.Stats.chanceToWeaken.valueAdditive -= f, null) { DisplayAsPercent = true, RoundingCount = 2 }; //tr - i++; - new ItemStat(i, 1.1f, 1.8f, 1.2f, Translations.MainMenu_Guide_104/*Thorns*/, scAdd, 4, () => ModdedPlayer.Stats.thorns.GetFormattedAmount(), f => ModdedPlayer.Stats.thorns.valueAdditive += f, f => ModdedPlayer.Stats.thorns.valueAdditive -= f, f => ModdedPlayer.Stats.thorns.valueAdditive += f); //tr - i++; - new ItemStat(i, 0.035f, 0.145f, 0.1f, Translations.MainMenu_Guide_77/*Projectile pierce chance*/, scAdd, 6, () => ModdedPlayer.Stats.projectilePierceChance.GetFormattedAmount(), f => ModdedPlayer.Stats.projectilePierceChance.valueAdditive += f, f => ModdedPlayer.Stats.projectilePierceChance.valueAdditive += -f, f => ModdedPlayer.Stats.projectilePierceChance.valueAdditive += f) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - i++; - new ItemStat(i, 0.04f, 0.11f, 1f, Translations.ItemDataBase_StatDefinitions_40/*Explosive damage*/, scAdd, 6, () => ModdedPlayer.Stats.explosionDamage.GetFormattedAmount(), f => ModdedPlayer.Stats.explosionDamage.Add( f), f => ModdedPlayer.Stats.projectilePierceChance.Substract(f)) { RoundingCount = 1, DisplayAsPercent = true }; //tr - i++; - new ItemStat(i, 0.17f, 0.55f, 0.3f, Translations.ItemDataBase_StatDefinitions_41/*Thrown spear damage*/, scAdd, 6, () => ModdedPlayer.Stats.perk_thrownSpearDamageMult.GetFormattedAmount(), f => ModdedPlayer.Stats.perk_thrownSpearDamageMult.Multiply(1+ f), f => ModdedPlayer.Stats.perk_thrownSpearDamageMult.Divide(1+f)) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - i++; + OnEquip = f => { + ModdedPlayer.Stats.strength.Add((int)f); + ModdedPlayer.Stats.intelligence.Add((int)f); + ModdedPlayer.Stats.agility.Add((int)f); + ModdedPlayer.Stats.vitality.Add((int)f); + }, + OnUnequip = f => { + ModdedPlayer.Stats.strength.Sub((int)f); + ModdedPlayer.Stats.intelligence.Sub((int)f); + ModdedPlayer.Stats.agility.Sub((int)f); + ModdedPlayer.Stats.vitality.Sub((int)f); + }, + GetTotalStat = () => $"{ModdedPlayer.Stats.strength} Str, {ModdedPlayer.Stats.agility} Agi, {ModdedPlayer.Stats.intelligence} Int, {ModdedPlayer.Stats.vitality} Vit" + }.LevelScaling(0.4f); + + + // Life + new ItemStatBuilder(Stat.MAX_LIFE, "Increased life", 3.75f, 5.65f) + .AffectsStat(ModdedPlayer.Stats.maxLife) + .Additive(ModdedPlayer.Stats.maxLife) + .LevelScaling(1.21f); + + new ItemStatBuilder(Stat.MAX_ENERGY, "Increased energy", 0.7f, 1.5f) + .AffectsStat(ModdedPlayer.Stats.maxEnergy) + .Additive(ModdedPlayer.Stats.maxEnergy) + .LevelScaling(0.5f); + + new ItemStatBuilder(Stat.LIFE_REGEN_BASE, "Life regeneration", 0.013f, 0.023f) + .AffectsStat(ModdedPlayer.Stats.lifeRegenBase) + .Additive(ModdedPlayer.Stats.lifeRegenBase) + .LinearLevelScaling() + .RoundTo(2); + + new ItemStatBuilder(Stat.STAMINA_REGEN_BASE, "Stamina regeneration", 0.035f, 0.11f) + .AffectsStat(ModdedPlayer.Stats.staminaRegenBase) + .Additive(ModdedPlayer.Stats.staminaRegenBase) + .LevelScaling(0.5f) + .RoundTo(2); + + new ItemStatBuilder(Stat.STAMINA_AND_ENERGY_REGEN_MULT, "Stamina and energy regeneration", 0.04f, 0.08f) + .AffectsStat(ModdedPlayer.Stats.energyRegenMult) + .Additive(ModdedPlayer.Stats.energyRegenMult) + .LevelScaling(0.1f) + .RarityScaling(0.2f) + .PercentFormatting() + .RoundTo(2); + + new ItemStatBuilder(Stat.LIFE_REGEN_MULT, "Life regeneration", 0.04f, 0.08f) + .AffectsStat(ModdedPlayer.Stats.lifeRegenMult) + .Additive(ModdedPlayer.Stats.lifeRegenMult) + .LevelScaling(0.1f) + .RarityScaling(0.2f) + .PercentFormatting(); + + new ItemStatBuilder(Stat.DAMAGE_REDUCTION, "Reduced damage taken", 0.03f, 0.07f) // needs tweaking + .AffectsStat(ModdedPlayer.Stats.allDamageTaken) + .OneMinusMultiplier(ModdedPlayer.Stats.allDamageTaken) + .LevelScaling(0.1f) + .RarityScaling(0.33f) + .PercentFormatting(); + + new ItemStatBuilder(Stat.CRIT_CHANCE, "Critical hit chance", 0.035f, 0.06f) + .AffectsStat(ModdedPlayer.Stats.critChance) + .Additive(ModdedPlayer.Stats.critChance) // change to OneMinusMultiplier if you dont want players reaching 100% crit chance + .LevelScaling(0.1f) + .RarityScaling(0.1f) + .PercentFormatting() + .RoundTo(2); + + new ItemStatBuilder(Stat.CRIT_DAMAGE, "Critical hit damage", 0.30f, 0.50f) + .AffectsStat(ModdedPlayer.Stats.critDamage) + .Additive(ModdedPlayer.Stats.critDamage) + .LevelScaling(0.1f) + .RarityScaling(0.1f) + .PercentFormatting(); + + new ItemStatBuilder(Stat.LIFE_ON_HIT, "Life on hit", 0.30f, 0.50f) + .AffectsStat(ModdedPlayer.Stats.lifeOnHit) + .Additive(ModdedPlayer.Stats.lifeOnHit) + .LevelScaling(0.5f) + .RarityScaling(0.6666f); + + new ItemStatBuilder(Stat.DODGE_CHANCE, "Dodge chance", 0.035f, 0.06f) + .AffectsStat(ModdedPlayer.Stats.getHitChance) + .OneMinusMultiplier(ModdedPlayer.Stats.getHitChance) + .LevelScaling(0.1f) + .RarityScaling(0.1f) + .PercentFormatting() + .RoundTo(2); + + new ItemStatBuilder(Stat.ARMOR, "Armor", 5f, 10f) + .AffectsStat(ModdedPlayer.Stats.armor) + .Additive(ModdedPlayer.Stats.armor) + .LevelScaling(1.4f) + .RarityScaling(1.1f); + + new ItemStatBuilder(Stat.ELITE_DAMAGE_REDUCTION, "Reduced damage taken from elites", 0.04f, 0.09f) + .AffectsStat(ModdedPlayer.Stats.damageFromElites) + .OneMinusMultiplier(ModdedPlayer.Stats.damageFromElites) + .LevelScaling(0.05f) + .RarityScaling(0.2f) + .RoundTo(2) + .PercentFormatting() + .Cap(0.5f); + + new ItemStatBuilder(Stat.MAX_LIFE, "Attack speed", 0.025f, 0.05f) + .AffectsStat(ModdedPlayer.Stats.attackSpeed) + .Additive(ModdedPlayer.Stats.attackSpeed) + .LevelScaling(0.05f) + .RarityScaling(0.2f) + .RoundTo(2) + .PercentFormatting() + .Cap(0.5f); + + new ItemStatBuilder(Stat.EXP_GAIN_MULT, "Increased experience gained", 0.025f, 0.05f) + .AffectsStat(ModdedPlayer.Stats.attackSpeed) + .Additive(ModdedPlayer.Stats.attackSpeed) + .LevelScaling(0.1f) + .RarityScaling(0.3f) + .RoundTo(2) + .PercentFormatting() + .Cap(0.5f); + + new ItemStatBuilder(Stat.MASSACRE_DURATION, "Increased massacre duration", 1, 2) + .AffectsStat(ModdedPlayer.Stats.maxMassacreTime) + .Additive(ModdedPlayer.Stats.maxMassacreTime) + .LevelScaling(0.1f) + .RoundTo(2) + .Cap(0.5f); + + new ItemStatBuilder(Stat.SPELL_DAMAGE_MULTIPLIER, "Increased spell damage", 0.03f, 0.06f) + .AffectsStat(ModdedPlayer.Stats.spellDamageMult) + .Additive(ModdedPlayer.Stats.spellDamageMult) + .LevelScaling(0.1f) + .PercentFormatting() + .RoundTo(2) + .Cap(0.5f); + + new ItemStatBuilder(Stat.MELEE_DAMAGE_INCREASE, "Increased melee damage", 0.03f, 0.06f) + .AffectsStat(ModdedPlayer.Stats.meleeIncreasedDmg) + .Additive(ModdedPlayer.Stats.meleeIncreasedDmg) + .LevelScaling(0.1f) + .PercentFormatting() + .RoundTo(2) + .Cap(0.5f); + + new ItemStatBuilder(Stat.RANGED_DAMAGE_INCREASE, "Increased ranged damage", 0.03f, 0.06f) + .AffectsStat(ModdedPlayer.Stats.rangedIncreasedDmg) + .Additive(ModdedPlayer.Stats.rangedIncreasedDmg) + .LevelScaling(0.1f) + .PercentFormatting() + .RoundTo(2) + .Cap(0.5f); + + + new ItemStatBuilder(Stat.BASE_MELEE_DAMAGE, "Bonus melee damage", 1.5f, 3f) + .AffectsStat(ModdedPlayer.Stats.baseMeleeDamage) + .Additive(ModdedPlayer.Stats.baseMeleeDamage) + .LevelScaling(0.6f); + + new ItemStatBuilder(Stat.BASE_SPELL_DAMAGE, "Bonus spell damage", 1.5f, 3f) + .AffectsStat(ModdedPlayer.Stats.baseSpellDamage) + .Additive(ModdedPlayer.Stats.baseSpellDamage) + .LevelScaling(0.6f); + + new ItemStatBuilder(Stat.BASE_RANGED_DAMAGE, "Bonus ranged damage", 1.5f, 3f) + .AffectsStat(ModdedPlayer.Stats.baseRangedDamage) + .Additive(ModdedPlayer.Stats.baseMeleeDamage) + .LevelScaling(0.6f); + + new ItemStatBuilder(Stat.MAX_ENERGY_FROM_AGILITY, "Each point of agility increases max energy", 0.0125f, 0.025f) + .AffectsStat(ModdedPlayer.Stats.maxEnergyFromAgi) + .Additive(ModdedPlayer.Stats.maxEnergyFromAgi) + .RarityScaling(0.5f) + .NoLevelScaling(); + + new ItemStatBuilder(Stat.MAX_HEALTH_FROM_VITALITY, "Each point of vitality increases max health", 0.075f, 0.25f) + .AffectsStat(ModdedPlayer.Stats.maxHealthFromVit) + .Additive(ModdedPlayer.Stats.maxHealthFromVit) + .RarityScaling(0.5f) + .NoLevelScaling(); + + new ItemStatBuilder(Stat.SPELL_DMG_FROM_INT, "Each point of intelligence increases spell damage", 0.004f, 0.008f) + .AffectsStat(ModdedPlayer.Stats.spellDmgFromInt) + .Additive(ModdedPlayer.Stats.spellDmgFromInt) + .RarityScaling(0.5f) + .NoLevelScaling(); + + new ItemStatBuilder(Stat.MELEE_DMG_FROM_STR, "Each point of strength increases melee damage", 0.001f, 0.0018f) + .AffectsStat(ModdedPlayer.Stats.meleeDmgFromStr) + .Additive(ModdedPlayer.Stats.meleeDmgFromStr) + .RarityScaling(0.5f) + .NoLevelScaling(); + + new ItemStatBuilder(Stat.RANGED_DMG_FROM_AGI, "Each point of agility increases ranged damage", 0.001f, 0.0018f) + .AffectsStat(ModdedPlayer.Stats.rangedDmgFromAgi) + .Additive(ModdedPlayer.Stats.rangedDmgFromAgi) + .RarityScaling(0.5f) + .NoLevelScaling(); + + new ItemStatBuilder(Stat.ALL_RECOVERY, "Energy and health recovery", 0.03f, 0.07f) + .AffectsStat(ModdedPlayer.Stats.allRecoveryMult) + .Additive(ModdedPlayer.Stats.allRecoveryMult) + .PercentFormatting() + .LevelScaling(0.1f) + .RarityScaling(0.2f); + + new ItemStatBuilder(Stat.MOVEMENT_SPEED, "Movement speed", 0.03f, 0.07f) + .AffectsStat(ModdedPlayer.Stats.mOVEMENT_SPEED) + .Additive(ModdedPlayer.Stats.mOVEMENT_SPEED) + .PercentFormatting() + .LevelScaling(0.1f) + .RarityScaling(0.2f); + + new ItemStatBuilder(Stat.JUMP_POWER, "Jump power", 0.03f, 0.07f) + .AffectsStat(ModdedPlayer.Stats.mOVEMENT_SPEED) + .Additive(ModdedPlayer.Stats.mOVEMENT_SPEED) + .PercentFormatting() + .LevelScaling(0.1f) + .RarityScaling(0.2f); + + new ItemStatBuilder(Stat.MELEE_WEAPON_RANGE, "Melee weapon range", 0.03f, 0.07f) + .AffectsStat(ModdedPlayer.Stats.weaponRange) + .MultiplyPlusOne(ModdedPlayer.Stats.weaponRange) + .PercentFormatting() + .LevelScaling(0.1f) + .RarityScaling(0.2f); + + new ItemStatBuilder(Stat.ATTACK_COST_REDUCTION, "Reduced stamina cost of attacks", 0.045f, 0.09f) + .AffectsStat(ModdedPlayer.Stats.attackStaminaCost) + .OneMinusMultiplier(ModdedPlayer.Stats.attackStaminaCost) + .PercentFormatting() + .LevelScaling(0.1f) + .RarityScaling(0.2f); + + new ItemStatBuilder(Stat.SPELL_COST_REDUCTION, "Reduced resource cost of spells", 0.03f, 0.07f) + .AffectsStat(ModdedPlayer.Stats.spellCost) + .OneMinusMultiplier(ModdedPlayer.Stats.spellCost) + .PercentFormatting() + .LevelScaling(0.1f) + .RarityScaling(0.2f); + + new ItemStatBuilder(Stat.SPELL_COST_TO_STAMINA, "Spells partially use stamina instead of energy", 0.6f, 0.13f) + .AffectsStat(ModdedPlayer.Stats.spellCostEnergyCost) + .OneMinusMultiplier(ModdedPlayer.Stats.spellCostEnergyCost) + .PercentFormatting() + .LevelScaling(0.05f) + .RarityScaling(0.2f); + + new ItemStatBuilder(Stat.ENERGY_REGEN_BASE, "Energy regeneration", 0.06f, 0.13f) + .AffectsStat(ModdedPlayer.Stats.energyRecoveryBase) + .Additive(ModdedPlayer.Stats.energyRecoveryBase) + .RoundTo(2) + .LevelScaling(0.5f); + + new ItemStatBuilder(Stat.MAX_LIFE_MULT, "Increased life", 0.03f, 0.07f) + .AffectsStat(ModdedPlayer.Stats.maxLifeMult) + .Additive(ModdedPlayer.Stats.maxLifeMult) + .RoundTo(1) + .LevelScaling(0.05f) + .PercentFormatting(); + + new ItemStatBuilder(Stat.MAX_ENERGY_MULT, "Increased energy", 0.03f, 0.07f) + .AffectsStat(ModdedPlayer.Stats.maxEnergyMult) + .Additive(ModdedPlayer.Stats.maxEnergyMult) + .RoundTo(1) + .LevelScaling(0.05f) + .PercentFormatting(); + + new ItemStatBuilder(Stat.COOLDOWN_REDUCTION, "Reduced spell cooldown", 0.03f, 0.07f) + .AffectsStat(ModdedPlayer.Stats.cooldown) + .OneMinusMultiplier(ModdedPlayer.Stats.cooldown) + .PercentFormatting() + .LevelScaling(0.1f) + .RarityScaling(0.2f); + + new ItemStatBuilder(Stat.ENERGY_ON_HIT, "Energy on hit", 0.1f, 0.2f) + .AffectsStat(ModdedPlayer.Stats.energyOnHit) + .Additive(ModdedPlayer.Stats.energyOnHit) + .RoundTo(2) + .LevelScaling(0.5f); + + new ItemStatBuilder(Stat.BLOCK, "Block", 1, 1.7f) + .AffectsStat(ModdedPlayer.Stats.block) + .Additive(ModdedPlayer.Stats.block); + + new ItemStatBuilder(Stat.PROJECTILE_SPEED, "Projectile speed", 0.02f, 0.05f) + .AffectsStat(ModdedPlayer.Stats.projectileSpeed) + .Additive(ModdedPlayer.Stats.projectileSpeed) + .PercentFormatting() + .LevelScaling(0.25f); + + new ItemStatBuilder(Stat.PROJECTILE_SIZE, "Projectile size", 0.03f, 0.06f) + .AffectsStat(ModdedPlayer.Stats.projectileSize) + .Additive(ModdedPlayer.Stats.projectileSize) + .PercentFormatting() + .LevelScaling(0.25f); + + new ItemStatBuilder(Stat.PROJECTILE_PIERCE_CHANCE, "Chance for projectiles to pierce", 0.16f, 0.36f) + .AffectsStat(ModdedPlayer.Stats.projectilePierceChance) + .Additive(ModdedPlayer.Stats.projectilePierceChance) + .PercentFormatting() + .LevelScaling(0.075f); + + new ItemStatBuilder(Stat.HEADSHOT_DAMAGE_MULT, "Headshot damage", 0.1f, 0.26f) + .AffectsStat(ModdedPlayer.Stats.headShotDamage) + .Additive(ModdedPlayer.Stats.headShotDamage) + .PercentFormatting() + .LevelScaling(0.35f); + + new ItemStatBuilder(Stat.MELEE_ARMOR_PIERCING, "Armor damage on melee hit", 1.5f, 3f) + .AffectsStat(ModdedPlayer.Stats.meleeArmorPiercing) + .Additive(ModdedPlayer.Stats.block) + .LevelScaling(1.1f) + .RarityScaling(1.5f); + + new ItemStatBuilder(Stat.RANGED_ARMOR_PIERCING, "Armor damage on ranged hit", 0.6f, 1.2f) + .AffectsStat(ModdedPlayer.Stats.rangedArmorPiercing) + .Additive(ModdedPlayer.Stats.block) + .LevelScaling(1.1f) + .RarityScaling(1.5f); + + new ItemStatBuilder(Stat.ARMOR_PIERCING, "Armor damage on hit", 0.5f, 1f) + .AffectsStat(ModdedPlayer.Stats.allArmorPiercing) + .Additive(ModdedPlayer.Stats.block) + .LevelScaling(1.1f) + .RarityScaling(1.5f); + + new ItemStatBuilder(Stat.PROJECTILE_SPEED, "Increased quantity of loot", 0.01f, 0.06f) + .AffectsStat(ModdedPlayer.Stats.magicFind_quantity) + .Additive(ModdedPlayer.Stats.magicFind_quantity) + .PercentFormatting() + .LevelScaling(0.15f); + + new ItemStatBuilder(Stat.PROJECTILE_SPEED, "Increased quality of loot", 0.01f, 0.06f) + .AffectsStat(ModdedPlayer.Stats.projectileSpeed) + .Additive(ModdedPlayer.Stats.projectileSpeed) + .PercentFormatting() + .LevelScaling(0.15f); + + new ItemStatBuilder(Stat.FIRE_DAMAGE, "Fire damage", 0.035f, 0.07f) + .AffectsStat(ModdedPlayer.Stats.fireDamage) + .Additive(ModdedPlayer.Stats.fireDamage) + .PercentFormatting() + .LevelScaling(0.25f) + .RarityScaling(0.5f); + + + new ItemStatBuilder(Stat.CHANCE_ON_HIT_TO_BLEED, "Chance to cause bleeding on hit", 0.01f, 0.03f) + .AffectsStat(ModdedPlayer.Stats.chanceToBleed) + .Additive(ModdedPlayer.Stats.chanceToBleed) + .PercentFormatting() + .LevelScaling(0.2f) + .RarityScaling(0.5f); + + new ItemStatBuilder(Stat.CHANCE_ON_HIT_TO_SLOW, "Chance to slow enemies on hit", 0.02f, 0.04f) + .AffectsStat(ModdedPlayer.Stats.chanceToSlow) + .Additive(ModdedPlayer.Stats.chanceToSlow) + .PercentFormatting() + .LevelScaling(0.2f) + .RarityScaling(0.5f); + + new ItemStatBuilder(Stat.CHANCE_ON_HIT_TO_WEAKEN, "Chance to weaken enemies on hit", 0.02f, 0.04f) + .AffectsStat(ModdedPlayer.Stats.chanceToWeaken) + .Additive(ModdedPlayer.Stats.chanceToWeaken) + .PercentFormatting() + .LevelScaling(0.2f) + .RarityScaling(0.5f); + + new ItemStatBuilder(Stat.THORNS, "Thorns", 1.5f, 2f) + .AffectsStat(ModdedPlayer.Stats.thorns) + .Additive(ModdedPlayer.Stats.thorns) + .LevelScaling(1.2f) + .RarityScaling(1.5f); + + new ItemStatBuilder(Stat.THORNS_MULT, "Thorns Damage", 0.05f, 0.07f) + .AffectsStat(ModdedPlayer.Stats.thornsDmgMult) + .MultiplyPlusOne(ModdedPlayer.Stats.thornsDmgMult) + .PercentFormatting() + .LevelScaling(0.5f) + .RarityScaling(1f); + + new ItemStatBuilder(Stat.EXPLOSION_DAMAGE, "Explosion damage", 0.15f, 0.5f) + .AffectsStat(ModdedPlayer.Stats.explosionDamage) + .Additive(ModdedPlayer.Stats.explosionDamage) + .LevelScaling(0.3f) + .RoundTo(2) + .PercentFormatting(); + + new ItemStatBuilder(Stat.THROWN_SPEAR_DAMAGE, "Increased spear throw damage", 0.25f, 0.5f) + .AffectsStat(ModdedPlayer.Stats.perk_thrownSpearDamageMult) + .MultiplyPlusOne(ModdedPlayer.Stats.perk_thrownSpearDamageMult) + .LevelScaling(0.16f) + .RoundTo(2) + .PercentFormatting(); + + + + new ItemStatBuilder(Stat.THROWN_SPEAR_DAMAGE, "Increased spear throw damage", 0.25f, 0.5f) + .AffectsStat(ModdedPlayer.Stats.perk_thrownSpearDamageMult) + .MultiplyPlusOne(ModdedPlayer.Stats.perk_thrownSpearDamageMult) + .NoLevelScaling() + .RoundTo(0); + //Extra carry items - i = 1000; - new ItemStat(i, 9f, 18f, 0f, Translations.ItemDataBase_StatDefinitions_42/*Extra Carried Sticks*/, scAdd, 4, () =>LocalPlayer.Inventory.GetMaxAmountOf(57).ToString(), f => ModdedPlayer.instance.AddExtraItemCapacity(57, Mathf.RoundToInt(f)), f => ModdedPlayer.instance.AddExtraItemCapacity(57, -Mathf.RoundToInt(f)), null); //tr - i++; - new ItemStat(i, 7f, 18f, 0f, Translations.ItemDataBase_StatDefinitions_43/*Extra Carried Rocks*/, scAdd, 4, () => LocalPlayer.Inventory.GetMaxAmountOf(53).ToString(), f => ModdedPlayer.instance.AddExtraItemCapacity(53, Mathf.RoundToInt(f)), f => ModdedPlayer.instance.AddExtraItemCapacity(53, -Mathf.RoundToInt(f)), null); //tr - i++; - new ItemStat(i, 6f, 18f, 0f, Translations.ItemDataBase_StatDefinitions_44/*Extra Carried Ropes*/, scAdd, 4, () => LocalPlayer.Inventory.GetMaxAmountOf(43).ToString(), f => ModdedPlayer.instance.AddExtraItemCapacity(54, Mathf.RoundToInt(f)), f => ModdedPlayer.instance.AddExtraItemCapacity(43, -Mathf.RoundToInt(f)), null); //tr - i++; - new ItemStat(i, 15f, 25f, 0f, Translations.ItemDataBase_StatDefinitions_47/*Extra Carried Drinks*/, scAdd, 4, () => Translations.ItemDataBase_StatDefinitions_46/*Booze: */ + LocalPlayer.Inventory.GetMaxAmountOf((int)MoreCraftingReceipes.VanillaItemIDs.BOOZE).ToString() + Translations.ItemDataBase_StatDefinitions_45/* Soda: */ + LocalPlayer.Inventory.GetMaxAmountOf((int)MoreCraftingReceipes.VanillaItemIDs.SODA), f => //tr - { - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.BOOZE, Mathf.RoundToInt(f)); - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.SODA, Mathf.RoundToInt(f)); - }, - f => - { - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.BOOZE, -Mathf.RoundToInt(f)); - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.SODA, -Mathf.RoundToInt(f)); - }, - null); - i++; - new ItemStat(i, 7f, 20f, 0f, Translations.ItemDataBase_StatDefinitions_48/*Extra Carried Food*/, scAdd, 4, //tr - () => "...", f => - { - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.GENERICMEAT, Mathf.RoundToInt(f)); - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.SMALLGENERICMEAT, Mathf.RoundToInt(f)); - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.BLACKBERRY, Mathf.RoundToInt(f)); - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.BLUEBERRY, Mathf.RoundToInt(f)); - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.CHOCOLATEBAR, Mathf.RoundToInt(f)); - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.LIZARD, Mathf.RoundToInt(f)); - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.RABBITDEAD, Mathf.RoundToInt(f)); - }, - f => - { - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.GENERICMEAT, -Mathf.RoundToInt(f)); - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.SMALLGENERICMEAT, -Mathf.RoundToInt(f)); - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.BLACKBERRY,- Mathf.RoundToInt(f)); - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.BLUEBERRY, -Mathf.RoundToInt(f)); - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.CHOCOLATEBAR, -Mathf.RoundToInt(f)); - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.LIZARD, -Mathf.RoundToInt(f)); - ModdedPlayer.instance.AddExtraItemCapacity((int)MoreCraftingReceipes.VanillaItemIDs.RABBITDEAD, -Mathf.RoundToInt(f)); - }, - null); - i++; - - - i = 2000; - new ItemStat(i, 3f, 6f, 0f, Translations.ItemDataBase_StatDefinitions_49/*Black Hole Size*/, scAdd, 6, () => ModdedPlayer.Stats.spell_blackhole_radius.GetFormattedAmount(), f => ModdedPlayer.Stats.spell_blackhole_radius.valueAdditive += f, f => ModdedPlayer.Stats.spell_blackhole_radius.valueAdditive += -f, f => ModdedPlayer.Stats.spell_blackhole_radius.valueAdditive += f) { RoundingCount = 1 }; //tr - i++; - new ItemStat(i, 2f, 3f, 0f, Translations.ItemDataBase_StatDefinitions_50/*Black Hole Lifetime*/, scAdd, 6, () => ModdedPlayer.Stats.spell_blackhole_duration.GetFormattedAmount(), f => ModdedPlayer.Stats.spell_blackhole_duration.valueAdditive += f, f => ModdedPlayer.Stats.spell_blackhole_duration.valueAdditive += -f, f => ModdedPlayer.Stats.spell_blackhole_duration.valueAdditive += f) { RoundingCount = 1 }; //tr - i++; - new ItemStat(i, 5f, 7f, 0f, Translations.ItemDataBase_StatDefinitions_51/*Black Hole Gravitational Force*/, scAdd, 6, () => ModdedPlayer.Stats.spell_blackhole_pullforce.GetFormattedAmount(), f => ModdedPlayer.Stats.spell_blackhole_pullforce.valueAdditive += f, f => ModdedPlayer.Stats.spell_blackhole_pullforce.valueAdditive += -f, f => ModdedPlayer.Stats.spell_blackhole_pullforce.valueAdditive += f) { RoundingCount = 1 }; //tr - i++; - new ItemStat(i, 0.2f, 0.3f, 0.9f, Translations.ItemDataBase_StatDefinitions_52/*Black Hole damage*/, scAdd, 6, () => ModdedPlayer.Stats.spell_blackhole_damage.GetFormattedAmount(), f => ModdedPlayer.Stats.spell_blackhole_damage.valueAdditive += f, f => ModdedPlayer.Stats.spell_blackhole_damage.valueAdditive += -f, f => ModdedPlayer.Stats.spell_blackhole_damage.valueAdditive += f) { RoundingCount = 1 }; //tr - i++; - new ItemStat(i, 1, 1, 0, Translations.ItemDataBase_StatDefinitions_53/*Stun on hit*/, scAdd, 1, () =>"", f => ModdedPlayer.Stats.i_HammerStun.value = true, f => ModdedPlayer.Stats.i_HammerStun.value = false, null); //tr - i++; - new ItemStat(i, 3, 5f, 0, Translations.ItemDataBase_StatDefinitions_54/*Snap Freeze Duration*/, scAdd, 3, () => ModdedPlayer.Stats.spell_snapFreezeDuration.GetFormattedAmount(), f => ModdedPlayer.Stats.spell_snapFreezeDuration.valueAdditive += f, f => ModdedPlayer.Stats.spell_snapFreezeDuration.valueAdditive -= f, null); //tr - i++; - new ItemStat(i, 1f, 1.15f, 0, Translations.ItemDataBase_StatDefinitions_55/*Raft Speed*/, scAdd, 4, () => ModdedPlayer.Stats.perk_RaftSpeedMultipier.GetFormattedAmount(), f => ModdedPlayer.Stats.perk_RaftSpeedMultipier.Add(f), f => ModdedPlayer.Stats.perk_RaftSpeedMultipier.Substract(f), null) { DisplayAsPercent = true, RoundingCount = 2 }; //tr - i++; - - //Sockets - i = 3000; - new ItemStat(i++, 1, 3.5f, 0, Translations.ItemDataBase_StatDefinitions_56/*Empty Socket*/, scAdd, 0, null, null, null) { Multipier = 0 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_57/*Socket: Crit Chance*/, scAdd, 0,null, f=> ModdedPlayer.Stats.critChance.Add(f), f => ModdedPlayer.Stats.critChance.Substract(f)) //tr - { DisplayAsPercent = true, RoundingCount = 1}; - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_58/*Socket: Agility*/, scAdd, 0,null, StatActions.AddAgility, StatActions.RemoveAgility, null) //tr - { RoundingCount = 0 }; - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_59/*Socket: Movement Speed*/, scAdd, 0,null, StatActions.AddMoveSpeed, StatActions.RemoveMoveSpeed, null) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_60/*Socket: Ranged Damage*/, scAdd, 0,null, StatActions.AddRangedDamageAmplifier, StatActions.RemoveRangedDamageAmplifier, null) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_61/*Socket: Ranged Armor Piercing*/, scAdd, 0,null, f => ModdedPlayer.Stats.rangedArmorPiercing.valueAdditive += Mathf.RoundToInt(f), f => ModdedPlayer.Stats.rangedArmorPiercing.valueAdditive += -Mathf.RoundToInt(f), null) { RoundingCount = 0 }; //tr - - //3006 - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_62/*Socketed Shark Tooth: Attack Speed*/, scAdd, 0,null, StatActions.AddAttackSpeed, StatActions.RemoveAttackSpeed, null) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_63/*Socketed Shark Tooth: Strength*/, scAdd, 0,null, StatActions.AddStrength, StatActions.RemoveStrength, null) { RoundingCount = 0 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_64/*Socketed Shark Tooth: Damage Reduction*/, scOneMinusMult, 0,null, StatActions.AddDamageReduction, StatActions.RemoveDamageReduction, null) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_65/*Socketed Shark Tooth: Melee Damage*/, scAdd, 0,null, StatActions.AddMeleeDamageAmplifier, StatActions.RemoveMeleeDamageAmplifier, null) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_66/*Socketed Shark Tooth: Melee Armor Piercing*/, scAdd, 0,null, f => ModdedPlayer.Stats.meleeArmorPiercing.valueAdditive += Mathf.RoundToInt(f), f => ModdedPlayer.Stats.meleeArmorPiercing.valueAdditive += -Mathf.RoundToInt(f), null) { RoundingCount = 0 }; //tr - - //30011 - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_67/*Socket: Cooldown Reduction*/, scOneMinusMult, 0,null, f => ModdedPlayer.Stats.cooldown.valueMultiplicative *= (1 - f), f => ModdedPlayer.Stats.cooldown.valueMultiplicative /= (1 - f), null) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_68/*Socket: Intelligence*/, scAdd, 0,null, StatActions.AddIntelligence, StatActions.RemoveIntelligence, null) { RoundingCount = 0 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_69/*Socket: Spell Cost Reduction*/, scOneMinusMult, 0,null, f => ModdedPlayer.Stats.spellCost.valueMultiplicative *= 1 - f, f => ModdedPlayer.Stats.spellCost.valueMultiplicative /= 1 - f, null) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_70/*Socket: Spell Damage*/, scAdd, 0,null, StatActions.AddSpellDamageAmplifier, StatActions.RemoveSpellDamageAmplifier, null) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_71/*Socket: Energy On Hit*/, scAdd, 0,null, f => ModdedPlayer.Stats.energyOnHit.valueAdditive += f, f => ModdedPlayer.Stats.energyOnHit.valueAdditive += -f, null) { RoundingCount = 2, Multipier = 0.02f }; //tr - - //3016 - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_72/*Socket: Experience Gain*/, scMultPlusOne, 0,null, StatActions.AddExpFactor, StatActions.RemoveExpFactor, null) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_73/*Socket: Vitality */, scAdd, 0,null, StatActions.AddVitality, StatActions.RemoveVitality, null) { RoundingCount = 0 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_74/*Socket: Magic Find*/, scAdd, 0,null, f => StatActions.AddMagicFind(f), f => StatActions.AddMagicFind(-f), null) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_75/*Socket: All Healing*/, scMultPlusOne, 0,null, StatActions.AddHealingMultipier, StatActions.RemoveHealingMultipier, null) { DisplayAsPercent = true, RoundingCount = 1, Multipier = 1.25f }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_76/*Socket: Life Per Second*/, scAdd, 0,null, StatActions.AddHPRegen, StatActions.RemoveHPRegen, null) { RoundingCount = 1, Multipier = 0.04f }; //tr - - //3021 - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_77/*Socket: Maximum Health */, scMultPlusOne, 0,null, f => ModdedPlayer.Stats.maxHealthMult.valueMultiplicative *= 1 + f, f => ModdedPlayer.Stats.maxHealthMult.valueMultiplicative /= 1 + f, null) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_78/*Socket: Armor */, scAdd, 0,null, StatActions.AddArmor, StatActions.RemoveArmor, null) { RoundingCount = 0, Multipier = 10f }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_79/*Socket: Resistance To Magic*/, scOneMinusMult, 0,null, StatActions.AddMagicResistance, StatActions.RemoveMagicResistance, null) { DisplayAsPercent = true, RoundingCount = 1 }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_80/*Socket: Crit Damage*/, scMultPlusOne, 0,null, f => ModdedPlayer.Stats.critDamage.Add(f), f => ModdedPlayer.Stats.critDamage.Substract(f), null) { DisplayAsPercent = true, RoundingCount = 1, Multipier = 5f }; //tr - new ItemStat(i++, 0,0,1, Translations.ItemDataBase_StatDefinitions_81/*Socket: Thorns*/, scAdd, 0,null, f => ModdedPlayer.Stats.thorns.valueAdditive += f, f => ModdedPlayer.Stats.thorns.valueAdditive -= f, null) { RoundingCount = 0, Multipier = 5f }; //tr + new ItemStatBuilder(Stat.EXTRA_CARRIED_STICKS, "More carried sticks", 5, 15) + .AffectsCarryCapacity(MoreCraftingReceipes.VanillaItemIDs.STICK) + .NoLevelScaling() + .RoundTo(0); + + new ItemStatBuilder(Stat.EXTRA_CARRIED_ROCKS, "More carried rocks", 5, 15) + .AffectsCarryCapacity(MoreCraftingReceipes.VanillaItemIDs.ROCK) + .NoLevelScaling() + .RoundTo(0); + + new ItemStatBuilder(Stat.EXTRA_CARRIED_ROPES, "More carried ropes", 5, 15) + .AffectsCarryCapacity(MoreCraftingReceipes.VanillaItemIDs.ROPE) + .NoLevelScaling() + .RoundTo(0); + + new ItemStatBuilder(Stat.EXTRA_CARRIED_DRINKS, "More carried booze and soda", 15, 30) + .AffectsCarryCapacity( + MoreCraftingReceipes.VanillaItemIDs.BOOZE, + MoreCraftingReceipes.VanillaItemIDs.SODA) + .NoLevelScaling() + .RoundTo(0); + + new ItemStatBuilder(Stat.EXTRA_CARRIED_FOOD, "More carried food", 10, 20) + .AffectsCarryCapacity( + MoreCraftingReceipes.VanillaItemIDs.GENERICMEAT, + MoreCraftingReceipes.VanillaItemIDs.SMALLGENERICMEAT, + MoreCraftingReceipes.VanillaItemIDs.BLACKBERRY, + MoreCraftingReceipes.VanillaItemIDs.BLUEBERRY, + MoreCraftingReceipes.VanillaItemIDs.CHOCOLATEBAR, + MoreCraftingReceipes.VanillaItemIDs.LIZARD, + MoreCraftingReceipes.VanillaItemIDs.RABBITDEAD) + .NoLevelScaling() + .RoundTo(0); + + + // Black hole stats + new ItemStatBuilder(Stat.BLACK_HOLE_DAMAGE, "Bonus black hole damage", 3f, 12f) + .AffectsStat(ModdedPlayer.Stats.spell_blackhole_damage) + .Additive(ModdedPlayer.Stats.spell_blackhole_damage) + .LevelScaling(0.6f); + + new ItemStatBuilder(Stat.BLACK_HOLE_GRAVITY_FORCE, "Black hole gravitational force", 10f, 30f) + .AffectsStat(ModdedPlayer.Stats.spell_blackhole_pullforce) + .Additive(ModdedPlayer.Stats.spell_blackhole_pullforce) + .NoLevelScaling() + .NoRarityScaling(); + + new ItemStatBuilder(Stat.BLACKHOLE_SIZE, "Black hole radius", 5f, 20f) + .AffectsStat(ModdedPlayer.Stats.spell_blackhole_radius) + .Additive(ModdedPlayer.Stats.spell_blackhole_radius) + .NoLevelScaling() + .NoRarityScaling(); + + new ItemStatBuilder(Stat.BLACK_HOLE_DURATION, "Black hole duration", 5f, 20f) + .AffectsStat(ModdedPlayer.Stats.spell_blackhole_duration) + .Additive(ModdedPlayer.Stats.spell_blackhole_duration) + .NoLevelScaling() + .NoRarityScaling(); + + + + new ItemStatBuilder(Stat.HAMMER_STUN_ON_HIT, "Stuns enemies on hit", 1, 1) + .Additive(ModdedPlayer.Stats.i_HammerStun) + .NoLevelScaling() + .NoRarityScaling() + .NoRarityScaling() + .NoLevelScaling() + .GetTotalStat = () => ""; + + new ItemStatBuilder(Stat.SNAP_FREEZE_DURATION, "Snap freeze duration", 1f, 5f) + .AffectsStat(ModdedPlayer.Stats.spell_snapFreezeDuration) + .Additive(ModdedPlayer.Stats.spell_snapFreezeDuration) + .NoLevelScaling() + .NoRarityScaling(); + + new ItemStatBuilder(Stat.RAFT_SPEED, "Global raft speed", 0.5f, 4f) + .AffectsStat(ModdedPlayer.Stats.perk_RaftSpeedMultipier) + .Additive(ModdedPlayer.Stats.perk_RaftSpeedMultipier) + .PercentFormatting() + .RoundTo(2) + .NoLevelScaling() + .NoRarityScaling(); + } } } \ No newline at end of file diff --git a/Items/ItemDefinitions/Amulets.cs b/Items/ItemDefinitions/Amulets.cs new file mode 100644 index 0000000..6ac48c7 --- /dev/null +++ b/Items/ItemDefinitions/Amulets.cs @@ -0,0 +1,113 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; + +using ChampionsOfForest.Items.ItemTemplates; +using ChampionsOfForest.Player; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + public static partial class ItemDatabase + { + + public static void AddAmulets() + { + + //------------------------------------------------------ + //Rarity 0 (White) + //------------------------------------------------------ + + new Amulet() + .AmuletStatSlot(1) + .DefenseStatSlot(1) + .Name("Steel Locket") + .Description("A a trinklet that boosts defense.") + .Rarity(0); + + new Amulet() + .AmuletStatSlot(2) + .Name("Bronze Locket") + .Description("") + .Rarity(0) + .Weight(5000); + + new Amulet() + .AmuletStatSlot(1) + .MagicStatSlot(1) + .Name("Small Sapphire Pedant") + .Description("Mages value sapphires for their arcane properites.") + .Rarity(0); + + + + //------------------------------------------------------ + //Rarity 1 (Green) + //------------------------------------------------------ + + new Amulet() + .AmuletStatSlot(3) + .Name("Enchanted Golden Chain") + .Description("") + .Rarity(1) + .Weight(5000); + + new Amulet() + .AmuletStatSlot(2) + .RangedStatSlot(1) + .StatSlot(new Stat[] { LOOT_QUALITY, LOOT_QUANTITY }, probability: 0.10f) + .Name("Hunter's Charm") + .Description("An amulet crafted from a beast's fang, said to enhance fortune and precision during hunts.") + .Rarity(0); + + //------------------------------------------------------ + //Rarity 2 (Blue) + //------------------------------------------------------ + + new Amulet() + .AmuletStatSlot(4) + .Name("Champion's Chain") + .Description("") + .Rarity(2) + .Weight(5000); + + //------------------------------------------------------ + //Rarity 3 (Yellow) + //------------------------------------------------------ + + new Amulet() + .AmuletStatSlot(5) + .Name("Sun Amulet") + .Description("") + .Rarity(3); + + + + new Amulet() + .AmuletStatSlot(3) + .DefenseStatSlot(1) + .RecoveryStatSlot(1) + .Name("Flesh Amulet") + .Description("Obtainable only from mutants.") + .Rarity(3) + .SetDropCreepy(); + + //------------------------------------------------------ + //Rarity 4 (Red) + //------------------------------------------------------ + + new Amulet() + .AmuletStatSlot(6) + .Name("Viridescent Mirror") + .Description("") + .Rarity(4) + .UniqueStat("Magic arrow creates 2 additional projectiles and fires in volleys", + () => ModdedPlayer.Stats.spell_magicArrowVolleyCount.Add(2), + () => ModdedPlayer.Stats.spell_magicArrowVolleyCount.Sub(2)); + + } + } +} \ No newline at end of file diff --git a/Items/ItemDefinitions/Boots.cs b/Items/ItemDefinitions/Boots.cs new file mode 100644 index 0000000..0ec6f8d --- /dev/null +++ b/Items/ItemDefinitions/Boots.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; + +using ChampionsOfForest.Items.ItemTemplates; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + public static partial class ItemDatabase + { + + public static void AddBoots() + { + //------------------------------------------------------ + //Rarity 0 (White) + //------------------------------------------------------ + + new Boot() + .DefaultStatSlot(1) + .StatSlot(new Stat[] { MOVEMENT_SPEED }) + .Name("") + .Description("") + .Rarity(0); + + //------------------------------------------------------ + //Rarity 1 (Green) + //------------------------------------------------------ + + new Boot() + .DefaultStatSlot(2) + .StatSlot(new Stat[] { MOVEMENT_SPEED }) + .Name("") + .Description("") + .Rarity(1); + + //------------------------------------------------------ + //Rarity 2 (Blue) + //------------------------------------------------------ + + new Boot() + .DefaultStatSlot(3) + .StatSlot(new Stat[] { MOVEMENT_SPEED }) + .Name("") + .Description("") + .Rarity(2); + + //------------------------------------------------------ + //Rarity 3 (Yellow) + //------------------------------------------------------ + + new Boot() + .DefaultStatSlot(4) + .StatSlot(new Stat[] { MOVEMENT_SPEED }) + .Name("") + .Description("") + .Rarity(3); + + //------------------------------------------------------ + //Rarity 4 (Red) + //------------------------------------------------------ + + new Boot() + .DefaultStatSlot(5) + .StatSlot(new Stat[] { MOVEMENT_SPEED }) + .Name("") + .Description("") + .Rarity(4); + + } + } + +} \ No newline at end of file diff --git a/Items/ItemDefinitions/Bracers.cs b/Items/ItemDefinitions/Bracers.cs new file mode 100644 index 0000000..352fdbc --- /dev/null +++ b/Items/ItemDefinitions/Bracers.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; + +using ChampionsOfForest.Items.ItemTemplates; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + public static partial class ItemDatabase + { + + public static void AddBracers() + { + + //------------------------------------------------------ + //Rarity 0 (White) + //------------------------------------------------------ + + new Bracer() + .DefaultStatSlot(1) + .Name("") + .Description("") + .Rarity(0); + + //------------------------------------------------------ + //Rarity 1 (Green) + //------------------------------------------------------ + + new Bracer() + .DefaultStatSlot(2) + .Name("") + .Description("") + .Rarity(1); + + //------------------------------------------------------ + //Rarity 2 (Blue) + //------------------------------------------------------ + + new Bracer() + .DefaultStatSlot(3) + .Name("") + .Description("") + .Rarity(2); + + //------------------------------------------------------ + //Rarity 3 (Yellow) + //------------------------------------------------------ + + new Bracer() + .DefaultStatSlot(4) + .Name("") + .Description("") + .Rarity(3); + + //------------------------------------------------------ + //Rarity 4 (Red) + //------------------------------------------------------ + + new Bracer() + .DefaultStatSlot(5) + .Name("") + .Description("") + .Rarity(4); + + } + } +} \ No newline at end of file diff --git a/Items/ItemDefinitions/ChestArmors.cs b/Items/ItemDefinitions/ChestArmors.cs new file mode 100644 index 0000000..51c04ef --- /dev/null +++ b/Items/ItemDefinitions/ChestArmors.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; + +using ChampionsOfForest.Items.ItemTemplates; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + public static partial class ItemDatabase + { + + public static void AddChestArmors() + { + + //------------------------------------------------------ + //Rarity 0 (White) + //------------------------------------------------------ + + new ChestArmor() + .DefaultStatSlot(1) + .StatSlot(new Stat[] { ARMOR }, probability: 0.5f) + .Name("") + .Description("") + .Rarity(0); + + //------------------------------------------------------ + //Rarity 1 (Green) + //------------------------------------------------------ + + new ChestArmor() + .DefaultStatSlot(2) + .StatSlot(new Stat[] { ARMOR }, probability: 0.5f) + .Name("") + .Description("") + .Rarity(1); + + //------------------------------------------------------ + //Rarity 2 (Blue) + //------------------------------------------------------ + + new ChestArmor() + .DefaultStatSlot(3) + .StatSlot(new Stat[] { ARMOR }) + .Name("") + .Description("") + .Rarity(2); + + //------------------------------------------------------ + //Rarity 3 (Yellow) + //------------------------------------------------------ + + new ChestArmor() + .DefaultStatSlot(4) + .StatSlot(new Stat[] { ARMOR }) + .Name("") + .Description("") + .Rarity(3); + + //------------------------------------------------------ + //Rarity 4 (Red) + //------------------------------------------------------ + + new ChestArmor() + .DefaultStatSlot(5) + .Name("Mysterious Robe") + .Description("Magic flows through the entirety of this object. It's made out of unknown material.") + .UniqueStat() + .StatSlot(new Stat[] { ARMOR }) + .Rarity(4); + + } + } +} \ No newline at end of file diff --git a/Items/ItemDefinitions/Gloves.cs b/Items/ItemDefinitions/Gloves.cs new file mode 100644 index 0000000..740fcc4 --- /dev/null +++ b/Items/ItemDefinitions/Gloves.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; + +using ChampionsOfForest.Items.ItemTemplates; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + public static partial class ItemDatabase + { + + public static void AddGloves() + { + + //------------------------------------------------------ + //Rarity 0 (White) + //------------------------------------------------------ + + new Glove() + .DefaultStatSlot(1) + .Name("") + .Description("") + .Rarity(0); + + //------------------------------------------------------ + //Rarity 1 (Green) + //------------------------------------------------------ + + new Glove() + .DefaultStatSlot(2) + .Name("") + .Description("") + .Rarity(1); + + //------------------------------------------------------ + //Rarity 2 (Blue) + //------------------------------------------------------ + + new Glove() + .DefaultStatSlot(3) + .Name("") + .Description("") + .Rarity(2); + + //------------------------------------------------------ + //Rarity 3 (Yellow) + //------------------------------------------------------ + + new Glove() + .DefaultStatSlot(4) + .Name("") + .Description("") + .Rarity(3); + + //------------------------------------------------------ + //Rarity 4 (Red) + //------------------------------------------------------ + + new Glove() + .DefaultStatSlot(5) + .Name("") + .Description("") + .Rarity(4); + + } + } +} \ No newline at end of file diff --git a/Items/ItemDefinitions/Helmets.cs b/Items/ItemDefinitions/Helmets.cs new file mode 100644 index 0000000..632de45 --- /dev/null +++ b/Items/ItemDefinitions/Helmets.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; + +using ChampionsOfForest.Items.ItemTemplates; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + public static partial class ItemDatabase + { + public static void AddHelmets() + { + + + //------------------------------------------------------ + //Rarity 0 (White) + //------------------------------------------------------ + + new Helmet() + .DefaultStatSlot(1) + .Name("") + .Description("") + .Rarity(0); + + //------------------------------------------------------ + //Rarity 1 (Green) + //------------------------------------------------------ + + new Helmet() + .DefaultStatSlot(1) + .Name("") + .Description("") + .Rarity(1); + + + //------------------------------------------------------ + //Rarity 2 (Blue) + //------------------------------------------------------ + + new Helmet() + .DefaultStatSlot(2) + .Name("") + .Description("") + .Rarity(2); + + + //------------------------------------------------------ + //Rarity 3 (Yellow) + //------------------------------------------------------ + + new Helmet() + .DefaultStatSlot(4) + .Name("") + .Description("") + .Rarity(3); + + //------------------------------------------------------ + //Rarity 4 (Red) + //------------------------------------------------------ + + new Helmet() + .DefaultStatSlot(5) + .Name("") + .Description("") + .Rarity(4); + } + + } + +} diff --git a/Items/ItemDefinitions/ItemDataBase_ItemDefinitions.cs b/Items/ItemDefinitions/ItemDataBase_ItemDefinitions.cs new file mode 100644 index 0000000..7a8d04e --- /dev/null +++ b/Items/ItemDefinitions/ItemDataBase_ItemDefinitions.cs @@ -0,0 +1,7985 @@ +using System.Linq; +using System.Collections.Generic; +using ChampionsOfForest.Items; +using ChampionsOfForest.Items.Sets; +using ChampionsOfForest.Items.ItemTemplates; +using ChampionsOfForest.Localization; +using ChampionsOfForest.Player; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + + public static partial class ItemDatabase + { + // todo remove this method once rarity 7 items are re-added. + public static void PopulateItems() + { + new BaseItem(new int[][] + { + new int[] { 34 }, + new int[] {43,0,39,59,67 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_1/*Broken Flip-Flops*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_2/*A pair of damaged shoes. Judging by their condition, i can imagine what happened to their owner.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_3/*Worn by one of the passengers of the plane that Eric also flew in.*/, //tr + rarity = 0, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }; + new BaseItem(new int[][] + { + new int[] {34 }, + new int[] {34,0,40,41 }, + new int[] {43 }, + new int[] {43,0 ,67 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_4/*Old Boots*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_5/*A pair of old boots. They must have been lying here for ages.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_6/*Found on the Peninsula, but judging by their condition, they belong neither to a plane passenger nor a cannibal.*/, //tr + rarity = 0, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }; + new BaseItem(new int[][] + { + new int[] {34 }, + new int[] {34,40,41 }, + new int[] {43,3,2 }, + new int[] {43,65,67 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_7/*Damaged Leather Boots*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_8/*A pair of leather boots. They look good and have only some scratches.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_9/*They arrived to the Peninsula the same way Eric did. Since they were in a baggage, they avoided a lot of damage.*/, //tr + rarity = 1, + minLevel = 1, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }; + new BaseItem(new int[][] + { + new int[] {34 }, + new int[] {3,2 }, + new int[] {43,3,2,1,4 }, + new int[] {43,65,67 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_10/*Sturdy Leather Boots*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_11/*A pair of leather boots. They are in a very good condition.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_12/*They arrived to the Peninsula the same way Eric did. Eric found them undamaged in their original box. They still had a pricetag - $419,99.*/, //tr + rarity = 2, + minLevel = 7, + maxLevel = 12, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }; + new BaseItem(new int[][] + { + new int[] {34 }, + new int[] {34,39,41,11,57 }, + new int[] {-1}, + new int[] {16,7,8 }, + new int[] {43,65,67 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_13/*Damaged Army Boots*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_14/*Sturdy, hard, resistant but damaged boots.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_15/*They look modern, almost too modern for everything here.*/, //tr + rarity = 3, + minLevel = 4, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }; + new BaseItem(new int[][] + { + new int[] {34 }, + new int[] {34,3,2,11 }, + new int[] {-1}, + new int[] {16,7,8 }, + new int[] {43,65,67 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_16/*Army Boots*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_17/*Sturdy, hard, resistant boots.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_15/*They look modern, almost too modern for everything here.*/, //tr + rarity = 4, + minLevel = 10, + maxLevel = 14, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }; + new BaseItem(new int[][] + { + new int[] {25,22 }, + new int[] {11,1,3,17 }, + new int[] {22,1,3,17 }, + new int[] {28,1,65 }, + new int[] {-1 }, + new int[] {5,6,16,31,7,8,9,10 }, + new int[] {5,6,16,31,7,8,9,10 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_18/*Armsy Skin Footwear*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_19/*Severed armsy legs, with all of their insides removed. All thats left is dried mutated skin.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_20/*Armsy, the second heaviest of the mutants needs very resistant skin. It often drags its legs on the ground when it moves. The skin on their legs grew very thick, and has bone tissue mixed with skin tissue.*/, //tr + rarity = 6, + minLevel = 5, + maxLevel = 8, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }.SetDropOnlyArmsy(); + new BaseItem(new int[][] + { + new int[] {42,0 }, + new int[] {40,41,26,25,67 }, + new int[] {43,65,0 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_21/*Finger Warmer*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_22/*A little glove to keep your fingers warm and cozy.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_23/*Made of wool.*/, //tr + rarity = 0, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new int[][] + { + new int[] {39,40,41,42,43,24,25,26 }, + new int[] {39,40,41,42,43,24,25,26,44 }, + new int[] {43,0,7,0,5,6,8,0,21,22,23,16,67 }, + new int[] {43,0,7,0,5,6,8,0,0,0,0,21,22,23,65,66,67 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_24/*Thick Rubber Glove*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_25/*A glove that helps get a better grip.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_23/*Made of wool.*/, //tr + rarity = 1, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new int[][] + { + new int[] {39,40,41,42}, + new int[] {39,40,41,42}, + new int[] {1,2,3,4,5,6,7}, + new int[] {0,18,14}, + new int[] {-1 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_26/*Tribal Glove*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_27/*Offers medicore protection.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_28/*Glove made out of thin bones, some may possibly be from a human.*/, //tr + rarity = 3, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new int[][] + { + new int[] {1,2,4,6,8,9}, + new int[] {1,11,65}, + new int[] {21,22,23}, + new int[] {12,13,15}, + new int[] {12,13,24,25,26}, + new int[] {24,25,26,44,35}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_29/*Tribe Leader Glove*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_30/*A glove that offers little protection but a lot of offensive stats.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_31/*A glove made of bones, some have engravings of crosses.*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 4, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new int[][] + { + new int[] {43,0 }, + new int[] {43,39,40,41,42 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_32/*Worn Shorts*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_33/*Some protection for legs.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_34/*Short, made out of cheap thin fabric, and on top of that they are damaged. But its better than nothing.*/, //tr + rarity = 0, + minLevel = 1, + maxLevel = 4, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + new BaseItem(new int[][] + { + new int[] {1000,1001,1002}, + new int[] {1000,1001,1002,1003,1004,0,0,0,0}, + new int[] {8,9,0,0,0,0 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_35/*Cargo Shorts*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_36/*No protection at all but they allow to carry more items.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_37/*They are ugly as hell tho*/, //tr + rarity = 1, + minLevel = 1, + maxLevel = 4, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + new BaseItem(new int[][] + { + new int[] {5 }, + new int[] {43,16,0,41 }, + new int[] {39,40,41,42,43,44,0,0,0,0,0,0,1003,1004}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_38/*Passenger's Jacket*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_39/*It's a little torn. */, //tr + lore = Translations.ItemDataBase_ItemDefinitions_40/*This jacket was worn by Preston A. the 34th passenger on the plane. Eric talked to him at the airport. Guy was odd, and now he's dead.*/, //tr + rarity = 0, + minLevel = 1, + maxLevel = 4, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + new BaseItem(new int[][] + { + new int[] {5 }, + new int[] {1,2,3,4,5,6,65}, + new int[] {43,16,0,41,3,2,1 }, + new int[] {6,7,8,9,10,16,17,31, }, + new int[] {39,40,41,42,43,44,0,0,0,0,0,0,1003,1004}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_41/*Leather Jacket*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_42/*Offers little protection*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_43/*This jacket was in a baggage of one of the plane passengers*/, //tr + rarity = 1, + minLevel = 4, + maxLevel = 7, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + new BaseItem(new int[][] + { + new int[] {5,3,1 }, + new int[] {5 }, + new int[] {16}, + new int[] {7,11 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_44/*Boar Skin Armor*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_45/*It's made from a skin of a huge individual. It's heavy and thick, and surely can protect from attacks of weaker enemies.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_46/*Boar, one of the animals on the peninsula, is rather rare and it's skin is very durable.*/, //tr + rarity = 1, + minLevel = 4, + maxLevel = 8, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + new BaseItem(new int[][] + { + new int[] {5 }, + new int[] {5,3,4,2,1 }, + new int[] {14,0,0,0 }, + new int[] {6,8,9}, + new int[] {6,8,9}, + new int[] {12,13,0,65,66 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_47/*Crocodile Skin Armor*/, //tr + rarity = 2, + minLevel = 7, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + BaseItem baseItem1 = new BaseItem(new int[][] + { + new int[] {5 }, + new int[] {16 }, + new int[] {18,17,16}, + new int[] {11}, + new int[] {65,0}, + new int[] {12,13,1,2,3,4}, + new int[] {25,22,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_48/*Plate armour*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 5, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + baseItem1.statSlots[1][0].multipier = 2.5f; + new BaseItem(new int[][] + { + new int[] {5 }, + new int[] {65 }, + new int[] {16}, + new int[] {16,43}, + new int[] {16,0,43}, + new int[] {6,8,9}, + new int[] {45,43,39,42}, + new int[] {7,10,11,17,18,31,66}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_49/*Bear Skin Armor*/, //tr + rarity = 3, + minLevel = 7, + maxLevel = 8, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + new BaseItem(new int[][] + { + new int[] {5 }, + new int[] {12,13}, + new int[] {13,23,26}, + new int[] {23,26}, + new int[] {34,2,2}, + new int[] {15,14}, + new int[] {16,23,4,5,6,66}, + new int[] {16,23,4,5,6,0,0,0,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_50/*Archer's Gear*/, //tr + rarity = 5, + minLevel = 7, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + new BaseItem(new int[][] + { + new int[] {5 }, + new int[] {23,26,2 }, + new int[] {23,26 }, + new int[] {12,13}, + new int[] {13,23,26}, + new int[] {23,26}, + new int[] {34,2,2}, + new int[] {15,14}, + new int[] {16,23,4,5,6}, + new int[] {45,46,66}, + new int[] {27,48}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_51/*Hazard's Gear*/, //tr + rarity = 6, + minLevel = 5, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + new BaseItem(new int[][] + { + new int[] {47 }, + new int[] {4,29 }, + new int[] {4,29 }, + new int[] {4,29 }, + new int[] {4,17,6,44,38,21,24,8,9}, + new int[] {4,17,6,44,38,21,24,8,9}, + new int[] {4,17,6,44,38,21,24,8,9}, + new int[] {4,17,6,44,38,21,24,8,9}, + new int[] {4,17,6,44,38,21,24,8,9}, + new int[] {4,17,6,44,38,21,24,8,9}, + new int[] {4,17,6,44,38,21,24,8,9}, + }) + { //WIP + name = Translations.ItemDataBase_ItemDefinitions_52/*Mysterious robe*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_53/*Magic flows through the entirety of this object. It's made out of unknown material*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_54/*Robe looks like it was created yesterday, but its older than the oldest of mankinds' civilizations. Simply looking at it sends chills down the spine.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_55/*Empowers cataclysm. The vortex turns blue, damage is increased, freezes enemies */, //tr + rarity = 7, + minLevel = 15, + maxLevel = 20, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + onEquipCallback = () => ModdedPlayer.Stats.spell_cataclysmArcane.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.spell_cataclysmArcane.value = false + }; + new BaseItem(new int[][] + { + new int[] {39,40,41,42,44,8,14,49 }, + new int[] {39,40,41,42,44,8,14,49 }, + new int[] {0,62,63,64}, + new int[] {1,0,65}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_56/*Rusty Longsword*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_57/*A long, very heavy sword. Edge got dull over time. Still, it's in a condition that allows me to slice some enemies in half.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_58/*The sword appears to be from medieval ages, through it's not. It was made a lot later. It never was used as a weapon in battles, because it was merely a decoration.*/, //tr + rarity = 3, + minLevel = 13, + maxLevel = 15, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.LongSword, + icon = Res.ResourceLoader.GetTexture(89), + }; + new BaseItem(new int[][] + { + new int[] {25 }, + new int[] {25 ,62,63,64}, + new int[] {6,49}, + new int[] {22,0,25,1,2,3,4}, + new int[] {1,2,3,4}, + new int[] {39,40,41,42,44,8,18,65 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_59/*Longsword*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_60/*Sharp and long*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_61/*The sword is in perfect contidion.*/, //tr + rarity = 4, + minLevel = 20, + maxLevel = 27, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.LongSword, + icon = Res.ResourceLoader.GetTexture(89), + }; + new BaseItem(new int[][] + { + new int[] {25 }, + new int[] {6,49}, + new int[] {22,0,25,1,2,3,4}, + new int[] {1,2,3,4,8}, + new int[] {1,2,3,4,8}, + new int[] {5,6,45,46,16,8}, + new int[] {39,40,41,42,44,8 }, + new int[] {39,40,41,42,44,8,62,63,64 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_62/*Full Metal Sword*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_63/*It's sooo big...*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_64/*A normal human cannot lift this.*/, //tr + rarity = 6, + minLevel = 50, + maxLevel = 52, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.GreatSword, + icon = Res.ResourceLoader.GetTexture(88), + }; + new BaseItem(new int[][] + { + new int[] {25,1,3 }, + new int[] {25,22,1,3 }, + new int[] {25,22,0,0,0,0 }, + new int[] {49 }, + new int[] {14 }, + new int[] {14,1 }, + new int[] {14,31,49 }, + new int[] {14,18,49 }, + new int[] {38,36,1,3,4,5,6,16 ,62,63,64}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_65/*The Leech*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_66/*Hey where did my health g- oh it's back...*/, //tr + rarity = 6, + minLevel = 60, + maxLevel = 61, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.GreatSword, + icon = Res.ResourceLoader.GetTexture(88), + }; + new BaseItem(new int[][] + { + new int[] {1,2,3,4 }, + new int[] {1,2,3,15,4,0,0,0 }, + new int[] {12,13,1,2,3,4,5, }, + new int[] {18,16,23,26,19 }, + new int[] {18,16,23,26 }, + new int[] {34,44,45,46 }, + new int[] {2,23,26}, + new int[] {2,23,26,51}, + new int[] {2,23,26,20,16,15,60}, + new int[] {52,66,60,0,0}, + new int[] {66}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_67/*Smokey's Sacred Quiver*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_68/*SmokeyTheBear died because he never used this item.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_69/*Smokey was the friend of allmighty Hazard, who can materialize any kind of weapon at the snap of his fingers. Hazard remebered Smokey's favourite playstyle and he gave him this as a gift to purge the sh** out of mutants.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_70("250%", "500%")/*Crossbows operate at 250% speed and deal 400% increased damage*/, //tr + rarity = 7, + minLevel = 5, + maxLevel = 8, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Quiver, + icon = Res.ResourceLoader.GetTexture(98), + onEquipCallback = () => { ModdedPlayer.Stats.i_SmokeyCrossbowQuiver.value = true; ModdedPlayer.Stats.perk_crossbowDamageMult.Multiply(5); }, + onUnequipCallback = () => + { + ModdedPlayer.Stats.i_SmokeyCrossbowQuiver.value = false; + ModdedPlayer.Stats.perk_crossbowDamageMult.Divide(5); + }, + }; + new BaseItem(new int[][] + { + new int[] {0,42 }, + new int[] {50 }, + new int[] {43,16 }, + new int[] {1,0 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_71/*Broken shield*/, //tr + rarity = 0, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + }; + new BaseItem(new int[][] + { + new int[] {1,2,3,4,0,42 }, + new int[] {0,42 }, + new int[] {50 }, + new int[] {1,0 }, + new int[] {43,16 }, + new int[] {43,16,0,0 }, + }) + { + name = Translations.Item_1/*Shield*/, //tr + rarity = 1, + minLevel = 3, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + }; + new BaseItem(new int[][] + { + new int[] {16}, + new int[] {16}, + new int[] {16}, + new int[] {16,0}, + new int[] {16,0,45,46}, + new int[] {0,42,11 }, + new int[] {50 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_72/*Tower Shield*/, //tr + rarity = 3, + minLevel = 5, + maxLevel = 8, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + }; + new BaseItem(new int[][] + { + new int[] {5,6,7,8,0,0,0}, + new int[] {43}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_73/*Broken Leather Shoulder Armor*/, //tr + rarity = 0, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + }; + new BaseItem(new int[][] + { + new int[] {5,6,7,8}, + new int[] {43}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_74/*Leather Shoulder Armor*/, //tr + rarity = 1, + minLevel = 2, + maxLevel = 5, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + }; + new BaseItem(new int[][] + { + new int[] {16}, + new int[] {1,2,3,4}, + new int[] {17}, + new int[] {17}, + new int[] {8,9,49,47}, + new int[] {8,9,49,47}, + new int[] {16,18,11,34}, + new int[] {37,34}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_75/*Phase Pauldrons*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_76/*The distance of blink is increased by 40 meters, and blink now hits everything that you teleported through*/, //tr + rarity = 7, + minLevel = 5, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + onEquipCallback = () => { ModdedPlayer.Stats.spell_blinkRange.Add(40); ModdedPlayer.Stats.spell_blinkDamage.Add(60); }, + onUnequipCallback = () => { ModdedPlayer.Stats.spell_blinkRange.Sub(40); ModdedPlayer.Stats.spell_blinkDamage.Sub(60); }, + }; + new BaseItem(new int[][] + { + new int[] {39,49,5,6,7,8,0,0,0}, + new int[] {43,0}, + new int[] {43}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_77/*MAGA Cap*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_78/*Wearing this item channels the power of D.Trump to you*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_79/*... or does it?*/, //tr + rarity = 1, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + new BaseItem(new int[][] + { + new int[] {2000}, + new int[] {2001}, + new int[] {2002}, + new int[] {2003}, + new int[] {16}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {1,2,3,4}, + new int[] {21,6}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_80/*Hubble's Vision*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_81/*Wearing this item empowers your black hole spell*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_82/*Man, fuck gravity.*/, //tr + rarity = 6, + minLevel = 10, + maxLevel = 11, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + new BaseItem(new int[][] + { + new int[] {39,40,41,42,43,12,13}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_83/*Broken Loop*/, //tr + rarity = 0, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), + }; + new BaseItem(new int[][] + { + new int[] {-1}, + new int[] {39,40,41,42,43,12,13}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_84/*Loop*/, //tr + rarity = 1, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), + }; + new BaseItem(new int[][] + { + new int[] {63}, + new int[] {-1}, + new int[] {39,40,41,42,43,12,13,5,6,7,8,9,12,13,15,16,17,18,10,11}, + new int[] {1,2,3,4,21,22,23,24,25,26,43,12,13}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_85/*Toxic Ring*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_87/*What the fuck did you just fucking say about me, you little bitch? I'll have you know I graduated top of my class in the Navy Seals, and I've been involved in numerous secret raids on Al-Quaeda, and I have over 300 confirmed kills. I am trained in gorilla warfare and I'm the top sniper in the entire US armed forces. You are nothing to me but just another target. I will wipe you the fuck out with precision the likes of which has never been seen before on this Earth, mark my fucking words. You think you can get away with saying that shit to me over the Internet? Think again, fucker. As we speak I am contacting my secret network of spies across the USA and your IP is being traced right now so you better prepare for the storm, maggot. The storm that wipes out the pathetic little thing you call your life. You're fucking dead, kid. I can be anywhere, anytime, and I can kill you in over seven hundred ways, and that's just with my bare hands. Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the United States Marine Corps and I will use it to its full extent to wipe your miserable ass off the face of the continent, you little shit. If only you could have known what unholy retribution your little /'clever\' comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo."*/, //tr + rarity = 3, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), + }; + new BaseItem(new int[][] + { + new int[] {39,40,41,42,43}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_88/*Scarf*/, //tr + rarity = 1, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(100), + }; + new BaseItem(new int[][] + { + new int[] {39,40,41,42,43}, + new int[] {43}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_89/*Damaged Bracer*/, //tr + rarity = 0, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + }; + new BaseItem(new int[][] + { + new int[] {39,40,41,42,43}, + new int[] {43}, + new int[] {16}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_90/*Worn Bracer*/, //tr + rarity = 1, + minLevel = 3, + maxLevel = 10, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + }; + new BaseItem(new int[][] + { + new int[] {39,40,41,42,43}, + new int[] {16}, + new int[] {-1}, + new int[] {5,6,7,8,9,10}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_91/*Leather Bracer*/, //tr + rarity = 2, + minLevel = 4, + maxLevel = 10, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(94), + }; + new BaseItem(new int[][] + { + new int[] {32}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_92/*Greater Mutated Heart*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_93/*Can be consumed by right clicking it*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = true, + stackSize = 100, + type = BaseItem.ItemType.Other, + icon = Res.ResourceLoader.GetTexture(105), + }; + new BaseItem(new int[][] + { + new int[] {33}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_94/*Lesser Mutated Heart*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_93/*Can be consumed by right clicking it*/, //tr + rarity = 5, + minLevel = 1, + maxLevel = 6, + canConsume = true, + stackSize = 1, + type = BaseItem.ItemType.Other, + icon = Res.ResourceLoader.GetTexture(105), + }; + new BaseItem(new int[][] + { + new int[] {1,2}, + new int[] {1,2,3,5,6}, + new int[] {65}, + new int[] {-1}, + new int[] {-1}, + new int[] {53,54}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_95/*Spiked ring*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_96/*Armor piercing for either melee or ranged weapons*/, //tr + rarity = 4, + minLevel = 10, + maxLevel = 16, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), + }; + + new BaseItem(new int[][] + { + new int[] {1,2,3,4,5,6}, + new int[] {1,2,3,4,5,6,65}, + new int[] {-1}, + new int[] {-1 }, + new int[] {1,2,3,4,21,22,23,24,25,26,18,16}, + new int[] {55}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_97/*Piercer*/, //tr + rarity = 4, + minLevel = 11, + maxLevel = 15, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), + }; + new BaseItem(new int[][] + { + new int[] {59 }, + new int[] {21 }, + new int[] {34,0,40,41 }, + new int[] {16,34}, + new int[] {12 }, + new int[] {-1 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_98/*Moon Boots*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_99/*A pair of boots from the moon.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_100/*It is said that the wearer will not take fall damage while wearing these boots and will jump like on the moon, I wouldn't trust it tough.*/, //tr + rarity = 4, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 10, + maxLevel = 14, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), //icon ids, don't worry about that + }; + new BaseItem(new int[][] + { + new int[] {1}, + new int[] {1,57,18,36}, + new int[] {12,13,1}, + new int[] {22,25,1}, + new int[] {22,25,1}, + new int[] {50,53,35}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_101/*Golden Ring of Strength*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_103/*A Golden Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 10, + maxLevel = 14, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + new BaseItem(new int[][] + { + new int[] {3}, + new int[] {3,31,6,7,8,9}, + new int[] {5,3,41,45}, + new int[] {7,10,31,14}, + new int[] {14,16,11,17}, + new int[] {65,57,45,46}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_104/*Golden Ring of Vitality*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_103/*A Golden Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 10, + maxLevel = 14, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {2}, + new int[] {12,13,8,9, }, + new int[] {15,18,34,36}, + new int[] {23,48,54,26,59,55,16}, + new int[] {6,57,2,34,}, + new int[] {52,66,51,2,23} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_105/*Golden Ring of Agility*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_103/*A Golden Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 10, + maxLevel = 20, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + new BaseItem(new int[][] + { + new int[] {4}, + new int[] {12,13,21,24,6}, + new int[] {12,13,21,24}, + new int[] {19,47,49}, + new int[] { 37,38,4,24,61,44}, + new int[] { 57,44,6,24,21,47} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_106/*Golden Ring of Intelligence*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_103/*A Golden Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 10, + maxLevel = 20, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + //Silver Rings--------------------------------------------------------------------------- + new BaseItem(new int[][] + { + new int[] {1}, + new int[] {22,25,12,13}, + new int[] {35,50,53}, + new int[] {20,0,0,0} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_107/*Silver Ring of Strength*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_108/*A Silver Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 4, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 5, + maxLevel = 20, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {3}, + new int[] {7,10,31,5, }, + new int[] {11,17,0}, + new int[] {14,16,45}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_109/*Silver Ring of Vitality*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_108/*A Silver Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 4, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 5, + maxLevel = 8, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {2}, + new int[] {12,13,51,8,9, }, + new int[] {15,18,34,36,0}, + new int[] {23,48,54,26,6,57,0,0,0 } + }) + { + name = Translations.ItemDataBase_ItemDefinitions_110/*Silver Ring of Agility*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_108/*A Silver Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 4, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 5, + maxLevel = 20, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {4}, + new int[] { 12, 13, 21, 24,12, 13,21,24,0}, + new int[] {19,47,49,6}, + new int[] { 57,37,38,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_111/*Silver Ring of Intelligence*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_108/*A Silver Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 4, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 5, + maxLevel = 20, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + + //Steel Rings------------------------------------------------------------------- + new BaseItem(new int[][] + { + new int[] {1}, + new int[] {12,13,65}, + new int[] {22,25, 57,35,50,53,20}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_112/*Steel Ring of Strength*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_113/*A Steel Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 1, + maxLevel = 6, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {3}, + new int[] {7,10,31,5,65}, + new int[] {14,16, 45,11,17,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_114/*Steel Ring of Vitality*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_113/*A Steel Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 1, + maxLevel = 6, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {2}, + new int[] {8,9, 12,13,51,57}, + new int[] {23,54,26,59,18,34}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_115/*Steel Ring of Agility*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_113/*A Steel Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 1, + maxLevel = 10, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {4}, + new int[] {12,13,21,24,6}, + new int[] {19,47,49,57,37,38,21,24}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_116/*Steel Ring of Intelligence*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_113/*A Steel Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 1, + maxLevel = 6, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + + //One Ring to rule them all---------------------------------------------------------- + + new BaseItem(new int[][] + { + new int[] {1,3,2,4}, + new int[] {12,13}, + new int[] {22,25,30,}, + new int[] {35,50,53,20}, + new int[] {5,28}, + new int[] {7,10,31}, + new int[] {11,17,14,16 }, + new int[] {8,9,27,45}, + new int[] {51,52,66}, + new int[] {15,18,34,36,57}, + new int[] {23,48,54,26}, + new int[] {21,24}, + new int[] {19,47,49,57,6}, + new int[] {29,37,38,57}, + new int[] {65}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_117/*The One Ring To Rule Them All*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_118/*An Ancient magical Ring of great power.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_119/*It looks like and ordinay ring, but a strange energy is surrounding it. The Ring is said to have been found inside a volcanic rock by an archeologist, who went mad and isolated himself on the peninsula many years ago. But that's just a fairy tale, ring?*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_120/*Attracts unwanted attention of an unknown entity.*/, //tr + rarity = 7, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 20, + maxLevel = 30, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + + //Golden Lockets--------------------------------------------------------------------- + + new BaseItem(new int[][] + { + new int[] {1}, + new int[] {12,13}, + new int[] {22,25,57,}, + new int[] {35,50,53}, + new int[] {65,1,57,47,34,36,18} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_121/*Golden Locket of Strength*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_123/*A Golden Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 3, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 15, + maxLevel = 20, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {3}, + new int[] {5,6,7}, + new int[] {7,10,31}, + new int[] {11,17}, + new int[] {14,16,45}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_124/*Golden Locket of Vitality*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_123/*A Golden Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 3, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 15, + maxLevel = 20, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {2}, + new int[] {12,13,51,52,66,8,9,}, + new int[] {12,13,51,52,66}, + new int[] {23,48,54,26}, + new int[] {57,18,47} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_125/*Golden Locket of Agility*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_123/*A Golden Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 3, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 15, + maxLevel = 20, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {4}, + new int[] {12,13,21,24}, + new int[] {12,13,21,24,19,47,49,}, + new int[] {57,37,38,6}, + new int[] {4,37,38,} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_126/*Golden Locket of Intelligence*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_123/*A Golden Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 3, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 15, + maxLevel = 20, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + //Silver Lockets--------------------------------------------------------------------------- + + new BaseItem(new int[][] + { + new int[] {1}, + new int[] {12,13}, + new int[] {22,25,57,}, + new int[] {35,50,53,0}, + new int[] {20,0,0,0} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_127/*Silver Locket of Strength*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_128/*A Silver Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 5, + maxLevel = 20, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {3}, + new int[] {7,10,31,5,}, + new int[] {11,17,0}, + new int[] {14,16,0}, + new int[] {45,0,0,0} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_129/*Silver Locket of Vitality*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_128/*A Silver Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 5, + maxLevel = 20, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {2}, + new int[] {12,13,51,52,66,8,9,6,}, + new int[] {12,13,51,52,66,0}, + new int[] {15,18,34,36,0}, + new int[] {23,48,54,26}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_130/*Silver Locket of Agility*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_128/*A Silver Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 5, + maxLevel = 8, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {4}, + new int[] {12,13,21,24}, + new int[] {12,13,21,24,6}, + new int[] {19,47,49,0}, + new int[] {57,37,38,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_131/*Silver Locket of Intelligence*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_128/*A Silver Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 2, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 5, + maxLevel = 8, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + // Emerald Pendant----------------------------------------------------------- + + new BaseItem(new int[][] + { + new int[] {1}, + new int[] {12,13}, + new int[] {22,25,57,1}, + new int[] {35,50,53}, + new int[] {36,65,22,25}, + new int[] {11,18,37,6,8}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_132/*Emerald Pendant of Strength*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_134/*An Emerald Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 10, + maxLevel = 12, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {3}, + new int[] {7,10,31,5}, + new int[] {11,17}, + new int[] {14,16,57,55}, + new int[] {5,7,10,3,31}, + new int[] {57,65}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_135/*Emerald Pendant of Vitality*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_134/*An Emerald Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 10, + maxLevel = 12, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {2}, + new int[] {8,9,12,13,51,52,66}, + new int[] {12,13,51,52,66}, + new int[] {15,18,34,36}, + new int[] {23,48,54,26}, + new int[] {52,66,23,26,2}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_136/*Emerald Pendant of Agility*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_134/*An Emerald Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 10, + maxLevel = 12, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {4}, + new int[] {29,37,21,24,46,56,19}, + new int[] {12,13,21,24,6}, + new int[] {21,4,47,49}, + new int[] {4,57,47,24}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_137/*Emerald Pendant of Intelligence*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_134/*An Emerald Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 5, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 10, + maxLevel = 12, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + // Diamond Pendant----------------------------------------------------------- + + new BaseItem(new int[][] + { + new int[] {1}, + new int[] {12,13}, + new int[] {22,25,1,}, + new int[] {35,50,53, }, + new int[] {65,30}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_138/*Diamond Pendant of Strength*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_139/*A Diamond Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 12, + maxLevel = 14, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {3}, + new int[] {5,6,7,8,9,10}, + new int[] {7,10,31}, + new int[] {11,17}, + new int[] {14,16}, + new int[] {28,11}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_140/*Diamond Pendant of Vitality*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_139/*A Diamond Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 12, + maxLevel = 14, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {2}, + new int[] {8,9,12,13,51,52,66}, + new int[] {12,13,51,52,66,15,18,34,36 }, + new int[] {23,48,54,26}, + new int[] {54,52,66,2}, + new int[] {2,18,38}, + new int[] {57,2,6}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_141/*Diamond Pendant of Agility*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_139/*A Diamond Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 12, + maxLevel = 14, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + new BaseItem(new int[][] + { + new int[] {4}, + new int[] {12,13,21,24}, + new int[] {12,13,21,24,6,65}, + new int[] {19,47,49,11,5,6,7,8,46,34}, + new int[] {29,4}, + new int[] {21,4,47,49}, + new int[] {4,57,47,24}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_142/*Diamond Pendant of Intelligence*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_133/*A Pendant of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_139/*A Diamond Pendant that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 12, + maxLevel = 14, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + + //Rare Amulets ----------------------------------------------------------------------------------------- + + var armsyFingerNecklace = new BaseItem(new int[][] + { + new int[] {1}, + new int[] {65}, + new int[] {18,11}, + new int[] {-1}, + new int[] {12,13}, + new int[] {22,25,30,}, + new int[] {35,50,53,57}, + new int[] {20,57} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_143/*Armsy Finger Necklace*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_144/*A Necklace decorated with armsy fingertips.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_145/*A Necklace made from the fingertips of an armsy, yeilding it's raw power and strentgh.*/, //tr + rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 1, + maxLevel = 5, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + + }; + armsyFingerNecklace.SetDropOnlyArmsy(); + armsyFingerNecklace.statSlots[0][0].multipier = 2; + armsyFingerNecklace.statSlots[1][0].multipier = 2; + var virginiaHeartPedant = new BaseItem(new int[][] + { + new int[] {2}, + new int[] {23}, + new int[] {48}, + new int[] {-1}, + new int[] {5,28}, + new int[] {7,10,31}, + new int[] {11,17,57}, + new int[] {14,16,57}, + new int[] {45,57} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_146/*Virginia Heart Pendant*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_147/*A Pendant of a petrified Virginia heart.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_148/*A Pendant made from a petrified Virginia heart, yeilding it's love and Vitality.*/, //tr + rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 1, + maxLevel = 5, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + virginiaHeartPedant.SetDropOnlyVags(); + virginiaHeartPedant.statSlots[0][0].multipier = 2; + virginiaHeartPedant.statSlots[1][0].multipier = 2.25f; + + var cowmanToeNecklace = new BaseItem(new int[][] + { + new int[] {3}, + new int[] {31,6}, + new int[] {28}, + new int[] {8,9,27}, + new int[] {12,13,51,52,66}, + new int[] {12,13,51,52,66,57}, + new int[] {15,18,34,36,57}, + new int[] {23,48,54,26}, + new int[] {65,57} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_149/*Cowman Toe Necklace*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_150/*A Necklace decorated with cowman toes.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_151/*A Necklace made from the fingertips of an armsy, yeilding it's speed and agility.*/, //tr + rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 20, + maxLevel = 40, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + cowmanToeNecklace.SetDropOnlyCow(); + cowmanToeNecklace.statSlots[0][0].multipier = 3; + cowmanToeNecklace.statSlots[1][0].multipier = 2; + new BaseItem(new int[][] + { + new int[] {47}, + new int[] {4,0}, + new int[] {21,0}, + new int[] {38,31,49,14}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {12,13,21,24,6}, + new int[] {19,47,49,6}, + new int[] {29,37,38}, + new int[] {29,37,38,}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_152/*Pendant of Perpetual Rebirth*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_153/*A Pendant of a shrunken babyhead.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_154/*A pedant of great power. Obtainable only from babies or crafting*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_155(1)/*decrease a random cooldown by 1 second whenever you hit something with melee or ranged attack.*/, //tr + rarity = 7, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 30, + maxLevel = 40, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + onEquipCallback = () => ModdedPlayer.Stats.i_infinityLoop.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.i_infinityLoop.value = false, + }.SetDropOnlyBaby(); + + //Boss drop Amulet---------------------------------------------------------------------------------------- + + new BaseItem(new int[][] + { + new int[] {1,2,4}, + new int[] {12,13}, + new int[] {22,25,30,18,5,28}, + new int[] {35,50,53,57,56,20,57,19,18}, + new int[] {7,10,31}, + new int[] {45,16,10,11,9,8, 14, 16, 57,11, 17,57}, + new int[] { 51, 52,66,8, 9,27}, + new int[] {15,18,34,36,57}, + new int[] {23,48,54,26}, + new int[] {6,55,46,54,53}, + new int[] {19,47,49,57, 21,24,29,37,38,57}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_156/*Megan's Locket*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_157/*The Locket Megan wore.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_158/*Megan wore this Locket, it has a picture of her mom in it.*/, //tr + rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 1, + maxLevel = 4, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }.SetDropOnlyMegan(); + + BaseItem RelicHammer = new BaseItem(new int[][] + { + new int[] {25 }, + new int[] {18 }, + new int[] {2004 }, + new int[] {1,62,63,64 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_159/*Relic Hammer*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_160/*It's slow and weak.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_161/*Slows on hit*/, //tr + rarity = 2, + minLevel = 20, + maxLevel = 22, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Hammer, + icon = Res.ResourceLoader.GetTexture(109), + }; + RelicHammer.statSlots[1][0].multipier = -4; + + BaseItem GreaterHammer = new BaseItem(new int[][] + { + new int[] {25 }, + new int[] {18 }, + new int[] {2004 }, + new int[] {1,3,62,63,64}, + new int[] {53,16}, + new int[] {39,31,43,0,0}, + new int[] {25 ,22,1,12,13,5,6}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_162/*Black Hammer*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_163/*It's slow but with enough strength i can make it a very deadly tool*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_161/*Slows on hit*/, //tr + rarity = 4, + minLevel = 30, + maxLevel = 35, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Hammer, + icon = Res.ResourceLoader.GetTexture(109), + }; + GreaterHammer.statSlots[1][0].multipier = -3; + //Item 0/6 + new BaseItem(new int[][] + { + new int[] {23,26}, + new int[] {2,6,4}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_164/*Potato Sack*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_165/*Can be used as a quiver*/, //tr + rarity = 0, + minLevel = 1, + maxLevel = 4, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Quiver, + icon = Res.ResourceLoader.GetTexture(98), + }; + + //Item 1/6 + new BaseItem(new int[][] + { + new int[] {23,26}, + new int[] {40,41,42}, + new int[] {40,16,60}, + new int[] {2}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_166/*Rabbit Skin Quiver*/, //tr + rarity = 1, + minLevel = 2, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Quiver, + icon = Res.ResourceLoader.GetTexture(98), + }; + + //Item 2/6 + new BaseItem(new int[][] + { + new int[] {26}, + new int[] {23,2,54}, + new int[] {18,60,61}, + new int[] {40,41,16,5,6,40}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_167/*Hollow Log*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_168/*It allows for faster drawing of arrow than a cloth quiver*/, //tr + rarity = 2, + minLevel = 6, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Quiver, + icon = Res.ResourceLoader.GetTexture(98), + }; + + //Item 3/6 + new BaseItem(new int[][] + { + new int[] {26,23}, + new int[] {24,21}, + new int[] {17,16,18,54,51,52,66}, + new int[] {2,3,4,15,14,13,12,11,10}, + new int[] {5,6,47,60,61}, + new int[] {2,3,4,5,6,7,8,11,12,16,18,37}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_169/*Spellbound Quiver*/, //tr + rarity = 3, + minLevel = 6, + maxLevel = 11, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Quiver, + icon = Res.ResourceLoader.GetTexture(98), + }; + + //Item 4/6 + new BaseItem(new int[][] + { + new int[] {23,26}, + new int[] {23}, + new int[] {2,3,4}, + new int[] {34,18,17,16,15,14,60,61,55,}, + new int[] {16,19,23,31,54,51,52,66,57}, + new int[] {2,0}, + new int[] {2,3,4,5,6,7,8,9,10}, + new int[] {2,1,5,6}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_170/*Long Lost Quiver*/, //tr + rarity = 5, + minLevel = 12, + maxLevel = 20, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Quiver, + icon = Res.ResourceLoader.GetTexture(98), + }; + + //Item 5/6 + new BaseItem(new int[][] + { + new int[] {37, 24,47}, + new int[] {42,6,17,61}, + new int[] {-1}, + new int[] {4,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_171/*Spell Scroll*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_172/*Contains a lot of information on how to properly cast spells to achieve better results*/, //tr + rarity = 1, + minLevel = 1, + maxLevel = 1, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.SpellScroll, + icon = Res.ResourceLoader.GetTexture(110), + }; + + new BaseItem(new int[][] + { + new int[] {16,43}, + new int[] {43,39,40,41,42}, + new int[] {43,39,40,41,42}, + new int[] {43,0,0,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_173/*Cloth Pants*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_174/*Offer little protction*/, //tr + rarity = 1, + minLevel = 2, + maxLevel = 5, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + + //Item 1/7 + new BaseItem(new int[][] + { + new int[] {16}, + new int[] {1,2,3,4}, + new int[] {5,6}, + new int[] {16,43,39,40,41,42}, + new int[] {1000,1001,1002,1003,1004,43,0,0,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_175/*Rough Hide Leggins*/, //tr + rarity = 3, + minLevel = 1, + maxLevel = 1, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + + //Item 2/7 + new BaseItem(new int[][] + { + new int[] {16,}, + new int[] {1,2,3,4}, + new int[] {5,44,7,8}, + new int[] {6,16,3}, + new int[] {1,2,3,4,11}, + new int[] {17,16,10,9}, + new int[] {16,43}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_176/*Plate Leggins*/, //tr + rarity = 4, + minLevel = 4, + maxLevel = 10, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + + //Item 3/7 + new BaseItem(new int[][] + { + new int[] {16}, + new int[] {19}, + new int[] {1,2,3,4,5,6,7,8}, + new int[] {39,40,41,42,43}, + new int[] {4}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_177/*Sage's Robes*/, //tr + rarity = 3, + minLevel = 1, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + + //Item 4/7 + new BaseItem(new int[][] + { + new int[] {1,2,3,4}, + new int[] {1,5}, + new int[] {16}, + new int[] {22,25}, + new int[] {11,12,13,14,5,6,1,2,3,4}, + new int[] {7,8,9,10,44,45,46,49}, + new int[] {31,1,3,}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_178/*Hammer Jammers*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_179("450%")/*Damage of your smash attack is increased by 450%, hammer stun duration is doubled*/, //tr + rarity = 7, + minLevel = 20, + maxLevel = 28, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + onEquipCallback = () => { ModdedPlayer.Stats.smashDamage.Multiply(4.5f); ModdedPlayer.Stats.i_HammerStunAmount.Multiply(2); }, + onUnequipCallback = () => { ModdedPlayer.Stats.smashDamage.Divide(4.5f); ModdedPlayer.Stats.i_HammerStunAmount.Divide(2); }, + }; + + //Item 5/7 + new BaseItem(new int[][] + { + new int[] {16}, + new int[] {34}, + new int[] {1,2,4,6,7,8}, + new int[] {-1}, + new int[] {26,23,24,21}, + new int[] {1000, 1001,1002, 1003, 1004, 0,0,0,1,2,4}, + new int[] {51,1,2,3,4,55}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_180/*Pirate Pants*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_181/*Those pants are ligh and comfortable. They offer plenty of mobility but lack in protection.*/, //tr + rarity = 5, + minLevel = 1, + maxLevel = 1, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + + //Item 6/7 + new BaseItem(new int[][] + { + new int[] {16}, + new int[] {1,2,3,4,16,17}, + new int[] {18,34}, + new int[] {1,2,3,4}, + new int[] {5,6,15,16,13,12,11}, + new int[] {8,4,2,9}, + new int[] {22,21,23}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_182/*Hexed Pants of Mr M.*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_183/*They look like yoga pants but for a man the size of a wardrobe*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_184/*Once upon a time there was a man who was in a basement and fed himself with nothing but nuggets. He got so obese that friends and family started worrying. Hazard noticed this man and cursed his pants to force him to excercise.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_185("60%", "1%")/*While moving, energy regeneration and damage is increased by 40%. While standing still for longer than a second, you loose 1% of max health per second.*/, //tr + rarity = 7, + minLevel = 14, + maxLevel = 15, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + onEquipCallback = () => ModdedPlayer.Stats.i_HexedPantsOfMrM_Enabled.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.i_HexedPantsOfMrM_Enabled.value = false, + }; + new BaseItem(new int[][] + { +new int[] {39,40,41,42,43}, +new int[] {39,40,41,42,43}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_186/*Leather Mantle*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_187/*A piece of cloth to give protection from */, //tr + rarity = 1, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + }; + + //Item 1/6 + new BaseItem(new int[][] + { +new int[] {16}, +new int[] {16}, +new int[] {1,2,3,4,5,6}, +new int[] {39,40,41,42,43}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_188/*Shoulder Guards*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_189/*Medium armor piece.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_190/*Heavy armor*/, //tr + rarity = 2, + minLevel = 4, + maxLevel = 7, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + }; + + //Item 2/6 + BaseItem Heavy_Shoulder_Plates = new BaseItem(new int[][] + { + new int[] {34}, + new int[] {18}, + new int[] {16}, + new int[] {16,65}, + new int[] {1,2,3,4}, + new int[] {1,2,3,4,5,8,9,7,10}, + new int[] {17,10,5,8,9,7,10}, + new int[] {5,45,3}, + new int[] {11}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_191/*Heavy Shoulder Plates*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_192/*Heavy armor piece. They offer great protection at the cost of attack speed and movement speed decrease*/, //tr + rarity = 4, + minLevel = 15, + maxLevel = 20, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + }; + Heavy_Shoulder_Plates.statSlots[0][0].multipier = -1; + Heavy_Shoulder_Plates.statSlots[1][0].multipier = -1; + Heavy_Shoulder_Plates.statSlots[2][0].multipier = 3; + + //Item 3/6 + new BaseItem(new int[][] + { + new int[] {21,22,23,24,25,26}, + new int[] {16}, + new int[] {1,2,3,4}, + new int[] {1,2,3,4,16,39,40,41,42,43}, + new int[] {1,2,3,4,16,39,40,41,42,43}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_193/*Etched Mantle*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_194/*Those pauldrons empower wearer's combat skill*/, //tr + rarity = 3, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + }; + + //Item 4/6 + new BaseItem(new int[][] + { + new int[] {22,25}, + new int[] {1,2,3,4}, + new int[] {16}, + new int[] {12,11,13,14}, + new int[] {5,6}, + new int[] {10,15,16,17,18,19,31,35,36,44,45,46,47,49,50,53,55}, + new int[] {10,15,16,17,18,19,31,35,36,44,45,46,47,49,50,53,55}, + new int[] {53,55}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_195/*Assassins Pauldrons*/, //tr + rarity = 5, + minLevel = 4, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + }; + + //Item 5/6 + new BaseItem(new int[][] + { + new int[] {11}, + new int[] {1,2,3,4}, + new int[] {16}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {21,22,23,24,25,26}, + new int[] {5,14,7,10,45}, + new int[] {1,2,3,4}, + new int[] {12,13,15,16,18}, + new int[] {17,19,21,22,23}, + new int[] {37,35,36,38,44,45,47}, + new int[] {1,2,4}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_196/*Death Pact*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_197/*Find the greatest strength on the border of life and death.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_198("6%", "5%")/*Every attack you make decreases your health by 7% of max health. For every percent of missing health you gain 5% damage amplification. This damage cannot kill you.*/, //tr + rarity = 7, + minLevel = 5, + maxLevel = 8, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + onEquipCallback = () => ModdedPlayer.Stats.i_DeathPact_Enabled.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.i_DeathPact_Enabled.value = false, + }; + new BaseItem(new int[][] + { + new int[] {56}, + new int[] {-1}, + new int[] {-1}, + new int[] {1,2,3,4}, + new int[] {11,12,13,14,15,16,17,18}, + new int[] {11,12,13,14,15,16,17,18}, + new int[] {5,6,7,8,9,10,31}, + new int[] {55,54,53,50}, + new int[] {1,2,3,4,21,22,23,24,25,26}, + new int[] {16,0,0,0,1,2,3,4,0,0,0,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_199/*Maximale Qualitöt*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_200/*A platinum ring with the most expensive jewels engraved on it. It's quality is uncomparable.*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 4, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), + }; + new BaseItem(new int[][] + { + }) + { + name = Translations.ItemDataBase_ItemDefinitions_201/*Heart of Purity*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_202/*A object filled with both destructive and creative energy. Allows to re-assign all spent mutation points*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_203/*This powerful relic contains so much power, that it can kill anything and force it to come back to life, resulting in it's rebirth.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_204/*Can be consumed by right clicking it. */, //tr + rarity = 4, + minLevel = 1, + maxLevel = 2, + canConsume = true, + stackSize = 100, + type = BaseItem.ItemType.Other, + icon = Res.ResourceLoader.GetTexture(105), + onEquipCallback = ModdedPlayer.Respec + }; + + new BaseItem(new int[][] + { +new int[] {1,2,3,4,57}, +new int[] {16,17,14}, +new int[] {50,11}, +new int[] {49,39,40,41,42,45,44}, +new int[] {5,6,9,8,10,12,13,14,}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_205/*Round Shield*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_206/*A sturdy shield made of wood and reinforced with iron.*/, //tr + rarity = 2, + minLevel = 5, + maxLevel = 8, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + }; + + //Item 1/5 + new BaseItem(new int[][] + { +new int[] {1,11,5,7}, +new int[] {57,2,3,4,5,6,7,8,10,11}, +new int[] {39,40,41,42,43,44,45,46}, +new int[] {50}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_207/*Old Buckler*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_208/*An old shield.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_209/*This item has a lot of scratches that look like they were made by something with sharp claws.*/, //tr + rarity = 1, + minLevel = 4, + maxLevel = 12, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + }; + + //Item 2/5 + new BaseItem(new int[][] + { +new int[] {16}, +new int[] {16,50}, +new int[] {-1}, +new int[] {-1}, +new int[] {-1}, +new int[] {11}, +new int[] {39,40,41,42,43,50,57}, +new int[] {39,40,41,42,43,50,57}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_210/*Dark Oak Shield*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 1, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + }; + + //Item 3/5 + new BaseItem(new int[][] + { +new int[] {15,14}, +new int[] {2,3,4,1,41,42,57}, +new int[] {-1}, +new int[] {-1}, +new int[] {-1}, +new int[] {65,1,16,25}, +new int[] {2,4,5,6}, +new int[] {16,7,8,22,23,25,26}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_211/*Bone Shield*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_212/*A shield made of bones, held together by thick steel wire.*/, //tr + rarity = 3, + minLevel = 1, + maxLevel = 1, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + }; + + new BaseItem(new int[][] + { +new int[] {18}, +new int[] {0,0,0,0,62,63,64}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_213/*Dull Longsword*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_214/*It's round on the edges*/, //tr + rarity = 0, + minLevel = 15, + maxLevel = 20, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.LongSword, + icon = Res.ResourceLoader.GetTexture(89), + }.statSlots[0][0].multipier = -3; + + new BaseItem(new int[][] + { + new int[] {16}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {65}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_215/*Iron Horn*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_216("10%")/*When using Warcry, you and all allies recieve armor bonus equal to 10% of your armor*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), + onEquipCallback = () => ModdedPlayer.Stats.spell_warCryGiveArmor.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.spell_warCryGiveArmor.value = false, + }.statSlots[0][0].multipier = 2; + + //Item 1/5 + new BaseItem(new int[][] + { + new int[] {16}, + new int[] {31,7,8,9,10}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_217/*The Great Iron Horn*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_216("10%") + Translations.ItemDataBase_ItemDefinitions_608/*When using Warcry, you and all allies recieve armor bonus equal to 10% of your armor*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), + onEquipCallback = () => + { + ModdedPlayer.Stats.spell_warCryGiveArmor.value = true; + ModdedPlayer.Stats.spell_warCryGiveDamageResistance.value = true; + }, + onUnequipCallback = () => + { + ModdedPlayer.Stats.spell_warCryGiveArmor.value = false; + ModdedPlayer.Stats.spell_warCryGiveDamageResistance.value = true; + }, + }.statSlots[0][0].multipier = 5; + + //Item 2/5 + new BaseItem(new int[][] + { + new int[] {16}, + new int[] {1}, + new int[] {65,0}, + new int[] {5,16,18}, + new int[] {21,22,23,0,0,0}, + new int[] {24,25,26,0,0,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_218/*Horned Helmet*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_219/*A viking helmet*/, //tr + rarity = 2, + minLevel = 2, + maxLevel = 8, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + + //Item 3/5 + new BaseItem(new int[][] + { + new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,31,36,37,38,43,44,45,46,47,49,50,53,54,55,57}, + new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,31,36,37,38,43,44,45,46,47,49,50,53,54,55,57}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_220/*Mask*/, //tr + rarity = 2, + minLevel = 1, + maxLevel = 5, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + + //Item 4/5 + BaseItem mask = new BaseItem(new int[][] + { + new int[] {18}, + new int[] {22,23,21}, + new int[] {11}, + new int[] {1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,31,36,37,38,43,44,45,46,47,49,50,53,54,55,57}, + new int[] {1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,31,36,37,38,43,44,45,46,47,49,50,53,54,55,57}, + new int[] {1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,31,36,37,38,43,44,45,46,47,49,50,53,54,55,57}, + new int[] {24,25,26,0,0,0}, + new int[] {29,30,48}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_221/*Mask of Madness*/, //tr + rarity = 5, + minLevel = 2, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + mask.statSlots[2][0].multipier = -4; + mask.statSlots[0][0].multipier = 1.5f; + mask.statSlots[1][0].multipier = 2.5f; + mask.statSlots[1][1].multipier = 2.5f; + mask.statSlots[1][2].multipier = 2.5f; + + new BaseItem(new int[][] + { + new int[] {47,49,37,38}, + new int[] {42,4}, + new int[] {44}, + new int[] {21}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_222/*Old Scroll*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_172/*Contains a lot of information on how to properly cast spells to achieve better results*/, //tr + rarity = 3, + minLevel = 1, + maxLevel = 1, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.SpellScroll, + icon = Res.ResourceLoader.GetTexture(110), + }; + new BaseItem(new int[][] + { + new int[] {57}, + new int[] {1,2,3,4}, + new int[] {5,46}, + new int[] {6,45}, + new int[] {21,24,11,12,13,14,15,16}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {4,18,7,8,19}, + new int[] {27,28,29,30,48,47}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_223/*Wormhole Stabilizators*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_224/*High-tech gear*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_225/*Hazard remember to put some fucking lore in here, don't leave it like this!*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_226("570")/*Increases the duration of a portal by 570 seconds*/, //tr + rarity = 7, + minLevel = 4, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(94), + onEquipCallback = () => ModdedPlayer.Stats.spell_portalDuration.Add(570), + onUnequipCallback = () => ModdedPlayer.Stats.spell_portalDuration.Sub(570), + }; + new BaseItem(new int[][] + { + new int[] {57}, + new int[] {1,2,3,4}, + new int[] {5,46}, + new int[] {6,45}, + new int[] {21,24,11,12,13,14,15,16}, + new int[] {16}, + new int[] {17}, + new int[] {4,18,7,8,19}, + new int[] {27,28,29,30,48,47}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_227/*Cripplers*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_228(15)/*Increases the duration of a magic arrow's negative effect by 10 seconds*/, //tr + rarity = 7, + minLevel = 3, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + onEquipCallback = () => ModdedPlayer.Stats.spell_magicArrowDuration.Add(15), + onUnequipCallback = () => ModdedPlayer.Stats.spell_magicArrowDuration.Sub(15), + }; + + new BaseItem(new int[][] + { + new int[] {24,4}, + new int[] {26,4}, + new int[] {21,2}, + new int[] {23,2,0,0,0,0}, + new int[] {2,4,57,16}, + new int[] {6,8,9,44,46}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {12,13,14,15,16,18}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_229/*Crossfire*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_230/*Infused with powerful magic. This item is a dangerous tool of destruction.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_231/*When hitting an enemy with a projectile, create a magic arrow pointed at the enemy and shoot it without using in energy. This effect may occur once every seconds, but can be interval can be shortened with cooldown reduction.*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Quiver, + icon = Res.ResourceLoader.GetTexture(98), + onEquipCallback = () => ModdedPlayer.Stats.i_CrossfireQuiver.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.i_CrossfireQuiver.value = false, + }; + + new BaseItem(new int[][] + { + new int[] {44}, + new int[] {44,8}, + new int[] {44,4,6,9,4}, + new int[] {49,7,0}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_232/*Scroll of Recovery*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_233/*Recovers health and stamina*/, //tr + rarity = 1, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.SpellScroll, + icon = Res.ResourceLoader.GetTexture(110), + }; + + new BaseItem(new int[][] + { + new int[] {11}, + new int[] {-1}, + new int[] {16,15}, + new int[] {37,38}, + new int[] {42,24}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_234/*Tiara*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_235/*A beautiful tiara */, //tr + lore = Translations.ItemDataBase_ItemDefinitions_236/*This tiara may not provide much protection, but it sure is pretty*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_237/*Shiny*/, //tr + rarity = 2, + minLevel = 5, + maxLevel = 10, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + + //Item 1/2 + new BaseItem(new int[][] + { + new int[] {-1}, + new int[] {15}, + new int[] {15}, + new int[] {17,16}, + new int[] {17,16}, + new int[] {0,65}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_238/*Chastity belt*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_239/*Dodge those fukbois*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_240/*This belt will stop those cheeky cannibals and armsies from getting into your pants*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_241("99%")/* 100% damage reduction while sleeping*/, //tr + rarity = 2, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + new BaseItem(new int[][] + { + new int[] {2005}, + new int[] {-1}, + new int[] {-1}, + new int[] {42,43}, + new int[] {44,0,49,}, + new int[] {21,24,0,0,0,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_242/*Ice Scroll*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_243/*A spell surrounded by flying shards of ice, contains tramendous power of cold.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_244/*Created at the top of the mountain.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_581("250", 2)/*Snap freeze damage is increased and the slow duration is increased by 1 second*/, //tr + rarity = 4, + minLevel = 30, + maxLevel = 40, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.SpellScroll, + icon = Res.ResourceLoader.GetTexture(110), + onEquipCallback = () => { ModdedPlayer.Stats.spell_snapDamageScaling.Add(250f); ModdedPlayer.Stats.spell_snapFreezeDuration.Add(2); }, + onUnequipCallback = () => { ModdedPlayer.Stats.spell_snapDamageScaling.Sub(250f); ModdedPlayer.Stats.spell_snapFreezeDuration.Add(2); } + }; + new BaseItem(new int[][] + { + new int[] {2006}, + new int[] {57,1,2,3,4}, + new int[] {34,45,46,15,1,2,3,4,57,11,14,7,10,59}, + new int[] {8,1,2,3,4,9,5,6}, + new int[] {1000,1001,1002}, + new int[] {1000,1001,1002, 1003, 1004, 0,0,0,0,0,0,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_245/*Motorboat Modification Blueprints*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_246/*Sheet of paper that allows to turn any raft into a high speed. Increases carry amount and increases speed of rafts.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_247/*Who did this lmao.*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 4, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.SpellScroll, + icon = Res.ResourceLoader.GetTexture(110), + }; + new BaseItem(new int[][] + { + new int[]{1,2,3,4}, + new int[]{18}, + new int[]{18,0,0,62,63,64}, + new int[] {1,2,3,4,6,55}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_248/*Axe of Swiftness*/, //tr + rarity = 3, + minLevel = 15, + maxLevel = 17, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Axe, + icon = Res.ResourceLoader.GetTexture(138), + }.statSlots[1][0].multipier = 1.6f; + new BaseItem(new int[][] + { + new int[]{1,26,22}, + new int[]{18}, + new int[]{18,62,63,64}, + new int[] {1,2,3,4,6,55,59,57,34,35,36,14,44,49}, + new int[] {53,22,25,12,13}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_249/*Severer*/, //tr + rarity = 4, + minLevel = 25, + maxLevel = 25, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Axe, + icon = Res.ResourceLoader.GetTexture(138), + }.statSlots[1][0].multipier = 2.5f; + + new BaseItem(new int[][] + { + new int[]{1,26,22}, + new int[]{18}, + new int[]{1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,20,34,35,36,37,38,44,45,46,47,49,53,54,55,}, + new int[]{62,63,64,0,0,0}, + new int[]{19,56}, + new int[] {1,2,3,4,6,55,59,57,34,35,36,14,44,49}, + new int[] {53,22,25,12,13,1,2,3,4,39,40,41,42,43}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_250/*Golden Axe of Fortune*/, //tr + rarity = 5, + minLevel = 35, + maxLevel = 36, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Axe, + icon = Res.ResourceLoader.GetTexture(138), + }.statSlots[1][0].multipier = 2.5f; + new BaseItem(new int[][] + { + new int[]{26,22}, + new int[]{63}, + new int[]{1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,20,34,35,36,37,38,44,45,46,47,49,53,54,55,}, + new int[]{62,63,64,65}, + new int[]{19,56}, + new int[] {26}, + new int[] {53,22,25,12,13,1,2,3,4,39,40,41,42,43}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_251/*Axe of Misfortune*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_252/*Misfortunate are the ones on the recieving end. They will bleed a lot*/, //tr + rarity = 5, + minLevel = 6, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Axe, + icon = Res.ResourceLoader.GetTexture(138), + }.statSlots[1][0].multipier = 3; + + new BaseItem(new int[][] + { + new int[] {1,2,3,4}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_253/*Golden Ring*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_102/*A Ring of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_103/*A Golden Ring that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 4, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 1, + maxLevel = 4, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + new BaseItem(new int[][] + { + new int[] {1,2,3,4}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_254/*Golden Locket*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_122/*A Locket of ancient times.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_123/*A Golden Locket that looks simple and elegant, yet it feels powerfull to the touch.*/, //tr + rarity = 3, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 1, + maxLevel = 4, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), //icon ids, don't worry about that + }; + new BaseItem(new int[][] + { + new int[]{0,39} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_255/*Dull Axe*/, //tr + rarity = 0, + minLevel = 15, + maxLevel = 24, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Axe, + icon = Res.ResourceLoader.GetTexture(138), + }; + new BaseItem(new int[][] + { + new int[] {1,2,3,4 }, + new int[] {1,2,3,15,4,0,0,0 }, + new int[] {12,13,1,2,3,4,5, }, + new int[] {18,16,23,26,19 }, + new int[] {18,16,23,26 }, + new int[] {34,44,45,46 }, + new int[] {2,23,26}, + new int[] {2,23,26,51}, + new int[] {2,23,26,20,16,15,60}, + new int[] {52,66,60,0,0}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_256/*Precise Adjustments*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_257(15)/*Focus attack speed buff duration is increased by 16 seconds*/, //tr + rarity = 7, + minLevel = 5, + maxLevel = 8, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Quiver, + icon = Res.ResourceLoader.GetTexture(98), + onEquipCallback = () => ModdedPlayer.Stats.spell_focusOnAtkSpeedDuration.Add(16), + onUnequipCallback = () => ModdedPlayer.Stats.spell_focusOnAtkSpeedDuration.Sub(16), + }; + new BaseItem(new int[][] + { + new int[] {25 }, + new int[] {22,1,18,}, + new int[] {1,2,3,4,57,}, + new int[] {27,28,30}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {15,14,45,7,35,10}, + new int[] {62,63,64, }, + new int[] {53,61 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_258/*Rage*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_259(15)/*Increases maximum stacks of frenzy by 10*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_260/*Swords go brrrrrrttt*/, //tr + rarity = 7, + minLevel = 6, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.GreatSword, + icon = Res.ResourceLoader.GetTexture(88), + onEquipCallback = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Add(15), + onUnequipCallback = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Sub(15), + }.statSlots[0][0].multipier = 5; + + BaseItem jaggedRipper = new BaseItem(new int[][] + { + new int[] {1,2,3,4,57,}, + new int[]{18}, + new int[] {25 }, + new int[] {62,63,64, }, + new int[] {53, }, + new int[] {49,14, }, + new int[] {35,36,15,12, }, + new int[] {27,28,30}, + new int[]{18,62,63,64}, + new int[] {65}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_261/*Jagged Edge*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_262("30%", "30%")/*Bash has 30% a chance to make enemies to bleed for 30% of damage dealt per second for duration of slow*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 5, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Axe, + icon = Res.ResourceLoader.GetTexture(138), + onEquipCallback = () => ModdedPlayer.Stats.spell_bashBleedChance.Add(0.3f), + onUnequipCallback = () => ModdedPlayer.Stats.spell_bashBleedChance.Sub(0.3f), + }; + jaggedRipper.statSlots[1][0].multipier = 2; + + new BaseItem(new int[][] + { + new int[] {25 }, + new int[] {22,}, + new int[] {1,2,3,4,57,}, + new int[] {27,28,30}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {15,14,45,7,35,10}, + new int[] {62,63,64, }, + new int[] {53,61 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_263/*Bloodthirster*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_264/*Drenched in blood of many unfortunate foes.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_265("2%")/*Bash lifesteals 2% of damage dealt into energy and health*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 5, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.LongSword, + icon = Res.ResourceLoader.GetTexture(89), + onEquipCallback = () => ModdedPlayer.Stats.spell_bashLifesteal.Add(0.02f), + onUnequipCallback = () => ModdedPlayer.Stats.spell_bashLifesteal.Sub(0.02f), + }.statSlots[0][0].multipier = 3; + new BaseItem(new int[][] + { + new int[] {25 }, + new int[] {22 }, + new int[] {2004 }, + new int[] {62,63,64 }, + new int[] {27,28,30,29,48}, + new int[] {1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_266/*Frost Giant*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_267/*Melee hits freeze enemies*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Hammer, + icon = Res.ResourceLoader.GetTexture(109), + onEquipCallback = () => + { + ModdedPlayer.Stats.i_HammerStunDuration.Multiply(2); + ModdedPlayer.Stats.i_HammerStunAmount.Multiply(0); + }, + onUnequipCallback = () => + { + ModdedPlayer.Stats.i_HammerStunDuration.Divide(2); + ModdedPlayer.Stats.i_HammerStunAmount.Reset(); + }, + }.statSlots[0][0].multipier = 3.25f; + + new BaseItem(new int[][] + { + new int[] {11}, + new int[] {65}, + new int[] {16,17}, + new int[] {1,11,45}, + new int[] {15}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_268/*Alexander's Shield*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_269/*Parry has a chance to be casted when getting it. Requires parry to be equipped*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + onEquipCallback = () => ModdedPlayer.Stats.spell_chanceToParryOnHit.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.spell_chanceToParryOnHit.value = false, + }; + + new BaseItem(new int[][] + { + new int[] {1}, + new int[] {12,3,16,45,46}, + new int[] {13,4,62,64}, + new int[] {22}, + new int[] {25,22}, + new int[] {25}, + new int[] {11,1}, + new int[] {30,1,57}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_270/*King Qruies*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_271/*A mighty sword seeking for it's owner*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_272/*Gain additional melee damage equal to the last instance of physical damage taken.*/, //tr + rarity = 7, + minLevel = 10, + maxLevel = 12, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.LongSword, + icon = Res.ResourceLoader.GetTexture(89), + onEquipCallback = () => ModdedPlayer.Stats.i_KingQruiesSword.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.i_KingQruiesSword.value = false, + }; + + new BaseItem(new int[][] + { + new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, + new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, + new int[] {13,4,62,64}, + new int[] {26,2,34,57,55}, + new int[] {26,23}, + new int[] {18,16}, + new int[] {48,2,55}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_273/*Grip of Sora*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_274/*Look, a porcupine! -Sora*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_275("20%", "+4")/*Multishot drains 20% less energy and shoots +4 projectiles. Additional projectiles do not increase the cost of multishot*/, //tr + rarity = 7, + minLevel = 10, + maxLevel = 12, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + onEquipCallback = () => ModdedPlayer.Stats.i_SoraBracers.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.i_SoraBracers.value = false, + }; + new BaseItem(new int[][] + { + new int[] {18}, + new int[] {60,0}, + new int[] {2,40}, + new int[] {12,13,2,40,16,66}, + new int[] {39,40,41,42,43,0,0}, + new int[] {23,26}, + new int[] {-1,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_276/*Ancient Greatbow*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_277/*A massive and slow bow, deals extra damage*/, //tr + rarity = 4, + minLevel = 10, + maxLevel = 12, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Greatbow, + icon = Res.ResourceLoader.GetTexture(170), + }.statSlots[0][0].multipier = -1.55f; + + new BaseItem(new int[][] + { + new int[] {18}, + new int[] {61}, + new int[] {2,0,0,0}, + new int[] {12,13,2,40,16}, + new int[] {39,40,41,42,43,0,0}, + new int[] {23,26,2,66}, + new int[] {23,26}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_278/*Phoenix's Death*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_279/*Ignites enemies on hit*/, //tr + rarity = 6, + minLevel = 10, + maxLevel = 12, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Greatbow, + icon = Res.ResourceLoader.GetTexture(170), + onEquipCallback = () => ModdedPlayer.Stats.i_greatBowIgnites.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.i_greatBowIgnites.value = false, + }.statSlots[0][0].multipier = -1.7f; + + new BaseItem(new int[][] + { + new int[] {18}, + new int[] {61,48}, + new int[] {2,3,5}, + new int[] {12,13,2,40,16}, + new int[] {39,40,41,42,43,66}, + new int[] {23,26}, + new int[] {23,26}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_280/*Soulstring*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_281/*A massive and slow bow*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_282(100)/*Blood infused arrow now deals additional 20 points of damage per health consumed*/, //tr + rarity = 7, + minLevel = 10, + maxLevel = 12, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Greatbow, + icon = Res.ResourceLoader.GetTexture(170), + onEquipCallback = () => ModdedPlayer.Stats.spell_bia_HealthDmMult.Add(100), + onUnequipCallback = () => ModdedPlayer.Stats.spell_bia_HealthDmMult.Sub(100), + }.statSlots[0][0].multipier = -1.7f; + + new BaseItem(new int[][] + { + new int[] {18}, + + new int[] {2,40,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_283/*Greatbow*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_277/*A massive and slow bow, deals extra damage*/, //tr + rarity = 2, + minLevel = 25, + maxLevel = 28, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Greatbow, + icon = Res.ResourceLoader.GetTexture(170), + }.statSlots[0][0].multipier = -2.7f; + + new BaseItem(new int[][] + { + new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, + new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, + new int[] {13,4,62,64}, + new int[] {26,2,34,57,55}, + new int[] {26,23}, + new int[] {26,0,0}, + new int[] {18,16}, + new int[] {30,1,57}, + new int[] {5}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_284/*Withered Crown*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_285/*Worn by Hazard.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_286("4")/*A single cast of blood infused arrow affects 4 more projectiles*/, //tr + rarity = 7, + minLevel = 10, + maxLevel = 12, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + onEquipCallback = () => ModdedPlayer.Stats.i_HazardCrown.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.i_HazardCrown.value = false, + }; + new BaseItem(new int[][] + { + new int[] {39,40,41,42,43,4}, + new int[] {4,6,24,21,16,3,42,43,49}, + new int[] {0,6,24,21,16,3,47,49,38,17,10,11,9,8,7,6}, + new int[] {37,4}, + new int[] {43,16,17,37,47 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_287/*Novice Magic Caster's Bracers*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + }; + new BaseItem(new int[][] + { + new int[] {2,12,13,23,26,40,43,54}, + new int[] {2,12,13,23,26,40,43,60,62,63,51,52,66}, + new int[] {5,6,7,8,9,10,16,17,26}, + new int[] {37,0,0,0}, + new int[] {43,16,2 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_288/*Ranger's Bracers*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + }; + new BaseItem(new int[][] + { + new int[] {1,16,5,6,18,39,14,22,25,53,62,63,57,45}, + new int[] {2,12,13,22,25,40,43,54}, + new int[] {5,6,7,8,9,10,16,17,26}, + new int[] {37,1,17,18,16}, + new int[] {43,1,65 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_289/*Swordsman's Bracers*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + }; + new BaseItem(new int[][] + { + new int[] {3,5,6,7,8,9,10,11,14,15,16}, + new int[] {7,16,18,0,0}, + new int[] {39,40,41,42,43,31,16}, + new int[] {1,2,3,4,5,57,39,40,41,42,43,31,16}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_290/*Healer's Bracers*/, //tr + rarity = 5, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + }; + new BaseItem(new int[][] + { + new int[] {39,40,41,42,43,4}, + new int[] {4,6,24,21,16,3,42,43,49}, + new int[] {0,6,24,21,16,3,47,49,38,17,10,11,9,8,7,6}, + new int[] {37,0,0,0}, + new int[] {43,4 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_291/*Novice Magic Caster's Gloves*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new int[][] + { + new int[] {2,12,13,23,26,40,43,54}, + new int[] {2,12,13,23,26,40,43,60,62,63,51,52,66}, + new int[] {5,6,7,8,9,10,16,17,26}, + new int[] {37,68}, + new int[] {43,2 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_292/*Ranger's Gloves*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new int[][] + { + new int[] {1,16,5,6,18,39,14,22,25,53,62,63,57,45}, + new int[] {2,12,13,23,26,40,43,54}, + new int[] {5,6,7,8,9,10,16,17,26}, + new int[] {37,18,7,0}, + new int[] {43,1,65 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_293/*Swordsman's Gloves*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new int[][] + { + new int[] {3,5,6,7,8,9,10,11,14,15,16}, + new int[] {7,16,18,0,0}, + new int[] {39,40,41,42,43,31,16}, + new int[] {1,2,3,4,5,57,39,40,41,42,43,31,16}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_294/*Healer's Gloves*/, //tr + rarity = 5, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new int[][] + { + new int[] {62,63,64,55,54,53,48,30,29,28,27}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_295/*Fate Gloves*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new int[][] + { + new int[] {62,63,64,55,54,53,48,30,29,28,27}, + new int[] {34}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_296/*Fate Boots*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }; + new BaseItem(new int[][] + { + new int[] {62,63,64,55,54,53,48,30,29,28,27}, + new int[] {34}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_297/*Greed*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_298/*Automatically casts wide reach every second*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + onEquipCallback = () => ModdedPlayer.Stats.i_isGreed.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.i_isGreed.value = false, + }; + BaseItem titaniumleggins = new BaseItem(new int[][] + { + new int[] { 16}, + new int[] {31}, + new int[] {1,2,3,4}, + new int[] {5,}, + new int[] {-1,65}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_299/*Titanium Leggins*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_300/*Heavily armored leg protection. Suffers from the same weaknesses as spartan armor.*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + titaniumleggins.statSlots[0][0].multipier = 3; + titaniumleggins.statSlots[1][0].multipier = 1.5f; + new BaseItem(new int[][] + { + new int[] {42,39,40,41,43,0,0 }, + new int[] {16,24,25,26,5,6,7,8,9,10,11,12,13,14,15,17,18,55,60,61,62,63,64,0,0,0 }, + new int[] {16,24,25,26,5,6,7,8,9,10,11,12,13,14,15,17,18,55,60,61,62,63,64 }, + new int[] {43,0,0,0,16 }, + new int[] {65,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_301/*Iron Gauntlet*/, //tr + rarity = 2, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + + new BaseItem(new int[][] + { + new int[] {4,3,6}, + new int[] {21,24,16 }, + new int[] {29,4 }, + new int[] {16,15,17 }, + new int[] {47,49,44,45,46 }, + new int[] {-1 }, + new int[] {-1 }, + new int[] {-1 }, + new int[] {-1 }, + new int[] {-1 }, + new int[] {-1 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_302/*Magefist*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_303/*Gloves that amplify magic*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_304/*Spells deal double damage but have double the energy cost*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + onEquipCallback = () => { ModdedPlayer.Stats.spellDamageMult.valueMultiplicative *= 2f; ModdedPlayer.Stats.spellCost.valueMultiplicative *= 2f; }, + onUnequipCallback = () => { ModdedPlayer.Stats.spellDamageMult.valueMultiplicative /= 2f; ModdedPlayer.Stats.spellCost.valueMultiplicative /= 2f; } + }; + new BaseItem(new int[][] + { + new int[] {34 }, + new int[] {34,5,1,2,4,3,2,11 }, + new int[] {16,3,2,1,4 }, + new int[] {16,7,8 }, + new int[] {16, }, + new int[] {-1 }, + new int[] {43 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_305/*Armored Boots*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_306/*Heavily armored, resistant to damage boots.*/, //tr + rarity = 5, + minLevel = 10, + maxLevel = 14, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }; + new BaseItem(new int[][] + { + new int[] {16}, + new int[] {16,18,57,53}, + new int[] {16,1,2,3,4,21,22,23,24,25,26,31,15,5,6,7,8,9}, + new int[] {1,2,3,4,57}, + new int[] {16,45,46,0,0,0}, + new int[] {-1 }, + new int[] {-1 }, + new int[] {-1 }, + new int[] {-1 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_307/*Broken Protector*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_308/*This shield failed to protect those behind it.*/, //tr + rarity = 6, + minLevel = 5, + maxLevel = 8, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + }.statSlots[0][0].multipier = 2; + + new BaseItem(new int[][] + { + new int[] {4}, + new int[] {6,4,3,44}, + new int[] {21,24}, + new int[] {21,24}, + new int[] {-1,}, + new int[] {-1}, + new int[] {-1}, + new int[] {47,4,5,6,7,61,17,0,0,0,0,2,56,57,49,64}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_309/*Forbidden Scroll*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_310/*Too powerful to be kept.*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 1, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.SpellScroll, + icon = Res.ResourceLoader.GetTexture(110), + }; + + new BaseItem(new int[][] + { + new int[] {16}, + new int[] {1,2,3,4}, + new int[] {17}, + new int[] {8,9,49,47}, + new int[] {16,18,11,34}, + new int[] {37,34}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_311/*Doom Pauldrons*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_312/*Despite the cool name, they are completely normal pair of shoulder armor.*/, //tr + rarity = 6, + minLevel = 5, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + }; + new BaseItem(new int[][] + { + new int[] {16}, + new int[] {1,2,3,4,57,53,54,55}, + new int[] {17,18,11,15}, + new int[] {15}, + new int[] {34}, + new int[] {16,5,6,7,8,9,10,11,12,13,14,15,17,18,59,47,45,46,60}, + new int[] {23,22,30,27,34,44,48,59}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_313/*Wind armor*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_314/*Run fast like the wind*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_315("20%", "35%", "2000", "5%")/*Upon dodging an attack, gain 20% movement speed, 35% damage, 2000 armor, and heal for 5% of your maximum health*/, //tr + rarity = 7, + minLevel = 5, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + onEquipCallback = () => ModdedPlayer.Stats.i_isWindArmor.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.i_isWindArmor.value = false, + }; + new BaseItem(new int[][] + { + new int[] {11}, + new int[] {22,23,21}, + new int[] {16}, + new int[] {1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,31,36,37,38,43,44,45,46,47,49,50,53,54,55,57}, + new int[] {-1}, + new int[] {-1}, + new int[] {24,25,26,0,0,0}, + //new int[] {29,30,48}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_316/*Crusader Helmet*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_317/*You're talking mad shit for someone within crusading distance*/, //tr + rarity = 5, + minLevel = 2, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + + new BaseItem(new int[][] + { + new int[] {1,2,3,4,5,6,57}, + new int[] {-1}, + new int[] {-1}, + new int[] {24,25,26,10,47,0,0,0}, + //new int[] {29,30,48}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_318/*Hood*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_319/*Hats provide usefull stat bonuses*/, //tr + rarity = 3, + minLevel = 2, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + new BaseItem(new int[][] + { + new int[] {47 }, + new int[] {4,29 }, + new int[] {4,29 }, + new int[] {4,17,6,44,38,21,24,8,9}, + new int[] {4,17,6,44,38,21,24,8,9}, + new int[] {4,17,6,44,38,21,24,8,9}, + new int[] {4,17,6,44,38,21,24,8,9}, + new int[] {4,17,6,44,38,21,24,8,9}, + new int[] {2000,2002,49}, + new int[] {2001,4,29,24,21}, + new int[] {2002,4}, + new int[] {2003,-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_320/*The Spark of Light in The Darkness*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_321/*Magic Scroll of great quality*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_322/*Written in a language i canno't understand. Decyphering this text is impossible, so is the full utilization of the scroll.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_323("5")/*If a black hole hits 5 or more enemies during it's lifetime, a ball lightning is summoned after it ends.*/, //tr + rarity = 7, + minLevel = 15, + maxLevel = 20, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.SpellScroll, + icon = Res.ResourceLoader.GetTexture(110), + onEquipCallback = () => ModdedPlayer.Stats.i_sparkOfLightAfterDark.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.i_sparkOfLightAfterDark.value = false + }; + new BaseItem(new int[][] + { + new int[] {21,22,23,24,25,26,1,2,4}, + new int[] {12,13,11,47}, + new int[] {62,63,64,1000,1001,1002,1003,1004}, + new int[] {61}, + new int[] {5,57}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_324/*Purgatory*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_325/*Golden ring with a bone chilling feel about it. This thing will only bring harm, but not to the wearer*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_326/*Ring made of Netherrite*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_327("300%")/*Purge increases all of your damage based on missing health. Up to 300%*/, //tr + rarity = 7, + minLevel = 20, + maxLevel = 26, + canConsume = false, + stackSize = 1, + onEquipCallback = () => ModdedPlayer.Stats.spell_purgeDamageBonus.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.spell_purgeDamageBonus.value = false, + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), + }.SetDropOnlyCannibals(); + + new BaseItem(new int[][] + { + new int[] {18}, + new int[] {61,48}, + new int[] {2,3,5}, + new int[] {12,13,2,40,16}, + new int[] {39,40,41,42,43,0,0}, + new int[] {23,26}, + new int[] {23,26}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_328/*Eruption*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_329/*Incarnation of devastation*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_330/*Headshots cause explosions*/, //tr + rarity = 7, + minLevel = 10, + maxLevel = 12, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Greatbow, + icon = Res.ResourceLoader.GetTexture(170), + onEquipCallback = () => ModdedPlayer.Stats.i_EruptionBow.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.i_EruptionBow.value = false, + }.statSlots[0][0].multipier = -1.6f; + + new BaseItem(new int[][] + { + new int[] {18}, + new int[] {61,48}, + new int[] {2,3,5}, + new int[] {12,13,2,40,16}, + new int[] {39,40,41,42,43,0,0}, + new int[] {23,26}, + new int[] {23,26}, + new int[] {31}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + new int[] {2,3,4,5,6,11,12,13,15,23,26,51,60,44,49,48}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_331/*Archangel*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_332/*Spread the goodness*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_333("30")/*Shooting another player causes them to be greatly empowered for 30 seconds*/, //tr + rarity = 7, + minLevel = 10, + maxLevel = 12, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Greatbow, + icon = Res.ResourceLoader.GetTexture(170), + onEquipCallback = () => ModdedPlayer.Stats.i_ArchangelBow.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.i_ArchangelBow.value = false, + }.statSlots[0][0].multipier = -2f; + new BaseItem(new int[][] + { + new int[] {1,4 }, + new int[] {1,3,5,6,49 }, + new int[] {22}, + new int[] {25}, + new int[] {12}, + new int[] {13}, + new int[] {1,12,13,22,25,30,53,57,65 }, + new int[] {-1 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_334/*The Executioner*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_335/*A sword for decapitating*/, //tr + rarity = 4, + minLevel = 25, + maxLevel = 27, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.LongSword, + icon = Res.ResourceLoader.GetTexture(89), + }; + new BaseItem(new int[][] + { + new int[] {48 }, + new int[] {23,26,2 }, + new int[] {23,26 }, + new int[] {12,13}, + new int[] {60}, + new int[] {13,23,26}, + new int[] {23,26}, + new int[] {34,2,2,54}, + new int[] {15,14}, + new int[] {16,23,2,4,5,6}, + new int[] {45,46}, + new int[] {27,49}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_336/*Moon Cuirass*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_337/*A piece of armor designed for an archer. */, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_338("120")/*Landing a headshot with an arrow without the homing effect of seeking arrow at a distance greater than 120 feet deals five-fold damage, and hits the enemy two extra times*/, //tr + rarity = 7, + minLevel = 20, + maxLevel = 22, + canConsume = false, + stackSize = 1, + onEquipCallback = () => ModdedPlayer.Stats.perk_trueAimUpgrade.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.perk_trueAimUpgrade.value = false, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + new BaseItem(new int[][] + { + new int[] {65 }, + new int[] {1 }, + new int[] {3}, + new int[] {5,65}, + new int[] {5,6,11,10,7,45}, + new int[] {53}, + new int[] {22}, + new int[] {1,3,4,5,31}, + new int[] {28}, + new int[] {63}, + new int[] {16}, + new int[] {-1}, + new int[] {-1}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_339/*Thornmail*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_340/*Spiked death on the outside, really comfy on the inside*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_341/*Thorns deal double damage*/, //tr + rarity = 7, + minLevel = 20, + maxLevel = 22, + canConsume = false, + stackSize = 1, + onEquipCallback = () => ModdedPlayer.Stats.thornsDmgMult.valueMultiplicative *= 2, + onUnequipCallback = () => ModdedPlayer.Stats.thornsDmgMult.valueMultiplicative /= 2, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + + new BaseItem(new int[][] + { + new int[] {1 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_342/*Rusty Polearm*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_343/*Used by the Ubersreik Five*/, //tr + rarity = 1, + minLevel = 10, + maxLevel = 16, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Polearm, + icon = Res.ResourceLoader.GetTexture(181), + }; + new BaseItem(new int[][] + { + new int[] {1 }, + new int[] {25,0 }, + new int[] {25 ,62,63,64}, + new int[] {6,49}, + new int[] {39,40,41,42,44,8,18,65 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_344/*Giant Polearm*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_345/*Used by the Sir Kruber*/, //tr + rarity = 4, + minLevel = 20, + maxLevel = 24, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Polearm, + icon = Res.ResourceLoader.GetTexture(181), + }; + + //Feathers + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_346/*Crude Feather*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_582/*If equipped on a weapon, increases ranged damage by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Weapon, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_583/*If equipped on boots, increases movement speed by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Boot, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_584/*If equipped on a helmet, increases critical hit chance by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Helmet, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_585/*If equipped on accessories, increases ranged armor piercing by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Amulet, 1).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_586/*If equipped in other slots, increases agility by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.ChestArmor, 1).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 3, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 1, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(185), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_348/*Soft Feather*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_582/*If equipped on a weapon, increases ranged damage by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Weapon, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_583/*If equipped on boots, increases movement speed by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Boot, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_584/*If equipped on a helmet, increases critical hit chance by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Helmet, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_585/*If equipped on accessories, increases ranged armor piercing by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Amulet, 1).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_586/*If equipped in other slots, increases agility by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.ChestArmor, 1).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 4, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 1, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(185), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_349/*Ornate Feather*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_582/*If equipped on a weapon, increases ranged damage by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Weapon, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_583/*If equipped on boots, increases movement speed by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Boot, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_584/*If equipped on a helmet, increases critical hit chance by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Helmet, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_585/*If equipped on accessories, increases ranged armor piercing by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Amulet, 1).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_586/*If equipped in other slots, increases agility by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.ChestArmor, 1).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 5, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 1, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(185), + }; + + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_350/*Wonderful Feather*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_582/*If equipped on a weapon, increases ranged damage by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Weapon, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_583/*If equipped on boots, increases movement speed by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Boot, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_584/*If equipped on a helmet, increases critical hit chance by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Helmet, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_585/*If equipped on accessories, increases ranged armor piercing by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Amulet, 1).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_586/*If equipped in other slots, increases agility by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.ChestArmor, 1).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 6, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 1, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(185), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_351/*White Crow's Feather*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_582/*If equipped on a weapon, increases ranged damage by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Weapon, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_583/*If equipped on boots, increases movement speed by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Boot, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_584/*If equipped on a helmet, increases critical hit chance by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Helmet, 1).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_585/*If equipped on accessories, increases ranged armor piercing by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Amulet, 1).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_586/*If equipped in other slots, increases agility by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.ChestArmor, 1).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 7, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 1, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(185), + }; + + //-------------- Shark teeth + + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_352/*Reef Shark*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_587/*If equipped on a weapon, increases melee damage by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Weapon, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_588/*If equipped on boots, decreases damage taken by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Boot, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_589/*If equipped on a helmet, increases cattack speed by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Helmet, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_590/*If equipped on accessories, increases melee armor piercing by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Amulet, 2).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_591/*If equipped in other slots, increases strength by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.ChestArmor, 2).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 3, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 2, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(186), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_353/*Tiger Shark Tooth*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_587/*If equipped on a weapon, increases melee damage by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Weapon, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_588/*If equipped on boots, decreases damage taken by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Boot, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_589/*If equipped on a helmet, increases cattack speed by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Helmet, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_590/*If equipped on accessories, increases melee armor piercing by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Amulet, 2).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_591/*If equipped in other slots, increases strength by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.ChestArmor, 2).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 4, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 2, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(186), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_354/*Whale Shark Tooth*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_587/*If equipped on a weapon, increases melee damage by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Weapon, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_588/*If equipped on boots, decreases damage taken by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Boot, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_589/*If equipped on a helmet, increases cattack speed by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Helmet, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_590/*If equipped on accessories, increases melee armor piercing by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Amulet, 2).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_591/*If equipped in other slots, increases strength by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.ChestArmor, 2).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 5, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 2, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(186), + }; + + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_355/*Great White Shark Tooth*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_587/*If equipped on a weapon, increases melee damage by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Weapon, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_588/*If equipped on boots, decreases damage taken by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Boot, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_589/*If equipped on a helmet, increases cattack speed by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Helmet, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_590/*If equipped on accessories, increases melee armor piercing by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Amulet, 2).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_591/*If equipped in other slots, increases strength by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.ChestArmor, 2).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 6, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 2, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(186), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_356/*Megalodon's Tooth*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_587/*If equipped on a weapon, increases melee damage by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Weapon, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_588/*If equipped on boots, decreases damage taken by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Boot, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_589/*If equipped on a helmet, increases cattack speed by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Helmet, 2).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_590/*If equipped on accessories, increases melee armor piercing by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Amulet, 2).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_591/*If equipped in other slots, increases strength by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.ChestArmor, 2).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 7, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 2, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(186), + }; + + //------------- Sapphires + + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_357/*Uncut Sapphire*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_592/*If equipped on a weapon, increases magic damage by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Weapon, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_593/*If equipped on boots, decreases spell cost by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Boot, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_594/*If equipped on a helmet, decreases spell cooldown by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Helmet, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_595/*If equipped on accessories, increases energy on hit by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Amulet, 3).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_596/*If equipped in other slots, increases intelligence by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.ChestArmor, 3).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 3, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 3, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(187), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_358/*Clear Sapphire*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_592/*If equipped on a weapon, increases magic damage by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Weapon, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_593/*If equipped on boots, decreases spell cost by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Boot, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_594/*If equipped on a helmet, decreases spell cooldown by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Helmet, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_595/*If equipped on accessories, increases energy on hit by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Amulet, 3).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_596/*If equipped in other slots, increases intelligence by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.ChestArmor, 3).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 4, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 3, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(187), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_359/*Shiny Sapphire*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_592/*If equipped on a weapon, increases magic damage by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Weapon, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_593/*If equipped on boots, decreases spell cost by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Boot, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_594/*If equipped on a helmet, decreases spell cooldown by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Helmet, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_595/*If equipped on accessories, increases energy on hit by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Amulet, 3).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_596/*If equipped in other slots, increases intelligence by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.ChestArmor, 3).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 5, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 3, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(187), + }; + + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_360/*Enchanted Sapphire*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_592/*If equipped on a weapon, increases magic damage by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Weapon, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_593/*If equipped on boots, decreases spell cost by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Boot, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_594/*If equipped on a helmet, decreases spell cooldown by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Helmet, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_595/*If equipped on accessories, increases energy on hit by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Amulet, 3).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_596/*If equipped in other slots, increases intelligence by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.ChestArmor, 3).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 6, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 3, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(187), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_361/*Celestial Sapphire*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_592/*If equipped on a weapon, increases magic damage by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Weapon, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_593/*If equipped on boots, decreases spell cost by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Boot, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_594/*If equipped on a helmet, decreases spell cooldown by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Helmet, 3).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_595/*If equipped on accessories, increases energy on hit by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Amulet, 3).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_596/*If equipped in other slots, increases intelligence by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.ChestArmor, 3).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 7, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 3, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(187), + }; + + // -------- Moonstones + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_362/*Uncut Moonstone*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_597/*If equipped on a weapon, increases all healing by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Weapon, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_598/*If equipped on boots, increases magic find by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Boot, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_599/*If equipped on a helmet, increases experience gained by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Helmet, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_600/*If equipped on accessories, increases life per second by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Amulet, 4).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_601/*If equipped in other slots, increases vitality by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.ChestArmor, 4).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 3, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 4, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(188), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_363/*Clear Moonstone*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_597/*If equipped on a weapon, increases all healing by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Weapon, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_598/*If equipped on boots, increases magic find by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Boot, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_599/*If equipped on a helmet, increases experience gained by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Helmet, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_600/*If equipped on accessories, increases life per second by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Amulet, 4).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_601/*If equipped in other slots, increases vitality by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.ChestArmor, 4).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 4, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 4, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(188), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_364/*Shiny Moonstone*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_597/*If equipped on a weapon, increases all healing by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Weapon, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_598/*If equipped on boots, increases magic find by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Boot, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_599/*If equipped on a helmet, increases experience gained by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Helmet, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_600/*If equipped on accessories, increases life per second by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Amulet, 4).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_601/*If equipped in other slots, increases vitality by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.ChestArmor, 4).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 5, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 4, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(188), + }; + + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_365/*Enchanted Moonstone*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_597/*If equipped on a weapon, increases all healing by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Weapon, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_598/*If equipped on boots, increases magic find by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Boot, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_599/*If equipped on a helmet, increases experience gained by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Helmet, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_600/*If equipped on accessories, increases life per second by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Amulet, 4).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_601/*If equipped in other slots, increases vitality by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.ChestArmor, 4).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 6, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 4, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(188), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_366/*Celestial Moonstone*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_597/*If equipped on a weapon, increases all healing by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Weapon, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_598/*If equipped on boots, increases magic find by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Boot, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_599/*If equipped on a helmet, increases experience gained by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Helmet, 4).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_600/*If equipped on accessories, increases life per second by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Amulet, 4).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_601/*If equipped in other slots, increases vitality by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.ChestArmor, 4).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 7, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 4, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(188), + }; + + // ----------------- Ores + + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_367/*Lead Ore*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_602/*If equipped on a weapon, increases crit damage by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Weapon, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_603/*If equipped on boots, increases resistance to magic by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Boot, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_604/*If equipped on a helmet, increases health by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Helmet, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_605/*If equipped on accessories, increases thorns by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.Amulet, 5).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_606/*If equipped in other slots, increases armor by */ + StatActions.GetSocketedStatAmount(3, BaseItem.ItemType.ChestArmor, 5).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 3, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 5, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(184), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_368/*Vanadium Ore*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_602/*If equipped on a weapon, increases crit damage by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Weapon, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_603/*If equipped on boots, increases resistance to magic by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Boot, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_604/*If equipped on a helmet, increases health by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Helmet, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_605/*If equipped on accessories, increases thorns by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.Amulet, 5).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_606/*If equipped in other slots, increases armor by */ + StatActions.GetSocketedStatAmount(4, BaseItem.ItemType.ChestArmor, 5).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 4, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 5, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(184), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_369/*Titanium Ore*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_602/*If equipped on a weapon, increases crit damage by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Weapon, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_603/*If equipped on boots, increases resistance to magic by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Boot, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_604/*If equipped on a helmet, increases health by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Helmet, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_605/*If equipped on accessories, increases thorns by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.Amulet, 5).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_606/*If equipped in other slots, increases armor by */ + StatActions.GetSocketedStatAmount(5, BaseItem.ItemType.ChestArmor, 5).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 5, + + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 5, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(184), + }; + + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_370/*Chromium Ore*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_602/*If equipped on a weapon, increases crit damage by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Weapon, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_603/*If equipped on boots, increases resistance to magic by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Boot, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_604/*If equipped on a helmet, increases health by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Helmet, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_605/*If equipped on accessories, increases thorns by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.Amulet, 5).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_606/*If equipped in other slots, increases armor by */ + StatActions.GetSocketedStatAmount(6, BaseItem.ItemType.ChestArmor, 5).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 6, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 5, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(184), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_371/*Tungsten Ore*/, //tr + description = + Translations.ItemDataBase_ItemDefinitions_602/*If equipped on a weapon, increases crit damage by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Weapon, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_603/*If equipped on boots, increases resistance to magic by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Boot, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_604/*If equipped on a helmet, increases health by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Helmet, 5).ToString("P") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_605/*If equipped on accessories, increases thorns by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.Amulet, 5).ToString("N") + "\n" + //tr + Translations.ItemDataBase_ItemDefinitions_606/*If equipped in other slots, increases armor by */ + StatActions.GetSocketedStatAmount(7, BaseItem.ItemType.ChestArmor, 5).ToString("N"), //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_347/*Materials can be put inside empty sockets to add stats to items*/, //tr + rarity = 7, + minLevel = 20, + maxLevel = 21, + canConsume = false, + stackSize = 100, + subtype = 5, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(184), + }; + + //This is the new better way of defining items, no longer uses item ids, now uses enum like in C++, the enum is Stats, you can find it in ItemDataBase_StatDefinitons.cs + new BaseItem(new Stat[][] + { + new [] {MELEE_DMG_FROM_STR}, + new [] {STRENGTH}, + new [] {BASE_MELEE_DAMAGE,MELEE_DAMAGE_INCREASE}, + new [] {MELEE_ARMOR_PIERCING,ARMOR_PIERCING,ALL_ATTRIBUTES}, + new [] {ATTACK_COST_REDUCTION,ATTACKSPEED}, + new [] {ATTACKSPEED}, + new [] {ALL_ATTRIBUTES,MELEE_WEAPON_RANGE,VITALITY,MAX_LIFE}, + new [] {ENERGY_ON_HIT,VITALITY,LIFE_ON_HIT } + }) + { + name = Translations.ItemDataBase_ItemDefinitions_372/*Knife on a stick*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_373/*Kasper named this item, his fault*/, //tr + rarity = 5, + minLevel = 30, + maxLevel = 34, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Polearm, + icon = Res.ResourceLoader.GetTexture(181), + }; + new BaseItem(new Stat[][] + { + new [] {STRENGTH}, + new [] {STRENGTH,ALL_ATTRIBUTES,MELEE_ARMOR_PIERCING,MELEE_DAMAGE_INCREASE,COOLDOWN_REDUCTION,SPELL_DAMAGE_MULTIPLIER}, + new [] {MAX_LIFE,VITALITY,MAX_LIFE_MULT,ALL_ATTRIBUTES}, + new [] {MELEE_DAMAGE_INCREASE,DAMAGE_REDUCTION}, + new [] {THORNS}, + new [] {VITALITY,LIFE_REGEN_BASE,LIFE_REGEN_MULT}, + new [] {VITALITY,LIFE_REGEN_BASE,LIFE_REGEN_MULT,THORNS}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ENERGY_REGEN_BASE,MAX_ENERGY,DODGE_CHANCE,ARMOR,}, + new [] {STRENGTH,INTELLIGENCE,ARMOR,ARMOR_PIERCING,THORNS,} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_374/*Fists of Nails*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_375/*Swiss sheese makers*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_376("900%")/*Gain 5 thorns per vitality*/, //tr + rarity = 7, + minLevel = 20, + maxLevel = 22, + canConsume = false, + stackSize = 1, + onEquipCallback = () => ModdedPlayer.Stats.thornsPerVit.Add(9), + onUnequipCallback = () => ModdedPlayer.Stats.thornsPerVit.Sub(9), + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new int[][] + { + new int[] {1000}, + new int[] {1001}, + new int[] {1002}, + new int[] {1003}, + new int[] {1004}, + new int[] {1,2,3,4,5,6 }, + new int[] {-1 }, + new int[] {-1 }, + new int[] {-1 }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_377/*Cargo Shorts MK2*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_378/*Deepest pockets out there*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_379/*Improved cargo pants. Twice as many pockets, and since they didnt fit on the outside, they are inside. They are still ugly as hell tho*/, //tr + rarity = 4, + minLevel = 30, + maxLevel = 33, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + new BaseItem(new Stat[][] + { + new [] {INTELLIGENCE,AGILITY}, + new [] {LOOT_QUANTITY,SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE}, + new [] {SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE}, + new [] {MAX_ENERGY_FROM_AGILITY,SPELL_DMG_FROM_INT,RANGED_DMG_FROM_AGI}, + new [] {ARMOR}, + new [] {VITALITY,LIFE_REGEN_BASE,LIFE_REGEN_MULT,INTELLIGENCE,AGILITY,STRENGTH,ALL_ATTRIBUTES}, + new [] {COOLDOWN_REDUCTION,SPELL_COST_REDUCTION,SPELL_COST_TO_STAMINA,MOVEMENT_SPEED,DAMAGE_REDUCTION}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {DODGE_CHANCE,ARMOR,BASE_SPELL_DAMAGE,BASE_RANGED_DAMAGE}, + new [] {BASE_RANGED_DAMAGE,RANGED_ARMOR_PIERCING,RANGED_DAMAGE_INCREASE} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_380/*Aezyn*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_381/*Enchanted with magic as strong as power swing. It's purpose? Hit harder.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_382("1666%")/*Magic arrow damage scaling is increased by 666%*/, //tr + rarity = 7, + minLevel = 20, + maxLevel = 22, + canConsume = false, + stackSize = 1, + onEquipCallback = () => ModdedPlayer.Stats.spell_magicArrowDamageScaling.Add(16.66f), + onUnequipCallback = () => ModdedPlayer.Stats.spell_magicArrowDamageScaling.Sub(16.66f), + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + }; + new BaseItem(new Stat[][] + { + new [] {INTELLIGENCE,AGILITY}, + new [] {CRIT_CHANCE}, + new [] {CRIT_DAMAGE}, + new [] {VITALITY,LIFE_REGEN_BASE,LIFE_REGEN_MULT,INTELLIGENCE,AGILITY,STRENGTH,ALL_ATTRIBUTES}, + new [] {COOLDOWN_REDUCTION,SPELL_COST_REDUCTION,SPELL_COST_TO_STAMINA,MOVEMENT_SPEED,DAMAGE_REDUCTION}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {DODGE_CHANCE,ARMOR,BASE_SPELL_DAMAGE,BASE_RANGED_DAMAGE}, + new [] {BASE_RANGED_DAMAGE,RANGED_ARMOR_PIERCING,RANGED_DAMAGE_INCREASE} + }) + { + name = Translations.ItemDataBase_ItemDefinitions_383/*Punny's Reflective Ring*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_381/*Enchanted with magic as strong as power swing. It's purpose? Hit harder.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_384/*Magic arrow is shot in volleys. This effect can stack.*/, //tr + rarity = 7, + minLevel = 20, + maxLevel = 22, + canConsume = false, + stackSize = 1, + onEquipCallback = () => ModdedPlayer.Stats.spell_magicArrowVolleyCount.Add(3), + onUnequipCallback = () => ModdedPlayer.Stats.spell_magicArrowVolleyCount.Sub(3), + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), + }; + new BaseItem(new int[][] + { + new int[] {39,0}, + new int[] {43,0}, + new int[] {67}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_385/*Eyepatch*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_386/*A wise man once said:*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_387/*Everyone thinks I'm just a one-eyed bloody monster, god damnit... (sobbing)*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_388/*Explosion damage is also applied when performing jump attacks*/, //tr + rarity = 0, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + new BaseItem(new Stat[][] + { + new [] {RANGED_ARMOR_PIERCING}, + new [] {AGILITY}, + new [] {BASE_RANGED_DAMAGE,RANGED_DAMAGE_INCREASE}, + new [] {THROWN_SPEAR_DAMAGE}, + new [] {PROJECTILE_SPEED}, + new [] {ALL_ATTRIBUTES,PROJECTILE_SIZE,LESSERAGILITY}, + new [] {ENERGY_ON_HIT,VITALITY,LIFE_ON_HIT } + }) + { + name = Translations.ItemDataBase_ItemDefinitions_389/*Javelin*/, //tr + rarity = 5, + minLevel = 30, + maxLevel = 34, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Polearm, + icon = Res.ResourceLoader.GetTexture(181), + }; + new BaseItem(new Stat[][] + { + new [] {STRENGTH}, + new [] {MAX_LIFE, VITALITY,MAX_LIFE_MULT}, + new [] {MELEE_ARMOR_PIERCING, MELEE_DAMAGE_INCREASE,BASE_MELEE_DAMAGE}, + new [] {MELEE_DAMAGE_INCREASE,BASE_MELEE_DAMAGE}, + new [] {ATTACKSPEED, CRIT_DAMAGE,CRIT_CHANCE}, + new [] {MAX_ENERGY_FROM_AGILITY,MAX_ENERGY_MULT,ENERGY_ON_HIT,LIFE_ON_HIT,LIFE_REGEN_BASE,LIFE_REGEN_MULT,STAMINA_REGEN_BASE,STAMINA_AND_ENERGY_REGEN_MULT}, + new [] {ARMOR,THORNS,DAMAGE_REDUCTION,MAX_LIFE_MULT}, + new [] {ALL}, + new [] {ALL}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_390/*Warplate*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_391/*Enchanted with the power of the GOD's armor. It's purpose? Hit harder, daddy.*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_392/*Strength comes from the power of will, the stronger the will the stronger you are*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + { + var SomeItem = new BaseItem(new Stat[][] + { + new [] {STRENGTH}, + new [] {MAX_LIFE, VITALITY,MAX_HEALTH_FROM_VITALITY,MAX_LIFE_MULT}, + new [] {MELEE_ARMOR_PIERCING, MELEE_DAMAGE_INCREASE,BASE_MELEE_DAMAGE,ATTACKSPEED}, + new [] {SPELL_COST_REDUCTION, CRIT_DAMAGE,CRIT_CHANCE}, + new [] {ALL}, + new [] {STRENGTH, THORNS}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_393/*Torso of Strength*/, //tr + + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + SomeItem.statSlots[0][0].multipier = 2; + } + { + var demoVestItem = new BaseItem(new Stat[][] + { + new [] {EXPLOSION_DAMAGE}, + new [] {AGILITY,INTELLIGENCE, ALL_ATTRIBUTES}, + new [] {MAX_LIFE, VITALITY, LIFE_ON_HIT}, + new [] {ALL_RECOVERY}, + new [] {ALL}, + new [] {MELEE_WEAPON_RANGE,ENERGY_ON_HIT,ARMOR_PIERCING, DODGE_CHANCE}, + new [] {MOVEMENT_SPEED,BLOCK,LOOT_QUANTITY}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_394/*Demoman's Vest*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_395/*What makes me a good demoman? If I were a bad demoman, I wouldn't be sittin' here discussin' it with you, now would I?! LET'S DO IT! Not one of you's gonna survive this! One crossed wire, one wayward pinch of potassium chlorate, one errant twitch, and KA-BLOOIE! I got a manky eye. I'm a black Scottish cyclops. They got more fecking sea monsters in the great Lochett Ness than they got the likes of me. So! T'all you fine dandies, so proud, so cocksure, prancin' about with your heads full of eyeballs... come and get me, I say! I'll be waitin' on you with a whiff of the old brimstone! I'm a Grimm bloody fable with an unhappy bloody end! Oh, they're going to have to glue you back together...IN HELL!*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_392/*Strength comes from the power of will, the stronger the will the stronger you are*/, //tr + rarity = 5, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + demoVestItem.statSlots[0][0].multipier = 7; + + } + new BaseItem(new Stat[][] + { + new [] {STRENGTH,ALL_ATTRIBUTES,BASE_MELEE_DAMAGE}, + new [] {MAX_LIFE, VITALITY,DAMAGE_REDUCTION,MELEE_WEAPON_RANGE}, + new [] {MELEE_ARMOR_PIERCING, MELEE_DAMAGE_INCREASE}, + new [] {MELEE_DAMAGE_INCREASE,MELEE_DMG_FROM_STR}, + new [] {SPELL_COST_REDUCTION, CRIT_DAMAGE}, + new [] {ALL}, + new [] {STRENGTH,THORNS,BASE_MELEE_DAMAGE,CRIT_CHANCE,ATTACKSPEED,MELEE_WEAPON_RANGE}, + new [] {ARMOR}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_396/*Brawler's Gloves*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new Stat[][] + { + new [] {ALL_ATTRIBUTES,STRENGTH,AGILITY,INTELLIGENCE}, + new [] {MAX_LIFE, VITALITY,STRENGTH,INTELLIGENCE}, + new [] {MELEE_ARMOR_PIERCING, MELEE_DAMAGE_INCREASE,RANGED_DAMAGE_INCREASE,BASE_RANGED_DAMAGE,RANGED_ARMOR_PIERCING}, + new [] {SPELL_COST_REDUCTION, CRIT_DAMAGE,CRIT_CHANCE,SPELL_DAMAGE_MULTIPLIER,COOLDOWN_REDUCTION}, + new [] {ARMOR_PIERCING}, + new [] {ALL}, + new [] {ARMOR,DAMAGE_REDUCTION,ELITE_DAMAGE_REDUCTION,VITALITY,LESSERVITALITY}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_397/*Nail Gloves*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_398/*Enchanted with the power of penetration. It's purpose? Hit harder.*/, //tr + rarity = 3, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + + new BaseItem(new Stat[][] + { + new [] {ATTACKSPEED}, + new [] {RANGED_DAMAGE_INCREASE,RANGED_DMG_FROM_AGI}, + new [] {BASE_RANGED_DAMAGE}, + new [] {BASE_RANGED_DAMAGE,NONE}, + new [] {PROJECTILE_SIZE,LESSERAGILITY,AGILITY}, + new [] {PROJECTILE_SPEED,CRIT_CHANCE,CRIT_DAMAGE}, + new [] {AGILITY,NONE}, + new [] {RANGED_ARMOR_PIERCING, ARMOR_PIERCING,ENERGY_ON_HIT}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_399/*Hand-held Ballista*/, //tr + rarity = 5, + minLevel = 10, + maxLevel = 12, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Greatbow, + icon = Res.ResourceLoader.GetTexture(170), + + }.statSlots[0][0].multipier = -2f; + + new BaseItem(new Stat[][] + { + new [] {STRENGTH,LESSERSTRENGTH}, + new [] {MAX_LIFE, VITALITY,MELEE_DMG_FROM_STR,ARMOR}, + new [] {MELEE_ARMOR_PIERCING, MELEE_DAMAGE_INCREASE}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_400/*Kuldars's Scarf*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_401/*Strength comes from the power of will*/, //tr + rarity = 2, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(100), + }; + new BaseItem(new Stat[][] + { + new [] {MELEE_DAMAGE_INCREASE,MELEE_DMG_FROM_STR}, + new [] {MAX_LIFE, VITALITY,MELEE_DAMAGE_INCREASE,BASE_MELEE_DAMAGE}, + new [] {MELEE_ARMOR_PIERCING, MELEE_DAMAGE_INCREASE,MELEE_WEAPON_RANGE,ARMOR}, + new [] {SPELL_COST_REDUCTION, CRIT_DAMAGE,CRIT_CHANCE}, + new [] {ALL}, + new [] {STRENGTH,LESSERSTRENGTH}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_402/*Sword Devil's Scarf*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(100), + }; + new BaseItem(new Stat[][] + { + new [] {STRENGTH}, + new [] {MAX_LIFE, VITALITY}, + new [] {MELEE_ARMOR_PIERCING, MELEE_DAMAGE_INCREASE}, + new [] {SPELL_COST_REDUCTION, CRIT_DAMAGE}, + new [] {STRENGTH}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_403/*Peasant's Scarf*/, //tr + rarity = 3, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(100), + }; + new BaseItem(new Stat[][] + { + new [] {EXPLOSION_DAMAGE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {EXPLOSION_DAMAGE}, + new [] {EXPLOSION_DAMAGE}, + new [] {EXPLOSION_DAMAGE,NONE}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_404/*Bombastinc Choker*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(100), + }.statSlots[0][0].multipier = 7f; + new BaseItem(new Stat[][] + { + new [] {STRENGTH,VITALITY,AGILITY,ALL_ATTRIBUTES,INTELLIGENCE}, + new [] {MAX_ENERGY_FROM_AGILITY,MELEE_DMG_FROM_STR,SPELL_DMG_FROM_INT,RANGED_DMG_FROM_AGI,MAX_HEALTH_FROM_VITALITY}, + new [] {ARMOR,DAMAGE_REDUCTION}, + new [] { CRIT_CHANCE, CRIT_DAMAGE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {EXPLOSION_DAMAGE}, + new [] {EXPLOSION_DAMAGE,NONE}, + new [] {EXPLOSION_DAMAGE,NONE}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_405/*Explosive Touch*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_406/*Enchanted with the power of the explosions armor. It's purpose? Become the true explosion master*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_407/*Strength comes from the power of will, the stronger the will the stronger the explosion*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new Stat[][] + { + new [] {ARMOR}, + new [] {MAX_LIFE, VITALITY}, + new [] {CRIT_CHANCE, CRIT_DAMAGE,ATTACKSPEED,BASE_SPELL_DAMAGE,STAMINA_REGEN_BASE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL_ATTRIBUTES}, + new [] {EXPLOSION_DAMAGE}, + new [] {EXPLOSION_DAMAGE}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_408/*Volatile Bracers*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_406/*Enchanted with the power of the explosions armor. It's purpose? Become the true explosion master*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_407/*Strength comes from the power of will, the stronger the will the stronger the explosion*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + }; + new BaseItem(new Stat[][] + { + new [] {ARMOR}, + new [] {MAX_LIFE, VITALITY}, + new [] {CRIT_CHANCE, CRIT_DAMAGE,ATTACKSPEED,BASE_SPELL_DAMAGE,STAMINA_REGEN_BASE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {EMPTYSOCKET}, + new [] {EMPTYSOCKET}, + new [] {EXPLOSION_DAMAGE}, + new [] {EXPLOSION_DAMAGE}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_409/*Volatile Helmet*/, //tr + + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + new BaseItem(new Stat[][] + { + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {MAX_LIFE, VITALITY,ARMOR,MAX_LIFE_MULT,MAX_ENERGY_MULT,MAX_HEALTH_FROM_VITALITY,THORNS,ELITE_DAMAGE_REDUCTION}, + new [] {JUMP_POWER}, + new [] {MOVEMENT_SPEED}, + new [] {EMPTYSOCKET}, + new [] {EMPTYSOCKET}, + new [] {EXPLOSION_DAMAGE}, + new [] {EXPLOSION_DAMAGE}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_410/*Gunpowder filled socks*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }; + new BaseItem(new Stat[][] + { + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {MAX_LIFE, VITALITY,ARMOR,MAX_LIFE_MULT,MAX_ENERGY_MULT,MAX_HEALTH_FROM_VITALITY,THORNS,ELITE_DAMAGE_REDUCTION}, + new [] {EMPTYSOCKET}, + new [] {EMPTYSOCKET}, + new [] {EXPLOSION_DAMAGE}, + new [] {EXPLOSION_DAMAGE}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_411/*Red Skirt*/, //tr + rarity = 5, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + new BaseItem(new Stat[][] + { + new [] {ALL}, + new [] {MAX_LIFE, VITALITY,ARMOR}, + new [] {MELEE_ARMOR_PIERCING, RANGED_ARMOR_PIERCING}, + new [] {ARMOR, ALL_ATTRIBUTES,VITALITY,LESSERVITALITY}, + new [] {EXTRA_CARRIED_STICKS,EXTRA_CARRIED_ROCKS,EXTRA_CARRIED_ROPES}, + new [] {EXPLOSION_DAMAGE}, + new [] {EXPLOSION_DAMAGE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_412/*Gunpowder Boxers*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + + new BaseItem(new Stat[][] + { + new [] {EXPLOSION_DAMAGE}, + new [] {EXPLOSION_DAMAGE}, + new [] {EXPLOSION_DAMAGE}, + new [] {EXPLOSION_DAMAGE}, + new [] {EXPLOSION_DAMAGE}, + new [] {EXPLOSION_DAMAGE}, + new [] {EXPLOSION_DAMAGE,NONE}, + new [] {EXPLOSION_DAMAGE,NONE}, + new [] {ARMOR}, + new [] {MAX_LIFE_MULT}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_413/*Jihad Vest*/, //tr + rarity = 5, + minLevel = 1, + maxLevel = 4, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + + new BaseItem(new Stat[][] + { + new [] {CRIT_CHANCE}, + new [] {LOOT_QUANTITY,NONE,EXP_GAIN_MULT}, + new [] {RANGED_DAMAGE_INCREASE,MELEE_DAMAGE_INCREASE}, + new [] {STRENGTH,AGILITY}, + new [] {ALL}, + new [] {CHANCE_ON_HIT_TO_BLEED}, + new [] {CHANCE_ON_HIT_TO_SLOW}, + new [] {CHANCE_ON_HIT_TO_WEAKEN}, + new [] {MAX_ENERGY_FROM_AGILITY,FIRE_DAMAGE,CRIT_DAMAGE,RANGED_DMG_FROM_AGI,MELEE_DMG_FROM_STR}, + + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_414/*Ring of Fortune*/, //tr + rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 10, + maxLevel = 14, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + new BaseItem(new Stat[][] + { + new [] {SPELL_DAMAGE_MULTIPLIER}, + new [] {INTELLIGENCE}, + new [] {COOLDOWN_REDUCTION}, + new [] {ALL_ATTRIBUTES, INTELLIGENCE,SPELL_DAMAGE_MULTIPLIER}, + new [] {SPELL_DMG_FROM_INT,MAX_ENERGY_FROM_AGILITY}, + new [] {BASE_SPELL_DAMAGE}, + new [] {MAX_ENERGY_MULT,ENERGY_ON_HIT,ENERGY_REGEN_BASE}, + new [] {FIRE_DAMAGE,SPELL_COST_REDUCTION,SPELL_COST_TO_STAMINA}, + + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_415/*Mana Ring*/, //tr + rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 10, + maxLevel = 14, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + new BaseItem(new Stat[][] + { + new [] {MELEE_DMG_FROM_STR,ALL_ATTRIBUTES,STAMINA_REGEN_BASE,STAMINA_AND_ENERGY_REGEN_MULT,DODGE_CHANCE}, + new [] {STRENGTH,LESSERSTRENGTH,VITALITY,ARMOR}, + new [] {MELEE_WEAPON_RANGE,BASE_RANGED_DAMAGE,BASE_MELEE_DAMAGE}, + new [] {VITALITY}, + new [] {MAX_HEALTH_FROM_VITALITY,MAX_ENERGY_FROM_AGILITY}, + new [] {LIFE_REGEN_BASE}, + new [] {LIFE_ON_HIT}, + new [] {ENERGY_ON_HIT,ENERGY_REGEN_BASE,INTELLIGENCE,AGILITY}, + new [] {MAX_LIFE}, + new [] {MAX_LIFE_MULT,CRIT_CHANCE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_416/*Life Ring*/, //tr + rarity = 6, //range 0-7, 0 is most common, 7 is ultra rare + minLevel = 10, + maxLevel = 14, + canConsume = false, + stackSize = 1, //stacking in inventory like in mc, one means single item + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + new BaseItem(new Stat[][] + { + new [] {STRENGTH}, + new [] {MOVEMENT_SPEED,DODGE_CHANCE,DAMAGE_REDUCTION}, + new [] {VITALITY,MAX_HEALTH_FROM_VITALITY,MAX_LIFE,MAX_LIFE_MULT,ARMOR}, + new [] {INTELLIGENCE,MAX_ENERGY_FROM_AGILITY,MAX_ENERGY_MULT,MAX_ENERGY,BASE_MELEE_DAMAGE,MELEE_DAMAGE_INCREASE,ARMOR,DAMAGE_REDUCTION}, + new [] {MELEE_ARMOR_PIERCING,MELEE_DAMAGE_INCREASE}, + new [] {ARMOR,ATTACKSPEED,STRENGTH}, + new [] {BASE_MELEE_DAMAGE}, + new [] {BASE_MELEE_DAMAGE,MELEE_DAMAGE_INCREASE}, + new [] {MELEE_DAMAGE_INCREASE,MELEE_DMG_FROM_STR}, + new [] {CRIT_CHANCE,MELEE_WEAPON_RANGE,ATTACKSPEED}, + new [] {CRIT_DAMAGE, MELEE_DAMAGE_INCREASE, STRENGTH}, + new [] {ENERGY_ON_HIT,ENERGY_REGEN_BASE,MAX_LIFE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_417/*Moritz's Gear*/, //tr + rarity = 6, + minLevel = 5, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + new BaseItem(new Stat[][] + { + new [] {STRENGTH,BASE_MELEE_DAMAGE,MELEE_DAMAGE_INCREASE,ATTACKSPEED}, + new [] {MOVEMENT_SPEED,DODGE_CHANCE,DAMAGE_REDUCTION}, + new [] {VITALITY,MAX_HEALTH_FROM_VITALITY,MAX_LIFE,MAX_LIFE_MULT,MELEE_ARMOR_PIERCING}, + new [] {INTELLIGENCE,STRENGTH,CRIT_DAMAGE,MAX_ENERGY_MULT,MAX_ENERGY}, + new [] {BASE_MELEE_DAMAGE}, + new [] {BASE_MELEE_DAMAGE,MELEE_DAMAGE_INCREASE}, + new [] {MELEE_DAMAGE_INCREASE,MELEE_DMG_FROM_STR}, + new [] {CRIT_CHANCE,MELEE_WEAPON_RANGE}, + new [] {CRIT_DAMAGE, MELEE_DAMAGE_INCREASE, STRENGTH}, + new [] {ENERGY_ON_HIT,ENERGY_REGEN_BASE,MAX_LIFE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_418/*Band of Hurting*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_419/*A ring for a warrior*/, //tr + rarity = 6, + minLevel = 5, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), //icon ids, don't worry about that + }; + + new BaseItem(new Stat[][] + { + new [] {AGILITY,RANGED_DAMAGE_INCREASE}, + new [] {ALL_ATTRIBUTES, ARMOR,MAX_LIFE_MULT}, + new [] {CRIT_CHANCE}, + new [] {CRIT_DAMAGE,NONE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_420/*Straw Hat*/, //tr + rarity = 2, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + new BaseItem(new Stat[][] + { + new [] {INTELLIGENCE}, + new [] {ALL_ATTRIBUTES, ARMOR,ENERGY_ON_HIT}, + new [] {BASE_SPELL_DAMAGE}, + new [] {FIRE_DAMAGE,SPELL_DAMAGE_MULTIPLIER,SPELL_COST_REDUCTION}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_318/*Hood*/, //tr + rarity = 2, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + new BaseItem(new Stat[][] + { + new [] {THROWN_SPEAR_DAMAGE}, + new [] {AGILITY}, + new [] {STAMINA_REGEN_BASE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_421/*Rusty Javelin*/, //tr + rarity = 3, + minLevel = 10, + maxLevel = 16, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Polearm, + icon = Res.ResourceLoader.GetTexture(181), + }; + new BaseItem(new Stat[][] + { + new [] {INTELLIGENCE}, + new [] {DODGE_CHANCE,DAMAGE_REDUCTION}, + new [] {VITALITY,MAX_HEALTH_FROM_VITALITY,MAX_LIFE,MAX_LIFE_MULT}, + new [] {SPELL_DMG_FROM_INT}, + new [] {SPELL_COST_REDUCTION,COOLDOWN_REDUCTION}, + new [] {SPELL_COST_REDUCTION,COOLDOWN_REDUCTION}, + new [] {ENERGY_REGEN_BASE,MAX_ENERGY_MULT,MAX_ENERGY_FROM_AGILITY}, + new [] {BASE_SPELL_DAMAGE,SPELL_DAMAGE_MULTIPLIER,INTELLIGENCE}, + new [] {BASE_SPELL_DAMAGE,SPELL_DAMAGE_MULTIPLIER,INTELLIGENCE}, + new [] {BASE_SPELL_DAMAGE,SPELL_DAMAGE_MULTIPLIER,INTELLIGENCE}, + new [] {BASE_SPELL_DAMAGE,SPELL_DAMAGE_MULTIPLIER,INTELLIGENCE}, + new [] {ENERGY_ON_HIT,ENERGY_REGEN_BASE,MAX_LIFE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_422/*Star Robe*/, //tr + rarity = 6, + minLevel = 5, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + new BaseItem(new Stat[][] + { + new [] {ATTACKSPEED}, + new [] {BASE_SPELL_DAMAGE}, + new [] {DODGE_CHANCE,DAMAGE_REDUCTION,MELEE_WEAPON_RANGE,ARMOR_PIERCING,FIRE_DAMAGE,CRIT_CHANCE}, + new [] {VITALITY,MAX_HEALTH_FROM_VITALITY,MAX_LIFE,MAX_LIFE_MULT,LIFE_REGEN_BASE,LIFE_ON_HIT}, + new [] {SPELL_DMG_FROM_INT}, + new [] {SPELL_COST_REDUCTION,COOLDOWN_REDUCTION,CRIT_CHANCE,CRIT_DAMAGE}, + new [] {SPELL_COST_REDUCTION,COOLDOWN_REDUCTION,SPELL_COST_TO_STAMINA,MAX_ENERGY_MULT,LIFE_REGEN_MULT}, + new [] {ENERGY_REGEN_BASE,MAX_ENERGY_MULT,MAX_ENERGY_FROM_AGILITY}, + new [] {INTELLIGENCE,STAMINA_REGEN_BASE,STAMINA_AND_ENERGY_REGEN_MULT}, + new [] {BASE_SPELL_DAMAGE,SPELL_DAMAGE_MULTIPLIER,INTELLIGENCE,BASE_MELEE_DAMAGE,ALL_ATTRIBUTES}, + new [] {BASE_SPELL_DAMAGE,SPELL_DAMAGE_MULTIPLIER,INTELLIGENCE,DAMAGE_REDUCTION}, + new [] {ENERGY_ON_HIT,ENERGY_REGEN_BASE,MAX_LIFE,MASSACRE_DURATION,LOOT_QUANTITY,EXPLOSION_DAMAGE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_423/*Anger*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_424/*Downscaled version of Greatsword Rage, made to be wielded by flimsy wizards*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_425(15)/*Increases maximum stacks of frenzy by 10*/, //tr + rarity = 7, + minLevel = 6, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.LongSword, + icon = Res.ResourceLoader.GetTexture(88), + onEquipCallback = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Add(15), + onUnequipCallback = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Sub(15), + }.statSlots[0][0].multipier = 1.5f; + + + new BaseItem(new Stat[][] + { + new[] { ARMOR }, + new[] { MOVEMENT_SPEED}, + new[] { SPELL_DMG_FROM_INT }, + new[] { SPELL_COST_REDUCTION,SPELL_COST_TO_STAMINA,ARMOR,ALL_ATTRIBUTES}, + new[] { BASE_SPELL_DAMAGE, SPELL_DAMAGE_MULTIPLIER, INTELLIGENCE, ALL_ATTRIBUTES }, + new[] { BASE_SPELL_DAMAGE, SPELL_DAMAGE_MULTIPLIER, INTELLIGENCE, DAMAGE_REDUCTION }, + new[] { VITALITY, MAX_HEALTH_FROM_VITALITY, MAX_LIFE, MAX_LIFE_MULT, LIFE_REGEN_BASE, LIFE_ON_HIT }, + new[] { SPELL_COST_REDUCTION, COOLDOWN_REDUCTION, CRIT_CHANCE, CRIT_DAMAGE, ARMOR,MAX_HEALTH_FROM_VITALITY }, + new[] { SPELL_COST_REDUCTION, COOLDOWN_REDUCTION, SPELL_COST_TO_STAMINA, MAX_ENERGY_MULT, LIFE_REGEN_MULT }, + new[] { ENERGY_REGEN_BASE, MAX_ENERGY_MULT, MAX_ENERGY_FROM_AGILITY }, + new[] { INTELLIGENCE, STAMINA_REGEN_BASE, STAMINA_AND_ENERGY_REGEN_MULT, ALL_ATTRIBUTES, ALL_RECOVERY }, + new[] { ENERGY_ON_HIT, ENERGY_REGEN_BASE, MAX_LIFE, MASSACRE_DURATION, LOOT_QUANTITY, EXPLOSION_DAMAGE }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_426/*Yuki-Onna Strides*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_433("50%", "300%")/*Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by 50%*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_428/*Boots looted off a snow demon*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_429("50%")/*Increses snowstorm damage by 50%*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + onEquipCallback = () => AkagiSet.Equip(), + onUnequipCallback = () => AkagiSet.Unequip(), + }; + + new BaseItem(new Stat[][] + { + new[] { INTELLIGENCE,NONE }, + new[] { ARMOR }, + new[] { ALL_RECOVERY,DODGE_CHANCE,SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE}, + new[] { SPELL_DMG_FROM_INT,DAMAGE_REDUCTION }, + new[] { SPELL_COST_REDUCTION,SPELL_COST_TO_STAMINA,ARMOR,ALL_ATTRIBUTES}, + new[] { ARMOR,DAMAGE_REDUCTION ,ELITE_DAMAGE_REDUCTION}, + new[] { INTELLIGENCE, MAX_LIFE,LIFE_REGEN_BASE,SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE }, + new[] { VITALITY, MAX_LIFE, MAX_LIFE_MULT, LIFE_REGEN_BASE, LIFE_ON_HIT }, + new[] { SPELL_COST_REDUCTION, COOLDOWN_REDUCTION, CRIT_CHANCE, CRIT_DAMAGE, ARMOR }, + new[] { SPELL_COST_REDUCTION, COOLDOWN_REDUCTION, SPELL_COST_TO_STAMINA, MAX_ENERGY_MULT, LIFE_REGEN_MULT,ELITE_DAMAGE_REDUCTION }, + new[] { ENERGY_REGEN_BASE, MAX_ENERGY_MULT, MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY }, + new[] { INTELLIGENCE, STAMINA_REGEN_BASE, STAMINA_AND_ENERGY_REGEN_MULT, ALL_ATTRIBUTES, ALL_RECOVERY }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_430/*Yuki-Onna Greaves*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_433("50%", "300%")/*Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by 50%*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_429("50%")/*Increses snowstorm damage by 50%*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + onEquipCallback = () => AkagiSet.Equip(), + onUnequipCallback = () => AkagiSet.Unequip(), + }; + + new BaseItem(new Stat[][] + { + new[] { INTELLIGENCE,NONE }, + new[] { ARMOR }, + new[] { ALL_RECOVERY,DODGE_CHANCE}, + new[] { SPELL_DMG_FROM_INT,DAMAGE_REDUCTION }, + new[] { SPELL_COST_REDUCTION,SPELL_COST_TO_STAMINA,ARMOR,ALL_ATTRIBUTES}, + new[] { ARMOR,DAMAGE_REDUCTION ,ELITE_DAMAGE_REDUCTION,SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE}, + new[] { INTELLIGENCE, MAX_LIFE,LIFE_REGEN_BASE,SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE }, + new[] { VITALITY, MAX_LIFE, MAX_LIFE_MULT, LIFE_REGEN_BASE, LIFE_ON_HIT }, + new[] { SPELL_COST_REDUCTION, COOLDOWN_REDUCTION, CRIT_CHANCE, CRIT_DAMAGE, ARMOR }, + new[] { SPELL_COST_REDUCTION, COOLDOWN_REDUCTION, SPELL_COST_TO_STAMINA, MAX_ENERGY_MULT, LIFE_REGEN_MULT,ELITE_DAMAGE_REDUCTION }, + new[] { ENERGY_REGEN_BASE, MAX_ENERGY_MULT, MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY }, + new[] { INTELLIGENCE, STAMINA_REGEN_BASE, STAMINA_AND_ENERGY_REGEN_MULT, ALL_ATTRIBUTES, ALL_RECOVERY }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_431/*Yuki-Onna Kimono*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_433("50%", "300%")/*Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by 50%*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_429("50%")/*Increses snowstorm damage by 50%*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + onEquipCallback = () => AkagiSet.Equip(), + onUnequipCallback = () => AkagiSet.Unequip(), + }; + + new BaseItem(new Stat[][] + { + new[] { INTELLIGENCE,NONE }, + new[] { ARMOR }, + new[] { CRIT_CHANCE,CRIT_DAMAGE}, + new[] { SPELL_DMG_FROM_INT }, + new[] { SPELL_COST_REDUCTION,SPELL_COST_TO_STAMINA,ARMOR,ALL_ATTRIBUTES}, + new[] { ARMOR, SPELL_DAMAGE_MULTIPLIER, BASE_SPELL_DAMAGE, ELITE_DAMAGE_REDUCTION}, + new[] { INTELLIGENCE, MAX_LIFE,LIFE_REGEN_BASE }, + new[] { SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE, MAX_LIFE, MAX_LIFE_MULT, LIFE_REGEN_BASE, LIFE_ON_HIT }, + new[] { SPELL_COST_REDUCTION, COOLDOWN_REDUCTION, CRIT_CHANCE, CRIT_DAMAGE, ARMOR }, + new[] { SPELL_COST_REDUCTION, COOLDOWN_REDUCTION, SPELL_COST_TO_STAMINA, MAX_ENERGY_MULT, LIFE_REGEN_MULT,ELITE_DAMAGE_REDUCTION }, + new[] { ENERGY_REGEN_BASE, MAX_ENERGY_MULT, MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY }, + new[] { INTELLIGENCE, STAMINA_REGEN_BASE, STAMINA_AND_ENERGY_REGEN_MULT, ALL_ATTRIBUTES, ALL_RECOVERY }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_432/*Yuki-Onna's Headdress*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_433("50%", "300%")/*Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by 50% and damage is increased by 300%*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_429("50%")/*Increses snowstorm damage by 50%*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + onEquipCallback = () => AkagiSet.Equip(), + onUnequipCallback = () => AkagiSet.Unequip(), + }; + + new BaseItem(new Stat[][] + { + new[] { INTELLIGENCE,NONE }, + new[] { ARMOR }, + new[] { CRIT_CHANCE,CRIT_DAMAGE}, + new[] { SPELL_DMG_FROM_INT }, + new[] { SPELL_COST_REDUCTION,SPELL_COST_TO_STAMINA,ARMOR,ALL_ATTRIBUTES}, + new[] { ARMOR, SPELL_DAMAGE_MULTIPLIER, BASE_SPELL_DAMAGE, ELITE_DAMAGE_REDUCTION}, + new[] { INTELLIGENCE, MAX_LIFE,LIFE_REGEN_BASE }, + new[] { SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE, MAX_LIFE, MAX_LIFE_MULT, LIFE_REGEN_BASE, LIFE_ON_HIT }, + new[] { SPELL_COST_REDUCTION, COOLDOWN_REDUCTION, CRIT_CHANCE, CRIT_DAMAGE, ARMOR }, + new[] { SPELL_COST_REDUCTION, COOLDOWN_REDUCTION, SPELL_COST_TO_STAMINA, MAX_ENERGY_MULT, LIFE_REGEN_MULT,ELITE_DAMAGE_REDUCTION }, + new[] { ENERGY_REGEN_BASE, MAX_ENERGY_MULT, MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY }, + new[] { INTELLIGENCE, STAMINA_REGEN_BASE, STAMINA_AND_ENERGY_REGEN_MULT, ALL_ATTRIBUTES, ALL_RECOVERY }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_434/*Lama Mega's Blood Bag*/, //tr + description = "", //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_435("15 000%", 15)/*Melee hits cause enemies to bleed for 100% of your health as damage for 15 seconds*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(100), + onEquipCallback = () => COTFEvents.Instance.OnHitMelee.AddListener(UniqueItemFunctions.EnemyBleedForPlayerHP), + onUnequipCallback = () => COTFEvents.Instance.OnHitMelee.RemoveListener(UniqueItemFunctions.EnemyBleedForPlayerHP), + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_436/*Socket Drill*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_437/*A convienient one use tool*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_438/*What's a drill doing here in a place full of primitive tribes?*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_439/*Adds one socket to an item, unless the item can't have any more sockets.*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 100, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(190), + onConsumeCallback = x => + { + int socketMax = StatActions.GetMaxSocketAmountOnItem(in x.type); + int socketCurrent = x.stats.Count(y => y.id >= 3000); + if (socketCurrent < socketMax) + { + x.stats.Add(new ItemStat(ItemDataBase.StatByID(3000))); + return true; + } + return false; + } + }; + new BaseItem(new Stat[][] + { + new[] { MOVEMENT_SPEED}, + new[] { INTELLIGENCE,STRENGTH,AGILITY }, + new[] { ALL_ATTRIBUTES,VITALITY }, + new[] { ARMOR }, + new[] { NONE,JUMP_POWER}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_440/*Moonwalkers*/, //tr + description = "", //tr + lore = Translations.ItemDataBase_ItemDefinitions_441/*Cha cha real smooth.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_442/*Inverts movement*/, //tr + rarity = 3, + minLevel = 16, + maxLevel = 18, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + onEquipCallback = () => ModdedPlayer.Stats.movementSpeed.Multiply(-1.2f), + onUnequipCallback = () => ModdedPlayer.Stats.movementSpeed.Divide(-1.2f) + }.statSlots[0][0].multipier = 3; + + new BaseItem(new Stat[][] + { + new[] { JUMP_POWER}, + new[] { LESSERAGILITY}, + new[] { LESSERARMOR}, + new[] { PROJECTILE_SIZE,PROJECTILE_SIZE,ALL_ATTRIBUTES,LIFE_REGEN_MULT,LIFE_REGEN_BASE,LESSERVITALITY,AGILITY}, + new[] { RANGED_ARMOR_PIERCING,RANGED_DAMAGE_INCREASE,BASE_RANGED_DAMAGE,ATTACKSPEED}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_443/*Rabbit Ears Hairband*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_444/*Cute*/, //tr + lore = "", //tr + rarity = 3, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + new BaseItem(new Stat[][] + { + new[] { JUMP_POWER}, + new[] { AGILITY}, + new[] { ARMOR}, + new[] { PROJECTILE_SIZE,PROJECTILE_SIZE,ALL_ATTRIBUTES,LIFE_REGEN_MULT,LIFE_REGEN_BASE,VITALITY,INTELLIGENCE,AGILITY}, + new[] { RANGED_ARMOR_PIERCING,RANGED_DAMAGE_INCREASE,BASE_RANGED_DAMAGE,ATTACKSPEED}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_445/*Bunny Ears Hairband*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_444/*Cute*/, //tr + lore = "", //tr + rarity = 4, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + new BaseItem(new int[][] + { + new int[] {11}, + new int[] {16}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000}, + new int[] {3000,0}, + new int[] {3000,0}, + new int[] {3000,0}, + new int[] {3000,0}, + new int[] {3000,0}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_446/*Iron plate full of holes*/, //tr + description = "", //tr + lore = Translations.ItemDataBase_ItemDefinitions_447/*The integrity of this item is questionable*/, //tr + rarity = 3, + minLevel = 50, + maxLevel = 60, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + new BaseItem(new Stat[][] + { + new [] {ALL}, + new [] {BASE_SPELL_DAMAGE,BASE_RANGED_DAMAGE,BASE_MELEE_DAMAGE}, + new [] {SPELL_DMG_FROM_INT,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,DAMAGE_REDUCTION}, + new [] {ALL_ATTRIBUTES,AGILITY,STRENGTH,INTELLIGENCE,VITALITY}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_448/*Small Tribal Necklace*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_449(2)/*Increases maximum stacks of frenzy by 2*/, //tr + rarity = 4, + minLevel = 6, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(100), + onEquipCallback = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Add(2), + onUnequipCallback = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Sub(2), + }; + new BaseItem(new Stat[][] + { + new [] {ALL}, + new [] {ALL}, + new [] {BASE_SPELL_DAMAGE,BASE_RANGED_DAMAGE,BASE_MELEE_DAMAGE}, + new [] {SPELL_DMG_FROM_INT,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,DAMAGE_REDUCTION}, + new [] {ALL_ATTRIBUTES,AGILITY,STRENGTH,INTELLIGENCE,VITALITY}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_450/*Tribal Necklace*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_451(3)/*Increases maximum stacks of frenzy by 3*/, //tr + rarity = 4, + minLevel = 6, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(100), + onEquipCallback = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Add(3), + onUnequipCallback = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Sub(3), + }; + new BaseItem(new Stat[][] + { + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {BASE_SPELL_DAMAGE,BASE_RANGED_DAMAGE,BASE_MELEE_DAMAGE}, + new [] {SPELL_DMG_FROM_INT,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,DAMAGE_REDUCTION}, + new [] {ALL_ATTRIBUTES,AGILITY,STRENGTH,INTELLIGENCE,VITALITY}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_452/*Warlord Necklace*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_453(4)/*Increases maximum stacks of frenzy by 4*/, //tr + rarity = 5, + minLevel = 6, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(100), + onEquipCallback = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Add(4), + onUnequipCallback = () => ModdedPlayer.Stats.spell_frenzyMaxStacks.Sub(4), + }; + new BaseItem(new Stat[][] + { + new [] {ALL}, + new [] {ALL}, + new [] {MOVEMENT_SPEED,COOLDOWN_REDUCTION}, + new [] {JUMP_POWER,ATTACKSPEED,MOVEMENT_SPEED,ENERGY_REGEN_BASE}, + new [] {BASE_SPELL_DAMAGE,BASE_RANGED_DAMAGE,BASE_MELEE_DAMAGE,CRIT_CHANCE,CRIT_DAMAGE}, + new [] {ALL_ATTRIBUTES,AGILITY,STRENGTH,INTELLIGENCE,VITALITY}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_454/*Travel Band*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_455(25)/*The distance of blink is increased by 20 feet*/, //tr + rarity = 5, + minLevel = 5, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), + onEquipCallback = () => { ModdedPlayer.Stats.spell_blinkRange.Add(25); }, + onUnequipCallback = () => { ModdedPlayer.Stats.spell_blinkRange.Sub(25); }, + }; + + new BaseItem(new Stat[][] + { + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {COOLDOWN_REDUCTION,NONE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_456/*Destroyed Void Shard*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_457/*Only a fraction of its previous might remains*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_154/*A pedant of great power. Obtainable only from babies or crafting*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_458(1)/*Decrease the cooldown of one ability by 1 second whenever you hit something with melee or ranged attack.*/, //tr + rarity = 6, + minLevel = 80, + maxLevel = 90, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(101), + onEquipCallback = () => ModdedPlayer.Stats.i_infinityLoop.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.i_infinityLoop.value = false, + }; + new BaseItem(new int[][] + { + new int[] {25 }, + new int[] {18 }, + new int[] {2004 }, + new int[] {1,3,62,63,64}, + new int[] {53,16}, + new int[] {25 ,22,1,12,13,5,6}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_459/*Famine Hammer*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_163/*It's slow but with enough strength i can make it a very deadly tool*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_460("30%")/*Chance to weaken enemies, causing them to take more damage from all attacks, is increased by 30%*/, //tr + rarity = 4, + minLevel = 30, + maxLevel = 35, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Hammer, + icon = Res.ResourceLoader.GetTexture(109), + onEquipCallback = () => ModdedPlayer.Stats.chanceToWeaken.Add(0.3f), + onUnequipCallback = () => ModdedPlayer.Stats.chanceToWeaken.Sub(0.3f), + }; + + new BaseItem(new int[][] + { + new int[] {25 }, + new int[] {18 }, + new int[] {-1 }, + new int[] {2004 }, + new int[] {1,3,62,63,64}, + new int[] {53,16}, + new int[] {25 ,22,1,12,13,5,6}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_461/*Curse Hammer*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_462/*Omnious Weapon*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_463("45%")/*Chance to weaken enemies, causing them to take more damage from all attacks, is increased by 40%*/, //tr + rarity = 5, + minLevel = 30, + maxLevel = 35, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Hammer, + icon = Res.ResourceLoader.GetTexture(109), + onEquipCallback = () => ModdedPlayer.Stats.chanceToWeaken.Add(0.45f), + onUnequipCallback = () => ModdedPlayer.Stats.chanceToWeaken.Sub(0.45f), + }; + new BaseItem(new Stat[][] + { + new [] {ALL}, + new [] {ALL}, + new [] {MELEE_DAMAGE_INCREASE,MELEE_DMG_FROM_STR}, + new [] {STRENGTH}, + new [] {BASE_MELEE_DAMAGE}, + new [] {ATTACK_COST_REDUCTION,ATTACKSPEED,LIFE_ON_HIT,ENERGY_ON_HIT,NONE,NONE,NONE}, + new [] {ALL_ATTRIBUTES,VITALITY,MELEE_DAMAGE_INCREASE,MELEE_ARMOR_PIERCING}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_464/*Smasher*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_163/*It's slow but with enough strength i can make it a very deadly tool*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_465/*Smash damage is increased tripled*/, //tr + rarity = 5, + minLevel = 30, + maxLevel = 35, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Hammer, + icon = Res.ResourceLoader.GetTexture(109), + onEquipCallback = () => { ModdedPlayer.Stats.smashDamage.Multiply(3f); }, + onUnequipCallback = () => { ModdedPlayer.Stats.smashDamage.Divide(3f); }, + }; + new BaseItem(new Stat[][] + { + new [] {ALL}, + new [] {LIFE_ON_HIT}, + new [] {ENERGY_ON_HIT}, + new [] {STAMINA_AND_ENERGY_REGEN_MULT,MAX_ENERGY_MULT,MAX_LIFE_MULT}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_466/*Vampiric Band*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_467(1)/*Gain 1 stamina on ranged and melee hit or double that amount on critical hits*/, //tr + rarity = 3, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), + onEquipCallback = () => COTFEvents.Instance.OnHitEnemy.AddListener(UniqueItemFunctions.Gain1EnergyOnHit), + onUnequipCallback = () => COTFEvents.Instance.OnHitEnemy.RemoveListener(UniqueItemFunctions.Gain1EnergyOnHit), + }; + new BaseItem(new Stat[][] + { + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {LIFE_ON_HIT}, + new [] {CRIT_CHANCE,CRIT_DAMAGE}, + new [] {MELEE_DAMAGE_INCREASE,RANGED_DAMAGE_INCREASE,SPELL_DAMAGE_MULTIPLIER}, + new [] {ENERGY_ON_HIT}, + new [] {STAMINA_AND_ENERGY_REGEN_MULT,MAX_ENERGY_MULT,MAX_LIFE_MULT}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_468/*Vampire Ring*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_469(10)/*Gain 10 stamina on ranged and melee hit or double that amount on critical hits*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Ring, + icon = Res.ResourceLoader.GetTexture(90), + onEquipCallback = () => COTFEvents.Instance.OnHitEnemy.AddListener(UniqueItemFunctions.Gain10EnergyOnHit), + onUnequipCallback = () => COTFEvents.Instance.OnHitEnemy.RemoveListener(UniqueItemFunctions.Gain10EnergyOnHit), + }; + new BaseItem(new Stat[][] + { + new [] {SPELL_DAMAGE_MULTIPLIER,INTELLIGENCE,BASE_SPELL_DAMAGE}, + new [] {SPELL_DAMAGE_MULTIPLIER,INTELLIGENCE,BASE_SPELL_DAMAGE}, + new [] {VITALITY,LIFE_REGEN_BASE,LIFE_REGEN_MULT,INTELLIGENCE,AGILITY,STRENGTH,ALL_ATTRIBUTES}, + new [] {COOLDOWN_REDUCTION,SPELL_COST_REDUCTION,SPELL_COST_TO_STAMINA,INTELLIGENCE,DAMAGE_REDUCTION}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_470/*Tricksters Scarf*/, //tr + description = "", //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_471(1)/*Magic arrow shoots 1 additional arrow.*/, //tr + rarity = 4, + minLevel = 20, + maxLevel = 22, + canConsume = false, + stackSize = 1, + onEquipCallback = () => ModdedPlayer.Stats.spell_magicArrowVolleyCount.Add(1), + onUnequipCallback = () => ModdedPlayer.Stats.spell_magicArrowVolleyCount.Sub(1), + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(100) + }; + new BaseItem(new Stat[][] + { + new [] {SPELL_DAMAGE_MULTIPLIER,INTELLIGENCE,BASE_SPELL_DAMAGE}, + new [] {SPELL_DAMAGE_MULTIPLIER,INTELLIGENCE,BASE_SPELL_DAMAGE}, + new [] {VITALITY,LIFE_REGEN_BASE,LIFE_REGEN_MULT,INTELLIGENCE,AGILITY,STRENGTH,ALL_ATTRIBUTES}, + new [] {COOLDOWN_REDUCTION,SPELL_COST_REDUCTION,SPELL_COST_TO_STAMINA,INTELLIGENCE,DAMAGE_REDUCTION}, + new [] {INTELLIGENCE}, + new [] {ALL}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_472/*Magus' Necktie*/, //tr + description = "", //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_473(2)/*Magic arrow shoots 2 additional arrows.*/, //tr + rarity = 5, + minLevel = 50, + maxLevel = 52, + canConsume = false, + stackSize = 1, + onEquipCallback = () => ModdedPlayer.Stats.spell_magicArrowVolleyCount.Add(2), + onUnequipCallback = () => ModdedPlayer.Stats.spell_magicArrowVolleyCount.Sub(2), + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(100) + }; + new BaseItem(new int[][] + { + new int[] {23,26}, + new int[] {34,18,17,16,15,14,60,61,55,}, + new int[] {16,19,23,31,54,51,52,66,57}, + new int[] {2,3,4,5,6,7,8,9,10}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_474/*Discounted Knockoff Magic Quiver*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_475("15%")/*There's a 15% increased chance to not consume ammo when firing a projectile.*/, //tr + rarity = 3, + minLevel = 2, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Quiver, + icon = Res.ResourceLoader.GetTexture(98), + onEquipCallback = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Add(0.15f), + onUnequipCallback = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Sub(0.15f), + }; + new BaseItem(new int[][] + { + new int[] {23,26}, + new int[] {34,18,17,16,15,14,60,61,55,}, + new int[] {16,19,23,31,54,51,52,66,57}, + new int[] {2,48,0,0}, + new int[] {2,3,4,5,6,7,8,9,10}, + new int[] {2,1,5,6,0}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_476/*Magic Quiver*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_477("20%")/*There's a 20% increased chance to not consume ammo when firing a projectile.*/, //tr + rarity = 4, + minLevel = 2, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Quiver, + icon = Res.ResourceLoader.GetTexture(98), + onEquipCallback = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Add(0.2f), + onUnequipCallback = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Sub(0.2f), + }; + new BaseItem(new int[][] + { + new int[] {23,26}, + new int[] {23}, + new int[] {34,18,17,16,15,14,60,61,55,}, + new int[] {16,19,23,31,54,51,52,66,57}, + new int[] {2,48}, + new int[] {2,3,4,5,6,7,8,9,10}, + new int[] {2,1,5,6}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_478/*Improved Magic Quiver*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_479("25%")/*There's a 25% increased chance to not consume ammo when firing a projectile.*/, //tr + rarity = 5, + minLevel = 2, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Quiver, + icon = Res.ResourceLoader.GetTexture(98), + onEquipCallback = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Add(0.25f), + onUnequipCallback = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Sub(0.25f), + }; + new BaseItem(new int[][] + { + new int[] {23,26}, + new int[] {23}, + new int[] {34,18,17,16,15,14,60,61,55,}, + new int[] {16,19,23,31,54,51,52,66,57}, + new int[] {2,16,14}, + new int[] {2,3,4,5,6,7,8,9,10}, + new int[] {48}, + new int[] {-1}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_480/*Factory Quiver*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_481("40%")/*There's a 40% increased chance to not consume ammo when firing a projectile.*/, //tr + rarity = 6, + minLevel = 12, + maxLevel = 20, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Quiver, + icon = Res.ResourceLoader.GetTexture(98), + onEquipCallback = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Add(0.4f), + onUnequipCallback = () => ModdedPlayer.Stats.perk_projectileNoConsumeChance.Sub(0.4f), + }; + + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_482/*Enzyme STR/34*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_484/*Changes Vitality, Agility or Intelligence stat on an item to Strength or changes Ranged or Spell damage stat to Melee Damage*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 100, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(193), + onConsumeCallback = x => + { + if (x.isEquipped) + return false; + + var stats = x.stats.Where(y => y.id == (int)VITALITY || y.id == (int)INTELLIGENCE || y.id == (int)AGILITY + || y.id == (int)LESSERVITALITY || y.id == (int)LESSERINTELLIGENCE || y.id == (int)LESSERAGILITY + || y.id == (int)BASE_RANGED_DAMAGE || y.id == (int)BASE_SPELL_DAMAGE + || y.id == (int)RANGED_DAMAGE_INCREASE || y.id == (int)SPELL_DAMAGE_MULTIPLIER).ToArray(); + + int c = stats.Count(); + + + if (c == 0) + return false; + int i = UnityEngine.Random.Range(0, c); + ItemStat stat = stats[i]; + int index = x.stats.IndexOf(stat); + + ItemStat newStat; + Stat statID = (Stat)stat.id; + switch (statID) + { + case VITALITY: + case INTELLIGENCE: + case AGILITY: + newStat = new ItemStat(StatByID((int)STRENGTH)); + break; + case LESSERVITALITY: + case LESSERINTELLIGENCE: + case LESSERAGILITY: + newStat = new ItemStat(StatByID((int)LESSERSTRENGTH)); + break; + case BASE_RANGED_DAMAGE: + case BASE_SPELL_DAMAGE: + newStat = new ItemStat(StatByID((int)BASE_MELEE_DAMAGE)); + break; + case RANGED_DAMAGE_INCREASE: + case SPELL_DAMAGE_MULTIPLIER: + newStat = new ItemStat(StatByID((int)MELEE_DAMAGE_INCREASE)); + break; + default: + return false; + } + newStat.amount = stat.amount; + newStat.possibleStatsIndex = stat.possibleStatsIndex; + x.stats[index] = newStat; + return true; + } + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_485/*Enzyme INT/33*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_486/*Changes Vitality, Agility or Strength stat on an item to Intelligence or changes Ranged or Melee damage stat to Spell Damage*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 100, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(191), + onConsumeCallback = x => + { + if (x.isEquipped) + return false; + + var stats = x.stats.Where(y => y.id == (int)VITALITY || y.id == (int)STRENGTH || y.id == (int)AGILITY + || y.id == (int)LESSERVITALITY || y.id == (int)LESSERSTRENGTH || y.id == (int)LESSERAGILITY + || y.id == (int)BASE_RANGED_DAMAGE || y.id == (int)BASE_MELEE_DAMAGE + || y.id == (int)RANGED_DAMAGE_INCREASE || y.id == (int)MELEE_DAMAGE_INCREASE).ToArray(); + + int c = stats.Count(); + + + if (c == 0) + return false; + int i = UnityEngine.Random.Range(0, c); + ItemStat stat = stats[i]; + int index = x.stats.IndexOf(stat); + + ItemStat newStat; + Stat statID = (Stat)stat.id; + switch (statID) + { + case VITALITY: + case STRENGTH: + case AGILITY: + newStat = new ItemStat(StatByID((int)INTELLIGENCE)); + break; + case LESSERVITALITY: + case LESSERSTRENGTH: + case LESSERAGILITY: + newStat = new ItemStat(StatByID((int)LESSERINTELLIGENCE)); + break; + case BASE_RANGED_DAMAGE: + case BASE_MELEE_DAMAGE: + newStat = new ItemStat(StatByID((int)BASE_SPELL_DAMAGE)); + break; + case RANGED_DAMAGE_INCREASE: + case MELEE_DAMAGE_INCREASE: + newStat = new ItemStat(StatByID((int)SPELL_DAMAGE_MULTIPLIER)); + break; + default: + return false; + } + newStat.amount = stat.amount; + newStat.possibleStatsIndex = stat.possibleStatsIndex; + x.stats[index] = newStat; + return true; + } + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_487/*Enzyme AGI/39*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_488/*Changes Vitality, Intelligence or Strength stat on an item to Agility or changes Melee or Spell damage stat to Ranged Damage*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 100, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(192), + onConsumeCallback = x => + { + if (x.isEquipped) + return false; + + var stats = x.stats.Where(y => y.id == (int)VITALITY || y.id == (int)STRENGTH || y.id == (int)INTELLIGENCE + || y.id == (int)LESSERVITALITY || y.id == (int)LESSERSTRENGTH || y.id == (int)LESSERINTELLIGENCE + || y.id == (int)BASE_SPELL_DAMAGE || y.id == (int)BASE_MELEE_DAMAGE + || y.id == (int)SPELL_DAMAGE_MULTIPLIER || y.id == (int)MELEE_DAMAGE_INCREASE).ToArray(); + + int c = stats.Count(); + + + if (c == 0) + return false; + int i = UnityEngine.Random.Range(0, c); + ItemStat stat = stats[i]; + int index = x.stats.IndexOf(stat); + + ItemStat newStat; + Stat statID = (Stat)stat.id; + switch (statID) + { + case VITALITY: + case INTELLIGENCE: + case STRENGTH: + newStat = new ItemStat(StatByID((int)AGILITY)); + break; + case LESSERVITALITY: + case LESSERINTELLIGENCE: + case LESSERSTRENGTH: + newStat = new ItemStat(StatByID((int)LESSERAGILITY)); + break; + case BASE_MELEE_DAMAGE: + case BASE_SPELL_DAMAGE: + newStat = new ItemStat(StatByID((int)BASE_RANGED_DAMAGE)); + break; + case MELEE_DAMAGE_INCREASE: + case SPELL_DAMAGE_MULTIPLIER: + newStat = new ItemStat(StatByID((int)RANGED_DAMAGE_INCREASE)); + break; + default: + return false; + } + newStat.amount = stat.amount; + newStat.possibleStatsIndex = stat.possibleStatsIndex; + x.stats[index] = newStat; + return true; + } + }; + + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_489/*Enzyme VIT/449*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_490/*Changes Agility, Intelligence or Strength stat on an item to Vitality*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 100, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(199), + onConsumeCallback = x => + { + if (x.isEquipped) + return false; + + var stats = x.stats.Where(y => y.id == (int)VITALITY || y.id == (int)STRENGTH || y.id == (int)INTELLIGENCE + || y.id == (int)LESSERAGILITY || y.id == (int)LESSERSTRENGTH || y.id == (int)LESSERINTELLIGENCE).ToArray(); + + int c = stats.Count(); + + + if (c == 0) + return false; + int i = UnityEngine.Random.Range(0, c); + ItemStat stat = stats[i]; + int index = x.stats.IndexOf(stat); + + ItemStat newStat; + Stat statID = (Stat)stat.id; + switch (statID) + { + case AGILITY: + case INTELLIGENCE: + case STRENGTH: + newStat = new ItemStat(StatByID((int)VITALITY)); + break; + case LESSERAGILITY: + case LESSERINTELLIGENCE: + case LESSERSTRENGTH: + newStat = new ItemStat(StatByID((int)LESSERVITALITY)); + break; + default: + return false; + } + newStat.amount = stat.amount; + newStat.possibleStatsIndex = stat.possibleStatsIndex; + x.stats[index] = newStat; + return true; + } + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_491/*Stomach Acid*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_492/*Removes all stats with negative values from an item*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 100, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(198), + onConsumeCallback = x => + { + if (x.isEquipped) + return false; + + var stats = x.stats.RemoveAll(y => y.amount < 0); + if (stats > 0) + return true; + return false; + } + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_493/*Elite Stomach Acid*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_494/*Changes negative stat values into positive values on an item*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 100, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(198), + onConsumeCallback = x => + { + if (x.isEquipped) + return false; + + var stats = x.stats.Where(y => y.amount < 0).ToList(); + if (stats.Count > 0) + { + for (int i = 0; i < stats.Count; i++) + { + stats[i].amount *= -1; + } + return true; + } + return false; + } + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_495/*Crimson Solution*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_496/*Upgrades item of any rarity to one of the same type but of Legendary rarity*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 100, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(196), + onConsumeCallback = x => + { + if (x.isEquipped) + return false; + var itemType = x.type; + if (itemType == BaseItem.ItemType.Other || itemType == BaseItem.ItemType.Material || x.stackedAmount > 1) + return false; + if (Player.Inventory.Instance.ItemSlots.ContainsValue(x)) + { + for (int slotIndex = 0; slotIndex < Inventory.SlotCount; slotIndex++) + { + if (Player.Inventory.Instance.ItemSlots[slotIndex] == x) + { + var options = ItemDataBase.ItemBases.Where(y => y.Value.rarity == 7 && y.Value.type == itemType && (itemType != BaseItem.ItemType.Weapon || y.Value.subtype == x.subtype)).Select(y => y.Key).ToList(); + if (options.Count == 0) + { + ModAPI.Log.Write("No tier 7 items for type: " + itemType); + return false; + } + var random = options[UnityEngine.Random.Range(0, options.Count)]; + Item item = new Item(ItemDataBase.ItemBases[random], 1, 0, false) + { + level = x.level + }; + item.RollStats(); + Inventory.Instance.ItemSlots[slotIndex] = item; + return true; + } + } + } + return false; + } + }; + + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_497/*Weak Armor Hardening Mixture*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_498/*Adds Armor Stat to a piece of equipment if the item does not already have it*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 100, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(197), + onConsumeCallback = x => + { + if (x.isEquipped) + return false; + var itemType = x.type; + if (itemType == BaseItem.ItemType.Other || itemType == BaseItem.ItemType.Material || x.stackedAmount > 1) + return false; + if (!x.stats.Any(y => y.id == (int)ARMOR || y.id == (int)LESSERARMOR)) + { + ItemStat stat = new ItemStat(StatByID((int)ARMOR), x.level); + x.stats.Add(stat); + return true; + } + return false; + } + }; + + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_499/*Upgraded Armor Hardening Mixture*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_500/*Adds Damage Reduction Stat to a piece of equipment if the item does not already have it*/, //tr + rarity = 5, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 100, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(197), + onConsumeCallback = x => + { + if (x.isEquipped) + return false; + var itemType = x.type; + if (itemType == BaseItem.ItemType.Other || itemType == BaseItem.ItemType.Material || x.stackedAmount > 1) + return false; + if (!x.stats.Any(y => y.id == (int)DAMAGE_REDUCTION)) + { + ItemStat stat = new ItemStat(StatByID((int)DAMAGE_REDUCTION), x.level); + x.stats.Add(stat); + return true; + } + return false; + } + }; + + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_501/*Chaos Water*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_502/*Rerolls all stats on an item of rarity no higher than orange*/, //tr + rarity = 4, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 100, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(195), + onConsumeCallback = x => + { + if (x.isEquipped) + return false; + var itemType = x.type; + if (itemType == BaseItem.ItemType.Other || itemType == BaseItem.ItemType.Material || x.stackedAmount > 1 || x.rarity > 5) + return false; + if (x.stats.Count > 1) + { + x.RollStats(); + return true; + } + return false; + } + }; + new BaseItem(new int[][] { }) + { + name = Translations.ItemDataBase_ItemDefinitions_503/*Upgraded Chaos Water*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_483/*A substance which results in surprising changes to gear*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_504/*Rerolls all stats on an item of any rarity*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 100, + type = BaseItem.ItemType.Material, + icon = Res.ResourceLoader.GetTexture(194), + onConsumeCallback = x => + { + if (x.isEquipped) + return false; + var itemType = x.type; + if (itemType == BaseItem.ItemType.Other || itemType == BaseItem.ItemType.Material || x.stackedAmount > 1) + return false; + if (x.stats.Count > 1) + { + x.RollStats(); + return true; + } + return false; + } + }; + new BaseItem(new Stat[][] + { + new [] {SPELL_COST_REDUCTION,MELEE_DAMAGE_INCREASE,SPELL_DAMAGE_MULTIPLIER,COOLDOWN_REDUCTION,DAMAGE_REDUCTION, RANGED_DMG_FROM_AGI, ATTACKSPEED}, + new [] {AGILITY,LESSERAGILITY}, + new [] {MELEE_ARMOR_PIERCING,RANGED_ARMOR_PIERCING,ARMOR_PIERCING,ARMOR}, + new [] {RANGED_DAMAGE_INCREASE,RANGED_DMG_FROM_AGI,BASE_RANGED_DAMAGE,CRIT_CHANCE,CRIT_DAMAGE,ALL_ATTRIBUTES}, + new [] {INTELLIGENCE,STRENGTH,AGILITY,VITALITY,ALL_ATTRIBUTES,MAX_LIFE,MAX_ENERGY}, + new [] {INTELLIGENCE,STRENGTH,AGILITY,VITALITY,ALL_ATTRIBUTES,LIFE_ON_HIT,ENERGY_ON_HIT,ENERGY_REGEN_BASE,ALL_RECOVERY}, + new [] {RANGED_DAMAGE_INCREASE,BASE_RANGED_DAMAGE,AGILITY}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_505/*Gun Blade*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_506("150%")/*Increases pistol damage by 150%*/, //tr + rarity = 6, + minLevel = 35, + maxLevel = 36, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Axe, + icon = Res.ResourceLoader.GetTexture(138), + onEquipCallback = () => ModdedPlayer.Stats.perk_bulletDamageMult.Multiply(2.5f), + onUnequipCallback = () => ModdedPlayer.Stats.perk_bulletDamageMult.Divide(2.5f), + }.statSlots[0][0].multipier = -1f; + + new BaseItem(new Stat[][] + { + new [] {SPELL_COST_REDUCTION,BASE_SPELL_DAMAGE,SPELL_DAMAGE_MULTIPLIER,COOLDOWN_REDUCTION,DAMAGE_REDUCTION}, + new [] {ATTACKSPEED,PROJECTILE_SIZE,PROJECTILE_SPEED}, + new [] {AGILITY,LESSERAGILITY}, + new [] {HEADSHOT_DAMAGE_MULT}, + new [] {MELEE_ARMOR_PIERCING,RANGED_ARMOR_PIERCING,ARMOR_PIERCING,ARMOR,ELITE_DAMAGE_REDUCTION,LOOT_QUANTITY}, + new [] {RANGED_DAMAGE_INCREASE,RANGED_DMG_FROM_AGI,BASE_RANGED_DAMAGE,CRIT_CHANCE,CRIT_DAMAGE,ALL_ATTRIBUTES,MAX_ENERGY_FROM_AGILITY}, + new [] {RANGED_DAMAGE_INCREASE,BASE_RANGED_DAMAGE,AGILITY,VITALITY,INTELLIGENCE,CRIT_CHANCE,CRIT_DAMAGE}, + new [] {RANGED_DAMAGE_INCREASE,BASE_RANGED_DAMAGE,AGILITY,VITALITY,INTELLIGENCE,HEADSHOT_DAMAGE_MULT}, + new [] {INTELLIGENCE,STRENGTH,AGILITY,VITALITY,ALL_ATTRIBUTES,MAX_LIFE,MAX_ENERGY}, + new [] {INTELLIGENCE,STRENGTH,AGILITY,VITALITY,ALL_ATTRIBUTES,LIFE_ON_HIT,ENERGY_ON_HIT,ENERGY_REGEN_BASE,ALL_RECOVERY}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_507/*Sharpshooter's Axe*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_508("50%", "600%")/*Increases pistol headshot chance by 50% and pistol damage by 600%*/, //tr + rarity = 7, + minLevel = 35, + maxLevel = 36, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Axe, + icon = Res.ResourceLoader.GetTexture(138), + onEquipCallback = () => { ModdedPlayer.Stats.perk_bulletDamageMult.Multiply(6f); ModdedPlayer.Stats.perk_bulletCritChance.Add(0.5f); }, + onUnequipCallback = () => { ModdedPlayer.Stats.perk_bulletDamageMult.Divide(6f); ModdedPlayer.Stats.perk_bulletCritChance.Sub(0.5f); }, + }; + new BaseItem(new Stat[][] + { + new [] {ARMOR_PIERCING,MELEE_ARMOR_PIERCING,NONE}, + new [] {BLOCK,NONE}, + new [] {ARMOR,MAX_LIFE,MAX_HEALTH_FROM_VITALITY,DAMAGE_REDUCTION,ELITE_DAMAGE_REDUCTION,DODGE_CHANCE}, + new [] {ARMOR,MAX_LIFE,MAX_HEALTH_FROM_VITALITY,DAMAGE_REDUCTION,VITALITY,STRENGTH,ALL_ATTRIBUTES}, + new [] {ARMOR,MAX_LIFE,MAX_HEALTH_FROM_VITALITY,DAMAGE_REDUCTION,VITALITY,STRENGTH,ALL_ATTRIBUTES,THORNS}, + new [] {THORNS,MELEE_DAMAGE_INCREASE,VITALITY,STRENGTH}, + new [] {STRENGTH,ARMOR,MELEE_ARMOR_PIERCING}, + new [] {MELEE_DAMAGE_INCREASE,MELEE_DMG_FROM_STR,BASE_MELEE_DAMAGE}, + new [] {MELEE_DAMAGE_INCREASE,ATTACKSPEED,BASE_MELEE_DAMAGE,MELEE_WEAPON_RANGE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_509/*Shield Blade*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_510/*So large can be used as a shield*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_511/*A normal human cannot lift this weapon.*/, //tr + rarity = 6, + minLevel = 50, + maxLevel = 52, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.GreatSword, + icon = Res.ResourceLoader.GetTexture(88), + }; + new BaseItem(new Stat[][] + { + new [] {ARMOR_PIERCING,MELEE_ARMOR_PIERCING}, + new [] {BLOCK,NONE}, + new [] {ARMOR,MAX_LIFE,MAX_HEALTH_FROM_VITALITY,DAMAGE_REDUCTION,ELITE_DAMAGE_REDUCTION,DODGE_CHANCE}, + new [] {ARMOR,MAX_LIFE,MAX_HEALTH_FROM_VITALITY,DAMAGE_REDUCTION,VITALITY,STRENGTH,ALL_ATTRIBUTES}, + new [] {ARMOR,MAX_LIFE,MAX_HEALTH_FROM_VITALITY,DAMAGE_REDUCTION,VITALITY,STRENGTH,ALL_ATTRIBUTES,THORNS}, + new [] {THORNS,MELEE_DAMAGE_INCREASE,VITALITY,STRENGTH}, + new [] {STRENGTH,ARMOR,MELEE_ARMOR_PIERCING}, + new [] {MELEE_DAMAGE_INCREASE,MELEE_DMG_FROM_STR,BASE_MELEE_DAMAGE}, + new [] {MELEE_DAMAGE_INCREASE,ATTACKSPEED,BASE_MELEE_DAMAGE,MELEE_WEAPON_RANGE}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_512/*Blunt Blade for Bashing Skulls*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_510/*So large can be used as a shield*/, //tr + lore = Translations.ItemDataBase_ItemDefinitions_511/*A normal human cannot lift this weapon.*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_513("200%")/*Bash damage debuff on enemies is increased by 200%*/, //tr + rarity = 7, + minLevel = 50, + maxLevel = 52, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.GreatSword, + icon = Res.ResourceLoader.GetTexture(88), + onEquipCallback = () => ModdedPlayer.Stats.spell_bashDamageDebuffAmount.Add(2.00f), + onUnequipCallback = () => ModdedPlayer.Stats.spell_bashDamageDebuffAmount.Sub(2.00f), + }; + + new BaseItem(new Stat[][] + { + new[] { ARMOR_PIERCING, MELEE_ARMOR_PIERCING }, + new[] { BLOCK,STRENGTH}, + new[] { ARMOR, MAX_LIFE, MAX_HEALTH_FROM_VITALITY, DAMAGE_REDUCTION, ELITE_DAMAGE_REDUCTION, DODGE_CHANCE }, + new[] { ARMOR, MAX_LIFE , DAMAGE_REDUCTION, VITALITY, STRENGTH, ALL_ATTRIBUTES }, + new[] { ARMOR, MAX_LIFE, DAMAGE_REDUCTION, VITALITY, STRENGTH, ALL_ATTRIBUTES, THORNS }, + new[] { THORNS, MELEE_DAMAGE_INCREASE, VITALITY, STRENGTH }, + new[] { STRENGTH, ARMOR, MELEE_ARMOR_PIERCING }, + new[] { MELEE_DAMAGE_INCREASE, MELEE_DMG_FROM_STR, BASE_MELEE_DAMAGE }, + new[] { MELEE_DAMAGE_INCREASE, ATTACKSPEED, BASE_MELEE_DAMAGE, MELEE_WEAPON_RANGE }, + new[] { ALL }, + new[] { ALL }, + new[] { ALL }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_514/*Madman's Legacy*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_515("69%")/*Frenzy damage per stack is increased by 50%*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + onEquipCallback = () => ModdedPlayer.Stats.spell_frenzyDmg.Add(0.69f), + onUnequipCallback = () => ModdedPlayer.Stats.spell_frenzyDmg.Add(0.69f), + }; + new BaseItem(new Stat[][] + { + new[] { ARMOR,BASE_MELEE_DAMAGE }, + new[] { BLOCK}, + new[] { ARMOR, MAX_LIFE,MAX_ENERGY,STAMINA_AND_ENERGY_REGEN_MULT, DAMAGE_REDUCTION, ELITE_DAMAGE_REDUCTION, DODGE_CHANCE }, + new[] { ARMOR, MAX_LIFE, MAX_ENERGY, DAMAGE_REDUCTION, VITALITY, STRENGTH, ALL_ATTRIBUTES,CHANCE_ON_HIT_TO_BLEED,CHANCE_ON_HIT_TO_SLOW,CHANCE_ON_HIT_TO_WEAKEN }, + new[] { ARMOR, MAX_LIFE, MAX_HEALTH_FROM_VITALITY, DAMAGE_REDUCTION, VITALITY, STRENGTH, ALL_ATTRIBUTES, THORNS }, + new[] { THORNS, MELEE_DAMAGE_INCREASE, VITALITY, STRENGTH }, + new[] { MELEE_DAMAGE_INCREASE, ATTACKSPEED, BASE_MELEE_DAMAGE, MELEE_WEAPON_RANGE,MAX_LIFE_MULT,MAX_ENERGY_MULT,ALL_RECOVERY }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_516/*Buckler*/, //tr + rarity = 5, + minLevel = 1, + maxLevel = 2, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + }; + new BaseItem(new Stat[][] + { + new [] {FIRE_DAMAGE}, + new [] {MAX_ENERGY,MAX_LIFE,MAX_ENERGY_MULT,MAX_LIFE_MULT}, + new [] {STRENGTH,INTELLIGENCE,AGILITY,SPELL_COST_REDUCTION}, + new [] {SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE, INTELLIGENCE ,ALL_ATTRIBUTES}, + new [] {SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE, INTELLIGENCE ,ALL_ATTRIBUTES}, + new [] {ARMOR,DAMAGE_REDUCTION}, + new [] {ELITE_DAMAGE_REDUCTION,LOOT_QUANTITY,MOVEMENT_SPEED,ARMOR}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_517/*Pyromancy Mask*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_518("200%")/*Ignited enemies burn for 200% extended perioid of time.*/, //tr + rarity = 5, + minLevel = 2, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + onEquipCallback = () => ModdedPlayer.Stats.fireDuration.Add(2f), + onUnequipCallback = () => ModdedPlayer.Stats.fireDuration.Sub(2f), + }.statSlots[0][0].multipier = 2; + + new BaseItem(new Stat[][] + { + new [] {FIRE_DAMAGE}, + new [] {SPELL_DMG_FROM_INT,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI}, + new [] {MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY}, + new [] {MAX_ENERGY,MAX_LIFE,MAX_ENERGY_MULT,MAX_LIFE_MULT}, + new [] {STRENGTH,INTELLIGENCE,AGILITY,SPELL_COST_REDUCTION}, + new [] {SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE, INTELLIGENCE ,ALL_ATTRIBUTES}, + new [] {SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE, INTELLIGENCE ,ALL_ATTRIBUTES}, + new [] {ALL}, + new [] {ALL}, + new [] {ARMOR,DAMAGE_REDUCTION}, + new [] {ELITE_DAMAGE_REDUCTION,LOOT_QUANTITY,MOVEMENT_SPEED,ARMOR}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_519/*Ember Mask*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_520("700%")/*Ignited enemies burn for 300% extended perioid of time and fire ticks thrice as fast.*/, //tr + rarity = 7, + minLevel = 2, + maxLevel = 6, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + onEquipCallback = () => { ModdedPlayer.Stats.fireDuration.Add(7f); ModdedPlayer.Stats.fireTickRate.Add(3f); }, + onUnequipCallback = () => { ModdedPlayer.Stats.fireDuration.Sub(7f); ModdedPlayer.Stats.fireTickRate.Sub(3f); }, + }.statSlots[0][0].multipier = 5; + + + new BaseItem(new Stat[][] + { + new [] {FIRE_DAMAGE}, + new [] {ARMOR,DODGE_CHANCE}, + new [] {MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI}, + new [] {MAX_ENERGY,MAX_LIFE,MAX_ENERGY_MULT,MAX_LIFE_MULT}, + new [] {STRENGTH,INTELLIGENCE,AGILITY,SPELL_COST_REDUCTION,PROJECTILE_SPEED,PROJECTILE_SIZE}, + new [] {SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE, INTELLIGENCE ,ALL_ATTRIBUTES}, + new [] {SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE, INTELLIGENCE ,ALL_ATTRIBUTES}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ARMOR,DAMAGE_REDUCTION}, + new [] {ELITE_DAMAGE_REDUCTION,LOOT_QUANTITY,MOVEMENT_SPEED,ARMOR}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_521/*Flame Pauldrons*/, //tr + description = "", //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_522(10, "750%")/*Firebolt costs 30 additional energy to cast and its damage scaling is increased by 250%*/, //tr + rarity = 7, + minLevel = 5, + maxLevel = 8, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + onEquipCallback = () => + { + ModdedPlayer.Stats.spell_fireboltEnergyCost.Add(5); + ModdedPlayer.Stats.spell_fireboltDamageScaling.Add(7.5f); + }, + onUnequipCallback = () => + { + ModdedPlayer.Stats.spell_fireboltEnergyCost.Sub(5); + ModdedPlayer.Stats.spell_fireboltDamageScaling.Sub(7.5f); + }, + }; + new BaseItem(new Stat[][] + { + new [] {SPELL_DMG_FROM_INT}, + new [] {MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY}, + new [] {MAX_ENERGY,MAX_LIFE,MAX_ENERGY_MULT,MAX_LIFE_MULT}, + new [] {STRENGTH,INTELLIGENCE,AGILITY,SPELL_COST_REDUCTION,COOLDOWN_REDUCTION,SPELL_COST_TO_STAMINA}, + new [] {SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE, INTELLIGENCE ,ALL_ATTRIBUTES}, + new [] {SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE, INTELLIGENCE ,ALL_ATTRIBUTES}, + new [] {ALL}, + new [] {ALL}, + new [] {ELITE_DAMAGE_REDUCTION,ENERGY_ON_HIT,ENERGY_REGEN_BASE,STAMINA_AND_ENERGY_REGEN_MULT,STAMINA_REGEN_BASE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_523/*Ancient Scroll*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_607/*Firebolt deals increased damage*/, //tr + rarity = 6, + minLevel = 1, + maxLevel = 1, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.SpellScroll, + icon = Res.ResourceLoader.GetTexture(110), + onEquipCallback = () => ModdedPlayer.Stats.spell_fireboltDamageScaling.Add(8), + onUnequipCallback = () => ModdedPlayer.Stats.spell_fireboltDamageScaling.Sub(8), + }; + new BaseItem(new Stat[][] + { + new [] {SPELL_DMG_FROM_INT}, + new [] {MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY}, + new [] {MAX_ENERGY,MAX_LIFE,MAX_ENERGY_MULT,MAX_LIFE_MULT}, + new [] {STRENGTH,INTELLIGENCE,AGILITY,SPELL_COST_REDUCTION,COOLDOWN_REDUCTION,SPELL_COST_TO_STAMINA}, + new [] {SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE, INTELLIGENCE ,ALL_ATTRIBUTES}, + new [] {SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE, INTELLIGENCE ,ALL_ATTRIBUTES}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ELITE_DAMAGE_REDUCTION,ENERGY_ON_HIT,ENERGY_REGEN_BASE,STAMINA_AND_ENERGY_REGEN_MULT,STAMINA_REGEN_BASE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_524/*Guide on Tearing Spacetime*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_525/*Blink creates an explosion at the exit point, and the damage of the explosion is increased by velocity and the radius is increased by the distance of blink*/, //tr + rarity = 7, + minLevel = 1, + maxLevel = 1, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.SpellScroll, + icon = Res.ResourceLoader.GetTexture(110), + onEquipCallback = () => ModdedPlayer.Stats.spell_blinkDoExplosion.value = true, + onUnequipCallback = () => ModdedPlayer.Stats.spell_blinkDoExplosion.value = false, + }; + new BaseItem(new Stat[][] + { + new [] {STRENGTH}, + new [] {MELEE_DAMAGE_INCREASE}, + new [] {ATTACKSPEED}, + new [] {MELEE_DMG_FROM_STR}, + new [] {BLOCK,ARMOR,DAMAGE_REDUCTION}, + new [] {BASE_MELEE_DAMAGE,NONE}, + new [] {BASE_MELEE_DAMAGE,MELEE_DAMAGE_INCREASE,STRENGTH}, + new [] {MELEE_ARMOR_PIERCING,ARMOR_PIERCING,ALL_ATTRIBUTES}, + new [] {ATTACK_COST_REDUCTION,ATTACKSPEED}, + new [] {ALL_ATTRIBUTES,MELEE_WEAPON_RANGE,VITALITY,MAX_LIFE}, + new [] {ENERGY_ON_HIT,VITALITY,LIFE_ON_HIT } + }) + { + name = Translations.ItemDataBase_ItemDefinitions_526/*300th Spear*/, //tr + rarity = 6, + minLevel = 30, + maxLevel = 34, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.Polearm, + icon = Res.ResourceLoader.GetTexture(181), + }.statSlots[0][0].multipier = 6; + + + + new BaseItem(new Stat[][] + { + new [] {MOVEMENT_SPEED,ATTACKSPEED}, + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL}, + new [] {ALL,NONE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_527/*Stone Pauldrons*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.03f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.03f), + rarity = 2, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + }.statSlots[0][0].multipier = -0.3f; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_529/*Iron Shoulder Pads*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.04f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.04f), + rarity = 3, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_531/*Steel Shoulder Pads*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.05f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.05f), + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_533/*Battle scarred Shoulder Pads*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.06f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.06f), + rarity = 5, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + }; + + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_535/*Mystery Shoulder Pads*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.1f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.1f), + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + }; + + new BaseItem(new Stat[][] + { + new [] {MOVEMENT_SPEED,ATTACKSPEED}, + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL}, + new [] {ALL,NONE}, + new [] {BLOCK}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_537/*Stone Shield*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.03f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.03f), + rarity = 2, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + }.statSlots[0][0].multipier = -0.3f; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {BLOCK}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_538/*Iron Shield*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.04f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.04f), + rarity = 3, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL,ARMOR}, + new [] {BLOCK}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_539/*Steel Tower Shield*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.05f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.05f), + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + }; + new BaseItem(new Stat[][] + { + + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {BLOCK}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_540/*Guardian*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.06f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.06f), + rarity = 5, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + }; + + new BaseItem(new Stat[][] + { + new [] {BLOCK}, + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_541/*Mystery Shield*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.1f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.1f), + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Shield, + icon = Res.ResourceLoader.GetTexture(99), + }.statSlots[0][0].multipier = 2f; + + + new BaseItem(new Stat[][] + { + new [] {MOVEMENT_SPEED}, + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL}, + new [] {ALL,NONE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_542/*Light Boot*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.03f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.03f), + rarity = 2, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }.statSlots[0][0].multipier = 1.3f; + new BaseItem(new Stat[][] + { + new [] {MOVEMENT_SPEED}, + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_543/*Iron Boots*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.04f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.04f), + rarity = 3, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }; + new BaseItem(new Stat[][] + { + new [] {MOVEMENT_SPEED}, + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL,ARMOR}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_544/*Steel Boots*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.05f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.05f), + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }; + new BaseItem(new Stat[][] + { + new [] {MOVEMENT_SPEED}, + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_545/*Threads*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.06f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.06f), + rarity = 5, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }; + + new BaseItem(new Stat[][] + { + new [] {MOVEMENT_SPEED}, + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_546/*Mystery Boots*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.1f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.1f), + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }; + + + + + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL}, + new [] {ALL,NONE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_547/*Wraps*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.03f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.03f), + rarity = 2, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }.statSlots[0][0].multipier = -0.3f; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_301/*Iron Gauntlet*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.04f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.04f), + rarity = 3, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_548/*Steel Gauntlet*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.05f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.05f), + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_549/*Titanium Gauntlet*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.06f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.06f), + rarity = 5, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_550/*Mystery Gauntlet*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.1f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.1f), + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + + + + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_551/*Leather Tasset*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.03f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.03f), + rarity = 2, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }.statSlots[0][0].multipier = -0.3f; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_552/*Iron Tasset*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.04f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.04f), + rarity = 3, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_553/*Steel Tasset*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.05f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.05f), + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_554/*Black Steel Leggins*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.06f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.06f), + rarity = 5, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_555/*Mystery Leggins*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.1f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.1f), + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL}, + new [] {ALL,NONE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_556/*Leather Vest*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.03f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.03f), + rarity = 2, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }.statSlots[0][0].multipier = -0.3f; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_557/*Iron Breastplate*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.04f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.04f), + rarity = 3, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_558/*Steel Breastplate*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.05f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.05f), + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_559/*Silver Armor*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.06f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.06f), + rarity = 5, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_560/*Mystery Breastplate*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.1f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.1f), + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL}, + new [] {ALL,NONE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_561/*Cloth Band*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.03f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.03f), + rarity = 2, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + }.statSlots[0][0].multipier = -0.3f; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_562/*Iron Wristguard*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.04f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.04f), + rarity = 3, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_563/*Steel Wristguard*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.05f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.05f), + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_564/*Baron Wristguards*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.06f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.06f), + rarity = 5, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + }; + + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_565/*Mystery Wristguards*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.1f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.1f), + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + }; + + + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_218/*Horned Helmet*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_528("3%")/*All damage increased by 3%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.03f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.03f), + rarity = 2, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }.statSlots[0][0].multipier = -0.3f; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_566/*Iron Helmet*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_530("4%")/*All damage increased by 4%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.04f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.04f), + rarity = 3, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_567/*Steel Helmet*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_532("5%")/*All damage increased by 5%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.05f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.05f), + rarity = 4, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {ALL,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_568/*Armored Hood*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_534("6%")/*All damage increased by 6%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.06f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.06f), + rarity = 5, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_569/*Mystery Helmet*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_536("10%")/*All damage increased by 10%*/, //tr + onEquipCallback = () => ModdedPlayer.Stats.allDamage.Add(0.1f), + onUnequipCallback = () => ModdedPlayer.Stats.allDamage.Sub(0.1f), + rarity = 6, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {MELEE_DMG_FROM_STR,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {MELEE_DAMAGE_INCREASE,MELEE_WEAPON_RANGE,BASE_MELEE_DAMAGE,STRENGTH}, + new [] {MELEE_DAMAGE_INCREASE,ATTACKSPEED,BASE_MELEE_DAMAGE,STRENGTH}, + new [] {CRIT_CHANCE,CRIT_DAMAGE,}, + new [] {MELEE_DAMAGE_INCREASE,NONE,MAX_LIFE,MAX_LIFE_MULT}, + new [] {STRENGTH,VITALITY,INTELLIGENCE,ATTACKSPEED,ATTACK_COST_REDUCTION,COOLDOWN_REDUCTION}, + new [] {ALL}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ARMOR,DAMAGE_REDUCTION}, + new [] {EMPTYSOCKET,NONE}, + new [] {EMPTYSOCKET,NONE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_570/*Yorium's Gaze*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_571("30%")/*SET PIECE. Melee weapon range is increased by 30%, attack cost in stamina is halved.*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_572(15, "35%", 15, "5%")/*Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by 15 seconds\n4 Pieces - Each second of berserk being in effect increases damage by 35%.\n5 Pieces - For the first 15 seconds of Berserk attack speed increases by 30% per second, and lasts till the end of the spell's duration.*/, //tr + onEquipCallback = () => BerserkSet.Equip(), + onUnequipCallback = () => BerserkSet.Unequip(), + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Helmet, + icon = Res.ResourceLoader.GetTexture(91), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {MELEE_DMG_FROM_STR,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {MELEE_DAMAGE_INCREASE,MELEE_WEAPON_RANGE,BASE_MELEE_DAMAGE,STRENGTH}, + new [] {MELEE_DAMAGE_INCREASE,ATTACKSPEED,BASE_MELEE_DAMAGE,STRENGTH}, + new [] {MAX_LIFE}, + new [] {MELEE_DAMAGE_INCREASE,MAX_LIFE,MAX_LIFE_MULT}, + new [] {STRENGTH,VITALITY,INTELLIGENCE,ATTACKSPEED,ATTACK_COST_REDUCTION,COOLDOWN_REDUCTION}, + new [] {ALL}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ARMOR,DAMAGE_REDUCTION,ALL_ATTRIBUTES}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_573/*Yorium's Ruthlessness*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_571("30%")/*SET PIECE. Melee weapon range is increased by 30%, attack cost in stamina is halved.*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_572(15, "35%", 15, "5%")/*Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by 15 seconds\n4 Pieces - Each second of berserk being in effect increases damage by 35%.\n5 Pieces - For the first 15 seconds of Berserk attack speed increases by 30% per second, and lasts till the end of the spell's duration.*/, //tr + onEquipCallback = () => BerserkSet.Equip(), + onUnequipCallback = () => BerserkSet.Unequip(), + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ChestArmor, + icon = Res.ResourceLoader.GetTexture(96), + }; + + new BaseItem(new Stat[][] + { + new [] {ALL,}, + new [] {MELEE_DMG_FROM_STR,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {MELEE_DAMAGE_INCREASE,MELEE_WEAPON_RANGE,BASE_MELEE_DAMAGE,STRENGTH}, + new [] {MELEE_DAMAGE_INCREASE,ATTACKSPEED,BASE_MELEE_DAMAGE,STRENGTH}, + new [] {MAX_LIFE}, + new [] {MELEE_DAMAGE_INCREASE,MAX_LIFE,MAX_LIFE_MULT}, + new [] {STRENGTH,VITALITY,INTELLIGENCE,ATTACKSPEED,ATTACK_COST_REDUCTION,COOLDOWN_REDUCTION}, + new [] {ALL}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ARMOR,DAMAGE_REDUCTION,ALL_ATTRIBUTES}, + new [] {EMPTYSOCKET,NONE}, + new [] {EMPTYSOCKET,NONE}, + new [] {EMPTYSOCKET,NONE}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_574/*Yorium's Burden*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_571("30%")/*SET PIECE. Melee weapon range is increased by 30%, attack cost in stamina is halved.*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_572(15, "35%", 15, "5%")/*Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by 15 seconds\n4 Pieces - Each second of berserk being in effect increases damage by 35%.\n5 Pieces - For the first 15 seconds of Berserk attack speed increases by 30% per second, and lasts till the end of the spell's duration.*/, //tr + onEquipCallback = () => BerserkSet.Equip(), + onUnequipCallback = () => BerserkSet.Unequip(), + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.ShoulderArmor, + icon = Res.ResourceLoader.GetTexture(95), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,}, + new [] {MELEE_DMG_FROM_STR,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {MELEE_DAMAGE_INCREASE,MELEE_WEAPON_RANGE,BASE_MELEE_DAMAGE,STRENGTH}, + new [] {MELEE_DAMAGE_INCREASE,ATTACKSPEED,BASE_MELEE_DAMAGE,STRENGTH}, + new [] {MAX_LIFE}, + new [] {MELEE_DAMAGE_INCREASE,MAX_LIFE,MAX_LIFE_MULT}, + new [] {STRENGTH,VITALITY,INTELLIGENCE,ATTACKSPEED,ATTACK_COST_REDUCTION,COOLDOWN_REDUCTION}, + new [] {ALL}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ARMOR,DAMAGE_REDUCTION,ALL_ATTRIBUTES}, + new [] {EMPTYSOCKET,NONE}, + new [] {EMPTYSOCKET,NONE}, + new [] {EMPTYSOCKET,NONE}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_575/*Yorium's Resolve*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_571("30%")/*SET PIECE. Melee weapon range is increased by 30%, attack cost in stamina is halved.*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_572(15, "35%", 15, "5%")/*Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by 15 seconds\n4 Pieces - Each second of berserk being in effect increases damage by 35%.\n5 Pieces - For the first 15 seconds of Berserk attack speed increases by 30% per second, and lasts till the end of the spell's duration.*/, //tr + onEquipCallback = () => BerserkSet.Equip(), + onUnequipCallback = () => BerserkSet.Unequip(), + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + }; + new BaseItem(new Stat[][] + { + new [] {MOVEMENT_SPEED}, + new [] {MELEE_DMG_FROM_STR,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {MELEE_DAMAGE_INCREASE,MELEE_WEAPON_RANGE,BASE_MELEE_DAMAGE,STRENGTH}, + new [] {MELEE_DAMAGE_INCREASE,ATTACKSPEED,BASE_MELEE_DAMAGE,STRENGTH}, + new [] {MAX_LIFE}, + new [] {MELEE_DAMAGE_INCREASE,MAX_LIFE,MAX_LIFE_MULT}, + new [] {STRENGTH,VITALITY,INTELLIGENCE,ATTACKSPEED,ATTACK_COST_REDUCTION,COOLDOWN_REDUCTION}, + new [] {ALL}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ARMOR,DAMAGE_REDUCTION,ALL_ATTRIBUTES}, + new [] {EMPTYSOCKET,NONE}, + new [] {EMPTYSOCKET,NONE}, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_576/*Atomic Augmentation*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_571("30%")/*SET PIECE. Melee weapon range is increased by 30%, attack cost in stamina is halved.*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_572(15, "35%", 15, "5%")/*Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by 15 seconds\n4 Pieces - Each second of berserk being in effect increases damage by 35%.\n5 Pieces - For the first 15 seconds of Berserk attack speed increases by 30% per second, and lasts till the end of the spell's duration.*/, //tr + onEquipCallback = () => BerserkSet.Equip(), + onUnequipCallback = () => BerserkSet.Unequip(), + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Boot, + icon = Res.ResourceLoader.GetTexture(85), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,}, + new [] {MELEE_DMG_FROM_STR,MAX_ENERGY_FROM_AGILITY,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {MELEE_DAMAGE_INCREASE,MELEE_WEAPON_RANGE,BASE_MELEE_DAMAGE,STRENGTH}, + new [] {MELEE_DAMAGE_INCREASE,ATTACKSPEED,BASE_MELEE_DAMAGE,STRENGTH}, + new [] {MAX_LIFE}, + new [] {MELEE_DAMAGE_INCREASE,MAX_LIFE,MAX_LIFE_MULT}, + new [] {STRENGTH,VITALITY,INTELLIGENCE,ATTACKSPEED,ATTACK_COST_REDUCTION,COOLDOWN_REDUCTION}, + new [] {ALL}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ARMOR,DAMAGE_REDUCTION,ALL_ATTRIBUTES}, + new [] {EMPTYSOCKET,NONE}, + new [] {EMPTYSOCKET,NONE}, + new [] {EMPTYSOCKET,NONE}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_577/*Yorium's Assault*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_571("30%")/*SET PIECE. Melee weapon range is increased by 30%, attack cost in stamina is halved.*/, //tr + description = Translations.ItemDataBase_ItemDefinitions_572(15, "35%", 15, "5%")/*Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by 15 seconds\n4 Pieces - Each second of berserk being in effect increases damage by 35%.\n5 Pieces - For the first 15 seconds of Berserk attack speed increases by 30% per second, and lasts till the end of the spell's duration.*/, //tr + onEquipCallback = () => BerserkSet.Equip(), + onUnequipCallback = () => BerserkSet.Unequip(), + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Glove, + icon = Res.ResourceLoader.GetTexture(86), + }; + new BaseItem(new Stat[][] + { + new [] {ALL,EXP_GAIN_MULT,LOOT_QUANTITY}, + new [] {MELEE_DMG_FROM_STR,MAX_ENERGY_FROM_AGILITY,RANGED_DMG_FROM_AGI,MAX_HEALTH_FROM_VITALITY,SPELL_DMG_FROM_INT}, + new [] {MELEE_DAMAGE_INCREASE,BASE_MELEE_DAMAGE,STRENGTH}, + new [] {RANGED_DAMAGE_INCREASE,BASE_RANGED_DAMAGE,AGILITY}, + new [] {SPELL_DAMAGE_MULTIPLIER,BASE_SPELL_DAMAGE,INTELLIGENCE}, + new [] {ALL}, + new [] {MAX_LIFE}, + new [] {MAX_LIFE,MAX_LIFE_MULT,MAX_ENERGY,MAX_ENERGY_MULT}, + new [] {STRENGTH,VITALITY,INTELLIGENCE,AGILITY,ALL_ATTRIBUTES,ATTACKSPEED,ATTACK_COST_REDUCTION,SPELL_COST_REDUCTION,COOLDOWN_REDUCTION}, + new [] {ALL}, + new [] {ALL,NONE}, + new [] {ALL,NONE}, + new [] {ALL}, + new [] {ALL}, + new [] {ARMOR,DAMAGE_REDUCTION,ALL_ATTRIBUTES,NONE}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_578/*Undying Promise*/, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_579(1)/*Resist lethal damage on a 1 minute cooldown*/, //tr + onEquipCallback = () => COTFEvents.Instance.OnTakeLethalDamage.AddListener(UniqueItemFunctions.ResistDeath), + onUnequipCallback = () => COTFEvents.Instance.OnTakeLethalDamage.RemoveListener(UniqueItemFunctions.ResistDeath), + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + }; + new BaseItem(new Stat[][] + { + new [] {CRIT_DAMAGE}, + new [] {STRENGTH,VITALITY,INTELLIGENCE,AGILITY }, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ARMOR,DAMAGE_REDUCTION }, + new [] {MAX_LIFE}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_609, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_610, //tr + rarity = 7, + minLevel = 20, + maxLevel = 28, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Pants, + icon = Res.ResourceLoader.GetTexture(87), + onEquipCallback = () => { ModdedPlayer.Stats.spell_frenzy_active_critChance.Add(0.05f); ModdedPlayer.Stats.spell_frenzyAtkSpeed.Add(0.03f); }, + onUnequipCallback = () => { ModdedPlayer.Stats.spell_frenzy_active_critChance.Sub(0.05f); ModdedPlayer.Stats.spell_frenzyAtkSpeed.Add(0.03f); }, + }; + + + + new BaseItem(new Stat[][] + { + new [] {BASE_MELEE_DAMAGE,BASE_SPELL_DAMAGE}, + new [] {BASE_MELEE_DAMAGE,BASE_SPELL_DAMAGE}, + new [] {STRENGTH,VITALITY,INTELLIGENCE,AGILITY }, + new [] {MELEE_DAMAGE_INCREASE, SPELL_DAMAGE_MULTIPLIER }, + new [] {ATTACKSPEED}, + new [] {CRIT_CHANCE}, + new [] {CRIT_DAMAGE}, + new [] {MELEE_DMG_FROM_STR}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {BLOCK, NONE}, + new [] {MAX_LIFE}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_611, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_612("300%"), //tr + rarity = 7, + minLevel = 6, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.GreatSword, + icon = Res.ResourceLoader.GetTexture(88), + onEquipCallback = () => ModdedPlayer.Stats.spell_berserkDamage.Add(3f), + onUnequipCallback = () => ModdedPlayer.Stats.spell_berserkDamage.Sub(3f), + }.statSlots[0][0].multipier = 5; + new BaseItem(new Stat[][] + { + new [] {BASE_MELEE_DAMAGE,BASE_SPELL_DAMAGE}, + new [] {BASE_MELEE_DAMAGE, NONE}, + new [] {STRENGTH,VITALITY,INTELLIGENCE,AGILITY }, + new [] {MELEE_DAMAGE_INCREASE, SPELL_DAMAGE_MULTIPLIER }, + new [] {ATTACKSPEED}, + new [] {CRIT_CHANCE}, + new [] {CRIT_DAMAGE}, + new [] {MELEE_DMG_FROM_STR}, + new [] {STRENGTH}, + new [] {ALL}, + new [] {ALL}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_613, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_612("100%"), //tr + rarity = 6, + minLevel = 6, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Weapon, + subtype = BaseItem.WeaponModelType.GreatSword, + icon = Res.ResourceLoader.GetTexture(88), + onEquipCallback = () => ModdedPlayer.Stats.spell_berserkDamage.Add(1f), + onUnequipCallback = () => ModdedPlayer.Stats.spell_berserkDamage.Sub(1f), + }.statSlots[0][0].multipier = 2; + + new BaseItem(new Stat[][] + { + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {BASE_SPELL_DAMAGE,BASE_RANGED_DAMAGE,BASE_MELEE_DAMAGE, NONE}, + new [] {SPELL_DMG_FROM_INT,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,DAMAGE_REDUCTION}, + new [] {ALL_ATTRIBUTES,AGILITY,STRENGTH,INTELLIGENCE,VITALITY}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_614, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_615("10%"), //tr + rarity = 5, + minLevel = 6, + maxLevel = 9, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(100), + onEquipCallback = () => + { + ModdedPlayer.Stats.spell_berserkAttackSpeed.Add(0.1f); + ModdedPlayer.Stats.spell_berserkMovementSpeed.Add(0.1f); + }, + onUnequipCallback = () => + { + ModdedPlayer.Stats.spell_berserkAttackSpeed.Sub(0.1f); + ModdedPlayer.Stats.spell_berserkMovementSpeed.Sub(0.1f); + }, + }; + new BaseItem(new Stat[][] + { + new [] {STRENGTH,VITALITY,AGILITY,ALL_ATTRIBUTES,INTELLIGENCE}, + new [] {MAX_ENERGY_FROM_AGILITY,MELEE_DMG_FROM_STR,SPELL_DMG_FROM_INT,RANGED_DMG_FROM_AGI,MAX_HEALTH_FROM_VITALITY}, + new [] {ARMOR,DAMAGE_REDUCTION}, + new [] { CRIT_CHANCE, CRIT_DAMAGE}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {ALL}, + new [] {BASE_SPELL_DAMAGE,BASE_RANGED_DAMAGE,BASE_MELEE_DAMAGE, NONE}, + new [] {SPELL_DMG_FROM_INT,MELEE_DMG_FROM_STR,RANGED_DMG_FROM_AGI,DAMAGE_REDUCTION}, + + }) + { + name = Translations.ItemDataBase_ItemDefinitions_616, //tr + uniqueStat = $"Berserk increases melee and ranged damage by 100%, increases movement speed by 30% and attack speed by 15%", //tr + rarity = 7, + minLevel = 60, + maxLevel = 62, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Amulet, + icon = Res.ResourceLoader.GetTexture(100), + onEquipCallback = () => + { + ModdedPlayer.Stats.meleeIncreasedDmg.Multiply(2f); + ModdedPlayer.Stats.rangedIncreasedDmg.Multiply(2f); + ModdedPlayer.Stats.spell_berserkAttackSpeed.Add(0.15f); + ModdedPlayer.Stats.spell_berserkMovementSpeed.Add(0.3f); + }, + onUnequipCallback = () => + { + ModdedPlayer.Stats.meleeIncreasedDmg.Divide(2f); + ModdedPlayer.Stats.rangedIncreasedDmg.Divide(2f); + ModdedPlayer.Stats.spell_berserkAttackSpeed.Sub(0.15f); + ModdedPlayer.Stats.spell_berserkMovementSpeed.Sub(0.3f); + }, + }; + new BaseItem(new Stat[][] + { + new[] { LIFE_REGEN_BASE }, + new[] { ARMOR, NONE, ALL_RECOVERY }, + new[] { ALL}, + new[] { SPELL_DMG_FROM_INT }, + new[] { SPELL_COST_REDUCTION,SPELL_COST_TO_STAMINA,ARMOR,ALL_ATTRIBUTES}, + new[] { BASE_SPELL_DAMAGE, SPELL_DAMAGE_MULTIPLIER, INTELLIGENCE, ALL_ATTRIBUTES }, + new[] { BASE_SPELL_DAMAGE, SPELL_DAMAGE_MULTIPLIER, INTELLIGENCE, DAMAGE_REDUCTION }, + new[] { VITALITY, MAX_HEALTH_FROM_VITALITY, MAX_LIFE, MAX_LIFE_MULT, LIFE_REGEN_BASE, LIFE_ON_HIT }, + new[] { SPELL_COST_REDUCTION, COOLDOWN_REDUCTION, CRIT_CHANCE, CRIT_DAMAGE, ARMOR,MAX_HEALTH_FROM_VITALITY }, + new[] { DAMAGE_REDUCTION, MAX_ENERGY_MULT, LIFE_REGEN_MULT }, + new[] { ENERGY_REGEN_BASE, MAX_ENERGY_MULT, MAX_ENERGY_FROM_AGILITY }, + new[] { INTELLIGENCE, STAMINA_REGEN_BASE, STAMINA_AND_ENERGY_REGEN_MULT, ALL_ATTRIBUTES, ALL_RECOVERY }, + new[] { ENERGY_ON_HIT, ENERGY_REGEN_BASE, MAX_LIFE, MASSACRE_DURATION, LOOT_QUANTITY, EXPLOSION_DAMAGE }, + }) + { + name = Translations.ItemDataBase_ItemDefinitions_617, //tr + uniqueStat = Translations.ItemDataBase_ItemDefinitions_618("100%", "40%"),//tr + rarity = 7, + minLevel = 1, + maxLevel = 3, + canConsume = false, + stackSize = 1, + type = BaseItem.ItemType.Bracer, + icon = Res.ResourceLoader.GetTexture(93), + onEquipCallback = () => + { + ModdedPlayer.Stats.spell_healingDomeCooldownRate.Add(1.0f); + ModdedPlayer.Stats.spell_healingDomeSpellCostReduction.Sub(0.4f); + }, + onUnequipCallback = () => + { + ModdedPlayer.Stats.spell_healingDomeCooldownRate.Sub(1.0f); + ModdedPlayer.Stats.spell_healingDomeSpellCostReduction.Add(0.4f); + }, + }; + } + } +} \ No newline at end of file diff --git a/Items/ItemDefinitions/ItemDefinition.cs b/Items/ItemDefinitions/ItemDefinition.cs new file mode 100644 index 0000000..3a82558 --- /dev/null +++ b/Items/ItemDefinitions/ItemDefinition.cs @@ -0,0 +1,141 @@ +using System.Collections.Generic; + +using ChampionsOfForest.Effects.Sound_Effects; + +using UnityEngine; + +namespace ChampionsOfForest.Items +{ + public class ItemDefinition + { + public class StatSlot + { + public float probability; + public List options; + public StatSlot(List options, float chance = 1) + { + this.probability = chance; + this.options = options; + } + } + + public enum ItemType + { + Other, Shield, Quiver, Weapon, Material, Helmet, Boot, Pants, ChestArmor, ShoulderArmor, Glove, Bracer, Amulet, Ring, SpellScroll, SocketableGem, Consumable + } + public enum Rarity + { + Common = 0, Uncommon, Rare, Magic, Legendary, Max + } + public enum ItemSubtype + { + None, GreatSword, LongSword, Hammer, Polearm, Axe, Greatbow, + RangedSocketable, MeleeSocketable, MagicSocketable, SupportSocketable, DefenseSocketable, UtilitySocketable, + }; + + public delegate void OnItemUsed(); + public delegate bool OnItemUsedOnAnother(Item other); // what happens when you drag and drop this item onto another + + + public int id = 0; + public Rarity rarity = 0; + public ItemType type = ItemType.Other; + public ItemSubtype subtype = ItemSubtype.None; + + public OnItemUsedOnAnother onUsedOnAnotherItemCallback; + public OnItemUsed onEquipCallback, onUnequipCallback; + public List statSlots; + public int maximumSocketSlots; + public int minimumEmptySockets; + + + // display properties of the item + public string name; + public string description; + public string lore; + public string uniqueStat; + public Texture2D icon; + public int minLevel = 1; + public int maxLevel = 1; + + public int stackSize = 1; + public bool PickUpAll = true; + + //Drop settings + public EnemyProgression.Enemy lootTable = EnemyProgression.Enemy.All; + public int lootWeight = DefaultLootWeight; //weight of the item in loot table, used to calculate drop chance + public const int DefaultLootWeight = 1000; + public ItemDefinition() + { + statSlots = new List(); + } + + + public GlobalSFX.SFX GetInvSound() + { + switch (type) + { + case ItemType.Shield: + return GlobalSFX.SFX.Invshiel; + case ItemType.Quiver: + return GlobalSFX.SFX.Invlarm; + case ItemType.Weapon: + switch (subtype) + { + case ItemSubtype.GreatSword: + return GlobalSFX.SFX.Invharm; + case ItemSubtype.LongSword: + return GlobalSFX.SFX.Invsword; + case ItemSubtype.Hammer: + return GlobalSFX.SFX.Invanvl; + case ItemSubtype.Polearm: + return GlobalSFX.SFX.Invstaf; + case ItemSubtype.Axe: + return GlobalSFX.SFX.Invaxe; + case ItemSubtype.Greatbow: + return GlobalSFX.SFX.Invbow; + default: + return GlobalSFX.SFX.Invharm; + } + case ItemType.Other: + return GlobalSFX.SFX.Invbody; + case ItemType.Material: + return GlobalSFX.SFX.Invrock; + case ItemType.Helmet: + return GlobalSFX.SFX.Invcap; + case ItemType.Boot: + return GlobalSFX.SFX.Invgrab; //change + case ItemType.Pants: + return GlobalSFX.SFX.Invblst; //change + case ItemType.ChestArmor: + return GlobalSFX.SFX.Invsign; + case ItemType.ShoulderArmor: + return GlobalSFX.SFX.Invharm; //change + case ItemType.Glove: + return GlobalSFX.SFX.Invlarm; //change + case ItemType.Bracer: + return GlobalSFX.SFX.Invbook; //change + case ItemType.Amulet: + return GlobalSFX.SFX.Invring; + case ItemType.Ring: + return GlobalSFX.SFX.Invring; + case ItemType.SpellScroll: + return GlobalSFX.SFX.Invscrol; + default: + return GlobalSFX.SFX.ClickDown; + } + } + + public int GetDropSoundID() + { + int ID = ((int)GetInvSound()) + 1052; + return ID < 1070 ? ID : Random.Range(1050, 1052); + } + + + public float GetInvSoundPitch() + { + return 1.00f - (float)rarity / 12f; + } + } +} \ No newline at end of file diff --git a/Items/ItemDefinitions/Materials.cs b/Items/ItemDefinitions/Materials.cs new file mode 100644 index 0000000..eb158de --- /dev/null +++ b/Items/ItemDefinitions/Materials.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; + +using ChampionsOfForest.Items.ItemTemplates; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + + public static partial class ItemDatabase + { + + public static void AddMaterials() + { + + } + } +} diff --git a/Items/ItemDefinitions/Other.cs b/Items/ItemDefinitions/Other.cs new file mode 100644 index 0000000..14f79a1 --- /dev/null +++ b/Items/ItemDefinitions/Other.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; + +using ChampionsOfForest.Items.ItemTemplates; +using ChampionsOfForest.Player; + +using UnityEngine; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + + public static partial class ItemDatabase + { + + public static void AddConsumables() + { + + new Heart("Grants 1 additional perk point", () => + { + ModdedPlayer.instance.PermanentBonusPerkPoints += 1; + ModdedPlayer.instance.MutationPoints += 1; + }) + .Name("Greater Mutated Heart") + .Description("This heart is finally still. Before, it used to pump blood brimming with strength into the largest, most grotesque mutants creeping on this peninsula.") + .SetDropCreepy() + .Rarity(4) + .Weight(100); + + new Heart("Grants 1 additional perk point", ModdedPlayer.Respec) + .Name("Heart of Purity") + .Description("A mysterious heart of the most innocent creature. Sometimes, the cannibals carry these intact hearts for unknown reasons. According to their strict diet, they don't eat anything that isn't human, so this heart must belong to something else.") + .Rarity(2); + + + } + + } + + +} \ No newline at end of file diff --git a/Items/ItemDefinitions/Pants.cs b/Items/ItemDefinitions/Pants.cs new file mode 100644 index 0000000..63f2ddd --- /dev/null +++ b/Items/ItemDefinitions/Pants.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; + +using ChampionsOfForest.Items.ItemTemplates; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + public static partial class ItemDatabase + { + + public static void AddPants() + { + + + //------------------------------------------------------ + //Rarity 0 (White) + //------------------------------------------------------ + + new Pants() + .DefaultStatSlot(1) + .Name("") + .Description("") + .Rarity(0); + + + //------------------------------------------------------ + //Rarity 1 (Green) + //------------------------------------------------------ + + new Pants() + .DefaultStatSlot(2) + .Name("") + .Description("") + .Rarity(1); + + //------------------------------------------------------ + //Rarity 2 (Blue) + //------------------------------------------------------ + + new Pants() + .DefaultStatSlot(3) + .Name("") + .Description("") + .Rarity(2); + + //------------------------------------------------------ + //Rarity 3 (Yellow) + //------------------------------------------------------ + + new Pants() + .DefaultStatSlot(4) + .Name("") + .Description("") + .Rarity(3); + + //------------------------------------------------------ + //Rarity 4 (Red) + //------------------------------------------------------ + + new Pants() + .DefaultStatSlot(5) + .Name("") + .Description("") + .Rarity(4); + + } + } +} \ No newline at end of file diff --git a/Items/ItemDefinitions/Quivers.cs b/Items/ItemDefinitions/Quivers.cs new file mode 100644 index 0000000..f5fff52 --- /dev/null +++ b/Items/ItemDefinitions/Quivers.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; + +using ChampionsOfForest.Items.ItemTemplates; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + public static partial class ItemDatabase + { + + public static void AddQuivers() + { + //------------------------------------------------------ + //Rarity 0 (White) + //------------------------------------------------------ + + new Quiver() + .RangedStatSlot(1) + .Name("") + .Description("") + .Rarity(0); + + //------------------------------------------------------ + //Rarity 1 (Green) + //------------------------------------------------------ + + new Quiver() + .RangedStatSlot(1) + .DefaultStatSlot(1) + .Name("") + .Description("") + .Rarity(1); + + //------------------------------------------------------ + //Rarity 2 (Blue) + //------------------------------------------------------ + + new Quiver() + .RangedStatSlot(2) + .DefaultStatSlot(1) + .Name("") + .Description("") + .Rarity(2); + + //------------------------------------------------------ + //Rarity 3 (Yellow) + //------------------------------------------------------ + + new Quiver() + .RangedStatSlot(2) + .DefaultStatSlot(2) + .Name("") + .Description("") + .Rarity(3); + + //------------------------------------------------------ + //Rarity 4 (Red) + //------------------------------------------------------ + + new Quiver() + .RangedStatSlot(3) + .DefaultStatSlot(2) + .Name("") + .Description("") + .Rarity(4); + + } + } +} \ No newline at end of file diff --git a/Items/ItemDefinitions/Rings.cs b/Items/ItemDefinitions/Rings.cs new file mode 100644 index 0000000..f0d842d --- /dev/null +++ b/Items/ItemDefinitions/Rings.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; + +using ChampionsOfForest.Items.ItemTemplates; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + + public static partial class ItemDatabase + { + + public static void AddRings() + { + + //------------------------------------------------------ + //Rarity 0 (White) + //------------------------------------------------------ + + new Ring() + .RingStatSlot(1) + //.DefaultStatSlot(0) + .Name("") + .Description("") + .Rarity(0); + + + //------------------------------------------------------ + //Rarity 1 (Green) + //------------------------------------------------------ + + new Ring() + .RingStatSlot(1) + .DefaultStatSlot(1) + .Name("") + .Description("") + .Rarity(1); + + //------------------------------------------------------ + //Rarity 2 (Blue) + //------------------------------------------------------ + + new Ring() + .RingStatSlot(2) + .DefaultStatSlot(1) + .Name("") + .Description("") + .Rarity(2); + + //------------------------------------------------------ + //Rarity 3 (Yellow) + //------------------------------------------------------ + + new Ring() + .RingStatSlot(3) + .DefaultStatSlot(1) + .Name("") + .Description("") + .Rarity(3); + + //------------------------------------------------------ + //Rarity 4 (Red) + //------------------------------------------------------ + + new Ring() + .RingStatSlot(4) + .DefaultStatSlot(1) + .Name("") + .Description("") + .Rarity(4); + } + + } +} \ No newline at end of file diff --git a/Items/ItemDefinitions/Shields.cs b/Items/ItemDefinitions/Shields.cs new file mode 100644 index 0000000..9bf4252 --- /dev/null +++ b/Items/ItemDefinitions/Shields.cs @@ -0,0 +1,186 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; + +using ChampionsOfForest.Items.ItemTemplates; +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + public static partial class ItemDatabase + { + public static void AddShields() + { + //------------------------------------------------------ + //Rarity 0 (Grey) + //------------------------------------------------------ + new Shield() + .ShieldStatSlot(1) + .StatSlot(new Stat[] { BLOCK }) + .Name("Rusten Battered Shield") + .Description("Covered in rust and scarred from countless blows, this battered shield has seen better days. It creaks with every movement, offering only the most basic protection.") + .Rarity(0); + + new Shield() + .StatSlot(new Stat[] { BLOCK }) + .Name("Cracked Buckler") + .Description("Cracked and barely holding together, this old buckler offers little more than false hope. Its surface is marred with dents and splits from battles long forgotten.") + .Rarity(0); + new Shield() + .StatSlot(new Stat[] { BLOCK }) + .StatSlot(new Stat[] { STRENGTH, NONE }) + .Name("Shattered Guard") + .Description("No warior would pick this up and call it a shield.") + .Rarity(0); + + //------------------------------------------------------ + //Rarity 1 (White) + //------------------------------------------------------ + + new Shield() + .ShieldStatSlot(2) + .StatSlot(new Stat[] { BLOCK }) + .Name("Plain Iron Shield") + .Description("Fuck you Hazard. ~Lama Mega~") + .Rarity(1); + + new Shield() + .ShieldStatSlot(1) + .StatSlot(new Stat[] { BLOCK }) + .StatSlot(new Stat[] { THORNS, BASE_MELEE_DAMAGE }) + .Name("Wooden Buckler") + .Description("This shield has a precariously sticking out nail.") + .Rarity(1); + + new Shield() + .ShieldStatSlot(1) + .DefaultStatSlot(1) + .StatSlot(new Stat[] { BLOCK }) + .Name("Footknights's Roundshield") + .Description("") + .Rarity(1); + + //------------------------------------------------------ + //Rarity 2 (Dark Blue) + //------------------------------------------------------ + + new Shield() + .ShieldStatSlot(3) + .StatSlot(new Stat[] { BLOCK }) + .Name("Runed Iron Bulwark") + .Description("Fuck you Hazard. ~Lama Mega~") + .Rarity(1); + + + new Shield() + .ShieldStatSlot(3) + .StatSlot(new Stat[] { BLOCK }) + .StatSlot(new Stat[] { DODGE_CHANCE }) + .Name("Reinforced Buckler") + .Description("Light and small shield that allows you to dodge attacks.") + .Rarity(2); + + new Shield() + .ShieldStatSlot(3) + .StatSlot(new Stat[] { BLOCK }) + .StatSlot(new Stat[] { DODGE_CHANCE }) + .Name("Knight's Guard") + .Description("") + .Rarity(2); + + + //------------------------------------------------------ + //Rarity 3 (Blue) + //------------------------------------------------------ + + new Shield() + .ShieldStatSlot(3) + .StatSlot(new Stat[] { BLOCK }) + .StatSlot(new Stat[] { DODGE_CHANCE }) + .Name("1st Blue Shield") + .Description("") + .Rarity(3); + + //------------------------------------------------------ + //Rarity 4 (Yellow) + //------------------------------------------------------ + + new Shield() + .ShieldStatSlot(4) + .StatSlot(new Stat[] { BLOCK }) + .StatSlot(new Stat[] { DODGE_CHANCE }) + .Name("1st Yellow Shield") + .Description("") + .Rarity(4); + + //------------------------------------------------------ + //Rarity 5 (Orange) + //------------------------------------------------------ + + new Shield() + .ShieldStatSlot(5) + .StatSlot(new Stat[] { BLOCK }) + .StatSlot(new Stat[] { DODGE_CHANCE }) + .Name("1st Orange Shield") + .Description("") + .Rarity(5); + + //------------------------------------------------------ + //Rarity 6 (Green) + //------------------------------------------------------ + + new Shield() + .ShieldStatSlot(6) + .StatSlot(new Stat[] { BLOCK }) + .StatSlot(new Stat[] { DODGE_CHANCE }) + .Name("1st Green Shield") + .Description("") + .Rarity(6); + + //------------------------------------------------------ + //Rarity 7 (Red) + //------------------------------------------------------ + + new Shield() + .ShieldStatSlot(7) + .StatSlot(new Stat[] { BLOCK }) + .StatSlot(new Stat[] { DODGE_CHANCE }) + .Name("1st Red Shield") + .Description("") + .Rarity(7); + + } + + } +} + + +//------------------------------------------------------ +//Rarity 0 (White) +//------------------------------------------------------ + + + +//------------------------------------------------------ +//Rarity 1 (Green) +//------------------------------------------------------ + + + +//------------------------------------------------------ +//Rarity 2 (Blue) +//------------------------------------------------------ + + + +//------------------------------------------------------ +//Rarity 3 (Yellow) +//------------------------------------------------------ + + + +//------------------------------------------------------ +//Rarity 4 (Red) +//------------------------------------------------------ \ No newline at end of file diff --git a/Items/ItemDefinitions/ShoulderArmor.cs b/Items/ItemDefinitions/ShoulderArmor.cs new file mode 100644 index 0000000..dc8bee6 --- /dev/null +++ b/Items/ItemDefinitions/ShoulderArmor.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; + +using ChampionsOfForest.Items.ItemTemplates; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + public static partial class ItemDatabase + { + + public static void AddShoulderArmor() + { + + //------------------------------------------------------ + //Rarity 0 (White) + //------------------------------------------------------ + + new ChestArmor() + .DefaultStatSlot(1) + .Name("") + .Description("") + .Rarity(0); + + //------------------------------------------------------ + //Rarity 1 (Green) + //------------------------------------------------------ + + new ChestArmor() + .DefaultStatSlot(2) + .Name("") + .Description("") + .Rarity(1); + + //------------------------------------------------------ + //Rarity 2 (Blue) + //------------------------------------------------------ + + new ChestArmor() + .DefaultStatSlot(3) + .Name("") + .Description("") + .Rarity(2); + + //------------------------------------------------------ + //Rarity 3 (Yellow) + //------------------------------------------------------ + + new ChestArmor() + .DefaultStatSlot(4) + .Name("") + .Description("") + .Rarity(3); + + //------------------------------------------------------ + //Rarity 4 (Red) + //------------------------------------------------------ + + new ChestArmor() + .DefaultStatSlot(5) + .Name("") + .Description("") + .Rarity(4); + + } + } +} \ No newline at end of file diff --git a/Items/ItemDefinitions/SpellScrolls.cs b/Items/ItemDefinitions/SpellScrolls.cs new file mode 100644 index 0000000..0324772 --- /dev/null +++ b/Items/ItemDefinitions/SpellScrolls.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Policy; +using System.Text; + +using ChampionsOfForest.Items.ItemTemplates; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; + +namespace ChampionsOfForest.Items +{ + public static partial class ItemDatabase + { + + public static void AddSpellScrolls() + { + + //------------------------------------------------------ + //Rarity 0 (White) + //------------------------------------------------------ + + new SpellScroll() + .DefaultStatSlot(1) + .Name("") + .Description("") + .Rarity(0); + + //------------------------------------------------------ + //Rarity 1 (Green) + //------------------------------------------------------ + + new SpellScroll() + .DefaultStatSlot(2) + .Name("") + .Description("") + .Rarity(1); + + //------------------------------------------------------ + //Rarity 2 (Blue) + //------------------------------------------------------ + + new SpellScroll() + .DefaultStatSlot(3) + .Name("") + .Description("") + .Rarity(2); + + //------------------------------------------------------ + //Rarity 3 (Yellow) + //------------------------------------------------------ + + new SpellScroll() + .DefaultStatSlot(4) + .Name("") + .Description("") + .Rarity(3); + + //------------------------------------------------------ + //Rarity 4 (Red) + //------------------------------------------------------ + + new SpellScroll() + .DefaultStatSlot(5) + .Name("") + .Description("") + .Rarity(4); + + } + } +} \ No newline at end of file diff --git a/Items/ItemPickUp.cs b/Items/ItemPickUp.cs index 855106d..b1c8b98 100644 --- a/Items/ItemPickUp.cs +++ b/Items/ItemPickUp.cs @@ -1,14 +1,19 @@ using System; +using System.Collections; using ChampionsOfForest.Effects.Sound_Effects; +using ChampionsOfForest.Network; +using ChampionsOfForest.Network.Commands; using TheForest.Utils; using UnityEngine; +using static ChampionsOfForest.Items.ItemDefinition; + using Random = UnityEngine.Random; -namespace ChampionsOfForest +namespace ChampionsOfForest.Items { public class ItemPickUp : MonoBehaviour { @@ -16,21 +21,26 @@ public class ItemPickUp : MonoBehaviour public int amount; public Item item; public float lifetime = 900; //in seconds - + private int rarity => (int) item.rarity; private string label; private Rigidbody rb; private float displayTime; private static Camera mainCam; private float constantViewTime; private AudioSource src; + public enum DropSource { EnemyOnDeath = 120, PlayerInventory = 60, - PlayerDeath = 900, + PlayerDeath = 2000, Effigy = 30, } - private void Start() + + private Vector3 randomAxis; + + + private IEnumerator Start() { if (mainCam == null) { @@ -39,38 +49,174 @@ private void Start() if (amount == 0) { - amount = item.Amount; + amount = item.stackedAmount; } - if (item.Amount < 1) - item.Amount = 1; + if (item.stackedAmount < 1) + item.stackedAmount = 1; if (ModSettings.IsDedicated) - return; + yield break; + rb = GetComponent(); - rb.drag = 2.1f; - rb.angularDrag = 0.01f; - rb.isKinematic = true; - Invoke("UnlockPhysics", 0.5f + Random.value); + src = gameObject.AddComponent(); src.spatialBlend = 1f; - src.maxDistance = 150f; - src.volume = 3; + src.maxDistance = 100f; + src.volume = 1; src.clip = Res.ResourceLoader.instance.LoadedAudio[item.GetDropSoundID()]; - src.Play(100UL); - } + src.pitch = item.GetInvSoundPitch(); + src.Play(10UL); - public void EnableDisplay() + + switch (rarity) + { + case 0: + case 1: + case 2: + yield return CommonAnimation(); + break; + case 3: + yield return RareAnimation(); + break; + case 4: + yield return LegendaryAnimation(); + break; + default: + break; + } + } + private IEnumerator CommonAnimation() { - displayTime = 1.5f; + const float delayForStrongDrag = 2f; + const float strongDrag = 15; + const float delayForKinematic = 0.5f; + const float initalLaunchForce = 2f; + const float upwardLaunchForce = 4; + + rb.mass = 0.25f; + rb.drag = 0.15f; + rb.angularDrag = 0.03f; + rb.isKinematic = false; + float scale = rarity * 0.1f + 0.7f; + transform.localScale = Vector3.one * scale; + //wait one frame + yield return null; + + Vector3 randomDirection = new Vector3(Random.value * 2 - 1, 0.25f, Random.value * 2 - 1).normalized; + rb.AddTorque(randomDirection * 200, ForceMode.VelocityChange); + rb.AddForce(Vector3.up * upwardLaunchForce + randomDirection * initalLaunchForce, ForceMode.VelocityChange); + + yield return null; + + while (rb.velocity.y > 0f) + { + yield return null; + } + yield return new WaitForSeconds(delayForStrongDrag); + while (rb.velocity.y < 0f) + { + yield return null; + } + rb.drag = strongDrag; + rb.angularDrag = strongDrag; + yield return new WaitForSeconds(delayForKinematic); + rb.isKinematic = true; + } + private IEnumerator RareAnimation() + { + const float delayForStrongDrag = 2f; + const float strongDrag = 10; + const float delayForKinematic = 1; + const float initalLaunchForce = 2.5f; + const float upwardLaunchForce = 5; + + rb.mass = 0.25f; + rb.drag = 0.1f; + rb.angularDrag = 0.01f; + rb.isKinematic = false; - public void UnlockPhysics() + //wait one frame + yield return null; + + Vector3 randomDirection = new Vector3(Random.value * 2 - 1, 0.25f, Random.value * 2 - 1).normalized; + rb.AddTorque(randomDirection * 300, ForceMode.VelocityChange); + rb.AddForce(Vector3.up * upwardLaunchForce + randomDirection * initalLaunchForce, ForceMode.VelocityChange); + + yield return null; + + while (rb.velocity.y > 0f) + { + yield return null; + } + + yield return new WaitForSeconds(delayForStrongDrag); + while (rb.velocity.y < 0f) + { + yield return null; + } + rb.drag = strongDrag; + rb.angularDrag = strongDrag; + yield return new WaitForSeconds(delayForKinematic); + rb.isKinematic = true; + + } + private IEnumerator LegendaryAnimation() { + const float delayForStrongDrag = 1.7f; + const float strongDrag = 8; + const float delayForKinematic = 0.5f; + const float initalLaunchForce = 4; + const float upwardLaunchForce = 12; + const float downwardLaunchForce = 25; + const float bumpForce = 4; + + rb.mass = 0.25f; + rb.drag = 0.1f; + rb.angularDrag = 0.01f; rb.isKinematic = false; - Vector3 randomv3 = new Vector3(Random.value, 0, Random.value); - rb.AddTorque(randomv3 * 100, ForceMode.VelocityChange); - rb.AddForce(randomv3 * 2, ForceMode.VelocityChange); + //wait one frame + yield return null; + + Vector3 randomDirection = new Vector3(Random.value * 2 - 1, 0.25f, Random.value * 2 - 1).normalized; + randomAxis = new Vector3(Random.value * 2 - 1, Random.value * 2 - 1, Random.value * 2 - 1).normalized; + rb.AddTorque(randomDirection * 400, ForceMode.VelocityChange); + rb.AddForce(Vector3.up * upwardLaunchForce + randomDirection * initalLaunchForce, ForceMode.VelocityChange); + + yield return null; + + while (rb.velocity.y > 0f) + { + yield return null; + } + + rb.AddForce(Vector3.down * downwardLaunchForce, ForceMode.VelocityChange); + + yield return new WaitForSeconds(delayForStrongDrag); + + while (rb.velocity.y < 0f) + { + yield return null; + } + rb.drag = strongDrag; + rb.angularDrag = strongDrag; + yield return new WaitForSeconds(delayForKinematic); + rb.drag = 0.1f; + rb.angularDrag = 0.01f; + rb.AddForce(Vector3.up * bumpForce, ForceMode.VelocityChange); + yield return null; + while (rb.velocity.y > 0f) + { + yield return null; + } + rb.isKinematic = true; + } + + + public void EnableDisplay() + { + displayTime = 1.5f; } private void OnGUI() @@ -109,7 +255,7 @@ private void OnGUI() } } - GUI.color = new Color(MainMenu.RarityColors[item.Rarity].r, MainMenu.RarityColors[item.Rarity].g, MainMenu.RarityColors[item.Rarity].b, displayTime); + GUI.color = new Color(item.RarityColor.r, item.RarityColor.g, item.RarityColor.b, displayTime); GUIStyle style = new GUIStyle(GUI.skin.label) { alignment = TextAnchor.UpperCenter, font = MainMenu.Instance.mainFont, fontSize = Mathf.RoundToInt(40 * MainMenu.Instance.screenScale) }; float titleHeight = style.CalcHeight(new GUIContent(label), r.width); @@ -124,31 +270,31 @@ private void OnGUI() float lineheight = statStyle.CalcHeight(new GUIContent(" "), r.width); Rect bg = new Rect(r) { - height = titleHeight + (lineheight * item.Stats.Count + 1 ) + height = titleHeight + (lineheight * item.stats.Count + 1 ) }; GUI.Box(bg, string.Empty); - for (int i = 0; i < item.Stats.Count; i++) + for (int i = 0; i < item.stats.Count; i++) { - ItemStat stat = item.Stats[i]; - double amount = stat.Amount; - if (stat.DisplayAsPercent) + ItemStat stat = item.stats[i]; + double amount = stat.amount; + if (stat.displayAsPercent) { amount *= 100; } - amount = Math.Round(amount, stat.RoundingCount); - string statslabel = $" {stat.Name}"; + amount = Math.Round(amount, stat.roundingCount); + string statslabel = $" {stat.name}"; string statsvalue; - if (stat.DisplayAsPercent) + if (stat.displayAsPercent) { - statsvalue = amount.ToString("N" + stat.RoundingCount) + "% "; + statsvalue = amount.ToString("N" + stat.roundingCount) + "% "; } else { - statsvalue = amount.ToString("N" + stat.RoundingCount) + " "; + statsvalue = amount.ToString("N" + stat.roundingCount) + " "; } - GUI.color = MainMenu.RarityColors[stat.Rarity]; + GUI.color = Color.white; //Name statStyle.alignment = TextAnchor.UpperLeft; @@ -173,7 +319,7 @@ public void Remove() public void OnDestroy() { - if((LocalPlayer.Transform.position-transform.position).sqrMagnitude < 250f) + if((LocalPlayer.Transform.position-transform.position).sqrMagnitude < 150f) GlobalSFX.Play(GlobalSFX.SFX.Pickup); } @@ -190,17 +336,7 @@ private void Update() lifetime -= Time.deltaTime; else { - using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) - { - using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream)) - { - w.Write(4); - w.Write(ID); - w.Close(); - } - Network.NetworkManager.SendLine(answerStream.ToArray(), Network.NetworkManager.Target.Everyone); - answerStream.Close(); - } + COTFCommand.Send(NetworkManager.Target.Others, new DestroyItemPickup(ID)); PickUpManager.RemovePickup(ID); Destroy(gameObject); } @@ -216,17 +352,7 @@ public bool PickUp() { if (Player.Inventory.Instance.AddItem(item, amount)) { - using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) - { - using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream)) - { - w.Write(4); - w.Write(ID); - w.Close(); - } - Network.NetworkManager.SendLine(answerStream.ToArray(), Network.NetworkManager.Target.Others); - answerStream.Close(); - } + COTFCommand.Send(NetworkManager.Target.Others, new DestroyItemPickup(ID)); PickUpManager.RemovePickup(ID); Destroy(gameObject); return true; @@ -258,17 +384,7 @@ public bool PickUp() amount--; if (amount <= 0) { - using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) - { - using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream)) - { - w.Write(4); - w.Write(ID); - w.Close(); - } - Network.NetworkManager.SendLine(answerStream.ToArray(), Network.NetworkManager.Target.Everyone); - answerStream.Close(); - } + COTFCommand.Send(NetworkManager.Target.Others, new DestroyItemPickup(ID)); PickUpManager.RemovePickup(ID); Destroy(gameObject); } diff --git a/Items/ItemPicker.cs b/Items/ItemPicker.cs index 6789d13..3c1fcbc 100644 --- a/Items/ItemPicker.cs +++ b/Items/ItemPicker.cs @@ -2,7 +2,7 @@ using UnityEngine; -namespace ChampionsOfForest +namespace ChampionsOfForest.Items { public class ClientItemPicker : MonoBehaviour { diff --git a/Items/ItemStat.cs b/Items/ItemStat.cs index 5b7c4d5..9373b68 100644 --- a/Items/ItemStat.cs +++ b/Items/ItemStat.cs @@ -1,9 +1,178 @@ using System; using System.Collections.Generic; +using System.Linq; + +using ChampionsOfForest.Player; + using UnityEngine; -namespace ChampionsOfForest +using static ChampionsOfForest.Items.ItemDatabase; +using static ChampionsOfForest.Items.ItemStatBuilder; + +namespace ChampionsOfForest.Items { + + public class ItemStatBuilder : ItemStat + { + private float CompareAdd(List x) => x.Sum(); + private float CompareMult(List x) + { + float f = 1; + for (int j = 0; j < x.Count; j++) + f *= x[j]; + return f - 1; + } + private float CompareMultPlus1(List x) + { + float f = 1; + for (int j = 0; j < x.Count; j++) + f *= 1 + x[j]; + return f; + } + private float Compare1MinusMult(List x) + { + float f = 1; + for (int k = 0; k < x.Count; k++) + f *= 1 - x[k]; + return 1 - f; + } + + public ItemStatBuilder(Stat id, string name, float min, float max) + { + this.id = (int)id; + this.name = name; + this.rangeMin = min; + this.rangeMax = max; + ItemDatabase.AddStat(this); + } + public ItemStatBuilder Additive(IAdditiveStat stat) + { + this.comparingFunc = CompareAdd; + this.OnEquip = f => stat.Add(true); + this.OnUnequip = f => stat.Sub(false); + return this; + } + public ItemStatBuilder Additive(IAdditiveStat stat) + { + this.comparingFunc = CompareAdd; + this.OnEquip = f => stat.Add(f); + this.OnUnequip = f => stat.Sub(f); + return this; + } + public ItemStatBuilder Additive(IAdditiveStat stat) + { + this.comparingFunc = CompareAdd; + this.OnEquip = f => stat.Add((int)f); + this.OnUnequip = f => stat.Sub((int)f); + return this; + } + + public ItemStatBuilder Multiplicative(IMultiplicativeStat stat) + { + this.comparingFunc = CompareMult; + this.OnEquip = f => stat.Multiply(f); + this.OnEquip = f => stat.Divide(f); + return this; + } + + public ItemStatBuilder MultiplyPlusOne(IMultiplicativeStat stat) + { + this.comparingFunc = CompareMultPlus1; + this.OnEquip = f => stat.Multiply(f+1f); + this.OnEquip = f => stat.Divide(f+1f); + return this; + } + + public ItemStatBuilder OneMinusMultiplier(IMultiplicativeStat stat) + { + this.comparingFunc = Compare1MinusMult; + this.OnEquip = f => stat.Multiply(1f-f); + this.OnEquip = f => stat.Divide(1f-f); + return this; + } + + // this stat will scale linearly with item level + public ItemStatBuilder LinearLevelScaling() + { + this.levelExponent = 1; + return this; + } + + // this stat will scale linearly with item level + public ItemStatBuilder NoLevelScaling() + { + this.levelExponent = 0; + return this; + } + + public ItemStatBuilder LevelScaling(float scaling) + { + this.levelExponent = scaling; + return this; + } + + public ItemStatBuilder RarityScaling(float scaling) + { + this.rarityCoefficient = scaling; + return this; + } + + public ItemStatBuilder NoRarityScaling() + { + this.rarityCoefficient = 0; + return this; + } + + public ItemStatBuilder AffectsStat(NumericPlayerStatBase stat) where T : struct, IComparable, IComparable, IEquatable, IConvertible, IFormattable + { + if (stat is null) + throw new ArgumentNullException(nameof(stat)); + this.GetTotalStat = stat.GetFormattedAmount; + return this; + } + + public ItemStatBuilder RoundTo(int digitsAfterZero) + { + this.roundingCount = digitsAfterZero; + return this; + } + + public ItemStatBuilder PercentFormatting() + { + this.displayAsPercent = true; + return this; + } + + public ItemStatBuilder Cap(float maximumPossibleValue) + { + this.valueCap = maximumPossibleValue; + return this; + } + + public ItemStatBuilder AffectsCarryCapacity(params MoreCraftingReceipes.VanillaItemIDs[] itemIdsToExpandCarryCapacity) + { + this.comparingFunc = CompareAdd; + this.OnEquip = f => + { + for (int i = 0; i < itemIdsToExpandCarryCapacity.Length; i++) + { + ModdedPlayer.instance.AddExtraItemCapacity((int)itemIdsToExpandCarryCapacity[i], Mathf.RoundToInt(f)); + } + }; + this.OnUnequip = f => + { + for (int i = 0; i < itemIdsToExpandCarryCapacity.Length; i++) + { + ModdedPlayer.instance.AddExtraItemCapacity((int)itemIdsToExpandCarryCapacity[i], -Mathf.RoundToInt(f)); + } + }; + this.GetTotalStat = () => string.Join("," , itemIdsToExpandCarryCapacity.Select(id => LocalPlayer.Inventory.GetMaxAmountOf((int)id).ToString())); + return this; + } + + + + } public class ItemStat { public class StatCompare @@ -16,134 +185,107 @@ public StatCompare(Func, float> calculateValues) } } - public float LevelPow = 1; - public float ValueCap = 0; - public int StatID = 0; - public string Name = ""; - public int Rarity = 0; - public float MinAmount = 0; - public float MaxAmount = 0; - public float Amount = 1; - public float Multipier = 1; - public bool DisplayAsPercent = false; - public int RoundingCount; + public float levelExponent = 1; + public float valueCap = 0; + public int id = 0; + public string name = ""; + public float rangeMin = 0; + public float rangeMax = 0; + public float amount = 1; + public float multipier = 1; + public float rarityCoefficient = 1; + + // display + public bool displayAsPercent = false; + public int roundingCount; public int possibleStatsIndex = -1; - private StatCompare comparing; - public Func GetTotalStat; - public delegate void OnEquipDelegate(float f); - public OnEquipDelegate OnEquip; - public delegate void OnUnequipDelegate(float f); + public Func, float> comparingFunc; + public Func GetTotalStat; - public OnUnequipDelegate OnUnequip; + public delegate void StatActionDelegate(float f); - public delegate void OnConsumeDelegate(float f); + public StatActionDelegate OnEquip; + public StatActionDelegate OnUnequip; - public OnConsumeDelegate OnConsume; - //public delegate object VariableReturnDelegate(); - //public VariableReturnDelegate GetVariable; - //public Type variableType; public float EvaluateTotalIncrease(List amounts) { - return comparing.CalculateValues(amounts); - } - - /// - /// Creates new itemStat and adds it to the database - /// - /// ID of the item, used to access it from the DB - /// Min amount for the stat at level 1 - /// Max amount for the stat at level 1 - /// Name of the stat, what should be displayed in the item context menu - /// range 0-7 - /// How much should it increase per level(min max values will be powered to this amount) - public ItemStat(int id, float Min, float Max, float LvlPower, string name, StatCompare comparingMethod, int rarity,Func getValueFunc, OnEquipDelegate onEquip = null, OnUnequipDelegate onUnequip = null, OnConsumeDelegate onConsume = null) - { - comparing = comparingMethod; - LevelPow = LvlPower; - StatID = id; - MaxAmount = Max; - MinAmount = Min; - Name = name; - Rarity = rarity; - OnEquip = onEquip; - OnUnequip = onUnequip; - OnConsume = onConsume; - GetTotalStat = getValueFunc; - ItemDataBase.AddStat(this); - } - - public ItemStat(ItemStat s, int level = 1, int possibleStatsIdx= -1) - { - Name = s.Name; - LevelPow = s.LevelPow; - StatID = s.StatID; - Rarity = s.Rarity; - MinAmount = s.MinAmount; - MaxAmount = s.MaxAmount; - OnEquip = s.OnEquip; - OnUnequip = s.OnUnequip; - OnConsume = s.OnConsume; - RoundingCount = s.RoundingCount; - DisplayAsPercent = s.DisplayAsPercent; - GetTotalStat = s.GetTotalStat; - this.ValueCap = s.ValueCap; - this.Multipier = s.Multipier; - Amount = RollValue(level); - if (ValueCap != 0) - { - Amount = Mathf.Min(ValueCap, Amount); - } - Amount *= Multipier; - possibleStatsIndex = possibleStatsIdx; + return comparingFunc(amounts); } + public ItemStat() { + + } + + // Returns a copy of an item stat + public ItemStat(ItemStat original, int level, int possibleStatsIdx, float rarityMult) + { + name = original.name; + levelExponent = original.levelExponent; + id = original.id; + rangeMin = original.rangeMin; + rangeMax = original.rangeMax; + OnEquip = original.OnEquip; + OnUnequip = original.OnUnequip; + roundingCount = original.roundingCount; + displayAsPercent = original.displayAsPercent; + GetTotalStat = original.GetTotalStat; + valueCap = original.valueCap; + multipier = original.multipier; + rarityCoefficient = original.rarityCoefficient; + comparingFunc = original.comparingFunc; + amount = RollValue(level, rarityMult); + possibleStatsIndex = possibleStatsIdx; } - public float RollValue(int level = 1) + + private float GetMultiplier(int level, float rarityMult) { - float mult = 1; - if (LevelPow != 0) + float levelMult = 1; + if (levelExponent != 0) { - mult = Mathf.Pow(level, LevelPow); + levelMult = Mathf.Pow(level, levelExponent); } - float f = UnityEngine.Random.Range(MinAmount, MaxAmount) * mult; - return f; + rarityMult *= rarityCoefficient; + return multipier * levelMult * rarityMult; + } + + public float RollValue(int level, float rarityMult) + { + float randomValue = UnityEngine.Random.Range(rangeMin, rangeMax); + float mult = GetMultiplier(level, rarityMult); + float val = randomValue * mult; + if (valueCap != 0 && val > valueCap) + val = valueCap; + return val; } public string GetMaxValue(int level,float rarityMult) { - string formatting = (DisplayAsPercent ? "P" : "N" )+ RoundingCount; - float mult = 1; - if (LevelPow != 0) - { - mult = Mathf.Pow(level, LevelPow); - } - float f = MaxAmount * mult*rarityMult; - if (ValueCap != 0) - return (Mathf.Min(f, ValueCap)*Multipier).ToString(formatting); - else - return (f* Multipier).ToString(formatting); + string formatting = (displayAsPercent ? "P" : "N" )+ roundingCount; + + float mult = GetMultiplier(level, rarityMult); + float val = rangeMax * mult; + if (valueCap != 0 && val > valueCap) + return (valueCap).ToString(formatting) + " (capped)"; + else + return (val).ToString(formatting); } public string GetMinValue(int level, float rarityMult) { - string formatting =( DisplayAsPercent ? "P" : "N" )+ RoundingCount; + string formatting = (displayAsPercent ? "P" : "N") + roundingCount; - float mult = 1; - if (LevelPow != 0) - { - mult = Mathf.Pow(level, LevelPow); - } - float f = MinAmount * mult * rarityMult; - if (ValueCap != 0) - return (Mathf.Min(f, ValueCap) * Multipier).ToString(formatting); + float mult = GetMultiplier(level, rarityMult); + float val = rangeMin * mult; + if (valueCap != 0 && val > valueCap) + return (valueCap).ToString(formatting) + " (capped)"; else - return (f * Multipier).ToString(formatting); + return (val).ToString(formatting); } } } \ No newline at end of file diff --git a/Items/ItemTemplates.cs b/Items/ItemTemplates.cs new file mode 100644 index 0000000..559175e --- /dev/null +++ b/Items/ItemTemplates.cs @@ -0,0 +1,812 @@ +using System.Linq; +using System.Collections.Generic; +using ChampionsOfForest.Items; +using ChampionsOfForest.Items.Sets; +using ChampionsOfForest.Localization; +using ChampionsOfForest.Player; + +using static ChampionsOfForest.Items.ItemDatabase.Stat; +using static ChampionsOfForest.Items.ItemDatabase; + +namespace ChampionsOfForest.Items.ItemTemplates +{ + + public abstract class ItemTemplateBuilder : ItemDefinition + { + + private static List defaultStats = null; + private static List magicStats = null; + private static List meleeStats = null; + private static List rangedStats = null; + private static List defenseStats = null; + private static List recoveryStats = null; + + protected const int PADDING = 10000; + protected void Register() + { + + id = ItemDatabase.ItemTemplateStorage[type].Count() + PADDING * (int)type; + ItemDatabase.ItemTemplateStorage[type].Add(this); + + } + + public ItemTemplateBuilder() + { + if (defaultStats == null || defaultStats.Count() == 0) + { + defaultStats = ToItemStatList(defaultStatIds); + } + if (magicStats == null || magicStats.Count() == 0) + { + magicStats = ToItemStatList(magicStatIds); + } + if (meleeStats == null || meleeStats.Count() == 0) + { + meleeStats = ToItemStatList(meleeStatIds); + } + if (rangedStats == null || rangedStats.Count() == 0) + { + rangedStats = ToItemStatList(rangedStatIds); + } + if (defenseStats == null || defenseStats.Count() == 0) + { + defenseStats = ToItemStatList(defenseStatIds); + } + if (recoveryStats == null || recoveryStats.Count() == 0) + { + recoveryStats = ToItemStatList(recoveryStatIds); + } + } + + protected List ToItemStatList(Stat[] stats) + { + var list = new List(); + foreach (var stat in defaultStatIds) + { + list.Add(new ItemStat(ItemDatabase.Stats[(int)stat], 1, -1, 1)); + } + return list; + } + + // pool of stats to appear on items by default + private readonly Stat[] defaultStatIds = new Stat[] + { + STRENGTH, + AGILITY, + VITALITY, + INTELLIGENCE, + MAX_LIFE, + MAX_ENERGY, + LIFE_REGEN_BASE, + STAMINA_REGEN_BASE, + STAMINA_AND_ENERGY_REGEN_MULT, + LIFE_REGEN_MULT, + DAMAGE_REDUCTION, + CRIT_CHANCE, + CRIT_DAMAGE, + LIFE_ON_HIT, + DODGE_CHANCE, + ARMOR, + ELITE_DAMAGE_REDUCTION, + ATTACKSPEED, + EXP_GAIN_MULT, + MASSACRE_DURATION, + SPELL_DAMAGE_MULTIPLIER, + MELEE_DAMAGE_INCREASE, + RANGED_DAMAGE_INCREASE, + BASE_SPELL_DAMAGE, + BASE_MELEE_DAMAGE, + BASE_RANGED_DAMAGE, + ALL_RECOVERY, + MOVEMENT_SPEED, + ATTACK_COST_REDUCTION, + SPELL_COST_REDUCTION, + SPELL_COST_TO_STAMINA, + ENERGY_REGEN_BASE, + MAX_LIFE_MULT, + MAX_ENERGY_MULT, + COOLDOWN_REDUCTION, + ENERGY_ON_HIT, + LOOT_QUANTITY, // think about keeping this later + LOOT_QUALITY, + ALL_ATTRIBUTES, + JUMP_POWER, + THORNS + }; + + // adds the defaultStatIds n times to the stat pool for the item + public ItemTemplateBuilder DefaultStatSlot(int n = 1, float probability = 1) + { + for (int i = 0; i < n; i++) + statSlots.Add(new StatSlot(defaultStats, probability)); + return this; + } + + public ItemTemplateBuilder StatSlot(Stat[] statPool, float probability = 1) + { + statSlots.Add(new StatSlot(ToItemStatList(statPool), probability)); + return this; + } + + public ItemTemplateBuilder DropsFrom(EnemyProgression.Enemy enemyTypes) + { + lootTable = enemyTypes; + return this; + } + + public ItemTemplateBuilder Name(string s) + { + name = s; + return this; + } + + public ItemTemplateBuilder Description(string s) + { + description = s; + return this; + } + + public ItemTemplateBuilder Lore(string s) + { + lore = s; + return this; + } + + public ItemTemplateBuilder UniqueStat(string statDescription, OnItemUsed _onEquip, OnItemUsed _onUnequip) + { + onEquipCallback = _onEquip; + onUnequipCallback = _onUnequip; + uniqueStat = statDescription; + return this; + } + + public ItemTemplateBuilder LevelRequirement(int minimumLevel) + { + minLevel = minimumLevel; + maxLevel = minimumLevel + 1; + return this; + } + + public ItemTemplateBuilder Rarity(int r) + { + base.rarity = (Rarity)r; + return this; + } + public ItemTemplateBuilder Rarity(Rarity r) + { + base.rarity = r; + return this; + } + + public ItemTemplateBuilder Icon(int iconid) + { + icon = Res.ResourceLoader.GetTexture(iconid); // Texture2D <- int + return this; + } + + private readonly Stat[] magicStatIds = new Stat[] + { + INTELLIGENCE, + SPELL_DAMAGE_MULTIPLIER, + BASE_SPELL_DAMAGE, + SPELL_COST_REDUCTION, + ENERGY_REGEN_BASE, + MAX_ENERGY_MULT, + COOLDOWN_REDUCTION, + SPELL_DMG_FROM_INT + }; + + public ItemTemplateBuilder MagicStatSlot(int n = 1, float probability = 1) + { + for (int i = 0; i < n; i++) + statSlots.Add(new StatSlot(magicStats, probability)); + return this; + } + + private readonly Stat[] meleeStatIds = new Stat[] + { + STRENGTH, + MELEE_DAMAGE_INCREASE, + BASE_MELEE_DAMAGE, + MELEE_DMG_FROM_STR, + MELEE_WEAPON_RANGE, + MELEE_ARMOR_PIERCING, + }; + + public ItemTemplateBuilder MeleeStatSlot(int n = 1, float probability = 1) + { + for (int i = 0; i < n; i++) + statSlots.Add(new StatSlot(meleeStats, probability)); + return this; + } + + private readonly Stat[] rangedStatIds = new Stat[] + { + AGILITY, + RANGED_DAMAGE_INCREASE, + BASE_RANGED_DAMAGE, + RANGED_DMG_FROM_AGI, + PROJECTILE_SPEED, + PROJECTILE_SIZE, + RANGED_ARMOR_PIERCING, + HEADSHOT_DAMAGE_MULT, + PROJECTILE_PIERCE_CHANCE, + THROWN_SPEAR_DAMAGE, + }; + + public ItemTemplateBuilder RangedStatSlot(int n = 1, float probability = 1) + { + for (int i = 0; i < n; i++) + statSlots.Add(new StatSlot(rangedStats, probability)); + return this; + } + + private readonly Stat[] defenseStatIds = new Stat[] + { + VITALITY, + MAX_LIFE, + DAMAGE_REDUCTION, + DODGE_CHANCE, + ARMOR, + ELITE_DAMAGE_REDUCTION, + MAX_HEALTH_FROM_VITALITY, + MAX_LIFE_MULT, + BLOCK, + THORNS, + }; + + public ItemTemplateBuilder DefenseStatSlot(int n = 1, float probability = 1) + { + for (int i = 0; i < n; i++) + statSlots.Add(new StatSlot(defenseStats, probability)); + return this; + } + + private readonly Stat[] recoveryStatIds = new Stat[] + { + LIFE_REGEN_BASE, + LIFE_REGEN_MULT, + LIFE_ON_HIT, + ALL_RECOVERY, + ENERGY_REGEN_BASE, + ENERGY_ON_HIT, + STAMINA_REGEN_BASE, + STAMINA_AND_ENERGY_REGEN_MULT, + }; + + public ItemTemplateBuilder RecoveryStatSlot(int n = 1, float probability = 1) + { + for (int i = 0; i < n; i++) + statSlots.Add(new StatSlot(recoveryStats, probability)); + return this; + } + + + public ItemTemplateBuilder SetDropFromEverything() + { + //Lootable from everything + lootTable = (EnemyProgression.Enemy)0b11111111111111111111111; + return this; + } + + //Sets the item to drop from only a specyfic group of enemies + public ItemTemplateBuilder SetDropArmsy() + { + lootTable = EnemyProgression.Enemy.RegularArmsy | EnemyProgression.Enemy.PaleArmsy; + return this; + } + + public ItemTemplateBuilder SetDropVags() + { + lootTable = EnemyProgression.Enemy.PaleVags | EnemyProgression.Enemy.RegularVags; + return this; + } + + public ItemTemplateBuilder SetDropCow() + { + lootTable |= EnemyProgression.Enemy.Cowman; + return this; + } + + public ItemTemplateBuilder SetDropBaby() + { + lootTable |= EnemyProgression.Enemy.Baby; + return this; + } + + public ItemTemplateBuilder SetDropMegan() + { + lootTable |= EnemyProgression.Enemy.Megan; + return this; + } + + public ItemTemplateBuilder SetDropCreepy() + { + lootTable |= EnemyProgression.Enemy.RegularArmsy | EnemyProgression.Enemy.PaleArmsy | EnemyProgression.Enemy.RegularVags | EnemyProgression.Enemy.PaleVags | EnemyProgression.Enemy.Cowman | EnemyProgression.Enemy.Baby | EnemyProgression.Enemy.Girl | EnemyProgression.Enemy.Worm | EnemyProgression.Enemy.Megan; + return this; + } + + public ItemTemplateBuilder SetDropCannibals() + { + lootTable |= + EnemyProgression.Enemy.NormalMale | EnemyProgression.Enemy.NormalLeaderMale | EnemyProgression.Enemy.NormalFemale | EnemyProgression.Enemy.NormalSkinnyMale | EnemyProgression.Enemy.NormalSkinnyFemale | EnemyProgression.Enemy.PaleMale | EnemyProgression.Enemy.PaleSkinnyMale | EnemyProgression.Enemy.PaleSkinnedMale | EnemyProgression.Enemy.PaleSkinnedSkinnyMale | EnemyProgression.Enemy.PaintedMale | EnemyProgression.Enemy.PaintedLeaderMale | EnemyProgression.Enemy.PaintedFemale | EnemyProgression.Enemy.Fireman; + return this; + } + public ItemTemplateBuilder Weight(int w) + { + lootWeight = w; + return this; + } + + //TODO add a method to set the loot table to drop only from caves + } + public class Greatsword : ItemTemplateBuilder + { + public Greatsword() + { + type = ItemType.Weapon; + subtype = ItemSubtype.GreatSword; + Icon(88); + + Register(); + } + } + + public class Longsword : ItemTemplateBuilder + { + public Longsword() + { + type = ItemType.Weapon; + subtype = ItemSubtype.LongSword; + Icon(89); + + Register(); + } + } + + public class Hammer : ItemTemplateBuilder + { + public Hammer() + { + type = ItemType.Weapon; + subtype = ItemSubtype.Hammer; + Icon(109); + + Register(); + } + } + + public class Polearm : ItemTemplateBuilder + { + public Polearm() + { + type = ItemType.Weapon; + subtype = ItemSubtype.Polearm; + Icon(181); + + Register(); + } + } + + public class Axe : ItemTemplateBuilder + { + public Axe() + { + type = ItemType.Weapon; + subtype = ItemSubtype.Axe; + Icon(138); + + Register(); + } + } + + public class Greatbow : ItemTemplateBuilder + { + public Greatbow() + { + type = ItemType.Weapon; + subtype = ItemSubtype.Greatbow; + Icon(170); + + Register(); + } + } + + + public class Material : ItemTemplateBuilder + { + public Material() + { + type = ItemType.Material; + LevelRequirement(20); + // Materials dont have a default icon + + Register(); + } + } + + public class Shield : ItemTemplateBuilder + { + + private static readonly Stat[] shieldStatIds = + { + STRENGTH, + VITALITY, + MAX_LIFE, + MAX_ENERGY, + LIFE_REGEN_BASE, + STAMINA_REGEN_BASE, + STAMINA_AND_ENERGY_REGEN_MULT, + LIFE_REGEN_MULT, + DAMAGE_REDUCTION, + CRIT_CHANCE, + CRIT_DAMAGE, + LIFE_ON_HIT, + DODGE_CHANCE, + ARMOR, + ELITE_DAMAGE_REDUCTION, + ATTACKSPEED, + MASSACRE_DURATION, + MELEE_DAMAGE_INCREASE, + BASE_MELEE_DAMAGE, + ALL_RECOVERY, + MELEE_WEAPON_RANGE, + ATTACK_COST_REDUCTION, + SPELL_COST_REDUCTION, + SPELL_COST_TO_STAMINA, + ENERGY_REGEN_BASE, + MAX_LIFE_MULT, + MAX_ENERGY_MULT, + COOLDOWN_REDUCTION, + ENERGY_ON_HIT, + BLOCK, + MELEE_ARMOR_PIERCING, + THORNS, + THROWN_SPEAR_DAMAGE, + }; + private static List shieldStats = null; + + public Shield ShieldStatSlot(int n = 1, float probability = 1) + { + for (int i = 0; i < n; i++) + statSlots.Add(new StatSlot(shieldStats, probability)); + return this; + } + + public Shield() + { + type = ItemType.Shield; + if (shieldStats == null) + shieldStats = ToItemStatList(shieldStatIds); + LevelRequirement(10); + Icon(99); + maximumSocketSlots = 1; + + Register(); + } + } + + public class Quiver : ItemTemplateBuilder + { + public Quiver() + { + type = ItemType.Quiver; + LevelRequirement(10); + Icon(98); + + Register(); + } + } + + public class Other : ItemTemplateBuilder + { + public Other() + { + type = ItemType.Other; + Icon(105); + + Register(); + } + } + + public class Helmet : ItemTemplateBuilder + { + public Helmet() + { + type = ItemType.Helmet; + LevelRequirement(6); + Icon(91); + + Register(); + } + } + + public class Boot : ItemTemplateBuilder + { + public Boot() + { + type = ItemType.Boot; + LevelRequirement(5); + Icon(85); + + Register(); + } + } + + public class Pants : ItemTemplateBuilder + { + public Pants() + { + type = ItemType.Pants; + Icon(87); + + Register(); + } + } + + public class ChestArmor : ItemTemplateBuilder + { + public ChestArmor() + { + type = ItemType.ChestArmor; + LevelRequirement(1); + Icon(96); + + Register(); + } + } + + public class ShoulderArmor : ItemTemplateBuilder + { + public ShoulderArmor() + { + type = ItemType.ShoulderArmor; + LevelRequirement(8); + Icon(95); + + Register(); + } + } + + public class Glove : ItemTemplateBuilder + { + public Glove() + { + type = ItemType.Glove; + LevelRequirement(7); + Icon(86); + + Register(); + } + } + + public class Bracer : ItemTemplateBuilder + { + public Bracer() + { + type = ItemType.Bracer; + LevelRequirement(9); + Icon(93); + + Register(); + } + } + + public class Amulet : ItemTemplateBuilder + { + + + private static readonly Stat[] amuletStatIds = + { + STRENGTH, + AGILITY, + VITALITY, + INTELLIGENCE, + MAX_LIFE, + MAX_ENERGY, + LIFE_REGEN_BASE, + STAMINA_REGEN_BASE, + STAMINA_AND_ENERGY_REGEN_MULT, + LIFE_REGEN_MULT, + DAMAGE_REDUCTION, + CRIT_CHANCE, + CRIT_DAMAGE, + LIFE_ON_HIT, + DODGE_CHANCE, + ARMOR, + ELITE_DAMAGE_REDUCTION, + ATTACKSPEED, + EXP_GAIN_MULT, + MASSACRE_DURATION, + SPELL_DAMAGE_MULTIPLIER, + MELEE_DAMAGE_INCREASE, + RANGED_DAMAGE_INCREASE, + BASE_SPELL_DAMAGE, + BASE_MELEE_DAMAGE, + BASE_RANGED_DAMAGE, + MAX_ENERGY_FROM_AGILITY, + MAX_HEALTH_FROM_VITALITY, + SPELL_DMG_FROM_INT, + MELEE_DMG_FROM_STR, + ALL_RECOVERY, + MOVEMENT_SPEED, + MELEE_WEAPON_RANGE, + ATTACK_COST_REDUCTION, + SPELL_COST_REDUCTION, + SPELL_COST_TO_STAMINA, + ENERGY_REGEN_BASE, + MAX_LIFE_MULT, + MAX_ENERGY_MULT, + COOLDOWN_REDUCTION, + RANGED_DMG_FROM_AGI, + ENERGY_ON_HIT, + BLOCK, + PROJECTILE_SPEED, + PROJECTILE_SIZE, + MELEE_ARMOR_PIERCING, + RANGED_ARMOR_PIERCING, + ARMOR_PIERCING, + ALL_ATTRIBUTES, + HEADSHOT_DAMAGE_MULT, + FIRE_DAMAGE, + CHANCE_ON_HIT_TO_SLOW, + CHANCE_ON_HIT_TO_BLEED, + CHANCE_ON_HIT_TO_WEAKEN, + THORNS, + PROJECTILE_PIERCE_CHANCE, + EXPLOSION_DAMAGE, + THROWN_SPEAR_DAMAGE, + + + }; + private static List amuletStats = null; + + + public Amulet() + { + type = ItemType.Amulet; + if (amuletStats == null) + amuletStats = ToItemStatList(amuletStatIds); + LevelRequirement(20); + Icon(101); + + Register(); + } + + public Amulet AmuletStatSlot(int n = 1, float probability = 1) + { + for (int i = 0; i < n; i++) + statSlots.Add(new StatSlot(amuletStats, probability)); + return this; + } + + public Amulet Scarf() + { + Icon(100); // this is the id of scarf icon + return this; + } + } + + public class Ring : ItemTemplateBuilder + { + private static readonly Stat[] ringStatIds = + { + STRENGTH, + AGILITY, + VITALITY, + INTELLIGENCE, + MAX_LIFE, + MAX_ENERGY, + LIFE_REGEN_BASE, + STAMINA_REGEN_BASE, + STAMINA_AND_ENERGY_REGEN_MULT, + LIFE_REGEN_MULT, + CRIT_CHANCE, + CRIT_DAMAGE, + LIFE_ON_HIT, + ATTACKSPEED, + EXP_GAIN_MULT, + ALL_RECOVERY, + ATTACK_COST_REDUCTION, + SPELL_COST_REDUCTION, + SPELL_COST_TO_STAMINA, + ENERGY_REGEN_BASE, + MAX_LIFE_MULT, + MAX_ENERGY_MULT, + COOLDOWN_REDUCTION, + ENERGY_ON_HIT, + PROJECTILE_SPEED, + PROJECTILE_SIZE, + LOOT_QUANTITY, + ALL_ATTRIBUTES + }; + private static List ringStats = null; + + public Ring() + { + type = ItemType.Ring; + if (ringStats == null) + ringStats = ToItemStatList(ringStatIds); + Icon(90); + LevelRequirement(15); + + Register(); + } + + public Ring RingStatSlot(int n = 1, float probability = 1) + { + for(int i = 0; i baseReceipes; - private static List customReceipeList = new List(); - public static void SetCustomReceipeUnlockState(CustomReceipe customReceipe, in bool b) - { - customReceipeList[(int)customReceipe].unlocked = b; - } - public static bool BlockUpdating = false; - private const int IdStartIndex = 600; - public static void LockAll() - { - foreach (var item in customReceipeList) + private static List baseReceipes; + private static List customReceipeList = new List(); + public static void SetCustomReceipeUnlockState(CustomReceipe customReceipe, in bool b) { - item.unlocked = false; + customReceipeList[(int)customReceipe].unlocked = b; } - } - - /// - /// Populate the list that contains custom receipes - /// - public static void Initialize() - { - try + public static bool BlockUpdating = false; + private const int IdStartIndex = 600; + public static void LockAll() { - BlockUpdating = false; - baseReceipes = null; - customReceipeList.Clear(); - _NextReceipeId = IdStartIndex; - try + foreach (var item in customReceipeList) { - Receipe poisonArrowsCopy = ReceipeDatabase._instance._receipes.FirstOrDefault(x => x._productItemID == 83 && x._ingredients.Any(y => y._itemID == 112)).CopyReceipe(); - poisonArrowsCopy._weaponStatUpgrades[0]._type = WeaponStatUpgrade.Types.ModernAmmo; - poisonArrowsCopy._ingredients[1] = CreateReceipeIngredient(COINS, 5); - poisonArrowsCopy._name = "Modern Arrows"; - customReceipeList.Add(new COTFCustomReceipe(poisonArrowsCopy)); + item.unlocked = false; } - catch (Exception e) + } + + /// + /// Populate the list that contains custom receipes + /// + public static void Initialize() + { + try { - ModAPI.Log.Write("Exception copying receipe " + e); - } - CreateRecipe(FLINTLOCKAMMO, 10, - CreateReceipeIngredient(COINS, 15), - CreateReceipeIngredient(ROCK, 1))._name = "Flintlock ammo"; + BlockUpdating = false; + baseReceipes = null; + customReceipeList.Clear(); + _NextReceipeId = IdStartIndex; + try + { + Receipe poisonArrowsCopy = ReceipeDatabase._instance._receipes.FirstOrDefault(x => x._productItemID == 83 && x._ingredients.Any(y => y._itemID == 112)).CopyReceipe(); + poisonArrowsCopy._weaponStatUpgrades[0]._type = WeaponStatUpgrade.Types.ModernAmmo; + poisonArrowsCopy._ingredients[1] = CreateReceipeIngredient(COINS, 5); + poisonArrowsCopy._name = "Modern Arrows"; + customReceipeList.Add(new COTFCustomReceipe(poisonArrowsCopy)); + } + catch (Exception e) + { + ModAPI.Log.Write("Exception copying receipe " + e); + } + CreateRecipe(FLINTLOCKAMMO, 10, + CreateReceipeIngredient(COINS, 15), + CreateReceipeIngredient(ROCK, 1))._name = "Flintlock ammo"; - CreateRecipe(CROSSBOWAMMO, 9, - CreateReceipeIngredient(ROCK, 3), - CreateReceipeIngredient(STICK, 3))._name = "Crossbow bolts"; + CreateRecipe(CROSSBOWAMMO, 9, + CreateReceipeIngredient(ROCK, 3), + CreateReceipeIngredient(STICK, 3))._name = "Crossbow bolts"; - CreateRecipe(CLOTH, 30, - CreateReceipeIngredient(DEERSKIN, 3))._name = "Cloth"; + CreateRecipe(CLOTH, 30, + CreateReceipeIngredient(DEERSKIN, 3))._name = "Cloth"; - CreateRecipe(CLOTH, 50, - CreateReceipeIngredient(RABBITSKIN, 5))._name = "Cloth"; + CreateRecipe(CLOTH, 50, + CreateReceipeIngredient(RABBITSKIN, 5))._name = "Cloth"; - CreateRecipe(CLOTH, 20, - CreateReceipeIngredient(RACOONSKIN, 2))._name = "Cloth"; + CreateRecipe(CLOTH, 20, + CreateReceipeIngredient(RACOONSKIN, 2))._name = "Cloth"; - CreateRecipe(CLOTH, 40, - CreateReceipeIngredient(BOARSKIN,4))._name = "Cloth"; + CreateRecipe(CLOTH, 40, + CreateReceipeIngredient(BOARSKIN, 4))._name = "Cloth"; - CreateRecipe(AXEPLANE, 1, - CreateReceipeIngredient(AXECRAFTED, 1), - CreateReceipeIngredient(ROPE, 1), - CreateReceipeIngredient(STICK, 2) - )._name = "Plane Axe"; + CreateRecipe(AXEPLANE, 1, + CreateReceipeIngredient(AXECRAFTED, 1), + CreateReceipeIngredient(ROPE, 1), + CreateReceipeIngredient(STICK, 2) + )._name = "Plane Axe"; - } - catch (Exception ex) - { + } + catch (Exception ex) + { - ModAPI.Log.Write("Custom crafting recipes exception: " + ex); - } + ModAPI.Log.Write("Custom crafting recipes exception: " + ex); + } - } + } - private static int _NextReceipeId = IdStartIndex; + private static int _NextReceipeId = IdStartIndex; - public static int NextReceipeId - { - get + public static int NextReceipeId { - return _NextReceipeId++; + get + { + return _NextReceipeId++; + } } - } - - public static void AddReceipes() - { - if (BlockUpdating) - return; - if (baseReceipes == null) - baseReceipes = ReceipeDatabase._instance._receipes.ToList(); - foreach (var item in customReceipeList) - { - LocalPlayer.ReceipeBook.RemoveReceipe(item.receipe._id); - } - var customReceipes = customReceipeList.Where(x => x.unlocked).Select(x => x.receipe); - List addedIDs = new List(); - if (customReceipes.Count() > 0) + public static void AddReceipes() { - try + if (BlockUpdating) + return; + if (baseReceipes == null) + baseReceipes = ReceipeDatabase._instance._receipes.ToList(); + foreach (var item in customReceipeList) { - var receipes2 = new List(baseReceipes); - receipes2.AddRange(customReceipes); - ReceipeDatabase._instance._receipes = receipes2.ToArray(); + LocalPlayer.ReceipeBook.RemoveReceipe(item.receipe._id); + } - catch + var customReceipes = customReceipeList.Where(x => x.unlocked).Select(x => x.receipe); + List addedIDs = new List(); + if (customReceipes.Count() > 0) { - CotfUtils.Log("Crafting: Merging Failed"); + try + { + var receipes2 = new List(baseReceipes); + receipes2.AddRange(customReceipes); + ReceipeDatabase._instance._receipes = receipes2.ToArray(); + } + catch + { + Utils.Log("Crafting: Merging Failed"); + } + foreach (var item in customReceipes) + { + LocalPlayer.ReceipeBook.AddReceipe(item._id); + + } } - foreach (var item in customReceipes) + else { - LocalPlayer.ReceipeBook.AddReceipe(item._id); - + ReceipeDatabase._instance._receipes = baseReceipes.ToArray(); } } - else - { - ReceipeDatabase._instance._receipes = baseReceipes.ToArray(); - } - } - public static ReceipeIngredient CreateReceipeIngredient(VanillaItemIDs itemId, int amount) - { - return new ReceipeIngredient + public static ReceipeIngredient CreateReceipeIngredient(VanillaItemIDs itemId, int amount) { - _amount = amount, - _itemID = (int)itemId - }; - } - public static Receipe CopyReceipe(this Receipe r) - { - return new Receipe() + return new ReceipeIngredient + { + _amount = amount, + _itemID = (int)itemId + }; + } + public static Receipe CopyReceipe(this Receipe r) { - _id = NextReceipeId, - _batchUpgrade = r._batchUpgrade, - _forceUnique = r._forceUnique, - _hidden = r._hidden, - _ingredients = r._ingredients, - _name = r._name, - _productItemAmount = r._productItemAmount, - _productItemID = r._productItemID, - _productItemType = r._productItemType, - _type = r._type, - _weaponStatUpgrades = r._weaponStatUpgrades - }; - } - public static Receipe CreateRecipe(VanillaItemIDs productItemId, int productItemAmout, params ReceipeIngredient[] receipeIngredients) - { - var r = new Receipe + return new Receipe() + { + _id = NextReceipeId, + _batchUpgrade = r._batchUpgrade, + _forceUnique = r._forceUnique, + _hidden = r._hidden, + _ingredients = r._ingredients, + _name = r._name, + _productItemAmount = r._productItemAmount, + _productItemID = r._productItemID, + _productItemType = r._productItemType, + _type = r._type, + _weaponStatUpgrades = r._weaponStatUpgrades + }; + } + public static Receipe CreateRecipe(VanillaItemIDs productItemId, int productItemAmout, params ReceipeIngredient[] receipeIngredients) { - _id = NextReceipeId, - _hidden = false, - _ingredients = receipeIngredients, - _productItemAmount = new RandomRange + var r = new Receipe { - _max = productItemAmout, - _min = productItemAmout - }, - _productItemID = (int)productItemId, - _productItemType = ItemDatabase.ItemById((int)productItemId)._type, - _type = Receipe.Types.Craft, - _weaponStatUpgrades = new WeaponStatUpgrade[0] - }; - customReceipeList.Add(new COTFCustomReceipe(r)); + _id = NextReceipeId, + _hidden = false, + _ingredients = receipeIngredients, + _productItemAmount = new RandomRange + { + _max = productItemAmout, + _min = productItemAmout + }, + _productItemID = (int)productItemId, + _productItemType = ItemDatabase.ItemById((int)productItemId)._type, + _type = Receipe.Types.Craft, + _weaponStatUpgrades = new WeaponStatUpgrade[0] + }; + customReceipeList.Add(new COTFCustomReceipe(r)); - return r; - } - // --------------------------ITEM IDs-------------------------- + return r; + } + // --------------------------ITEM IDs-------------------------- - public enum VanillaItemIDs - { - BOMBTIMED = 29, - CBOARD = 31, - CLOTH = 33, - LEAF = 34, - TAPESTICKY = 280, - LIZARD = 35, - BATTERY = 36, - FUEL = 262, - BOOZE = 37, - CASH = 38, - WATCH = 41, - FEATHER = 42, - FLARE = 43, - FLAREGUN = 44, - FLINTLOCK = 230, - FLINTLOCKPART1 = 232, - FLINTLOCKPART2 = 233, - FLINTLOCKPART3 = 234, - FLINTLOCKPART4 = 235, - FLINTLOCKPART5 = 236, - FLINTLOCKPART6 = 237, - FLINTLOCKPART7 = 238, - FLINTLOCKPART8 = 241, - HEAD = 46, - LEG = 47, - LIGHTER = 48, - MEDS = 49, - PLASTICTORCH = 51, - PLASTICTORCH_BOW = 283, - PLASTICTORCH_MODERNBOW = 287, - PLASTICTORCH_CHAINSAW = 288, - PLASTICTORCH_FLINTLOCK = 289, - ROCK = 53, - ROPE = 54, - SPEAR = 56, - STICK = 57, - TOOTH = 60, - WALKMAN = 61, - PEDOMETER = 63, - MARIGOLD = 67, - MEDICINECRAFTED = 68, - MEDICINECRAFTEDPLUS = 212, - CASSETTE1 = 69, - MOLOTOV = 71, - SURVIVALBOOK = 74, - FIRESTICK = 75, - HAIRSPRAY = 291, - RABBITDEAD = 76, - RABBITALIVE = 77, - LOG = 78, - BOW = 79, - BOWCROSS = 306, - SLINGSHOT = 281, - RECURVEBOW = 279, - AXEPLANE = 80, - CHAINSAW = 261, - TENNISBALL = 81, - ARTIFACTBALL = 294, - SMALLROCK = 82, - ARROWS = 83, - AXERUSTY = 86, - AXECRAFTED = 87, - REPAIRTOOL = 257, - AXEMODERN = 88, - CHOCOLATEBAR = 89, - ARM = 90, - COINS = 91, - LIZARDSKIN = 92, - SKULL = 94, - CLUBCRAFTED = 95, - CLUB = 96, - CONEFLOWER = 97, - CHICORY = 98, - ALOE = 99, - ENERGYMIX = 100, - ENERGYMIXPLUS = 213, - HEADBOMB = 101, - SEED_ALOE = 103, - TREESAP = 104, - STICKUPGRADED = 105, - ROCKUPGRADED = 106, - FLAREGUNAMMO = 107, - FLINTLOCKAMMO = 231, - CROSSBOWAMMO = 307, - GLASS = 108, - SODA = 109, - PLANEFOOD = 110, - TWINBERRY = 112, - SNOWBERRY = 113, - BLUEBERRY = 114, - MUSHROOMAMANITA = 115, - MUSHROOMJACK = 277, - MUSHROOMCHANTERELLE = 116, - MUSHROOMDEERMUSH = 278, - MUSHROOMLIBERTYCAP = 276, - MUSHROOMPUFFMUSH = 275, - CASSETTE2 = 117, - CASSETTE4 = 118, - CASSETTE3 = 119, - CASSETTE5 = 120, - CAMCORDERTAPE1 = 269, - CAMCORDERTAPE2 = 272, - CAMCORDERTAPE4 = 271, - CAMCORDERTAPE5 = 274, - CAMCORDERTAPE6 = 273, - CAMCORDERTAPE3 = 270, - WALKYTALKY = 122, - GENERICMEAT = 123, - DEERSKIN = 126, - WARMSUIT = 299, - BOARSKIN = 292, - RACOONSKIN = 293, - COD = 127, - RABBITSKIN = 129, - POUCH = 130, - BLUEPAINT = 131, - ORANGEPAINT = 132, - TOY_HEAD = 133, - TOY_ARM = 134, - TOY_LEG = 135, - TOY_TORSO = 136, - STEALTHARMOR = 137, - AXECLIMBING = 138, - MAP_CAVE2 = 139, - CROSS = 140, - PAINTBRUSH = 240, - TURTLESHELL = 141, - POT = 142, - REBREATHER = 143, - AIRCANISTER = 144, - WATERSKIN = 145, - MAGAZINECAVER = 147, - MAGAZINE = 148, - MAGAZINELIMESTONE = 149, - BIBLE = 150, - POLAROIDYACHT = 152, - POLAROIDKEYCARD1 = 258, - POLAROIDKEYCARD2 = 259, - POLAROIDKEYCARD3 = 260, - PAGECHURCH = 308, - PAGEGLIDER = 309, - PAGEROLLERCOASTER = 310, - PAGETOWER = 311, - PHOTOCACHE1 = 220, - PHOTOCACHE2 = 226, - PHOTOCACHE3 = 225, - PHOTOCACHE8 = 224, - PHOTOCACHE9 = 227, - PHOTOTIMMY = 302, - PHOTOCACHE6 = 223, - PHOTOCACHE5 = 222, - SHIPPINGMANIFEST = 229, - RESTRAININGORDER = 243, - TERMINATIONLETTER = 244, - MORGUEREPORT = 245, - BIBLEPAGE1 = 246, - MEGANDRAWINGFLOWER = 251, - MEGANDRAWINGUNICORN = 253, - MEGANDRAWINGDADDY = 252, - MEGANDRAWINGDINO = 254, - MEGANCRAYONS = 248, - CAMCORDER = 267, - ARTIFACTPHOTO = 249, - EMAILPLANE = 255, - EMAILPHOTO = 256, - BIBLEPAGE2 = 247, - BIBLEPAGE3 = 303, - PHOTOCACHE4 = 221, - POLAROIDMEGAN = 219, - POLAROIDVAGZ = 153, - SKETCHSINKHOLE = 154, - SKETCHVAGZ = 155, - MAPPIECE_1 = 156, - MAPPIECE_2 = 157, - MAPPIECE_4 = 159, - MAPPIECE_3 = 165, - MAPFULL = 169, - COMPASS = 173, - DYNAMITE = 175, - MILKCARTON = 176, - SPEARUPGRADED = 177, - BONE = 178, - TOYFULL = 179, - KATANA = 180, - MACHETE = 265, - OYSTER = 181, - POLAROIDTEDDY = 182, - NEWSPAPERSTRIPPER = 183, - TENNISRAQUET = 184, - ANIMALHEAD_RABBIT = 185, - ANIMALHEAD_BOAR = 186, - ANIMALHEAD_DEER = 187, - ANIMALHEAD_CROCODILE = 188, - ANIMALHEAD_RACOON = 189, - ANIMALHEAD_LIZARD = 190, - ANIMALHEAD_SEAGUL = 191, - ANIMALHEAD_SQUIRREL = 192, - ANIMALHEAD_TORTOISE = 193, - CREEPYHEAD_ARMSY = 295, - CREEPYHEAD_BABY = 296, - CREEPYHEAD_FAT = 297, - CREEPYHEAD_VAG = 298, - ANIMALHEAD_GOOSE = 194, - ANIMALHEAD_SHARK = 195, - CAVEMAP = 196, - PASSENGERMANIFEST = 197, - METALTINTRAY = 198, - SNOWSHOES = 199, - QUIVER = 200, - ROCKBAG = 214, - STICKBAG = 215, - SMALLROCKBAG = 282, - SPEARBAG = 290, - RABBITFURBOOTS = 201, - FORTUNE = 202, - BOOKDARKHAIRED = 203, - BONEARMOR = 204, - CREEPYSKIN = 301, - SEED_CONEFLOWER = 205, - SEED_BLUEBERRY = 206, - SMALLGENERICMEAT = 207, - TIMMYDRAWING = 208, - MAGAZINE_REALITY = 209, - CHAINSAWAD = 263, - MAGAZINE_SCIENCE = 218, - KEYCARD = 210, - ARTIFACTKEY = 305, - KEYCARDELEVATOR = 242, - SKETCHARTIFACT = 217, - SKETCHARTIFACT4 = 250, - BLACKBERRY = 211 - } - // ------------------------------------------------------------1 + public enum VanillaItemIDs + { + BOMBTIMED = 29, + CBOARD = 31, + CLOTH = 33, + LEAF = 34, + TAPESTICKY = 280, + LIZARD = 35, + BATTERY = 36, + FUEL = 262, + BOOZE = 37, + CASH = 38, + WATCH = 41, + FEATHER = 42, + FLARE = 43, + FLAREGUN = 44, + FLINTLOCK = 230, + FLINTLOCKPART1 = 232, + FLINTLOCKPART2 = 233, + FLINTLOCKPART3 = 234, + FLINTLOCKPART4 = 235, + FLINTLOCKPART5 = 236, + FLINTLOCKPART6 = 237, + FLINTLOCKPART7 = 238, + FLINTLOCKPART8 = 241, + HEAD = 46, + LEG = 47, + LIGHTER = 48, + MEDS = 49, + PLASTICTORCH = 51, + PLASTICTORCH_BOW = 283, + PLASTICTORCH_MODERNBOW = 287, + PLASTICTORCH_CHAINSAW = 288, + PLASTICTORCH_FLINTLOCK = 289, + ROCK = 53, + ROPE = 54, + SPEAR = 56, + STICK = 57, + TOOTH = 60, + WALKMAN = 61, + PEDOMETER = 63, + MARIGOLD = 67, + MEDICINECRAFTED = 68, + MEDICINECRAFTEDPLUS = 212, + CASSETTE1 = 69, + MOLOTOV = 71, + SURVIVALBOOK = 74, + FIRESTICK = 75, + HAIRSPRAY = 291, + RABBITDEAD = 76, + RABBITALIVE = 77, + LOG = 78, + BOW = 79, + BOWCROSS = 306, + SLINGSHOT = 281, + RECURVEBOW = 279, + AXEPLANE = 80, + CHAINSAW = 261, + TENNISBALL = 81, + ARTIFACTBALL = 294, + SMALLROCK = 82, + ARROWS = 83, + AXERUSTY = 86, + AXECRAFTED = 87, + REPAIRTOOL = 257, + AXEMODERN = 88, + CHOCOLATEBAR = 89, + ARM = 90, + COINS = 91, + LIZARDSKIN = 92, + SKULL = 94, + CLUBCRAFTED = 95, + CLUB = 96, + CONEFLOWER = 97, + CHICORY = 98, + ALOE = 99, + ENERGYMIX = 100, + ENERGYMIXPLUS = 213, + HEADBOMB = 101, + SEED_ALOE = 103, + TREESAP = 104, + STICKUPGRADED = 105, + ROCKUPGRADED = 106, + FLAREGUNAMMO = 107, + FLINTLOCKAMMO = 231, + CROSSBOWAMMO = 307, + GLASS = 108, + SODA = 109, + PLANEFOOD = 110, + TWINBERRY = 112, + SNOWBERRY = 113, + BLUEBERRY = 114, + MUSHROOMAMANITA = 115, + MUSHROOMJACK = 277, + MUSHROOMCHANTERELLE = 116, + MUSHROOMDEERMUSH = 278, + MUSHROOMLIBERTYCAP = 276, + MUSHROOMPUFFMUSH = 275, + CASSETTE2 = 117, + CASSETTE4 = 118, + CASSETTE3 = 119, + CASSETTE5 = 120, + CAMCORDERTAPE1 = 269, + CAMCORDERTAPE2 = 272, + CAMCORDERTAPE4 = 271, + CAMCORDERTAPE5 = 274, + CAMCORDERTAPE6 = 273, + CAMCORDERTAPE3 = 270, + WALKYTALKY = 122, + GENERICMEAT = 123, + DEERSKIN = 126, + WARMSUIT = 299, + BOARSKIN = 292, + RACOONSKIN = 293, + COD = 127, + RABBITSKIN = 129, + POUCH = 130, + BLUEPAINT = 131, + ORANGEPAINT = 132, + TOY_HEAD = 133, + TOY_ARM = 134, + TOY_LEG = 135, + TOY_TORSO = 136, + STEALTHARMOR = 137, + AXECLIMBING = 138, + MAP_CAVE2 = 139, + CROSS = 140, + PAINTBRUSH = 240, + TURTLESHELL = 141, + POT = 142, + REBREATHER = 143, + AIRCANISTER = 144, + WATERSKIN = 145, + MAGAZINECAVER = 147, + MAGAZINE = 148, + MAGAZINELIMESTONE = 149, + BIBLE = 150, + POLAROIDYACHT = 152, + POLAROIDKEYCARD1 = 258, + POLAROIDKEYCARD2 = 259, + POLAROIDKEYCARD3 = 260, + PAGECHURCH = 308, + PAGEGLIDER = 309, + PAGEROLLERCOASTER = 310, + PAGETOWER = 311, + PHOTOCACHE1 = 220, + PHOTOCACHE2 = 226, + PHOTOCACHE3 = 225, + PHOTOCACHE8 = 224, + PHOTOCACHE9 = 227, + PHOTOTIMMY = 302, + PHOTOCACHE6 = 223, + PHOTOCACHE5 = 222, + SHIPPINGMANIFEST = 229, + RESTRAININGORDER = 243, + TERMINATIONLETTER = 244, + MORGUEREPORT = 245, + BIBLEPAGE1 = 246, + MEGANDRAWINGFLOWER = 251, + MEGANDRAWINGUNICORN = 253, + MEGANDRAWINGDADDY = 252, + MEGANDRAWINGDINO = 254, + MEGANCRAYONS = 248, + CAMCORDER = 267, + ARTIFACTPHOTO = 249, + EMAILPLANE = 255, + EMAILPHOTO = 256, + BIBLEPAGE2 = 247, + BIBLEPAGE3 = 303, + PHOTOCACHE4 = 221, + POLAROIDMEGAN = 219, + POLAROIDVAGZ = 153, + SKETCHSINKHOLE = 154, + SKETCHVAGZ = 155, + MAPPIECE_1 = 156, + MAPPIECE_2 = 157, + MAPPIECE_4 = 159, + MAPPIECE_3 = 165, + MAPFULL = 169, + COMPASS = 173, + DYNAMITE = 175, + MILKCARTON = 176, + SPEARUPGRADED = 177, + BONE = 178, + TOYFULL = 179, + KATANA = 180, + MACHETE = 265, + OYSTER = 181, + POLAROIDTEDDY = 182, + NEWSPAPERSTRIPPER = 183, + TENNISRAQUET = 184, + ANIMALHEAD_RABBIT = 185, + ANIMALHEAD_BOAR = 186, + ANIMALHEAD_DEER = 187, + ANIMALHEAD_CROCODILE = 188, + ANIMALHEAD_RACOON = 189, + ANIMALHEAD_LIZARD = 190, + ANIMALHEAD_SEAGUL = 191, + ANIMALHEAD_SQUIRREL = 192, + ANIMALHEAD_TORTOISE = 193, + CREEPYHEAD_ARMSY = 295, + CREEPYHEAD_BABY = 296, + CREEPYHEAD_FAT = 297, + CREEPYHEAD_VAG = 298, + ANIMALHEAD_GOOSE = 194, + ANIMALHEAD_SHARK = 195, + CAVEMAP = 196, + PASSENGERMANIFEST = 197, + METALTINTRAY = 198, + SNOWSHOES = 199, + QUIVER = 200, + ROCKBAG = 214, + STICKBAG = 215, + SMALLROCKBAG = 282, + SPEARBAG = 290, + RABBITFURBOOTS = 201, + FORTUNE = 202, + BOOKDARKHAIRED = 203, + BONEARMOR = 204, + CREEPYSKIN = 301, + SEED_CONEFLOWER = 205, + SEED_BLUEBERRY = 206, + SMALLGENERICMEAT = 207, + TIMMYDRAWING = 208, + MAGAZINE_REALITY = 209, + CHAINSAWAD = 263, + MAGAZINE_SCIENCE = 218, + KEYCARD = 210, + ARTIFACTKEY = 305, + KEYCARDELEVATOR = 242, + SKETCHARTIFACT = 217, + SKETCHARTIFACT4 = 250, + BLACKBERRY = 211 + } + // ------------------------------------------------------------1 + } } \ No newline at end of file diff --git a/Items/PickUpManager.cs b/Items/PickUpManager.cs index e220d3f..24af5d7 100644 --- a/Items/PickUpManager.cs +++ b/Items/PickUpManager.cs @@ -2,6 +2,8 @@ using BuilderCore; +using ChampionsOfForest.Items; + using UnityEngine; namespace ChampionsOfForest @@ -42,48 +44,48 @@ public static void SpawnPickUp(Item item, Vector3 pos, int amount, ulong id, Ite switch (item.type) { - case BaseItem.ItemType.Shield: + case ItemDefinition.ItemType.Shield: filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[49]; break; - case BaseItem.ItemType.Quiver: + case ItemDefinition.ItemType.Quiver: filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[116]; break; - case BaseItem.ItemType.SpellScroll: + case ItemDefinition.ItemType.SpellScroll: filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[124]; break; - case BaseItem.ItemType.Weapon: + case ItemDefinition.ItemType.Weapon: - if (item.weaponModel == BaseItem.WeaponModelType.GreatSword) + if (item.subtype == ItemDefinition.ItemSubtype.GreatSword) { filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[52]; } - else if (item.weaponModel == BaseItem.WeaponModelType.LongSword) + else if (item.subtype == ItemDefinition.ItemSubtype.LongSword) { filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[51]; } - else if (item.weaponModel == BaseItem.WeaponModelType.Hammer) + else if (item.subtype == ItemDefinition.ItemSubtype.Hammer) { filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[108]; spawn.transform.localScale *= 1.2f; } - else if (item.weaponModel == BaseItem.WeaponModelType.Axe) + else if (item.subtype == ItemDefinition.ItemSubtype.Axe) { filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[2001]; renderer.materials = new Material[] { pickupMaterial, pickupMaterial }; spawn.transform.localScale *= 1.12f; } - else if (item.weaponModel == BaseItem.WeaponModelType.Greatbow) + else if (item.subtype == ItemDefinition.ItemSubtype.Greatbow) { filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[167]; spawn.transform.localScale *= 1.1f; } - else if (item.weaponModel == BaseItem.WeaponModelType.Polearm) + else if (item.subtype == ItemDefinition.ItemSubtype.Polearm) { filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[175]; spawn.transform.localScale *= 0.60f; @@ -91,7 +93,7 @@ public static void SpawnPickUp(Item item, Vector3 pos, int amount, ulong id, Ite break; - case BaseItem.ItemType.Other: + case ItemDefinition.ItemType.Other: if (item.name == "Greater Mutated Heart") { filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[102]; @@ -113,7 +115,7 @@ public static void SpawnPickUp(Item item, Vector3 pos, int amount, ulong id, Ite break; - case BaseItem.ItemType.Material: + case ItemDefinition.ItemType.Material: Object.Destroy(filter); Object.Destroy(renderer); if (!chestPrefab) @@ -136,71 +138,61 @@ public static void SpawnPickUp(Item item, Vector3 pos, int amount, ulong id, Ite foreach (var rend in meshRenderes) { - rend.material.color = MainMenu.RarityColors[item.Rarity]; + rend.material.color = item.RarityColor; } - if (item.Rarity > 2) + if (item.GlowIntensity > 0) { Light l = spawn.AddComponent(); l.type = LightType.Point; l.shadowStrength = 1; - l.color = MainMenu.RarityColors[item.Rarity]; - l.intensity = 1f; + l.color = item.GlowColor; + l.intensity = item.GlowIntensity; l.range = 4f; - if (item.Rarity > 5) - { - l.range = 7f; - l.intensity = 1.7f; - l.cookieSize = 5f; - if (item.Rarity == 7) - { - l.range = 12f; - l.intensity = 4f; - } - } + } goto aftercolorsetup; - case BaseItem.ItemType.Helmet: + case ItemDefinition.ItemType.Helmet: filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[48]; spawn.transform.localScale *= 0.95f; break; - case BaseItem.ItemType.Boot: + case ItemDefinition.ItemType.Boot: filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[44]; spawn.transform.localScale *= 1.1f; break; - case BaseItem.ItemType.Pants: + case ItemDefinition.ItemType.Pants: filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[50]; spawn.transform.localScale *= 1.75f; break; - case BaseItem.ItemType.ChestArmor: + case ItemDefinition.ItemType.ChestArmor: filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[42]; spawn.transform.localScale *= 1.5f; break; - case BaseItem.ItemType.ShoulderArmor: + case ItemDefinition.ItemType.ShoulderArmor: filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[53]; spawn.transform.localScale *= 1.65f; break; - case BaseItem.ItemType.Glove: + case ItemDefinition.ItemType.Glove: filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[41]; spawn.transform.localScale *= 2.22f; break; - case BaseItem.ItemType.Bracer: + case ItemDefinition.ItemType.Bracer: filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[45]; break; - case BaseItem.ItemType.Amulet: + case ItemDefinition.ItemType.Amulet: filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[40]; spawn.transform.localScale *= 0.85f; break; - case BaseItem.ItemType.Ring: + case ItemDefinition.ItemType.Ring: filter.mesh = Res.ResourceLoader.instance.LoadedMeshes[43]; spawn.transform.localScale *= 0.85f; break; @@ -209,26 +201,16 @@ public static void SpawnPickUp(Item item, Vector3 pos, int amount, ulong id, Ite break; } - if (item.Rarity > 2) + if ((int)item.rarity > 0) { Light l = spawn.AddComponent(); l.type = LightType.Point; l.shadowStrength = 1; - l.color = MainMenu.RarityColors[item.Rarity]; - l.intensity = 1f; + l.color = item.GlowColor; + l.intensity = item.GlowIntensity; l.range = 4f; - renderer.material.color = MainMenu.RarityColors[item.Rarity]; - if (item.Rarity > 5) - { - l.range = 7f; - l.intensity = 1.7f; - l.cookieSize = 5f; - if (item.Rarity == 7) - { - l.range = 12f; - l.intensity = 4f; - } - } + renderer.material.color = item.RarityColor; + } aftercolorsetup: @@ -238,7 +220,7 @@ public static void SpawnPickUp(Item item, Vector3 pos, int amount, ulong id, Ite } ItemPickUp pickup = spawn.AddComponent(); - pickup.lifetime = (int)dropSource + item.Rarity * item.Rarity * 2; + pickup.lifetime = (int)dropSource; pickup.item = item; pickup.amount = amount; pickup.ID = id; diff --git a/Items/RarityDisplayInfo.cs b/Items/RarityDisplayInfo.cs new file mode 100644 index 0000000..4c17d96 --- /dev/null +++ b/Items/RarityDisplayInfo.cs @@ -0,0 +1,19 @@ +using UnityEngine; + +namespace ChampionsOfForest.Items +{ + public struct RarityDisplayInfo + { + public Color color; + public string name; + public Color glowColor; + public float glowIntensity; + public RarityDisplayInfo(Item.Rarity rarity, Color color, Color glowColor, float glowIntensity) + { + this.name = rarity.ToString(); //TODO change to localized string + this.color = color; + this.glowColor = glowColor; + this.glowIntensity = glowIntensity; + } + } +} \ No newline at end of file diff --git a/Items/Sets/ItemSets.cs b/Items/Sets/ItemSets.cs index 8b988c5..b3c0007 100644 --- a/Items/Sets/ItemSets.cs +++ b/Items/Sets/ItemSets.cs @@ -31,15 +31,15 @@ public static void Unequip() ModdedPlayer.Stats.spell_snowstormPullEnemiesIn.value = false; break; case 3: - ModdedPlayer.Stats.spell_snowstormMaxCharge.Substract(10); + ModdedPlayer.Stats.spell_snowstormMaxCharge.Sub(10); break; case 4: ModdedPlayer.Stats.spell_snowstormHitDelay.Divide(0.5f); - ModdedPlayer.Stats.spell_snowstormDamageMult.Substract(3f); + ModdedPlayer.Stats.spell_snowstormDamageMult.Sub(3f); break; } - ModdedPlayer.Stats.i_setcount_AkagisSet.Substract(1); - ModdedPlayer.Stats.spell_snowstormDamageMult.Substract(0.5f); + ModdedPlayer.Stats.i_setcount_AkagisSet.Sub(1); + ModdedPlayer.Stats.spell_snowstormDamageMult.Sub(0.5f); } } public static class BerserkSet @@ -61,12 +61,12 @@ public static void Unequip() switch (ModdedPlayer.Stats.i_setcount_BerserkSet.Value) { case 3: - ModdedPlayer.Stats.spell_berserkDuration.Substract(15); + ModdedPlayer.Stats.spell_berserkDuration.Sub(15); break; } ModdedPlayer.Stats.weaponRange.Divide(1.3f); ModdedPlayer.Stats.attackStaminaCost.Divide(0.5f); - ModdedPlayer.Stats.i_setcount_BerserkSet.Substract(1); + ModdedPlayer.Stats.i_setcount_BerserkSet.Sub(1); } } diff --git a/Items/StatActions.cs b/Items/StatActions.cs index 88dcd5d..2786bd3 100644 --- a/Items/StatActions.cs +++ b/Items/StatActions.cs @@ -5,628 +5,14 @@ namespace ChampionsOfForest.Items { internal class StatActions { - public static void AddVitality(float f) - { - ModdedPlayer.Stats.vitality.Add(Mathf.RoundToInt(f)); - } - public static void RemoveVitality(float f) - { - ModdedPlayer.Stats.vitality.Add(-Mathf.RoundToInt(f)); - } - public static void AddStrength(float f) - { - ModdedPlayer.Stats.strength.Add(Mathf.RoundToInt(f)); - } - - public static void RemoveStrength(float f) - { - ModdedPlayer.Stats.strength.Add(-Mathf.RoundToInt(f)); - } - - public static void AddAgility(float f) - { - ModdedPlayer.Stats.agility.Add(Mathf.RoundToInt(f)); - } - - public static void RemoveAgility(float f) - { - ModdedPlayer.Stats.agility.Substract(Mathf.RoundToInt(f)); - } - - public static void AddIntelligence(float f) - { - ModdedPlayer.Stats.intelligence.Add(Mathf.RoundToInt(f)); - } - - public static void RemoveIntelligence(float f) - { - ModdedPlayer.Stats.intelligence.Substract(Mathf.RoundToInt(f)); - } - - public static void AddHealth(float f) - { - ModdedPlayer.Stats.maxHealth.Add(Mathf.RoundToInt(f)); - } - - public static void RemoveHealth(float f) - { - ModdedPlayer.Stats.maxHealth.Substract(Mathf.RoundToInt(f)); - } - - public static void AddEnergy(float f) - { - ModdedPlayer.Stats.maxEnergy.Add(Mathf.RoundToInt(f)); - } - - public static void RemoveEnergy(float f) - { - ModdedPlayer.Stats.maxEnergy.Substract(Mathf.RoundToInt(f)); - } - - public static void AddHPRegen(float f) - { - ModdedPlayer.Stats.healthRecoveryPerSecond.Add(f); - } - - public static void RemoveHPRegen(float f) - { - ModdedPlayer.Stats.healthRecoveryPerSecond.Substract(f); - } - - public static void AddStaminaRegen(float f) - { - ModdedPlayer.Stats.staminaRecoveryperSecond.Add(f); - } - - public static void RemoveStaminaRegen(float f) - { - ModdedPlayer.Stats.staminaRecoveryperSecond.Substract(f); - } - - public static void AddEnergyRegen(float f) - { - ModdedPlayer.Stats.energyRecoveryperSecond.Add(f); - } - - public static void RemoveEnergyRegen(float f) - { - ModdedPlayer.Stats.energyRecoveryperSecond.Substract(f); - } - - public static void AddStaminaRegenPercent(float f) - { - ModdedPlayer.Stats.staminaPerSecRate.Add(f); - } - - public static void RemoveStaminaRegenPercent(float f) - { - ModdedPlayer.Stats.staminaPerSecRate.Substract(f); - } - - public static void AddHealthRegenPercent(float f) - { - ModdedPlayer.Stats.healthPerSecRate.Add(f); - } - - public static void RemoveHealthRegenPercent(float f) - { - ModdedPlayer.Stats.healthPerSecRate.Substract(f); - } - - public static void AddDamageReduction(float f) - { - ModdedPlayer.Stats.allDamageTaken.Multiply(1 - f); - } - - public static void RemoveDamageReduction(float f) - { - ModdedPlayer.Stats.allDamageTaken.Divide(1 - f); - } - - public static void AddCritChance(float f) - { - ModdedPlayer.Stats.critChance.Add(f); - } - - public static void RemoveCritChance(float f) - { - ModdedPlayer.Stats.critChance.Substract(f); - } - - public static void AddCritDamage(float f) - { - ModdedPlayer.Stats.critDamage.Add(f); - } - - public static void RemoveCritDamage(float f) - { - ModdedPlayer.Stats.critDamage.Substract(f); - } - - public static void AddLifeOnHit(float f) - { - ModdedPlayer.Stats.healthOnHit.Add(f); - } - - public static void RemoveLifeOnHit(float f) - { - ModdedPlayer.Stats.healthOnHit.Substract(f); - } - - public static void AddDodgeChance(float f) - { - ModdedPlayer.Stats.getHitChance.valueMultiplicative *= 1 - f; - } - - public static void RemoveDodgeChance(float f) - { - ModdedPlayer.Stats.getHitChance.valueMultiplicative /= 1 - f; - } - - public static void AddArmor(float f) - { - ModdedPlayer.Stats.armor.Add(Mathf.RoundToInt(f)); - } - - public static void RemoveArmor(float f) - { - ModdedPlayer.Stats.armor.Substract(Mathf.RoundToInt(f)); - } - - public static void AddMagicResistance(float f) - { - ModdedPlayer.Stats.magicDamageTaken.valueMultiplicative *= 1 - f; - } - - public static void RemoveMagicResistance(float f) - { - ModdedPlayer.Stats.magicDamageTaken.valueMultiplicative /= 1 - f; - } - - public static void AddAttackSpeed(float f) - { - ModdedPlayer.Stats.attackSpeed.Add(f); - } - - public static void RemoveAttackSpeed(float f) - { - ModdedPlayer.Stats.attackSpeed.Substract(f); - } - - public static void AddExpFactor(float f) - { - ModdedPlayer.Stats.expGain.Add(f); - } - - public static void RemoveExpFactor(float f) - { - ModdedPlayer.Stats.expGain.Substract(f); - } - - public static void AddMaxMassacreTime(float f) - { - ModdedPlayer.Stats.maxMassacreTime.Add(f); - } - - public static void RemoveMaxMassacreTime(float f) - { - ModdedPlayer.Stats.maxMassacreTime.Substract(f); - } - - public static void AddSpellDamageAmplifier(float f) - { - ModdedPlayer.Stats.spellIncreasedDmg.Add(f); - } - - public static void RemoveSpellDamageAmplifier(float f) - { - ModdedPlayer.Stats.spellIncreasedDmg.Substract(f); - } - - public static void AddMeleeDamageAmplifier(float f) - { - ModdedPlayer.Stats.meleeIncreasedDmg.Add(f); - } - - public static void RemoveMeleeDamageAmplifier(float f) - { - ModdedPlayer.Stats.meleeIncreasedDmg.Substract(f); - } - - public static void AddRangedDamageAmplifier(float f) - { - ModdedPlayer.Stats.rangedIncreasedDmg.Add(f); - } - - public static void RemoveRangedDamageAmplifier(float f) - { - ModdedPlayer.Stats.rangedIncreasedDmg.Substract(f); - } - - public static void AddspellFlatDmg(float f) - { - ModdedPlayer.Stats.spellFlatDmg.Add(f); - } - - public static void RemovespellFlatDmg(float f) - { - ModdedPlayer.Stats.spellFlatDmg.Substract(f); - } - - public static void AddMeleeDamageBonus(float f) - { - ModdedPlayer.Stats.meleeFlatDmg.Add(f); - } - - public static void RemoveMeleeDamageBonus(float f) - { - ModdedPlayer.Stats.meleeFlatDmg.Substract(f); - } - - public static void AddRangedDamageBonus(float f) - { - ModdedPlayer.Stats.rangedFlatDmg.Add(f); - } - - public static void RemoveRangedDamageBonus(float f) - { - ModdedPlayer.Stats.rangedFlatDmg.Substract(f); - } - - public static void AddmaxEnergyFromAgi(float f) - { - ModdedPlayer.Stats.maxEnergyFromAgi.Add(f); - } - - public static void RemovemaxEnergyFromAgi(float f) - { - ModdedPlayer.Stats.maxEnergyFromAgi.Substract(f); - } - - public static void AddmaxHealthFromVit(float f) - { - ModdedPlayer.Stats.maxHealthFromVit.Add(f); - } - - public static void RemovemaxHealthFromVit(float f) - { - ModdedPlayer.Stats.maxHealthFromVit.Substract(f); - } - - public static void AddspellDmgFromInt(float f) - { - ModdedPlayer.Stats.spellDmgFromInt.Add(f); - } - - public static void RemovespellDmgFromInt(float f) - { - ModdedPlayer.Stats.spellDmgFromInt.Substract(f); - } - - public static void AddmeleeDmgFromStr(float f) - { - ModdedPlayer.Stats.meleeDmgFromStr.Add(f); - } - - public static void RemovemeleeDmgFromStr(float f) - { - ModdedPlayer.Stats.meleeDmgFromStr.Substract(f); - } - - public static void AddHealingMultipier(float f) - { - ModdedPlayer.Stats.allRecoveryMult.Add(f); - } - - public static void RemoveHealingMultipier(float f) - { - ModdedPlayer.Stats.allRecoveryMult.Substract(f); - } - - public static void AddMoveSpeed(float f) - { - ModdedPlayer.Stats.movementSpeed.Add(f); - } - - public static void RemoveMoveSpeed(float f) - { - ModdedPlayer.Stats.movementSpeed.Substract(f); - } - - public static void AddJump(float f) - { - ModdedPlayer.Stats.jumpPower.Add(f); - } - - public static void RemoveJump(float f) - { - ModdedPlayer.Stats.jumpPower.Substract(f); - } - - // public static void Add( float f) - //{ - // ModdedPlayer.Stats..Add( f; - //} - //public static void Remove( float f) - //{ - // ModdedPlayer.Stats. .Substract( f; - //} - - public static void PERMANENT_perkPointIncrease(float f) - { - ModdedPlayer.instance.PermanentBonusPerkPoints += Mathf.RoundToInt(f); - ModdedPlayer.instance.MutationPoints += Mathf.RoundToInt(f); - } - - public static void PERMANENT_expIncrease(float f) - { - ModdedPlayer.instance.AddFinalExperience((long)f); - } - - public static void AddMagicFind(float f) - { - ModdedPlayer.Stats.magicFind.Add(f); - } - - public static void RemoveMagicFind(float f) - { - ModdedPlayer.Stats.magicFind.Substract(f); - - } - - public static void AddAllStats(float f) + public static void AddAllAttributes(float f) { ModdedPlayer.Stats.strength.Add(Mathf.RoundToInt(f)); ModdedPlayer.Stats.vitality.Add(Mathf.RoundToInt(f)); ModdedPlayer.Stats.agility.Add(Mathf.RoundToInt(f)); ModdedPlayer.Stats.intelligence.Add(Mathf.RoundToInt(f)); } - - public static void RemoveAllStats(float f) - { - ModdedPlayer.Stats.strength.Add(-Mathf.RoundToInt(f)); - ModdedPlayer.Stats.vitality.Add(-Mathf.RoundToInt(f)); - ModdedPlayer.Stats.agility.Add(-Mathf.RoundToInt(f)); - ModdedPlayer.Stats.intelligence.Add(-Mathf.RoundToInt(f)); - } - - public static int GetMaxSocketAmountOnItem(in BaseItem.ItemType type) - { - switch (type) - { - case BaseItem.ItemType.Other: - case BaseItem.ItemType.Material: - return 0; - - case BaseItem.ItemType.ShoulderArmor: - case BaseItem.ItemType.Weapon: - case BaseItem.ItemType.Helmet: - case BaseItem.ItemType.Glove: - case BaseItem.ItemType.Boot: - case BaseItem.ItemType.Amulet: - case BaseItem.ItemType.Ring: - return 1; - - case BaseItem.ItemType.Bracer: - case BaseItem.ItemType.Pants: - case BaseItem.ItemType.SpellScroll: - case BaseItem.ItemType.Shield: - case BaseItem.ItemType.Quiver: - return 2; - - case BaseItem.ItemType.ChestArmor: - return 3; - - default: - return 0; - } - } - public static ItemStat GetSocketedStat(in int rarity, BaseItem.ItemType type, int subtypeOffset) - { - float value = 1; - int statid = 0; - switch (type) - { - case BaseItem.ItemType.Shield: - case BaseItem.ItemType.Quiver: - case BaseItem.ItemType.Pants: - case BaseItem.ItemType.ChestArmor: - case BaseItem.ItemType.ShoulderArmor: - case BaseItem.ItemType.Glove: - case BaseItem.ItemType.Bracer: - case BaseItem.ItemType.SpellScroll: - value = GetSocketStatAmount_Other(in rarity); - statid = 1; - break; - - case BaseItem.ItemType.Weapon: - value = GetSocketStatAmount_Weapon(in rarity) - 1; - statid = 3; - break; - - case BaseItem.ItemType.Helmet: - value = GetSocketStatAmount_Helmet(in rarity) - 1; - statid = 0; - break; - - case BaseItem.ItemType.Boot: - value = GetSocketStatAmount_Boots(in rarity) - 1; - statid = 2; - break; - - case BaseItem.ItemType.Ring: - case BaseItem.ItemType.Amulet: - value = GetSocketStatAmount_Amulet(in rarity); - statid = 4; - break; - } - statid = 5 * (subtypeOffset - 1) + 3001 + statid; - ItemStat stat = new ItemStat(ItemDataBase.StatByID(statid)); - stat.Amount = value * stat.Multipier; - return stat; - } - public static float GetSocketedStatAmount(in int rarity, BaseItem.ItemType type, int subtypeOffset) - { - float value = 1; - int statid = 0; - switch (type) - { - case BaseItem.ItemType.Shield: - case BaseItem.ItemType.Quiver: - case BaseItem.ItemType.Pants: - case BaseItem.ItemType.ChestArmor: - case BaseItem.ItemType.ShoulderArmor: - case BaseItem.ItemType.Glove: - case BaseItem.ItemType.Bracer: - case BaseItem.ItemType.SpellScroll: - value = GetSocketStatAmount_Other(in rarity); - statid = 1; - break; - - case BaseItem.ItemType.Weapon: - value = GetSocketStatAmount_Weapon(in rarity) - 1; - statid = 3; - break; - - case BaseItem.ItemType.Helmet: - value = GetSocketStatAmount_Helmet(in rarity) - 1; - statid = 0; - break; - - case BaseItem.ItemType.Boot: - value = GetSocketStatAmount_Boots(in rarity) - 1; - statid = 2; - break; - - case BaseItem.ItemType.Ring: - case BaseItem.ItemType.Amulet: - value = GetSocketStatAmount_Amulet(in rarity); - statid = 4; - break; - } - int stat = 5 * (subtypeOffset - 1) + 3001 + statid; - return value * ItemDataBase.StatByID(stat).Multipier; - } - public static float GetSocketStatAmount_Amulet(in int rarity) - { - switch (rarity) - { - case 3: - return 50f; - - case 4: - return 100f ; - - case 5: - return 200f ; - - case 6: - return 500f ; - - case 7: - return 3000f ; - - default: - return 20f ; - } - } - - public static float GetSocketStatAmount_Weapon(in int rarity) - { - switch (rarity) - { - case 3: - return 1.1f; - - case 4: - return 1.2f; - - case 5: - return 1.35f; - - case 6: - return 1.70f; - - case 7: - return 3.5f; - - default: - return 1.05f; - } - } - - public static float GetSocketStatAmount_Boots(in int rarity) - { - switch (rarity) - { - case 3: - return 1.065f; - - case 4: - return 1.125f; - - case 5: - return 1.18f; - - case 6: - return 1.33f; - - case 7: - return 1.50f; - - default: - return 1.04f; - } - } - - public static float GetSocketStatAmount_Helmet(in int rarity) - { - switch (rarity) - { - case 3: - return 1.075f; - - case 4: - return 1.125f; - - case 5: - return 1.2f; - - case 6: - return 1.33f; - - case 7: - return 1.50f; - - default: - return 1.04f; - } - } - - public static float GetSocketStatAmount_Other(in int rarity) - { - switch (rarity) - { - case 3: - return 25f; - - case 4: - return 60f; - - case 5: - return 200f; - - case 6: - return 500f; - - case 7: - return 1500f; - - default: - return 10f; - } - } } } \ No newline at end of file diff --git a/Items/TheForestItemDBMod.cs b/Items/TheForestItemDBMod.cs index 0fcca95..424ed0f 100644 --- a/Items/TheForestItemDBMod.cs +++ b/Items/TheForestItemDBMod.cs @@ -2,7 +2,7 @@ namespace ChampionsOfForest.Items { - public class TheForestItemDBMod : ItemDatabase + public class TheForestItemDBMod : TheForest.Items.ItemDatabase { public override void OnEnable() { diff --git a/Items/UniqueItemFunctions.cs b/Items/UniqueItemFunctions.cs index f80a0b9..3b01ce8 100644 --- a/Items/UniqueItemFunctions.cs +++ b/Items/UniqueItemFunctions.cs @@ -53,7 +53,7 @@ public static void EnemyBleedForPlayerHP(COTFEvents.HitOtherParams param) else { EnemyProgression prog = param.hitTarget as EnemyProgression; - prog.DoDoT(ModdedPlayer.Stats.maxHealth*150f, 15f); + prog.DoDoT(ModdedPlayer.Stats.maxLife*150f, 15f); } } diff --git a/ModReferences.cs b/ModReferences.cs index a181531..9b23387 100644 --- a/ModReferences.cs +++ b/ModReferences.cs @@ -2,6 +2,10 @@ using System.Collections.Generic; using System.Linq; +using ChampionsOfForest.Network; +using ChampionsOfForest.Network.Commands; +using ChampionsOfForest.Player; + using ModAPI; using TheForest.Utils; @@ -10,21 +14,11 @@ namespace ChampionsOfForest { - public class ModReferences : MonoBehaviour + public partial class ModReferences : MonoBehaviour { - private float LevelRequestCooldown = 10; - private float MFindRequestCooldown = 300; - public static Material bloodInfusedMaterial; - private static ModReferences instance; - public static ClientItemPicker ItemPicker => ClientItemPicker.Instance; - - public static List PlayerStates = new List(); - public static List Players - { - get; - private set; - } + private static ModReferences instance; + public static List Players => Scene.SceneTracker.allPlayers; public static string ThisPlayerID { @@ -32,9 +26,6 @@ public static string ThisPlayerID private set; } - public static List AllPlayerEntities = new List(); - public static Dictionary PlayerLevels = new Dictionary(); - public static Dictionary PlayerHands = new Dictionary(); public static Transform rightHandTransform = null; private void Start() @@ -42,24 +33,13 @@ private void Start() instance = this; if (BoltNetwork.isRunning) { - Players = new List(); StartCoroutine(InitPlayerID()); - StartCoroutine(UpdateSetups()); - if (GameSetup.IsMpServer && BoltNetwork.isRunning) - { - InvokeRepeating("UpdateLevelData", 1, 1); - } - PlayerLevels.Clear(); - } - else - { - Players = new List() { LocalPlayer.GameObject }; } } - public static void SendRandomItemDrops(int count, EnemyProgression.Enemy type,long bounty, ModSettings.Difficulty difficulty, Vector3 position) + public static void SendRandomItemDrops(int count, EnemyProgression.Enemy type, long value, ModSettings.GameDifficulty difficulty, Vector3 position) { - instance.StartCoroutine(Player.RCoroutines.i.AsyncSendRandomItemDrops(count, type, bounty,difficulty, position)); + instance.StartCoroutine(Player.RCoroutines.i.AsyncSendRandomItemDrops(count, type, value, difficulty, position)); } private IEnumerator InitPlayerID() @@ -79,135 +59,23 @@ private IEnumerator InitPlayerID() } ThisPlayerID = LocalPlayer.Entity.GetState().name; } - float lastLevelCheckTimestamp; - private int lastPlayerLevelCount; - public static void UpdatePlayerLevel(string nameOfPlayer, int level) - { - for (int i = 0; i < Scene.SceneTracker.allPlayers.Count; i++) - { - var state = Scene.SceneTracker.allPlayers[i].GetComponent().GetState(); - if (state!= null) - { - if (state.name == nameOfPlayer) - { - Scene.SceneTracker.allPlayers[i].GetComponentInChildren().SendMessage("SetNameWithLevel",level); - break; - } - } - } - - } - public static void RemoveUnusedPlayerLevels() - { - //todo fix this - List stringsToRemove = new List(); - foreach (var item in PlayerLevels) - { - if (!PlayerStates.Any(x => x.name == item.Key)) - { - stringsToRemove.Add(item.Key); - } - } - ModAPI.Console.Write("Removing old player level data: count=" + stringsToRemove.Count); - //foreach (var item in stringsToRemove) - //{ - // PlayerLevels.Remove(item); - //} - } + public static ServerPlayerState PlayerStates = new ServerPlayerState(); - public static void RequestAllPlayerLevels() - { - if (Time.time - instance.lastLevelCheckTimestamp > 120|| instance.lastPlayerLevelCount != Players.Count) - { - RemoveUnusedPlayerLevels(); - instance.LevelRequestCooldown = 120; - instance.lastLevelCheckTimestamp = Time.time; - instance.lastPlayerLevelCount = Players.Count; - using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) - { - using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream)) - { - w.Write(18); - w.Write("x"); - w.Close(); - } - Network.NetworkManager.SendLine(answerStream.ToArray(), Network.NetworkManager.Target.Clients); - answerStream.Close(); - } - } - } private void UpdateLevelData() { - if (Players.Count > 1) + COTFCommand.Send(NetworkManager.Target.Everyone, new GetPlayerStateParams() { - LevelRequestCooldown -= 1; - if (LevelRequestCooldown < 0 || lastPlayerLevelCount != Players.Count) - { - LevelRequestCooldown = 120; - lastLevelCheckTimestamp = Time.time; - lastPlayerLevelCount = Players.Count; - RemoveUnusedPlayerLevels(); - using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) - { - using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream)) - { - w.Write(18); - w.Close(); - } - Network.NetworkManager.SendLine(answerStream.ToArray(), Network.NetworkManager.Target.Clients); - answerStream.Close(); - } - } - - MFindRequestCooldown--; - if (MFindRequestCooldown <= 0) - { - using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) - { - using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream)) - { - w.Write(23); - w.Close(); - } - Network.NetworkManager.SendLine(answerStream.ToArray(), Network.NetworkManager.Target.Everyone); - answerStream.Close(); - } - MFindRequestCooldown = 300; - } - - if (PlayerHands.ContainsValue(null)) - { - PlayerHands.Clear(); - } - } - else - { - //PlayerLevels.Clear(); - } - } - public static void Reset() - { - instance.MFindRequestCooldown = 0; - instance.LevelRequestCooldown= 0; - } - public static void Host_RequestLevels() - { - if (GameSetup.IsMpServer) - { - using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) - { - using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream)) - { - w.Write(18); - w.Close(); - } - Network.NetworkManager.SendLine(answerStream.ToArray(), Network.NetworkManager.Target.Clients); - answerStream.Close(); - } - } + playerID = ThisPlayerID, + level = ModdedPlayer.instance.level, + health = LocalPlayer.Stats.Health, + maxHealth = ModdedPlayer.Stats.TotalMaxHealth, + entityNetworkID = LocalPlayer.Entity.networkId.PackedValue + }); } + + public static float DamageReduction(int armor) { armor = Mathf.Max(armor, 0); @@ -215,76 +83,10 @@ public static float DamageReduction(int armor) float a = armor; float b = (armor + 500f); - return Mathf.Pow(Mathf.Clamp01(a/b),2f); + return Mathf.Pow(Mathf.Clamp01(a / b), 2f); } - //invalid il code error happens here. i have no clue why, so im randomly changing it so maybe it fixes itself - //im trying splitting to more classes - public static void FindHands() - { - PlayerHands.Clear(); - for (int i = 0; i < Scene.SceneTracker.allPlayers.Count; i++) - { - if (Scene.SceneTracker.allPlayers[i].transform.root != LocalPlayer.Transform) - { - //BoltEntity entity = Scene.SceneTracker.allPlayers[i].GetComponent(); - //if (entity == null) continue; - //IPlayerState state = entity.GetState(); - //if (state == null) continue; - string playerName = getName(Scene.SceneTracker.allPlayers[i]); - if (playerName != "") - { - Transform hand = FindDeepChild(Scene.SceneTracker.allPlayers[i].transform.root, "rightHandHeld"); - if (hand != null) - { - PlayerHands.Add(playerName, hand.parent); - } - } - } - } - } - - private static string getName(GameObject gameObject) - { - BoltEntity entity = gameObject.GetComponent(); - if (entity == null) - return ""; - else - { - IPlayerState state = entity.GetState(); - if (state == null) - return ""; - else - return state.name; - } - } - - private IEnumerator UpdateSetups() - { - while (true) - { - yield return null; - if (Players.Any(x => x == null)) - { - Players.Clear(); - AllPlayerEntities.Clear(); - PlayerStates.Clear(); - Players.AddRange(Scene.SceneTracker.allPlayers); - for (int i = 0; i < Scene.SceneTracker.allPlayers.Count; i++) - { - BoltEntity b = Scene.SceneTracker.allPlayers[i].GetComponent(); - if (b != null) - { - AllPlayerEntities.Add(b); - PlayerStates.Add(b.GetState()); - } - } - } - - yield return new WaitForSeconds(10); - } - } public static Transform FindDeepChild(Transform aParent, string aName) { @@ -330,5 +132,26 @@ private static void RecursiveComponentList(Transform tr, string start) RecursiveComponentList(item, start); } } + + + private static Material _bloodMaterial; + public static Material BloodMaterial + { + get + { + if (_bloodMaterial == null) + { + _bloodMaterial = BuilderCore.Core.CreateMaterial(new BuilderCore.BuildingData() + { + EmissionColor = new Color(0.3f, 0.1f, 0), + renderMode = BuilderCore.BuildingData.RenderMode.Fade, + MainColor = Color.red, + Metalic = 0.8f, + Smoothness = 0.8f, + }); + } + return _bloodMaterial; + } + } } } \ No newline at end of file diff --git a/ModSettings.cs b/ModSettings.cs index fba62f1..775f3ee 100644 --- a/ModSettings.cs +++ b/ModSettings.cs @@ -1,35 +1,221 @@ using System.Collections.Generic; using System.IO; +using ChampionsOfForest.Network; +using ChampionsOfForest.Network.Commands; + using TheForest.Utils; namespace ChampionsOfForest { public class ModSettings { - public enum Difficulty + internal static ModSettings instance; + public enum GameDifficulty + { + Easy = 0, Veteran, Elite, Master, Challenge1, Challenge2, Challenge3, Challenge4, Challenge5, Challenge6, Hell + } + public enum DropsOnDeathModes + { + All = 0, Equipped, Disabled, Inventory, Max + } + public enum LootLevelRules { - Easy, Veteran, Elite, Master, Challenge1, Challenge2, Challenge3, Challenge4, Challenge5, Challenge6, Hell + HighestPlayerLevel = 0 , AverageLevel, LowestLevel, ClosestPlayer, HostLevel, Max } - public enum DropsOnDeathMode + GameDifficulty m_difficulty = GameDifficulty.Easy; + + // non static properties + // these are saved + DropsOnDeathModes m_dropsOnDeathMode = DropsOnDeathModes.Disabled; + LootLevelRules m_lootLevelRule = LootLevelRules.HighestPlayerLevel; + bool m_friendlyFire = false; + bool m_killOnDowned = false; + bool m_allowRandomCaveSpawn = true; + bool m_allowCaveRespawn = true; + int m_caveMaxAdditionalEnemies = 2; + float m_caveRespawnDelay = 120.0f; + int m_minimumLevelForSocketsToAppear = 20; + float m_chanceForFirstSocketToAppear = 0.25f; + float m_chanceForSubsequentSocketsToAppear = 0.35f; + + float m_magicFindPerDifficultyLevel = 0.25f; + bool m_privateLoot = false; + float m_dropQuantityMultiplier = 1; + float m_dropQualityMultiplier = 1; + float m_dropChanceMultiplier = 1; + float m_expMultiplier = 1; + int m_enemyLevelIncreaseGlobal = 0; + int m_enemyLevelIncreaseCaves = 0; + float m_enemyDamageMultiplier = 1; + float m_enemyHealthMultiplier = 1; + float m_enemyArmorMultiplier = 1; + float m_enemySpeedMultiplier = 1; + bool m_allowElites = true; + int m_lootFilterMinRarity = -1; + bool m_combineHitMarkers = false; + bool m_fullNumberHitMarkers = false; + float m_keptExperienceAfterDeath = 0; + bool m_endMassacreAfterDeath = true; + + // getters and setters + public static GameDifficulty Difficulty + { + get => instance.m_difficulty; + set => instance.m_difficulty = value; + } + public static DropsOnDeathModes DropsOnDeath + { + get => instance.m_dropsOnDeathMode; + set => instance.m_dropsOnDeathMode = value; + } + public static LootLevelRules LootLevelRule + { + get => instance.m_lootLevelRule; + set => instance.m_lootLevelRule = value; + } + public static bool FriendlyFire + { + get => instance.m_friendlyFire; + set => instance.m_friendlyFire = value; + } + public static bool KillOnDowned + { + get => instance.m_killOnDowned; + set => instance.m_killOnDowned = value; + } + public static bool AllowRandomCaveSpawn + { + get => instance.m_allowRandomCaveSpawn; + set => instance.m_allowRandomCaveSpawn = value; + } + public static bool AllowCaveRespawn + { + get => instance.m_allowCaveRespawn; + set => instance.m_allowCaveRespawn = value; + } + public static int CaveMaxAdditionalEnemies + { + get => instance.m_caveMaxAdditionalEnemies; + set => instance.m_caveMaxAdditionalEnemies = value; + } + public static float CaveRespawnDelay + { + get => instance.m_caveRespawnDelay; + set => instance.m_caveRespawnDelay = value; + } + public static int MinimumLevelForSocketsToAppear + { + get => instance.m_minimumLevelForSocketsToAppear; + set => instance.m_minimumLevelForSocketsToAppear = value; + } + public static float ChanceForFirstSocketToAppear + { + get => instance.m_chanceForFirstSocketToAppear; + set => instance.m_chanceForFirstSocketToAppear = value; + } + public static float ChanceForSubsequentSocketsToAppear + { + get => instance.m_chanceForSubsequentSocketsToAppear; + set => instance.m_chanceForSubsequentSocketsToAppear = value; + } + public static float MagicFindPerDifficultyLevel + { + get => instance.m_magicFindPerDifficultyLevel; + set => instance.m_magicFindPerDifficultyLevel = value; + } + public static bool PrivateLoot + { + get => instance.m_privateLoot; + set => instance.m_privateLoot = value; + } + public static float DropQuantityMultiplier + { + get => instance.m_dropQuantityMultiplier; + set => instance.m_dropQuantityMultiplier = value; + } + public static float DropQualityMultiplier + { + get => instance.m_dropQualityMultiplier; + set => instance.m_dropQualityMultiplier = value; + } + public static float DropChanceMultiplier + { + get => instance.m_dropChanceMultiplier; + set => instance.m_dropChanceMultiplier = value; + } + public static float ExpMultiplier + { + get => instance.m_expMultiplier; + set => instance.m_expMultiplier = value; + } + public static int EnemyLevelIncreaseGlobal + { + get => instance.m_enemyLevelIncreaseGlobal; + set => instance.m_enemyLevelIncreaseGlobal = value; + } + public static int EnemyLevelIncreaseCaves + { + get => instance.m_enemyLevelIncreaseCaves; + set => instance.m_enemyLevelIncreaseCaves = value; + } + public static float EnemyDamageMultiplier + { + get => instance.m_enemyDamageMultiplier; + set => instance.m_enemyDamageMultiplier = value; + } + public static float EnemyHealthMultiplier + { + get => instance.m_enemyHealthMultiplier; + set => instance.m_enemyHealthMultiplier = value; + } + public static float EnemyArmorMultiplier + { + get => instance.m_enemyArmorMultiplier; + set => instance.m_enemyArmorMultiplier = value; + } + public static float EnemySpeedMultiplier { - All, Equipped, Disabled, NonEquipped + get => instance.m_enemySpeedMultiplier; + set => instance.m_enemySpeedMultiplier = value; } - public enum LootLevelPolicy + public static bool AllowElites { - HighestPlayerLevel, AverageLevel, LowestLevel, ClosestPlayer, HostLevel + get => instance.m_allowElites; + set => instance.m_allowElites = value; } - public static Difficulty difficulty = Difficulty.Easy; - public static DropsOnDeathMode dropsOnDeath = DropsOnDeathMode.Disabled; + public static int LootFilterMinRarity + { + get => instance.m_lootFilterMinRarity; + set => instance.m_lootFilterMinRarity = value; + } + public static bool CombineHitMarkers + { + get => instance.m_combineHitMarkers; + set => instance.m_combineHitMarkers = value; + } + public static bool FullNumberHitMarkers + { + get => instance.m_fullNumberHitMarkers; + set => instance.m_fullNumberHitMarkers = value; + } + public static float KeptExperienceAfterDeath + { + get => instance.m_keptExperienceAfterDeath; + set => instance.m_keptExperienceAfterDeath = value; + } + public static bool EndMassacreAfterDeath + { + get => instance.m_endMassacreAfterDeath; + set => instance.m_endMassacreAfterDeath = value; + } + + + // static properties + // these are not saved public static bool DifficultyChosen = false; - public static bool FriendlyFire = true; - public static bool IsDedicated = false; - public static bool killOnDowned = false; - public static bool AllowRandomCaveSpawn = true; - public static bool AllowCaveRespawn = true; - public static int CaveMaxAdditionalEnemies = 1; - public static float CaveRespawnDelay = 1; + public static bool IsDedicated; public static string Version; public const bool RequiresNewFiles = false; @@ -37,36 +223,40 @@ public enum LootLevelPolicy public const bool RequiresNewSave = true; public const string RequiresNewSaveVersion = "1.6.0.2"; - public static readonly List outdatedFiles = new List(); - - public static float DropQuantityMultiplier = 1; - public static float DropChanceMultiplier = 1; - public static float ExpMultiplier = 1; - public static int EnemyLevelIncrease = 0; - public static float EnemyDamageMultiplier = 1; - public static float EnemyHealthMultiplier = 1; - public static float EnemyArmorMultiplier = 1; - public static float EnemySpeedMultiplier = 1; - public static bool AllowElites = true; - public static LootLevelPolicy lootLevelPolicy = LootLevelPolicy.HighestPlayerLevel; - public static int LootFilterMinRarity = 0; - public static void Reset() - { - DropQuantityMultiplier = 1; - DropChanceMultiplier = 1; - ExpMultiplier = 1; - EnemyLevelIncrease = 0; - EnemyDamageMultiplier = 1; - EnemyHealthMultiplier = 1; - EnemyArmorMultiplier = 1; - EnemySpeedMultiplier = 1; - AllowElites = true; - lootLevelPolicy = LootLevelPolicy.HighestPlayerLevel; - AllowRandomCaveSpawn = true; - AllowCaveRespawn = true; - CaveMaxAdditionalEnemies = 1; - CaveRespawnDelay = 1; - LootFilterMinRarity = 0; + public static readonly List outdatedFiles = new List(); // files to remove from disk + + + public void Reset() + { + m_dropsOnDeathMode = DropsOnDeathModes.Disabled; + m_lootLevelRule = LootLevelRules.HighestPlayerLevel; + m_friendlyFire = false; + m_killOnDowned = false; + m_allowRandomCaveSpawn = true; + m_allowCaveRespawn = true; + m_caveMaxAdditionalEnemies = 2; + m_caveRespawnDelay = 120.0f; + m_minimumLevelForSocketsToAppear = 20; + m_chanceForFirstSocketToAppear = 0.25f; + m_chanceForSubsequentSocketsToAppear = 0.35f; + m_magicFindPerDifficultyLevel = 0.25f; + m_privateLoot = false; + m_dropQuantityMultiplier = 1; + m_dropQualityMultiplier = 1; + m_dropChanceMultiplier = 1; + m_expMultiplier = 1; + m_enemyLevelIncreaseGlobal = 0; + m_enemyLevelIncreaseCaves = 0; + m_enemyDamageMultiplier = 1; + m_enemyHealthMultiplier = 1; + m_enemyArmorMultiplier = 1; + m_enemySpeedMultiplier = 1; + m_allowElites = true; + m_lootFilterMinRarity = -1; + m_combineHitMarkers = false; + m_fullNumberHitMarkers = false; + m_keptExperienceAfterDeath = 0; + m_endMassacreAfterDeath = true; } @@ -74,22 +264,37 @@ public static void BroadCastSettingsToClients() { if (GameSetup.IsMpServer) { - using (MemoryStream answerStream = new MemoryStream()) + COTFCommand.Send(NetworkManager.Target.Clients, new BroadcastModSettings() { - using (BinaryWriter w = new BinaryWriter(answerStream)) - { - w.Write(2); - w.Write((int)ModSettings.difficulty); - w.Write(ModSettings.FriendlyFire); - w.Write((int)ModSettings.dropsOnDeath); - w.Write(ModSettings.killOnDowned); - w.Close(); - } - Network.NetworkManager.SendLine(answerStream.ToArray(), Network.NetworkManager.Target.Clients); - answerStream.Close(); - } + dieOnDowned = instance.m_killOnDowned, + dropsOnDeath = instance.m_dropsOnDeathMode, + difficulty = instance.m_difficulty, + friendlyFire = instance.m_friendlyFire, + endMassacreAfterDeath = instance.m_endMassacreAfterDeath, + expKeptAfterDeath = instance.m_keptExperienceAfterDeath + }); } } + public static void ReceivedSettingsFromServer(BroadcastModSettings receivedSettings) + { + if (!GameSetup.IsMpClient || ModSettings.IsDedicated) + return; + instance.m_difficulty = receivedSettings.difficulty; + instance.m_dropsOnDeathMode = receivedSettings.dropsOnDeath; + instance.m_killOnDowned = receivedSettings.dieOnDowned; + instance.m_friendlyFire = receivedSettings.friendlyFire; + instance.m_endMassacreAfterDeath = receivedSettings.endMassacreAfterDeath; + instance.m_keptExperienceAfterDeath = receivedSettings.expKeptAfterDeath; + + if (!ModSettings.DifficultyChosen) + { + LocalPlayer.FpCharacter.UnLockView(); + LocalPlayer.FpCharacter.MovementLocked = false; + Cheats.GodMode = false; + MainMenu.Instance.ClearDiffSelectionObjects(); + } + ModSettings.DifficultyChosen = true; + } const string PATH = "Mods/Champions of the Forest/Settings.save"; public static void SaveSettings() @@ -98,26 +303,9 @@ public static void SaveSettings() { using (BinaryWriter buf = new BinaryWriter(stream)) { - buf.Write(FriendlyFire); - buf.Write(killOnDowned); - buf.Write(DropQuantityMultiplier); - buf.Write(DropChanceMultiplier); - buf.Write(ExpMultiplier); - buf.Write(EnemyLevelIncrease); - buf.Write(EnemyDamageMultiplier); - buf.Write(EnemyHealthMultiplier); - buf.Write(EnemyArmorMultiplier); - buf.Write(EnemySpeedMultiplier); - buf.Write(AllowElites); - buf.Write((int)dropsOnDeath); - buf.Write((int)lootLevelPolicy); - buf.Write(AllowRandomCaveSpawn); - buf.Write(AllowCaveRespawn); - buf.Write(CaveMaxAdditionalEnemies); - buf.Write(CaveRespawnDelay); - buf.Write(LootFilterMinRarity); - File.WriteAllBytes(PATH, stream.ToArray()); + buf.Write(Utils.GetBytesFromObject(instance)); } + File.WriteAllBytes(PATH, stream.ToArray()); } } public static void LoadSettings() @@ -127,35 +315,16 @@ public static void LoadSettings() { using (FileStream stream = new FileStream(PATH, FileMode.Open)) { - using (BinaryReader buf = new BinaryReader(stream)) + using (BinaryReader reader = new BinaryReader(stream)) { - FriendlyFire = buf.ReadBoolean(); - killOnDowned = buf.ReadBoolean(); - DropQuantityMultiplier = buf.ReadSingle(); - DropChanceMultiplier = buf.ReadSingle(); - ExpMultiplier = buf.ReadSingle(); - EnemyLevelIncrease = buf.ReadInt32(); - EnemyDamageMultiplier = buf.ReadSingle(); - EnemyHealthMultiplier = buf.ReadSingle(); - EnemyArmorMultiplier = buf.ReadSingle(); - EnemySpeedMultiplier = buf.ReadSingle(); - AllowElites = buf.ReadBoolean(); - dropsOnDeath = (DropsOnDeathMode)buf.ReadInt32(); - lootLevelPolicy = (LootLevelPolicy)buf.ReadInt32(); - AllowRandomCaveSpawn = buf.ReadBoolean(); - AllowCaveRespawn = buf.ReadBoolean(); - CaveMaxAdditionalEnemies = buf.ReadInt32(); - CaveRespawnDelay = buf.ReadSingle(); - LootFilterMinRarity = buf.ReadInt32(); + instance = Utils.GetObjectFromBytes(reader); } } } catch (System.Exception) { - - CotfUtils.Log("Failed loading settings"); + Utils.Log("Failed loading settings"); } - } } } \ No newline at end of file diff --git a/Network/COTFCommand.cs b/Network/COTFCommand.cs index cd4ab6a..db2791d 100644 --- a/Network/COTFCommand.cs +++ b/Network/COTFCommand.cs @@ -2,63 +2,43 @@ using System.IO; using System.Runtime.InteropServices; +using UnityEngine.Windows.Speech; + namespace ChampionsOfForest.Network { public class COTFCommand where ParamT : struct { - public int commandIndex; - public static COTFCommand instance; + public int commandIndex = 0; + private static COTFCommand instance; + + public delegate void ReceivedDelegate(ParamT p); - static protected void Init(Type type) + private ReceivedDelegate receivedDelegate; + + public static void Initialize(ReceivedDelegate receivedDelegate) { if (instance == null) { - var o = (COTFCommand)Activator.CreateInstance(type); - instance = o; + instance = new COTFCommand(); instance.commandIndex = CommandReader.curr_cmd_index++; - CommandReader.commandsObjects_dict.Add(instance.commandIndex, type.GetMethod("Received", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public)); - ModAPI.Log.Write($"command {instance.commandIndex} registered: {type}"); - } - } - - static byte[] GetBytes(ParamT p) - { - int size = Marshal.SizeOf(p); - byte[] arr = new byte[size]; - IntPtr ptr = Marshal.AllocHGlobal(size); - Marshal.StructureToPtr(p, ptr, true); - Marshal.Copy(ptr, arr, 0, size); - Marshal.FreeHGlobal(ptr); - return arr; - } - static ParamT GetParam(BinaryReader reader) - { - int size = Marshal.SizeOf(default(ParamT)); - IntPtr ptr = Marshal.AllocHGlobal(size); - byte[] arr = reader.ReadBytes(size); - Marshal.Copy(arr, 0, ptr, size); - var param = (ParamT)Marshal.PtrToStructure(ptr, typeof(ParamT)); - Marshal.FreeHGlobal(ptr); - return param; - } + CommandReader.callbacks.Add(instance.commandIndex, COTFCommand.Received); + instance.receivedDelegate = receivedDelegate; - protected virtual void OnSendDataWrite(BinaryWriter w) - { + Type type = typeof(COTFCommand); + ModAPI.Log.Write($"command {instance.commandIndex} registered: {type.Name}"); + } } - protected virtual void OnReceived(ParamT param, BinaryReader r) - { - } + - public static void Send(NetworkManager.Target target, ParamT param) + public static void Send(NetworkManager.Target target, in ParamT param) { using (MemoryStream answerStream = new MemoryStream()) { using (BinaryWriter w = new BinaryWriter(answerStream)) { w.Write(instance.commandIndex); - w.Write(GetBytes(param)); - instance.OnSendDataWrite(w); + w.Write(Utils.GetBytesFromObject(param)); w.Close(); } NetworkManager.SendLine(answerStream.ToArray(), target); @@ -72,8 +52,7 @@ public static void Send(BoltConnection target_connection, ParamT param) using (BinaryWriter w = new BinaryWriter(answerStream)) { w.Write(instance.commandIndex); - w.Write(GetBytes(param)); - instance.OnSendDataWrite(w); + w.Write(Utils.GetBytesFromObject(param)); w.Close(); } NetworkManager.SendLine(answerStream.ToArray(), target_connection); @@ -82,8 +61,8 @@ public static void Send(BoltConnection target_connection, ParamT param) } public static void Received(BinaryReader r) { - var p = GetParam(r); - instance.OnReceived(p, r); + ParamT p = Utils.GetObjectFromBytes(r); + instance.receivedDelegate.Invoke(p); r.Close(); } } diff --git a/Network/CommandInitializer.cs b/Network/CommandInitializer.cs index db4669f..e083cb1 100644 --- a/Network/CommandInitializer.cs +++ b/Network/CommandInitializer.cs @@ -3,27 +3,31 @@ using System.Linq; using System.Reflection; +using ChampionsOfForest.Network.Commands; + +using TheForest.Utils; + namespace ChampionsOfForest.Network { - public class CommandInitializer + public static class CommandInitializer { + public static void Init() { CommandReader.curr_cmd_index = 100; - CommandReader.commandsObjects_dict.Clear(); - var types = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "ChampionsOfForest.Network.Commands"); - foreach (var t in types) - { - var initMethod = t.GetMethod("Initialize"); - if (initMethod != null) - initMethod.Invoke(null, new object[0]); - } - } - private static IEnumerable GetTypesInNamespace(Assembly assembly, string nameSpace) - { - return - assembly.GetTypes() - .Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal) && t.IsClass); + + COTFCommand.Initialize( + param =>ModReferences.PlayerStates.UpdateOrAddPlayerState(param)); + + COTFCommand.Initialize( + param => ModSettings.ReceivedSettingsFromServer(param)); + + COTFCommand.Initialize( + param => PickUpManager.RemovePickup(param.pickupID)); + + COTFCommand.Initialize( + param => MainMenu.CreateHitMarker(param.damage, param.GetPosition(), param.GetColor())); + } } } diff --git a/Network/CommandReader.cs b/Network/CommandReader.cs index 881499f..f9b6aac 100644 --- a/Network/CommandReader.cs +++ b/Network/CommandReader.cs @@ -13,14 +13,19 @@ using TheForest.Utils; using UnityEngine; +using ChampionsOfForest.Network.Commands; +using ChampionsOfForest.Items; namespace ChampionsOfForest.Network { - + public class CommandReader { - public static Dictionary commandsObjects_dict = new Dictionary(); - public static int curr_cmd_index = 100; + public delegate void CommandDelegate(BinaryReader r); + public static Dictionary callbacks = new Dictionary(); + + + public static int curr_cmd_index; public static void OnCommand(byte[] bytes) { @@ -31,9 +36,9 @@ public static void OnCommand(byte[] bytes) int cmdIndex = r.ReadInt32(); try { - if (commandsObjects_dict.TryGetValue(cmdIndex, out var t)) + if (callbacks.TryGetValue(cmdIndex, out var t)) { - t.Invoke(null, new object[] { r }); + t.Invoke(r); } else switch (cmdIndex) @@ -55,26 +60,7 @@ public static void OnCommand(byte[] bytes) break; } - case 2: - { - if (!GameSetup.IsMpClient || ModSettings.IsDedicated) - return; - int index = r.ReadInt32(); - ModSettings.FriendlyFire = r.ReadBoolean(); - ModSettings.dropsOnDeath = (ModSettings.DropsOnDeathMode)r.ReadInt32(); - ModSettings.killOnDowned = r.ReadBoolean(); - ModSettings.difficulty = (ModSettings.Difficulty)index; - if (!ModSettings.DifficultyChosen) - { - LocalPlayer.FpCharacter.UnLockView(); - LocalPlayer.FpCharacter.MovementLocked = false; - Cheats.GodMode = false; - MainMenu.Instance.ClearDiffSelectionObjects(); - } - ModSettings.DifficultyChosen = true; - break; - } case 3: { @@ -87,7 +73,7 @@ public static void OnCommand(byte[] bytes) else if (spellid == 2) { Vector3 pos = new Vector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle()); - HealingDome.CreateHealingDome(pos, + HealingDome.CreateHealingDome(pos, r.ReadSingle(), r.ReadSingle(), r.ReadBoolean(), @@ -258,7 +244,7 @@ public static void OnCommand(byte[] bytes) float slow = r.ReadSingle(); bool pullIn = r.ReadBoolean(); string playerID = r.ReadString(); - var player = ModReferences.AllPlayerEntities.First(x => x.GetState().name == playerID); + var player = ModReferences.PlayerStates.GetPlayerState(playerID).entity; if (player) { Taunt.Cast(pos, radius, player.gameObject, duration, slow, pullIn); @@ -270,26 +256,25 @@ public static void OnCommand(byte[] bytes) } case 4: - PickUpManager.RemovePickup(r.ReadUInt64()); + //PickUpManager.RemovePickup(r.ReadUInt64()); break; case 5: { - var baseItem = ItemDataBase.ItemBases[r.ReadInt32()]; - Item item = new Item(baseItem, 1, 0, false); //reading first value, id + var baseItem = ItemDatabase.itemLookup[r.ReadInt32()]; ulong id = r.ReadUInt64(); int itemLvl = r.ReadInt32(); - item.level = itemLvl; int amount = r.ReadInt32(); Vector3 pos = new Vector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle()); int dropSource = r.ReadInt32(); + Item item = new Item(baseItem, itemLvl); while (r.BaseStream.Position != r.BaseStream.Length) { - ItemStat stat = new ItemStat(ItemDataBase.Stats[r.ReadInt32()], itemLvl, r.ReadInt32()) + ItemStat stat = new ItemStat(ItemDatabase.Stats[r.ReadInt32()], itemLvl, r.ReadInt32(), 0) { - Amount = r.ReadSingle() + amount = r.ReadSingle() }; - item.Stats.Add(stat); + item.stats.Add(stat); } PickUpManager.SpawnPickUp(item, pos, amount, id, (ItemPickUp.DropSource)dropSource); break; @@ -332,7 +317,7 @@ public static void OnCommand(byte[] bytes) } else { - CotfUtils.Log("no enemy in host's dictionary"); + Utils.Log("no enemy in host's dictionary"); } } @@ -506,63 +491,6 @@ public static void OnCommand(byte[] bytes) break; } - case 18: - { - using (MemoryStream answerStream = new MemoryStream()) - { - using (BinaryWriter w = new BinaryWriter(answerStream)) - { - w.Write(19); - w.Write(ModReferences.ThisPlayerID); - w.Write(ModdedPlayer.instance.level); - } - NetworkManager.SendLine(answerStream.ToArray(), NetworkManager.Target.Others); - } - - break; - } - - case 19: - { - string packed = r.ReadString(); - int level = r.ReadInt32(); - if (ModReferences.PlayerLevels.ContainsKey(packed)) - { - ModReferences.PlayerLevels[packed] = level; - ModReferences.UpdatePlayerLevel(packed, level); - } - else - { - ModReferences.PlayerLevels.Add(packed, level); - ModReferences.UpdatePlayerLevel(packed, level); - - } - - break; - } - - case 20: - { - if (ModSettings.IsDedicated) - return; - - float amount = r.ReadSingle(); - Vector3 pos = new Vector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle()); - Color c = new Color(r.ReadSingle(), r.ReadSingle(), r.ReadSingle(), r.ReadSingle()); - MainMenu.CreateHitMarker(amount, pos, c); - break; - } - - case 21: - { - if (ModSettings.IsDedicated) - return; - - int amount = r.ReadInt32(); - Vector3 pos = new Vector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle()); - new MainMenu.HitMarker(amount, pos, true); - break; - } case 22: //slow enemy by id { @@ -610,17 +538,7 @@ public static void OnCommand(byte[] bytes) } } } - using (MemoryStream answerStream = new MemoryStream()) - { - using (BinaryWriter w = new BinaryWriter(answerStream)) - { - w.Write(4); - w.Write(itemID); - w.Close(); - } - NetworkManager.SendLine(answerStream.ToArray(), NetworkManager.Target.Clients); - answerStream.Close(); - } + COTFCommand.Send(NetworkManager.Target.Others, new DestroyItemPickup(itemID)); } break; @@ -632,9 +550,12 @@ public static void OnCommand(byte[] bytes) if (ModReferences.ThisPlayerID == playerID) { //creating the item. - Item item = new Item(ItemDataBase.ItemBases[r.ReadInt32()], r.ReadInt32(), 0, false) + int itemID = r.ReadInt32(); + int amount = r.ReadInt32(); + int level = r.ReadInt32(); + Item item = new Item(ItemDatabase.itemLookup[itemID], level) { - level = r.ReadInt32() + stackedAmount = amount }; //adding stats to the item @@ -642,14 +563,14 @@ public static void OnCommand(byte[] bytes) { int statId = r.ReadInt32(); int statPoolIdx = r.ReadInt32(); - ItemStat stat = new ItemStat(ItemDataBase.Stats[statId], 1, statPoolIdx) + ItemStat stat = new ItemStat(ItemDatabase.Stats[statId], 1, statPoolIdx, 0) { - Amount = r.ReadSingle() + amount = r.ReadSingle() }; - item.Stats.Add(stat); + item.stats.Add(stat); } - Inventory.Instance.AddItem(item, item.Amount); + Inventory.Instance.AddItem(item, item.stackedAmount); } break; @@ -676,21 +597,11 @@ public static void OnCommand(byte[] bytes) { string id = r.ReadString(); int weaponID = r.ReadInt32(); - if (!ModReferences.PlayerHands.ContainsKey(id) || ModReferences.PlayerHands[id] == null) + var state = ModReferences.PlayerStates.GetPlayerState(id); + if (state != null) { - ModReferences.FindHands(); + CoopCustomWeapons.SetWeaponOn(state.hand, weaponID); } - - if (ModReferences.PlayerHands.ContainsKey(id)) - { - CoopCustomWeapons.SetWeaponOn(ModReferences.PlayerHands[id], weaponID); - Console.WriteLine(ModReferences.PlayerHands[id].name); - } - else - { - Debug.LogWarning("NO HAND IN COMMAND READER"); - } - break; } @@ -858,17 +769,17 @@ public static void OnCommand(byte[] bytes) var pu = PickUpManager.PickUps[PickupID]; if (PlayerID == ModReferences.ThisPlayerID) { - MainMenu.Instance.localPlayerPing = new MarkPickup(pu.transform, pu.item.name, pu.item.Rarity); + MainMenu.Instance.localPlayerPing = new MarkPickup(pu.transform, pu.item.name, (int) pu.item.rarity); } else { if (MainMenu.Instance.otherPlayerPings.ContainsKey(PlayerID)) { - MainMenu.Instance.otherPlayerPings[PlayerID] = new MarkPickup(pu.transform, pu.item.name, pu.item.Rarity); + MainMenu.Instance.otherPlayerPings[PlayerID] = new MarkPickup(pu.transform, pu.item.name, (int)pu.item.rarity); } else { - MainMenu.Instance.otherPlayerPings.Add(PlayerID, new MarkPickup(pu.transform, pu.item.name, pu.item.Rarity)); + MainMenu.Instance.otherPlayerPings.Add(PlayerID, new MarkPickup(pu.transform, pu.item.name, (int)pu.item.rarity)); } } } @@ -1013,7 +924,7 @@ public static void OnCommand(byte[] bytes) NetworkManager.SendLine(answerStream.ToArray(), NetworkManager.Target.Clients); answerStream.Close(); } - UnityEngine.Debug.Log("CP request sent"); + UnityEngine.Debug.Log("CP request sent"); } else { diff --git a/Network/CommandType.cs b/Network/CommandType.cs new file mode 100644 index 0000000..037b12f --- /dev/null +++ b/Network/CommandType.cs @@ -0,0 +1,7 @@ +namespace ChampionsOfForest.Network +{ + public enum CommandType + { + + } +} diff --git a/Network/Commands/GetPlayerStateParams.cs b/Network/Commands/GetPlayerStateParams.cs new file mode 100644 index 0000000..a90f0e1 --- /dev/null +++ b/Network/Commands/GetPlayerStateParams.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using UnityEngine; + +namespace ChampionsOfForest.Network.Commands +{ + public struct GetPlayerStateParams + { + public ulong entityNetworkID; + public string playerID; + public int level; + public float health; + public float maxHealth; + public long xp; + } + + public struct BroadcastModSettings + { + public ModSettings.DropsOnDeathModes dropsOnDeath; + public ModSettings.GameDifficulty difficulty; + public bool dieOnDowned; + public bool friendlyFire; + public bool endMassacreAfterDeath; + public float expKeptAfterDeath; + + } + + public struct DestroyItemPickup + { + public ulong pickupID; + + public DestroyItemPickup(ulong pickupID) + { + this.pickupID = pickupID; + } + } + + public struct CreateHitMarker + { + public float damage; + public float x, y, z; + public float r, g, b, a; + + public CreateHitMarker(float damage, Vector3 pos, Color color) + { + this.damage = damage; + this.x = pos.x; + this.y = pos.y; + this.z = pos.z; + this.r = color.r; + this.g = color.g; + this.b = color.b; + this.a = color.a; + } + + public Color GetColor() + { + return new Color(r, g, b, a); + } + public Vector3 GetPosition() + { + return new Vector3(x, y, z); + } + } + +} diff --git a/Network/CoopServerCallbacksMod.cs b/Network/CoopServerCallbacksMod.cs index 307a607..51d4d0a 100644 --- a/Network/CoopServerCallbacksMod.cs +++ b/Network/CoopServerCallbacksMod.cs @@ -49,19 +49,19 @@ public override void OnEvent(PlayerHitEnemy ev) { enemy.HealthScript.Burn(); } - if (ev.getAttackerType == DamageMath.SILENTattackerType) + if (ev.getAttackerType == DamageUtils.SILENTattackerType) { //ghost hit float damage = BitConverter.ToSingle(BitConverter.GetBytes(ev.Hit), 0); enemy.HitPhysicalSilent(damage); } - else if (ev.getAttackerType == DamageMath.SILENTattackerTypeMagic) + else if (ev.getAttackerType == DamageUtils.SILENTattackerTypeMagic) { //ghost hit float damage = BitConverter.ToSingle(BitConverter.GetBytes(ev.Hit), 0); enemy.HitMagic(damage); } - else if (ev.getAttackerType == DamageMath.PURE) + else if (ev.getAttackerType == DamageUtils.PURE) { float damage = BitConverter.ToSingle(BitConverter.GetBytes(ev.Hit), 0); enemy.HitPure(damage); @@ -71,9 +71,9 @@ public override void OnEvent(PlayerHitEnemy ev) if (ev.Hit > 0) { - float damage = ev.getAttackerType >= DamageMath.CONVERTEDFLOATattackerType ? BitConverter.ToSingle(BitConverter.GetBytes(ev.Hit), 0) : ev.Hit; - if (ev.getAttackerType >= DamageMath.CONVERTEDFLOATattackerType) - ev.getAttackerType -= DamageMath.CONVERTEDFLOATattackerType; + float damage = ev.getAttackerType >= DamageUtils.CONVERTEDFLOATattackerType ? BitConverter.ToSingle(BitConverter.GetBytes(ev.Hit), 0) : ev.Hit; + if (ev.getAttackerType >= DamageUtils.CONVERTEDFLOATattackerType) + ev.getAttackerType -= DamageUtils.CONVERTEDFLOATattackerType; //just in case i ever need this //this is how to get the player object which raised the event (ev.RaisedBy.UserData as BoltEntity) enemy.HealthScript.getAttackDirection(ev.getAttackerType); @@ -142,7 +142,7 @@ public override void OnEvent(PlayerHitEnemy ev) { transform.SendMessage("getStealthAttack", SendMessageOptions.DontRequireReceiver); } - float dmg = ev.getAttackerType >= DamageMath.CONVERTEDFLOATattackerType ? BitConverter.ToSingle(BitConverter.GetBytes(ev.Hit), 0) : ev.Hit; + float dmg = ev.getAttackerType >= DamageUtils.CONVERTEDFLOATattackerType ? BitConverter.ToSingle(BitConverter.GetBytes(ev.Hit), 0) : ev.Hit; if (ev.hitFallDown) { mutantHitReceiver componentInChildren5 = transform.GetComponentInChildren(); @@ -250,18 +250,28 @@ public override void Connected(BoltConnection connection) } + public override void Disconnected(BoltConnection connection) + { + NetworkManager.SendText("IIA champion left", NetworkManager.Target.Everyone); + base.Disconnected(connection); + } + } internal class CoopClientCallbacksMod : CoopClientCallbacks { public override void Disconnected(BoltConnection connection) - { + { ModAPI.Console.Write("Saving client data to avoid item duping"); - Serializer.EmergencySave(); + Serializer.ForceSave(); base.Disconnected(connection); + } + public override void Connected(BoltConnection connection) + { + + } } -} public class BoltConnectionEx : BoltConnection { @@ -301,7 +311,7 @@ public override void PacketReceived(UdpPacket udpPacket) public override void Disconnect() { - Serializer.EmergencySave(); + Serializer.ForceSave(); base.Disconnect(); } } diff --git a/Network/NetworkManager.cs b/Network/NetworkManager.cs index 899cce6..c77ddf3 100644 --- a/Network/NetworkManager.cs +++ b/Network/NetworkManager.cs @@ -2,6 +2,10 @@ using System.Collections.Generic; using Bolt; + +using ChampionsOfForest.Items; +using ChampionsOfForest.Network.Commands; + using TheForest.Utils; using UnityEngine; @@ -34,28 +38,6 @@ private void Awake() } } - private Dictionary registeredCommandIndexes; - private List> registeredCommandCallbacks; - public void RegisterCommand(Action onReceivedCallback) - { - if (registeredCommandIndexes.ContainsKey(typeof(T))) - { - ModAPI.Log.Write("Command already added: " + typeof(T)); - return; - } - else - { - int index = registeredCommandCallbacks.Count; - registeredCommandIndexes.Add(typeof(T), index); - registeredCommandCallbacks.Add(x => onReceivedCallback.Invoke((T)x)); - } - - - } - - - - /// /// Sends a string to all players on the server @@ -212,7 +194,7 @@ public static void SendItemDrop(Item item, Vector3 pos, ItemPickUp.DropSource dr using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream)) { w.Write(5); - w.Write(item.ID); + w.Write(item.id); w.Write(id); w.Write(item.level); w.Write(amount); @@ -220,11 +202,11 @@ public static void SendItemDrop(Item item, Vector3 pos, ItemPickUp.DropSource dr w.Write(pos.y); w.Write(pos.z); w.Write((int)dropSource); - foreach (ItemStat stat in item.Stats) + foreach (ItemStat stat in item.stats) { - w.Write(stat.StatID); + w.Write(stat.id); w.Write(stat.possibleStatsIndex); - w.Write(stat.Amount); + w.Write(stat.amount); } w.Close(); } @@ -241,14 +223,14 @@ public static void SendItemToPlayer(Item item, string playerID, int amount = 1) { w.Write(26); w.Write(playerID); - w.Write(item.ID); + w.Write(item.id); w.Write(amount); w.Write(item.level); - foreach (ItemStat stat in item.Stats) + foreach (ItemStat stat in item.stats) { - w.Write(stat.StatID); + w.Write(stat.id); w.Write(stat.possibleStatsIndex); - w.Write(stat.Amount); + w.Write(stat.amount); } w.Close(); } @@ -262,42 +244,12 @@ public static void HitEnemyMagic() } public static void SendHitmarker(Vector3 pos, float amount, Color c) { - using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) - { - using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream)) - { - w.Write(20); - w.Write(amount); - w.Write(pos.x); - w.Write(pos.y); - w.Write(pos.z); - w.Write(c.r); - w.Write(c.g); - w.Write(c.b); - w.Write(c.a); - w.Close(); - } - SendLine(answerStream.ToArray(), Target.Everyone); - answerStream.Close(); - } + COTFCommand.Send(Target.Everyone, new CreateHitMarker(amount, pos, c)); } - public static void SendPlayerHitmarker(Vector3 pos, int amount) + public static void SendPlayerHitmarker(Vector3 pos, float amount) { - using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) - { - using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream)) - { - w.Write(21); - w.Write(amount); - w.Write(pos.x); - w.Write(pos.y); - w.Write(pos.z); - w.Close(); - } - SendLine(answerStream.ToArray(), Target.Everyone); - answerStream.Close(); - } + SendHitmarker(pos, amount, Color.green); } /// diff --git a/Player/AutoPickupItems.cs b/Player/AutoPickupItems.cs index 0243b74..232470d 100644 --- a/Player/AutoPickupItems.cs +++ b/Player/AutoPickupItems.cs @@ -42,8 +42,8 @@ public static void DoPickup() } else { - if (Player.Inventory.Instance.ItemSlots[i].Rarity < minRarity) - minRarity = Player.Inventory.Instance.ItemSlots[i].Rarity; + if (Player.Inventory.Instance.ItemSlots[i].rarity < minRarity) + minRarity = Player.Inventory.Instance.ItemSlots[i].rarity; } } @@ -88,7 +88,7 @@ public static void DoPickup() var customPickup = hit[i].transform.gameObject.GetComponent(); if (customPickup != null) { - if(customPickup.item.Rarity>= minRarity || customPickup.item.type == BaseItem.ItemType.Material || customPickup.item.type == BaseItem.ItemType.Other) + if(customPickup.item.rarity>= minRarity || customPickup.item.type == ItemDefinition.ItemType.Material || customPickup.item.type == ItemDefinition.ItemType.Other) customPickup.PickUp(); } } diff --git a/Player/BuffDataBase.cs b/Player/BuffDataBase.cs index 4a4a05f..9329fe3 100644 --- a/Player/BuffDataBase.cs +++ b/Player/BuffDataBase.cs @@ -152,7 +152,7 @@ public static void FillBuffList() new Buff(10, 152, "Decreased Damage", true, false, 2, f => ModdedPlayer.Stats.allDamage.valueMultiplicative /= f, f => ModdedPlayer.Stats.allDamage.valueMultiplicative *= f); - new Buff(11, 160, "Stamina regen", false, false, 0, f => ModdedPlayer.Stats.staminaPerSecRate.Substract(f), f => ModdedPlayer.Stats.staminaPerSecRate.Add(f)); + new Buff(11, 160, "Stamina regen", false, false, 0, f => ModdedPlayer.Stats.staminaRegenBase.Sub(f), f => ModdedPlayer.Stats.staminaRegenBase.Add(f)); new Buff(12, 153, "Death Pact Damage", false, false) { OnAddOverrideAmount = true }; new Buff(13, 151, "Increased Melee Damage", false, false, 0, f => ModdedPlayer.Stats.meleeIncreasedDmg.valueMultiplicative /= f, f => ModdedPlayer.Stats.meleeIncreasedDmg.valueMultiplicative *= f); @@ -164,14 +164,14 @@ public static void FillBuffList() new Buff(17, 131, "Berserk", false, false, 1, f => Berserker.OnDisable(), f => Berserker.OnEnable()) { DisplayAmount = false }; - new Buff(18, 161, "Energy Leak", true, false, 1, f => ModdedPlayer.Stats.energyRecoveryperSecond.valueAdditive += f, f => ModdedPlayer.Stats.energyRecoveryperSecond.valueAdditive -= f) { DisplayAmount = false }; + new Buff(18, 161, "Energy Leak", true, false, 1, f => ModdedPlayer.Stats.energyRecoveryBase.valueAdditive += f, f => ModdedPlayer.Stats.energyRecoveryBase.valueAdditive -= f) { DisplayAmount = false }; new Buff(19, 136, "Frenzy", false, false, 1, f => { ModdedPlayer.Stats.attackSpeed.valueMultiplicative /= 1 + f * ModdedPlayer.Stats.spell_frenzyAtkSpeed; ModdedPlayer.Stats.allDamage.valueMultiplicative /= 1 + f * ModdedPlayer.Stats.spell_frenzyDmg; if (ModdedPlayer.Stats.spell_frenzyMS) - ModdedPlayer.Stats.movementSpeed.valueMultiplicative /= 1 + f * 0.05f; + ModdedPlayer.Stats.mOVEMENT_SPEED.valueMultiplicative /= 1 + f * 0.05f; ModdedPlayer.Stats.spell_frenzyStacks.valueAdditive = 0; }, f => @@ -179,7 +179,7 @@ public static void FillBuffList() ModdedPlayer.Stats.attackSpeed.valueMultiplicative *= 1 + f * ModdedPlayer.Stats.spell_frenzyAtkSpeed; ModdedPlayer.Stats.allDamage.valueMultiplicative *= 1 + f * ModdedPlayer.Stats.spell_frenzyDmg; if (ModdedPlayer.Stats.spell_frenzyMS) - ModdedPlayer.Stats.movementSpeed.valueMultiplicative *= 1 + f * 0.05f; + ModdedPlayer.Stats.mOVEMENT_SPEED.valueMultiplicative *= 1 + f * 0.05f; }) { DisplayAsPercent = false @@ -189,30 +189,30 @@ public static void FillBuffList() new Buff(21, 147, "Armor Corruption", true, true, 1, null, null) { DisplayAsPercent = false }; - new Buff(22, 151, "Increased Flat Melee Damage", false, false, 0, f => ModdedPlayer.Stats.meleeFlatDmg.Substract(f), f => ModdedPlayer.Stats.meleeFlatDmg.Add(f)) { DisplayAsPercent = false }; + new Buff(22, 151, "Increased Flat Melee Damage", false, false, 0, f => ModdedPlayer.Stats.baseMeleeDamage.Sub(f), f => ModdedPlayer.Stats.baseMeleeDamage.Add(f)) { DisplayAsPercent = false }; new Buff(23, 151, "Counter Strike", false, true, 0, f => ModdedPlayer.Stats.perk_parryCounterStrikeDamage.valueAdditive = 0) { DisplayAsPercent = false }; - new Buff(24, 151, "Critical Damage", false, false, 0, f => ModdedPlayer.Stats.critDamage.Substract(f), f => ModdedPlayer.Stats.critDamage.Add(f)); - new Buff(25, 146, "Life Regeneration", false, false, 0, f => ModdedPlayer.Stats.healthRecoveryPerSecond.Add(-f), f => ModdedPlayer.Stats.healthRecoveryPerSecond.Add(f)) { DisplayAsPercent = false }; + new Buff(24, 151, "Critical Damage", false, false, 0, f => ModdedPlayer.Stats.critDamage.Sub(f), f => ModdedPlayer.Stats.critDamage.Add(f)); + new Buff(25, 146, "Life Regeneration", false, false, 0, f => ModdedPlayer.Stats.lifeRegenBase.Add(-f), f => ModdedPlayer.Stats.lifeRegenBase.Add(f)) { DisplayAsPercent = false }; new Buff(26, 146, "Resistance", false, false, 0, f => ModdedPlayer.Stats.allDamageTaken.Divide(1 - f), f => ModdedPlayer.Stats.allDamageTaken.Multiply(1 - f)); new Buff(27, 136, "Fury Swipes", false, true, 1, f => { ModdedPlayer.instance.FurySwipesLastHit = null; - ModdedPlayer.Stats.rangedFlatDmg.valueAdditive -= ModdedPlayer.instance.FurySwipesDmg; - ModdedPlayer.Stats.spellFlatDmg.valueAdditive -= ModdedPlayer.instance.FurySwipesDmg; - ModdedPlayer.Stats.meleeFlatDmg.valueAdditive -= ModdedPlayer.instance.FurySwipesDmg; + ModdedPlayer.Stats.baseRangedDamage.valueAdditive -= ModdedPlayer.instance.FurySwipesDmg; + ModdedPlayer.Stats.baseSpellDamage.valueAdditive -= ModdedPlayer.instance.FurySwipesDmg; + ModdedPlayer.Stats.baseMeleeDamage.valueAdditive -= ModdedPlayer.instance.FurySwipesDmg; ModdedPlayer.instance.FurySwipesDmg = 0; }) { DisplayAsPercent = false }; - new Buff(28, 151, "Critical Chance", false, false, 0, f => ModdedPlayer.Stats.critChance.Substract(f - 1), f => ModdedPlayer.Stats.critChance.Add(f - 1)) { DisplayAsPercent = true }; + new Buff(28, 151, "Critical Chance", false, false, 0, f => ModdedPlayer.Stats.critChance.Sub(f - 1), f => ModdedPlayer.Stats.critChance.Add(f - 1)) { DisplayAsPercent = true }; new Buff(29, 151, "Dodge Chance", false, false, 0, f => ModdedPlayer.Stats.getHitChance.Divide(f), f => ModdedPlayer.Stats.getHitChance.Multiply(f)) { DisplayAsPercent = true }; new Buff(30, 151, "Cooldown Rate", false, false, 0, f => ModdedPlayer.Stats.cooldownRate.Divide(f), f => ModdedPlayer.Stats.cooldownRate.Multiply(f)) { DisplayAsPercent = true }; new Buff(31, 151, "Resource Cost", false, false, 0, f => { ModdedPlayer.Stats.attackStaminaCost.Divide(f); ModdedPlayer.Stats.spellCost.Divide(f); }, f => { ModdedPlayer.Stats.attackStaminaCost.Multiply(f); ModdedPlayer.Stats.spellCost.Multiply(f); }) { DisplayAsPercent = true }; - new Buff(32, 161, "Energy Regen", false, false, 1, f => ModdedPlayer.Stats.energyRecoveryperSecond.valueAdditive -= f, f => ModdedPlayer.Stats.energyRecoveryperSecond.valueAdditive += f) { DisplayAmount = false }; + new Buff(32, 161, "Energy Regen", false, false, 1, f => ModdedPlayer.Stats.energyRecoveryBase.valueAdditive -= f, f => ModdedPlayer.Stats.energyRecoveryBase.valueAdditive += f) { DisplayAmount = false }; } catch (System.Exception ex) diff --git a/Player/CoopCustomWeapons.cs b/Player/CoopCustomWeapons.cs index e4fa8cc..769a643 100644 --- a/Player/CoopCustomWeapons.cs +++ b/Player/CoopCustomWeapons.cs @@ -3,6 +3,8 @@ using BuilderCore; +using ChampionsOfForest.Items; + using UnityEngine; namespace ChampionsOfForest.Player @@ -37,7 +39,7 @@ public class CoopCustomWeapons : MonoBehaviour // foreach (var pair in vals) // { // GUILayout.Label("---------------------------------------------------------------------------------------------------"); - // GUILayout.Label(((BaseItem.WeaponModelType)pair.Key).ToString()); + // GUILayout.Label(((BaseItem.ItemSubtype)pair.Key).ToString()); // var val = pair.Value; // Vector3 of = prefabDatas[pair.Key].offset; // GUILayout.Label("offset: x:" + of.x + " y:" + of.y + " z:" + of.z); @@ -71,14 +73,14 @@ public class CoopCustomWeapons : MonoBehaviour public struct CustomWeaponPrefabData { - public BaseItem.WeaponModelType model; + public ItemDefinition.ItemSubtype model; public Vector3 offset; public Vector3 rotation; public Vector3 tip; public float Scale; public GameObject obj; - public CustomWeaponPrefabData(BaseItem.WeaponModelType model, Vector3 offset, Vector3 rotation, Vector3 tip, float scale, GameObject g) + public CustomWeaponPrefabData(ItemDefinition.ItemSubtype model, Vector3 offset, Vector3 rotation, Vector3 tip, float scale, GameObject g) { this.model = model; this.offset = offset; @@ -95,7 +97,7 @@ public static void Init() prefabs = new Dictionary(); prefabDatas = new Dictionary(); //longsword - AddWeapon(BaseItem.WeaponModelType.LongSword, + AddWeapon(ItemDefinition.ItemSubtype.LongSword, 51, Core.CreateMaterial( new BuildingData() @@ -111,7 +113,7 @@ public static void Init() 0.9f); //great sword - AddWeapon(BaseItem.WeaponModelType.GreatSword, + AddWeapon(ItemDefinition.ItemSubtype.GreatSword, 52, Core.CreateMaterial( new BuildingData() @@ -132,7 +134,7 @@ public static void Init() 1f); //hammer - AddWeapon(BaseItem.WeaponModelType.Hammer, + AddWeapon(ItemDefinition.ItemSubtype.Hammer, 108, Core.CreateMaterial( new BuildingData() @@ -147,12 +149,12 @@ public static void Init() new Vector3(0, 0, -2f), 1f); - AddWeapon(BaseItem.WeaponModelType.Axe, Instantiate(Res.ResourceLoader.GetAssetBundle(2001).LoadAsset("AxePrefab.prefab")), + AddWeapon(ItemDefinition.ItemSubtype.Axe, Instantiate(Res.ResourceLoader.GetAssetBundle(2001).LoadAsset("AxePrefab.prefab")), new Vector3(-0.05901787f, -0.075443f, -1.6f), new Vector3(0, 180, 0), new Vector3(0, 0, 0), 1); - AddWeapon(BaseItem.WeaponModelType.Greatbow, 167, + AddWeapon(ItemDefinition.ItemSubtype.Greatbow, 167, Core.CreateMaterial(new BuildingData() { BumpMap = Res.ResourceLoader.GetTexture(168), @@ -166,7 +168,7 @@ public static void Init() instance = new GameObject().AddComponent(); } - public static void AddWeapon(BaseItem.WeaponModelType model, int mesh, Material material, Vector3 offset, Vector3 rotation, Vector3 tip, float Scale) + public static void AddWeapon(ItemDefinition.ItemSubtype model, int mesh, Material material, Vector3 offset, Vector3 rotation, Vector3 tip, float Scale) { try { @@ -198,7 +200,7 @@ public static void AddWeapon(BaseItem.WeaponModelType model, int mesh, Material } } - public static void AddWeapon(BaseItem.WeaponModelType model, GameObject go, Vector3 offset, Vector3 rotation, Vector3 tip, float Scale) + public static void AddWeapon(ItemDefinition.ItemSubtype model, GameObject go, Vector3 offset, Vector3 rotation, Vector3 tip, float Scale) { try { @@ -253,7 +255,7 @@ private IEnumerator EquipDelayed(Transform handTransform, int i) objectsToDisable.Clear(); yield return null; - if (i != (int)BaseItem.WeaponModelType.None) + if (i != (int)ItemDefinition.ItemSubtype.None) { foreach (Transform child in handTransform) { diff --git a/Player/Crafting/CraftingIngredient.cs b/Player/Crafting/CraftingIngredient.cs index ad612f9..2fd7c62 100644 --- a/Player/Crafting/CraftingIngredient.cs +++ b/Player/Crafting/CraftingIngredient.cs @@ -1,4 +1,6 @@ -namespace ChampionsOfForest.Player.Crafting +using ChampionsOfForest.Items; + +namespace ChampionsOfForest.Player.Crafting { public partial class CustomCrafting { @@ -17,8 +19,8 @@ public void RemoveItem() { if (Inventory.Instance.ItemSlots.ContainsKey(pos)) { - Inventory.Instance.ItemSlots[pos].Amount--; - if (Inventory.Instance.ItemSlots[pos].Amount < 1) + Inventory.Instance.ItemSlots[pos].stackedAmount--; + if (Inventory.Instance.ItemSlots[pos].stackedAmount < 1) Inventory.Instance.ItemSlots[pos] = null; } i = null; diff --git a/Player/Crafting/Empowering.cs b/Player/Crafting/Empowering.cs index 8958d49..37ac3da 100644 --- a/Player/Crafting/Empowering.cs +++ b/Player/Crafting/Empowering.cs @@ -1,5 +1,7 @@ using System; +using ChampionsOfForest.Items; + using UnityEngine; namespace ChampionsOfForest.Player.Crafting @@ -15,12 +17,12 @@ public bool validRecipe if (CraftingHandler.changedItem.i == null || CraftingHandler.changedItem.i.destinationSlotID > -2) return false; int itemCount = 0; - int rarity = CraftingHandler.changedItem.i.Rarity; + int rarity = (int)CraftingHandler.changedItem.i.rarity; for (int i = 0; i < CraftingHandler.ingredients.Length; i++) { if (CraftingHandler.ingredients[i].i != null) { - if (CraftingHandler.ingredients[i].i.Rarity >= rarity) + if ((int)CraftingHandler.ingredients[i].i.rarity >= rarity) { itemCount++; } @@ -41,14 +43,14 @@ public void Craft() if (validRecipe) { CraftingHandler.changedItem.i.level = ModdedPlayer.instance.level; - foreach (var stat in CraftingHandler.changedItem.i.Stats) + foreach (var stat in CraftingHandler.changedItem.i.stats) { - if (stat.StatID >= 3000) + if (stat.id >= 3000) continue; - stat.Amount = stat.RollValue(CraftingHandler.changedItem.i.level) * CustomCrafting.instance.changedItem.i.GetRarityMultiplier(); - if (stat.ValueCap != 0) - stat.Amount = Mathf.Min(stat.Amount, stat.ValueCap); - stat.Amount *= stat.Multipier; + stat.amount = stat.RollValue(CraftingHandler.changedItem.i.level, CustomCrafting.instance.changedItem.i.GetRarityMultiplier()); + if (stat.valueCap != 0) + stat.amount = Mathf.Min(stat.amount, stat.valueCap); + stat.amount *= stat.multipier; } Effects.Sound_Effects.GlobalSFX.Play(Effects.Sound_Effects.GlobalSFX.SFX.Purge); @@ -75,22 +77,20 @@ public void DrawUI(in float x, in float w, in float screenScale, in GUIStyle[] s try { float mult = CustomCrafting.instance.changedItem.i.GetRarityMultiplier(); - foreach (ItemStat stat in CustomCrafting.instance.changedItem.i.Stats) + foreach (ItemStat stat in CustomCrafting.instance.changedItem.i.stats) { Rect statRect = new Rect(x + 10 * screenScale, ypos, w - 20 * screenScale, 26 * screenScale); Rect valueMinMaxRect = new Rect(statRect.xMax + 15 * screenScale, ypos, statRect.width, statRect.height); ypos += 26 * screenScale; - string maxAmount = stat.GetMaxValue(CraftingHandler.changedItem.i.level,mult) ; - string minAmount = stat.GetMinValue(CraftingHandler.changedItem.i.level, mult) ; - string amount = stat.Amount.ToString((stat.DisplayAsPercent ? "P" : "N") + stat.RoundingCount); - GUI.color = MainMenu.RarityColors[stat.Rarity]; - GUI.Label(statRect, ind + ". " + stat.Name, styles[0]); - GUI.color = Color.white; + string maxAmount = stat.GetMaxValue(CraftingHandler.changedItem.i.level, mult); + string minAmount = stat.GetMinValue(CraftingHandler.changedItem.i.level, mult); + string amount = stat.amount.ToString((stat.displayAsPercent ? "P" : "N") + stat.roundingCount); + GUI.Label(statRect, ind + ". " + stat.name, styles[0]); ind++; - - GUI.Label(statRect, amount, styles[1]); - GUI.Label(valueMinMaxRect, "[ " + minAmount+ " - " + maxAmount+" ]", styles[4]); - + + GUI.Label(statRect, amount, styles[1]); + GUI.Label(valueMinMaxRect, "[" + minAmount + " - " + maxAmount + "]", styles[4]); + } } catch (Exception e) diff --git a/Player/Crafting/IndividualRerolling.cs b/Player/Crafting/IndividualRerolling.cs index bddcf4f..abedd1b 100644 --- a/Player/Crafting/IndividualRerolling.cs +++ b/Player/Crafting/IndividualRerolling.cs @@ -1,5 +1,6 @@ using System; +using ChampionsOfForest.Items; using ChampionsOfForest.Localization; using UnityEngine; @@ -20,18 +21,18 @@ public bool validRecipe return false; if (selectedStat == -1) return false; - var stat = CraftingHandler.changedItem.i.Stats[selectedStat]; + var stat = CraftingHandler.changedItem.i.stats[selectedStat]; if (stat.possibleStatsIndex == -1) return false; - if (CraftingHandler.changedItem.i.PossibleStats[stat.possibleStatsIndex].Count < 2) + if (CraftingHandler.changedItem.i.statSlots[stat.possibleStatsIndex].options.Count < 2) return false; int itemCount = 0; - int rarity = CraftingHandler.changedItem.i.Rarity; + int rarity = (int) CraftingHandler.changedItem.i.rarity; for (int i = 0; i < CraftingHandler.ingredients.Length; i++) { if (CraftingHandler.ingredients[i].i != null) { - if (CraftingHandler.ingredients[i].i.Rarity >= rarity) + if ((int)CraftingHandler.ingredients[i].i.rarity >= rarity) { itemCount++; } @@ -50,25 +51,24 @@ public void Craft() { if (validRecipe) { - var stat = CraftingHandler.changedItem.i.Stats[selectedStat]; - if (stat.StatID > 3000) + var stat = CraftingHandler.changedItem.i.stats[selectedStat]; + if (stat.id > 3000) { - CraftingHandler.changedItem.i.Stats[selectedStat] = new ItemStat(ItemDataBase.Stats[3000]); //set to empty socket + CraftingHandler.changedItem.i.stats[selectedStat] = new ItemStat(ItemDatabase.Stats[3000]); //set to empty socket } else { - var options = CraftingHandler.changedItem.i.PossibleStats[stat.possibleStatsIndex]; - int random = UnityEngine.Random.Range(0, options.Count); + var options = CraftingHandler.changedItem.i.statSlots[stat.possibleStatsIndex]; + int random = UnityEngine.Random.Range(0, options.options.Count); { - ItemStat newStat = new ItemStat(options[random], CraftingHandler.changedItem.i.level); - newStat.Amount *= CraftingHandler.changedItem.i.GetRarityMultiplier(); + ItemStat newStat = new ItemStat(options.options[random], CraftingHandler.changedItem.i.level, stat.possibleStatsIndex, CraftingHandler.changedItem.i.GetRarityMultiplier()); + newStat.amount *= CraftingHandler.changedItem.i.GetRarityMultiplier(); newStat.possibleStatsIndex = stat.possibleStatsIndex; - if (newStat.ValueCap != 0) + if (newStat.valueCap != 0) { - newStat.Amount = Mathf.Min(newStat.Amount, newStat.ValueCap); + newStat.amount = Mathf.Min(newStat.amount, newStat.valueCap); } - CraftingHandler.changedItem.i.Stats[selectedStat] = newStat; - CraftingHandler.changedItem.i.SortStats(); + CraftingHandler.changedItem.i.stats[selectedStat] = newStat; } selectedStat = -1; @@ -100,23 +100,23 @@ public void DrawUI(in float x, in float w, in float screenScale, in GUIStyle[] s float mult = CustomCrafting.instance.changedItem.i.GetRarityMultiplier(); int ind = 0; - foreach (ItemStat stat in CustomCrafting.instance.changedItem.i.Stats) + foreach (ItemStat stat in CustomCrafting.instance.changedItem.i.stats) { Rect statRect = new Rect(x + 10 * screenScale, ypos, w - 20 * screenScale, 26 * screenScale); Rect valueMinMaxRect = new Rect(statRect.xMax + 15 * screenScale, ypos, statRect.width, statRect.height); ypos += 26 * screenScale; string maxAmount = stat.GetMaxValue(CraftingHandler.changedItem.i.level, mult); string minAmount = stat.GetMinValue(CraftingHandler.changedItem.i.level, mult); - string amount = stat.Amount.ToString((stat.DisplayAsPercent ? "P" : "N") + stat.RoundingCount); + string amount = stat.amount.ToString((stat.displayAsPercent ? "P" : "N") + stat.roundingCount); - GUI.color = MainMenu.RarityColors[stat.Rarity]; + GUI.color = MainMenu.RarityColors[stat.rarity]; if (selectedStat == ind) { - GUI.Label(statRect, "• " + stat.Name + " •", new GUIStyle(styles[0]) { fontStyle = FontStyle.Bold, fontSize = Mathf.RoundToInt(19 * screenScale) }); + GUI.Label(statRect, "• " + stat.name + " •", new GUIStyle(styles[0]) { fontStyle = FontStyle.Bold, fontSize = Mathf.RoundToInt(19 * screenScale) }); } else { - if (GUI.Button(statRect, stat.Name, styles[0])) + if (GUI.Button(statRect, stat.name, styles[0])) { selectedStat = ind; } @@ -140,7 +140,7 @@ public void DrawUI(in float x, in float w, in float screenScale, in GUIStyle[] s { if (validRecipe) { - if (GUI.Button(new Rect(x, ypos, w, 40 * screenScale), CraftingHandler.changedItem.i.Stats[selectedStat].StatID > 3000 ? Translations.IndividualRerolling_3/*Empty socket*/ : Translations.IndividualRerolling_2/*Reroll stat*/, styles[2])) //tr + if (GUI.Button(new Rect(x, ypos, w, 40 * screenScale), CraftingHandler.changedItem.i.stats[selectedStat].id > 3000 ? Translations.IndividualRerolling_3/*Empty socket*/ : Translations.IndividualRerolling_2/*Reroll stat*/, styles[2])) //tr { Craft(); } @@ -174,10 +174,10 @@ public void DrawUI(in float x, in float w, in float screenScale, in GUIStyle[] s } if (selectedStat != -1) { - var stat = CraftingHandler.changedItem.i.Stats[selectedStat]; + var stat = CraftingHandler.changedItem.i.stats[selectedStat]; if (stat.possibleStatsIndex != -1) { - var options = CraftingHandler.changedItem.i.PossibleStats[stat.possibleStatsIndex]; + var options = CraftingHandler.changedItem.i.statSlots[stat.possibleStatsIndex]; if (options.Count == 1) { GUI.Label(new Rect(x, ypos, w, Screen.height - x), Translations.IndividualRerolling_5/*This stat cannot be changed*/, new GUIStyle(styles[0]) { alignment = TextAnchor.UpperLeft, fontSize = (int)(12 * screenScale), wordWrap = true }); //tr @@ -188,7 +188,7 @@ public void DrawUI(in float x, in float w, in float screenScale, in GUIStyle[] s string optionsStr = Translations.IndividualRerolling_6/*Possible stats:\n*/; //tr foreach (var stat1 in options) { - optionsStr += stat1.Name + '\t'; + optionsStr += stat1.name + '\t'; } GUI.Label(new Rect(x, ypos, w, Screen.height - x), optionsStr, new GUIStyle(styles[0]) { alignment = TextAnchor.UpperLeft, fontSize = (int)(12 * screenScale), wordWrap = true }); } diff --git a/Player/Crafting/Polishing.cs b/Player/Crafting/Polishing.cs index 08eb8e4..a07d0be 100644 --- a/Player/Crafting/Polishing.cs +++ b/Player/Crafting/Polishing.cs @@ -16,17 +16,17 @@ public bool validRecipe { get { - if (CraftingHandler.changedItem.i == null || CraftingHandler.changedItem.i.Stats.Count <= selectedStat || selectedStat < 0) + if (CraftingHandler.changedItem.i == null || CraftingHandler.changedItem.i.stats.Count <= selectedStat || selectedStat < 0) return false; - if (CraftingHandler.changedItem.i.Stats[selectedStat].StatID == 3000) + if (CraftingHandler.changedItem.i.stats[selectedStat].id == 3000) return false; int itemCount = 0; - int rarity = CraftingHandler.changedItem.i.Rarity; + int rarity = CraftingHandler.changedItem.i.rarity; for (int i = 0; i < CraftingHandler.ingredients.Length; i++) { if (CraftingHandler.ingredients[i].i != null) { - if (CraftingHandler.ingredients[i].i.Rarity >= rarity) + if (CraftingHandler.ingredients[i].i.rarity >= rarity) itemCount++; else return false; @@ -42,17 +42,17 @@ public void Craft() { if (validRecipe) { - var stat = CraftingHandler.changedItem.i.Stats[selectedStat]; - if (stat.StatID > 3000) + var stat = CraftingHandler.changedItem.i.stats[selectedStat]; + if (stat.id > 3000) { - CraftingHandler.changedItem.i.Stats[selectedStat] = new ItemStat(ItemDataBase.Stats[3000]); //set to empty socket + CraftingHandler.changedItem.i.stats[selectedStat] = new ItemStat(ItemDatabase.Stats[3000]); //set to empty socket } else { - stat.Amount = stat.RollValue(CraftingHandler.changedItem.i.level) * CustomCrafting.instance.changedItem.i.GetRarityMultiplier(); - if (stat.ValueCap != 0) - stat.Amount = Mathf.Min(stat.Amount, stat.ValueCap); - stat.Amount *= stat.Multipier; + stat.amount = stat.RollValue(CraftingHandler.changedItem.i.level) * CustomCrafting.instance.changedItem.i.GetRarityMultiplier(); + if (stat.valueCap != 0) + stat.amount = Mathf.Min(stat.amount, stat.valueCap); + stat.amount *= stat.multipier; } Effects.Sound_Effects.GlobalSFX.Play(Effects.Sound_Effects.GlobalSFX.SFX.Purge); for (int i = 0; i < CraftingHandler.ingredients.Length; i++) @@ -79,23 +79,23 @@ public void DrawUI(in float x, in float w, in float screenScale, in GUIStyle[] s float mult = CustomCrafting.instance.changedItem.i.GetRarityMultiplier(); int ind = 0; - foreach (ItemStat stat in CustomCrafting.instance.changedItem.i.Stats) + foreach (ItemStat stat in CustomCrafting.instance.changedItem.i.stats) { Rect statRect = new Rect(x + 10 * screenScale, ypos, w - 20 * screenScale, 26 * screenScale); Rect valueMinMaxRect = new Rect(statRect.xMax + 15 * screenScale, ypos, statRect.width, statRect.height); ypos += 26 * screenScale; string maxAmount = stat.GetMaxValue(CraftingHandler.changedItem.i.level, mult); string minAmount = stat.GetMinValue(CraftingHandler.changedItem.i.level, mult); - string amount = stat.Amount.ToString((stat.DisplayAsPercent ? "P" : "N") + stat.RoundingCount); + string amount = stat.amount.ToString((stat.displayAsPercent ? "P" : "N") + stat.roundingCount); - GUI.color = MainMenu.RarityColors[stat.Rarity]; + GUI.color = MainMenu.RarityColors[stat.rarity]; if (selectedStat == ind) { - GUI.Label(statRect, "• " + stat.Name + " •", new GUIStyle(styles[0]) { fontStyle = FontStyle.Bold, fontSize = Mathf.RoundToInt(19 * screenScale) }); + GUI.Label(statRect, "• " + stat.name + " •", new GUIStyle(styles[0]) { fontStyle = FontStyle.Bold, fontSize = Mathf.RoundToInt(19 * screenScale) }); } else { - if (GUI.Button(statRect, stat.Name, styles[0])) + if (GUI.Button(statRect, stat.name, styles[0])) { selectedStat = ind; } @@ -120,7 +120,7 @@ public void DrawUI(in float x, in float w, in float screenScale, in GUIStyle[] s if (validRecipe) { - if (GUI.Button(new Rect(x, ypos, w, 40 * screenScale), CraftingHandler.changedItem.i.Stats[selectedStat].StatID > 3000 ? Translations.IndividualRerolling_3/*Empty socket*/ : Translations.Polishing_2/*Reroll stat value*/, styles[2])) //tr + if (GUI.Button(new Rect(x, ypos, w, 40 * screenScale), CraftingHandler.changedItem.i.stats[selectedStat].id > 3000 ? Translations.IndividualRerolling_3/*Empty socket*/ : Translations.Polishing_2/*Reroll stat value*/, styles[2])) //tr { Craft(); } diff --git a/Player/Crafting/Reforging.cs b/Player/Crafting/Reforging.cs index f88bfc4..5d6aec7 100644 --- a/Player/Crafting/Reforging.cs +++ b/Player/Crafting/Reforging.cs @@ -20,12 +20,12 @@ public bool validRecipe if (CraftingHandler.changedItem.i == null) return false; int itemCount = 0; - int rarity = CraftingHandler.changedItem.i.Rarity; + int rarity = CraftingHandler.changedItem.i.rarity; for (int i = 0; i < CraftingHandler.ingredients.Length; i++) { if (CraftingHandler.ingredients[i].i != null) { - if (CraftingHandler.ingredients[i].i.Rarity >= rarity) + if (CraftingHandler.ingredients[i].i.rarity >= rarity) { itemCount++; } @@ -46,7 +46,7 @@ public void Craft() if (validRecipe) { int lvl = CraftingHandler.changedItem.i.level; - var v = ItemDataBase.ItemBases.Where(x => x.Value.ID != CraftingHandler.changedItem.i.ID && x.Value.Rarity == CraftingHandler.changedItem.i.Rarity).Select(x => x.Value).ToArray(); + var v = ItemDatabase.itemLookup.Where(x => x.Value.id != CraftingHandler.changedItem.i.id && x.Value.rarity == CraftingHandler.changedItem.i.rarity).Select(x => x.Value).ToArray(); var ib = v[UnityEngine.Random.Range(0, v.Length)]; var newItem = new Item(ib, 1, 0, false) @@ -82,18 +82,18 @@ public void DrawUI(in float x, in float w, in float screenScale, in GUIStyle[] s Rect nameRect = new Rect(x + 10 * screenScale, ypos, w - 20 * screenScale, 30 * screenScale); ypos += 30 * screenScale; - GUI.color = MainMenu.RarityColors[CustomCrafting.instance.changedItem.i.Rarity]; + GUI.color = MainMenu.RarityColors[CustomCrafting.instance.changedItem.i.rarity]; GUI.Label(nameRect, CustomCrafting.instance.changedItem.i.name, styles[3]); - foreach (ItemStat stat in CustomCrafting.instance.changedItem.i.Stats) + foreach (ItemStat stat in CustomCrafting.instance.changedItem.i.stats) { Rect statRect = new Rect(x + 10 * screenScale, ypos, w - 20 * screenScale, 26 * screenScale); Rect valueMinMaxRect = new Rect(statRect.xMax + 15 * screenScale, ypos, statRect.width, statRect.height); ypos += 26 * screenScale; string maxAmount = stat.GetMaxValue(CraftingHandler.changedItem.i.level, mult); string minAmount = stat.GetMinValue(CraftingHandler.changedItem.i.level, mult); - string amount = stat.Amount.ToString((stat.DisplayAsPercent ? "P" : "N") + stat.RoundingCount); - GUI.color = MainMenu.RarityColors[stat.Rarity]; - GUI.Label(statRect, ind + ". " + stat.Name, styles[0]); + string amount = stat.amount.ToString((stat.displayAsPercent ? "P" : "N") + stat.roundingCount); + GUI.color = MainMenu.RarityColors[stat.rarity]; + GUI.Label(statRect, ind + ". " + stat.name, styles[0]); GUI.color = Color.white; ind++; diff --git a/Player/Crafting/Rerolling.cs b/Player/Crafting/Rerolling.cs index bfd774e..39d73ad 100644 --- a/Player/Crafting/Rerolling.cs +++ b/Player/Crafting/Rerolling.cs @@ -17,12 +17,12 @@ public bool validRecipe if (CraftingHandler.changedItem.i == null) return false; int itemCount = 0; - int rarity = CraftingHandler.changedItem.i.Rarity; + int rarity = CraftingHandler.changedItem.i.rarity; for (int i = 0; i < CraftingHandler.ingredients.Length; i++) { if (CraftingHandler.ingredients[i].i != null) { - if (CraftingHandler.ingredients[i].i.Rarity >= rarity) + if (CraftingHandler.ingredients[i].i.rarity >= rarity) { itemCount++; } @@ -69,16 +69,16 @@ public void DrawUI(in float x, in float w, in float screenScale, in GUIStyle[] s int ind = 1; try { - foreach (ItemStat stat in CustomCrafting.instance.changedItem.i.Stats) + foreach (ItemStat stat in CustomCrafting.instance.changedItem.i.stats) { Rect statRect = new Rect(x + 10 * screenScale, ypos, w - 20 * screenScale, 26 * screenScale); Rect valueMinMaxRect = new Rect(statRect.xMax + 15 * screenScale, ypos, statRect.width, statRect.height); ypos += 26 * screenScale; string maxAmount = stat.GetMaxValue(CraftingHandler.changedItem.i.level, mult); string minAmount = stat.GetMinValue(CraftingHandler.changedItem.i.level, mult); - string amount = stat.Amount.ToString((stat.DisplayAsPercent ? "P" : "N") + stat.RoundingCount); - GUI.color = MainMenu.RarityColors[stat.Rarity]; - GUI.Label(statRect, ind + ". " + stat.Name, styles[0]); + string amount = stat.amount.ToString((stat.displayAsPercent ? "P" : "N") + stat.roundingCount); + GUI.color = MainMenu.RarityColors[stat.rarity]; + GUI.Label(statRect, ind + ". " + stat.name, styles[0]); GUI.color = Color.white; ind++; diff --git a/Player/CustomBow.cs b/Player/CustomBow.cs index ae7dc7d..a76a772 100644 --- a/Player/CustomBow.cs +++ b/Player/CustomBow.cs @@ -8,32 +8,6 @@ namespace ChampionsOfForest { - // public class SomeFuckingBowControllerClass : BowController - // { - // CustomBowBase cbb; - // protected override void OnEnable() - // { - // if (_bowItemId == 79) - // { - // if (cbb == null) - // { - // cbb = gameObject.AddComponent(); - // } - // } - // base.OnEnable(); - // } - // protected override void Start() - // { - // if (_bowItemId == 79) - // { - // if (cbb == null) - // { - // cbb = gameObject.AddComponent(); - // } - // } - // base.Start(); - // } - //} public class CustomBowBase : MonoBehaviour { public static GameObject baseBow; @@ -74,14 +48,14 @@ private void OnEnable() { w.Write(28); w.Write(ModReferences.ThisPlayerID); - w.Write((int)BaseItem.WeaponModelType.Greatbow); + w.Write((int)ItemDefinition.ItemSubtype.Greatbow); w.Close(); } Network.NetworkManager.SendLine(answerStream.ToArray(), Network.NetworkManager.Target.Others); answerStream.Close(); } } - PlayerInventoryMod.ToEquipWeaponType = BaseItem.WeaponModelType.None; + PlayerInventoryMod.ToEquipWeaponType = ItemDefinition.ItemSubtype.None; } private void OnDisable() @@ -95,7 +69,7 @@ private void OnDisable() { w.Write(28); w.Write(ModReferences.ThisPlayerID); - w.Write((int)BaseItem.WeaponModelType.None); + w.Write((int)ItemDefinition.ItemSubtype.None); w.Close(); } Network.NetworkManager.SendLine(answerStream.ToArray(), Network.NetworkManager.Target.Others); @@ -134,7 +108,7 @@ private void Start() }); Destroy(bow.gameObject); - model.transform.localScale *= 1.1f; + //model.transform.localScale *= 1.1f; } catch (System.Exception e) { diff --git a/Player/CustomWeapon.cs b/Player/CustomWeapon.cs index 4d3d4ea..68e8d92 100644 --- a/Player/CustomWeapon.cs +++ b/Player/CustomWeapon.cs @@ -1,4 +1,6 @@ -using UnityEngine; +using ChampionsOfForest.Items; + +using UnityEngine; namespace ChampionsOfForest.Player { @@ -28,7 +30,7 @@ public class CustomWeapon public float trailWidth = 0.14f; - public CustomWeapon(BaseItem.WeaponModelType model, int mesh, Material material, Vector3 offset, Vector3 rotation, Vector3 tip, float colliderScale = 1, float scale = 1, float damage = 5, float smashDamage = 15, float swingspeed = 1, float triedswingspeed = 1, float staminaDrain = 6, bool noTreeCut = false, float treeDamage = 1) + public CustomWeapon(ItemDefinition.ItemSubtype model, int mesh, Material material, Vector3 offset, Vector3 rotation, Vector3 tip, float colliderScale = 1, float scale = 1, float damage = 5, float smashDamage = 15, float swingspeed = 1, float triedswingspeed = 1, float staminaDrain = 6, bool noTreeCut = false, float treeDamage = 1) { this.damage = damage; this.swingspeed = swingspeed; @@ -49,7 +51,7 @@ public CustomWeapon(BaseItem.WeaponModelType model, int mesh, Material material, PlayerInventoryMod.customWeapons.Add(model, this); } - public CustomWeapon(BaseItem.WeaponModelType model, int mesh, Material material, Vector3 offset, Vector3 rotation, Vector3 tip, float scale = 1) + public CustomWeapon(ItemDefinition.ItemSubtype model, int mesh, Material material, Vector3 offset, Vector3 rotation, Vector3 tip, float scale = 1) { this.damage = 6; this.swingspeed = 1; @@ -70,7 +72,7 @@ public CustomWeapon(BaseItem.WeaponModelType model, int mesh, Material material, PlayerInventoryMod.customWeapons.Add(model, this); } - public CustomWeapon(BaseItem.WeaponModelType model, GameObject obj, TrailRenderer trail, Vector3 offset, Vector3 rotation, float scale = 1) + public CustomWeapon(ItemDefinition.ItemSubtype model, GameObject obj, TrailRenderer trail, Vector3 offset, Vector3 rotation, float scale = 1) { this.damage = 6; this.swingspeed = 1; @@ -89,7 +91,7 @@ public CustomWeapon(BaseItem.WeaponModelType model, GameObject obj, TrailRendere PlayerInventoryMod.customWeapons.Add(model, this); } - public CustomWeapon(BaseItem.WeaponModelType model, GameObject obj, Vector3 offset, Vector3 rotation, float scale = 1) + public CustomWeapon(ItemDefinition.ItemSubtype model, GameObject obj, Vector3 offset, Vector3 rotation, float scale = 1) { this.damage = 6; this.swingspeed = 1; diff --git a/Player/Inventory.cs b/Player/Inventory.cs index 92f26f3..a4a2161 100644 --- a/Player/Inventory.cs +++ b/Player/Inventory.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; +using ChampionsOfForest.Items; using ChampionsOfForest.Player.Crafting; using TheForest.Utils; @@ -25,7 +26,7 @@ public static Item GetEquippedItemAtSlot(EquippableSlots slot) if (Instance.ItemSlots.ContainsKey((int)slot)) { var i = Instance.ItemSlots[(int)slot]; - if (i != null && i.Equipped) + if (i != null && i.isEquipped) return i; } return null; @@ -77,11 +78,11 @@ private void Update() { if (item.Value != null) { - if (item.Value.Equipped) + if (item.Value.isEquipped) { if (item.Key > -1) { - item.Value.Equipped = false; + item.Value.isEquipped = false; item.Value.OnUnequip(); } } @@ -91,7 +92,7 @@ private void Update() { //if (item.Value.level <= ModdedPlayer.instance.level) { - item.Value.Equipped = true; + item.Value.isEquipped = true; item.Value.OnEquip(); } } @@ -109,18 +110,18 @@ public bool DropItemOnPosition(int key, Vector3 pos) { Item i = ItemSlots[key]; - int amount = i.Amount; - i.Amount = 1; + int amount = i.stackedAmount; + i.stackedAmount = 1; for (int ind = 0; ind < amount; ind++) { Network.NetworkManager.SendItemDrop(i, pos, ItemPickUp.DropSource.PlayerDeath); } - if (ItemSlots[key].Equipped) + if (ItemSlots[key].isEquipped) { ItemSlots[key].OnUnequip(); - ItemSlots[key].Equipped = false; + ItemSlots[key].isEquipped = false; } ItemSlots[key] = null; @@ -135,15 +136,15 @@ public bool DropItem(int key, int amount = 0) { Item i = ItemSlots[key]; - amount = amount == 0 ? i.Amount : Mathf.Min(amount, i.Amount); + amount = amount == 0 ? i.stackedAmount : Mathf.Min(amount, i.stackedAmount); Network.NetworkManager.SendItemDrop(i, LocalPlayer.Transform.position + Vector3.up * 1.5f + LocalPlayer.Transform.forward * 3, ItemPickUp.DropSource.PlayerInventory , amount); - ItemSlots[key].Amount -= amount; - if (ItemSlots[key].Amount <= 0) + ItemSlots[key].stackedAmount -= amount; + if (ItemSlots[key].stackedAmount <= 0) { - if (ItemSlots[key].Equipped) + if (ItemSlots[key].isEquipped) { ItemSlots[key].OnUnequip(); - ItemSlots[key].Equipped = false; + ItemSlots[key].isEquipped = false; } ItemSlots[key] = null; } @@ -250,18 +251,18 @@ public bool AddItem(Item item, int amount = 1) { if (ItemSlots[i] != null) { - if (ItemSlots[i].ID == item.ID) + if (ItemSlots[i].id == item.id) { - if (ItemSlots[i].StackSize >= amount + ItemSlots[i].Amount) + if (ItemSlots[i].stackSize >= amount + ItemSlots[i].stackedAmount) { - ItemSlots[i].Amount += amount; + ItemSlots[i].stackedAmount += amount; PickedUpNotification(ItemSlots[i].name); amount = 0; } - else if (ItemSlots[i].StackSize - ItemSlots[i].Amount > 0) + else if (ItemSlots[i].stackSize - ItemSlots[i].stackedAmount > 0) { - int extrafit = ItemSlots[i].StackSize - ItemSlots[i].Amount; - ItemSlots[i].Amount = ItemSlots[i].StackSize; + int extrafit = ItemSlots[i].stackSize - ItemSlots[i].stackedAmount; + ItemSlots[i].stackedAmount = ItemSlots[i].stackSize; amount -= extrafit; } if (amount <= 0) @@ -276,7 +277,7 @@ public bool AddItem(Item item, int amount = 1) if (ItemSlots[i] == null) { ItemSlots[i] = item; - ItemSlots[i].Amount = amount; + ItemSlots[i].stackedAmount = amount; PickedUpNotification(ItemSlots[i].name); return true; } diff --git a/Player/Main Menu/MainMenu.cs b/Player/Main Menu/MainMenu.cs index 02f8869..8f01c01 100644 --- a/Player/Main Menu/MainMenu.cs +++ b/Player/Main Menu/MainMenu.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; +using ChampionsOfForest.Items; using ChampionsOfForest.Localization; using ChampionsOfForest.Player; using ChampionsOfForest.Player.Crafting; @@ -95,17 +96,7 @@ private Transform MainCamera //a static variable for colors of items with different rarities //affects item border in inventory, text color in pickup, particle effect color - public readonly static Color[] RarityColors = new Color[] - { - new Color(0.4f,0.4f,0.4f), - new Color(0.6f,0.6f,0.6f), - new Color(0.1f,0.1f,0.75f), - new Color(0.1f,0.5f,1f), - new Color(1,0.95f,0.1f), - new Color(1,0.5f,0f), - new Color(0.1f,1,0.3f), - new Color(0.74f,0.05f,0.05f), - }; + public enum OpenedMenuMode { @@ -294,39 +285,39 @@ private void Update() switch (item.type) { - case BaseItem.ItemType.Helmet: + case ItemDefinition.ItemType.Helmet: targetSlot = -2; break; - case BaseItem.ItemType.ChestArmor: + case ItemDefinition.ItemType.ChestArmor: targetSlot = -3; break; - case BaseItem.ItemType.Pants: + case ItemDefinition.ItemType.Pants: targetSlot = -4; break; - case BaseItem.ItemType.Boot: + case ItemDefinition.ItemType.Boot: targetSlot = -5; break; - case BaseItem.ItemType.ShoulderArmor: + case ItemDefinition.ItemType.ShoulderArmor: targetSlot = -6; break; - case BaseItem.ItemType.Glove: + case ItemDefinition.ItemType.Glove: targetSlot = -7; break; - case BaseItem.ItemType.Amulet: + case ItemDefinition.ItemType.Amulet: targetSlot = -8; break; - case BaseItem.ItemType.Bracer: + case ItemDefinition.ItemType.Bracer: targetSlot = -9; break; - case BaseItem.ItemType.Ring: + case ItemDefinition.ItemType.Ring: if (Inventory.Instance.ItemSlots[-10] == null) targetSlot = -10; else if (Inventory.Instance.ItemSlots[-11] == null) @@ -335,13 +326,13 @@ private void Update() targetSlot = -10; break; - case BaseItem.ItemType.Weapon: + case ItemDefinition.ItemType.Weapon: targetSlot = -12; break; - case BaseItem.ItemType.Quiver: - case BaseItem.ItemType.SpellScroll: - case BaseItem.ItemType.Shield: + case ItemDefinition.ItemType.Quiver: + case ItemDefinition.ItemType.SpellScroll: + case ItemDefinition.ItemType.Shield: targetSlot = -13; break; } @@ -554,10 +545,10 @@ private void DrawMain() { if (isDragging) { - if (DraggedItem.Equipped) + if (DraggedItem.isEquipped) { DraggedItem.OnUnequip(); - Inventory.Instance.ItemSlots[DraggedItemIndex].Equipped = false; + Inventory.Instance.ItemSlots[DraggedItemIndex].isEquipped = false; } Inventory.Instance.DropItem(DraggedItemIndex); DraggedItem = null; @@ -572,22 +563,22 @@ private void DrawMain() center = center }; - GUI.Label(new Rect(10 * screenScale, 10 * screenScale, 300, 100), Translations.MainMenu_23/*Difficulty: */ + DiffSel_Names[(int)ModSettings.difficulty](), chgDiffLabelStyle); //tr + GUI.Label(new Rect(10 * screenScale, 10 * screenScale, 300, 100), Translations.MainMenu_23/*Difficulty: */ + DiffSel_Names[(int)ModSettings.Difficulty](), chgDiffLabelStyle); //tr //drawing difficulty raise lower buttons if (difficultyCooldown <= 0 && !GameSetup.IsMpClient) { - if ((int)ModSettings.difficulty < (int)ModSettings.Difficulty.Hell && GUI.Button(new Rect(10 * screenScale, 90 * screenScale, 200 * screenScale, 40 * screenScale), Translations.MainMenu_24/*Raise Difficulty*/, chgDiffBtnStyle)) //tr + if ((int)ModSettings.Difficulty < (int)ModSettings.GameDifficulty.Hell && GUI.Button(new Rect(10 * screenScale, 90 * screenScale, 200 * screenScale, 40 * screenScale), Translations.MainMenu_24/*Raise Difficulty*/, chgDiffBtnStyle)) //tr { //raise difficulty difficultyCooldown = 30; - ModSettings.difficulty++; + ModSettings.Difficulty++; ModSettings.BroadCastSettingsToClients(); } - if (ModSettings.difficulty > (int)ModSettings.Difficulty.Easy && GUI.Button(new Rect(10 * screenScale, 130 * screenScale, 200 * screenScale, 40 * screenScale), Translations.MainMenu_25/*Lower Difficulty*/, chgDiffBtnStyle)) //tr + if (ModSettings.Difficulty > (int)ModSettings.GameDifficulty.Easy && GUI.Button(new Rect(10 * screenScale, 130 * screenScale, 200 * screenScale, 40 * screenScale), Translations.MainMenu_25/*Lower Difficulty*/, chgDiffBtnStyle)) //tr { //lower difficulty difficultyCooldown = 30; - ModSettings.difficulty--; + ModSettings.Difficulty--; ModSettings.BroadCastSettingsToClients(); } if (GUI.Button(new Rect(10 * screenScale, 170 * screenScale, 200 * screenScale, 40 * screenScale), Translations.MainMenu_26/*Change Options*/, chgDiffBtnStyle)) //tr diff --git a/Player/Main Menu/MainMenu_DifficultySelection.cs b/Player/Main Menu/MainMenu_DifficultySelection.cs index 93deb75..f2591f6 100644 --- a/Player/Main Menu/MainMenu_DifficultySelection.cs +++ b/Player/Main Menu/MainMenu_DifficultySelection.cs @@ -171,7 +171,6 @@ private void InitStyles() }; } - private readonly int[] highestObtainableLootTierPerLevel = { 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7 }; private void DrawDifficultyTabs() { @@ -186,8 +185,8 @@ private void DrawDifficultyTabs() if (GUI.Button(r, "", ButtonStyle)) { ModSettings.DifficultyChosen = true; - Array values = Enum.GetValues(typeof(ModSettings.Difficulty)); - ModSettings.difficulty = (ModSettings.Difficulty)values.GetValue(ii); + Array values = Enum.GetValues(typeof(ModSettings.GameDifficulty)); + ModSettings.Difficulty = (ModSettings.GameDifficulty)values.GetValue(ii); LocalPlayer.FpCharacter.UnLockView(); LocalPlayer.FpCharacter.MovementLocked = false; Cheats.GodMode = false; @@ -204,7 +203,8 @@ private void DrawDifficultyTabs() desc.height = 400 * screenScale; desc.y = icon.yMax; - GUI.color = RarityColors[highestObtainableLootTierPerLevel[ii]]; + //TODO - add colors for each difficulty + //GUI.color = RarityColors[highestObtainableLootTierPerLevel[ii]]; GUI.Label(name, DiffSel_Names[ii](), DiffNameStyle); GUI.color = Color.white; if (ii < 4) @@ -263,7 +263,7 @@ private void DrawSettings() } //Bleeding out - if (ModSettings.killOnDowned) + if (ModSettings.KillOnDowned) { GUI.color = Color.red; var r = new Rect(Screen.width / 2 - 300 * screenScale, 170 * screenScale, 600 * screenScale, 50 * screenScale); @@ -273,12 +273,13 @@ private void DrawSettings() fontSize = Mathf.FloorToInt(20 * screenScale) })) { - ModSettings.killOnDowned = !ModSettings.killOnDowned; + ModSettings.KillOnDowned = !ModSettings.KillOnDowned; } else if (r.Contains(Instance.mousePos)) { GUI.Label(new Rect(r.xMax, r.y, 600 * screenScale, 100f), Translations.MainMenu_DifficultySelection_9/*Instead of being downed, players instantly die*/); //tr } + GUI.color = Color.white; } else { @@ -290,7 +291,7 @@ private void DrawSettings() fontSize = Mathf.FloorToInt(20 * screenScale) })) { - ModSettings.killOnDowned = !ModSettings.killOnDowned; + ModSettings.KillOnDowned = !ModSettings.KillOnDowned; } else if (r.Contains(Instance.mousePos)) { @@ -299,51 +300,51 @@ private void DrawSettings() } //Drops on death - switch (ModSettings.dropsOnDeath) + switch (ModSettings.DropsOnDeath) { - case ModSettings.DropsOnDeathMode.All: + case ModSettings.DropsOnDeathModes.All: GUI.color = Color.red; break; - case ModSettings.DropsOnDeathMode.Equipped: + case ModSettings.DropsOnDeathModes.Equipped: GUI.color = Color.yellow; break; - case ModSettings.DropsOnDeathMode.NonEquipped: + case ModSettings.DropsOnDeathModes.Inventory: GUI.color = Color.cyan; break; - case ModSettings.DropsOnDeathMode.Disabled: + case ModSettings.DropsOnDeathModes.Disabled: GUI.color = Color.gray; break; default: break; } - if (GUI.Button(new Rect(Screen.width / 2 - 300 * screenScale, 70 * screenScale, 600 * screenScale, 50 * screenScale), Translations.MainMenu_DifficultySelection_12/*Item drops on death: */ + ModSettings.dropsOnDeath, new GUIStyle(GUI.skin.button) //tr + if (GUI.Button(new Rect(Screen.width / 2 - 300 * screenScale, 70 * screenScale, 600 * screenScale, 50 * screenScale), Translations.MainMenu_DifficultySelection_12/*Item drops on death: */ + ModSettings.DropsOnDeath, new GUIStyle(GUI.skin.button) //tr { font = mainFont, fontSize = Mathf.FloorToInt(20 * screenScale) })) { - int i = (int)ModSettings.dropsOnDeath + 1; - i %= 4; - ModSettings.dropsOnDeath = (ModSettings.DropsOnDeathMode)i; + int i = (int)ModSettings.DropsOnDeath + 1; + i %= (int)ModSettings.DropsOnDeathModes.Max; + ModSettings.DropsOnDeath = (ModSettings.DropsOnDeathModes)i; } GUI.color = Color.white; - if (GUI.Button(new Rect(Screen.width / 2 - 300 * screenScale, 220 * screenScale, 600 * screenScale, 50 * screenScale), Translations.MainMenu_DifficultySelection_26 + ModSettings.lootLevelPolicy, new GUIStyle(GUI.skin.button) //tr + if (GUI.Button(new Rect(Screen.width / 2 - 300 * screenScale, 220 * screenScale, 600 * screenScale, 50 * screenScale), Translations.MainMenu_DifficultySelection_26 + ModSettings.LootLevelRule, new GUIStyle(GUI.skin.button) //tr { font = mainFont, fontSize = Mathf.FloorToInt(20 * screenScale) })) { - int i = (int)ModSettings.lootLevelPolicy + 1; - i %= 5; - ModSettings.lootLevelPolicy = (ModSettings.LootLevelPolicy)i; + int i = (int)ModSettings.LootLevelRule + 1; + i %= (int)ModSettings.LootLevelRules.Max; + ModSettings.LootLevelRule = (ModSettings.LootLevelRules)i; } float y = 350; @@ -360,15 +361,15 @@ private void DrawSettings() if (ModSettings.AllowCaveRespawn) DrawCheatOption(ref ModSettings.AllowRandomCaveSpawn, Translations.MainMenu_DifficultySelection_28, ref y); //tr if (ModSettings.AllowRandomCaveSpawn && ModSettings.AllowCaveRespawn) - DrawCheatOption(ref ModSettings.CaveMaxAdditionalEnemies, Translations.MainMenu_DifficultySelection_29, ref y,0,20); //tr + DrawCheatOption(ref ModSettings.CaveMaxAdditionalEnemies, Translations.MainMenu_DifficultySelection_29, ref y, 0, 20); //tr if (ModSettings.AllowCaveRespawn) DrawCheatOption(ref ModSettings.CaveRespawnDelay, Translations.MainMenu_DifficultySelection_30, ref y); //tr DrawCheatOptionLootFilter(ref ModSettings.LootFilterMinRarity, "Remove loot below rarirty (except materials)", ref y); //tr - if (GUI.Button(new Rect(Screen.width*0.5f - 250 * screenScale, y * screenScale, 500 * screenScale, 40 * screenScale), Translations.MainMenu_DifficultySelection_31)) //tr + if (GUI.Button(new Rect(Screen.width * 0.5f - 250 * screenScale, y * screenScale, 500 * screenScale, 40 * screenScale), Translations.MainMenu_DifficultySelection_31)) //tr { - ModSettings.Reset(); + ModSettings.instance.Reset(); } } diff --git a/Player/Main Menu/MainMenu_Guide.cs b/Player/Main Menu/MainMenu_Guide.cs index dc96230..60c127f 100644 --- a/Player/Main Menu/MainMenu_Guide.cs +++ b/Player/Main Menu/MainMenu_Guide.cs @@ -338,7 +338,7 @@ private void DrawGuide() Stat(Translations.MainMenu_Guide_13, ModdedPlayer.Stats.TotalMaxHealth.ToString(), Translations.MainMenu_Guide_14( - ModdedPlayer.ModdedPlayerStats.baseHealth, ModdedPlayer.Stats.maxHealthFromVit.GetAmount() * ModdedPlayer.Stats.vitality.GetAmount(), ModdedPlayer.Stats.maxHealth.GetFormattedAmount(), ModdedPlayer.Stats.maxHealthMult.GetFormattedAmount())); + ModdedPlayer.ModdedPlayerStats.baseHealth, ModdedPlayer.Stats.maxHealthFromVit.GetAmount() * ModdedPlayer.Stats.vitality.GetAmount(), ModdedPlayer.Stats.maxLife.GetFormattedAmount(), ModdedPlayer.Stats.maxLifeMult.GetFormattedAmount())); Stat(Translations.MainMenu_Guide_15, ModdedPlayer.Stats.TotalMaxEnergy.ToString(), @@ -349,9 +349,9 @@ private void DrawGuide() ModdedPlayer.Stats.armor.GetFormattedAmount(), Translations.MainMenu_Guide_18( ModReferences.DamageReduction(ModdedPlayer.Stats.armor.Value).ToString("P2"))); - Stat(Translations.MainMenu_Guide_19, - (1 - ModdedPlayer.Stats.magicDamageTaken.GetAmount()).ToString("P"), - Translations.MainMenu_Guide_20); + Stat("Reduced damage from Elites", + (1 - ModdedPlayer.Stats.damageFromElites.GetAmount()).ToString("P"), + "Decreases the damage taken from elite monsters and their abilities."); Stat(Translations.MainMenu_Guide_21, (1 - ModdedPlayer.Stats.getHitChance.GetAmount()).ToString("P"), Translations.MainMenu_Guide_22); @@ -373,12 +373,12 @@ private void DrawGuide() Stat(Translations.MainMenu_Guide_133, (ModdedPlayer.Stats.TotalStaminaRecoveryAmount).ToString("N2"), //tr Translations.MainMenu_Guide_35( - ModdedPlayer.Stats.staminaRecoveryperSecond.GetAmount(), ModdedPlayer.Stats.staminaPerSecRate.GetFormattedAmount())); + ModdedPlayer.Stats.energyRegenMult.GetAmount(), ModdedPlayer.Stats.staminaRegenBase.GetFormattedAmount())); - Stat(Translations.MainMenu_Guide_37, ModdedPlayer.Stats.energyRecoveryperSecond.GetAmount() * ModdedPlayer.Stats.TotalStaminaRecoveryMultiplier + "", Translations.MainMenu_Guide_36( ModdedPlayer.Stats.energyRecoveryperSecond.GetAmount(), ModdedPlayer.Stats.TotalStaminaRecoveryMultiplier)); + Stat(Translations.MainMenu_Guide_37, ModdedPlayer.Stats.energyRecoveryBase.GetAmount() * ModdedPlayer.Stats.TotalStaminaRecoveryMultiplier + "", Translations.MainMenu_Guide_36( ModdedPlayer.Stats.energyRecoveryBase.GetAmount(), ModdedPlayer.Stats.TotalStaminaRecoveryMultiplier)); Stat(Translations.MainMenu_Guide_39, ModdedPlayer.Stats.energyOnHit.GetAmount() * ModdedPlayer.Stats.TotalStaminaRecoveryMultiplier + "", Translations.MainMenu_Guide_38( ModdedPlayer.Stats.energyOnHit.GetAmount())); - Stat(Translations.MainMenu_Guide_41, ModdedPlayer.Stats.healthRecoveryPerSecond.GetAmount() * (ModdedPlayer.Stats.healthPerSecRate.GetAmount()) * ModdedPlayer.Stats.allRecoveryMult.GetAmount() + "", Translations.MainMenu_Guide_40( ModdedPlayer.Stats.healthRecoveryPerSecond.GetAmount(), ModdedPlayer.Stats.healthPerSecRate.GetFormattedAmount(), ModdedPlayer.Stats.allRecoveryMult.GetAmount() - 1)); - Stat(Translations.MainMenu_Guide_43, ModdedPlayer.Stats.healthOnHit.GetAmount() * ModdedPlayer.Stats.allRecoveryMult.GetAmount() + "", Translations.MainMenu_Guide_42( ModdedPlayer.Stats.healthOnHit.GetAmount(), ModdedPlayer.Stats.allRecoveryMult.GetFormattedAmount(), ModdedPlayer.Stats.allRecoveryMult.GetAmount() - 1)); + Stat(Translations.MainMenu_Guide_41, ModdedPlayer.Stats.lifeRegenBase.GetAmount() * (ModdedPlayer.Stats.lifeRegenMult.GetAmount()) * ModdedPlayer.Stats.allRecoveryMult.GetAmount() + "", Translations.MainMenu_Guide_40( ModdedPlayer.Stats.lifeRegenBase.GetAmount(), ModdedPlayer.Stats.lifeRegenMult.GetFormattedAmount(), ModdedPlayer.Stats.allRecoveryMult.GetAmount() - 1)); + Stat(Translations.MainMenu_Guide_43, ModdedPlayer.Stats.lifeOnHit.GetAmount() * ModdedPlayer.Stats.allRecoveryMult.GetAmount() + "", Translations.MainMenu_Guide_42( ModdedPlayer.Stats.lifeOnHit.GetAmount(), ModdedPlayer.Stats.allRecoveryMult.GetFormattedAmount(), ModdedPlayer.Stats.allRecoveryMult.GetAmount() - 1)); Space(60); Header(Translations.MainMenu_Guide_44); @@ -398,7 +398,7 @@ private void DrawGuide() Space(10); Stat(Translations.MainMenu_Guide_60, ModdedPlayer.Stats.MeleeDamageMult.ToString("P"), Translations.MainMenu_Guide_59( ModdedPlayer.Stats.strength.GetAmount() * ModdedPlayer.Stats.meleeDmgFromStr.GetAmount() * 100, (ModdedPlayer.Stats.meleeIncreasedDmg - 1).ToString("P"), (ModdedPlayer.Stats.allDamage - 1).ToString("P"))); - Stat(Translations.MainMenu_Guide_62, ModdedPlayer.Stats.meleeFlatDmg.GetFormattedAmount(), Translations.MainMenu_Guide_62); + Stat(Translations.MainMenu_Guide_62, ModdedPlayer.Stats.baseMeleeDamage.GetFormattedAmount(), Translations.MainMenu_Guide_62); Stat(Translations.MainMenu_Guide_63, ModdedPlayer.Stats.weaponRange.GetFormattedAmount()); Stat(Translations.MainMenu_Guide_64, ModdedPlayer.Stats.heavyAttackDmg.GetFormattedAmount()); @@ -408,7 +408,7 @@ private void DrawGuide() Space(10); Stat(Translations.MainMenu_Guide_67, ModdedPlayer.Stats.RangedDamageMult.ToString("P"), Translations.MainMenu_Guide_66( (ModdedPlayer.Stats.agility.GetAmount() * ModdedPlayer.Stats.rangedDmgFromAgi.GetAmount()).ToString("P"), (ModdedPlayer.Stats.rangedIncreasedDmg.GetAmount() - 1).ToString("P"), (ModdedPlayer.Stats.perk_projectileDamageIncreasedBySize.GetAmount() ? (ModdedPlayer.Stats.projectileSize.GetAmount() - 1) : 0f).ToString("P"), (ModdedPlayer.Stats.allDamage - 1).ToString("P"))); - Stat(Translations.MainMenu_Guide_69, ModdedPlayer.Stats.rangedFlatDmg.GetFormattedAmount(), Translations.MainMenu_Guide_69); + Stat(Translations.MainMenu_Guide_69, ModdedPlayer.Stats.baseRangedDamage.GetFormattedAmount(), Translations.MainMenu_Guide_69); Stat(Translations.MainMenu_Guide_71, ModdedPlayer.Stats.projectileSpeed.GetFormattedAmount(), Translations.MainMenu_Guide_71); Stat(Translations.MainMenu_Guide_73, ModdedPlayer.Stats.projectileSize.GetFormattedAmount(), Translations.MainMenu_Guide_73); Stat(Translations.MainMenu_Guide_75, ModdedPlayer.Stats.headShotDamage.GetFormattedAmount(), Translations.MainMenu_Guide_75); @@ -437,8 +437,8 @@ private void DrawGuide() Header(Translations.MainMenu_Guide_90); Space(10); - Stat(Translations.MainMenu_Guide_92, ModdedPlayer.Stats.TotalMagicDamageMultiplier.ToString("P"), Translations.MainMenu_Guide_91( (ModdedPlayer.Stats.intelligence.GetAmount() * ModdedPlayer.Stats.spellDmgFromInt.GetAmount()).ToString("P"), (ModdedPlayer.Stats.spellIncreasedDmg - 1).ToString("P"), (ModdedPlayer.Stats.allDamage - 1).ToString("P"))); - Stat(Translations.MainMenu_Guide_94, ModdedPlayer.Stats.spellFlatDmg.GetFormattedAmount(), Translations.MainMenu_Guide_94); + Stat(Translations.MainMenu_Guide_92, ModdedPlayer.Stats.TotalMagicDamageMultiplier.ToString("P"), Translations.MainMenu_Guide_91( (ModdedPlayer.Stats.intelligence.GetAmount() * ModdedPlayer.Stats.spellDmgFromInt.GetAmount()).ToString("P"), (ModdedPlayer.Stats.spellDamageMult - 1).ToString("P"), (ModdedPlayer.Stats.allDamage - 1).ToString("P"))); + Stat(Translations.MainMenu_Guide_94, ModdedPlayer.Stats.baseSpellDamage.GetFormattedAmount(), Translations.MainMenu_Guide_94); Stat(Translations.MainMenu_Guide_96, (1 - ModdedPlayer.Stats.spellCost.GetAmount()).ToString("P"), Translations.MainMenu_Guide_96); Stat(Translations.MainMenu_Guide_98, ModdedPlayer.Stats.SpellCostToStamina.ToString("P"), Translations.MainMenu_Guide_98); Stat(Translations.MainMenu_Guide_99, (1 - ModdedPlayer.Stats.cooldown.GetAmount()).ToString("P")); @@ -459,7 +459,7 @@ private void DrawGuide() Header(Translations.MainMenu_Guide_107); Space(10); - Stat(Translations.MainMenu_Guide_109, ModdedPlayer.Stats.movementSpeed.ToString(), Translations.MainMenu_Guide_108(FPCharacterMod.basewalkSpeed, FPCharacterMod.basewalkSpeed * ModdedPlayer.Stats.movementSpeed)); + Stat(Translations.MainMenu_Guide_109, ModdedPlayer.Stats.mOVEMENT_SPEED.ToString(), Translations.MainMenu_Guide_108(FPCharacterMod.basewalkSpeed, FPCharacterMod.basewalkSpeed * ModdedPlayer.Stats.mOVEMENT_SPEED)); Stat(Translations.MainMenu_Guide_111, ModdedPlayer.Stats.jumpPower.ToString(), Translations.MainMenu_Guide_111); Stat(Translations.MainMenu_Guide_113, (1 / ModdedPlayer.Stats.perk_hungerRate).ToString("P"), Translations.MainMenu_Guide_113); Stat(Translations.MainMenu_Guide_115, (1 / ModdedPlayer.Stats.perk_thirstRate).ToString("P"), Translations.MainMenu_Guide_115); @@ -468,8 +468,8 @@ private void DrawGuide() Stat(Translations.MainMenu_Guide_122, ModdedPlayer.Stats.timeBonusPerKill.ToString() +"s", Translations.MainMenu_Guide_121); if (ModdedPlayer.Stats.perk_turboRaftOwners.GetAmount() > 0) Stat(Translations.MainMenu_Guide_124, ModdedPlayer.Stats.perk_RaftSpeedMultipier.ToString(), Translations.MainMenu_Guide_124); - Stat(Translations.MainMenu_Guide_126, ModdedPlayer.Stats.magicFind.Value.ToString("P"), Translations.MainMenu_Guide_126); - foreach (var mfStat in ModdedPlayer.Stats.magicFind.OtherPlayerValues) + Stat(Translations.MainMenu_Guide_126, ModdedPlayer.Stats.magicFind_quantity.Value.ToString("P"), Translations.MainMenu_Guide_126); + foreach (var mfStat in ModdedPlayer.Stats.magicFind_quantity.OtherPlayerValues) { Stat(mfStat.Key + Translations.MainMenu_Guide_128, mfStat.Value.ToString("P"), Translations.MainMenu_Guide_128); } diff --git a/Player/Main Menu/MainMenu_HUD.cs b/Player/Main Menu/MainMenu_HUD.cs index c911df6..556c77d 100644 --- a/Player/Main Menu/MainMenu_HUD.cs +++ b/Player/Main Menu/MainMenu_HUD.cs @@ -73,19 +73,20 @@ private void DrawBuff(float x, float y, Texture2D tex, string amount, string tim //Hit markers public static void CreateHitMarker(float dmg, Vector3 p, Color color) { - var marker = Instance.hitMarkers.Where(x => x.Player == false && (x.worldPosition - p).sqrMagnitude < 4 && x.color == color); - if (marker.Count() > 0) + if (ModSettings.CombineHitMarkers) { - var m = marker.First(); - m.lifetime = 4; - m.dmg += dmg; - m.txt = m.dmg.ToString("N0"); - m.worldPosition = p; - } - else - { - new HitMarker(dmg, p, color); + var marker = Instance.hitMarkers.Where(x => x.Player == false && (x.worldPosition - p).sqrMagnitude < 4 && x.color == color); + if (marker.Count() > 0) + { + var m = marker.First(); + m.lifetime = 4; + m.dmg += dmg; + m.txt = m.dmg.ToString("N0"); + m.worldPosition = p; + return; + } } + new HitMarker(dmg, p, color); } public readonly List hitMarkers = new List(); @@ -109,21 +110,31 @@ public HitMarker(float t, Vector3 p, Color c) { color = c; dmg = t; - txt = t.ToString("N0"); + txt = DamageToString(); worldPosition = p; lifetime = StartLifetime; Instance.hitMarkers.Add(this); } - public HitMarker(int t, Vector3 p, bool Player) + + private static readonly string[] unitNames = { "", "K", "M", "B", "T", "Qa", "Qi", "Sx", "Sp", "Oc" }; + private string DamageToString() { - txt = t.ToString("N0"); - worldPosition = p; - lifetime = StartLifetime; - this.Player = Player; - if (Player) - color = new Color(0, 0.75f, 0, 0.75f); - Instance.hitMarkers.Add(this); + if(ModSettings.FullNumberHitMarkers) + { + return dmg.ToString("N0"); + } + + double damage = (double) dmg; + int unitIndex = 0; + int decCount = 0; + while (damage >= 1000 && unitIndex < unitNames.Length - 1) + { + damage /= 1000.0; + unitIndex++; + decCount = 3; + } + return damage.ToString("N" + decCount) + unitNames[unitIndex]; } } @@ -139,7 +150,7 @@ private float SmoothSlideIn(float timeAppearStart) t = 1.0f - t; if (t < 0) return 0f; - t = t * t * t*t; + t = t * t * t * t; return t * -250f * screenScale; } @@ -185,8 +196,8 @@ private void DrawHUD() continue; } GUI.Label(r, hitMarkers[i].txt, new GUIStyle(HitmarkerStyle) { fontSize = Mathf.RoundToInt(size) }); - - + + } } GUI.color = Color.white; @@ -661,7 +672,7 @@ private void DrawHUD() GUI.DrawTexture(scanRect, ResourceLoader.instance.LoadedTextures[24]); } } - catch (Exception ex) + catch (Exception ex) { Debug.LogWarning(ex.ToString()); } @@ -957,11 +968,11 @@ private void PingUpdate() NetworkManager.SendLine(answerStream.ToArray(), NetworkManager.Target.Others); answerStream.Close(); } - localPlayerPing = new MarkPickup(pu.transform, pu.item.name, pu.item.Rarity); + localPlayerPing = new MarkPickup(pu.transform, pu.item.name, pu.item.rarity); } else { - localPlayerPing = new MarkPickup(pu.transform, pu.item.name, pu.item.Rarity); + localPlayerPing = new MarkPickup(pu.transform, pu.item.name, pu.item.rarity); } } } @@ -1075,7 +1086,7 @@ void DrawPingPreview() { Vector3 pos = Camera.main.WorldToScreenPoint(previewPingPos); pos.y = Screen.height - pos.y; - float size = Mathf.Clamp(700 / previewPingDist, 10, 40)/2; + float size = Mathf.Clamp(700 / previewPingDist, 10, 40) / 2; size *= screenScale; Rect r = previewPingType != MarkObject.PingType.Item ? new Rect(0, 0, size * 3.34f, size) diff --git a/Player/Main Menu/MainMenu_Hints.cs b/Player/Main Menu/MainMenu_Hints.cs index f36339b..c8f4043 100644 --- a/Player/Main Menu/MainMenu_Hints.cs +++ b/Player/Main Menu/MainMenu_Hints.cs @@ -38,7 +38,7 @@ public partial class MainMenu new STuple, string>(()=> SpellCaster.instance.infos.Any(x=>x.spell!=SpellDataBase.spellDictionary[27]), Translations.MainMenu_Hints_11), //tr new STuple, string>(()=> ModdedPlayer.instance.level >= 30 && SpellCaster.instance.infos.Any(x=>x.spell==null), Translations.MainMenu_Hints_12), //tr new STuple, string>(()=> ModdedPlayer.instance.level >= 10 && PerkDatabase.perks.Any(x=>!x.isBought && x.cost==0 && x.levelReq<=ModdedPlayer.instance.level), Translations.MainMenu_Hints_13), //tr - new STuple, string>(()=> Inventory.Instance.ItemSlots[-12]!=null && Inventory.Instance.ItemSlots[-12].Equipped, Translations.MainMenu_Hints_14 + //tr + new STuple, string>(()=> Inventory.Instance.ItemSlots[-12]!=null && Inventory.Instance.ItemSlots[-12].isEquipped, Translations.MainMenu_Hints_14 + //tr ModAPI.Input.GetKeyBindingAsString("EquipWeapon")), new STuple, string>(()=> ModdedPlayer.instance.level > 15 , Translations.MainMenu_Hints_15), //tr new STuple, string>(()=> ModdedPlayer.instance.level < 25 && ModdedPlayer.Stats.TotalMeleeArmorPiercing + ModdedPlayer.Stats.TotalRangedArmorPiercing < 15 , Translations.MainMenu_Hints_16), //tr diff --git a/Player/Main Menu/MainMenu_Inventory.cs b/Player/Main Menu/MainMenu_Inventory.cs index 301477c..bce30eb 100644 --- a/Player/Main Menu/MainMenu_Inventory.cs +++ b/Player/Main Menu/MainMenu_Inventory.cs @@ -1,6 +1,7 @@ using System; using System.Linq; +using ChampionsOfForest.Items; using ChampionsOfForest.Localization; using ChampionsOfForest.Player; using ChampionsOfForest.Player.Crafting; @@ -35,8 +36,8 @@ public ItemContextMenu(Rect r, int itemIndex) this.itemIndex = itemIndex; this.i = Inventory.Instance.ItemSlots[itemIndex]; buttons = AvailableContextMenuButtons.drop | - (i.CanConsume ? AvailableContextMenuButtons.consume : AvailableContextMenuButtons.none) | - (i.Amount > 1 ? AvailableContextMenuButtons.splitStack : AvailableContextMenuButtons.none); + (i.type == ItemDefinition.ItemType.Consumable ? AvailableContextMenuButtons.consume : AvailableContextMenuButtons.none) | + (i.stackedAmount > 1 ? AvailableContextMenuButtons.splitStack : AvailableContextMenuButtons.none); buttonCount = buttons == (AvailableContextMenuButtons)0b111 ? 3 : (buttons != (AvailableContextMenuButtons)0b100 ? 2 : 1); } @@ -264,7 +265,7 @@ private void DrawCrafting(float x) public void CraftingIngredientBox(Rect r, CustomCrafting.CraftingIngredient ingredient) { - GUI.color = ingredient.i != null ? RarityColors[ingredient.i.Rarity] : Color.white; + GUI.color = ingredient.i != null ? ingredient.i.RarityColor : Color.white; GUI.DrawTexture(r, Res.ResourceLoader.instance.LoadedTextures[12]); GUI.color = new Color(1, 1, 1, 1); @@ -325,7 +326,7 @@ private void DrawItemInfo(Vector2 pos, Item item, bool drawCompare = false, Item Rect ItemNameRect = new Rect(pos.x, pos.y, width, 50 * screenScale); GUIStyle ItemNameStyle = new GUIStyle(GUI.skin.label) { alignment = TextAnchor.UpperCenter, fontSize = Mathf.RoundToInt(35 * screenScale), fontStyle = FontStyle.Bold, font = mainFont }; float y = 70 + pos.y; - Rect[] StatRects = new Rect[item.Stats.Count]; + Rect[] StatRects = new Rect[item.stats.Count]; GUIStyle StatNameStyle = new GUIStyle(GUI.skin.label) { alignment = TextAnchor.MiddleLeft, fontSize = Mathf.RoundToInt(18 * screenScale), font = mainFont, richText = true }; GUIStyle StatValueStyle = new GUIStyle(GUI.skin.label) { alignment = TextAnchor.MiddleRight, fontSize = Mathf.RoundToInt(18 * screenScale), fontStyle = FontStyle.Bold, font = mainFont, richText = true }; @@ -377,32 +378,32 @@ private void DrawItemInfo(Vector2 pos, Item item, bool drawCompare = false, Item } GUI.color = new Color(1, 1, 1, 0.8f); GUI.DrawTexture(descriptionBox, blackSquareTex); - GUI.color = RarityColors[item.Rarity]; + GUI.color = item.RarityColor; GUI.Label(ItemNameRect, item.name, ItemNameStyle); for (int i = 0; i < StatRects.Length; i++) { - GUI.color = RarityColors[item.Stats[i].Rarity]; - GUI.Label(StatRects[i], item.Stats[i].Name, StatNameStyle); - double amount = item.Stats[i].Amount; - if (item.Stats[i].DisplayAsPercent) + GUI.color = Color.white; + GUI.Label(StatRects[i], item.stats[i].name, StatNameStyle); + double amount = item.stats[i].amount; + if (item.stats[i].displayAsPercent) { amount *= 100; } - amount = Math.Round(amount, item.Stats[i].RoundingCount); + amount = Math.Round(amount, item.stats[i].roundingCount); - if (item.Stats[i].DisplayAsPercent) + if (item.stats[i].displayAsPercent) { - GUI.Label(StatRects[i], amount.ToString("N" + item.Stats[i].RoundingCount) + "%", StatValueStyle); + GUI.Label(StatRects[i], amount.ToString("N" + item.stats[i].roundingCount) + "%", StatValueStyle); } else { - GUI.Label(StatRects[i], amount.ToString("N" + item.Stats[i].RoundingCount), StatValueStyle); + GUI.Label(StatRects[i], amount.ToString("N" + item.stats[i].roundingCount), StatValueStyle); } } if (drawTotal) { - int count = item.Stats.Count; + int count = item.stats.Count; if (count > 0) { GUIStyle totalStatStyle = new GUIStyle(StatValueStyle) @@ -418,10 +419,10 @@ private void DrawItemInfo(Vector2 pos, Item item, bool drawCompare = false, Item GUI.Label(new Rect(totalBG.x, totalBG.y, totalBG.width, 30 * screenScale), Translations.MainMenu_Inventory_14/*Total*/, new GUIStyle(GUI.skin.label) { alignment = TextAnchor.MiddleCenter, font = mainFont }); //tr for (int i = 0; i < count; i++) { - if (item.Stats[i].GetTotalStat != null) + if (item.stats[i].GetTotalStat != null) { Rect rect = new Rect(StatRects[i].xMax + 3f, StatRects[i].y, 100 * screenScale, StatRects[i].height); - GUI.Label(rect, item.Stats[i].GetTotalStat(), totalStatStyle); + GUI.Label(rect, item.stats[i].GetTotalStat(), totalStatStyle); } } GUI.color = Color.white; @@ -449,15 +450,15 @@ private void DrawItemInfo(Vector2 pos, Item item, bool drawCompare = false, Item GUI.DrawTexture(compareBG, blackSquareTex); GUI.color = Color.gray; GUI.Label(new Rect(compareBG.x, compareBG.y, compareBG.width, 30 * screenScale), Translations.MainMenu_Inventory_15/*Compare*/, new GUIStyle(GUI.skin.label) { alignment = TextAnchor.MiddleCenter, font = mainFont }); //tr - int count = item.Stats.Count; + int count = item.stats.Count; for (int i = 0; i < count; i++) { Rect compareRect = new Rect(compareBG.x + 5 * screenScale, StatRects[i].y, 100 * screenScale, StatRects[i].height); //object baseVarValue = item.Stats[i].GetVariable(); //dynamic castedValue = Convert.ChangeType(baseVarValue, item.Stats[i].variableType); - float statIncr = otherGrouped != null && otherGrouped.ContainsKey(item.Stats[i].StatID) ? -otherGrouped[item.Stats[i].StatID] : 0; - statIncr += grouped[item.Stats[i].StatID]; + float statIncr = otherGrouped != null && otherGrouped.ContainsKey(item.stats[i].id) ? -otherGrouped[item.stats[i].id] : 0; + statIncr += grouped[item.stats[i].id]; string text = "↑ +"; if (statIncr > 0) { @@ -468,11 +469,11 @@ private void DrawItemInfo(Vector2 pos, Item item, bool drawCompare = false, Item GUI.color = Color.red; text = "↓ "; } - if (item.Stats[i].DisplayAsPercent) + if (item.stats[i].displayAsPercent) statIncr *= 100; - statIncr = (float)Math.Round(statIncr, item.Stats[i].RoundingCount); + statIncr = (float)Math.Round(statIncr, item.stats[i].roundingCount); text += statIncr.ToString("N"); - if (item.Stats[i].DisplayAsPercent) + if (item.stats[i].displayAsPercent) text += "%"; GUI.Label(compareRect, text, statCompareStyle); @@ -547,8 +548,8 @@ private void DragItem(in Rect r, in Rect itemRect, int index) Effects.Sound_Effects.GlobalSFX.Play(DraggedItem.GetInvSound(), 0, DraggedItem.GetInvSoundPitch()); if (Inventory.Instance.ItemSlots[index].CombineItems(DraggedItem)) //putting a material into a socket { - Inventory.Instance.ItemSlots[DraggedItemIndex].Amount--; - if (Inventory.Instance.ItemSlots[DraggedItemIndex].Amount <= 0) + Inventory.Instance.ItemSlots[DraggedItemIndex].stackedAmount--; + if (Inventory.Instance.ItemSlots[DraggedItemIndex].stackedAmount <= 0) Inventory.Instance.RemoveItemAtPosition(DraggedItemIndex); CancelDragging(); @@ -569,10 +570,10 @@ private void DragItem(in Rect r, in Rect itemRect, int index) } else { - if (DraggedItem.ID != Inventory.Instance.ItemSlots[index].ID - || DraggedItem.Amount == DraggedItem.StackSize - || Inventory.Instance.ItemSlots[index].Amount == Inventory.Instance.ItemSlots[index].StackSize - || (Inventory.Instance.ItemSlots[index].StackSize <= 1 && DraggedItem.StackSize <= 1)) + if (DraggedItem.id != Inventory.Instance.ItemSlots[index].id + || DraggedItem.stackedAmount == DraggedItem.stackSize + || Inventory.Instance.ItemSlots[index].stackedAmount == Inventory.Instance.ItemSlots[index].stackSize + || (Inventory.Instance.ItemSlots[index].stackSize <= 1 && DraggedItem.stackSize <= 1)) { if (canPlace) { @@ -585,17 +586,17 @@ private void DragItem(in Rect r, in Rect itemRect, int index) else if (DraggedItemIndex != index) { //stack items - int i = DraggedItem.Amount + Inventory.Instance.ItemSlots[index].Amount - DraggedItem.StackSize; + int i = DraggedItem.stackedAmount + Inventory.Instance.ItemSlots[index].stackedAmount - DraggedItem.stackSize; if (i > 0) //too much to stack completely and there is an excess { - Inventory.Instance.ItemSlots[index].Amount = Inventory.Instance.ItemSlots[index].StackSize; - Inventory.Instance.ItemSlots[DraggedItemIndex].Amount = i; + Inventory.Instance.ItemSlots[index].stackedAmount = Inventory.Instance.ItemSlots[index].stackSize; + Inventory.Instance.ItemSlots[DraggedItemIndex].stackedAmount = i; CancelDragging(); } else //enough to stack completely { - Inventory.Instance.ItemSlots[index].Amount += DraggedItem.Amount; + Inventory.Instance.ItemSlots[index].stackedAmount += DraggedItem.stackedAmount; Inventory.Instance.RemoveItemAtPosition(DraggedItemIndex); CustomCrafting.ClearIndex(DraggedItemIndex); CancelDragging(); @@ -619,7 +620,7 @@ private void DrawInvSlot(Rect r, int index) if (Inventory.Instance.ItemSlots[index] != null) { - frameColor = RarityColors[Inventory.Instance.ItemSlots[index].Rarity]; + frameColor = Inventory.Instance.ItemSlots[index].RarityColor; if (Inventory.Instance.ItemSlots[index].icon != null) { Rect itemRect = new Rect(r); @@ -647,10 +648,10 @@ private void DrawInvSlot(Rect r, int index) GUI.DrawTexture(itemRect, Inventory.Instance.ItemSlots[index].icon); //item count in the corner - if (Inventory.Instance.ItemSlots[index].StackSize > 1) + if (Inventory.Instance.ItemSlots[index].stackSize > 1) { GUI.color = Color.white; - GUI.Label(r, Inventory.Instance.ItemSlots[index].Amount.ToString("N0"), new GUIStyle(GUI.skin.label) { alignment = TextAnchor.LowerLeft, fontSize = Mathf.RoundToInt(15 * screenScale), font = mainFont, fontStyle = FontStyle.Bold }); + GUI.Label(r, Inventory.Instance.ItemSlots[index].stackedAmount.ToString("N0"), new GUIStyle(GUI.skin.label) { alignment = TextAnchor.LowerLeft, fontSize = Mathf.RoundToInt(15 * screenScale), font = mainFont, fontStyle = FontStyle.Bold }); } if (isDragging) @@ -797,13 +798,11 @@ private void DrawInvContextMenu() if (!consumedsomething) { consumedsomething = true; - if (itemContextMenu.Value.i.OnConsume()) + itemContextMenu.Value.i.OnEquip(); + itemContextMenu.Value.i.stackedAmount--; + if (itemContextMenu.Value.i.stackedAmount <= 0) { - itemContextMenu.Value.i.Amount--; - if (itemContextMenu.Value.i.Amount <= 0) - { - Inventory.Instance.ItemSlots[itemContextMenu.Value.itemIndex] = null; - } + Inventory.Instance.ItemSlots[itemContextMenu.Value.itemIndex] = null; } CloseItemContextMenu(); return; @@ -831,13 +830,13 @@ private void DrawInvContextMenu() } if (emptySlot != -1) { - int amount = itemContextMenu.Value.i.Amount / 2; - var itemClone = new Item(itemContextMenu.Value.i, amount, 0, false); - itemClone.level = itemContextMenu.Value.i.level; - if (itemContextMenu.Value.i.Stats != null) - itemClone.Stats = new System.Collections.Generic.List(itemContextMenu.Value.i.Stats); + int amount = itemContextMenu.Value.i.stackedAmount / 2; + var itemClone = new Item(itemContextMenu.Value.i, itemContextMenu.Value.i.level); + itemClone.stackedAmount = amount; + if (itemContextMenu.Value.i.stats != null) + itemClone.stats = new System.Collections.Generic.List(itemContextMenu.Value.i.stats); - itemContextMenu.Value.i.Amount -= amount; + itemContextMenu.Value.i.stackedAmount -= amount; Inventory.Instance.ItemSlots[emptySlot] = itemClone; @@ -868,10 +867,10 @@ private void DrawInvContextMenu() } void DropItem(int itemIndex, Item i) { - if (i.Equipped) + if (i.isEquipped) { i.OnUnequip(); - i.Equipped = false; + i.isEquipped = false; } Inventory.Instance.DropItem(itemIndex); CustomCrafting.ClearIndex(itemIndex); diff --git a/Player/ModdedPlayer/ModdedPlayer.ModdedPlayerStats.cs b/Player/ModdedPlayer/ModdedPlayer.ModdedPlayerStats.cs index f3ba5ec..b4748bb 100644 --- a/Player/ModdedPlayer/ModdedPlayer.ModdedPlayerStats.cs +++ b/Player/ModdedPlayer/ModdedPlayer.ModdedPlayerStats.cs @@ -16,8 +16,8 @@ public class ModdedPlayerStats public readonly AdditivePlayerStat vitality; public readonly MultiOperationPlayerStat maxEnergyMult; public readonly AdditivePlayerStat maxEnergy; - public readonly MultiOperationPlayerStat maxHealthMult; - public readonly AdditivePlayerStat maxHealth; + public readonly MultiOperationPlayerStat maxLifeMult; + public readonly AdditivePlayerStat maxLife; public readonly AdditivePlayerStat meleeDmgFromStr; public readonly AdditivePlayerStat spellDmgFromInt; public readonly AdditivePlayerStat rangedDmgFromAgi; @@ -25,21 +25,21 @@ public class ModdedPlayerStats public readonly AdditivePlayerStat maxEnergyFromAgi; public readonly AdditivePlayerStat maxHealthFromVit; public readonly AdditivePlayerStat fireDamage; - public readonly MultiOperationPlayerStat healthPerSecRate; - public readonly MultiOperationPlayerStat staminaPerSecRate; + public readonly MultiOperationPlayerStat lifeRegenMult; + public readonly MultiOperationPlayerStat staminaRegenBase; public readonly MultiplicativePlayerStat cooldown, cooldownRate; public readonly MultiOperationPlayerStat allDamage; public readonly MultiOperationPlayerStat attackSpeed; - public readonly MultiOperationPlayerStat movementSpeed; + public readonly MultiOperationPlayerStat mOVEMENT_SPEED; public readonly AdditivePlayerStat critChance; public readonly AdditivePlayerStat critDamage; - public readonly MultiOperationPlayerStat rangedFlatDmg; - public readonly MultiOperationPlayerStat meleeFlatDmg; - public readonly AdditivePlayerStat spellFlatDmg; + public readonly MultiOperationPlayerStat baseRangedDamage; + public readonly MultiOperationPlayerStat baseMeleeDamage; + public readonly AdditivePlayerStat baseSpellDamage; public readonly MultiOperationPlayerStat rangedIncreasedDmg; public readonly MultiOperationPlayerStat meleeIncreasedDmg; - public readonly MultiOperationPlayerStat spellIncreasedDmg; + public readonly MultiOperationPlayerStat spellDamageMult; public readonly AdditivePlayerStat meleeArmorPiercing; public readonly AdditivePlayerStat rangedArmorPiercing; public readonly AdditivePlayerStat thornsArmorPiercing; @@ -59,18 +59,19 @@ public class ModdedPlayerStats public readonly AdditivePlayerStat headShotDamage; public readonly MultiOperationPlayerStat allRecoveryMult; - public readonly AdditivePlayerStat healthOnHit; + public readonly AdditivePlayerStat lifeOnHit; public readonly AdditivePlayerStat staminaOnHit; public readonly AdditivePlayerStat energyOnHit; - public readonly AdditivePlayerStat healthRecoveryPerSecond; - public readonly AdditivePlayerStat staminaRecoveryperSecond; - public readonly AdditivePlayerStat energyRecoveryperSecond; + public readonly AdditivePlayerStat lifeRegenBase; + public readonly AdditivePlayerStat energyRegenMult; + public readonly AdditivePlayerStat energyRecoveryBase; public readonly MultiplicativePlayerStat allDamageTaken; - public readonly MultiplicativePlayerStat magicDamageTaken; + public readonly MultiplicativePlayerStat damageFromElites; public readonly MultiplicativePlayerStat fireDamageTaken; public readonly MultiplicativePlayerStat getHitChance; public readonly AdditivePlayerStat armor; + public readonly AdditivePlayerStat armorPerStrength; public readonly MultiplicativePlayerStat thornsDmgMult; public readonly AdditivePlayerStat thorns; public readonly AdditivePlayerStat thornsPerStrenght; @@ -95,7 +96,8 @@ public class ModdedPlayerStats public readonly BooleanPlayerStat silenced; public readonly BooleanPlayerStat rooted; public readonly BooleanPlayerStat stunned; - public readonly AdditiveNetworkSyncedPlayerStat magicFind; + public readonly AdditiveNetworkSyncedPlayerStat magicFind_quantity; + public readonly AdditiveNetworkSyncedPlayerStat magicFind_quality; public readonly AdditiveNetworkSyncedPlayerStat explosionDamage; public readonly AdditiveNetworkSyncedPlayerStat fireTickRate; public readonly AdditiveNetworkSyncedPlayerStat fireDuration; @@ -246,7 +248,7 @@ public class ModdedPlayerStats public readonly AdditivePlayerStat spell_berserkDuration; public readonly AdditivePlayerStat spell_berserkDamage; - public readonly AdditivePlayerStat spell_berserkMovementSpeed; + public readonly AdditivePlayerStat spell_berserkMOVEMENT_SPEED; public readonly AdditivePlayerStat spell_berserkAttackSpeed; public readonly AdditivePlayerStat spell_berserkMaxHP; @@ -332,8 +334,8 @@ public ModdedPlayerStats() this.vitality = new AdditivePlayerStat(1, addint, substractint); this.maxEnergyMult = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P0"); this.maxEnergy = new AdditivePlayerStat(0, addint, substractint); - this.maxHealthMult = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P0"); - this.maxHealth = new AdditivePlayerStat(0, addint, substractint); + this.maxLifeMult = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P0"); + this.maxLife = new AdditivePlayerStat(0, addint, substractint); this.meleeDmgFromStr = new AdditivePlayerStat(0.0f, addfloat, substractfloat, "P0"); this.spellDmgFromInt = new AdditivePlayerStat(0.0f, addfloat, substractfloat, "P0"); this.rangedDmgFromAgi = new AdditivePlayerStat(0.0f, addfloat, substractfloat, "P0"); @@ -341,22 +343,22 @@ public ModdedPlayerStats() this.maxEnergyFromAgi = new AdditivePlayerStat(0.0f, addfloat, substractfloat); this.maxHealthFromVit = new AdditivePlayerStat(0.0f, addfloat, substractfloat); this.fireDamage = new AdditivePlayerStat(0.0f, addfloat, substractfloat, "P0"); - this.healthPerSecRate = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P0"); - this.staminaPerSecRate = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P0"); + this.lifeRegenMult = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P0"); + this.staminaRegenBase = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P0"); this.cooldown = new MultiplicativePlayerStat(1, multfloat, dividefloat, "P1"); this.cooldownRate = new MultiplicativePlayerStat(1, multfloat, dividefloat, "P1"); this.allDamage = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P0"); this.attackSpeed = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P0"); - this.movementSpeed = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P1"); + this.mOVEMENT_SPEED = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P1"); this.critChance = new AdditivePlayerStat(0.05f, addfloat, substractfloat, "P1"); this.critDamage = new AdditivePlayerStat(0.5f, addfloat, substractfloat, "P0"); - this.rangedFlatDmg = new MultiOperationPlayerStat(0.0f, 1.0f, addfloat, substractfloat, multfloat, dividefloat); - this.meleeFlatDmg = new MultiOperationPlayerStat(0.0f,1.0f, addfloat, substractfloat, multfloat, dividefloat); - this.spellFlatDmg = new AdditivePlayerStat(0.0f, addfloat, substractfloat); + this.baseRangedDamage = new MultiOperationPlayerStat(0.0f, 1.0f, addfloat, substractfloat, multfloat, dividefloat); + this.baseMeleeDamage = new MultiOperationPlayerStat(0.0f,1.0f, addfloat, substractfloat, multfloat, dividefloat); + this.baseSpellDamage = new AdditivePlayerStat(0.0f, addfloat, substractfloat); this.rangedIncreasedDmg = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P0"); this.meleeIncreasedDmg = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P0"); - this.spellIncreasedDmg = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P0"); + this.spellDamageMult = new MultiOperationPlayerStat(1, 1, addfloat, substractfloat, multfloat, dividefloat, "P0"); this.meleeArmorPiercing = new AdditivePlayerStat(0, addint, substractint); this.rangedArmorPiercing = new AdditivePlayerStat(0, addint, substractint); this.thornsArmorPiercing = new AdditivePlayerStat(0.0f, addfloat, substractfloat, "P0"); @@ -377,18 +379,19 @@ public ModdedPlayerStats() this.projectile_DamagePerDistance = new AdditivePlayerStat(0.00f, addfloat, substractfloat); this.allRecoveryMult = new MultiOperationPlayerStat(1,1, addfloat, substractfloat, multfloat, dividefloat, "P0"); - this.healthOnHit = new AdditivePlayerStat(0.0f, addfloat, substractfloat); + this.lifeOnHit = new AdditivePlayerStat(0.0f, addfloat, substractfloat); this.staminaOnHit = new AdditivePlayerStat(0.0f, addfloat, substractfloat); this.energyOnHit = new AdditivePlayerStat(0.0f, addfloat, substractfloat); - this.healthRecoveryPerSecond = new AdditivePlayerStat(0.0f, addfloat, substractfloat); - this.staminaRecoveryperSecond = new AdditivePlayerStat(0.0f, addfloat, substractfloat); - this.energyRecoveryperSecond = new AdditivePlayerStat(0.0f, addfloat, substractfloat); + this.lifeRegenBase = new AdditivePlayerStat(0.0f, addfloat, substractfloat); + this.energyRegenMult = new AdditivePlayerStat(0.0f, addfloat, substractfloat); + this.energyRecoveryBase = new AdditivePlayerStat(0.0f, addfloat, substractfloat); this.allDamageTaken = new MultiplicativePlayerStat(1, multfloat, dividefloat, "P0"); - this.magicDamageTaken = new MultiplicativePlayerStat(1, multfloat, dividefloat, "P0"); + this.damageFromElites = new MultiplicativePlayerStat(1, multfloat, dividefloat, "P0"); this.fireDamageTaken = new MultiplicativePlayerStat(1, multfloat, dividefloat, "P0"); this.getHitChance = new MultiplicativePlayerStat(1, multfloat, dividefloat, "P0"); this.armor = new AdditivePlayerStat(0, addint, substractint); + this.armorPerStrength = new AdditivePlayerStat(0.0f, addfloat, substractfloat); this.thornsDmgMult = new MultiplicativePlayerStat(1, multfloat, dividefloat, "P0"); this.thorns = new AdditivePlayerStat(0.0f, addfloat, substractfloat); this.thornsPerStrenght = new AdditivePlayerStat(0.0f, addfloat, substractfloat); @@ -414,7 +417,8 @@ public ModdedPlayerStats() this.rooted = new BooleanPlayerStat(false); this.stunned = new BooleanPlayerStat(false); - this.magicFind = new AdditiveNetworkSyncedPlayerStat(1.0f, addfloat, substractfloat, "P0"); + this.magicFind_quantity = new AdditiveNetworkSyncedPlayerStat(1.0f, addfloat, substractfloat, "P0"); + this.magicFind_quality = new AdditiveNetworkSyncedPlayerStat(1.0f, addfloat, substractfloat, "P0"); this.explosionDamage = new AdditiveNetworkSyncedPlayerStat(0.0f, addfloat, substractfloat, "N1"); this.fireTickRate = new AdditiveNetworkSyncedPlayerStat(0.0f, addfloat, substractfloat); this.fireDuration = new AdditiveNetworkSyncedPlayerStat(0.0f, addfloat, substractfloat); @@ -564,7 +568,7 @@ public ModdedPlayerStats() this.spell_berserkDuration = new AdditivePlayerStat(30, addfloat, substractfloat); this.spell_berserkDamage = new AdditivePlayerStat(1.3f, addfloat, substractfloat); - this.spell_berserkMovementSpeed = new AdditivePlayerStat(1.35f, addfloat, substractfloat); + this.spell_berserkMOVEMENT_SPEED = new AdditivePlayerStat(1.35f, addfloat, substractfloat); this.spell_berserkAttackSpeed = new AdditivePlayerStat(1.25f, addfloat, substractfloat); this.spell_berserkMaxHP = new AdditivePlayerStat(1f, addfloat, substractfloat); @@ -647,8 +651,8 @@ public float TotalMaxHealth { get { - float x = baseHealth + (vitality.Value * maxHealthFromVit.Value) + maxHealth.Value; - x *= maxHealthMult; + float x = baseHealth + (vitality.Value * maxHealthFromVit.Value) + maxLife.Value; + x *= maxLifeMult; return x; } } @@ -666,21 +670,21 @@ public float TotalMagicDamageMultiplier get { float f = spellDmgFromInt.Value * intelligence.Value; - return (1 + f) * spellIncreasedDmg.Value * allDamage.Value; + return (1 + f) * spellDamageMult.Value * allDamage.Value; } } public float SpellCostToStamina => 1 - spellCostEnergyCost; public float TotalThorns => thorns.Value + thornsPerStrenght * strength.Value + thornsPerVit * vitality.Value; public float TotalThornsDamage => TotalThorns * thornsDmgMult.Value * meleeIncreasedDmg * allDamage; - public float TotalArmor => armor.Value - instance.lostArmor; - public float TotalStaminaRecoveryAmount => (baseStaminaRecovery + staminaRecoveryperSecond) * TotalStaminaRecoveryMultiplier; - public float TotalStaminaRecoveryMultiplier => 1 + (1 + intelligence * energyRecoveryFromInt) * allRecoveryMult * staminaPerSecRate; - public float TotalEnergyRecoveryMultiplier => 1 + (1 + intelligence * energyRecoveryFromInt) * allRecoveryMult * staminaPerSecRate; + public float TotalArmor => armorPerStrength.Value * strength + armor.Value - instance.lostArmor; + public float TotalStaminaRecoveryAmount => (baseStaminaRecovery + energyRegenMult) * TotalStaminaRecoveryMultiplier; + public float TotalStaminaRecoveryMultiplier => 1 + (1 + intelligence * energyRecoveryFromInt) * allRecoveryMult * staminaRegenBase; + public float TotalEnergyRecoveryMultiplier => 1 + (1 + intelligence * energyRecoveryFromInt) * allRecoveryMult * staminaRegenBase; public float MeleeDamageMult => allDamage.Value * meleeIncreasedDmg.Value * (1 + (strength * meleeDmgFromStr)); public float RangedDamageMult => allDamage.Value * rangedIncreasedDmg.Value * (1 + (agility * rangedDmgFromAgi)) * (perk_projectileDamageIncreasedBySize ? 1 + (projectileSize.Value - 1) : 1f); - public float SpellDamageMult => allDamage.Value * spellIncreasedDmg.Value * (1 + intelligence * spellDmgFromInt); + public float SpellDamageMult => allDamage.Value * spellDamageMult.Value * (1 + intelligence * spellDmgFromInt); public int TotalMeleeArmorPiercing => allArmorPiercing + meleeArmorPiercing; public int TotalRangedArmorPiercing => allArmorPiercing + rangedArmorPiercing; diff --git a/Player/ModdedPlayer/ModdedPlayer.cs b/Player/ModdedPlayer/ModdedPlayer.cs index 5045667..ec6a9a0 100644 --- a/Player/ModdedPlayer/ModdedPlayer.cs +++ b/Player/ModdedPlayer/ModdedPlayer.cs @@ -4,8 +4,11 @@ using System.IO; using Bolt; using ChampionsOfForest.Effects; +using ChampionsOfForest.Items; using ChampionsOfForest.Localization; using ChampionsOfForest.Network; +using ChampionsOfForest.Network.Commands; + using TheForest.Utils; using UnityEngine; using static ChampionsOfForest.Player.BuffDB; @@ -22,13 +25,8 @@ public partial class ModdedPlayer : MonoBehaviour public static ModdedPlayer instance = null; - - public int level = 1; - - - public float basejumpPower; public long ExpCurrent = 0; public long ExpGoal = 1; @@ -40,11 +38,6 @@ public partial class ModdedPlayer : MonoBehaviour public float MassacreMultiplier = 1; public float TimeUntillMassacreReset; - - - - - public float DamageAbsorbAmount { get @@ -61,11 +54,6 @@ public float DamageAbsorbAmount public float[] damageAbsorbAmounts = new float[3];//every unique source of shielding gets their own slot here, if its not unique it uses [0] //[1] is channeled shield spell; - - - - - public Dictionary GeneratedResources = new Dictionary(); @@ -80,9 +68,6 @@ public float DamageAbsorbAmount //Death Pact shoulders - - - public float lostArmor = 0; @@ -92,8 +77,6 @@ public float DamageAbsorbAmount public float _DeathPact_Amount = 1; - - public Dictionary ExtraCarryingCapactity = new Dictionary(); public struct ExtraItemCapacity @@ -321,12 +304,12 @@ private void Update() { if (ModAPI.Input.GetButtonDown("EquipWeapon")) { - if (Inventory.Instance.ItemSlots[-12] != null && Inventory.Instance.ItemSlots[-12].Equipped) + if (Inventory.Instance.ItemSlots[-12] != null && Inventory.Instance.ItemSlots[-12].isEquipped) { - PlayerInventoryMod.ToEquipWeaponType = Inventory.Instance.ItemSlots[-12].weaponModel; - switch (Inventory.Instance.ItemSlots[-12].weaponModel) + PlayerInventoryMod.ToEquipWeaponType = Inventory.Instance.ItemSlots[-12].subtype; + switch (Inventory.Instance.ItemSlots[-12].subtype) { - case BaseItem.WeaponModelType.Polearm: + case ItemDefinition.ItemSubtype.Polearm: if (LocalPlayer.Inventory.AmountOf(56) <= 0) { LocalPlayer.Inventory.AddItem(56); @@ -335,7 +318,7 @@ private void Update() LocalPlayer.Inventory.Equip(56, false); break; - case BaseItem.WeaponModelType.Greatbow: + case ItemDefinition.ItemSubtype.Greatbow: if (LocalPlayer.Inventory.AmountOf(79) <= 0) { LocalPlayer.Inventory.AddItem(79); @@ -343,7 +326,7 @@ private void Update() LocalPlayer.Inventory.StashEquipedWeapon(false); if (CustomBowBase.baseBow == null) { - PlayerInventoryMod.ToEquipWeaponType = BaseItem.WeaponModelType.None; + PlayerInventoryMod.ToEquipWeaponType = ItemDefinition.ItemSubtype.None; LocalPlayer.Inventory.Equip(79, false); } else if (LocalPlayer.Inventory.Equip(79, false)) @@ -378,7 +361,7 @@ private void Update() break; } - PlayerInventoryMod.ToEquipWeaponType = BaseItem.WeaponModelType.None; + PlayerInventoryMod.ToEquipWeaponType = ItemDefinition.ItemSubtype.None; } } try @@ -416,7 +399,7 @@ private void Update() } if (dmgPerSecond != 0) { - dmgPerSecond *= stats.magicDamageTaken; + dmgPerSecond *= stats.damageFromElites; dmgPerSecond *= Stats.allDamageTaken; LocalPlayer.Stats.Health -= dmgPerSecond * Time.deltaTime; LocalPlayer.Stats.HealthTarget -= dmgPerSecond * Time.deltaTime * 2; @@ -460,11 +443,11 @@ private void Update() { if (LocalPlayer.Stats.Health < LocalPlayer.Stats.HealthTarget) { - LocalPlayer.Stats.Health += stats.healthRecoveryPerSecond* (stats.healthPerSecRate) * stats.allRecoveryMult; + LocalPlayer.Stats.Health += stats.lifeRegenBase* (stats.lifeRegenMult) * stats.allRecoveryMult; } else { - LocalPlayer.Stats.Health += stats.healthRecoveryPerSecond * (stats.healthPerSecRate) * stats.allRecoveryMult / 10; + LocalPlayer.Stats.Health += stats.lifeRegenBase * (stats.lifeRegenMult) * stats.allRecoveryMult / 10; } } @@ -672,16 +655,13 @@ public void Stun(float duration) { return; } - duration *= stats.magicDamageTaken; LocalPlayer.HitReactions.enableFootShake(1, 0.6f); - Stats.stunned.value = true; if (StunDuration < duration) { StunDuration = duration; } COTFEvents.Instance.OnStun.Invoke(); - } public void AddKillExperience(long Amount) @@ -723,22 +703,25 @@ public void AddFinalExperience(long Amount) if (GameSetup.IsMultiplayer) { - using (MemoryStream answerStream = new MemoryStream()) - { - using (BinaryWriter w = new BinaryWriter(answerStream)) - { - w.Write(19); - w.Write(ModReferences.ThisPlayerID); - w.Write(instance.level); - w.Close(); - } - NetworkManager.SendLine(answerStream.ToArray(), NetworkManager.Target.Others); - answerStream.Close(); - } + SendPlayerState(); } } } + public void SendPlayerState() + { + COTFCommand.Send(NetworkManager.Target.Everyone, new GetPlayerStateParams() + { + entityNetworkID = LocalPlayer.Entity.networkId.PackedValue, + health = LocalPlayer.Stats.Health, + maxHealth = ModdedPlayer.Stats.TotalMaxHealth, + level = level, + playerID = ModReferences.ThisPlayerID, + xp = ExpCurrent + + }); + } + public void OnGetHit() { if (stats.spell_chanceToParryOnHit.value&& Random.value < 0.15f) @@ -750,8 +733,8 @@ public void OnGetHit() public void OnHit() { - LocalPlayer.Stats.HealthTarget +=stats.healthOnHit *stats.allRecoveryMult; - LocalPlayer.Stats.Health += stats.healthOnHit * stats.allRecoveryMult; + LocalPlayer.Stats.HealthTarget +=stats.lifeOnHit *stats.allRecoveryMult; + LocalPlayer.Stats.Health += stats.lifeOnHit * stats.allRecoveryMult; LocalPlayer.Stats.Energy += stats.energyOnHit * stats.TotalEnergyRecoveryMultiplier; LocalPlayer.Stats.Stamina += stats.staminaOnHit * Stats.TotalEnergyRecoveryMultiplier; SpellActions.OnFrenzyAttack(); @@ -845,18 +828,18 @@ public void OnHit_Ranged(Transform hit) if (hit == FurySwipesLastHit) { FurySwipesDmg += 10; - Stats.rangedFlatDmg.valueAdditive += 10; - Stats.spellFlatDmg.valueAdditive += 10; - Stats.meleeFlatDmg.valueAdditive += 10; + Stats.baseRangedDamage.valueAdditive += 10; + Stats.baseSpellDamage.valueAdditive += 10; + Stats.baseMeleeDamage.valueAdditive += 10; AddBuff(27, 98, 10, 60); } else { FurySwipesLastHit = hit; - Stats.rangedFlatDmg.valueAdditive -= FurySwipesDmg; - Stats.spellFlatDmg.valueAdditive -= FurySwipesDmg; - Stats.meleeFlatDmg.valueAdditive -= FurySwipesDmg; + Stats.baseRangedDamage.valueAdditive -= FurySwipesDmg; + Stats.baseSpellDamage.valueAdditive -= FurySwipesDmg; + Stats.baseMeleeDamage.valueAdditive -= FurySwipesDmg; FurySwipesDmg = 0; if (activeBuffs.ContainsKey(98)) activeBuffs[98].amount = 0; @@ -877,18 +860,18 @@ public void OnHit_Melee(Transform hit) if (hit == FurySwipesLastHit) { FurySwipesDmg += 100; - Stats.rangedFlatDmg.valueAdditive += 100; - Stats.spellFlatDmg.valueAdditive +=100; - Stats.meleeFlatDmg.valueAdditive += 100; + Stats.baseRangedDamage.valueAdditive += 100; + Stats.baseSpellDamage.valueAdditive +=100; + Stats.baseMeleeDamage.valueAdditive += 100; AddBuff(27, 98, 100, 60); } else { FurySwipesLastHit = hit; - Stats.rangedFlatDmg.valueAdditive -= FurySwipesDmg; - Stats.spellFlatDmg.valueAdditive -= FurySwipesDmg; - Stats.meleeFlatDmg.valueAdditive -= FurySwipesDmg; + Stats.baseRangedDamage.valueAdditive -= FurySwipesDmg; + Stats.baseSpellDamage.valueAdditive -= FurySwipesDmg; + Stats.baseMeleeDamage.valueAdditive -= FurySwipesDmg; FurySwipesDmg = 0; if (activeBuffs.ContainsKey(98)) activeBuffs[98].amount = 0; @@ -936,8 +919,8 @@ public void DoGuaranteedAreaDamage(Transform rootTR, float damage) if (entity != null) { PlayerHitEnemy playerHitEnemy = PlayerHitEnemy.Create(GlobalTargets.OnlyServer); - playerHitEnemy.Hit = DamageMath.GetSendableDamage( d); - playerHitEnemy.getAttackerType = DamageMath.SILENTattackerType; //silent hit + playerHitEnemy.Hit = DamageUtils.GetSendableDamage( d); + playerHitEnemy.getAttackerType = DamageUtils.SILENTattackerType; //silent hit playerHitEnemy.Target = entity; playerHitEnemy.Send(); } @@ -973,7 +956,7 @@ public void GiveSpecialItems() { if ((level % 10) == 0 && level > 1) { - var item = new Item(ItemDataBase.ItemBaseByName("Heart of Purity")); + var item = new Item(ItemDatabase.ItemBaseByName("Heart of Purity"), 1); item.level = 1; if (!Inventory.Instance.AddItem(item)) { @@ -982,7 +965,7 @@ public void GiveSpecialItems() } else if (level >= 10 && level % 20 == 5 ) { - var item = new Item(ItemDataBase.ItemBaseByName("Greater Mutated Heart")); + var item = new Item(ItemDatabase.ItemBaseByName("Greater Mutated Heart"), 1); item.level = 1; if (!Inventory.Instance.AddItem(item)) { @@ -1181,15 +1164,15 @@ public static void UnAssignAllStats() { if (item.Value == null) continue; - if (item.Value.Equipped) + if (item.Value.isEquipped) { - item.Value.onUnequip?.Invoke(); - item.Value.Equipped = false; - foreach (var stat in item.Value.Stats) + item.Value.onUnequipCallback?.Invoke(); + item.Value.isEquipped = false; + foreach (var stat in item.Value.stats) { try { - stat.OnUnequip?.Invoke(stat.Amount); + stat.OnUnequip?.Invoke(stat.amount); } catch (Exception e) { @@ -1265,7 +1248,7 @@ public static void ReapplyAllItems() { if (Inventory.Instance.ItemSlots[key] != null) { - Inventory.Instance.ItemSlots[key].Equipped = false; + Inventory.Instance.ItemSlots[key].isEquipped = false; } } diff --git a/Player/ModdedPlayer/Stats/AdditiveNetworkSyncedPlayerStat.cs b/Player/ModdedPlayer/Stats/AdditiveNetworkSyncedPlayerStat.cs index a3effc7..10a3f1a 100644 --- a/Player/ModdedPlayer/Stats/AdditiveNetworkSyncedPlayerStat.cs +++ b/Player/ModdedPlayer/Stats/AdditiveNetworkSyncedPlayerStat.cs @@ -6,7 +6,7 @@ namespace ChampionsOfForest.Player { - public class AdditiveNetworkSyncedPlayerStat : NumericPlayerStatBase, INetworkSyncedPlayerStat, INetworkStatStorage where T : struct, IComparable, IComparable, IEquatable, IConvertible, IFormattable + public class AdditiveNetworkSyncedPlayerStat : NumericPlayerStatBase, INetworkSyncedPlayerStat, INetworkStatStorage, IAdditiveStat where T : struct, IComparable, IComparable, IEquatable, IConvertible, IFormattable { protected Func add, substract; @@ -32,7 +32,7 @@ public T Add(T amount) ValueChanged(); return Value; } - public T Substract(T amount) + public T Sub(T amount) { valueAdditive = substract(valueAdditive, amount); return Value; @@ -73,10 +73,10 @@ public Dictionary OtherPlayerValues public void PlayerDisconnected() { var keys = OtherPlayerValues.Keys; - var names = ModReferences.PlayerStates.Select(x => x.name).ToList(); + var states = ModReferences.PlayerStates.All; foreach (var key in keys) { - if (!names.Contains(key)) + if (!states.Any(x=> x.playerID == key)) { OtherPlayerValues.Remove(key); } diff --git a/Player/ModdedPlayer/Stats/AdditivePlayerStat.cs b/Player/ModdedPlayer/Stats/AdditivePlayerStat.cs index 00ce961..a6060c9 100644 --- a/Player/ModdedPlayer/Stats/AdditivePlayerStat.cs +++ b/Player/ModdedPlayer/Stats/AdditivePlayerStat.cs @@ -2,7 +2,7 @@ namespace ChampionsOfForest.Player { - public class AdditivePlayerStat : NumericPlayerStatBase where T : struct, IComparable, IComparable, IEquatable, IConvertible, IFormattable + public class AdditivePlayerStat : NumericPlayerStatBase, IAdditiveStat where T : struct, IComparable, IComparable, IEquatable, IConvertible, IFormattable { protected Func add,substract; public T valueAdditive; @@ -23,7 +23,7 @@ public T Add(T amount) valueAdditive = add(valueAdditive, amount); return Value; } - public T Substract(T amount) + public T Sub(T amount) { valueAdditive = substract(valueAdditive, amount); return Value; diff --git a/Player/ModdedPlayer/Stats/BaseClasses/NetworkPlayerStats.cs b/Player/ModdedPlayer/Stats/BaseClasses/NetworkPlayerStats.cs index 58e2ac4..ac7729e 100644 --- a/Player/ModdedPlayer/Stats/BaseClasses/NetworkPlayerStats.cs +++ b/Player/ModdedPlayer/Stats/BaseClasses/NetworkPlayerStats.cs @@ -33,6 +33,7 @@ public static void SendUpdate(int nID) } public static void PlayerLeft() { + //todo call this function somewhere foreach (var stat in syncedStats) { stat.PlayerDisconnected(); diff --git a/Player/ModdedPlayer/Stats/BooleanPlayerStat.cs b/Player/ModdedPlayer/Stats/BooleanPlayerStat.cs index 0397a8e..5b6bc44 100644 --- a/Player/ModdedPlayer/Stats/BooleanPlayerStat.cs +++ b/Player/ModdedPlayer/Stats/BooleanPlayerStat.cs @@ -1,6 +1,6 @@ namespace ChampionsOfForest.Player { - public class BooleanPlayerStat : CPlayerStatBase + public class BooleanPlayerStat : CPlayerStatBase, IAdditiveStat { public bool value; private readonly bool default_value; @@ -18,5 +18,15 @@ public override void Reset() } public override bool GetAmount() => value; public void Set(bool newValue) => value = newValue; + public bool Add(bool amount) + { + value = true; + return true; + } + public bool Sub(bool amount) + { + value = false; + return false; + } } } \ No newline at end of file diff --git a/Player/ModdedPlayer/Stats/Interfaces.cs b/Player/ModdedPlayer/Stats/Interfaces.cs new file mode 100644 index 0000000..42d19ba --- /dev/null +++ b/Player/ModdedPlayer/Stats/Interfaces.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ChampionsOfForest.Player +{ + public interface IAdditiveStat + { + T Add(T amount); + T Sub(T amount); + } + public interface IMultiplicativeStat + { + T Multiply(T amount); + T Divide(T amount); + } +} diff --git a/Player/ModdedPlayer/Stats/MultiOperationPlayerStat.cs b/Player/ModdedPlayer/Stats/MultiOperationPlayerStat.cs index aa5506c..ba2ac40 100644 --- a/Player/ModdedPlayer/Stats/MultiOperationPlayerStat.cs +++ b/Player/ModdedPlayer/Stats/MultiOperationPlayerStat.cs @@ -2,7 +2,7 @@ namespace ChampionsOfForest.Player { - public class MultiOperationPlayerStat : NumericPlayerStatBase where T : struct, IComparable, IComparable, IEquatable, IConvertible, IFormattable + public class MultiOperationPlayerStat : NumericPlayerStatBase, IAdditiveStat, IMultiplicativeStat where T : struct, IComparable, IComparable, IEquatable, IConvertible, IFormattable { protected Func add; protected Func substract; @@ -60,7 +60,7 @@ public T Add(T amount) valueAdditive = add(valueAdditive, amount); return Value; } - public T Substract(T amount) + public T Sub(T amount) { valueAdditive = substract(valueAdditive, amount); return Value; diff --git a/Player/ModdedPlayer/Stats/MultiplicativeNetworkSyncedPlayerStat.cs b/Player/ModdedPlayer/Stats/MultiplicativeNetworkSyncedPlayerStat.cs index 4b3f1a2..d0cac49 100644 --- a/Player/ModdedPlayer/Stats/MultiplicativeNetworkSyncedPlayerStat.cs +++ b/Player/ModdedPlayer/Stats/MultiplicativeNetworkSyncedPlayerStat.cs @@ -6,7 +6,7 @@ namespace ChampionsOfForest.Player { - public class MultiplicativeNetworkSyncedPlayerStat : NumericPlayerStatBase, INetworkSyncedPlayerStat, INetworkStatStorage where T : struct, IComparable, IComparable, IEquatable, IConvertible, IFormattable + public class MultiplicativeNetworkSyncedPlayerStat : NumericPlayerStatBase, INetworkSyncedPlayerStat, INetworkStatStorage, IMultiplicativeStat where T : struct, IComparable, IComparable, IEquatable, IConvertible, IFormattable { protected Func mult; protected Func divide; diff --git a/Player/ModdedPlayer/Stats/MultiplicativePlayerStat.cs b/Player/ModdedPlayer/Stats/MultiplicativePlayerStat.cs index 76053fe..8328e86 100644 --- a/Player/ModdedPlayer/Stats/MultiplicativePlayerStat.cs +++ b/Player/ModdedPlayer/Stats/MultiplicativePlayerStat.cs @@ -2,7 +2,7 @@ namespace ChampionsOfForest.Player { - public class MultiplicativePlayerStat : NumericPlayerStatBase where T : struct, IComparable, IComparable, IEquatable, IConvertible, IFormattable + public class MultiplicativePlayerStat : NumericPlayerStatBase, IMultiplicativeStat where T : struct, IComparable, IComparable, IEquatable, IConvertible, IFormattable { protected Func mult; protected Func divide; diff --git a/Player/Overrides/FPCharacterMod.cs b/Player/Overrides/FPCharacterMod.cs index 8237793..31ac1a9 100644 --- a/Player/Overrides/FPCharacterMod.cs +++ b/Player/Overrides/FPCharacterMod.cs @@ -50,13 +50,13 @@ protected override void Update() protected override void HandleWalkingSpeedOptions() { base.HandleWalkingSpeedOptions(); - speed *= ModdedPlayer.Stats.movementSpeed; + speed *= ModdedPlayer.Stats.mOVEMENT_SPEED; } protected override void HandleRunningStaminaAndSpeed() { base.HandleRunningStaminaAndSpeed(); - speed *= ModdedPlayer.Stats.movementSpeed; + speed *= ModdedPlayer.Stats.mOVEMENT_SPEED; COTFEvents.Instance.OnSprint.Invoke(); } diff --git a/Player/Overrides/PlayerInventoryMod.cs b/Player/Overrides/PlayerInventoryMod.cs index 2156ae5..974199a 100644 --- a/Player/Overrides/PlayerInventoryMod.cs +++ b/Player/Overrides/PlayerInventoryMod.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using ChampionsOfForest.Effects; +using ChampionsOfForest.Items; using TheForest.Items.Inventory; using TheForest.Utils; @@ -26,9 +27,9 @@ internal class PlayerInventoryMod : PlayerInventory public static Mesh noMesh; public static Mesh originalMesh; //public static TheForest.Items.Item.AnimatorVariables[] originalAnimVars; - public static Dictionary customWeapons = new Dictionary(); - public static BaseItem.WeaponModelType ToEquipWeaponType = BaseItem.WeaponModelType.None; - public static BaseItem.WeaponModelType EquippedModel = BaseItem.WeaponModelType.None; + public static Dictionary customWeapons = new Dictionary(); + public static ItemDefinition.ItemSubtype ToEquipWeaponType = ItemDefinition.ItemSubtype.None; + public static ItemDefinition.ItemSubtype EquippedModel = ItemDefinition.ItemSubtype.None; public void GetRightHand() { ModReferences.rightHandTransform = this._itemViews[64]._heldWeaponInfo.transform.parent.gameObject.transform.parent.transform; @@ -60,7 +61,7 @@ protected override bool Equip(InventoryItemView itemView, bool pickedUpFromWorld { if (GreatBow.instance != null) GreatBow.instance.SetActive(false); - if (ToEquipWeaponType == BaseItem.WeaponModelType.None) + if (ToEquipWeaponType == ItemDefinition.ItemSubtype.None) { foreach (CustomWeapon item in customWeapons.Values) { @@ -70,15 +71,15 @@ protected override bool Equip(InventoryItemView itemView, bool pickedUpFromWorld } if (itemView != null) { - if (EquippedModel != BaseItem.WeaponModelType.None) + if (EquippedModel != ItemDefinition.ItemSubtype.None) { customWeapons[EquippedModel].objectToHide?.SetActive(true); } - EquippedModel = BaseItem.WeaponModelType.None; + EquippedModel = ItemDefinition.ItemSubtype.None; //Send network event to display a custom weapon for other players - if (BoltNetwork.isRunning && ToEquipWeaponType != BaseItem.WeaponModelType.None) + if (BoltNetwork.isRunning && ToEquipWeaponType != ItemDefinition.ItemSubtype.None) { using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) { @@ -98,7 +99,7 @@ protected override bool Equip(InventoryItemView itemView, bool pickedUpFromWorld if (itemView.gameObject.name == "axePlane_Inv") { - if (ToEquipWeaponType != BaseItem.WeaponModelType.None) + if (ToEquipWeaponType != ItemDefinition.ItemSubtype.None) { try { @@ -149,7 +150,7 @@ protected override bool Equip(InventoryItemView itemView, bool pickedUpFromWorld } else if (itemView == _itemViews[158]) //spear { - if (ToEquipWeaponType == BaseItem.WeaponModelType.Polearm) + if (ToEquipWeaponType == ItemDefinition.ItemSubtype.Polearm) { EquippedModel = ToEquipWeaponType; try @@ -190,7 +191,7 @@ protected override bool Equip(InventoryItemView itemView, bool pickedUpFromWorld itemView._heldWeaponInfo.staminaDrain = itemView._heldWeaponInfo.baseStaminaDrain; itemView._heldWeaponInfo.noTreeCut = false; itemView._heldWeaponInfo.spear = true; - customWeapons[BaseItem.WeaponModelType.Polearm].objectToHide.GetComponent().enabled = true; + customWeapons[ItemDefinition.ItemSubtype.Polearm].objectToHide.GetComponent().enabled = true; } } } @@ -200,7 +201,7 @@ protected override bool Equip(InventoryItemView itemView, bool pickedUpFromWorld protected override void ThrowProjectile() { - if (EquippedModel == BaseItem.WeaponModelType.Polearm) + if (EquippedModel == ItemDefinition.ItemSubtype.Polearm) return; this._isThrowing = false; InventoryItemView inventoryItemView = this._equipmentSlots[0]; @@ -226,21 +227,11 @@ protected override void ThrowProjectile() gameObject.transform.localScale *= 1.5f; force *= 2f; component.useGravity = false; - if (ModReferences.bloodInfusedMaterial == null) - { - ModReferences.bloodInfusedMaterial = BuilderCore.Core.CreateMaterial(new BuilderCore.BuildingData() - { - EmissionColor = new Color(0.4f, 0, 0), - renderMode = BuilderCore.BuildingData.RenderMode.Fade, - MainColor = Color.red, - Metalic = 1f, - Smoothness = 0.8f, - }); - } + //gameObject.GetComponent().material = bloodInfusedMaterial; var trail = gameObject.AddComponent(); trail.widthCurve = new AnimationCurve(new Keyframe[] { new Keyframe(0f, 1f, 0f, 0f), new Keyframe(0.5f, 1f, 0f, 0f), new Keyframe(1f, 0.006248474f, 0f, 0f), }); - trail.material = ModReferences.bloodInfusedMaterial; + trail.material = ModReferences.BloodMaterial; trail.widthMultiplier = 0.85f; trail.time = 2f; trail.autodestruct = false; @@ -307,7 +298,7 @@ public override void Attack() if (!IsRightHandEmpty() && !_isThrowing && !IsReloading && !blockRangedAttack && !IsSlotLocked(TheForest.Items.Item.EquipmentSlot.RightHand) && !LocalPlayer.Inventory.HasInSlot(TheForest.Items.Item.EquipmentSlot.RightHand, LocalPlayer.AnimControl._slingShotId)) { - if (EquippedModel != BaseItem.WeaponModelType.None && customWeapons.ContainsKey(EquippedModel)) + if (EquippedModel != ItemDefinition.ItemSubtype.None && customWeapons.ContainsKey(EquippedModel)) { customWeapons[EquippedModel].EnableTrail(); } @@ -364,7 +355,7 @@ public override void Start() protected override void FireRangedWeapon() { var cache = _equipmentSlots[0].ItemCache; - if (EquippedModel == BaseItem.WeaponModelType.Polearm) + if (EquippedModel == ItemDefinition.ItemSubtype.Polearm) return; bool noconsume = ModdedPlayer.Stats.perk_projectileNoConsumeChance >= 0 && Random.value < ModdedPlayer.Stats.perk_projectileNoConsumeChance; noconsume = noconsume || cache._maxAmount < 0 || RemoveItem(cache._ammoItemId, 1, false, true); @@ -393,7 +384,7 @@ public void InitializeGreatBow() public void CreateCustomWeapons() { //long sword - new CustomWeapon(BaseItem.WeaponModelType.LongSword, + new CustomWeapon(ItemDefinition.ItemSubtype.LongSword, 51, BuilderCore.Core.CreateMaterial( new BuilderCore.BuildingData() @@ -406,17 +397,17 @@ public void CreateCustomWeapons() new Vector3(0.2f - 0.04347827f, -1.5f + 0.173913f, 0.3f - 0.05797101f), new Vector3(0, -90, 0), new Vector3(-0.2f, -2.3f, 0), - 1.3f, 0.9f, 40, 80, 0.4f, 0.2f, 50, true, 5); + 1.1f, 0.9f, 20, 25, 0.4f, 0.2f, 30, false, 3); //great sword - new CustomWeapon(BaseItem.WeaponModelType.GreatSword, + new CustomWeapon(ItemDefinition.ItemSubtype.GreatSword, 52, BuilderCore.Core.CreateMaterial( new BuilderCore.BuildingData() { OcclusionStrenght = 0.75f, - Smoothness = 0.6f, - Metalic = 0.6f, + Smoothness = 0.5f, + Metalic = 0.5f, MainTexture = Res.ResourceLoader.instance.LoadedTextures[61], EmissionMap = Res.ResourceLoader.instance.LoadedTextures[62], BumpMap = Res.ResourceLoader.instance.LoadedTextures[64], @@ -427,23 +418,23 @@ public void CreateCustomWeapons() new Vector3(0.15f - 0.03623189f, -2.13f - 0.0572464f, 0.19f - 0.1014493f), new Vector3(180, 180, 90), new Vector3(0, 0, -3.5f), - 1.8f, 1f, 60, 90, 0.01f, 0.001f, 85, false, 5); + 1.6f, 1f, 20, 30, 0.00f, 0.00f, 60, false, 10); //hammer - new CustomWeapon(BaseItem.WeaponModelType.Hammer, + new CustomWeapon(ItemDefinition.ItemSubtype.Hammer, 108, BuilderCore.Core.CreateMaterial( new BuilderCore.BuildingData() { Metalic = 0.86f, Smoothness = 0.66f, - MainColor = new Color(0.2f, 0.2f, 0.2f), + MainColor = new Color(0.7f, 0.7f, 0.76f), } ), new Vector3(0, 0, 0), new Vector3(0, 0, 90), new Vector3(0, 0, -2f), - 1.6f, 1f, 25, 250, 0f, 0f, 500, true, 6); + 1.2f, 1f, 75, 250, 0.1f, 0f, 300, false, 600); var Axe_PlaneAxe = Instantiate(originalPlaneAxeModel, originalParent); var Axe_Renderer = Axe_PlaneAxe.GetComponent(); @@ -464,16 +455,16 @@ public void CreateCustomWeapons() axeObject.transform.localScale = Vector3.one; var AxeTrail = axeObject.transform.GetChild(0).GetComponent(); AxeTrail.transform.localPosition = new Vector3(0, -0.3f, 0); - new CustomWeapon(BaseItem.WeaponModelType.Axe, Axe_PlaneAxe, AxeTrail, AxeOffset, AxeRotation, 1) + new CustomWeapon(ItemDefinition.ItemSubtype.Axe, Axe_PlaneAxe, AxeTrail, AxeOffset, AxeRotation, 1) { blockTreeCut = false, - damage = 8, - smashDamage = 10, + damage = 10, + smashDamage = 25, staminaDrain = 4, swingspeed = 50, treeDamage = 10, tiredswingspeed = 50, - ColliderScale = 0.4f + ColliderScale = 0.5f }; AxeTrail.gameObject.SetActive(false); CreateCustomWeapons_Spears(); @@ -481,9 +472,9 @@ public void CreateCustomWeapons() public void CreateCustomWeapons_Spears() { - if (customWeapons.ContainsKey(BaseItem.WeaponModelType.Polearm) && customWeapons[BaseItem.WeaponModelType.Polearm].obj != null) + if (customWeapons.ContainsKey(ItemDefinition.ItemSubtype.Polearm) && customWeapons[ItemDefinition.ItemSubtype.Polearm].obj != null) { - customWeapons.Remove(BaseItem.WeaponModelType.Polearm); + customWeapons.Remove(ItemDefinition.ItemSubtype.Polearm); } var original = _itemViews[158]._held; //original.gameObject.SetActive(true); @@ -504,7 +495,7 @@ public void CreateCustomWeapons_Spears() modelClone.transform.localRotation = secondChild.localRotation; modelClone.transform.Rotate(new Vector3(90, 0, 0)); modelClone.transform.localScale *= 0.7f / 3; - var polearm = new CustomWeapon(BaseItem.WeaponModelType.Polearm, + var polearm = new CustomWeapon(ItemDefinition.ItemSubtype.Polearm, clone, Vector3.zero, new Vector3(0, 0, 0), @@ -512,12 +503,12 @@ public void CreateCustomWeapons_Spears() { spearType = true, tiredswingspeed = 20, - damage = 50f, + damage = 20f, staminaDrain = 14, blockTreeCut = false, - smashDamage = 350f, - swingspeed = 100, - ColliderScale = 3f, + smashDamage = 60f, + swingspeed = 50, + ColliderScale = 1f, treeDamage = 1, objectToHide = secondChild.gameObject }; diff --git a/Player/Overrides/PlayerRespawnMod.cs b/Player/Overrides/PlayerRespawnMod.cs index 0f4614b..d6613df 100644 --- a/Player/Overrides/PlayerRespawnMod.cs +++ b/Player/Overrides/PlayerRespawnMod.cs @@ -28,25 +28,19 @@ protected override void Respawn() ModReferences.rightHandTransform = null; - ModdedPlayer.instance.ExpCurrent = 0; - ModdedPlayer.instance.NewlyGainedExp = 0; - ModdedPlayer.instance.MassacreKills = 0; - ModdedPlayer.instance.MassacreMultiplier = 1; - ModdedPlayer.instance.TimeUntillMassacreReset = 0; + ModdedPlayer.instance.ExpCurrent = (long)((double)ModdedPlayer.instance.ExpCurrent * (double)ModSettings.KeptExperienceAfterDeath); + ModdedPlayer.instance.NewlyGainedExp = (long)((double)ModdedPlayer.instance.ExpCurrent * (double)ModSettings.KeptExperienceAfterDeath); + if (ModSettings.EndMassacreAfterDeath) + { + ModdedPlayer.instance.MassacreKills = 0; + ModdedPlayer.instance.MassacreMultiplier = 1; + ModdedPlayer.instance.TimeUntillMassacreReset = 0; + } ModdedPlayer.instance.AfterRespawn(); BlackFlame.instance.Start(); if (GameSetup.IsMultiplayer) { - using (MemoryStream answerStream = new MemoryStream()) - { - using (BinaryWriter w = new BinaryWriter(answerStream)) - { - w.Write(19); - w.Write(ModReferences.ThisPlayerID); - w.Write(ModdedPlayer.instance.level); - } - NetworkManager.SendLine(answerStream.ToArray(), NetworkManager.Target.Others); - } + ModdedPlayer.instance.SendPlayerState(); } } } diff --git a/Player/Overrides/PlayerStatsEx.cs b/Player/Overrides/PlayerStatsEx.cs index 842491d..baeceed 100644 --- a/Player/Overrides/PlayerStatsEx.cs +++ b/Player/Overrides/PlayerStatsEx.cs @@ -510,7 +510,7 @@ protected override void Update() } if (Health < HealthTarget) { - Health = Mathf.MoveTowards(Health, HealthTarget, (GameSettings.Survival.HealthRegenPerSecond + ModdedPlayer.Stats.TotalMaxHealth * 0.0025f + ModdedPlayer.Stats.healthRecoveryPerSecond) * (ModdedPlayer.Stats.healthPerSecRate + 1) * ModdedPlayer.Stats.allRecoveryMult * Time.deltaTime); + Health = Mathf.MoveTowards(Health, HealthTarget, (GameSettings.Survival.HealthRegenPerSecond + ModdedPlayer.Stats.TotalMaxHealth * 0.0025f + ModdedPlayer.Stats.lifeRegenBase) * (ModdedPlayer.Stats.lifeRegenMult + 1) * ModdedPlayer.Stats.allRecoveryMult * Time.deltaTime); Scene.HudGui.HealthBarTarget.enabled = true; } @@ -551,7 +551,7 @@ protected override void Update() if (!LocalPlayer.FpCharacter.running && !(LocalPlayer.FpCharacter.recoveringFromRun > 0f)) { Stamina += ModdedPlayer.Stats.TotalStaminaRecoveryAmount * Time.deltaTime; - Energy += ModdedPlayer.Stats.energyRecoveryperSecond.Value * ModdedPlayer.Stats.TotalEnergyRecoveryMultiplier * Time.deltaTime; + Energy += ModdedPlayer.Stats.energyRecoveryBase.Value * ModdedPlayer.Stats.TotalEnergyRecoveryMultiplier * Time.deltaTime; } else if (LocalPlayer.FpCharacter.recoveringFromRun > 0f && Thirst < 1) { @@ -561,7 +561,7 @@ protected override void Update() else { Stamina = Energy; - Energy += ModdedPlayer.Stats.energyRecoveryperSecond.Value * ModdedPlayer.Stats.TotalEnergyRecoveryMultiplier * Time.deltaTime; + Energy += ModdedPlayer.Stats.energyRecoveryBase.Value * ModdedPlayer.Stats.TotalEnergyRecoveryMultiplier * Time.deltaTime; } if (CheckingBlood && Scene.SceneTracker.proxyAttackers.arrayList.Count > 0) { @@ -735,7 +735,7 @@ public override void HealthChange(float amount) amount = ModdedPlayer.instance.DealDamageToShield(-amount); Health -= amount; HealthTarget -= amount * 3; - Network.NetworkManager.SendPlayerHitmarker(transform.position, (int)amount); + Network.NetworkManager.SendPlayerHitmarker(transform.position, amount); } else { @@ -794,7 +794,7 @@ public override void Hit(int damage, bool ignoreArmor, DamageType type) } if (ModdedPlayer.Stats.i_KingQruiesSword) BuffDB.AddBuff(22, 80, f, 1); - CotfUtils.Log("Tanked damage: " + f, true); + Utils.Log("Tanked damage: " + f, true); base.Hit(damage, ignoreArmor, type); } @@ -940,15 +940,15 @@ protected override void CheckDeath() COTFEvents.Instance.OnDeath.Invoke(); switch (ModSettings.dropsOnDeath) { - case ModSettings.DropsOnDeathMode.All: + case ModSettings.DropsOnDeathModes.All: Inventory.Instance.DropAll(); break; - case ModSettings.DropsOnDeathMode.Equipped: + case ModSettings.DropsOnDeathModes.Equipped: Inventory.Instance.DropEquipped(); break; - case ModSettings.DropsOnDeathMode.NonEquipped: + case ModSettings.DropsOnDeathModes.Inventory: Inventory.Instance.DropNonEquipped(); break; } diff --git a/Player/Overrides/WeaponInfoMod.cs b/Player/Overrides/WeaponInfoMod.cs index 5fae8f3..22c943e 100644 --- a/Player/Overrides/WeaponInfoMod.cs +++ b/Player/Overrides/WeaponInfoMod.cs @@ -23,7 +23,7 @@ protected override void Update() { if (mainTriggerScript != null) { - if (PlayerInventoryMod.EquippedModel != BaseItem.WeaponModelType.None && PlayerInventoryMod.EquippedModel != BaseItem.WeaponModelType.Greatbow) + if (PlayerInventoryMod.EquippedModel != ItemDefinition.ItemSubtype.None && PlayerInventoryMod.EquippedModel != ItemDefinition.ItemSubtype.Greatbow) { CustomWeapon cw = PlayerInventoryMod.customWeapons[PlayerInventoryMod.EquippedModel]; setup.pmStamina.FsmVariables.GetFsmFloat("notTiredSpeed").Value = animSpeed * cw.swingspeed; @@ -119,7 +119,7 @@ private bool COTFHit(Collider other) outputdmg = smashDamage; else outputdmg = weaponDamage; - outputdmg += ModdedPlayer.Stats.meleeFlatDmg + SpellActions.GetParryCounterStrikeDmg(); + outputdmg += ModdedPlayer.Stats.baseMeleeDamage + SpellActions.GetParryCounterStrikeDmg(); float critDmg = ModdedPlayer.Stats.RandomCritDamage; outputdmg *= critDmg * ModdedPlayer.Stats.MeleeDamageMult; @@ -151,8 +151,8 @@ private bool COTFHit(Collider other) } var phe = PlayerHitEnemy.Create(GlobalTargets.OnlyServer); phe.Target = entity; - phe.getAttackerType = 4 + DamageMath.CONVERTEDFLOATattackerType; - phe.Hit = DamageMath.GetSendableDamage(outputdmg); + phe.getAttackerType = 4 + DamageUtils.CONVERTEDFLOATattackerType; + phe.Hit = DamageUtils.GetSendableDamage(outputdmg); phe.HitAxe = axe; phe.hitFallDown = fsmHeavyAttackBool.Value && axe; phe.getAttackDirection = animator.GetInteger("hitDirection"); @@ -227,7 +227,7 @@ private bool COTFHit(Collider other) if (ModdedPlayer.Stats.perk_fireDmgIncreaseOnHit) { int myID = 2000 + ModReferences.Players.IndexOf(LocalPlayer.GameObject); - float fireDmg = 1 + ModdedPlayer.Stats.spellFlatDmg / 3; + float fireDmg = 1 + ModdedPlayer.Stats.baseSpellDamage / 3; fireDmg *= ModdedPlayer.Stats.TotalMagicDamageMultiplier; fireDmg *= ModdedPlayer.Stats.fireDamage + 1; fireDmg *= 0.35f; @@ -246,7 +246,7 @@ private bool COTFHit(Collider other) answerStream.Close(); } } - if (ModdedPlayer.Stats.i_HammerStun && PlayerInventoryMod.EquippedModel == BaseItem.WeaponModelType.Hammer) + if (ModdedPlayer.Stats.i_HammerStun && PlayerInventoryMod.EquippedModel == ItemDefinition.ItemSubtype.Hammer) { using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) { @@ -316,14 +316,14 @@ private bool COTFHit(Collider other) if (ModdedPlayer.Stats.perk_fireDmgIncreaseOnHit) { int myID = 2000 + ModReferences.Players.IndexOf(LocalPlayer.GameObject); - float fireDmg = 1 + ModdedPlayer.Stats.spellFlatDmg / 3; + float fireDmg = 1 + ModdedPlayer.Stats.baseSpellDamage / 3; fireDmg *= ModdedPlayer.Stats.TotalMagicDamageMultiplier; fireDmg *= ModdedPlayer.Stats.fireDamage + 1; fireDmg *= 0.35f; progression.FireDebuff(2000, fireDmg, 14); } - if (ModdedPlayer.Stats.i_HammerStun && PlayerInventoryMod.EquippedModel == BaseItem.WeaponModelType.Hammer) + if (ModdedPlayer.Stats.i_HammerStun && PlayerInventoryMod.EquippedModel == ItemDefinition.ItemSubtype.Hammer) progression.Slow(40, ModdedPlayer.Stats.i_HammerStunAmount, ModdedPlayer.Stats.i_HammerStunDuration); SpellActions.Bash(progression, outputdmg); @@ -356,7 +356,7 @@ private bool COTFHit(Collider other) ModdedPlayer.instance.OnHit(); ModdedPlayer.instance.OnHit_Melee(other.transform); - DamageMath.ReduceDamageToSendOverNet(2f * (WeaponDamage + ModdedPlayer.Stats.meleeFlatDmg + SpellActions.GetParryCounterStrikeDmg()) * ModdedPlayer.Stats.MeleeDamageMult * ModdedPlayer.Stats.RandomCritDamage, out int dmg, out int repetitions); + DamageUtils.ReduceDamageToSendOverNet(2f * (WeaponDamage + ModdedPlayer.Stats.baseMeleeDamage + SpellActions.GetParryCounterStrikeDmg()) * ModdedPlayer.Stats.MeleeDamageMult * ModdedPlayer.Stats.RandomCritDamage, out int dmg, out int repetitions); HitPlayer hitPlayer = HitPlayer.Create(component3, EntityTargets.Everyone); hitPlayer.damage = dmg; diff --git a/Player/Overrides/XBArrowDamageMod.cs b/Player/Overrides/XBArrowDamageMod.cs index 10c5510..06ffce4 100644 --- a/Player/Overrides/XBArrowDamageMod.cs +++ b/Player/Overrides/XBArrowDamageMod.cs @@ -28,7 +28,7 @@ protected override void Start() pierceCount = 0; //flat damage part - OutputDmg = damage + ModdedPlayer.Stats.rangedFlatDmg; + OutputDmg = damage + ModdedPlayer.Stats.baseRangedDamage; if (ModdedPlayer.Stats.spell_seekingArrow) { OutputDmg += ModdedPlayer.Stats.spell_seekingArrow_DamageBonus.Value; @@ -50,7 +50,7 @@ protected override void Start() { if (ModdedPlayer.Stats.i_HazardCrownBonus > 0) { - ModdedPlayer.Stats.i_HazardCrownBonus.Substract(1); + ModdedPlayer.Stats.i_HazardCrownBonus.Sub(1); } else ModdedPlayer.Stats.spell_bia_AccumulatedDamage.valueAdditive = 0; @@ -327,7 +327,7 @@ public override void CheckHit(Vector3 position, Transform target, bool isTrigger if (ModdedPlayer.Stats.perk_fireDmgIncreaseOnHit) { int myID = 1000 + ModReferences.Players.IndexOf(LocalPlayer.GameObject); - float dmg = 1 + ModdedPlayer.Stats.spellFlatDmg / 3; + float dmg = 1 + ModdedPlayer.Stats.baseSpellDamage / 3; dmg *= ModdedPlayer.Stats.TotalMagicDamageMultiplier; dmg *= ModdedPlayer.Stats.fireDamage + 1; dmg *= 0.3f; @@ -418,7 +418,7 @@ public override void CheckHit(Vector3 position, Transform target, bool isTrigger { if (ModdedPlayer.Stats.i_ArchangelBow && GreatBow.isEnabled) { - float lifePerSecond = (ModdedPlayer.Stats.healthRecoveryPerSecond) * ModdedPlayer.Stats.allRecoveryMult * (ModdedPlayer.Stats.healthPerSecRate) * 2; + float lifePerSecond = (ModdedPlayer.Stats.lifeRegenBase) * ModdedPlayer.Stats.allRecoveryMult * (ModdedPlayer.Stats.lifeRegenMult) * 2; using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) { using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream)) @@ -485,7 +485,7 @@ public override void CheckHit(Vector3 position, Transform target, bool isTrigger dmgUnclamped *= SpellActions.FocusOnBodyShot(); } - DamageMath.ReduceDamageToSendOverNet(dmgUnclamped, out int sendDamage, out int reps); + DamageUtils.ReduceDamageToSendOverNet(dmgUnclamped, out int sendDamage, out int reps); HitPlayer HP = HitPlayer.Create(be, EntityTargets.Everyone); HP.damage = sendDamage; @@ -800,7 +800,7 @@ public void NewHitAi(Transform target, bool hitDelay, bool headDamage) playerHitEnemy.getAttackDirection = 3; } playerHitEnemy.getAttackerType = 4; - playerHitEnemy.Hit = DamageMath.GetSendableDamage(dmgUnclamped); + playerHitEnemy.Hit = DamageUtils.GetSendableDamage(dmgUnclamped); if ((GreatBow.isEnabled && ModdedPlayer.Stats.i_greatBowIgnites) || (ignite && Random.value < 0.5f)) { COTFEvents.Instance.OnIgniteRanged.Invoke(); @@ -830,8 +830,8 @@ public void NewHitAi(Transform target, bool hitDelay, bool headDamage) playerHitEnemy2.Burn = true; } - playerHitEnemy2.Hit = DamageMath.GetSendableDamage(dmgUnclamped); - playerHitEnemy2.getAttackerType += DamageMath.CONVERTEDFLOATattackerType; + playerHitEnemy2.Hit = DamageUtils.GetSendableDamage(dmgUnclamped); + playerHitEnemy2.getAttackerType += DamageUtils.CONVERTEDFLOATattackerType; playerHitEnemy2.Send(); } goto afterdamage; diff --git a/Player/Perks/PerkDatabase.cs b/Player/Perks/PerkDatabase.cs index f101627..089d0d5 100644 --- a/Player/Perks/PerkDatabase.cs +++ b/Player/Perks/PerkDatabase.cs @@ -72,7 +72,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.energyRecoveryFromInt.valueAdditive += 0.002f, + onApply = () => ModdedPlayer.Stats.energyRecoveryFromInt.valueAdditive += 0.001f, category = PerkCategory.Utility, texture = null, @@ -83,7 +83,7 @@ public static void FillPerkList() posX = 1.5f, posY = 0, name = Translations.PerkDatabase_7, - originalDescription = Translations.PerkDatabase_8("0.2%"), + originalDescription = Translations.PerkDatabase_8("0.1%"), textureVariation = 0, //0 or 1 stackable = false, }; @@ -168,7 +168,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.staminaRecoveryperSecond.Add(0.5f), + onApply = () => ModdedPlayer.Stats.energyRegenMult.Add(0.5f), category = PerkCategory.Utility, texture = null, unlockPath = new int[] { 4 }, @@ -185,7 +185,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.meleeFlatDmg.valueAdditive += 5, + onApply = () => ModdedPlayer.Stats.baseMeleeDamage.valueAdditive += 5, category = PerkCategory.MeleeOffense, texture = null, unlockPath = new int[] { 0, 10 }, @@ -222,7 +222,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.strength.Add(20), + onApply = () => ModdedPlayer.Stats.strength.Add(10), category = PerkCategory.MeleeOffense, texture = null, unlockPath = new int[] { 0, 10 }, @@ -232,13 +232,13 @@ public static void FillPerkList() posX = 2f, posY = -0.75f, name = Translations.PerkDatabase_26, - originalDescription = Translations.PerkDatabase_27(20), + originalDescription = Translations.PerkDatabase_27(10), textureVariation = 0, //0 or 1 stackable = false, }; new Perk() { - onApply = () => ModdedPlayer.Stats.rangedFlatDmg.valueAdditive += 8, + onApply = () => ModdedPlayer.Stats.baseRangedDamage.valueAdditive += 5, category = PerkCategory.RangedOffense, texture = null, unlockPath = new int[] { 2 }, @@ -248,12 +248,12 @@ public static void FillPerkList() posX = 2f, posY = -0.75f, name = Translations.PerkDatabase_28, - originalDescription = Translations.PerkDatabase_29("8"), + originalDescription = Translations.PerkDatabase_29("5"), textureVariation = 0, //0 or 1 stackable = true, updateDescription = x => { - return Translations.PerkDatabase_15(x * 8); + return Translations.PerkDatabase_15(x * 5); }, }; new Perk() @@ -316,7 +316,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.spellCost.valueMultiplicative *= 1 - 0.09f, + onApply = () => ModdedPlayer.Stats.spellCost.valueMultiplicative *= 1 - 0.05f, category = PerkCategory.MagicOffense, texture = null, @@ -327,14 +327,14 @@ public static void FillPerkList() posX = 2f, posY = 0.75f, name = Translations.PerkDatabase_36, - originalDescription = Translations.PerkDatabase_37("9%"), + originalDescription = Translations.PerkDatabase_37("5%"), textureVariation = 0, //0 or 1 stackable = true, updateDescription = x => { - float f = 0.91f; + float f = 0.95f; for (int i = 1; i < x; i++) - f *= 0.91f; + f *= 0.95f; return Translations.PerkDatabase_15((1 - f).ToString("P")); }, }; @@ -400,7 +400,7 @@ public static void FillPerkList() new Perk() { - onApply = () => StatActions.AddAllStats(5), + onApply = () => StatActions.AddAllAttributes(5), category = PerkCategory.Utility, unlockPath = new int[] { 3 }, levelReq = 1, @@ -416,7 +416,7 @@ public static void FillPerkList() new Perk() { - onApply = () => StatActions.AddAllStats(20), + onApply = () => StatActions.AddAllAttributes(15), category = PerkCategory.Utility, unlockPath = new int[] { 20 }, @@ -426,14 +426,14 @@ public static void FillPerkList() posX = 3.5f, posY = 0f, name = Translations.PerkDatabase_44, - originalDescription = Translations.PerkDatabase_45(20), + originalDescription = Translations.PerkDatabase_45(15), textureVariation = 0, stackable = false, }; new Perk() { - onApply = () => StatActions.AddAttackSpeed(0.02f), + onApply = () => ModdedPlayer.Stats.attackSpeed.Add(0.02f), category = PerkCategory.MeleeOffense, unlockPath = new int[] { 11 }, @@ -448,7 +448,7 @@ public static void FillPerkList() stackable = true, updateDescription = x => { - return Translations.PerkDatabase_15((0.05f * x).ToString("P")); + return Translations.PerkDatabase_15((0.02f * x).ToString("P")); }, }; @@ -508,7 +508,7 @@ public static void FillPerkList() new Perk() { - onApply = () => StatActions.AddAllStats(10), + onApply = () => StatActions.AddAllAttributes(10), category = PerkCategory.Utility, unlockPath = new int[] { 21 }, @@ -544,7 +544,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.movementSpeed.valueAdditive += 0.1f, + onApply = () => ModdedPlayer.Stats.mOVEMENT_SPEED.valueAdditive += 0.1f, category = PerkCategory.Utility, unlockPath = new int[] { 27 }, @@ -564,7 +564,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.maxHealth.valueAdditive += 35, + onApply = () => ModdedPlayer.Stats.maxLife.valueAdditive += 35, category = PerkCategory.Defense, unlockPath = new int[] { 5 }, @@ -584,7 +584,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.healthRecoveryPerSecond.valueAdditive += 0.25f, + onApply = () => ModdedPlayer.Stats.lifeRegenBase.valueAdditive += 0.25f, category = PerkCategory.Support, unlockPath = new int[] { 6 }, @@ -604,7 +604,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.armor.Add(80), + onApply = () => ModdedPlayer.Stats.armor.Add(100), category = PerkCategory.Defense, unlockPath = new int[] { 5 }, @@ -614,12 +614,12 @@ public static void FillPerkList() posX = 2.5f, posY = 0f, name = Translations.PerkDatabase_63, - originalDescription = Translations.PerkDatabase_64("80"), + originalDescription = Translations.PerkDatabase_64("100"), textureVariation = 0, stackable = true, updateDescription = x => { - return Translations.PerkDatabase_15((80 * x).ToString("N")); + return Translations.PerkDatabase_15((100 * x).ToString("N")); }, }; new Perk() @@ -673,7 +673,7 @@ public static void FillPerkList() new Perk() { - onApply = () => ModdedPlayer.Stats.magicDamageTaken.Multiply(0.85f), + onApply = () => ModdedPlayer.Stats.damageFromElites.Multiply(0.85f), category = PerkCategory.Defense, unlockPath = new int[] { 29, 31 }, @@ -682,8 +682,8 @@ public static void FillPerkList() scale = 1, posX = 3f, posY = -0.75f, - name = Translations.MainMenu_Guide_19, - originalDescription = Translations.PerkDatabase_70("15%"), + name = "Elite Slayer", + originalDescription = "Reduces damage taken from elites by 15%", textureVariation = 0, stackable = true, updateDescription = x => @@ -760,7 +760,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.healthPerSecRate.valueAdditive += 0.1f, + onApply = () => ModdedPlayer.Stats.lifeRegenMult.valueAdditive += 0.1f, category = PerkCategory.Support, unlockPath = new int[] { 30 }, @@ -776,7 +776,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.energyRecoveryperSecond.valueAdditive += 0.15f, + onApply = () => ModdedPlayer.Stats.energyRecoveryBase.valueAdditive += 0.15f, category = PerkCategory.Support, unlockPath = new int[] { 30 }, @@ -809,7 +809,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.healthOnHit.valueAdditive += 1f, + onApply = () => ModdedPlayer.Stats.lifeOnHit.valueAdditive += 1f, category = PerkCategory.Support, unlockPath = new int[] { 40 }, @@ -1009,7 +1009,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.spellFlatDmg.valueAdditive += 10, + onApply = () => ModdedPlayer.Stats.baseSpellDamage.valueAdditive += 10, category = PerkCategory.MagicOffense, unlockPath = new int[] { 1 }, @@ -1299,7 +1299,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => { ModdedPlayer.Stats.spellIncreasedDmg.Multiply(1.35f); ModdedPlayer.Stats.spellCost.Multiply(1.7f); }, + onApply = () => { ModdedPlayer.Stats.spellDamageMult.Multiply(1.35f); ModdedPlayer.Stats.spellCost.Multiply(1.7f); }, category = PerkCategory.MagicOffense, unlockPath = new int[] { 15, 55 }, @@ -1580,7 +1580,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.spellIncreasedDmg.valueAdditive *= 1.7f, + onApply = () => ModdedPlayer.Stats.spellDamageMult.valueAdditive *= 1.7f, category = PerkCategory.MagicOffense, unlockPath = new int[] { 88 }, @@ -1902,8 +1902,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => StatActions.AddMagicFind(0.13f), - + onApply = () => ModdedPlayer.Stats.magicFind_quantity.Add(0.1f), category = PerkCategory.Utility, unlockPath = new int[] { -1 }, levelReq = 5, @@ -1911,14 +1910,14 @@ public static void FillPerkList() scale = 1f, posX = -0.75f, posY = -1.1f, - name = Translations.PerkDatabase_217, - originalDescription = Translations.PerkDatabase_218("13%"), + name = "Loot Quantity", + originalDescription = "Increases the quantity of loot by 10%", textureVariation = 0, stackable = false, }; new Perk() { - onApply = () => StatActions.AddMagicFind(0.15f), + onApply = () => ModdedPlayer.Stats.magicFind_quality.Add(0.1f), category = PerkCategory.Utility, unlockPath = new int[] { 109 }, @@ -1927,8 +1926,8 @@ public static void FillPerkList() scale = 1f, posX = -1.25f, posY = -1.85f, - name = Translations.PerkDatabase_219, - originalDescription = Translations.PerkDatabase_220("15%"), + name = "Looting Quality", + originalDescription = "Increases the quality of loot by 10%", textureVariation = 0, stackable = false, }; @@ -1982,7 +1981,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.maxHealthMult.valueAdditive += 0.20f, + onApply = () => ModdedPlayer.Stats.maxLifeMult.valueAdditive += 0.20f, category = PerkCategory.Defense, unlockPath = new int[] { 29 }, @@ -2325,7 +2324,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => { ModdedPlayer.Stats.attackSpeed.Substract(0.3f); ModdedPlayer.Stats.meleeIncreasedDmg.Multiply(2); }, + onApply = () => { ModdedPlayer.Stats.attackSpeed.Sub(0.3f); ModdedPlayer.Stats.meleeIncreasedDmg.Multiply(2); }, category = PerkCategory.MeleeOffense, texture = null, unlockPath = new int[] { 89 }, @@ -2391,7 +2390,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => { ModdedPlayer.Stats.rangedIncreasedDmg.valueAdditive += 2.0f; ModdedPlayer.Stats.movementSpeed.valueMultiplicative *= 0.75f; ModdedPlayer.Stats.jumpPower.valueAdditive -= 0.65f; }, + onApply = () => { ModdedPlayer.Stats.rangedIncreasedDmg.valueAdditive += 2.0f; ModdedPlayer.Stats.mOVEMENT_SPEED.valueMultiplicative *= 0.75f; ModdedPlayer.Stats.jumpPower.valueAdditive -= 0.65f; }, category = PerkCategory.RangedOffense, texture = null, unlockPath = new int[] { 89 }, @@ -2411,7 +2410,7 @@ public static void FillPerkList() ModdedPlayer.Stats.projectileSize.Add(0.5f); ModdedPlayer.Stats.projectileSpeed.Add(0.5f); ModdedPlayer.Stats.critDamage.Add(0.5f); - ModdedPlayer.Stats.attackSpeed.Substract(0.2f); ModdedPlayer.Stats.spellCost.Multiply(3); }, + ModdedPlayer.Stats.attackSpeed.Sub(0.2f); ModdedPlayer.Stats.spellCost.Multiply(3); }, category = PerkCategory.RangedOffense, texture = null, unlockPath = new int[] { 89 }, @@ -2428,7 +2427,7 @@ public static void FillPerkList() new Perk() { - onApply = () => { ModdedPlayer.Stats.maxEnergyMult.Multiply(0.65f); ModdedPlayer.Stats.staminaPerSecRate.Multiply(0.65f); ModdedPlayer.Stats.spellIncreasedDmg.Multiply(2); }, + onApply = () => { ModdedPlayer.Stats.maxEnergyMult.Multiply(0.65f); ModdedPlayer.Stats.staminaRegenBase.Multiply(0.65f); ModdedPlayer.Stats.spellDamageMult.Multiply(2); }, category = PerkCategory.MagicOffense, texture = null, unlockPath = new int[] { 89 }, @@ -2460,7 +2459,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => { ModdedPlayer.Stats.meleeFlatDmg.valueMultiplicative *= 0.5f; ModdedPlayer.Stats.rangedFlatDmg.valueMultiplicative *= 0.5f; ModdedPlayer.Stats.spellIncreasedDmg.Add(4f); }, + onApply = () => { ModdedPlayer.Stats.baseMeleeDamage.valueMultiplicative *= 0.5f; ModdedPlayer.Stats.baseRangedDamage.valueMultiplicative *= 0.5f; ModdedPlayer.Stats.spellDamageMult.Add(4f); }, category = PerkCategory.MagicOffense, texture = null, unlockPath = new int[] { 89 }, @@ -2622,7 +2621,7 @@ public static void FillPerkList() else new Perk() { - onApply = () => ModdedPlayer.Stats.magicFind.Add(0.15f), + onApply = () => ModdedPlayer.Stats.magicFind_quantity.Add(0.15f), category = PerkCategory.Utility, unlockPath = new int[] { 110 }, levelReq = 25, @@ -2751,7 +2750,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => { ModdedPlayer.Stats.energyOnHit.valueAdditive += 1f; ModdedPlayer.Stats.healthOnHit.valueAdditive += 1.5f; }, + onApply = () => { ModdedPlayer.Stats.energyOnHit.valueAdditive += 1f; ModdedPlayer.Stats.lifeOnHit.valueAdditive += 1.5f; }, category = PerkCategory.Support, unlockPath = new int[] { 44, 43 }, levelReq = 47, @@ -2826,7 +2825,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.magicDamageTaken.Multiply(0.8f), + onApply = () => ModdedPlayer.Stats.damageFromElites.Multiply(0.7f), category = PerkCategory.Defense, unlockPath = new int[] { 35, 32 }, @@ -2835,8 +2834,8 @@ public static void FillPerkList() scale = 1, posX = 4f, posY = -0.75f, - name = Translations.PerkDatabase_332, - originalDescription = Translations.PerkDatabase_333("20%"), + name = "Elite Eater", + originalDescription = "Reduces damage taken from elites by 30%", textureVariation = 0, stackable = false, }; @@ -3090,17 +3089,17 @@ public static void FillPerkList() }; new Perk() { - onApply = () => StatActions.AddMagicFind(0.15f), + onApply = () => ModdedPlayer.Stats.magicFind_quality.Add(0.15f), category = PerkCategory.Utility, unlockPath = new int[] { 110 }, levelReq = 55, - cost = 2, + cost = 1, scale = 1f, posX = -1.75f, posY = -2.6f, - name = Translations.PerkDatabase_366, - originalDescription = Translations.PerkDatabase_367("15%"), + name = "Loot Quality II", + originalDescription = "Increases the quality of looted items by 15%", textureVariation = 0, stackable = false, }; @@ -3379,7 +3378,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => ModdedPlayer.Stats.spellFlatDmg.Add(2022), + onApply = () => ModdedPlayer.Stats.baseSpellDamage.Add(2022), category = PerkCategory.MagicOffense, unlockPath = new int[] { 89 }, @@ -3461,8 +3460,8 @@ public static void FillPerkList() ModdedPlayer.Stats.thornsDmgMult.Multiply(3f); ModdedPlayer.Stats.thornsArmorPiercing.Add(3f); ModdedPlayer.Stats.allDamageTaken.Multiply(0.95f); - ModdedPlayer.Stats.meleeFlatDmg.Multiply(0.8f); - ModdedPlayer.Stats.rangedFlatDmg.Multiply(0.8f); + ModdedPlayer.Stats.baseMeleeDamage.Multiply(0.8f); + ModdedPlayer.Stats.baseRangedDamage.Multiply(0.8f); }, category = PerkCategory.Defense, unlockPath = new int[] { 89 }, @@ -3660,7 +3659,7 @@ public static void FillPerkList() { onApply = () => { - ModdedPlayer.Stats.spell_fireboltEnergyCost.Substract(8); + ModdedPlayer.Stats.spell_fireboltEnergyCost.Sub(8); }, category = PerkCategory.MagicOffense, unlockPath = new int[] { 212 }, @@ -3916,7 +3915,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => { ModdedPlayer.Stats.attackSpeed.Substract(0.1f); ModdedPlayer.Stats.allDamage.Add(0.01f); }, + onApply = () => { ModdedPlayer.Stats.attackSpeed.Sub(0.1f); ModdedPlayer.Stats.allDamage.Add(0.01f); }, canBuy = () => ModdedPlayer.Stats.attackSpeed.Value > 1.1f, category = PerkCategory.MeleeOffense, unlockPath = new int[] { 9 }, @@ -3933,7 +3932,7 @@ public static void FillPerkList() }; new Perk() { - onApply = () => { ModdedPlayer.Stats.projectileSpeed.Substract(0.1f); ModdedPlayer.Stats.critDamage.Add(0.1f); }, + onApply = () => { ModdedPlayer.Stats.projectileSpeed.Sub(0.1f); ModdedPlayer.Stats.critDamage.Add(0.1f); }, canBuy = () => ModdedPlayer.Stats.projectileSpeed.Value > 1.1f, category = PerkCategory.RangedOffense, unlockPath = new int[] { 152 }, diff --git a/Player/PlayerUtils.cs b/Player/PlayerUtils.cs index 10e1e36..43704c5 100644 --- a/Player/PlayerUtils.cs +++ b/Player/PlayerUtils.cs @@ -12,13 +12,13 @@ internal static float GetPlayerMeleeDamageRating() float atkSpeed = 1; if (equippedWeapon != null) { - if (PlayerInventoryMod.customWeapons.ContainsKey(equippedWeapon.weaponModel)) + if (PlayerInventoryMod.customWeapons.ContainsKey(equippedWeapon.subtype)) { - var cw = PlayerInventoryMod.customWeapons[equippedWeapon.weaponModel]; + var cw = PlayerInventoryMod.customWeapons[equippedWeapon.subtype]; dmg = cw.damage; } } - float dps = dmg + ModdedPlayer.Stats.meleeFlatDmg; + float dps = dmg + ModdedPlayer.Stats.baseMeleeDamage; dps *= ModdedPlayer.Stats.MeleeDamageMult; dps *= atkSpeed * ModdedPlayer.Stats.attackSpeed; dps *= 1 + (ModdedPlayer.Stats.critChance * ModdedPlayer.Stats.critDamage); @@ -33,14 +33,14 @@ internal static float GetPlayerRangedDamageRating() float atkSpeed = 1; if (equippedWeapon != null) { - greatbow = equippedWeapon.weaponModel == BaseItem.WeaponModelType.Greatbow; + greatbow = equippedWeapon.subtype == ItemDefinition.ItemSubtype.Greatbow; if (greatbow) { dmg += 140; atkSpeed = 0.2f; } } - float dps = dmg + ModdedPlayer.Stats.rangedFlatDmg; + float dps = dmg + ModdedPlayer.Stats.baseRangedDamage; dps *= ModdedPlayer.Stats.RangedDamageMult; if (greatbow) dps *= 1.75f; @@ -51,7 +51,7 @@ internal static float GetPlayerRangedDamageRating() } internal static float GetPlayerSpellDamageRating() { - float dps = ModdedPlayer.Stats.spellFlatDmg +1; + float dps = ModdedPlayer.Stats.baseSpellDamage +1; dps *= ModdedPlayer.Stats.SpellDamageMult; return dps; diff --git a/Player/RCoroutines.cs b/Player/RCoroutines.cs index 1cb5374..1260d7e 100644 --- a/Player/RCoroutines.cs +++ b/Player/RCoroutines.cs @@ -1,4 +1,7 @@ using System.Collections; + +using ChampionsOfForest.Items; + using TheForest.Items.Inventory; using TheForest.Items.World; using TheForest.Utils; @@ -27,12 +30,12 @@ private void Start() // } //} - public IEnumerator AsyncSendRandomItemDrops(int count, EnemyProgression.Enemy type, long bounty,ModSettings.Difficulty difficulty, Vector3 position) + public IEnumerator AsyncSendRandomItemDrops(int count, EnemyProgression.Enemy type, long bounty,ModSettings.GameDifficulty difficulty, Vector3 position) { for (int i = 0; i < count; i++) { - Item randomItem = ItemDataBase.GetRandomItem(bounty, type, difficulty, position); - if (randomItem.Rarity >= ModSettings.LootFilterMinRarity || randomItem.type == BaseItem.ItemType.Material || randomItem.type == BaseItem.ItemType.Other) + Item randomItem = ItemDatabase.GetRandomItem(bounty, type, difficulty, position); + if (randomItem.type == ItemDefinition.ItemType.Material || randomItem.type == ItemDefinition.ItemType.Other) { yield return null; Network.NetworkManager.SendItemDrop(randomItem, position + Vector3.up * (2f + i / 10) + Random.Range(-1, 1) * Vector3.forward + Random.Range(-1, 1) * Vector3.right, ItemPickUp.DropSource.EnemyOnDeath); @@ -102,21 +105,11 @@ public IEnumerator AsyncCrossbowFire(int _ammoId, GameObject _ammoSpawnPosGo, Ga gameObject.transform.localScale *= 2f; force *= 2f; component.useGravity = false; - if (ModReferences.bloodInfusedMaterial == null) - { - ModReferences.bloodInfusedMaterial = BuilderCore.Core.CreateMaterial(new BuilderCore.BuildingData() - { - EmissionColor = new Color(0.6f, 0.1f, 0), - renderMode = BuilderCore.BuildingData.RenderMode.Fade, - MainColor = Color.red, - Metalic = 1f, - Smoothness = 0.9f, - }); - } + //gameObject.GetComponent().material = bloodInfusedMaterial; var trail = gameObject.AddComponent(); trail.widthCurve = new AnimationCurve(new Keyframe[] { new Keyframe(0f, 1f, 0f, 0f), new Keyframe(0.5f, 1f, 0f, 0f), new Keyframe(1f, 0.006248474f, 0f, 0f), }); - trail.material = ModReferences.bloodInfusedMaterial; + trail.material = ModReferences.BloodMaterial; trail.widthMultiplier = 0.55f; trail.time = 1.25f; } @@ -186,20 +179,10 @@ public IEnumerator AsyncRangedFire(PlayerInventory inv, float _weaponChargeStart { forceMult *= 1.1f; proj_rb.useGravity = false; - if (ModReferences.bloodInfusedMaterial == null) - { - ModReferences.bloodInfusedMaterial = BuilderCore.Core.CreateMaterial(new BuilderCore.BuildingData() - { - EmissionColor = new Color(0.6f, 0.1f, 0), - renderMode = BuilderCore.BuildingData.RenderMode.Opaque, - MainColor = Color.red, - Metalic = 1f, - Smoothness = 0.9f, - }); - } + var trail = projectileObject.AddComponent(); trail.widthCurve = new AnimationCurve(new Keyframe[] { new Keyframe(0f, 1f, 0f, 0f), new Keyframe(0.5f, 1f, 0f, 0f), new Keyframe(1f, 0.006248474f, 0f, 0f), }); - trail.material = ModReferences.bloodInfusedMaterial; + trail.material = ModReferences.BloodMaterial; trail.widthMultiplier = 0.45f; trail.time = 1.25f; trail.autodestruct = false; diff --git a/Player/Spells/ActiveSpellManager.cs b/Player/Spells/ActiveSpellManager.cs index 5921546..6fb5ab2 100644 --- a/Player/Spells/ActiveSpellManager.cs +++ b/Player/Spells/ActiveSpellManager.cs @@ -162,7 +162,7 @@ IEnumerator DealContinousDamage() } IEnumerator DealDamage() { - float dmg = 5 + ModdedPlayer.Stats.spellFlatDmg * ModdedPlayer.Stats.spell_snowstormDmgScaling; + float dmg = 5 + ModdedPlayer.Stats.baseSpellDamage * ModdedPlayer.Stats.spell_snowstormDmgScaling; dmg *= ModdedPlayer.Stats.SpellDamageMult; float crit = ModdedPlayer.Stats.RandomCritDamage; dmg *= crit; @@ -182,8 +182,8 @@ IEnumerator DealDamage() var phe = PlayerHitEnemy.Create(GlobalTargets.OnlyServer); phe.Target = entity; - phe.getAttackerType = DamageMath.SILENTattackerTypeMagic; - phe.Hit = DamageMath.GetSendableDamage(dmg); + phe.getAttackerType = DamageUtils.SILENTattackerTypeMagic; + phe.Hit = DamageUtils.GetSendableDamage(dmg); phe.Send(); if (onHitEffectProcs < 6) @@ -277,7 +277,7 @@ private IEnumerator CastAsync(int count) var posOffset = pos; if (i > 0) posOffset += 0.5f * right * (((i - 1) % 3) - 1); - float damage = ModdedPlayer.Stats.spellFlatDmg * ModdedPlayer.Stats.spell_fireboltDamageScaling + 27f + ModdedPlayer.instance.FurySwipesDmg; + float damage = ModdedPlayer.Stats.baseSpellDamage * ModdedPlayer.Stats.spell_fireboltDamageScaling + 27f + ModdedPlayer.instance.FurySwipesDmg; damage = damage * ModdedPlayer.Stats.SpellDamageMult * (1.1f + ModdedPlayer.Stats.fireDamage); damage = damage * ModdedPlayer.Stats.RandomCritDamage; //if (i > 0) @@ -485,14 +485,14 @@ void OnTriggerEnter(Collider other) } var phe = PlayerHitEnemy.Create(GlobalTargets.OnlyServer); phe.Target = entity; - phe.getAttackerType = DamageMath.SILENTattackerTypeMagic; - phe.Hit = DamageMath.GetSendableDamage(dmgOutput); + phe.getAttackerType = DamageUtils.SILENTattackerTypeMagic; + phe.Hit = DamageUtils.GetSendableDamage(dmgOutput); ModdedPlayer.instance.OnHitEffectsClient(entity, dmgOutput); if (crit > 1) { int myID = 3000 + ModReferences.Players.IndexOf(LocalPlayer.GameObject); - float fireDmg = 1 + ModdedPlayer.Stats.spellFlatDmg / 3; + float fireDmg = 1 + ModdedPlayer.Stats.baseSpellDamage / 3; fireDmg *= ModdedPlayer.Stats.TotalMagicDamageMultiplier; fireDmg *= ModdedPlayer.Stats.fireDamage + 1; using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) @@ -531,7 +531,7 @@ void OnTriggerEnter(Collider other) if (ModdedPlayer.Stats.perk_fireDmgIncreaseOnHit) { //int myID = 3000 + ModReferences.Players.IndexOf(LocalPlayer.GameObject); - float fireDmg = 1 + ModdedPlayer.Stats.spellFlatDmg / 3; + float fireDmg = 1 + ModdedPlayer.Stats.baseSpellDamage / 3; fireDmg *= ModdedPlayer.Stats.TotalMagicDamageMultiplier; fireDmg *= ModdedPlayer.Stats.fireDamage + 1; progression.FireDebuff(3000, fireDmg, 14); diff --git a/Player/Spells/SpellActions.cs b/Player/Spells/SpellActions.cs index c5f9648..2ba2018 100644 --- a/Player/Spells/SpellActions.cs +++ b/Player/Spells/SpellActions.cs @@ -60,7 +60,7 @@ public static void DoBlink() { if (hit.transform.CompareTag("enemyCollide")) { - float dmg = ModdedPlayer.Stats.spell_blinkDamage + ModdedPlayer.Stats.spellFlatDmg* ModdedPlayer.Stats.spell_blinkDamageScaling; + float dmg = ModdedPlayer.Stats.spell_blinkDamage + ModdedPlayer.Stats.baseSpellDamage* ModdedPlayer.Stats.spell_blinkDamageScaling; dmg *= ModdedPlayer.Stats.TotalMagicDamageMultiplier; if (GameSetup.IsMpClient) { @@ -72,8 +72,8 @@ public static void DoBlink() { PlayerHitEnemy playerHitEnemy = PlayerHitEnemy.Create(enemyEntity); playerHitEnemy.hitFallDown = true; - playerHitEnemy.getAttackerType = DamageMath.CONVERTEDFLOATattackerType; - playerHitEnemy.Hit = DamageMath.GetSendableDamage(dmg); + playerHitEnemy.getAttackerType = DamageUtils.CONVERTEDFLOATattackerType; + playerHitEnemy.Hit = DamageUtils.GetSendableDamage(dmg); playerHitEnemy.Send(); } } @@ -95,7 +95,7 @@ public static void DoBlink() { Effects.Sound_Effects.GlobalSFX.Play(Effects.Sound_Effects.GlobalSFX.SFX.Boom); var raycastHitExplosion = Physics.OverlapSphere(blinkPoint, (blinkPoint - t.position).magnitude / 4f); - float dmg = ModdedPlayer.Stats.spell_blinkDamage + LocalPlayer.Rigidbody.velocity.magnitude * ModdedPlayer.Stats.spellFlatDmg * ModdedPlayer.Stats.spell_blinkDamageScaling/7f; + float dmg = ModdedPlayer.Stats.spell_blinkDamage + LocalPlayer.Rigidbody.velocity.magnitude * ModdedPlayer.Stats.baseSpellDamage * ModdedPlayer.Stats.spell_blinkDamageScaling/7f; dmg *= ModdedPlayer.Stats.TotalMagicDamageMultiplier * ModdedPlayer.Stats.RandomCritDamage; foreach (var hitCollider in raycastHitExplosion) { @@ -111,8 +111,8 @@ public static void DoBlink() { PlayerHitEnemy playerHitEnemy = PlayerHitEnemy.Create(enemyEntity); playerHitEnemy.hitFallDown = true; - playerHitEnemy.getAttackerType = DamageMath.CONVERTEDFLOATattackerType; - playerHitEnemy.Hit = DamageMath.GetSendableDamage(dmg); + playerHitEnemy.getAttackerType = DamageUtils.CONVERTEDFLOATattackerType; + playerHitEnemy.Hit = DamageUtils.GetSendableDamage(dmg); playerHitEnemy.Send(); } } @@ -158,8 +158,8 @@ public static void CreateHealingDome() { Vector3 pos = LocalPlayer.Transform.position; float radius = 14f; - float healing = (ModdedPlayer.Stats.healthRecoveryPerSecond * ModdedPlayer.Stats.healthRecoveryPerSecond * 10 + 43.5f)*ModdedPlayer.Stats.allRecoveryMult; - healing += ModdedPlayer.Stats.spellFlatDmg * ModdedPlayer.Stats.SpellDamageMult * 0.1f; + float healing = (ModdedPlayer.Stats.lifeRegenBase * ModdedPlayer.Stats.lifeRegenBase * 10 + 43.5f)*ModdedPlayer.Stats.allRecoveryMult; + healing += ModdedPlayer.Stats.baseSpellDamage * ModdedPlayer.Stats.SpellDamageMult * 0.1f; using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) { using (System.IO.BinaryWriter w = new System.IO.BinaryWriter(answerStream)) @@ -187,12 +187,12 @@ public static void CreateHealingDome() public static void BUFF_MultMS(float f) { - ModdedPlayer.Stats.movementSpeed.Multiply(f); + ModdedPlayer.Stats.mOVEMENT_SPEED.Multiply(f); } public static void BUFF_DivideMS(float f) { - ModdedPlayer.Stats.movementSpeed.Divide(f); + ModdedPlayer.Stats.mOVEMENT_SPEED.Divide(f); } public static void BUFF_MultAS(float f) @@ -209,13 +209,13 @@ public static void BUFF_DivideAS(float f) public static void CastFlare() { Vector3 dir = LocalPlayer.Transform.position; - float dmg = ModdedPlayer.Stats.spell_flareDamage + ModdedPlayer.Stats.spellFlatDmg *ModdedPlayer.Stats.spell_flareDamageScaling; + float dmg = ModdedPlayer.Stats.spell_flareDamage + ModdedPlayer.Stats.baseSpellDamage *ModdedPlayer.Stats.spell_flareDamageScaling; dmg *= ModdedPlayer.Stats.TotalMagicDamageMultiplier ; float slow = ModdedPlayer.Stats.spell_flareSlow; float boost = ModdedPlayer.Stats.spell_flareBoost; float duration = ModdedPlayer.Stats.spell_flareDuration; float radius = ModdedPlayer.Stats.spell_flareRadius; - float Healing = ModdedPlayer.Stats.spell_flareHeal + ModdedPlayer.Stats.spellFlatDmg / 20 + (ModdedPlayer.Stats.healthRecoveryPerSecond*2) * ModdedPlayer.Stats.healthPerSecRate; + float Healing = ModdedPlayer.Stats.spell_flareHeal + ModdedPlayer.Stats.baseSpellDamage / 20 + (ModdedPlayer.Stats.lifeRegenBase*2) * ModdedPlayer.Stats.lifeRegenMult; Healing *= ModdedPlayer.Stats.TotalMagicDamageMultiplier; using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) { @@ -276,7 +276,7 @@ public static void BlackHoleAim() public static void CreatePlayerBlackHole() { - float damage = (ModdedPlayer.Stats.spell_blackhole_damage + ModdedPlayer.Stats.spellFlatDmg * ModdedPlayer.Stats.spell_blackhole_damageScaling) * ModdedPlayer.Stats.TotalMagicDamageMultiplier; + float damage = (ModdedPlayer.Stats.spell_blackhole_damage + ModdedPlayer.Stats.baseSpellDamage * ModdedPlayer.Stats.spell_blackhole_damageScaling) * ModdedPlayer.Stats.TotalMagicDamageMultiplier; Transform t = Camera.main.transform; Vector3 point = Vector3.zero; @@ -355,9 +355,9 @@ public static void CallbackSparkOfLightAfterDarkness(Vector3 pos) public static void CastSustainShieldActive() { - float max = ModdedPlayer.Stats.spell_shieldMax + ModdedPlayer.Stats.spellFlatDmg; + float max = ModdedPlayer.Stats.spell_shieldMax + ModdedPlayer.Stats.baseSpellDamage; max *= ModdedPlayer.Stats.TotalMagicDamageMultiplier; - float gain = ModdedPlayer.Stats.spell_shieldPerSecond + ModdedPlayer.Stats.spellFlatDmg / 35; + float gain = ModdedPlayer.Stats.spell_shieldPerSecond + ModdedPlayer.Stats.baseSpellDamage / 35; gain *= ModdedPlayer.Stats.TotalMagicDamageMultiplier; ModdedPlayer.instance.damageAbsorbAmounts[1] = Mathf.Clamp(ModdedPlayer.instance.damageAbsorbAmounts[1] + Time.deltaTime * gain, 0, max); ShieldCastTime = Time.time; @@ -374,7 +374,7 @@ public static void CastSustainShieldPassive(bool on) { if (ShieldCastTime + ModdedPlayer.Stats.spell_shieldPersistanceLifetime < Time.time) { - float loss = Time.deltaTime * (ModdedPlayer.Stats.spell_shieldPerSecond + ModdedPlayer.Stats.spellFlatDmg / 5) * 5 * ModdedPlayer.Stats.spellFlatDmg; + float loss = Time.deltaTime * (ModdedPlayer.Stats.spell_shieldPerSecond + ModdedPlayer.Stats.baseSpellDamage / 5) * 5 * ModdedPlayer.Stats.baseSpellDamage; ModdedPlayer.instance.damageAbsorbAmounts[1] = Mathf.Max(0, ModdedPlayer.instance.damageAbsorbAmounts[1] - loss); } } @@ -573,7 +573,7 @@ public static void CastMagicArrow() } public static void CastMagicArrow(Vector3 pos, Vector3 dir) { - float damage = 55 + ModdedPlayer.Stats.spellFlatDmg * ModdedPlayer.Stats.spell_magicArrowDamageScaling + ModdedPlayer.Stats.rangedFlatDmg/ 2; + float damage = 55 + ModdedPlayer.Stats.baseSpellDamage * ModdedPlayer.Stats.spell_magicArrowDamageScaling + ModdedPlayer.Stats.baseRangedDamage/ 2; damage = damage * ModdedPlayer.Stats.TotalMagicDamageMultiplier * 2; if (ModdedPlayer.Stats.spell_magicArrowCrit) damage *= ModdedPlayer.Stats.RandomCritDamage; @@ -637,7 +637,7 @@ public static void SnapFreezeAim() public static void CastSnapFreeze() { Vector3 pos = LocalPlayer.Transform.position; - float dmg = 23 + ModdedPlayer.Stats.spellFlatDmg * ModdedPlayer.Stats.spell_snapDamageScaling; + float dmg = 23 + ModdedPlayer.Stats.baseSpellDamage * ModdedPlayer.Stats.spell_snapDamageScaling; dmg *= ModdedPlayer.Stats.TotalMagicDamageMultiplier; if (GameSetup.IsSinglePlayer) { @@ -671,7 +671,7 @@ public static void CastSnapFreeze() public static void CastBallLightning(Vector3 pos, Vector3 speed) { - float dmg = ModdedPlayer.Stats.spell_ballLightning_Damage + (ModdedPlayer.Stats.spell_ballLightning_DamageScaling * ModdedPlayer.Stats.spellFlatDmg); + float dmg = ModdedPlayer.Stats.spell_ballLightning_Damage + (ModdedPlayer.Stats.spell_ballLightning_DamageScaling * ModdedPlayer.Stats.baseSpellDamage); dmg *= ModdedPlayer.Stats.TotalMagicDamageMultiplier; if (ModdedPlayer.Stats.spell_ballLightning_Crit) dmg *= ModdedPlayer.Stats.RandomCritDamage; @@ -944,11 +944,11 @@ public static void DoParry(Vector3 parryPos) if (ModdedPlayer.Stats.spell_parry) { BuffDB.AddBuff(6, 61, 1, ModdedPlayer.Stats.spell_parryBuffDuration); - float dmg = ModdedPlayer.Stats.spell_parryDamage + ModdedPlayer.Stats.spellFlatDmg; + float dmg = ModdedPlayer.Stats.spell_parryDamage + ModdedPlayer.Stats.baseSpellDamage; dmg *= ModdedPlayer.Stats.TotalMagicDamageMultiplier *ModdedPlayer.Stats.spell_parryDamageScaling; - float heal = ModdedPlayer.Stats.spell_parryHeal + ModdedPlayer.Stats.spellFlatDmg / 6 + ModdedPlayer.Stats.healthRecoveryPerSecond + ModdedPlayer.Stats.healthOnHit * 3; - heal *= ModdedPlayer.Stats.allRecoveryMult * (1 + ModdedPlayer.Stats.healthPerSecRate); + float heal = ModdedPlayer.Stats.spell_parryHeal + ModdedPlayer.Stats.baseSpellDamage / 6 + ModdedPlayer.Stats.lifeRegenBase + ModdedPlayer.Stats.lifeOnHit * 3; + heal *= ModdedPlayer.Stats.allRecoveryMult * (1 + ModdedPlayer.Stats.lifeRegenMult); LocalPlayer.Stats.HealthTarget += heal; ParrySound.Play(parryPos); float energy = (ModdedPlayer.Stats.spell_parryEnergy + ModdedPlayer.Stats.energyOnHit * 10) * ModdedPlayer.Stats.TotalEnergyRecoveryMultiplier + + ModdedPlayer.Stats.TotalMaxEnergy / 5.5f; @@ -1025,7 +1025,7 @@ public static void CastCataclysm() { Vector3 pos = LocalPlayer.Transform.position; BuffDB.AddBuff(1, 66, 0.025f, 2f); - float dmg = ModdedPlayer.Stats.spell_cataclysmDamage + ModdedPlayer.Stats.spellFlatDmg * ModdedPlayer.Stats.spell_cataclysmDamageScaling; + float dmg = ModdedPlayer.Stats.spell_cataclysmDamage + ModdedPlayer.Stats.baseSpellDamage * ModdedPlayer.Stats.spell_cataclysmDamageScaling; dmg *= ModdedPlayer.Stats.TotalMagicDamageMultiplier * ModdedPlayer.Stats.fireDamage; using (System.IO.MemoryStream answerStream = new System.IO.MemoryStream()) { @@ -1060,7 +1060,7 @@ public static void CastBloodInfArr() takenHP = LocalPlayer.Stats.Health - 5; LocalPlayer.Stats.Health -= takenHP; LocalPlayer.Stats.HealthTarget -= takenHP; - ModdedPlayer.Stats.spell_bia_AccumulatedDamage.valueAdditive = (takenHP * ModdedPlayer.Stats.spell_bia_HealthDmMult + ModdedPlayer.Stats.spell_bia_SpellDmMult * ModdedPlayer.Stats.spellFlatDmg) * ModdedPlayer.Stats.TotalMagicDamageMultiplier; + ModdedPlayer.Stats.spell_bia_AccumulatedDamage.valueAdditive = (takenHP * ModdedPlayer.Stats.spell_bia_HealthDmMult + ModdedPlayer.Stats.spell_bia_SpellDmMult * ModdedPlayer.Stats.baseSpellDamage) * ModdedPlayer.Stats.TotalMagicDamageMultiplier; if (ModdedPlayer.Stats.spell_bia_TripleDmg) { ModdedPlayer.Stats.spell_bia_AccumulatedDamage.valueAdditive *= 3; @@ -1069,7 +1069,7 @@ public static void CastBloodInfArr() if (ModdedPlayer.Stats.i_HazardCrown) ModdedPlayer.Stats.i_HazardCrownBonus.valueAdditive = 5; Effects.Sound_Effects.GlobalSFX.Play(Effects.Sound_Effects.GlobalSFX.SFX.BloodInfusedArrow); - NetworkManager.SendPlayerHitmarker(LocalPlayer.Transform.position + Vector3.up, (int)takenHP); + NetworkManager.SendPlayerHitmarker(LocalPlayer.Transform.position + Vector3.up, takenHP); } #endregion Blood Infused Arrow @@ -1103,7 +1103,7 @@ public static void RipAFatOne() back.y -= 1.5f; back.Normalize(); LocalPlayer.Rigidbody.AddForce(-back * 5, ForceMode.VelocityChange); - float dmg = (ModdedPlayer.Stats.spellFlatDmg * ModdedPlayer.Stats.spell_fartDamageScaling + fartBaseDmg) * ModdedPlayer.Stats.TotalMagicDamageMultiplier; + float dmg = (ModdedPlayer.Stats.baseSpellDamage * ModdedPlayer.Stats.spell_fartDamageScaling + fartBaseDmg) * ModdedPlayer.Stats.TotalMagicDamageMultiplier; if (GameSetup.IsMultiplayer) { System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); @@ -1134,7 +1134,7 @@ public static void RipAFatOne() } else { - float dmg = (ModdedPlayer.Stats.spellFlatDmg + fartBaseDmg) * ModdedPlayer.Stats.TotalMagicDamageMultiplier; + float dmg = (ModdedPlayer.Stats.baseSpellDamage + fartBaseDmg) * ModdedPlayer.Stats.TotalMagicDamageMultiplier; BuffDB.AddBuff(1, 96, 0.4f, 7.175f); TheFartCreator.FartWarmup(fartRadius, dmg, fartKnockback, fartSlow, fartDebuffDuration); } diff --git a/Player/Spells/SpellDataBase.cs b/Player/Spells/SpellDataBase.cs index 7fa37fb..42bd8e4 100644 --- a/Player/Spells/SpellDataBase.cs +++ b/Player/Spells/SpellDataBase.cs @@ -143,7 +143,7 @@ public static void FillSpells() ModdedPlayer.Stats.attackSpeed.valueMultiplicative /= 1 + f * ModdedPlayer.Stats.spell_frenzyAtkSpeed; ModdedPlayer.Stats.allDamage.valueMultiplicative /= 1 + f * ModdedPlayer.Stats.spell_frenzyDmg; if (ModdedPlayer.Stats.spell_frenzyMS) - ModdedPlayer.Stats.movementSpeed.valueMultiplicative /= 1 + f * 0.05f; + ModdedPlayer.Stats.mOVEMENT_SPEED.valueMultiplicative /= 1 + f * 0.05f; ModdedPlayer.Stats.spell_frenzyStacks.valueAdditive = 0; } diff --git a/Serializer.cs b/Serializer.cs index 25f946f..e1138cb 100644 --- a/Serializer.cs +++ b/Serializer.cs @@ -3,6 +3,7 @@ using System.IO; using System.Threading; +using ChampionsOfForest.Items; using ChampionsOfForest.Player; using TheForest.Save; @@ -32,7 +33,7 @@ private static void CreateInstance() private void OnApplicationQuit() { - EmergencySave(); + ForceSave(); } private void DoLoad(string path, out float HealthPercentage, out Dictionary ExtraCarriedItems) @@ -51,7 +52,7 @@ private void DoLoad(string path, out float HealthPercentage, out Dictionary entity.GetState(); + + public void FindHand() + { + hand = ModReferences.FindDeepChild(gameObject.transform.root, "rightHandHeld"); + } + public void UpdatePlayerLevel() + { + var playerNameComponent = gameObject.GetComponentInChildren(); + playerNameComponent.SendMessage("SetNameWithLevel", level); + } + } + + private Dictionary players_lookup_name = new Dictionary(); + private Dictionary players_lookup_gameobject = new Dictionary(); + private Dictionary players_lookup_entity = new Dictionary(); + + public ModdedPlayerState[] All => players_lookup_name.Values.ToArray(); + + public ModdedPlayerState GetPlayerState(string playerID) + { + if (players_lookup_name.TryGetValue(playerID, out var state)) + { + return state; + } + else + { + return null; + } + } + public ModdedPlayerState GetPlayerState(GameObject go) + { + if (players_lookup_gameobject.TryGetValue(go, out var state)) + { + return state; + } + else + { + return null; + } + } + + public ModdedPlayerState GetPlayerState(BoltEntity entity) + { + if (players_lookup_entity.TryGetValue(entity, out var state)) + { + return state; + } + else + { + return null; + } + } + + public bool AddPlayerState(ModdedPlayerState state) + { + if (state.entity != null && state.gameObject != null) + { + if (state.hand == null) + state.FindHand(); + + if (players_lookup_entity.ContainsKey(state.entity)) + players_lookup_entity[state.entity] = state; + else + players_lookup_entity.Add(state.entity, state); + + if (players_lookup_gameobject.ContainsKey(state.gameObject)) + players_lookup_gameobject[state.gameObject] = state; + else + players_lookup_gameobject.Add(state.gameObject, state); + + if (players_lookup_name.ContainsKey(state.playerID)) + players_lookup_name[state.playerID] = state; + else + players_lookup_name.Add(state.playerID, state); + + return true; + } + return false; + } + public void UpdateOrAddPlayerState(GetPlayerStateParams commandparams) + { + var state = GetPlayerState(commandparams.playerID); + if (state == null || state.entity == null || state.gameObject == null) + { + var _entity = BoltNetwork.FindEntity(new Bolt.NetworkId(commandparams.entityNetworkID)); + AddPlayerState(new ModdedPlayerState() + { + level = commandparams.level, + maxHealth = (int)commandparams.maxHealth, + health = (int)commandparams.health, + playerID = commandparams.playerID, + entity = _entity, + gameObject = _entity.gameObject, + }); + } + else + { + //avoid calling FindHand() if not needed + state.level = commandparams.level; + state.maxHealth = commandparams.maxHealth; + state.health = commandparams.health; + state.playerID = commandparams.playerID; + } + } + } +} \ No newline at end of file diff --git a/Translations.cs b/Translations.cs index 7e756b1..b559e15 100644 --- a/Translations.cs +++ b/Translations.cs @@ -180,10 +180,6 @@ public partial class Translations public string _MainMenu_Guide_17 = "Armor"; public static string MainMenu_Guide_18(params object[] objects) => string.Format(instance._MainMenu_Guide_18, objects); public string _MainMenu_Guide_18 = "Armor provides physical damage reduction.\nPhysical damage reduction from armor is equal to {0}"; - public static string MainMenu_Guide_19 => instance._MainMenu_Guide_19; - public string _MainMenu_Guide_19 = "Magic Resistance"; - public static string MainMenu_Guide_20 => instance._MainMenu_Guide_20; - public string _MainMenu_Guide_20 = "Magic damage reduction. Decreases damage from enemy abilities."; public static string MainMenu_Guide_21 => instance._MainMenu_Guide_21; public string _MainMenu_Guide_21 = "Dodge Chance"; public static string MainMenu_Guide_22 => instance._MainMenu_Guide_22; @@ -1703,1405 +1699,1405 @@ public partial class Translations public static string SpellDataBase_52 => instance._SpellDataBase_52; public string _SpellDataBase_52 = "Snow Storm"; - //ItemDataBase_StatDefinitions - public static string ItemDataBase_StatDefinitions_1 => instance._ItemDataBase_StatDefinitions_1; - public string _ItemDataBase_StatDefinitions_1 = "Health"; - public static string ItemDataBase_StatDefinitions_2 => instance._ItemDataBase_StatDefinitions_2; - public string _ItemDataBase_StatDefinitions_2 = "Energy"; - public static string ItemDataBase_StatDefinitions_3 => instance._ItemDataBase_StatDefinitions_3; - public string _ItemDataBase_StatDefinitions_3 = "Health/sec"; - public static string ItemDataBase_StatDefinitions_4 => instance._ItemDataBase_StatDefinitions_4; - public string _ItemDataBase_StatDefinitions_4 = "Stamina/sec"; - public static string ItemDataBase_StatDefinitions_5 => instance._ItemDataBase_StatDefinitions_5; - public string _ItemDataBase_StatDefinitions_5 = "Energy regen"; - public static string ItemDataBase_StatDefinitions_6 => instance._ItemDataBase_StatDefinitions_6; - public string _ItemDataBase_StatDefinitions_6 = "Life regen"; - public static string ItemDataBase_StatDefinitions_7 => instance._ItemDataBase_StatDefinitions_7; - public string _ItemDataBase_StatDefinitions_7 = "Critical hit chance"; - public static string ItemDataBase_StatDefinitions_8 => instance._ItemDataBase_StatDefinitions_8; - public string _ItemDataBase_StatDefinitions_8 = "Life on hit"; - public static string ItemDataBase_StatDefinitions_9 => instance._ItemDataBase_StatDefinitions_9; - public string _ItemDataBase_StatDefinitions_9 = "Dodge chance"; - public static string ItemDataBase_StatDefinitions_10 => instance._ItemDataBase_StatDefinitions_10; - public string _ItemDataBase_StatDefinitions_10 = "Magic resistance"; - public static string ItemDataBase_StatDefinitions_11 => instance._ItemDataBase_StatDefinitions_11; - public string _ItemDataBase_StatDefinitions_11 = "Experience"; - public static string ItemDataBase_StatDefinitions_12 => instance._ItemDataBase_StatDefinitions_12; - public string _ItemDataBase_StatDefinitions_12 = "Spell damage"; - public static string ItemDataBase_StatDefinitions_13 => instance._ItemDataBase_StatDefinitions_13; - public string _ItemDataBase_StatDefinitions_13 = "Melee damage"; - public static string ItemDataBase_StatDefinitions_14 => instance._ItemDataBase_StatDefinitions_14; - public string _ItemDataBase_StatDefinitions_14 = "Ranged damage"; - public static string ItemDataBase_StatDefinitions_15 => instance._ItemDataBase_StatDefinitions_15; - public string _ItemDataBase_StatDefinitions_15 = "Base spell damage"; - public static string ItemDataBase_StatDefinitions_16 => instance._ItemDataBase_StatDefinitions_16; - public string _ItemDataBase_StatDefinitions_16 = "Base melee damage"; - public static string ItemDataBase_StatDefinitions_17 => instance._ItemDataBase_StatDefinitions_17; - public string _ItemDataBase_StatDefinitions_17 = "Base ranged damage"; - public static string ItemDataBase_StatDefinitions_18 => instance._ItemDataBase_StatDefinitions_18; - public string _ItemDataBase_StatDefinitions_18 = "Energy/agility"; - public static string ItemDataBase_StatDefinitions_19 => instance._ItemDataBase_StatDefinitions_19; - public string _ItemDataBase_StatDefinitions_19 = "Health/vitality"; - public static string ItemDataBase_StatDefinitions_20 => instance._ItemDataBase_StatDefinitions_20; - public string _ItemDataBase_StatDefinitions_20 = "Spell damage/intelligence"; - public static string ItemDataBase_StatDefinitions_21 => instance._ItemDataBase_StatDefinitions_21; - public string _ItemDataBase_StatDefinitions_21 = "Melee damage/strength"; - public static string ItemDataBase_StatDefinitions_22 => instance._ItemDataBase_StatDefinitions_22; - public string _ItemDataBase_StatDefinitions_22 = "Recovery"; - public static string ItemDataBase_StatDefinitions_23 => instance._ItemDataBase_StatDefinitions_23; - public string _ItemDataBase_StatDefinitions_23 = "PERMANENT PERK POINTS"; - public static string ItemDataBase_StatDefinitions_24 => instance._ItemDataBase_StatDefinitions_24; - public string _ItemDataBase_StatDefinitions_24 = " / "; - public static string ItemDataBase_StatDefinitions_25 => instance._ItemDataBase_StatDefinitions_25; - public string _ItemDataBase_StatDefinitions_25 = "EXPERIENCE"; - public static string ItemDataBase_StatDefinitions_26 => instance._ItemDataBase_StatDefinitions_26; - public string _ItemDataBase_StatDefinitions_26 = "Weapon length"; - public static string ItemDataBase_StatDefinitions_27 => instance._ItemDataBase_StatDefinitions_27; - public string _ItemDataBase_StatDefinitions_27 = "Attack cost reduction"; - public static string ItemDataBase_StatDefinitions_28 => instance._ItemDataBase_StatDefinitions_28; - public string _ItemDataBase_StatDefinitions_28 = "Spell cost to stamina"; - public static string ItemDataBase_StatDefinitions_29 => instance._ItemDataBase_StatDefinitions_29; - public string _ItemDataBase_StatDefinitions_29 = "Energy/sec"; - public static string ItemDataBase_StatDefinitions_30 => instance._ItemDataBase_StatDefinitions_30; - public string _ItemDataBase_StatDefinitions_30 = "Ranged damage/agility"; - public static string ItemDataBase_StatDefinitions_31 => instance._ItemDataBase_StatDefinitions_31; - public string _ItemDataBase_StatDefinitions_31 = "Melee armor piercing"; - public static string ItemDataBase_StatDefinitions_32 => instance._ItemDataBase_StatDefinitions_32; - public string _ItemDataBase_StatDefinitions_32 = "Ranged armor piercing"; - public static string ItemDataBase_StatDefinitions_33 => instance._ItemDataBase_StatDefinitions_33; - public string _ItemDataBase_StatDefinitions_33 = "Armor piercing"; - public static string ItemDataBase_StatDefinitions_34 => instance._ItemDataBase_StatDefinitions_34; - public string _ItemDataBase_StatDefinitions_34 = "Refund points"; - public static string ItemDataBase_StatDefinitions_35 => instance._ItemDataBase_StatDefinitions_35; - public string _ItemDataBase_StatDefinitions_35 = "Headshot damage"; - public static string ItemDataBase_StatDefinitions_36 => instance._ItemDataBase_StatDefinitions_36; - public string _ItemDataBase_StatDefinitions_36 = "Fire damage"; - public static string ItemDataBase_StatDefinitions_37 => instance._ItemDataBase_StatDefinitions_37; - public string _ItemDataBase_StatDefinitions_37 = "Chance on hit to slow"; - public static string ItemDataBase_StatDefinitions_38 => instance._ItemDataBase_StatDefinitions_38; - public string _ItemDataBase_StatDefinitions_38 = "Chance on hit to bleed"; - public static string ItemDataBase_StatDefinitions_39 => instance._ItemDataBase_StatDefinitions_39; - public string _ItemDataBase_StatDefinitions_39 = "Chance on hit to weaken"; - public static string ItemDataBase_StatDefinitions_40 => instance._ItemDataBase_StatDefinitions_40; - public string _ItemDataBase_StatDefinitions_40 = "Dynamite & bomb damage"; - public static string ItemDataBase_StatDefinitions_41 => instance._ItemDataBase_StatDefinitions_41; - public string _ItemDataBase_StatDefinitions_41 = "Spear damage"; - public static string ItemDataBase_StatDefinitions_42 => instance._ItemDataBase_StatDefinitions_42; - public string _ItemDataBase_StatDefinitions_42 = "Extra carried Sticks"; - public static string ItemDataBase_StatDefinitions_43 => instance._ItemDataBase_StatDefinitions_43; - public string _ItemDataBase_StatDefinitions_43 = "Extra carried Rocks"; - public static string ItemDataBase_StatDefinitions_44 => instance._ItemDataBase_StatDefinitions_44; - public string _ItemDataBase_StatDefinitions_44 = "Extra carried Ropes"; - public static string ItemDataBase_StatDefinitions_45 => instance._ItemDataBase_StatDefinitions_45; - public string _ItemDataBase_StatDefinitions_45 = " Soda: "; - public static string ItemDataBase_StatDefinitions_46 => instance._ItemDataBase_StatDefinitions_46; - public string _ItemDataBase_StatDefinitions_46 = "Booze: "; - public static string ItemDataBase_StatDefinitions_47 => instance._ItemDataBase_StatDefinitions_47; - public string _ItemDataBase_StatDefinitions_47 = "Extra carried Drinks"; - public static string ItemDataBase_StatDefinitions_48 => instance._ItemDataBase_StatDefinitions_48; - public string _ItemDataBase_StatDefinitions_48 = "Extra carried Food"; - public static string ItemDataBase_StatDefinitions_49 => instance._ItemDataBase_StatDefinitions_49; - public string _ItemDataBase_StatDefinitions_49 = "Black hole radius"; - public static string ItemDataBase_StatDefinitions_50 => instance._ItemDataBase_StatDefinitions_50; - public string _ItemDataBase_StatDefinitions_50 = "Black hole lifetime"; - public static string ItemDataBase_StatDefinitions_51 => instance._ItemDataBase_StatDefinitions_51; - public string _ItemDataBase_StatDefinitions_51 = "Black hole gravitational force"; - public static string ItemDataBase_StatDefinitions_52 => instance._ItemDataBase_StatDefinitions_52; - public string _ItemDataBase_StatDefinitions_52 = "Black hole damage"; - public static string ItemDataBase_StatDefinitions_53 => instance._ItemDataBase_StatDefinitions_53; - public string _ItemDataBase_StatDefinitions_53 = "Stun on hit"; - public static string ItemDataBase_StatDefinitions_54 => instance._ItemDataBase_StatDefinitions_54; - public string _ItemDataBase_StatDefinitions_54 = "Snap freeze Duration"; - public static string ItemDataBase_StatDefinitions_55 => instance._ItemDataBase_StatDefinitions_55; - public string _ItemDataBase_StatDefinitions_55 = "Raft speed"; - public static string ItemDataBase_StatDefinitions_56 => instance._ItemDataBase_StatDefinitions_56; - public string _ItemDataBase_StatDefinitions_56 = "Empty socket"; - public static string ItemDataBase_StatDefinitions_57 => instance._ItemDataBase_StatDefinitions_57; - public string _ItemDataBase_StatDefinitions_57 = "Socket: crit chance"; - public static string ItemDataBase_StatDefinitions_58 => instance._ItemDataBase_StatDefinitions_58; - public string _ItemDataBase_StatDefinitions_58 = "Socket: agility"; - public static string ItemDataBase_StatDefinitions_59 => instance._ItemDataBase_StatDefinitions_59; - public string _ItemDataBase_StatDefinitions_59 = "Socket: movement speed"; - public static string ItemDataBase_StatDefinitions_60 => instance._ItemDataBase_StatDefinitions_60; - public string _ItemDataBase_StatDefinitions_60 = "Socket: ranged damage"; - public static string ItemDataBase_StatDefinitions_61 => instance._ItemDataBase_StatDefinitions_61; - public string _ItemDataBase_StatDefinitions_61 = "Socket: ranged armor piercing"; - public static string ItemDataBase_StatDefinitions_62 => instance._ItemDataBase_StatDefinitions_62; - public string _ItemDataBase_StatDefinitions_62 = "Socket: attack speed"; - public static string ItemDataBase_StatDefinitions_63 => instance._ItemDataBase_StatDefinitions_63; - public string _ItemDataBase_StatDefinitions_63 = "Socket: strength"; - public static string ItemDataBase_StatDefinitions_64 => instance._ItemDataBase_StatDefinitions_64; - public string _ItemDataBase_StatDefinitions_64 = "Socket: damage reduction"; - public static string ItemDataBase_StatDefinitions_65 => instance._ItemDataBase_StatDefinitions_65; - public string _ItemDataBase_StatDefinitions_65 = "Socket: melee damage"; - public static string ItemDataBase_StatDefinitions_66 => instance._ItemDataBase_StatDefinitions_66; - public string _ItemDataBase_StatDefinitions_66 = "Socket: melee armor piercing"; - public static string ItemDataBase_StatDefinitions_67 => instance._ItemDataBase_StatDefinitions_67; - public string _ItemDataBase_StatDefinitions_67 = "Socket: cooldown reduction"; - public static string ItemDataBase_StatDefinitions_68 => instance._ItemDataBase_StatDefinitions_68; - public string _ItemDataBase_StatDefinitions_68 = "Socket: intelligence"; - public static string ItemDataBase_StatDefinitions_69 => instance._ItemDataBase_StatDefinitions_69; - public string _ItemDataBase_StatDefinitions_69 = "Socket: spell cost reduction"; - public static string ItemDataBase_StatDefinitions_70 => instance._ItemDataBase_StatDefinitions_70; - public string _ItemDataBase_StatDefinitions_70 = "Socket: spell damage"; - public static string ItemDataBase_StatDefinitions_71 => instance._ItemDataBase_StatDefinitions_71; - public string _ItemDataBase_StatDefinitions_71 = "Socket: energy on hit"; - public static string ItemDataBase_StatDefinitions_72 => instance._ItemDataBase_StatDefinitions_72; - public string _ItemDataBase_StatDefinitions_72 = "Socket: experience gain"; - public static string ItemDataBase_StatDefinitions_73 => instance._ItemDataBase_StatDefinitions_73; - public string _ItemDataBase_StatDefinitions_73 = "Socket: vitality "; - public static string ItemDataBase_StatDefinitions_74 => instance._ItemDataBase_StatDefinitions_74; - public string _ItemDataBase_StatDefinitions_74 = "Socket: magic find"; - public static string ItemDataBase_StatDefinitions_75 => instance._ItemDataBase_StatDefinitions_75; - public string _ItemDataBase_StatDefinitions_75 = "Socket: all healing"; - public static string ItemDataBase_StatDefinitions_76 => instance._ItemDataBase_StatDefinitions_76; - public string _ItemDataBase_StatDefinitions_76 = "Socket: life per second"; - public static string ItemDataBase_StatDefinitions_77 => instance._ItemDataBase_StatDefinitions_77; - public string _ItemDataBase_StatDefinitions_77 = "Socket: maximum health "; - public static string ItemDataBase_StatDefinitions_78 => instance._ItemDataBase_StatDefinitions_78; - public string _ItemDataBase_StatDefinitions_78 = "Socket: armor "; - public static string ItemDataBase_StatDefinitions_79 => instance._ItemDataBase_StatDefinitions_79; - public string _ItemDataBase_StatDefinitions_79 = "Socket: Resistance to magic"; - public static string ItemDataBase_StatDefinitions_80 => instance._ItemDataBase_StatDefinitions_80; - public string _ItemDataBase_StatDefinitions_80 = "Socket: crit damage"; - public static string ItemDataBase_StatDefinitions_81 => instance._ItemDataBase_StatDefinitions_81; - public string _ItemDataBase_StatDefinitions_81 = "Socket: thorns"; + //ItemDatabase_StatDefinitions + public static string ItemDatabase_StatDefinitions_1 => instance._ItemDatabase_StatDefinitions_1; + public string _ItemDatabase_StatDefinitions_1 = "Health"; + public static string ItemDatabase_StatDefinitions_2 => instance._ItemDatabase_StatDefinitions_2; + public string _ItemDatabase_StatDefinitions_2 = "Energy"; + public static string ItemDatabase_StatDefinitions_3 => instance._ItemDatabase_StatDefinitions_3; + public string _ItemDatabase_StatDefinitions_3 = "Health/sec"; + public static string ItemDatabase_StatDefinitions_4 => instance._ItemDatabase_StatDefinitions_4; + public string _ItemDatabase_StatDefinitions_4 = "Stamina/sec"; + public static string ItemDatabase_StatDefinitions_5 => instance._ItemDatabase_StatDefinitions_5; + public string _ItemDatabase_StatDefinitions_5 = "Energy regen"; + public static string ItemDatabase_StatDefinitions_6 => instance._ItemDatabase_StatDefinitions_6; + public string _ItemDatabase_StatDefinitions_6 = "Life regen"; + public static string ItemDatabase_StatDefinitions_7 => instance._ItemDatabase_StatDefinitions_7; + public string _ItemDatabase_StatDefinitions_7 = "Critical hit chance"; + public static string ItemDatabase_StatDefinitions_8 => instance._ItemDatabase_StatDefinitions_8; + public string _ItemDatabase_StatDefinitions_8 = "Life on hit"; + public static string ItemDatabase_StatDefinitions_9 => instance._ItemDatabase_StatDefinitions_9; + public string _ItemDatabase_StatDefinitions_9 = "Dodge chance"; + public static string ItemDatabase_StatDefinitions_10 => instance._ItemDatabase_StatDefinitions_10; + public string _ItemDatabase_StatDefinitions_10 = "Magic resistance"; + public static string ItemDatabase_StatDefinitions_11 => instance._ItemDatabase_StatDefinitions_11; + public string _ItemDatabase_StatDefinitions_11 = "Experience"; + public static string ItemDatabase_StatDefinitions_12 => instance._ItemDatabase_StatDefinitions_12; + public string _ItemDatabase_StatDefinitions_12 = "Spell damage"; + public static string ItemDatabase_StatDefinitions_13 => instance._ItemDatabase_StatDefinitions_13; + public string _ItemDatabase_StatDefinitions_13 = "Melee damage"; + public static string ItemDatabase_StatDefinitions_14 => instance._ItemDatabase_StatDefinitions_14; + public string _ItemDatabase_StatDefinitions_14 = "Ranged damage"; + public static string ItemDatabase_StatDefinitions_15 => instance._ItemDatabase_StatDefinitions_15; + public string _ItemDatabase_StatDefinitions_15 = "Base spell damage"; + public static string ItemDatabase_StatDefinitions_16 => instance._ItemDatabase_StatDefinitions_16; + public string _ItemDatabase_StatDefinitions_16 = "Base melee damage"; + public static string ItemDatabase_StatDefinitions_17 => instance._ItemDatabase_StatDefinitions_17; + public string _ItemDatabase_StatDefinitions_17 = "Base ranged damage"; + public static string ItemDatabase_StatDefinitions_18 => instance._ItemDatabase_StatDefinitions_18; + public string _ItemDatabase_StatDefinitions_18 = "Energy/agility"; + public static string ItemDatabase_StatDefinitions_19 => instance._ItemDatabase_StatDefinitions_19; + public string _ItemDatabase_StatDefinitions_19 = "Health/vitality"; + public static string ItemDatabase_StatDefinitions_20 => instance._ItemDatabase_StatDefinitions_20; + public string _ItemDatabase_StatDefinitions_20 = "Spell damage/intelligence"; + public static string ItemDatabase_StatDefinitions_21 => instance._ItemDatabase_StatDefinitions_21; + public string _ItemDatabase_StatDefinitions_21 = "Melee damage/strength"; + public static string ItemDatabase_StatDefinitions_22 => instance._ItemDatabase_StatDefinitions_22; + public string _ItemDatabase_StatDefinitions_22 = "Recovery"; + public static string ItemDatabase_StatDefinitions_23 => instance._ItemDatabase_StatDefinitions_23; + public string _ItemDatabase_StatDefinitions_23 = "PERMANENT PERK POINTS"; + public static string ItemDatabase_StatDefinitions_24 => instance._ItemDatabase_StatDefinitions_24; + public string _ItemDatabase_StatDefinitions_24 = " / "; + public static string ItemDatabase_StatDefinitions_25 => instance._ItemDatabase_StatDefinitions_25; + public string _ItemDatabase_StatDefinitions_25 = "EXPERIENCE"; + public static string ItemDatabase_StatDefinitions_26 => instance._ItemDatabase_StatDefinitions_26; + public string _ItemDatabase_StatDefinitions_26 = "Weapon length"; + public static string ItemDatabase_StatDefinitions_27 => instance._ItemDatabase_StatDefinitions_27; + public string _ItemDatabase_StatDefinitions_27 = "Attack cost reduction"; + public static string ItemDatabase_StatDefinitions_28 => instance._ItemDatabase_StatDefinitions_28; + public string _ItemDatabase_StatDefinitions_28 = "Spell cost to stamina"; + public static string ItemDatabase_StatDefinitions_29 => instance._ItemDatabase_StatDefinitions_29; + public string _ItemDatabase_StatDefinitions_29 = "Energy/sec"; + public static string ItemDatabase_StatDefinitions_30 => instance._ItemDatabase_StatDefinitions_30; + public string _ItemDatabase_StatDefinitions_30 = "Ranged damage/agility"; + public static string ItemDatabase_StatDefinitions_31 => instance._ItemDatabase_StatDefinitions_31; + public string _ItemDatabase_StatDefinitions_31 = "Melee armor piercing"; + public static string ItemDatabase_StatDefinitions_32 => instance._ItemDatabase_StatDefinitions_32; + public string _ItemDatabase_StatDefinitions_32 = "Ranged armor piercing"; + public static string ItemDatabase_StatDefinitions_33 => instance._ItemDatabase_StatDefinitions_33; + public string _ItemDatabase_StatDefinitions_33 = "Armor piercing"; + public static string ItemDatabase_StatDefinitions_34 => instance._ItemDatabase_StatDefinitions_34; + public string _ItemDatabase_StatDefinitions_34 = "Refund points"; + public static string ItemDatabase_StatDefinitions_35 => instance._ItemDatabase_StatDefinitions_35; + public string _ItemDatabase_StatDefinitions_35 = "Headshot damage"; + public static string ItemDatabase_StatDefinitions_36 => instance._ItemDatabase_StatDefinitions_36; + public string _ItemDatabase_StatDefinitions_36 = "Fire damage"; + public static string ItemDatabase_StatDefinitions_37 => instance._ItemDatabase_StatDefinitions_37; + public string _ItemDatabase_StatDefinitions_37 = "Chance on hit to slow"; + public static string ItemDatabase_StatDefinitions_38 => instance._ItemDatabase_StatDefinitions_38; + public string _ItemDatabase_StatDefinitions_38 = "Chance on hit to bleed"; + public static string ItemDatabase_StatDefinitions_39 => instance._ItemDatabase_StatDefinitions_39; + public string _ItemDatabase_StatDefinitions_39 = "Chance on hit to weaken"; + public static string ItemDatabase_StatDefinitions_40 => instance._ItemDatabase_StatDefinitions_40; + public string _ItemDatabase_StatDefinitions_40 = "Dynamite & bomb damage"; + public static string ItemDatabase_StatDefinitions_41 => instance._ItemDatabase_StatDefinitions_41; + public string _ItemDatabase_StatDefinitions_41 = "Spear damage"; + public static string ItemDatabase_StatDefinitions_42 => instance._ItemDatabase_StatDefinitions_42; + public string _ItemDatabase_StatDefinitions_42 = "Extra carried Sticks"; + public static string ItemDatabase_StatDefinitions_43 => instance._ItemDatabase_StatDefinitions_43; + public string _ItemDatabase_StatDefinitions_43 = "Extra carried Rocks"; + public static string ItemDatabase_StatDefinitions_44 => instance._ItemDatabase_StatDefinitions_44; + public string _ItemDatabase_StatDefinitions_44 = "Extra carried Ropes"; + public static string ItemDatabase_StatDefinitions_45 => instance._ItemDatabase_StatDefinitions_45; + public string _ItemDatabase_StatDefinitions_45 = " Soda: "; + public static string ItemDatabase_StatDefinitions_46 => instance._ItemDatabase_StatDefinitions_46; + public string _ItemDatabase_StatDefinitions_46 = "Booze: "; + public static string ItemDatabase_StatDefinitions_47 => instance._ItemDatabase_StatDefinitions_47; + public string _ItemDatabase_StatDefinitions_47 = "Extra carried Drinks"; + public static string ItemDatabase_StatDefinitions_48 => instance._ItemDatabase_StatDefinitions_48; + public string _ItemDatabase_StatDefinitions_48 = "Extra carried Food"; + public static string ItemDatabase_StatDefinitions_49 => instance._ItemDatabase_StatDefinitions_49; + public string _ItemDatabase_StatDefinitions_49 = "Black hole radius"; + public static string ItemDatabase_StatDefinitions_50 => instance._ItemDatabase_StatDefinitions_50; + public string _ItemDatabase_StatDefinitions_50 = "Black hole lifetime"; + public static string ItemDatabase_StatDefinitions_51 => instance._ItemDatabase_StatDefinitions_51; + public string _ItemDatabase_StatDefinitions_51 = "Black hole gravitational force"; + public static string ItemDatabase_StatDefinitions_52 => instance._ItemDatabase_StatDefinitions_52; + public string _ItemDatabase_StatDefinitions_52 = "Black hole damage"; + public static string ItemDatabase_StatDefinitions_53 => instance._ItemDatabase_StatDefinitions_53; + public string _ItemDatabase_StatDefinitions_53 = "Stun on hit"; + public static string ItemDatabase_StatDefinitions_54 => instance._ItemDatabase_StatDefinitions_54; + public string _ItemDatabase_StatDefinitions_54 = "Snap freeze Duration"; + public static string ItemDatabase_StatDefinitions_55 => instance._ItemDatabase_StatDefinitions_55; + public string _ItemDatabase_StatDefinitions_55 = "Raft speed"; + public static string ItemDatabase_StatDefinitions_56 => instance._ItemDatabase_StatDefinitions_56; + public string _ItemDatabase_StatDefinitions_56 = "Empty socket"; + public static string ItemDatabase_StatDefinitions_57 => instance._ItemDatabase_StatDefinitions_57; + public string _ItemDatabase_StatDefinitions_57 = "Socket: crit chance"; + public static string ItemDatabase_StatDefinitions_58 => instance._ItemDatabase_StatDefinitions_58; + public string _ItemDatabase_StatDefinitions_58 = "Socket: agility"; + public static string ItemDatabase_StatDefinitions_59 => instance._ItemDatabase_StatDefinitions_59; + public string _ItemDatabase_StatDefinitions_59 = "Socket: movement speed"; + public static string ItemDatabase_StatDefinitions_60 => instance._ItemDatabase_StatDefinitions_60; + public string _ItemDatabase_StatDefinitions_60 = "Socket: ranged damage"; + public static string ItemDatabase_StatDefinitions_61 => instance._ItemDatabase_StatDefinitions_61; + public string _ItemDatabase_StatDefinitions_61 = "Socket: ranged armor piercing"; + public static string ItemDatabase_StatDefinitions_62 => instance._ItemDatabase_StatDefinitions_62; + public string _ItemDatabase_StatDefinitions_62 = "Socket: attack speed"; + public static string ItemDatabase_StatDefinitions_63 => instance._ItemDatabase_StatDefinitions_63; + public string _ItemDatabase_StatDefinitions_63 = "Socket: strength"; + public static string ItemDatabase_StatDefinitions_64 => instance._ItemDatabase_StatDefinitions_64; + public string _ItemDatabase_StatDefinitions_64 = "Socket: damage reduction"; + public static string ItemDatabase_StatDefinitions_65 => instance._ItemDatabase_StatDefinitions_65; + public string _ItemDatabase_StatDefinitions_65 = "Socket: melee damage"; + public static string ItemDatabase_StatDefinitions_66 => instance._ItemDatabase_StatDefinitions_66; + public string _ItemDatabase_StatDefinitions_66 = "Socket: melee armor piercing"; + public static string ItemDatabase_StatDefinitions_67 => instance._ItemDatabase_StatDefinitions_67; + public string _ItemDatabase_StatDefinitions_67 = "Socket: cooldown reduction"; + public static string ItemDatabase_StatDefinitions_68 => instance._ItemDatabase_StatDefinitions_68; + public string _ItemDatabase_StatDefinitions_68 = "Socket: intelligence"; + public static string ItemDatabase_StatDefinitions_69 => instance._ItemDatabase_StatDefinitions_69; + public string _ItemDatabase_StatDefinitions_69 = "Socket: spell cost reduction"; + public static string ItemDatabase_StatDefinitions_70 => instance._ItemDatabase_StatDefinitions_70; + public string _ItemDatabase_StatDefinitions_70 = "Socket: spell damage"; + public static string ItemDatabase_StatDefinitions_71 => instance._ItemDatabase_StatDefinitions_71; + public string _ItemDatabase_StatDefinitions_71 = "Socket: energy on hit"; + public static string ItemDatabase_StatDefinitions_72 => instance._ItemDatabase_StatDefinitions_72; + public string _ItemDatabase_StatDefinitions_72 = "Socket: experience gain"; + public static string ItemDatabase_StatDefinitions_73 => instance._ItemDatabase_StatDefinitions_73; + public string _ItemDatabase_StatDefinitions_73 = "Socket: vitality "; + public static string ItemDatabase_StatDefinitions_74 => instance._ItemDatabase_StatDefinitions_74; + public string _ItemDatabase_StatDefinitions_74 = "Socket: magic find"; + public static string ItemDatabase_StatDefinitions_75 => instance._ItemDatabase_StatDefinitions_75; + public string _ItemDatabase_StatDefinitions_75 = "Socket: all healing"; + public static string ItemDatabase_StatDefinitions_76 => instance._ItemDatabase_StatDefinitions_76; + public string _ItemDatabase_StatDefinitions_76 = "Socket: life per second"; + public static string ItemDatabase_StatDefinitions_77 => instance._ItemDatabase_StatDefinitions_77; + public string _ItemDatabase_StatDefinitions_77 = "Socket: maximum health "; + public static string ItemDatabase_StatDefinitions_78 => instance._ItemDatabase_StatDefinitions_78; + public string _ItemDatabase_StatDefinitions_78 = "Socket: armor "; + public static string ItemDatabase_StatDefinitions_79 => instance._ItemDatabase_StatDefinitions_79; + public string _ItemDatabase_StatDefinitions_79 = "Socket: Resistance to magic"; + public static string ItemDatabase_StatDefinitions_80 => instance._ItemDatabase_StatDefinitions_80; + public string _ItemDatabase_StatDefinitions_80 = "Socket: crit damage"; + public static string ItemDatabase_StatDefinitions_81 => instance._ItemDatabase_StatDefinitions_81; + public string _ItemDatabase_StatDefinitions_81 = "Socket: thorns"; - //ItemDataBase_ItemDefinitions - public static string ItemDataBase_ItemDefinitions_1 => instance._ItemDataBase_ItemDefinitions_1; - public string _ItemDataBase_ItemDefinitions_1 = "Broken Flip-Flops"; - public static string ItemDataBase_ItemDefinitions_2 => instance._ItemDataBase_ItemDefinitions_2; - public string _ItemDataBase_ItemDefinitions_2 = "A pair of damaged shoes. Judging by their condition, i can imagine what happened to their owner."; - public static string ItemDataBase_ItemDefinitions_3 => instance._ItemDataBase_ItemDefinitions_3; - public string _ItemDataBase_ItemDefinitions_3 = "Worn by one of the passengers of the plane that Eric also flew in."; - public static string ItemDataBase_ItemDefinitions_4 => instance._ItemDataBase_ItemDefinitions_4; - public string _ItemDataBase_ItemDefinitions_4 = "Old Boots"; - public static string ItemDataBase_ItemDefinitions_5 => instance._ItemDataBase_ItemDefinitions_5; - public string _ItemDataBase_ItemDefinitions_5 = "A pair of old boots. They must have been lying here for ages."; - public static string ItemDataBase_ItemDefinitions_6 => instance._ItemDataBase_ItemDefinitions_6; - public string _ItemDataBase_ItemDefinitions_6 = "Found on the Peninsula, but judging by their condition, they belong neither to a plane passenger nor a cannibal."; - public static string ItemDataBase_ItemDefinitions_7 => instance._ItemDataBase_ItemDefinitions_7; - public string _ItemDataBase_ItemDefinitions_7 = "Damaged Leather Boots"; - public static string ItemDataBase_ItemDefinitions_8 => instance._ItemDataBase_ItemDefinitions_8; - public string _ItemDataBase_ItemDefinitions_8 = "A pair of leather boots. They look good and have only some scratches."; - public static string ItemDataBase_ItemDefinitions_9 => instance._ItemDataBase_ItemDefinitions_9; - public string _ItemDataBase_ItemDefinitions_9 = "They arrived to the Peninsula the same way Eric did. Since they were in a baggage, they avoided a lot of damage."; - public static string ItemDataBase_ItemDefinitions_10 => instance._ItemDataBase_ItemDefinitions_10; - public string _ItemDataBase_ItemDefinitions_10 = "Sturdy Leather Boots"; - public static string ItemDataBase_ItemDefinitions_11 => instance._ItemDataBase_ItemDefinitions_11; - public string _ItemDataBase_ItemDefinitions_11 = "A pair of leather boots. They are in a very good condition."; - public static string ItemDataBase_ItemDefinitions_12 => instance._ItemDataBase_ItemDefinitions_12; - public string _ItemDataBase_ItemDefinitions_12 = "They arrived to the Peninsula the same way Eric did. Eric found them undamaged in their original box. They still had a pricetag - $419,99."; - public static string ItemDataBase_ItemDefinitions_13 => instance._ItemDataBase_ItemDefinitions_13; - public string _ItemDataBase_ItemDefinitions_13 = "Damaged Army Boots"; - public static string ItemDataBase_ItemDefinitions_14 => instance._ItemDataBase_ItemDefinitions_14; - public string _ItemDataBase_ItemDefinitions_14 = "Sturdy, hard, resistant but damaged boots."; - public static string ItemDataBase_ItemDefinitions_15 => instance._ItemDataBase_ItemDefinitions_15; - public string _ItemDataBase_ItemDefinitions_15 = "They look modern, almost too modern for everything here."; - public static string ItemDataBase_ItemDefinitions_16 => instance._ItemDataBase_ItemDefinitions_16; - public string _ItemDataBase_ItemDefinitions_16 = "Army Boots"; - public static string ItemDataBase_ItemDefinitions_17 => instance._ItemDataBase_ItemDefinitions_17; - public string _ItemDataBase_ItemDefinitions_17 = "Sturdy, hard, resistant boots."; - public static string ItemDataBase_ItemDefinitions_18 => instance._ItemDataBase_ItemDefinitions_18; - public string _ItemDataBase_ItemDefinitions_18 = "Armsy Skin Footwear"; - public static string ItemDataBase_ItemDefinitions_19 => instance._ItemDataBase_ItemDefinitions_19; - public string _ItemDataBase_ItemDefinitions_19 = "Severed armsy legs, with all of their insides removed. All thats left is dried mutated skin."; - public static string ItemDataBase_ItemDefinitions_20 => instance._ItemDataBase_ItemDefinitions_20; - public string _ItemDataBase_ItemDefinitions_20 = "Armsy, the second heaviest of the mutants needs very resistant skin. It often drags its legs on the ground when it moves. The skin on their legs grew very thick, and has bone tissue mixed with skin tissue."; - public static string ItemDataBase_ItemDefinitions_21 => instance._ItemDataBase_ItemDefinitions_21; - public string _ItemDataBase_ItemDefinitions_21 = "Finger Warmer"; - public static string ItemDataBase_ItemDefinitions_22 => instance._ItemDataBase_ItemDefinitions_22; - public string _ItemDataBase_ItemDefinitions_22 = "A little glove to keep your fingers warm and cozy."; - public static string ItemDataBase_ItemDefinitions_23 => instance._ItemDataBase_ItemDefinitions_23; - public string _ItemDataBase_ItemDefinitions_23 = "Made of wool."; - public static string ItemDataBase_ItemDefinitions_24 => instance._ItemDataBase_ItemDefinitions_24; - public string _ItemDataBase_ItemDefinitions_24 = "Thick Rubber Glove"; - public static string ItemDataBase_ItemDefinitions_25 => instance._ItemDataBase_ItemDefinitions_25; - public string _ItemDataBase_ItemDefinitions_25 = "A glove that helps get a better grip."; - public static string ItemDataBase_ItemDefinitions_26 => instance._ItemDataBase_ItemDefinitions_26; - public string _ItemDataBase_ItemDefinitions_26 = "Tribal Glove"; - public static string ItemDataBase_ItemDefinitions_27 => instance._ItemDataBase_ItemDefinitions_27; - public string _ItemDataBase_ItemDefinitions_27 = "Offers medicore protection."; - public static string ItemDataBase_ItemDefinitions_28 => instance._ItemDataBase_ItemDefinitions_28; - public string _ItemDataBase_ItemDefinitions_28 = "Glove made out of thin bones, some may possibly be from a human."; - public static string ItemDataBase_ItemDefinitions_29 => instance._ItemDataBase_ItemDefinitions_29; - public string _ItemDataBase_ItemDefinitions_29 = "Tribe Leader Glove"; - public static string ItemDataBase_ItemDefinitions_30 => instance._ItemDataBase_ItemDefinitions_30; - public string _ItemDataBase_ItemDefinitions_30 = "A glove that offers little protection but a lot of offensive stats."; - public static string ItemDataBase_ItemDefinitions_31 => instance._ItemDataBase_ItemDefinitions_31; - public string _ItemDataBase_ItemDefinitions_31 = "A glove made of bones, some have engravings of crosses."; - public static string ItemDataBase_ItemDefinitions_32 => instance._ItemDataBase_ItemDefinitions_32; - public string _ItemDataBase_ItemDefinitions_32 = "Worn Shorts"; - public static string ItemDataBase_ItemDefinitions_33 => instance._ItemDataBase_ItemDefinitions_33; - public string _ItemDataBase_ItemDefinitions_33 = "Some protection for legs."; - public static string ItemDataBase_ItemDefinitions_34 => instance._ItemDataBase_ItemDefinitions_34; - public string _ItemDataBase_ItemDefinitions_34 = "Short, made out of cheap thin fabric, and on top of that they are damaged. But its better than nothing."; - public static string ItemDataBase_ItemDefinitions_35 => instance._ItemDataBase_ItemDefinitions_35; - public string _ItemDataBase_ItemDefinitions_35 = "Cargo Shorts"; - public static string ItemDataBase_ItemDefinitions_36 => instance._ItemDataBase_ItemDefinitions_36; - public string _ItemDataBase_ItemDefinitions_36 = "No protection at all but they allow to carry more items."; - public static string ItemDataBase_ItemDefinitions_37 => instance._ItemDataBase_ItemDefinitions_37; - public string _ItemDataBase_ItemDefinitions_37 = "They are ugly as hell tho"; - public static string ItemDataBase_ItemDefinitions_38 => instance._ItemDataBase_ItemDefinitions_38; - public string _ItemDataBase_ItemDefinitions_38 = "Passenger's Jacket"; - public static string ItemDataBase_ItemDefinitions_39 => instance._ItemDataBase_ItemDefinitions_39; - public string _ItemDataBase_ItemDefinitions_39 = "It's a little torn. "; - public static string ItemDataBase_ItemDefinitions_40 => instance._ItemDataBase_ItemDefinitions_40; - public string _ItemDataBase_ItemDefinitions_40 = "This jacket was worn by Preston A. the 34th passenger on the plane. Eric talked to him at the airport. Guy was odd, and now he's dead."; - public static string ItemDataBase_ItemDefinitions_41 => instance._ItemDataBase_ItemDefinitions_41; - public string _ItemDataBase_ItemDefinitions_41 = "Leather Jacket"; - public static string ItemDataBase_ItemDefinitions_42 => instance._ItemDataBase_ItemDefinitions_42; - public string _ItemDataBase_ItemDefinitions_42 = "Offers little protection"; - public static string ItemDataBase_ItemDefinitions_43 => instance._ItemDataBase_ItemDefinitions_43; - public string _ItemDataBase_ItemDefinitions_43 = "This jacket was in a baggage of one of the plane passengers"; - public static string ItemDataBase_ItemDefinitions_44 => instance._ItemDataBase_ItemDefinitions_44; - public string _ItemDataBase_ItemDefinitions_44 = "Boar Skin Armor"; - public static string ItemDataBase_ItemDefinitions_45 => instance._ItemDataBase_ItemDefinitions_45; - public string _ItemDataBase_ItemDefinitions_45 = "It's made from a skin of a huge individual. It's heavy and thick, and surely can protect from attacks of weaker enemies."; - public static string ItemDataBase_ItemDefinitions_46 => instance._ItemDataBase_ItemDefinitions_46; - public string _ItemDataBase_ItemDefinitions_46 = "Boar, one of the animals on the peninsula, is rather rare and it's skin is very durable."; - public static string ItemDataBase_ItemDefinitions_47 => instance._ItemDataBase_ItemDefinitions_47; - public string _ItemDataBase_ItemDefinitions_47 = "Crocodile Skin Armor"; - public static string ItemDataBase_ItemDefinitions_48 => instance._ItemDataBase_ItemDefinitions_48; - public string _ItemDataBase_ItemDefinitions_48 = "Plate armour"; - public static string ItemDataBase_ItemDefinitions_49 => instance._ItemDataBase_ItemDefinitions_49; - public string _ItemDataBase_ItemDefinitions_49 = "Bear Skin Armor"; - public static string ItemDataBase_ItemDefinitions_50 => instance._ItemDataBase_ItemDefinitions_50; - public string _ItemDataBase_ItemDefinitions_50 = "Archer's Gear"; - public static string ItemDataBase_ItemDefinitions_51 => instance._ItemDataBase_ItemDefinitions_51; - public string _ItemDataBase_ItemDefinitions_51 = "Hazard's Gear"; - public static string ItemDataBase_ItemDefinitions_52 => instance._ItemDataBase_ItemDefinitions_52; - public string _ItemDataBase_ItemDefinitions_52 = "Mysterious robe"; - public static string ItemDataBase_ItemDefinitions_53 => instance._ItemDataBase_ItemDefinitions_53; - public string _ItemDataBase_ItemDefinitions_53 = "Magic flows through the entirety of this object. It's made out of unknown material"; - public static string ItemDataBase_ItemDefinitions_54 => instance._ItemDataBase_ItemDefinitions_54; - public string _ItemDataBase_ItemDefinitions_54 = "Robe looks like it was created yesterday, but its older than the oldest of mankinds' civilizations. Simply looking at it sends chills down the spine."; - public static string ItemDataBase_ItemDefinitions_55 => instance._ItemDataBase_ItemDefinitions_55; - public string _ItemDataBase_ItemDefinitions_55 = "Empowers cataclysm. The vortex turns blue, damage is increased, freezes enemies "; - public static string ItemDataBase_ItemDefinitions_56 => instance._ItemDataBase_ItemDefinitions_56; - public string _ItemDataBase_ItemDefinitions_56 = "Rusty Longsword"; - public static string ItemDataBase_ItemDefinitions_57 => instance._ItemDataBase_ItemDefinitions_57; - public string _ItemDataBase_ItemDefinitions_57 = "A long, very heavy sword. Edge got dull over time. Still, it's in a condition that allows me to slice some enemies in half."; - public static string ItemDataBase_ItemDefinitions_58 => instance._ItemDataBase_ItemDefinitions_58; - public string _ItemDataBase_ItemDefinitions_58 = "The sword appears to be from medieval ages, through it's not. It was made a lot later. It never was used as a weapon in battles, because it was merely a decoration."; - public static string ItemDataBase_ItemDefinitions_59 => instance._ItemDataBase_ItemDefinitions_59; - public string _ItemDataBase_ItemDefinitions_59 = "Longsword"; - public static string ItemDataBase_ItemDefinitions_60 => instance._ItemDataBase_ItemDefinitions_60; - public string _ItemDataBase_ItemDefinitions_60 = "Sharp and long"; - public static string ItemDataBase_ItemDefinitions_61 => instance._ItemDataBase_ItemDefinitions_61; - public string _ItemDataBase_ItemDefinitions_61 = "The sword is in perfect contidion."; - public static string ItemDataBase_ItemDefinitions_62 => instance._ItemDataBase_ItemDefinitions_62; - public string _ItemDataBase_ItemDefinitions_62 = "Full Metal Sword"; - public static string ItemDataBase_ItemDefinitions_63 => instance._ItemDataBase_ItemDefinitions_63; - public string _ItemDataBase_ItemDefinitions_63 = "It's sooo big..."; - public static string ItemDataBase_ItemDefinitions_64 => instance._ItemDataBase_ItemDefinitions_64; - public string _ItemDataBase_ItemDefinitions_64 = "A normal human cannot lift this."; - public static string ItemDataBase_ItemDefinitions_65 => instance._ItemDataBase_ItemDefinitions_65; - public string _ItemDataBase_ItemDefinitions_65 = "The Leech"; - public static string ItemDataBase_ItemDefinitions_66 => instance._ItemDataBase_ItemDefinitions_66; - public string _ItemDataBase_ItemDefinitions_66 = "Hey where did my health g- oh it's back..."; - public static string ItemDataBase_ItemDefinitions_67 => instance._ItemDataBase_ItemDefinitions_67; - public string _ItemDataBase_ItemDefinitions_67 = "Smokey's Sacred Quiver"; - public static string ItemDataBase_ItemDefinitions_68 => instance._ItemDataBase_ItemDefinitions_68; - public string _ItemDataBase_ItemDefinitions_68 = "SmokeyTheBear died because he never used this item."; - public static string ItemDataBase_ItemDefinitions_69 => instance._ItemDataBase_ItemDefinitions_69; - public string _ItemDataBase_ItemDefinitions_69 = "Smokey was the friend of allmighty Hazard, who can materialize any kind of weapon at the snap of his fingers. Hazard remebered Smokey's favourite playstyle and he gave him this as a gift to purge the sh** out of mutants."; - public static string ItemDataBase_ItemDefinitions_70(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_70, objects); - public string _ItemDataBase_ItemDefinitions_70 = "Crossbows operate at {0} speed and deal {1} increased damage"; - public static string ItemDataBase_ItemDefinitions_71 => instance._ItemDataBase_ItemDefinitions_71; - public string _ItemDataBase_ItemDefinitions_71 = "Broken shield"; - public static string ItemDataBase_ItemDefinitions_72 => instance._ItemDataBase_ItemDefinitions_72; - public string _ItemDataBase_ItemDefinitions_72 = "Tower Shield"; - public static string ItemDataBase_ItemDefinitions_73 => instance._ItemDataBase_ItemDefinitions_73; - public string _ItemDataBase_ItemDefinitions_73 = "Broken Leather Shoulder Armor"; - public static string ItemDataBase_ItemDefinitions_74 => instance._ItemDataBase_ItemDefinitions_74; - public string _ItemDataBase_ItemDefinitions_74 = "Leather Shoulder Armor"; - public static string ItemDataBase_ItemDefinitions_75 => instance._ItemDataBase_ItemDefinitions_75; - public string _ItemDataBase_ItemDefinitions_75 = "Phase Pauldrons"; - public static string ItemDataBase_ItemDefinitions_76 => instance._ItemDataBase_ItemDefinitions_76; - public string _ItemDataBase_ItemDefinitions_76 = "The distance of blink is increased by {} meters, and blink now hits everything that you teleported through"; - public static string ItemDataBase_ItemDefinitions_77 => instance._ItemDataBase_ItemDefinitions_77; - public string _ItemDataBase_ItemDefinitions_77 = "MAGA Cap"; - public static string ItemDataBase_ItemDefinitions_78 => instance._ItemDataBase_ItemDefinitions_78; - public string _ItemDataBase_ItemDefinitions_78 = "Wearing this item channels the power of D.Trump to you"; - public static string ItemDataBase_ItemDefinitions_79 => instance._ItemDataBase_ItemDefinitions_79; - public string _ItemDataBase_ItemDefinitions_79 = "... or does it?"; - public static string ItemDataBase_ItemDefinitions_80 => instance._ItemDataBase_ItemDefinitions_80; - public string _ItemDataBase_ItemDefinitions_80 = "Hubble's Vision"; - public static string ItemDataBase_ItemDefinitions_81 => instance._ItemDataBase_ItemDefinitions_81; - public string _ItemDataBase_ItemDefinitions_81 = "Wearing this item empowers your black hole spell"; - public static string ItemDataBase_ItemDefinitions_82 => instance._ItemDataBase_ItemDefinitions_82; - public string _ItemDataBase_ItemDefinitions_82 = "Man, fuck gravity."; - public static string ItemDataBase_ItemDefinitions_83 => instance._ItemDataBase_ItemDefinitions_83; - public string _ItemDataBase_ItemDefinitions_83 = "Broken Loop"; - public static string ItemDataBase_ItemDefinitions_84 => instance._ItemDataBase_ItemDefinitions_84; - public string _ItemDataBase_ItemDefinitions_84 = "Loop"; - public static string ItemDataBase_ItemDefinitions_85 => instance._ItemDataBase_ItemDefinitions_85; - public string _ItemDataBase_ItemDefinitions_85 = "Toxic Ring"; - public static string ItemDataBase_ItemDefinitions_86 => instance._ItemDataBase_ItemDefinitions_86; - public string _ItemDataBase_ItemDefinitions_86 = " comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo."; - public static string ItemDataBase_ItemDefinitions_87 => instance._ItemDataBase_ItemDefinitions_87; - public string _ItemDataBase_ItemDefinitions_87 = "What the fuck did you just fucking say about me, you little bitch? I'll have you know I graduated top of my class in the Navy Seals, and I've been involved in numerous secret raids on Al-Quaeda, and I have over 300 confirmed kills. I am trained in gorilla warfare and I'm the top sniper in the entire US armed forces. You are nothing to me but just another target. I will wipe you the fuck out with precision the likes of which has never been seen before on this Earth, mark my fucking words. You think you can get away with saying that shit to me over the Internet? Think again, fucker. As we speak I am contacting my secret network of spies across the USA and your IP is being traced right now so you better prepare for the storm, maggot. The storm that wipes out the pathetic little thing you call your life. You're fucking dead, kid. I can be anywhere, anytime, and I can kill you in over seven hundred ways, and that's just with my bare hands. Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the United States Marine Corps and I will use it to its full extent to wipe your miserable ass off the face of the continent, you little shit. If only you could have known what unholy retribution your little \"clever\" comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo."; - public static string ItemDataBase_ItemDefinitions_88 => instance._ItemDataBase_ItemDefinitions_88; - public string _ItemDataBase_ItemDefinitions_88 = "Scarf"; - public static string ItemDataBase_ItemDefinitions_89 => instance._ItemDataBase_ItemDefinitions_89; - public string _ItemDataBase_ItemDefinitions_89 = "Damaged Bracer"; - public static string ItemDataBase_ItemDefinitions_90 => instance._ItemDataBase_ItemDefinitions_90; - public string _ItemDataBase_ItemDefinitions_90 = "Worn Bracer"; - public static string ItemDataBase_ItemDefinitions_91 => instance._ItemDataBase_ItemDefinitions_91; - public string _ItemDataBase_ItemDefinitions_91 = "Leather Bracer"; - public static string ItemDataBase_ItemDefinitions_92 => instance._ItemDataBase_ItemDefinitions_92; - public string _ItemDataBase_ItemDefinitions_92 = "Greater Mutated Heart"; - public static string ItemDataBase_ItemDefinitions_93 => instance._ItemDataBase_ItemDefinitions_93; - public string _ItemDataBase_ItemDefinitions_93 = "Can be consumed by right clicking it"; - public static string ItemDataBase_ItemDefinitions_94 => instance._ItemDataBase_ItemDefinitions_94; - public string _ItemDataBase_ItemDefinitions_94 = "Lesser Mutated Heart"; - public static string ItemDataBase_ItemDefinitions_95 => instance._ItemDataBase_ItemDefinitions_95; - public string _ItemDataBase_ItemDefinitions_95 = "Spiked ring"; - public static string ItemDataBase_ItemDefinitions_96 => instance._ItemDataBase_ItemDefinitions_96; - public string _ItemDataBase_ItemDefinitions_96 = "Armor piercing for either melee or ranged weapons"; - public static string ItemDataBase_ItemDefinitions_97 => instance._ItemDataBase_ItemDefinitions_97; - public string _ItemDataBase_ItemDefinitions_97 = "Piercer"; - public static string ItemDataBase_ItemDefinitions_98 => instance._ItemDataBase_ItemDefinitions_98; - public string _ItemDataBase_ItemDefinitions_98 = "Moon Boots"; - public static string ItemDataBase_ItemDefinitions_99 => instance._ItemDataBase_ItemDefinitions_99; - public string _ItemDataBase_ItemDefinitions_99 = "A pair of boots from the moon."; - public static string ItemDataBase_ItemDefinitions_100 => instance._ItemDataBase_ItemDefinitions_100; - public string _ItemDataBase_ItemDefinitions_100 = "It is said that the wearer will not take fall damage while wearing these boots and will jump like on the moon, I wouldn't trust it tough."; - public static string ItemDataBase_ItemDefinitions_101 => instance._ItemDataBase_ItemDefinitions_101; - public string _ItemDataBase_ItemDefinitions_101 = "Golden Ring of Strength"; - public static string ItemDataBase_ItemDefinitions_102 => instance._ItemDataBase_ItemDefinitions_102; - public string _ItemDataBase_ItemDefinitions_102 = "A Ring of ancient times."; - public static string ItemDataBase_ItemDefinitions_103 => instance._ItemDataBase_ItemDefinitions_103; - public string _ItemDataBase_ItemDefinitions_103 = "A Golden Ring that looks simple and elegant, yet it feels powerfull to the touch."; - public static string ItemDataBase_ItemDefinitions_104 => instance._ItemDataBase_ItemDefinitions_104; - public string _ItemDataBase_ItemDefinitions_104 = "Golden Ring of Vitality"; - public static string ItemDataBase_ItemDefinitions_105 => instance._ItemDataBase_ItemDefinitions_105; - public string _ItemDataBase_ItemDefinitions_105 = "Golden Ring of Agility"; - public static string ItemDataBase_ItemDefinitions_106 => instance._ItemDataBase_ItemDefinitions_106; - public string _ItemDataBase_ItemDefinitions_106 = "Golden Ring of Intelligence"; - public static string ItemDataBase_ItemDefinitions_107 => instance._ItemDataBase_ItemDefinitions_107; - public string _ItemDataBase_ItemDefinitions_107 = "Silver Ring of Strength"; - public static string ItemDataBase_ItemDefinitions_108 => instance._ItemDataBase_ItemDefinitions_108; - public string _ItemDataBase_ItemDefinitions_108 = "A Silver Ring that looks simple and elegant, yet it feels powerfull to the touch."; - public static string ItemDataBase_ItemDefinitions_109 => instance._ItemDataBase_ItemDefinitions_109; - public string _ItemDataBase_ItemDefinitions_109 = "Silver Ring of Vitality"; - public static string ItemDataBase_ItemDefinitions_110 => instance._ItemDataBase_ItemDefinitions_110; - public string _ItemDataBase_ItemDefinitions_110 = "Silver Ring of Agility"; - public static string ItemDataBase_ItemDefinitions_111 => instance._ItemDataBase_ItemDefinitions_111; - public string _ItemDataBase_ItemDefinitions_111 = "Silver Ring of Intelligence"; - public static string ItemDataBase_ItemDefinitions_112 => instance._ItemDataBase_ItemDefinitions_112; - public string _ItemDataBase_ItemDefinitions_112 = "Steel Ring of Strength"; - public static string ItemDataBase_ItemDefinitions_113 => instance._ItemDataBase_ItemDefinitions_113; - public string _ItemDataBase_ItemDefinitions_113 = "A Steel Ring that looks simple and elegant, yet it feels powerfull to the touch."; - public static string ItemDataBase_ItemDefinitions_114 => instance._ItemDataBase_ItemDefinitions_114; - public string _ItemDataBase_ItemDefinitions_114 = "Steel Ring of Vitality"; - public static string ItemDataBase_ItemDefinitions_115 => instance._ItemDataBase_ItemDefinitions_115; - public string _ItemDataBase_ItemDefinitions_115 = "Steel Ring of Agility"; - public static string ItemDataBase_ItemDefinitions_116 => instance._ItemDataBase_ItemDefinitions_116; - public string _ItemDataBase_ItemDefinitions_116 = "Steel Ring of Intelligence"; - public static string ItemDataBase_ItemDefinitions_117 => instance._ItemDataBase_ItemDefinitions_117; - public string _ItemDataBase_ItemDefinitions_117 = "The One Ring To Rule Them All"; - public static string ItemDataBase_ItemDefinitions_118 => instance._ItemDataBase_ItemDefinitions_118; - public string _ItemDataBase_ItemDefinitions_118 = "An Ancient magical Ring of great power."; - public static string ItemDataBase_ItemDefinitions_119 => instance._ItemDataBase_ItemDefinitions_119; - public string _ItemDataBase_ItemDefinitions_119 = "It looks like and ordinay ring, but a strange energy is surrounding it. The Ring is said to have been found inside a volcanic rock by an archeologist, who went mad and isolated himself on the peninsula many years ago. But that's just a fairy tale, ring?"; - public static string ItemDataBase_ItemDefinitions_120 => instance._ItemDataBase_ItemDefinitions_120; - public string _ItemDataBase_ItemDefinitions_120 = "Attracts unwanted attention of an unknown entity."; - public static string ItemDataBase_ItemDefinitions_121 => instance._ItemDataBase_ItemDefinitions_121; - public string _ItemDataBase_ItemDefinitions_121 = "Golden Locket of Strength"; - public static string ItemDataBase_ItemDefinitions_122 => instance._ItemDataBase_ItemDefinitions_122; - public string _ItemDataBase_ItemDefinitions_122 = "A Locket of ancient times."; - public static string ItemDataBase_ItemDefinitions_123 => instance._ItemDataBase_ItemDefinitions_123; - public string _ItemDataBase_ItemDefinitions_123 = "A Golden Locket that looks simple and elegant, yet it feels powerfull to the touch."; - public static string ItemDataBase_ItemDefinitions_124 => instance._ItemDataBase_ItemDefinitions_124; - public string _ItemDataBase_ItemDefinitions_124 = "Golden Locket of Vitality"; - public static string ItemDataBase_ItemDefinitions_125 => instance._ItemDataBase_ItemDefinitions_125; - public string _ItemDataBase_ItemDefinitions_125 = "Golden Locket of Agility"; - public static string ItemDataBase_ItemDefinitions_126 => instance._ItemDataBase_ItemDefinitions_126; - public string _ItemDataBase_ItemDefinitions_126 = "Golden Locket of Intelligence"; - public static string ItemDataBase_ItemDefinitions_127 => instance._ItemDataBase_ItemDefinitions_127; - public string _ItemDataBase_ItemDefinitions_127 = "Silver Locket of Strength"; - public static string ItemDataBase_ItemDefinitions_128 => instance._ItemDataBase_ItemDefinitions_128; - public string _ItemDataBase_ItemDefinitions_128 = "A Silver Locket that looks simple and elegant, yet it feels powerfull to the touch."; - public static string ItemDataBase_ItemDefinitions_129 => instance._ItemDataBase_ItemDefinitions_129; - public string _ItemDataBase_ItemDefinitions_129 = "Silver Locket of Vitality"; - public static string ItemDataBase_ItemDefinitions_130 => instance._ItemDataBase_ItemDefinitions_130; - public string _ItemDataBase_ItemDefinitions_130 = "Silver Locket of Agility"; - public static string ItemDataBase_ItemDefinitions_131 => instance._ItemDataBase_ItemDefinitions_131; - public string _ItemDataBase_ItemDefinitions_131 = "Silver Locket of Intelligence"; - public static string ItemDataBase_ItemDefinitions_132 => instance._ItemDataBase_ItemDefinitions_132; - public string _ItemDataBase_ItemDefinitions_132 = "Emerald Pendant of Strength"; - public static string ItemDataBase_ItemDefinitions_133 => instance._ItemDataBase_ItemDefinitions_133; - public string _ItemDataBase_ItemDefinitions_133 = "A Pendant of ancient times."; - public static string ItemDataBase_ItemDefinitions_134 => instance._ItemDataBase_ItemDefinitions_134; - public string _ItemDataBase_ItemDefinitions_134 = "An Emerald Pendant that looks simple and elegant, yet it feels powerfull to the touch."; - public static string ItemDataBase_ItemDefinitions_135 => instance._ItemDataBase_ItemDefinitions_135; - public string _ItemDataBase_ItemDefinitions_135 = "Emerald Pendant of Vitality"; - public static string ItemDataBase_ItemDefinitions_136 => instance._ItemDataBase_ItemDefinitions_136; - public string _ItemDataBase_ItemDefinitions_136 = "Emerald Pendant of Agility"; - public static string ItemDataBase_ItemDefinitions_137 => instance._ItemDataBase_ItemDefinitions_137; - public string _ItemDataBase_ItemDefinitions_137 = "Emerald Pendant of Intelligence"; - public static string ItemDataBase_ItemDefinitions_138 => instance._ItemDataBase_ItemDefinitions_138; - public string _ItemDataBase_ItemDefinitions_138 = "Diamond Pendant of Strength"; - public static string ItemDataBase_ItemDefinitions_139 => instance._ItemDataBase_ItemDefinitions_139; - public string _ItemDataBase_ItemDefinitions_139 = "A Diamond Pendant that looks simple and elegant, yet it feels powerfull to the touch."; - public static string ItemDataBase_ItemDefinitions_140 => instance._ItemDataBase_ItemDefinitions_140; - public string _ItemDataBase_ItemDefinitions_140 = "Diamond Pendant of Vitality"; - public static string ItemDataBase_ItemDefinitions_141 => instance._ItemDataBase_ItemDefinitions_141; - public string _ItemDataBase_ItemDefinitions_141 = "Diamond Pendant of Agility"; - public static string ItemDataBase_ItemDefinitions_142 => instance._ItemDataBase_ItemDefinitions_142; - public string _ItemDataBase_ItemDefinitions_142 = "Diamond Pendant of Intelligence"; - public static string ItemDataBase_ItemDefinitions_143 => instance._ItemDataBase_ItemDefinitions_143; - public string _ItemDataBase_ItemDefinitions_143 = "Armsy Finger Necklace"; - public static string ItemDataBase_ItemDefinitions_144 => instance._ItemDataBase_ItemDefinitions_144; - public string _ItemDataBase_ItemDefinitions_144 = "A Necklace decorated with armsy fingertips."; - public static string ItemDataBase_ItemDefinitions_145 => instance._ItemDataBase_ItemDefinitions_145; - public string _ItemDataBase_ItemDefinitions_145 = "A Necklace made from the fingertips of an armsy, yeilding it's raw power and strentgh."; - public static string ItemDataBase_ItemDefinitions_146 => instance._ItemDataBase_ItemDefinitions_146; - public string _ItemDataBase_ItemDefinitions_146 = "Virginia Heart Pendant"; - public static string ItemDataBase_ItemDefinitions_147 => instance._ItemDataBase_ItemDefinitions_147; - public string _ItemDataBase_ItemDefinitions_147 = "A Pendant of a petrified Virginia heart."; - public static string ItemDataBase_ItemDefinitions_148 => instance._ItemDataBase_ItemDefinitions_148; - public string _ItemDataBase_ItemDefinitions_148 = "A Pendant made from a petrified Virginia heart, yeilding it's love and Vitality."; - public static string ItemDataBase_ItemDefinitions_149 => instance._ItemDataBase_ItemDefinitions_149; - public string _ItemDataBase_ItemDefinitions_149 = "Cowman Toe Necklace"; - public static string ItemDataBase_ItemDefinitions_150 => instance._ItemDataBase_ItemDefinitions_150; - public string _ItemDataBase_ItemDefinitions_150 = "A Necklace decorated with cowman toes."; - public static string ItemDataBase_ItemDefinitions_151 => instance._ItemDataBase_ItemDefinitions_151; - public string _ItemDataBase_ItemDefinitions_151 = "A Necklace made from the fingertips of an armsy, yeilding it's speed and agility."; - public static string ItemDataBase_ItemDefinitions_152 => instance._ItemDataBase_ItemDefinitions_152; - public string _ItemDataBase_ItemDefinitions_152 = "Pendant of Perpetual Rebirth"; - public static string ItemDataBase_ItemDefinitions_153 => instance._ItemDataBase_ItemDefinitions_153; - public string _ItemDataBase_ItemDefinitions_153 = "A Pendant of a shrunken babyhead."; - public static string ItemDataBase_ItemDefinitions_154 => instance._ItemDataBase_ItemDefinitions_154; - public string _ItemDataBase_ItemDefinitions_154 = "A pedant of great power. Obtainable only from babies or crafting"; - public static string ItemDataBase_ItemDefinitions_155(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_155, objects); - public string _ItemDataBase_ItemDefinitions_155 = "decrease a random cooldown by {0} second whenever you hit something with melee or ranged attack."; - public static string ItemDataBase_ItemDefinitions_156 => instance._ItemDataBase_ItemDefinitions_156; - public string _ItemDataBase_ItemDefinitions_156 = "Megan's Locket"; - public static string ItemDataBase_ItemDefinitions_157 => instance._ItemDataBase_ItemDefinitions_157; - public string _ItemDataBase_ItemDefinitions_157 = "The Locket Megan wore."; - public static string ItemDataBase_ItemDefinitions_158 => instance._ItemDataBase_ItemDefinitions_158; - public string _ItemDataBase_ItemDefinitions_158 = "Megan wore this Locket, it has a picture of her mom in it."; - public static string ItemDataBase_ItemDefinitions_159 => instance._ItemDataBase_ItemDefinitions_159; - public string _ItemDataBase_ItemDefinitions_159 = "Relic Hammer"; - public static string ItemDataBase_ItemDefinitions_160 => instance._ItemDataBase_ItemDefinitions_160; - public string _ItemDataBase_ItemDefinitions_160 = "It's slow and weak."; - public static string ItemDataBase_ItemDefinitions_161 => instance._ItemDataBase_ItemDefinitions_161; - public string _ItemDataBase_ItemDefinitions_161 = "Slows on hit"; - public static string ItemDataBase_ItemDefinitions_162 => instance._ItemDataBase_ItemDefinitions_162; - public string _ItemDataBase_ItemDefinitions_162 = "Black Hammer"; - public static string ItemDataBase_ItemDefinitions_163 => instance._ItemDataBase_ItemDefinitions_163; - public string _ItemDataBase_ItemDefinitions_163 = "It's slow but with enough strength i can make it a very deadly tool"; - public static string ItemDataBase_ItemDefinitions_164 => instance._ItemDataBase_ItemDefinitions_164; - public string _ItemDataBase_ItemDefinitions_164 = "Potato Sack"; - public static string ItemDataBase_ItemDefinitions_165 => instance._ItemDataBase_ItemDefinitions_165; - public string _ItemDataBase_ItemDefinitions_165 = "Can be used as a quiver"; - public static string ItemDataBase_ItemDefinitions_166 => instance._ItemDataBase_ItemDefinitions_166; - public string _ItemDataBase_ItemDefinitions_166 = "Rabbit Skin Quiver"; - public static string ItemDataBase_ItemDefinitions_167 => instance._ItemDataBase_ItemDefinitions_167; - public string _ItemDataBase_ItemDefinitions_167 = "Hollow Log"; - public static string ItemDataBase_ItemDefinitions_168 => instance._ItemDataBase_ItemDefinitions_168; - public string _ItemDataBase_ItemDefinitions_168 = "It allows for faster drawing of arrow than a cloth quiver"; - public static string ItemDataBase_ItemDefinitions_169 => instance._ItemDataBase_ItemDefinitions_169; - public string _ItemDataBase_ItemDefinitions_169 = "Spellbound Quiver"; - public static string ItemDataBase_ItemDefinitions_170 => instance._ItemDataBase_ItemDefinitions_170; - public string _ItemDataBase_ItemDefinitions_170 = "Long Lost Quiver"; - public static string ItemDataBase_ItemDefinitions_171 => instance._ItemDataBase_ItemDefinitions_171; - public string _ItemDataBase_ItemDefinitions_171 = "Spell Scroll"; - public static string ItemDataBase_ItemDefinitions_172 => instance._ItemDataBase_ItemDefinitions_172; - public string _ItemDataBase_ItemDefinitions_172 = "Contains a lot of information on how to properly cast spells to achieve better results"; - public static string ItemDataBase_ItemDefinitions_173 => instance._ItemDataBase_ItemDefinitions_173; - public string _ItemDataBase_ItemDefinitions_173 = "Cloth Pants"; - public static string ItemDataBase_ItemDefinitions_174 => instance._ItemDataBase_ItemDefinitions_174; - public string _ItemDataBase_ItemDefinitions_174 = "Offer little protction"; - public static string ItemDataBase_ItemDefinitions_175 => instance._ItemDataBase_ItemDefinitions_175; - public string _ItemDataBase_ItemDefinitions_175 = "Rough Hide Leggins"; - public static string ItemDataBase_ItemDefinitions_176 => instance._ItemDataBase_ItemDefinitions_176; - public string _ItemDataBase_ItemDefinitions_176 = "Plate Leggins"; - public static string ItemDataBase_ItemDefinitions_177 => instance._ItemDataBase_ItemDefinitions_177; - public string _ItemDataBase_ItemDefinitions_177 = "Sage's Robes"; - public static string ItemDataBase_ItemDefinitions_178 => instance._ItemDataBase_ItemDefinitions_178; - public string _ItemDataBase_ItemDefinitions_178 = "Hammer Jammers"; - public static string ItemDataBase_ItemDefinitions_179(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_179, objects); - public string _ItemDataBase_ItemDefinitions_179 = "Damage of your smash attack is increased by {0}, hammer stun duration is doubled"; - public static string ItemDataBase_ItemDefinitions_180 => instance._ItemDataBase_ItemDefinitions_180; - public string _ItemDataBase_ItemDefinitions_180 = "Pirate Pants"; - public static string ItemDataBase_ItemDefinitions_181 => instance._ItemDataBase_ItemDefinitions_181; - public string _ItemDataBase_ItemDefinitions_181 = "Those pants are ligh and comfortable. They offer plenty of mobility but lack in protection."; - public static string ItemDataBase_ItemDefinitions_182 => instance._ItemDataBase_ItemDefinitions_182; - public string _ItemDataBase_ItemDefinitions_182 = "Hexed Pants of Mr M."; - public static string ItemDataBase_ItemDefinitions_183 => instance._ItemDataBase_ItemDefinitions_183; - public string _ItemDataBase_ItemDefinitions_183 = "They look like yoga pants but for a man the size of a wardrobe"; - public static string ItemDataBase_ItemDefinitions_184 => instance._ItemDataBase_ItemDefinitions_184; - public string _ItemDataBase_ItemDefinitions_184 = "Once upon a time there was a man who was in a basement and fed himself with nothing but nuggets. He got so obese that friends and family started worrying. Hazard noticed this man and cursed his pants to force him to excercise."; - public static string ItemDataBase_ItemDefinitions_185(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_185, objects); - public string _ItemDataBase_ItemDefinitions_185 = "While moving, energy regeneration and damage is increased by {0}. While standing still for longer than a second, you loose {1} of max health per second."; - public static string ItemDataBase_ItemDefinitions_186 => instance._ItemDataBase_ItemDefinitions_186; - public string _ItemDataBase_ItemDefinitions_186 = "Leather Mantle"; - public static string ItemDataBase_ItemDefinitions_187 => instance._ItemDataBase_ItemDefinitions_187; - public string _ItemDataBase_ItemDefinitions_187 = "A piece of cloth to give protection from "; - public static string ItemDataBase_ItemDefinitions_188 => instance._ItemDataBase_ItemDefinitions_188; - public string _ItemDataBase_ItemDefinitions_188 = "Shoulder Guards"; - public static string ItemDataBase_ItemDefinitions_189 => instance._ItemDataBase_ItemDefinitions_189; - public string _ItemDataBase_ItemDefinitions_189 = "Medium armor piece."; - public static string ItemDataBase_ItemDefinitions_190 => instance._ItemDataBase_ItemDefinitions_190; - public string _ItemDataBase_ItemDefinitions_190 = "Heavy armor"; - public static string ItemDataBase_ItemDefinitions_191 => instance._ItemDataBase_ItemDefinitions_191; - public string _ItemDataBase_ItemDefinitions_191 = "Heavy Shoulder Plates"; - public static string ItemDataBase_ItemDefinitions_192 => instance._ItemDataBase_ItemDefinitions_192; - public string _ItemDataBase_ItemDefinitions_192 = "Heavy armor piece. They offer great protection at the cost of attack speed and movement speed decrease"; - public static string ItemDataBase_ItemDefinitions_193 => instance._ItemDataBase_ItemDefinitions_193; - public string _ItemDataBase_ItemDefinitions_193 = "Etched Mantle"; - public static string ItemDataBase_ItemDefinitions_194 => instance._ItemDataBase_ItemDefinitions_194; - public string _ItemDataBase_ItemDefinitions_194 = "Those pauldrons empower wearer's combat skill"; - public static string ItemDataBase_ItemDefinitions_195 => instance._ItemDataBase_ItemDefinitions_195; - public string _ItemDataBase_ItemDefinitions_195 = "Assassins Pauldrons"; - public static string ItemDataBase_ItemDefinitions_196 => instance._ItemDataBase_ItemDefinitions_196; - public string _ItemDataBase_ItemDefinitions_196 = "Death Pact"; - public static string ItemDataBase_ItemDefinitions_197 => instance._ItemDataBase_ItemDefinitions_197; - public string _ItemDataBase_ItemDefinitions_197 = "Find the greatest strength on the border of life and death."; - public static string ItemDataBase_ItemDefinitions_198(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_198, objects); - public string _ItemDataBase_ItemDefinitions_198 = "Every attack you make decreases your health by {0} of max health. For every percent of missing health you gain {1} damage amplification. This damage cannot kill you."; - public static string ItemDataBase_ItemDefinitions_199 => instance._ItemDataBase_ItemDefinitions_199; - public string _ItemDataBase_ItemDefinitions_199 = "Maximale Qualitot"; - public static string ItemDataBase_ItemDefinitions_200 => instance._ItemDataBase_ItemDefinitions_200; - public string _ItemDataBase_ItemDefinitions_200 = "A platinum ring with the most expensive jewels engraved on it. It's quality is uncomparable."; - public static string ItemDataBase_ItemDefinitions_201 => instance._ItemDataBase_ItemDefinitions_201; - public string _ItemDataBase_ItemDefinitions_201 = "Heart of Purity"; - public static string ItemDataBase_ItemDefinitions_202 => instance._ItemDataBase_ItemDefinitions_202; - public string _ItemDataBase_ItemDefinitions_202 = "A object filled with both destructive and creative energy. Allows to re-assign all spent mutation points"; - public static string ItemDataBase_ItemDefinitions_203 => instance._ItemDataBase_ItemDefinitions_203; - public string _ItemDataBase_ItemDefinitions_203 = "This powerful relic contains so much power, that it can kill anything and force it to come back to life, resulting in it's rebirth."; - public static string ItemDataBase_ItemDefinitions_204 => instance._ItemDataBase_ItemDefinitions_204; - public string _ItemDataBase_ItemDefinitions_204 = "Can be consumed by right clicking it. "; - public static string ItemDataBase_ItemDefinitions_205 => instance._ItemDataBase_ItemDefinitions_205; - public string _ItemDataBase_ItemDefinitions_205 = "Round Shield"; - public static string ItemDataBase_ItemDefinitions_206 => instance._ItemDataBase_ItemDefinitions_206; - public string _ItemDataBase_ItemDefinitions_206 = "A sturdy shield made of wood and reinforced with iron."; - public static string ItemDataBase_ItemDefinitions_207 => instance._ItemDataBase_ItemDefinitions_207; - public string _ItemDataBase_ItemDefinitions_207 = "Old Buckler"; - public static string ItemDataBase_ItemDefinitions_208 => instance._ItemDataBase_ItemDefinitions_208; - public string _ItemDataBase_ItemDefinitions_208 = "An old shield."; - public static string ItemDataBase_ItemDefinitions_209 => instance._ItemDataBase_ItemDefinitions_209; - public string _ItemDataBase_ItemDefinitions_209 = "This item has a lot of scratches that look like they were made by something with sharp claws."; - public static string ItemDataBase_ItemDefinitions_210 => instance._ItemDataBase_ItemDefinitions_210; - public string _ItemDataBase_ItemDefinitions_210 = "Dark Oak Shield"; - public static string ItemDataBase_ItemDefinitions_211 => instance._ItemDataBase_ItemDefinitions_211; - public string _ItemDataBase_ItemDefinitions_211 = "Bone Shield"; - public static string ItemDataBase_ItemDefinitions_212 => instance._ItemDataBase_ItemDefinitions_212; - public string _ItemDataBase_ItemDefinitions_212 = "A shield made of bones, held together by thick steel wire."; - public static string ItemDataBase_ItemDefinitions_213 => instance._ItemDataBase_ItemDefinitions_213; - public string _ItemDataBase_ItemDefinitions_213 = "Dull Longsword"; - public static string ItemDataBase_ItemDefinitions_214 => instance._ItemDataBase_ItemDefinitions_214; - public string _ItemDataBase_ItemDefinitions_214 = "It's round on the edges"; - public static string ItemDataBase_ItemDefinitions_215 => instance._ItemDataBase_ItemDefinitions_215; - public string _ItemDataBase_ItemDefinitions_215 = "Iron Horn"; - public static string ItemDataBase_ItemDefinitions_216(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_216, objects); - public string _ItemDataBase_ItemDefinitions_216 = "When using Warcry, you and all allies recieve armor bonus equal to {0} of your armor"; - public static string ItemDataBase_ItemDefinitions_217 => instance._ItemDataBase_ItemDefinitions_217; - public string _ItemDataBase_ItemDefinitions_217 = "The Great Iron Horn"; - public static string ItemDataBase_ItemDefinitions_218 => instance._ItemDataBase_ItemDefinitions_218; - public string _ItemDataBase_ItemDefinitions_218 = "Horned Helmet"; - public static string ItemDataBase_ItemDefinitions_219 => instance._ItemDataBase_ItemDefinitions_219; - public string _ItemDataBase_ItemDefinitions_219 = "A viking helmet"; - public static string ItemDataBase_ItemDefinitions_220 => instance._ItemDataBase_ItemDefinitions_220; - public string _ItemDataBase_ItemDefinitions_220 = "Mask"; - public static string ItemDataBase_ItemDefinitions_221 => instance._ItemDataBase_ItemDefinitions_221; - public string _ItemDataBase_ItemDefinitions_221 = "Mask of Madness"; - public static string ItemDataBase_ItemDefinitions_222 => instance._ItemDataBase_ItemDefinitions_222; - public string _ItemDataBase_ItemDefinitions_222 = "Old Scroll"; - public static string ItemDataBase_ItemDefinitions_223 => instance._ItemDataBase_ItemDefinitions_223; - public string _ItemDataBase_ItemDefinitions_223 = "Wormhole Stabilizators"; - public static string ItemDataBase_ItemDefinitions_224 => instance._ItemDataBase_ItemDefinitions_224; - public string _ItemDataBase_ItemDefinitions_224 = "High-tech gear"; - public static string ItemDataBase_ItemDefinitions_225 => instance._ItemDataBase_ItemDefinitions_225; - public string _ItemDataBase_ItemDefinitions_225 = "Hazard remember to put some fucking lore in here, don't leave it like this!"; - public static string ItemDataBase_ItemDefinitions_226(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_226, objects); - public string _ItemDataBase_ItemDefinitions_226 = "Increases the duration of a portal by {0} seconds"; - public static string ItemDataBase_ItemDefinitions_227 => instance._ItemDataBase_ItemDefinitions_227; - public string _ItemDataBase_ItemDefinitions_227 = "Cripplers"; - public static string ItemDataBase_ItemDefinitions_228(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_228, objects); - public string _ItemDataBase_ItemDefinitions_228 = "Increases the duration of a magic arrow's negative effect by {0} seconds"; - public static string ItemDataBase_ItemDefinitions_229 => instance._ItemDataBase_ItemDefinitions_229; - public string _ItemDataBase_ItemDefinitions_229 = "Crossfire"; - public static string ItemDataBase_ItemDefinitions_230 => instance._ItemDataBase_ItemDefinitions_230; - public string _ItemDataBase_ItemDefinitions_230 = "Infused with powerful magic. This item is a dangerous tool of destruction."; - public static string ItemDataBase_ItemDefinitions_231 => instance._ItemDataBase_ItemDefinitions_231; - public string _ItemDataBase_ItemDefinitions_231 = "When hitting an enemy with a projectile, create a magic arrow pointed at the enemy and shoot it without using in energy. This effect may occur once every 2 seconds, but can be interval can be shortened with cooldown reduction."; - public static string ItemDataBase_ItemDefinitions_232 => instance._ItemDataBase_ItemDefinitions_232; - public string _ItemDataBase_ItemDefinitions_232 = "Scroll of Recovery"; - public static string ItemDataBase_ItemDefinitions_233 => instance._ItemDataBase_ItemDefinitions_233; - public string _ItemDataBase_ItemDefinitions_233 = "Recovers health and stamina"; - public static string ItemDataBase_ItemDefinitions_234 => instance._ItemDataBase_ItemDefinitions_234; - public string _ItemDataBase_ItemDefinitions_234 = "Tiara"; - public static string ItemDataBase_ItemDefinitions_235 => instance._ItemDataBase_ItemDefinitions_235; - public string _ItemDataBase_ItemDefinitions_235 = "A beautiful tiara "; - public static string ItemDataBase_ItemDefinitions_236 => instance._ItemDataBase_ItemDefinitions_236; - public string _ItemDataBase_ItemDefinitions_236 = "This tiara may not provide much protection, but it sure is pretty"; - public static string ItemDataBase_ItemDefinitions_237 => instance._ItemDataBase_ItemDefinitions_237; - public string _ItemDataBase_ItemDefinitions_237 = "Shiny"; - public static string ItemDataBase_ItemDefinitions_238 => instance._ItemDataBase_ItemDefinitions_238; - public string _ItemDataBase_ItemDefinitions_238 = "Chastity belt"; - public static string ItemDataBase_ItemDefinitions_239 => instance._ItemDataBase_ItemDefinitions_239; - public string _ItemDataBase_ItemDefinitions_239 = "Dodge those fukbois"; - public static string ItemDataBase_ItemDefinitions_240 => instance._ItemDataBase_ItemDefinitions_240; - public string _ItemDataBase_ItemDefinitions_240 = "This belt will stop those cheeky cannibals and armsies from getting into your pants"; - public static string ItemDataBase_ItemDefinitions_241(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_241, objects); - public string _ItemDataBase_ItemDefinitions_241 = " {0} damage reduction while sleeping"; - public static string ItemDataBase_ItemDefinitions_242 => instance._ItemDataBase_ItemDefinitions_242; - public string _ItemDataBase_ItemDefinitions_242 = "Ice Scroll"; - public static string ItemDataBase_ItemDefinitions_243 => instance._ItemDataBase_ItemDefinitions_243; - public string _ItemDataBase_ItemDefinitions_243 = "A spell surrounded by flying shards of ice, contains tramendous power of cold."; - public static string ItemDataBase_ItemDefinitions_244 => instance._ItemDataBase_ItemDefinitions_244; - public string _ItemDataBase_ItemDefinitions_244 = "Created at the top of the mountain."; - public static string ItemDataBase_ItemDefinitions_245 => instance._ItemDataBase_ItemDefinitions_245; - public string _ItemDataBase_ItemDefinitions_245 = "Motorboat Modification Blueprints"; - public static string ItemDataBase_ItemDefinitions_246 => instance._ItemDataBase_ItemDefinitions_246; - public string _ItemDataBase_ItemDefinitions_246 = "Sheet of paper that allows to turn any raft into a high speed. Increases carry amount and increases speed of rafts."; - public static string ItemDataBase_ItemDefinitions_247 => instance._ItemDataBase_ItemDefinitions_247; - public string _ItemDataBase_ItemDefinitions_247 = "Who did this lmao."; - public static string ItemDataBase_ItemDefinitions_248 => instance._ItemDataBase_ItemDefinitions_248; - public string _ItemDataBase_ItemDefinitions_248 = "Axe of Swiftness"; - public static string ItemDataBase_ItemDefinitions_249 => instance._ItemDataBase_ItemDefinitions_249; - public string _ItemDataBase_ItemDefinitions_249 = "Severer"; - public static string ItemDataBase_ItemDefinitions_250 => instance._ItemDataBase_ItemDefinitions_250; - public string _ItemDataBase_ItemDefinitions_250 = "Golden Axe of Fortune"; - public static string ItemDataBase_ItemDefinitions_251 => instance._ItemDataBase_ItemDefinitions_251; - public string _ItemDataBase_ItemDefinitions_251 = "Axe of Misfortune"; - public static string ItemDataBase_ItemDefinitions_252 => instance._ItemDataBase_ItemDefinitions_252; - public string _ItemDataBase_ItemDefinitions_252 = "Misfortunate are the ones on the recieving end. They will bleed a lot"; - public static string ItemDataBase_ItemDefinitions_253 => instance._ItemDataBase_ItemDefinitions_253; - public string _ItemDataBase_ItemDefinitions_253 = "Golden Ring"; - public static string ItemDataBase_ItemDefinitions_254 => instance._ItemDataBase_ItemDefinitions_254; - public string _ItemDataBase_ItemDefinitions_254 = "Golden Locket"; - public static string ItemDataBase_ItemDefinitions_255 => instance._ItemDataBase_ItemDefinitions_255; - public string _ItemDataBase_ItemDefinitions_255 = "Dull Axe"; - public static string ItemDataBase_ItemDefinitions_256 => instance._ItemDataBase_ItemDefinitions_256; - public string _ItemDataBase_ItemDefinitions_256 = "Precise Adjustments"; - public static string ItemDataBase_ItemDefinitions_257(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_257, objects); - public string _ItemDataBase_ItemDefinitions_257 = "Focus attack speed buff duration is increased by {0} seconds"; - public static string ItemDataBase_ItemDefinitions_258 => instance._ItemDataBase_ItemDefinitions_258; - public string _ItemDataBase_ItemDefinitions_258 = "Rage"; - public static string ItemDataBase_ItemDefinitions_259(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_259, objects); - public string _ItemDataBase_ItemDefinitions_259 = "Increases maximum stacks of frenzy by {0}"; - public static string ItemDataBase_ItemDefinitions_260 => instance._ItemDataBase_ItemDefinitions_260; - public string _ItemDataBase_ItemDefinitions_260 = "Swords go brrrrrrttt"; - public static string ItemDataBase_ItemDefinitions_261 => instance._ItemDataBase_ItemDefinitions_261; - public string _ItemDataBase_ItemDefinitions_261 = "Jagged Edge"; - public static string ItemDataBase_ItemDefinitions_262(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_262, objects); - public string _ItemDataBase_ItemDefinitions_262 = "Bash has {0} a chance to make enemies to bleed for {1} of damage dealt per second for duration of slow"; - public static string ItemDataBase_ItemDefinitions_263 => instance._ItemDataBase_ItemDefinitions_263; - public string _ItemDataBase_ItemDefinitions_263 = "Bloodthirster"; - public static string ItemDataBase_ItemDefinitions_264 => instance._ItemDataBase_ItemDefinitions_264; - public string _ItemDataBase_ItemDefinitions_264 = "Drenched in blood of many unfortunate foes."; - public static string ItemDataBase_ItemDefinitions_265(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_265, objects); - public string _ItemDataBase_ItemDefinitions_265 = "Bash lifesteals {0} of damage dealt into energy and health"; - public static string ItemDataBase_ItemDefinitions_266 => instance._ItemDataBase_ItemDefinitions_266; - public string _ItemDataBase_ItemDefinitions_266 = "Frost Giant"; - public static string ItemDataBase_ItemDefinitions_267 => instance._ItemDataBase_ItemDefinitions_267; - public string _ItemDataBase_ItemDefinitions_267 = "Melee hits freeze enemies"; - public static string ItemDataBase_ItemDefinitions_268 => instance._ItemDataBase_ItemDefinitions_268; - public string _ItemDataBase_ItemDefinitions_268 = "Alexander's Shield"; - public static string ItemDataBase_ItemDefinitions_269 => instance._ItemDataBase_ItemDefinitions_269; - public string _ItemDataBase_ItemDefinitions_269 = "Parry has a chance to be casted when getting it. Requires parry to be equipped"; - public static string ItemDataBase_ItemDefinitions_270 => instance._ItemDataBase_ItemDefinitions_270; - public string _ItemDataBase_ItemDefinitions_270 = "King Qruies"; - public static string ItemDataBase_ItemDefinitions_271 => instance._ItemDataBase_ItemDefinitions_271; - public string _ItemDataBase_ItemDefinitions_271 = "A mighty sword seeking for it's owner"; - public static string ItemDataBase_ItemDefinitions_272 => instance._ItemDataBase_ItemDefinitions_272; - public string _ItemDataBase_ItemDefinitions_272 = "Gain additional melee damage equal to the last instance of physical damage taken."; - public static string ItemDataBase_ItemDefinitions_273 => instance._ItemDataBase_ItemDefinitions_273; - public string _ItemDataBase_ItemDefinitions_273 = "Grip of Sora"; - public static string ItemDataBase_ItemDefinitions_274 => instance._ItemDataBase_ItemDefinitions_274; - public string _ItemDataBase_ItemDefinitions_274 = "Look, a porcupine! -Sora"; - public static string ItemDataBase_ItemDefinitions_275(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_275, objects); - public string _ItemDataBase_ItemDefinitions_275 = "Multishot drains {0} less energy and shoots +4 projectiles. Additional projectiles do not increase the cost of multishot"; - public static string ItemDataBase_ItemDefinitions_276 => instance._ItemDataBase_ItemDefinitions_276; - public string _ItemDataBase_ItemDefinitions_276 = "Ancient Greatbow"; - public static string ItemDataBase_ItemDefinitions_277 => instance._ItemDataBase_ItemDefinitions_277; - public string _ItemDataBase_ItemDefinitions_277 = "A massive and slow bow, deals extra damage"; - public static string ItemDataBase_ItemDefinitions_278 => instance._ItemDataBase_ItemDefinitions_278; - public string _ItemDataBase_ItemDefinitions_278 = "Phoenix's Death"; - public static string ItemDataBase_ItemDefinitions_279 => instance._ItemDataBase_ItemDefinitions_279; - public string _ItemDataBase_ItemDefinitions_279 = "Ignites enemies on hit"; - public static string ItemDataBase_ItemDefinitions_280 => instance._ItemDataBase_ItemDefinitions_280; - public string _ItemDataBase_ItemDefinitions_280 = "Soulstring"; - public static string ItemDataBase_ItemDefinitions_281 => instance._ItemDataBase_ItemDefinitions_281; - public string _ItemDataBase_ItemDefinitions_281 = "A massive and slow bow"; - public static string ItemDataBase_ItemDefinitions_282(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_282, objects); - public string _ItemDataBase_ItemDefinitions_282 = "Blood infused arrow now deals additional {0} points of damage per health consumed"; - public static string ItemDataBase_ItemDefinitions_283 => instance._ItemDataBase_ItemDefinitions_283; - public string _ItemDataBase_ItemDefinitions_283 = "Greatbow"; - public static string ItemDataBase_ItemDefinitions_284 => instance._ItemDataBase_ItemDefinitions_284; - public string _ItemDataBase_ItemDefinitions_284 = "Withered Crown"; - public static string ItemDataBase_ItemDefinitions_285 => instance._ItemDataBase_ItemDefinitions_285; - public string _ItemDataBase_ItemDefinitions_285 = "Worn by Hazard."; - public static string ItemDataBase_ItemDefinitions_286(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_286, objects); - public string _ItemDataBase_ItemDefinitions_286 = "A single cast of blood infused arrow affects {0} more projectiles"; - public static string ItemDataBase_ItemDefinitions_287 => instance._ItemDataBase_ItemDefinitions_287; - public string _ItemDataBase_ItemDefinitions_287 = "Novice Magic Caster's Bracers"; - public static string ItemDataBase_ItemDefinitions_288 => instance._ItemDataBase_ItemDefinitions_288; - public string _ItemDataBase_ItemDefinitions_288 = "Ranger's Bracers"; - public static string ItemDataBase_ItemDefinitions_289 => instance._ItemDataBase_ItemDefinitions_289; - public string _ItemDataBase_ItemDefinitions_289 = "Swordsman's Bracers"; - public static string ItemDataBase_ItemDefinitions_290 => instance._ItemDataBase_ItemDefinitions_290; - public string _ItemDataBase_ItemDefinitions_290 = "Healer's Bracers"; - public static string ItemDataBase_ItemDefinitions_291 => instance._ItemDataBase_ItemDefinitions_291; - public string _ItemDataBase_ItemDefinitions_291 = "Novice Magic Caster's Gloves"; - public static string ItemDataBase_ItemDefinitions_292 => instance._ItemDataBase_ItemDefinitions_292; - public string _ItemDataBase_ItemDefinitions_292 = "Ranger's Gloves"; - public static string ItemDataBase_ItemDefinitions_293 => instance._ItemDataBase_ItemDefinitions_293; - public string _ItemDataBase_ItemDefinitions_293 = "Swordsman's Gloves"; - public static string ItemDataBase_ItemDefinitions_294 => instance._ItemDataBase_ItemDefinitions_294; - public string _ItemDataBase_ItemDefinitions_294 = "Healer's Gloves"; - public static string ItemDataBase_ItemDefinitions_295 => instance._ItemDataBase_ItemDefinitions_295; - public string _ItemDataBase_ItemDefinitions_295 = "Fate Gloves"; - public static string ItemDataBase_ItemDefinitions_296 => instance._ItemDataBase_ItemDefinitions_296; - public string _ItemDataBase_ItemDefinitions_296 = "Fate Boots"; - public static string ItemDataBase_ItemDefinitions_297 => instance._ItemDataBase_ItemDefinitions_297; - public string _ItemDataBase_ItemDefinitions_297 = "Greed"; - public static string ItemDataBase_ItemDefinitions_298 => instance._ItemDataBase_ItemDefinitions_298; - public string _ItemDataBase_ItemDefinitions_298 = "Automatically casts wide reach every second"; - public static string ItemDataBase_ItemDefinitions_299 => instance._ItemDataBase_ItemDefinitions_299; - public string _ItemDataBase_ItemDefinitions_299 = "Titanium Leggins"; - public static string ItemDataBase_ItemDefinitions_300 => instance._ItemDataBase_ItemDefinitions_300; - public string _ItemDataBase_ItemDefinitions_300 = "Heavily armored leg protection. Suffers from the same weaknesses as spartan armor."; - public static string ItemDataBase_ItemDefinitions_301 => instance._ItemDataBase_ItemDefinitions_301; - public string _ItemDataBase_ItemDefinitions_301 = "Iron Gauntlet"; - public static string ItemDataBase_ItemDefinitions_302 => instance._ItemDataBase_ItemDefinitions_302; - public string _ItemDataBase_ItemDefinitions_302 = "Magefist"; - public static string ItemDataBase_ItemDefinitions_303 => instance._ItemDataBase_ItemDefinitions_303; - public string _ItemDataBase_ItemDefinitions_303 = "Gloves that amplify magic"; - public static string ItemDataBase_ItemDefinitions_304 => instance._ItemDataBase_ItemDefinitions_304; - public string _ItemDataBase_ItemDefinitions_304 = "Spells deal double damage but have double the energy cost"; - public static string ItemDataBase_ItemDefinitions_305 => instance._ItemDataBase_ItemDefinitions_305; - public string _ItemDataBase_ItemDefinitions_305 = "Armored Boots"; - public static string ItemDataBase_ItemDefinitions_306 => instance._ItemDataBase_ItemDefinitions_306; - public string _ItemDataBase_ItemDefinitions_306 = "Heavily armored, resistant to damage boots."; - public static string ItemDataBase_ItemDefinitions_307 => instance._ItemDataBase_ItemDefinitions_307; - public string _ItemDataBase_ItemDefinitions_307 = "Broken Protector"; - public static string ItemDataBase_ItemDefinitions_308 => instance._ItemDataBase_ItemDefinitions_308; - public string _ItemDataBase_ItemDefinitions_308 = "This shield failed to protect those behind it."; - public static string ItemDataBase_ItemDefinitions_309 => instance._ItemDataBase_ItemDefinitions_309; - public string _ItemDataBase_ItemDefinitions_309 = "Forbidden Scroll"; - public static string ItemDataBase_ItemDefinitions_310 => instance._ItemDataBase_ItemDefinitions_310; - public string _ItemDataBase_ItemDefinitions_310 = "Too powerful to be kept."; - public static string ItemDataBase_ItemDefinitions_311 => instance._ItemDataBase_ItemDefinitions_311; - public string _ItemDataBase_ItemDefinitions_311 = "Doom Pauldrons"; - public static string ItemDataBase_ItemDefinitions_312 => instance._ItemDataBase_ItemDefinitions_312; - public string _ItemDataBase_ItemDefinitions_312 = "Despite the cool name, they are completely normal pair of shoulder armor."; - public static string ItemDataBase_ItemDefinitions_313 => instance._ItemDataBase_ItemDefinitions_313; - public string _ItemDataBase_ItemDefinitions_313 = "Wind armor"; - public static string ItemDataBase_ItemDefinitions_314 => instance._ItemDataBase_ItemDefinitions_314; - public string _ItemDataBase_ItemDefinitions_314 = "Run fast like the wind"; - public static string ItemDataBase_ItemDefinitions_315(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_315, objects); - public string _ItemDataBase_ItemDefinitions_315 = "Upon dodging an attack, gain {0} movement speed, {1} damage, {2} armor, and heal for {3} of your maximum health"; - public static string ItemDataBase_ItemDefinitions_316 => instance._ItemDataBase_ItemDefinitions_316; - public string _ItemDataBase_ItemDefinitions_316 = "Crusader Helmet"; - public static string ItemDataBase_ItemDefinitions_317 => instance._ItemDataBase_ItemDefinitions_317; - public string _ItemDataBase_ItemDefinitions_317 = "You're talking mad shit for someone within crusading distance"; - public static string ItemDataBase_ItemDefinitions_318 => instance._ItemDataBase_ItemDefinitions_318; - public string _ItemDataBase_ItemDefinitions_318 = "Hood"; - public static string ItemDataBase_ItemDefinitions_319 => instance._ItemDataBase_ItemDefinitions_319; - public string _ItemDataBase_ItemDefinitions_319 = "Hats provide usefull stat bonuses"; - public static string ItemDataBase_ItemDefinitions_320 => instance._ItemDataBase_ItemDefinitions_320; - public string _ItemDataBase_ItemDefinitions_320 = "The Spark of Light in The Darkness"; - public static string ItemDataBase_ItemDefinitions_321 => instance._ItemDataBase_ItemDefinitions_321; - public string _ItemDataBase_ItemDefinitions_321 = "Magic Scroll of great quality"; - public static string ItemDataBase_ItemDefinitions_322 => instance._ItemDataBase_ItemDefinitions_322; - public string _ItemDataBase_ItemDefinitions_322 = "Written in a language i canno't understand. Decyphering this text is impossible, so is the full utilization of the scroll."; - public static string ItemDataBase_ItemDefinitions_323(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_323, objects); - public string _ItemDataBase_ItemDefinitions_323 = "If a black hole hits {0} or more enemies during it's lifetime, a ball lightning is summoned after it ends."; - public static string ItemDataBase_ItemDefinitions_324 => instance._ItemDataBase_ItemDefinitions_324; - public string _ItemDataBase_ItemDefinitions_324 = "Purgatory"; - public static string ItemDataBase_ItemDefinitions_325 => instance._ItemDataBase_ItemDefinitions_325; - public string _ItemDataBase_ItemDefinitions_325 = "Golden ring with a bone chilling feel about it. This thing will only bring harm, but not to the wearer"; - public static string ItemDataBase_ItemDefinitions_326 => instance._ItemDataBase_ItemDefinitions_326; - public string _ItemDataBase_ItemDefinitions_326 = "Ring made of Netherrite"; - public static string ItemDataBase_ItemDefinitions_327(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_327, objects); - public string _ItemDataBase_ItemDefinitions_327 = "Purge increases all of your damage based on missing health. Up to {0}"; - public static string ItemDataBase_ItemDefinitions_328 => instance._ItemDataBase_ItemDefinitions_328; - public string _ItemDataBase_ItemDefinitions_328 = "Eruption"; - public static string ItemDataBase_ItemDefinitions_329 => instance._ItemDataBase_ItemDefinitions_329; - public string _ItemDataBase_ItemDefinitions_329 = "Incarnation of devastation"; - public static string ItemDataBase_ItemDefinitions_330 => instance._ItemDataBase_ItemDefinitions_330; - public string _ItemDataBase_ItemDefinitions_330 = "Headshots cause explosions"; - public static string ItemDataBase_ItemDefinitions_331 => instance._ItemDataBase_ItemDefinitions_331; - public string _ItemDataBase_ItemDefinitions_331 = "Archangel"; - public static string ItemDataBase_ItemDefinitions_332 => instance._ItemDataBase_ItemDefinitions_332; - public string _ItemDataBase_ItemDefinitions_332 = "Spread the goodness"; - public static string ItemDataBase_ItemDefinitions_333(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_333, objects); - public string _ItemDataBase_ItemDefinitions_333 = "Shooting another player causes them to be greatly empowered for {0} seconds"; - public static string ItemDataBase_ItemDefinitions_334 => instance._ItemDataBase_ItemDefinitions_334; - public string _ItemDataBase_ItemDefinitions_334 = "The Executioner"; - public static string ItemDataBase_ItemDefinitions_335 => instance._ItemDataBase_ItemDefinitions_335; - public string _ItemDataBase_ItemDefinitions_335 = "A sword for decapitating"; - public static string ItemDataBase_ItemDefinitions_336 => instance._ItemDataBase_ItemDefinitions_336; - public string _ItemDataBase_ItemDefinitions_336 = "Moon Cuirass"; - public static string ItemDataBase_ItemDefinitions_337 => instance._ItemDataBase_ItemDefinitions_337; - public string _ItemDataBase_ItemDefinitions_337 = "A piece of armor designed for an archer. "; - public static string ItemDataBase_ItemDefinitions_338(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_338, objects); - public string _ItemDataBase_ItemDefinitions_338 = "Landing a headshot with an arrow without the homing effect of seeking arrow at a distance greater than {0} feet deals tenfold damage, and hits the enemy two extra times"; - public static string ItemDataBase_ItemDefinitions_339 => instance._ItemDataBase_ItemDefinitions_339; - public string _ItemDataBase_ItemDefinitions_339 = "Thornmail"; - public static string ItemDataBase_ItemDefinitions_340 => instance._ItemDataBase_ItemDefinitions_340; - public string _ItemDataBase_ItemDefinitions_340 = "Spiked death on the outside, really comfy on the inside"; - public static string ItemDataBase_ItemDefinitions_341 => instance._ItemDataBase_ItemDefinitions_341; - public string _ItemDataBase_ItemDefinitions_341 = "Thorns deal double damage"; - public static string ItemDataBase_ItemDefinitions_342 => instance._ItemDataBase_ItemDefinitions_342; - public string _ItemDataBase_ItemDefinitions_342 = "Rusty Polearm"; - public static string ItemDataBase_ItemDefinitions_343 => instance._ItemDataBase_ItemDefinitions_343; - public string _ItemDataBase_ItemDefinitions_343 = "Used by the Ubersreik Five"; - public static string ItemDataBase_ItemDefinitions_344 => instance._ItemDataBase_ItemDefinitions_344; - public string _ItemDataBase_ItemDefinitions_344 = "Giant Polearm"; - public static string ItemDataBase_ItemDefinitions_345 => instance._ItemDataBase_ItemDefinitions_345; - public string _ItemDataBase_ItemDefinitions_345 = "Used by the Sir Kruber"; - public static string ItemDataBase_ItemDefinitions_346 => instance._ItemDataBase_ItemDefinitions_346; - public string _ItemDataBase_ItemDefinitions_346 = "Crude Feather"; - public static string ItemDataBase_ItemDefinitions_347 => instance._ItemDataBase_ItemDefinitions_347; - public string _ItemDataBase_ItemDefinitions_347 = "Materials can be put inside empty sockets to add stats to items"; - public static string ItemDataBase_ItemDefinitions_348 => instance._ItemDataBase_ItemDefinitions_348; - public string _ItemDataBase_ItemDefinitions_348 = "Soft Feather"; - public static string ItemDataBase_ItemDefinitions_349 => instance._ItemDataBase_ItemDefinitions_349; - public string _ItemDataBase_ItemDefinitions_349 = "Ornate Feather"; - public static string ItemDataBase_ItemDefinitions_350 => instance._ItemDataBase_ItemDefinitions_350; - public string _ItemDataBase_ItemDefinitions_350 = "Wonderful Feather"; - public static string ItemDataBase_ItemDefinitions_351 => instance._ItemDataBase_ItemDefinitions_351; - public string _ItemDataBase_ItemDefinitions_351 = "White Crow's Feather"; - public static string ItemDataBase_ItemDefinitions_352 => instance._ItemDataBase_ItemDefinitions_352; - public string _ItemDataBase_ItemDefinitions_352 = "Reef Shark"; - public static string ItemDataBase_ItemDefinitions_353 => instance._ItemDataBase_ItemDefinitions_353; - public string _ItemDataBase_ItemDefinitions_353 = "Tiger Shark Tooth"; - public static string ItemDataBase_ItemDefinitions_354 => instance._ItemDataBase_ItemDefinitions_354; - public string _ItemDataBase_ItemDefinitions_354 = "Whale Shark Tooth"; - public static string ItemDataBase_ItemDefinitions_355 => instance._ItemDataBase_ItemDefinitions_355; - public string _ItemDataBase_ItemDefinitions_355 = "Great White Shark Tooth"; - public static string ItemDataBase_ItemDefinitions_356 => instance._ItemDataBase_ItemDefinitions_356; - public string _ItemDataBase_ItemDefinitions_356 = "Megalodon's Tooth"; - public static string ItemDataBase_ItemDefinitions_357 => instance._ItemDataBase_ItemDefinitions_357; - public string _ItemDataBase_ItemDefinitions_357 = "Uncut Sapphire"; - public static string ItemDataBase_ItemDefinitions_358 => instance._ItemDataBase_ItemDefinitions_358; - public string _ItemDataBase_ItemDefinitions_358 = "Clear Sapphire"; - public static string ItemDataBase_ItemDefinitions_359 => instance._ItemDataBase_ItemDefinitions_359; - public string _ItemDataBase_ItemDefinitions_359 = "Shiny Sapphire"; - public static string ItemDataBase_ItemDefinitions_360 => instance._ItemDataBase_ItemDefinitions_360; - public string _ItemDataBase_ItemDefinitions_360 = "Enchanted Sapphire"; - public static string ItemDataBase_ItemDefinitions_361 => instance._ItemDataBase_ItemDefinitions_361; - public string _ItemDataBase_ItemDefinitions_361 = "Celestial Sapphire"; - public static string ItemDataBase_ItemDefinitions_362 => instance._ItemDataBase_ItemDefinitions_362; - public string _ItemDataBase_ItemDefinitions_362 = "Uncut Moonstone"; - public static string ItemDataBase_ItemDefinitions_363 => instance._ItemDataBase_ItemDefinitions_363; - public string _ItemDataBase_ItemDefinitions_363 = "Clear Moonstone"; - public static string ItemDataBase_ItemDefinitions_364 => instance._ItemDataBase_ItemDefinitions_364; - public string _ItemDataBase_ItemDefinitions_364 = "Shiny Moonstone"; - public static string ItemDataBase_ItemDefinitions_365 => instance._ItemDataBase_ItemDefinitions_365; - public string _ItemDataBase_ItemDefinitions_365 = "Enchanted Moonstone"; - public static string ItemDataBase_ItemDefinitions_366 => instance._ItemDataBase_ItemDefinitions_366; - public string _ItemDataBase_ItemDefinitions_366 = "Celestial Moonstone"; - public static string ItemDataBase_ItemDefinitions_367 => instance._ItemDataBase_ItemDefinitions_367; - public string _ItemDataBase_ItemDefinitions_367 = "Lead Ore"; - public static string ItemDataBase_ItemDefinitions_368 => instance._ItemDataBase_ItemDefinitions_368; - public string _ItemDataBase_ItemDefinitions_368 = "Vanadium Ore"; - public static string ItemDataBase_ItemDefinitions_369 => instance._ItemDataBase_ItemDefinitions_369; - public string _ItemDataBase_ItemDefinitions_369 = "Titanium Ore"; - public static string ItemDataBase_ItemDefinitions_370 => instance._ItemDataBase_ItemDefinitions_370; - public string _ItemDataBase_ItemDefinitions_370 = "Chromium Ore"; - public static string ItemDataBase_ItemDefinitions_371 => instance._ItemDataBase_ItemDefinitions_371; - public string _ItemDataBase_ItemDefinitions_371 = "Tungsten Ore"; - public static string ItemDataBase_ItemDefinitions_372 => instance._ItemDataBase_ItemDefinitions_372; - public string _ItemDataBase_ItemDefinitions_372 = "Knife on a stick"; - public static string ItemDataBase_ItemDefinitions_373 => instance._ItemDataBase_ItemDefinitions_373; - public string _ItemDataBase_ItemDefinitions_373 = "Kasper named this item, his fault"; - public static string ItemDataBase_ItemDefinitions_374 => instance._ItemDataBase_ItemDefinitions_374; - public string _ItemDataBase_ItemDefinitions_374 = "Fists of Nails"; - public static string ItemDataBase_ItemDefinitions_375 => instance._ItemDataBase_ItemDefinitions_375; - public string _ItemDataBase_ItemDefinitions_375 = "Swiss sheese makers"; - public static string ItemDataBase_ItemDefinitions_376(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_376, objects); - public string _ItemDataBase_ItemDefinitions_376 = "Gain {0} thorns per vitality"; - public static string ItemDataBase_ItemDefinitions_377 => instance._ItemDataBase_ItemDefinitions_377; - public string _ItemDataBase_ItemDefinitions_377 = "Cargo Shorts MK2"; - public static string ItemDataBase_ItemDefinitions_378 => instance._ItemDataBase_ItemDefinitions_378; - public string _ItemDataBase_ItemDefinitions_378 = "Deepest pockets out there"; - public static string ItemDataBase_ItemDefinitions_379 => instance._ItemDataBase_ItemDefinitions_379; - public string _ItemDataBase_ItemDefinitions_379 = "Improved cargo pants. Twice as many pockets, and since they didnt fit on the outside, they are inside. They are still ugly as hell tho"; - public static string ItemDataBase_ItemDefinitions_380 => instance._ItemDataBase_ItemDefinitions_380; - public string _ItemDataBase_ItemDefinitions_380 = "Aezyn"; - public static string ItemDataBase_ItemDefinitions_381 => instance._ItemDataBase_ItemDefinitions_381; - public string _ItemDataBase_ItemDefinitions_381 = "Enchanted with magic as strong as power swing. It's purpose? Hit harder."; - public static string ItemDataBase_ItemDefinitions_382(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_382, objects); - public string _ItemDataBase_ItemDefinitions_382 = "Magic arrow damage scaling is increased by {0}"; - public static string ItemDataBase_ItemDefinitions_383 => instance._ItemDataBase_ItemDefinitions_383; - public string _ItemDataBase_ItemDefinitions_383 = "Punny's Reflective Ring"; - public static string ItemDataBase_ItemDefinitions_384 => instance._ItemDataBase_ItemDefinitions_384; - public string _ItemDataBase_ItemDefinitions_384 = "Magic arrow is shot in volleys. This effect can stack."; - public static string ItemDataBase_ItemDefinitions_385 => instance._ItemDataBase_ItemDefinitions_385; - public string _ItemDataBase_ItemDefinitions_385 = "Eyepatch"; - public static string ItemDataBase_ItemDefinitions_386 => instance._ItemDataBase_ItemDefinitions_386; - public string _ItemDataBase_ItemDefinitions_386 = "A wise man once said:"; - public static string ItemDataBase_ItemDefinitions_387 => instance._ItemDataBase_ItemDefinitions_387; - public string _ItemDataBase_ItemDefinitions_387 = "Everyone thinks I'm just a one-eyed bloody monster, god damnit... (sobbing)"; - public static string ItemDataBase_ItemDefinitions_388 => instance._ItemDataBase_ItemDefinitions_388; - public string _ItemDataBase_ItemDefinitions_388 = "Explosion damage is also applied when performing jump attacks"; - public static string ItemDataBase_ItemDefinitions_389 => instance._ItemDataBase_ItemDefinitions_389; - public string _ItemDataBase_ItemDefinitions_389 = "Javelin"; - public static string ItemDataBase_ItemDefinitions_390 => instance._ItemDataBase_ItemDefinitions_390; - public string _ItemDataBase_ItemDefinitions_390 = "Warplate"; - public static string ItemDataBase_ItemDefinitions_391 => instance._ItemDataBase_ItemDefinitions_391; - public string _ItemDataBase_ItemDefinitions_391 = "Enchanted with the power of the GOD's armor. It's purpose? Hit harder, daddy."; - public static string ItemDataBase_ItemDefinitions_392 => instance._ItemDataBase_ItemDefinitions_392; - public string _ItemDataBase_ItemDefinitions_392 = "Strength comes from the power of will, the stronger the will the stronger you are"; - public static string ItemDataBase_ItemDefinitions_393 => instance._ItemDataBase_ItemDefinitions_393; - public string _ItemDataBase_ItemDefinitions_393 = "Torso of Strength"; - public static string ItemDataBase_ItemDefinitions_394 => instance._ItemDataBase_ItemDefinitions_394; - public string _ItemDataBase_ItemDefinitions_394 = "Demoman's Vest"; - public static string ItemDataBase_ItemDefinitions_395 => instance._ItemDataBase_ItemDefinitions_395; - public string _ItemDataBase_ItemDefinitions_395 = "What makes me a good demoman? If I were a bad demoman, I wouldn't be sittin' here discussin' it with you, now would I?! LET'S DO IT! Not one of you's gonna survive this! One crossed wire, one wayward pinch of potassium chlorate, one errant twitch, and KA-BLOOIE! I got a manky eye. I'm a black Scottish cyclops. They got more fecking sea monsters in the great Lochett Ness than they got the likes of me. So! T'all you fine dandies, so proud, so cocksure, prancin' about with your heads full of eyeballs... come and get me, I say! I'll be waitin' on you with a whiff of the old brimstone! I'm a Grimm bloody fable with an unhappy bloody end! Oh, they're going to have to glue you back together...IN HELL!"; - public static string ItemDataBase_ItemDefinitions_396 => instance._ItemDataBase_ItemDefinitions_396; - public string _ItemDataBase_ItemDefinitions_396 = "Brawler's Gloves"; - public static string ItemDataBase_ItemDefinitions_397 => instance._ItemDataBase_ItemDefinitions_397; - public string _ItemDataBase_ItemDefinitions_397 = "Nail Gloves"; - public static string ItemDataBase_ItemDefinitions_398 => instance._ItemDataBase_ItemDefinitions_398; - public string _ItemDataBase_ItemDefinitions_398 = "Enchanted with the power of penetration. It's purpose? Hit harder."; - public static string ItemDataBase_ItemDefinitions_399 => instance._ItemDataBase_ItemDefinitions_399; - public string _ItemDataBase_ItemDefinitions_399 = "Hand-held Ballista"; - public static string ItemDataBase_ItemDefinitions_400 => instance._ItemDataBase_ItemDefinitions_400; - public string _ItemDataBase_ItemDefinitions_400 = "Kuldars's Scarf"; - public static string ItemDataBase_ItemDefinitions_401 => instance._ItemDataBase_ItemDefinitions_401; - public string _ItemDataBase_ItemDefinitions_401 = "Strength comes from the power of will"; - public static string ItemDataBase_ItemDefinitions_402 => instance._ItemDataBase_ItemDefinitions_402; - public string _ItemDataBase_ItemDefinitions_402 = "Sword Devil's Scarf"; - public static string ItemDataBase_ItemDefinitions_403 => instance._ItemDataBase_ItemDefinitions_403; - public string _ItemDataBase_ItemDefinitions_403 = "Peasant's Scarf"; - public static string ItemDataBase_ItemDefinitions_404 => instance._ItemDataBase_ItemDefinitions_404; - public string _ItemDataBase_ItemDefinitions_404 = "Bombastinc Choker"; - public static string ItemDataBase_ItemDefinitions_405 => instance._ItemDataBase_ItemDefinitions_405; - public string _ItemDataBase_ItemDefinitions_405 = "Explosive Touch"; - public static string ItemDataBase_ItemDefinitions_406 => instance._ItemDataBase_ItemDefinitions_406; - public string _ItemDataBase_ItemDefinitions_406 = "Enchanted with the power of the explosions armor. It's purpose? Become the true explosion master"; - public static string ItemDataBase_ItemDefinitions_407 => instance._ItemDataBase_ItemDefinitions_407; - public string _ItemDataBase_ItemDefinitions_407 = "Strength comes from the power of will, the stronger the will the stronger the explosion"; - public static string ItemDataBase_ItemDefinitions_408 => instance._ItemDataBase_ItemDefinitions_408; - public string _ItemDataBase_ItemDefinitions_408 = "Volatile Bracers"; - public static string ItemDataBase_ItemDefinitions_409 => instance._ItemDataBase_ItemDefinitions_409; - public string _ItemDataBase_ItemDefinitions_409 = "Volatile Helmet"; - public static string ItemDataBase_ItemDefinitions_410 => instance._ItemDataBase_ItemDefinitions_410; - public string _ItemDataBase_ItemDefinitions_410 = "Gunpowder filled socks"; - public static string ItemDataBase_ItemDefinitions_411 => instance._ItemDataBase_ItemDefinitions_411; - public string _ItemDataBase_ItemDefinitions_411 = "Red Skirt"; - public static string ItemDataBase_ItemDefinitions_412 => instance._ItemDataBase_ItemDefinitions_412; - public string _ItemDataBase_ItemDefinitions_412 = "Gunpowder Boxers"; - public static string ItemDataBase_ItemDefinitions_413 => instance._ItemDataBase_ItemDefinitions_413; - public string _ItemDataBase_ItemDefinitions_413 = "Jihad Vest"; - public static string ItemDataBase_ItemDefinitions_414 => instance._ItemDataBase_ItemDefinitions_414; - public string _ItemDataBase_ItemDefinitions_414 = "Ring of Fortune"; - public static string ItemDataBase_ItemDefinitions_415 => instance._ItemDataBase_ItemDefinitions_415; - public string _ItemDataBase_ItemDefinitions_415 = "Mana Ring"; - public static string ItemDataBase_ItemDefinitions_416 => instance._ItemDataBase_ItemDefinitions_416; - public string _ItemDataBase_ItemDefinitions_416 = "Life Ring"; - public static string ItemDataBase_ItemDefinitions_417 => instance._ItemDataBase_ItemDefinitions_417; - public string _ItemDataBase_ItemDefinitions_417 = "Moritz's Gear"; - public static string ItemDataBase_ItemDefinitions_418 => instance._ItemDataBase_ItemDefinitions_418; - public string _ItemDataBase_ItemDefinitions_418 = "Band of Hurting"; - public static string ItemDataBase_ItemDefinitions_419 => instance._ItemDataBase_ItemDefinitions_419; - public string _ItemDataBase_ItemDefinitions_419 = "A ring for a warrior"; - public static string ItemDataBase_ItemDefinitions_420 => instance._ItemDataBase_ItemDefinitions_420; - public string _ItemDataBase_ItemDefinitions_420 = "Straw Hat"; - public static string ItemDataBase_ItemDefinitions_421 => instance._ItemDataBase_ItemDefinitions_421; - public string _ItemDataBase_ItemDefinitions_421 = "Rusty Javelin"; - public static string ItemDataBase_ItemDefinitions_422 => instance._ItemDataBase_ItemDefinitions_422; - public string _ItemDataBase_ItemDefinitions_422 = "Star Robe"; - public static string ItemDataBase_ItemDefinitions_423 => instance._ItemDataBase_ItemDefinitions_423; - public string _ItemDataBase_ItemDefinitions_423 = "Anger"; - public static string ItemDataBase_ItemDefinitions_424 => instance._ItemDataBase_ItemDefinitions_424; - public string _ItemDataBase_ItemDefinitions_424 = "Downscaled version of Greatsword Rage, made to be wielded by flimsy wizards"; - public static string ItemDataBase_ItemDefinitions_425(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_425, objects); - public string _ItemDataBase_ItemDefinitions_425 = "Increases maximum stacks of frenzy by {0}"; - public static string ItemDataBase_ItemDefinitions_426 => instance._ItemDataBase_ItemDefinitions_426; - public string _ItemDataBase_ItemDefinitions_426 = "Yuki-Onna Strides"; - public static string ItemDataBase_ItemDefinitions_427(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_427, objects); - public string _ItemDataBase_ItemDefinitions_427 = "Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by {0}"; - public static string ItemDataBase_ItemDefinitions_428 => instance._ItemDataBase_ItemDefinitions_428; - public string _ItemDataBase_ItemDefinitions_428 = "Boots looted off a snow demon"; - public static string ItemDataBase_ItemDefinitions_429(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_429, objects); - public string _ItemDataBase_ItemDefinitions_429 = "Increses snowstorm damage by {0}"; - public static string ItemDataBase_ItemDefinitions_430 => instance._ItemDataBase_ItemDefinitions_430; - public string _ItemDataBase_ItemDefinitions_430 = "Yuki-Onna Greaves"; - public static string ItemDataBase_ItemDefinitions_431 => instance._ItemDataBase_ItemDefinitions_431; - public string _ItemDataBase_ItemDefinitions_431 = "Yuki-Onna Kimono"; - public static string ItemDataBase_ItemDefinitions_432 => instance._ItemDataBase_ItemDefinitions_432; - public string _ItemDataBase_ItemDefinitions_432 = "Yuki-Onna's Headdress"; - public static string ItemDataBase_ItemDefinitions_433(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_433, objects); - public string _ItemDataBase_ItemDefinitions_433 = "Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by {0} and damage is increased by {1}"; - public static string ItemDataBase_ItemDefinitions_434 => instance._ItemDataBase_ItemDefinitions_434; - public string _ItemDataBase_ItemDefinitions_434 = "Lama Mega's Blood Bag"; - public static string ItemDataBase_ItemDefinitions_435(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_435, objects); - public string _ItemDataBase_ItemDefinitions_435 = "Melee hits cause enemies to bleed for {0} of your health as damage for {1} seconds"; - public static string ItemDataBase_ItemDefinitions_436 => instance._ItemDataBase_ItemDefinitions_436; - public string _ItemDataBase_ItemDefinitions_436 = "Socket Drill"; - public static string ItemDataBase_ItemDefinitions_437 => instance._ItemDataBase_ItemDefinitions_437; - public string _ItemDataBase_ItemDefinitions_437 = "A convienient one use tool"; - public static string ItemDataBase_ItemDefinitions_438 => instance._ItemDataBase_ItemDefinitions_438; - public string _ItemDataBase_ItemDefinitions_438 = "What's a drill doing here in a place full of primitive tribes?"; - public static string ItemDataBase_ItemDefinitions_439 => instance._ItemDataBase_ItemDefinitions_439; - public string _ItemDataBase_ItemDefinitions_439 = "Adds one socket to an item, unless the item can't have any more sockets."; - public static string ItemDataBase_ItemDefinitions_440 => instance._ItemDataBase_ItemDefinitions_440; - public string _ItemDataBase_ItemDefinitions_440 = "Moonwalkers"; - public static string ItemDataBase_ItemDefinitions_441 => instance._ItemDataBase_ItemDefinitions_441; - public string _ItemDataBase_ItemDefinitions_441 = "Cha cha real smooth."; - public static string ItemDataBase_ItemDefinitions_442 => instance._ItemDataBase_ItemDefinitions_442; - public string _ItemDataBase_ItemDefinitions_442 = "Inverts movement"; - public static string ItemDataBase_ItemDefinitions_443 => instance._ItemDataBase_ItemDefinitions_443; - public string _ItemDataBase_ItemDefinitions_443 = "Rabbit Ears Hairband"; - public static string ItemDataBase_ItemDefinitions_444 => instance._ItemDataBase_ItemDefinitions_444; - public string _ItemDataBase_ItemDefinitions_444 = "Cute"; - public static string ItemDataBase_ItemDefinitions_445 => instance._ItemDataBase_ItemDefinitions_445; - public string _ItemDataBase_ItemDefinitions_445 = "Bunny Ears Hairband"; - public static string ItemDataBase_ItemDefinitions_446 => instance._ItemDataBase_ItemDefinitions_446; - public string _ItemDataBase_ItemDefinitions_446 = "Iron plate full of holes"; - public static string ItemDataBase_ItemDefinitions_447 => instance._ItemDataBase_ItemDefinitions_447; - public string _ItemDataBase_ItemDefinitions_447 = "The integrity of this item is questionable"; - public static string ItemDataBase_ItemDefinitions_448 => instance._ItemDataBase_ItemDefinitions_448; - public string _ItemDataBase_ItemDefinitions_448 = "Small Tribal Necklace"; - public static string ItemDataBase_ItemDefinitions_449(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_449, objects); - public string _ItemDataBase_ItemDefinitions_449 = "Increases maximum stacks of frenzy by {0}"; - public static string ItemDataBase_ItemDefinitions_450 => instance._ItemDataBase_ItemDefinitions_450; - public string _ItemDataBase_ItemDefinitions_450 = "Tribal Necklace"; - public static string ItemDataBase_ItemDefinitions_451(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_451, objects); - public string _ItemDataBase_ItemDefinitions_451 = "Increases maximum stacks of frenzy by {0}"; - public static string ItemDataBase_ItemDefinitions_452 => instance._ItemDataBase_ItemDefinitions_452; - public string _ItemDataBase_ItemDefinitions_452 = "Warlord Necklace"; - public static string ItemDataBase_ItemDefinitions_453(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_453, objects); - public string _ItemDataBase_ItemDefinitions_453 = "Increases maximum stacks of frenzy by {0}"; - public static string ItemDataBase_ItemDefinitions_454 => instance._ItemDataBase_ItemDefinitions_454; - public string _ItemDataBase_ItemDefinitions_454 = "Travel Band"; - public static string ItemDataBase_ItemDefinitions_455(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_455, objects); - public string _ItemDataBase_ItemDefinitions_455 = "The distance of blink is increased by {0} feet"; - public static string ItemDataBase_ItemDefinitions_456 => instance._ItemDataBase_ItemDefinitions_456; - public string _ItemDataBase_ItemDefinitions_456 = "Destroyed Void Shard"; - public static string ItemDataBase_ItemDefinitions_457 => instance._ItemDataBase_ItemDefinitions_457; - public string _ItemDataBase_ItemDefinitions_457 = "Only a fraction of its previous might remains"; - public static string ItemDataBase_ItemDefinitions_458(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_458, objects); - public string _ItemDataBase_ItemDefinitions_458 = "Decrease the cooldown of one ability by {0} second whenever you hit something with melee or ranged attack."; - public static string ItemDataBase_ItemDefinitions_459 => instance._ItemDataBase_ItemDefinitions_459; - public string _ItemDataBase_ItemDefinitions_459 = "Famine Hammer"; - public static string ItemDataBase_ItemDefinitions_460(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_460, objects); - public string _ItemDataBase_ItemDefinitions_460 = "Chance to weaken enemies, causing them to take more damage from all attacks, is increased by {0}"; - public static string ItemDataBase_ItemDefinitions_461 => instance._ItemDataBase_ItemDefinitions_461; - public string _ItemDataBase_ItemDefinitions_461 = "Curse Hammer"; - public static string ItemDataBase_ItemDefinitions_462 => instance._ItemDataBase_ItemDefinitions_462; - public string _ItemDataBase_ItemDefinitions_462 = "Omnious Weapon"; - public static string ItemDataBase_ItemDefinitions_463(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_463, objects); - public string _ItemDataBase_ItemDefinitions_463 = "Chance to weaken enemies, causing them to take more damage from all attacks, is increased by {0}"; - public static string ItemDataBase_ItemDefinitions_464 => instance._ItemDataBase_ItemDefinitions_464; - public string _ItemDataBase_ItemDefinitions_464 = "Smasher"; - public static string ItemDataBase_ItemDefinitions_465 => instance._ItemDataBase_ItemDefinitions_465; - public string _ItemDataBase_ItemDefinitions_465 = "Smash damage is increased tripled"; - public static string ItemDataBase_ItemDefinitions_466 => instance._ItemDataBase_ItemDefinitions_466; - public string _ItemDataBase_ItemDefinitions_466 = "Vampiric Band"; - public static string ItemDataBase_ItemDefinitions_467(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_467, objects); - public string _ItemDataBase_ItemDefinitions_467 = "Gain {0} stamina on ranged and melee hit or double that amount on critical hits"; - public static string ItemDataBase_ItemDefinitions_468 => instance._ItemDataBase_ItemDefinitions_468; - public string _ItemDataBase_ItemDefinitions_468 = "Vampire Ring"; - public static string ItemDataBase_ItemDefinitions_469(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_469, objects); - public string _ItemDataBase_ItemDefinitions_469 = "Gain {0} stamina on ranged and melee hit or double that amount on critical hits"; - public static string ItemDataBase_ItemDefinitions_470 => instance._ItemDataBase_ItemDefinitions_470; - public string _ItemDataBase_ItemDefinitions_470 = "Tricksters Scarf"; - public static string ItemDataBase_ItemDefinitions_471(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_471, objects); - public string _ItemDataBase_ItemDefinitions_471 = "Magic arrow shoots {0} additional arrow."; - public static string ItemDataBase_ItemDefinitions_472 => instance._ItemDataBase_ItemDefinitions_472; - public string _ItemDataBase_ItemDefinitions_472 = "Magus' Necktie"; - public static string ItemDataBase_ItemDefinitions_473(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_473, objects); - public string _ItemDataBase_ItemDefinitions_473 = "Magic arrow shoots {0} additional arrows."; - public static string ItemDataBase_ItemDefinitions_474 => instance._ItemDataBase_ItemDefinitions_474; - public string _ItemDataBase_ItemDefinitions_474 = "Discounted Knockoff Magic Quiver"; - public static string ItemDataBase_ItemDefinitions_475(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_475, objects); - public string _ItemDataBase_ItemDefinitions_475 = "There's a {0} increased chance to not consume ammo when firing a projectile."; - public static string ItemDataBase_ItemDefinitions_476 => instance._ItemDataBase_ItemDefinitions_476; - public string _ItemDataBase_ItemDefinitions_476 = "Magic Quiver"; - public static string ItemDataBase_ItemDefinitions_477(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_477, objects); - public string _ItemDataBase_ItemDefinitions_477 = "There's a {0} increased chance to not consume ammo when firing a projectile."; - public static string ItemDataBase_ItemDefinitions_478 => instance._ItemDataBase_ItemDefinitions_478; - public string _ItemDataBase_ItemDefinitions_478 = "Improved Magic Quiver"; - public static string ItemDataBase_ItemDefinitions_479(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_479, objects); - public string _ItemDataBase_ItemDefinitions_479 = "There's a {0} increased chance to not consume ammo when firing a projectile."; - public static string ItemDataBase_ItemDefinitions_480 => instance._ItemDataBase_ItemDefinitions_480; - public string _ItemDataBase_ItemDefinitions_480 = "Factory Quiver"; - public static string ItemDataBase_ItemDefinitions_481(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_481, objects); - public string _ItemDataBase_ItemDefinitions_481 = "There's a {0} increased chance to not consume ammo when firing a projectile."; - public static string ItemDataBase_ItemDefinitions_482 => instance._ItemDataBase_ItemDefinitions_482; - public string _ItemDataBase_ItemDefinitions_482 = "Enzyme STR/34"; - public static string ItemDataBase_ItemDefinitions_483 => instance._ItemDataBase_ItemDefinitions_483; - public string _ItemDataBase_ItemDefinitions_483 = "A substance which results in surprising changes to gear"; - public static string ItemDataBase_ItemDefinitions_484 => instance._ItemDataBase_ItemDefinitions_484; - public string _ItemDataBase_ItemDefinitions_484 = "Changes Vitality, Agility or Intelligence stat on an item to Strength or changes Ranged or Spell damage stat to Melee Damage"; - public static string ItemDataBase_ItemDefinitions_485 => instance._ItemDataBase_ItemDefinitions_485; - public string _ItemDataBase_ItemDefinitions_485 = "Enzyme INT/33"; - public static string ItemDataBase_ItemDefinitions_486 => instance._ItemDataBase_ItemDefinitions_486; - public string _ItemDataBase_ItemDefinitions_486 = "Changes Vitality, Agility or Strength stat on an item to Intelligence or changes Ranged or Melee damage stat to Spell Damage"; - public static string ItemDataBase_ItemDefinitions_487 => instance._ItemDataBase_ItemDefinitions_487; - public string _ItemDataBase_ItemDefinitions_487 = "Enzyme AGI/39"; - public static string ItemDataBase_ItemDefinitions_488 => instance._ItemDataBase_ItemDefinitions_488; - public string _ItemDataBase_ItemDefinitions_488 = "Changes Vitality, Intelligence or Strength stat on an item to Agility or changes Melee or Spell damage stat to Ranged Damage"; - public static string ItemDataBase_ItemDefinitions_489 => instance._ItemDataBase_ItemDefinitions_489; - public string _ItemDataBase_ItemDefinitions_489 = "Enzyme VIT/449"; - public static string ItemDataBase_ItemDefinitions_490 => instance._ItemDataBase_ItemDefinitions_490; - public string _ItemDataBase_ItemDefinitions_490 = "Changes Agility, Intelligence or Strength stat on an item to Vitality"; - public static string ItemDataBase_ItemDefinitions_491 => instance._ItemDataBase_ItemDefinitions_491; - public string _ItemDataBase_ItemDefinitions_491 = "Stomach Acid"; - public static string ItemDataBase_ItemDefinitions_492 => instance._ItemDataBase_ItemDefinitions_492; - public string _ItemDataBase_ItemDefinitions_492 = "Removes all stats with negative values from an item"; - public static string ItemDataBase_ItemDefinitions_493 => instance._ItemDataBase_ItemDefinitions_493; - public string _ItemDataBase_ItemDefinitions_493 = "Elite Stomach Acid"; - public static string ItemDataBase_ItemDefinitions_494 => instance._ItemDataBase_ItemDefinitions_494; - public string _ItemDataBase_ItemDefinitions_494 = "Changes negative stat values into positive values on an item"; - public static string ItemDataBase_ItemDefinitions_495 => instance._ItemDataBase_ItemDefinitions_495; - public string _ItemDataBase_ItemDefinitions_495 = "Crimson Solution"; - public static string ItemDataBase_ItemDefinitions_496 => instance._ItemDataBase_ItemDefinitions_496; - public string _ItemDataBase_ItemDefinitions_496 = "Upgrades item of any rarity to one of the same type but of Legendary rarity"; - public static string ItemDataBase_ItemDefinitions_497 => instance._ItemDataBase_ItemDefinitions_497; - public string _ItemDataBase_ItemDefinitions_497 = "Weak Armor Hardening Mixture"; - public static string ItemDataBase_ItemDefinitions_498 => instance._ItemDataBase_ItemDefinitions_498; - public string _ItemDataBase_ItemDefinitions_498 = "Adds Armor Stat to a piece of equipment if the item does not already have it"; - public static string ItemDataBase_ItemDefinitions_499 => instance._ItemDataBase_ItemDefinitions_499; - public string _ItemDataBase_ItemDefinitions_499 = "Upgraded Armor Hardening Mixture"; - public static string ItemDataBase_ItemDefinitions_500 => instance._ItemDataBase_ItemDefinitions_500; - public string _ItemDataBase_ItemDefinitions_500 = "Adds Damage Reduction Stat to a piece of equipment if the item does not already have it"; - public static string ItemDataBase_ItemDefinitions_501 => instance._ItemDataBase_ItemDefinitions_501; - public string _ItemDataBase_ItemDefinitions_501 = "Chaos Water"; - public static string ItemDataBase_ItemDefinitions_502 => instance._ItemDataBase_ItemDefinitions_502; - public string _ItemDataBase_ItemDefinitions_502 = "Rerolls all stats on an item of rarity no higher than orange"; - public static string ItemDataBase_ItemDefinitions_503 => instance._ItemDataBase_ItemDefinitions_503; - public string _ItemDataBase_ItemDefinitions_503 = "Upgraded Chaos Water"; - public static string ItemDataBase_ItemDefinitions_504 => instance._ItemDataBase_ItemDefinitions_504; - public string _ItemDataBase_ItemDefinitions_504 = "Rerolls all stats on an item of any rarity"; - public static string ItemDataBase_ItemDefinitions_505 => instance._ItemDataBase_ItemDefinitions_505; - public string _ItemDataBase_ItemDefinitions_505 = "Gun Blade"; - public static string ItemDataBase_ItemDefinitions_506(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_506, objects); - public string _ItemDataBase_ItemDefinitions_506 = "Increases pistol damage by {0}"; - public static string ItemDataBase_ItemDefinitions_507 => instance._ItemDataBase_ItemDefinitions_507; - public string _ItemDataBase_ItemDefinitions_507 = "Sharpshooter's Axe"; - public static string ItemDataBase_ItemDefinitions_508(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_508, objects); - public string _ItemDataBase_ItemDefinitions_508 = "Increases pistol headshot chance by {0} and pistol damage by {1}"; - public static string ItemDataBase_ItemDefinitions_509 => instance._ItemDataBase_ItemDefinitions_509; - public string _ItemDataBase_ItemDefinitions_509 = "Shield Blade"; - public static string ItemDataBase_ItemDefinitions_510 => instance._ItemDataBase_ItemDefinitions_510; - public string _ItemDataBase_ItemDefinitions_510 = "So large can be used as a shield"; - public static string ItemDataBase_ItemDefinitions_511 => instance._ItemDataBase_ItemDefinitions_511; - public string _ItemDataBase_ItemDefinitions_511 = "A normal human cannot lift this weapon."; - public static string ItemDataBase_ItemDefinitions_512 => instance._ItemDataBase_ItemDefinitions_512; - public string _ItemDataBase_ItemDefinitions_512 = "Blunt Blade for Bashing Skulls"; - public static string ItemDataBase_ItemDefinitions_513(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_513, objects); - public string _ItemDataBase_ItemDefinitions_513 = "Bash damage debuff on enemies is increased by {0}"; - public static string ItemDataBase_ItemDefinitions_514 => instance._ItemDataBase_ItemDefinitions_514; - public string _ItemDataBase_ItemDefinitions_514 = "Madman's Legacy"; - public static string ItemDataBase_ItemDefinitions_515(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_515, objects); - public string _ItemDataBase_ItemDefinitions_515 = "Frenzy damage per stack is increased by {0}"; - public static string ItemDataBase_ItemDefinitions_516 => instance._ItemDataBase_ItemDefinitions_516; - public string _ItemDataBase_ItemDefinitions_516 = "Buckler"; - public static string ItemDataBase_ItemDefinitions_517 => instance._ItemDataBase_ItemDefinitions_517; - public string _ItemDataBase_ItemDefinitions_517 = "Pyromancy Mask"; - public static string ItemDataBase_ItemDefinitions_518(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_518, objects); - public string _ItemDataBase_ItemDefinitions_518 = "Ignited enemies burn for {0} longer."; - public static string ItemDataBase_ItemDefinitions_519 => instance._ItemDataBase_ItemDefinitions_519; - public string _ItemDataBase_ItemDefinitions_519 = "Ember Mask"; - public static string ItemDataBase_ItemDefinitions_520(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_520, objects); - public string _ItemDataBase_ItemDefinitions_520 = "Ignited enemies burn for {0} longer and fire ticks thrice as fast."; - public static string ItemDataBase_ItemDefinitions_521 => instance._ItemDataBase_ItemDefinitions_521; - public string _ItemDataBase_ItemDefinitions_521 = "Flame Pauldrons"; - public static string ItemDataBase_ItemDefinitions_522(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_522, objects); - public string _ItemDataBase_ItemDefinitions_522 = "Firebolt costs {0} additional energy to cast and its damage scaling is increased by {1}"; - public static string ItemDataBase_ItemDefinitions_523 => instance._ItemDataBase_ItemDefinitions_523; - public string _ItemDataBase_ItemDefinitions_523 = "Ancient Scroll"; - public static string ItemDataBase_ItemDefinitions_524 => instance._ItemDataBase_ItemDefinitions_524; - public string _ItemDataBase_ItemDefinitions_524 = "Guide on Tearing Spacetime"; - public static string ItemDataBase_ItemDefinitions_525 => instance._ItemDataBase_ItemDefinitions_525; - public string _ItemDataBase_ItemDefinitions_525 = "Blink creates an explosion at the exit point, and the damage of the explosion is increased by velocity and the radius is increased by the distance of blink"; - public static string ItemDataBase_ItemDefinitions_526 => instance._ItemDataBase_ItemDefinitions_526; - public string _ItemDataBase_ItemDefinitions_526 = "300th Spear"; - public static string ItemDataBase_ItemDefinitions_527 => instance._ItemDataBase_ItemDefinitions_527; - public string _ItemDataBase_ItemDefinitions_527 = "Stone Pauldrons"; - public static string ItemDataBase_ItemDefinitions_528(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_528, objects); - public string _ItemDataBase_ItemDefinitions_528 = "All damage increased by {0}"; - public static string ItemDataBase_ItemDefinitions_529 => instance._ItemDataBase_ItemDefinitions_529; - public string _ItemDataBase_ItemDefinitions_529 = "Iron Shoulder Pads"; - public static string ItemDataBase_ItemDefinitions_530(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_530, objects); - public string _ItemDataBase_ItemDefinitions_530 = "All damage increased by {0}"; - public static string ItemDataBase_ItemDefinitions_531 => instance._ItemDataBase_ItemDefinitions_531; - public string _ItemDataBase_ItemDefinitions_531 = "Steel Shoulder Pads"; - public static string ItemDataBase_ItemDefinitions_532(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_532, objects); - public string _ItemDataBase_ItemDefinitions_532 = "All damage increased by {0}"; - public static string ItemDataBase_ItemDefinitions_533 => instance._ItemDataBase_ItemDefinitions_533; - public string _ItemDataBase_ItemDefinitions_533 = "Battle scarred Shoulder Pads"; - public static string ItemDataBase_ItemDefinitions_534(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_534, objects); - public string _ItemDataBase_ItemDefinitions_534 = "All damage increased by {0}"; - public static string ItemDataBase_ItemDefinitions_535 => instance._ItemDataBase_ItemDefinitions_535; - public string _ItemDataBase_ItemDefinitions_535 = "Mystery Shoulder Pads"; - public static string ItemDataBase_ItemDefinitions_536(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_536, objects); - public string _ItemDataBase_ItemDefinitions_536 = "All damage increased by {0}"; - public static string ItemDataBase_ItemDefinitions_537 => instance._ItemDataBase_ItemDefinitions_537; - public string _ItemDataBase_ItemDefinitions_537 = "Stone Shield"; - public static string ItemDataBase_ItemDefinitions_538 => instance._ItemDataBase_ItemDefinitions_538; - public string _ItemDataBase_ItemDefinitions_538 = "Iron Shield"; - public static string ItemDataBase_ItemDefinitions_539 => instance._ItemDataBase_ItemDefinitions_539; - public string _ItemDataBase_ItemDefinitions_539 = "Steel Tower Shield"; - public static string ItemDataBase_ItemDefinitions_540 => instance._ItemDataBase_ItemDefinitions_540; - public string _ItemDataBase_ItemDefinitions_540 = "Guardian"; - public static string ItemDataBase_ItemDefinitions_541 => instance._ItemDataBase_ItemDefinitions_541; - public string _ItemDataBase_ItemDefinitions_541 = "Mystery Shield"; - public static string ItemDataBase_ItemDefinitions_542 => instance._ItemDataBase_ItemDefinitions_542; - public string _ItemDataBase_ItemDefinitions_542 = "Light Boot"; - public static string ItemDataBase_ItemDefinitions_543 => instance._ItemDataBase_ItemDefinitions_543; - public string _ItemDataBase_ItemDefinitions_543 = "Iron Boots"; - public static string ItemDataBase_ItemDefinitions_544 => instance._ItemDataBase_ItemDefinitions_544; - public string _ItemDataBase_ItemDefinitions_544 = "Steel Boots"; - public static string ItemDataBase_ItemDefinitions_545 => instance._ItemDataBase_ItemDefinitions_545; - public string _ItemDataBase_ItemDefinitions_545 = "Threads"; - public static string ItemDataBase_ItemDefinitions_546 => instance._ItemDataBase_ItemDefinitions_546; - public string _ItemDataBase_ItemDefinitions_546 = "Mystery Boots"; - public static string ItemDataBase_ItemDefinitions_547 => instance._ItemDataBase_ItemDefinitions_547; - public string _ItemDataBase_ItemDefinitions_547 = "Wraps"; - public static string ItemDataBase_ItemDefinitions_548 => instance._ItemDataBase_ItemDefinitions_548; - public string _ItemDataBase_ItemDefinitions_548 = "Steel Gauntlet"; - public static string ItemDataBase_ItemDefinitions_549 => instance._ItemDataBase_ItemDefinitions_549; - public string _ItemDataBase_ItemDefinitions_549 = "Titanium Gauntlet"; - public static string ItemDataBase_ItemDefinitions_550 => instance._ItemDataBase_ItemDefinitions_550; - public string _ItemDataBase_ItemDefinitions_550 = "Mystery Gauntlet"; - public static string ItemDataBase_ItemDefinitions_551 => instance._ItemDataBase_ItemDefinitions_551; - public string _ItemDataBase_ItemDefinitions_551 = "Leather Tasset"; - public static string ItemDataBase_ItemDefinitions_552 => instance._ItemDataBase_ItemDefinitions_552; - public string _ItemDataBase_ItemDefinitions_552 = "Iron Tasset"; - public static string ItemDataBase_ItemDefinitions_553 => instance._ItemDataBase_ItemDefinitions_553; - public string _ItemDataBase_ItemDefinitions_553 = "Steel Tasset"; - public static string ItemDataBase_ItemDefinitions_554 => instance._ItemDataBase_ItemDefinitions_554; - public string _ItemDataBase_ItemDefinitions_554 = "Black Steel Leggins"; - public static string ItemDataBase_ItemDefinitions_555 => instance._ItemDataBase_ItemDefinitions_555; - public string _ItemDataBase_ItemDefinitions_555 = "Mystery Leggins"; - public static string ItemDataBase_ItemDefinitions_556 => instance._ItemDataBase_ItemDefinitions_556; - public string _ItemDataBase_ItemDefinitions_556 = "Leather Vest"; - public static string ItemDataBase_ItemDefinitions_557 => instance._ItemDataBase_ItemDefinitions_557; - public string _ItemDataBase_ItemDefinitions_557 = "Iron Breastplate"; - public static string ItemDataBase_ItemDefinitions_558 => instance._ItemDataBase_ItemDefinitions_558; - public string _ItemDataBase_ItemDefinitions_558 = "Steel Breastplate"; - public static string ItemDataBase_ItemDefinitions_559 => instance._ItemDataBase_ItemDefinitions_559; - public string _ItemDataBase_ItemDefinitions_559 = "Silver Armor"; - public static string ItemDataBase_ItemDefinitions_560 => instance._ItemDataBase_ItemDefinitions_560; - public string _ItemDataBase_ItemDefinitions_560 = "Mystery Breastplate"; - public static string ItemDataBase_ItemDefinitions_561 => instance._ItemDataBase_ItemDefinitions_561; - public string _ItemDataBase_ItemDefinitions_561 = "Cloth Band"; - public static string ItemDataBase_ItemDefinitions_562 => instance._ItemDataBase_ItemDefinitions_562; - public string _ItemDataBase_ItemDefinitions_562 = "Iron Wristguard"; - public static string ItemDataBase_ItemDefinitions_563 => instance._ItemDataBase_ItemDefinitions_563; - public string _ItemDataBase_ItemDefinitions_563 = "Steel Wristguard"; - public static string ItemDataBase_ItemDefinitions_564 => instance._ItemDataBase_ItemDefinitions_564; - public string _ItemDataBase_ItemDefinitions_564 = "Baron Wristguards"; - public static string ItemDataBase_ItemDefinitions_565 => instance._ItemDataBase_ItemDefinitions_565; - public string _ItemDataBase_ItemDefinitions_565 = "Mystery Wristguards"; - public static string ItemDataBase_ItemDefinitions_566 => instance._ItemDataBase_ItemDefinitions_566; - public string _ItemDataBase_ItemDefinitions_566 = "Iron Helmet"; - public static string ItemDataBase_ItemDefinitions_567 => instance._ItemDataBase_ItemDefinitions_567; - public string _ItemDataBase_ItemDefinitions_567 = "Steel Helmet"; - public static string ItemDataBase_ItemDefinitions_568 => instance._ItemDataBase_ItemDefinitions_568; - public string _ItemDataBase_ItemDefinitions_568 = "Armored Hood"; - public static string ItemDataBase_ItemDefinitions_569 => instance._ItemDataBase_ItemDefinitions_569; - public string _ItemDataBase_ItemDefinitions_569 = "Mystery Helmet"; - public static string ItemDataBase_ItemDefinitions_570 => instance._ItemDataBase_ItemDefinitions_570; - public string _ItemDataBase_ItemDefinitions_570 = "Yorium's Gaze"; - public static string ItemDataBase_ItemDefinitions_571(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_571, objects); - public string _ItemDataBase_ItemDefinitions_571 = "SET PIECE. Melee weapon range is increased by {0}, attack cost in stamina is halved."; - public static string ItemDataBase_ItemDefinitions_572(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_572, objects); - public string _ItemDataBase_ItemDefinitions_572 = "Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by {0} seconds\n4 Pieces - Each second of berserk being in effect increases damage by {1}.\n5 Pieces - For the first {2} seconds of Berserk attack speed increases by {3} per second, and lasts till the end of the spell's duration."; - public static string ItemDataBase_ItemDefinitions_573 => instance._ItemDataBase_ItemDefinitions_573; - public string _ItemDataBase_ItemDefinitions_573 = "Yorium's Ruthlessness"; - public static string ItemDataBase_ItemDefinitions_574 => instance._ItemDataBase_ItemDefinitions_574; - public string _ItemDataBase_ItemDefinitions_574 = "Yorium's Burden"; - public static string ItemDataBase_ItemDefinitions_575 => instance._ItemDataBase_ItemDefinitions_575; - public string _ItemDataBase_ItemDefinitions_575 = "Yorium's Resolve"; - public static string ItemDataBase_ItemDefinitions_576 => instance._ItemDataBase_ItemDefinitions_576; - public string _ItemDataBase_ItemDefinitions_576 = "Atomic Augmentation"; - public static string ItemDataBase_ItemDefinitions_577 => instance._ItemDataBase_ItemDefinitions_577; - public string _ItemDataBase_ItemDefinitions_577 = "Yorium's Assault"; - public static string ItemDataBase_ItemDefinitions_578 => instance._ItemDataBase_ItemDefinitions_578; - public string _ItemDataBase_ItemDefinitions_578 = "Undying Promise"; - public static string ItemDataBase_ItemDefinitions_579(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_579, objects); - public string _ItemDataBase_ItemDefinitions_579 = "Resist lethal damage on a {0} minute cooldown"; - public static string ItemDataBase_ItemDefinitions_581(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_581, objects); - public string _ItemDataBase_ItemDefinitions_581 = "Snap freeze damage scaling is increased by {0} and the slow duration is increased by {1} seconds"; - public static string ItemDataBase_ItemDefinitions_582 => instance._ItemDataBase_ItemDefinitions_582; - public string _ItemDataBase_ItemDefinitions_582 = "If equipped on a weapon, increases ranged damage by "; - public static string ItemDataBase_ItemDefinitions_583 => instance._ItemDataBase_ItemDefinitions_583; - public string _ItemDataBase_ItemDefinitions_583 = "If equipped on boots, increases movement speed by "; - public static string ItemDataBase_ItemDefinitions_584 => instance._ItemDataBase_ItemDefinitions_584; - public string _ItemDataBase_ItemDefinitions_584 = "If equipped on a helmet, increases critical hit chance by "; - public static string ItemDataBase_ItemDefinitions_585 => instance._ItemDataBase_ItemDefinitions_585; - public string _ItemDataBase_ItemDefinitions_585 = "If equipped on accessories, increases ranged armor piercing by "; - public static string ItemDataBase_ItemDefinitions_586 => instance._ItemDataBase_ItemDefinitions_586; - public string _ItemDataBase_ItemDefinitions_586 = "If equipped in other slots, increases agility by "; - public static string ItemDataBase_ItemDefinitions_587 => instance._ItemDataBase_ItemDefinitions_587; - public string _ItemDataBase_ItemDefinitions_587 = "If equipped on a weapon, increases melee damage by "; - public static string ItemDataBase_ItemDefinitions_588 => instance._ItemDataBase_ItemDefinitions_588; - public string _ItemDataBase_ItemDefinitions_588 = "If equipped on boots, decreases damage taken by "; - public static string ItemDataBase_ItemDefinitions_589 => instance._ItemDataBase_ItemDefinitions_589; - public string _ItemDataBase_ItemDefinitions_589 = "If equipped on a helmet, increases attack speed by "; - public static string ItemDataBase_ItemDefinitions_590 => instance._ItemDataBase_ItemDefinitions_590; - public string _ItemDataBase_ItemDefinitions_590 = "If equipped on accessories, increases melee armor piercing by "; - public static string ItemDataBase_ItemDefinitions_591 => instance._ItemDataBase_ItemDefinitions_591; - public string _ItemDataBase_ItemDefinitions_591 = "If equipped in other slots, increases strength by "; - public static string ItemDataBase_ItemDefinitions_592 => instance._ItemDataBase_ItemDefinitions_592; - public string _ItemDataBase_ItemDefinitions_592 = "If equipped on a weapon, increases magic damage by "; - public static string ItemDataBase_ItemDefinitions_593 => instance._ItemDataBase_ItemDefinitions_593; - public string _ItemDataBase_ItemDefinitions_593 = "If equipped on boots, decreases spell cost by "; - public static string ItemDataBase_ItemDefinitions_594 => instance._ItemDataBase_ItemDefinitions_594; - public string _ItemDataBase_ItemDefinitions_594 = "If equipped on a helmet, decreases spell cooldown by "; - public static string ItemDataBase_ItemDefinitions_595 => instance._ItemDataBase_ItemDefinitions_595; - public string _ItemDataBase_ItemDefinitions_595 = "If equipped on accessories, increases energy on hit by "; - public static string ItemDataBase_ItemDefinitions_596 => instance._ItemDataBase_ItemDefinitions_596; - public string _ItemDataBase_ItemDefinitions_596 = "If equipped in other slots, increases intelligence by "; - public static string ItemDataBase_ItemDefinitions_597 => instance._ItemDataBase_ItemDefinitions_597; - public string _ItemDataBase_ItemDefinitions_597 = "If equipped on a weapon, increases all healing by "; - public static string ItemDataBase_ItemDefinitions_598 => instance._ItemDataBase_ItemDefinitions_598; - public string _ItemDataBase_ItemDefinitions_598 = "If equipped on boots, increases magic find by "; - public static string ItemDataBase_ItemDefinitions_599 => instance._ItemDataBase_ItemDefinitions_599; - public string _ItemDataBase_ItemDefinitions_599 = "If equipped on a helmet, increases experience gained by "; - public static string ItemDataBase_ItemDefinitions_600 => instance._ItemDataBase_ItemDefinitions_600; - public string _ItemDataBase_ItemDefinitions_600 = "If equipped on accessories, increases life per second by "; - public static string ItemDataBase_ItemDefinitions_601 => instance._ItemDataBase_ItemDefinitions_601; - public string _ItemDataBase_ItemDefinitions_601 = "If equipped in other slots, increases vitality by "; - public static string ItemDataBase_ItemDefinitions_602 => instance._ItemDataBase_ItemDefinitions_602; - public string _ItemDataBase_ItemDefinitions_602 = "If equipped on a weapon, increases crit damage by "; - public static string ItemDataBase_ItemDefinitions_603 => instance._ItemDataBase_ItemDefinitions_603; - public string _ItemDataBase_ItemDefinitions_603 = "If equipped on boots, increases resistance to magic by "; - public static string ItemDataBase_ItemDefinitions_604 => instance._ItemDataBase_ItemDefinitions_604; - public string _ItemDataBase_ItemDefinitions_604 = "If equipped on a helmet, increases health by "; - public static string ItemDataBase_ItemDefinitions_605 => instance._ItemDataBase_ItemDefinitions_605; - public string _ItemDataBase_ItemDefinitions_605 = "If equipped on accessories, increases thorns by "; - public static string ItemDataBase_ItemDefinitions_606 => instance._ItemDataBase_ItemDefinitions_606; - public string _ItemDataBase_ItemDefinitions_606 = "If equipped in other slots, increases armor by "; - public static string ItemDataBase_ItemDefinitions_607 => instance._ItemDataBase_ItemDefinitions_607; - public string _ItemDataBase_ItemDefinitions_607 = "Firebolt deals increased damage"; - public static string ItemDataBase_ItemDefinitions_608 => instance._ItemDataBase_ItemDefinitions_608; - public string _ItemDataBase_ItemDefinitions_608 = "\nWarcry gives damage resistance."; - public static string ItemDataBase_ItemDefinitions_609 => instance._ItemDataBase_ItemDefinitions_609; - public string _ItemDataBase_ItemDefinitions_609 = "Devil Dancers"; - public static string ItemDataBase_ItemDefinitions_610 => instance._ItemDataBase_ItemDefinitions_610; - public string _ItemDataBase_ItemDefinitions_610 = "When consuming frenzy stacks, gain 5% crit chance for 10 seconds for every stack consumed. Gain 3% attack speed per frenzy stack active."; - public static string ItemDataBase_ItemDefinitions_611 => instance._ItemDataBase_ItemDefinitions_611; - public string _ItemDataBase_ItemDefinitions_611 = "Call of the Ancients"; - public static string ItemDataBase_ItemDefinitions_612(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_612, objects); - public string _ItemDataBase_ItemDefinitions_612 = "Berserk increases all damage by additional {0}"; - public static string ItemDataBase_ItemDefinitions_613 => instance._ItemDataBase_ItemDefinitions_613; - public string _ItemDataBase_ItemDefinitions_613 = "Berserker's Wrath"; - public static string ItemDataBase_ItemDefinitions_614 => instance._ItemDataBase_ItemDefinitions_614; - public string _ItemDataBase_ItemDefinitions_614 = "Viking Amulet"; - public static string ItemDataBase_ItemDefinitions_615(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_615, objects); - public string _ItemDataBase_ItemDefinitions_615 = "Increases attack and movement speed during berserk by {0}"; - public static string ItemDataBase_ItemDefinitions_616 => instance._ItemDataBase_ItemDefinitions_616; - public string _ItemDataBase_ItemDefinitions_616 = "Pedant of Skallagrim"; - public static string ItemDataBase_ItemDefinitions_617 => instance._ItemDataBase_ItemDefinitions_617; - public string _ItemDataBase_ItemDefinitions_617 = "Wristguards of The Sanctuary Keeper"; - public static string ItemDataBase_ItemDefinitions_618(params object[] objects) => string.Format(instance._ItemDataBase_ItemDefinitions_618, objects); - public string _ItemDataBase_ItemDefinitions_618 = "Allies inside Sanctuary have {0} increased cooldown rate and attacks use {1} less resources"; + //ItemDatabase_ItemDefinitions + public static string ItemDatabase_ItemDefinitions_1 => instance._ItemDatabase_ItemDefinitions_1; + public string _ItemDatabase_ItemDefinitions_1 = "Broken Flip-Flops"; + public static string ItemDatabase_ItemDefinitions_2 => instance._ItemDatabase_ItemDefinitions_2; + public string _ItemDatabase_ItemDefinitions_2 = "A pair of damaged shoes. Judging by their condition, i can imagine what happened to their owner."; + public static string ItemDatabase_ItemDefinitions_3 => instance._ItemDatabase_ItemDefinitions_3; + public string _ItemDatabase_ItemDefinitions_3 = "Worn by one of the passengers of the plane that Eric also flew in."; + public static string ItemDatabase_ItemDefinitions_4 => instance._ItemDatabase_ItemDefinitions_4; + public string _ItemDatabase_ItemDefinitions_4 = "Old Boots"; + public static string ItemDatabase_ItemDefinitions_5 => instance._ItemDatabase_ItemDefinitions_5; + public string _ItemDatabase_ItemDefinitions_5 = "A pair of old boots. They must have been lying here for ages."; + public static string ItemDatabase_ItemDefinitions_6 => instance._ItemDatabase_ItemDefinitions_6; + public string _ItemDatabase_ItemDefinitions_6 = "Found on the Peninsula, but judging by their condition, they belong neither to a plane passenger nor a cannibal."; + public static string ItemDatabase_ItemDefinitions_7 => instance._ItemDatabase_ItemDefinitions_7; + public string _ItemDatabase_ItemDefinitions_7 = "Damaged Leather Boots"; + public static string ItemDatabase_ItemDefinitions_8 => instance._ItemDatabase_ItemDefinitions_8; + public string _ItemDatabase_ItemDefinitions_8 = "A pair of leather boots. They look good and have only some scratches."; + public static string ItemDatabase_ItemDefinitions_9 => instance._ItemDatabase_ItemDefinitions_9; + public string _ItemDatabase_ItemDefinitions_9 = "They arrived to the Peninsula the same way Eric did. Since they were in a baggage, they avoided a lot of damage."; + public static string ItemDatabase_ItemDefinitions_10 => instance._ItemDatabase_ItemDefinitions_10; + public string _ItemDatabase_ItemDefinitions_10 = "Sturdy Leather Boots"; + public static string ItemDatabase_ItemDefinitions_11 => instance._ItemDatabase_ItemDefinitions_11; + public string _ItemDatabase_ItemDefinitions_11 = "A pair of leather boots. They are in a very good condition."; + public static string ItemDatabase_ItemDefinitions_12 => instance._ItemDatabase_ItemDefinitions_12; + public string _ItemDatabase_ItemDefinitions_12 = "They arrived to the Peninsula the same way Eric did. Eric found them undamaged in their original box. They still had a pricetag - $419,99."; + public static string ItemDatabase_ItemDefinitions_13 => instance._ItemDatabase_ItemDefinitions_13; + public string _ItemDatabase_ItemDefinitions_13 = "Damaged Army Boots"; + public static string ItemDatabase_ItemDefinitions_14 => instance._ItemDatabase_ItemDefinitions_14; + public string _ItemDatabase_ItemDefinitions_14 = "Sturdy, hard, resistant but damaged boots."; + public static string ItemDatabase_ItemDefinitions_15 => instance._ItemDatabase_ItemDefinitions_15; + public string _ItemDatabase_ItemDefinitions_15 = "They look modern, almost too modern for everything here."; + public static string ItemDatabase_ItemDefinitions_16 => instance._ItemDatabase_ItemDefinitions_16; + public string _ItemDatabase_ItemDefinitions_16 = "Army Boots"; + public static string ItemDatabase_ItemDefinitions_17 => instance._ItemDatabase_ItemDefinitions_17; + public string _ItemDatabase_ItemDefinitions_17 = "Sturdy, hard, resistant boots."; + public static string ItemDatabase_ItemDefinitions_18 => instance._ItemDatabase_ItemDefinitions_18; + public string _ItemDatabase_ItemDefinitions_18 = "Armsy Skin Footwear"; + public static string ItemDatabase_ItemDefinitions_19 => instance._ItemDatabase_ItemDefinitions_19; + public string _ItemDatabase_ItemDefinitions_19 = "Severed armsy legs, with all of their insides removed. All thats left is dried mutated skin."; + public static string ItemDatabase_ItemDefinitions_20 => instance._ItemDatabase_ItemDefinitions_20; + public string _ItemDatabase_ItemDefinitions_20 = "Armsy, the second heaviest of the mutants needs very resistant skin. It often drags its legs on the ground when it moves. The skin on their legs grew very thick, and has bone tissue mixed with skin tissue."; + public static string ItemDatabase_ItemDefinitions_21 => instance._ItemDatabase_ItemDefinitions_21; + public string _ItemDatabase_ItemDefinitions_21 = "Finger Warmer"; + public static string ItemDatabase_ItemDefinitions_22 => instance._ItemDatabase_ItemDefinitions_22; + public string _ItemDatabase_ItemDefinitions_22 = "A little glove to keep your fingers warm and cozy."; + public static string ItemDatabase_ItemDefinitions_23 => instance._ItemDatabase_ItemDefinitions_23; + public string _ItemDatabase_ItemDefinitions_23 = "Made of wool."; + public static string ItemDatabase_ItemDefinitions_24 => instance._ItemDatabase_ItemDefinitions_24; + public string _ItemDatabase_ItemDefinitions_24 = "Thick Rubber Glove"; + public static string ItemDatabase_ItemDefinitions_25 => instance._ItemDatabase_ItemDefinitions_25; + public string _ItemDatabase_ItemDefinitions_25 = "A glove that helps get a better grip."; + public static string ItemDatabase_ItemDefinitions_26 => instance._ItemDatabase_ItemDefinitions_26; + public string _ItemDatabase_ItemDefinitions_26 = "Tribal Glove"; + public static string ItemDatabase_ItemDefinitions_27 => instance._ItemDatabase_ItemDefinitions_27; + public string _ItemDatabase_ItemDefinitions_27 = "Offers medicore protection."; + public static string ItemDatabase_ItemDefinitions_28 => instance._ItemDatabase_ItemDefinitions_28; + public string _ItemDatabase_ItemDefinitions_28 = "Glove made out of thin bones, some may possibly be from a human."; + public static string ItemDatabase_ItemDefinitions_29 => instance._ItemDatabase_ItemDefinitions_29; + public string _ItemDatabase_ItemDefinitions_29 = "Tribe Leader Glove"; + public static string ItemDatabase_ItemDefinitions_30 => instance._ItemDatabase_ItemDefinitions_30; + public string _ItemDatabase_ItemDefinitions_30 = "A glove that offers little protection but a lot of offensive stats."; + public static string ItemDatabase_ItemDefinitions_31 => instance._ItemDatabase_ItemDefinitions_31; + public string _ItemDatabase_ItemDefinitions_31 = "A glove made of bones, some have engravings of crosses."; + public static string ItemDatabase_ItemDefinitions_32 => instance._ItemDatabase_ItemDefinitions_32; + public string _ItemDatabase_ItemDefinitions_32 = "Worn Shorts"; + public static string ItemDatabase_ItemDefinitions_33 => instance._ItemDatabase_ItemDefinitions_33; + public string _ItemDatabase_ItemDefinitions_33 = "Some protection for legs."; + public static string ItemDatabase_ItemDefinitions_34 => instance._ItemDatabase_ItemDefinitions_34; + public string _ItemDatabase_ItemDefinitions_34 = "Short, made out of cheap thin fabric, and on top of that they are damaged. But its better than nothing."; + public static string ItemDatabase_ItemDefinitions_35 => instance._ItemDatabase_ItemDefinitions_35; + public string _ItemDatabase_ItemDefinitions_35 = "Cargo Shorts"; + public static string ItemDatabase_ItemDefinitions_36 => instance._ItemDatabase_ItemDefinitions_36; + public string _ItemDatabase_ItemDefinitions_36 = "No protection at all but they allow to carry more items."; + public static string ItemDatabase_ItemDefinitions_37 => instance._ItemDatabase_ItemDefinitions_37; + public string _ItemDatabase_ItemDefinitions_37 = "They are ugly as hell tho"; + public static string ItemDatabase_ItemDefinitions_38 => instance._ItemDatabase_ItemDefinitions_38; + public string _ItemDatabase_ItemDefinitions_38 = "Passenger's Jacket"; + public static string ItemDatabase_ItemDefinitions_39 => instance._ItemDatabase_ItemDefinitions_39; + public string _ItemDatabase_ItemDefinitions_39 = "It's a little torn. "; + public static string ItemDatabase_ItemDefinitions_40 => instance._ItemDatabase_ItemDefinitions_40; + public string _ItemDatabase_ItemDefinitions_40 = "This jacket was worn by Preston A. the 34th passenger on the plane. Eric talked to him at the airport. Guy was odd, and now he's dead."; + public static string ItemDatabase_ItemDefinitions_41 => instance._ItemDatabase_ItemDefinitions_41; + public string _ItemDatabase_ItemDefinitions_41 = "Leather Jacket"; + public static string ItemDatabase_ItemDefinitions_42 => instance._ItemDatabase_ItemDefinitions_42; + public string _ItemDatabase_ItemDefinitions_42 = "Offers little protection"; + public static string ItemDatabase_ItemDefinitions_43 => instance._ItemDatabase_ItemDefinitions_43; + public string _ItemDatabase_ItemDefinitions_43 = "This jacket was in a baggage of one of the plane passengers"; + public static string ItemDatabase_ItemDefinitions_44 => instance._ItemDatabase_ItemDefinitions_44; + public string _ItemDatabase_ItemDefinitions_44 = "Boar Skin Armor"; + public static string ItemDatabase_ItemDefinitions_45 => instance._ItemDatabase_ItemDefinitions_45; + public string _ItemDatabase_ItemDefinitions_45 = "It's made from a skin of a huge individual. It's heavy and thick, and surely can protect from attacks of weaker enemies."; + public static string ItemDatabase_ItemDefinitions_46 => instance._ItemDatabase_ItemDefinitions_46; + public string _ItemDatabase_ItemDefinitions_46 = "Boar, one of the animals on the peninsula, is rather rare and it's skin is very durable."; + public static string ItemDatabase_ItemDefinitions_47 => instance._ItemDatabase_ItemDefinitions_47; + public string _ItemDatabase_ItemDefinitions_47 = "Crocodile Skin Armor"; + public static string ItemDatabase_ItemDefinitions_48 => instance._ItemDatabase_ItemDefinitions_48; + public string _ItemDatabase_ItemDefinitions_48 = "Plate armour"; + public static string ItemDatabase_ItemDefinitions_49 => instance._ItemDatabase_ItemDefinitions_49; + public string _ItemDatabase_ItemDefinitions_49 = "Bear Skin Armor"; + public static string ItemDatabase_ItemDefinitions_50 => instance._ItemDatabase_ItemDefinitions_50; + public string _ItemDatabase_ItemDefinitions_50 = "Archer's Gear"; + public static string ItemDatabase_ItemDefinitions_51 => instance._ItemDatabase_ItemDefinitions_51; + public string _ItemDatabase_ItemDefinitions_51 = "Hazard's Gear"; + public static string ItemDatabase_ItemDefinitions_52 => instance._ItemDatabase_ItemDefinitions_52; + public string _ItemDatabase_ItemDefinitions_52 = "Mysterious robe"; + public static string ItemDatabase_ItemDefinitions_53 => instance._ItemDatabase_ItemDefinitions_53; + public string _ItemDatabase_ItemDefinitions_53 = "Magic flows through the entirety of this object. It's made out of unknown material"; + public static string ItemDatabase_ItemDefinitions_54 => instance._ItemDatabase_ItemDefinitions_54; + public string _ItemDatabase_ItemDefinitions_54 = "Robe looks like it was created yesterday, but its older than the oldest of mankinds' civilizations. Simply looking at it sends chills down the spine."; + public static string ItemDatabase_ItemDefinitions_55 => instance._ItemDatabase_ItemDefinitions_55; + public string _ItemDatabase_ItemDefinitions_55 = "Empowers cataclysm. The vortex turns blue, damage is increased, freezes enemies "; + public static string ItemDatabase_ItemDefinitions_56 => instance._ItemDatabase_ItemDefinitions_56; + public string _ItemDatabase_ItemDefinitions_56 = "Rusty Longsword"; + public static string ItemDatabase_ItemDefinitions_57 => instance._ItemDatabase_ItemDefinitions_57; + public string _ItemDatabase_ItemDefinitions_57 = "A long, very heavy sword. Edge got dull over time. Still, it's in a condition that allows me to slice some enemies in half."; + public static string ItemDatabase_ItemDefinitions_58 => instance._ItemDatabase_ItemDefinitions_58; + public string _ItemDatabase_ItemDefinitions_58 = "The sword appears to be from medieval ages, through it's not. It was made a lot later. It never was used as a weapon in battles, because it was merely a decoration."; + public static string ItemDatabase_ItemDefinitions_59 => instance._ItemDatabase_ItemDefinitions_59; + public string _ItemDatabase_ItemDefinitions_59 = "Longsword"; + public static string ItemDatabase_ItemDefinitions_60 => instance._ItemDatabase_ItemDefinitions_60; + public string _ItemDatabase_ItemDefinitions_60 = "Sharp and long"; + public static string ItemDatabase_ItemDefinitions_61 => instance._ItemDatabase_ItemDefinitions_61; + public string _ItemDatabase_ItemDefinitions_61 = "The sword is in perfect contidion."; + public static string ItemDatabase_ItemDefinitions_62 => instance._ItemDatabase_ItemDefinitions_62; + public string _ItemDatabase_ItemDefinitions_62 = "Full Metal Sword"; + public static string ItemDatabase_ItemDefinitions_63 => instance._ItemDatabase_ItemDefinitions_63; + public string _ItemDatabase_ItemDefinitions_63 = "It's sooo big..."; + public static string ItemDatabase_ItemDefinitions_64 => instance._ItemDatabase_ItemDefinitions_64; + public string _ItemDatabase_ItemDefinitions_64 = "A normal human cannot lift this."; + public static string ItemDatabase_ItemDefinitions_65 => instance._ItemDatabase_ItemDefinitions_65; + public string _ItemDatabase_ItemDefinitions_65 = "The Leech"; + public static string ItemDatabase_ItemDefinitions_66 => instance._ItemDatabase_ItemDefinitions_66; + public string _ItemDatabase_ItemDefinitions_66 = "Hey where did my health g- oh it's back..."; + public static string ItemDatabase_ItemDefinitions_67 => instance._ItemDatabase_ItemDefinitions_67; + public string _ItemDatabase_ItemDefinitions_67 = "Smokey's Sacred Quiver"; + public static string ItemDatabase_ItemDefinitions_68 => instance._ItemDatabase_ItemDefinitions_68; + public string _ItemDatabase_ItemDefinitions_68 = "SmokeyTheBear died because he never used this item."; + public static string ItemDatabase_ItemDefinitions_69 => instance._ItemDatabase_ItemDefinitions_69; + public string _ItemDatabase_ItemDefinitions_69 = "Smokey was the friend of allmighty Hazard, who can materialize any kind of weapon at the snap of his fingers. Hazard remebered Smokey's favourite playstyle and he gave him this as a gift to purge the sh** out of mutants."; + public static string ItemDatabase_ItemDefinitions_70(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_70, objects); + public string _ItemDatabase_ItemDefinitions_70 = "Crossbows operate at {0} speed and deal {1} increased damage"; + public static string ItemDatabase_ItemDefinitions_71 => instance._ItemDatabase_ItemDefinitions_71; + public string _ItemDatabase_ItemDefinitions_71 = "Broken shield"; + public static string ItemDatabase_ItemDefinitions_72 => instance._ItemDatabase_ItemDefinitions_72; + public string _ItemDatabase_ItemDefinitions_72 = "Tower Shield"; + public static string ItemDatabase_ItemDefinitions_73 => instance._ItemDatabase_ItemDefinitions_73; + public string _ItemDatabase_ItemDefinitions_73 = "Broken Leather Shoulder Armor"; + public static string ItemDatabase_ItemDefinitions_74 => instance._ItemDatabase_ItemDefinitions_74; + public string _ItemDatabase_ItemDefinitions_74 = "Leather Shoulder Armor"; + public static string ItemDatabase_ItemDefinitions_75 => instance._ItemDatabase_ItemDefinitions_75; + public string _ItemDatabase_ItemDefinitions_75 = "Phase Pauldrons"; + public static string ItemDatabase_ItemDefinitions_76 => instance._ItemDatabase_ItemDefinitions_76; + public string _ItemDatabase_ItemDefinitions_76 = "The distance of blink is increased by {} meters, and blink now hits everything that you teleported through"; + public static string ItemDatabase_ItemDefinitions_77 => instance._ItemDatabase_ItemDefinitions_77; + public string _ItemDatabase_ItemDefinitions_77 = "MAGA Cap"; + public static string ItemDatabase_ItemDefinitions_78 => instance._ItemDatabase_ItemDefinitions_78; + public string _ItemDatabase_ItemDefinitions_78 = "Wearing this item channels the power of D.Trump to you"; + public static string ItemDatabase_ItemDefinitions_79 => instance._ItemDatabase_ItemDefinitions_79; + public string _ItemDatabase_ItemDefinitions_79 = "... or does it?"; + public static string ItemDatabase_ItemDefinitions_80 => instance._ItemDatabase_ItemDefinitions_80; + public string _ItemDatabase_ItemDefinitions_80 = "Hubble's Vision"; + public static string ItemDatabase_ItemDefinitions_81 => instance._ItemDatabase_ItemDefinitions_81; + public string _ItemDatabase_ItemDefinitions_81 = "Wearing this item empowers your black hole spell"; + public static string ItemDatabase_ItemDefinitions_82 => instance._ItemDatabase_ItemDefinitions_82; + public string _ItemDatabase_ItemDefinitions_82 = "Man, fuck gravity."; + public static string ItemDatabase_ItemDefinitions_83 => instance._ItemDatabase_ItemDefinitions_83; + public string _ItemDatabase_ItemDefinitions_83 = "Broken Loop"; + public static string ItemDatabase_ItemDefinitions_84 => instance._ItemDatabase_ItemDefinitions_84; + public string _ItemDatabase_ItemDefinitions_84 = "Loop"; + public static string ItemDatabase_ItemDefinitions_85 => instance._ItemDatabase_ItemDefinitions_85; + public string _ItemDatabase_ItemDefinitions_85 = "Toxic Ring"; + public static string ItemDatabase_ItemDefinitions_86 => instance._ItemDatabase_ItemDefinitions_86; + public string _ItemDatabase_ItemDefinitions_86 = " comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo."; + public static string ItemDatabase_ItemDefinitions_87 => instance._ItemDatabase_ItemDefinitions_87; + public string _ItemDatabase_ItemDefinitions_87 = "What the fuck did you just fucking say about me, you little bitch? I'll have you know I graduated top of my class in the Navy Seals, and I've been involved in numerous secret raids on Al-Quaeda, and I have over 300 confirmed kills. I am trained in gorilla warfare and I'm the top sniper in the entire US armed forces. You are nothing to me but just another target. I will wipe you the fuck out with precision the likes of which has never been seen before on this Earth, mark my fucking words. You think you can get away with saying that shit to me over the Internet? Think again, fucker. As we speak I am contacting my secret network of spies across the USA and your IP is being traced right now so you better prepare for the storm, maggot. The storm that wipes out the pathetic little thing you call your life. You're fucking dead, kid. I can be anywhere, anytime, and I can kill you in over seven hundred ways, and that's just with my bare hands. Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the United States Marine Corps and I will use it to its full extent to wipe your miserable ass off the face of the continent, you little shit. If only you could have known what unholy retribution your little \"clever\" comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo."; + public static string ItemDatabase_ItemDefinitions_88 => instance._ItemDatabase_ItemDefinitions_88; + public string _ItemDatabase_ItemDefinitions_88 = "Scarf"; + public static string ItemDatabase_ItemDefinitions_89 => instance._ItemDatabase_ItemDefinitions_89; + public string _ItemDatabase_ItemDefinitions_89 = "Damaged Bracer"; + public static string ItemDatabase_ItemDefinitions_90 => instance._ItemDatabase_ItemDefinitions_90; + public string _ItemDatabase_ItemDefinitions_90 = "Worn Bracer"; + public static string ItemDatabase_ItemDefinitions_91 => instance._ItemDatabase_ItemDefinitions_91; + public string _ItemDatabase_ItemDefinitions_91 = "Leather Bracer"; + public static string ItemDatabase_ItemDefinitions_92 => instance._ItemDatabase_ItemDefinitions_92; + public string _ItemDatabase_ItemDefinitions_92 = "Greater Mutated Heart"; + public static string ItemDatabase_ItemDefinitions_93 => instance._ItemDatabase_ItemDefinitions_93; + public string _ItemDatabase_ItemDefinitions_93 = "Can be consumed by right clicking it"; + public static string ItemDatabase_ItemDefinitions_94 => instance._ItemDatabase_ItemDefinitions_94; + public string _ItemDatabase_ItemDefinitions_94 = "Lesser Mutated Heart"; + public static string ItemDatabase_ItemDefinitions_95 => instance._ItemDatabase_ItemDefinitions_95; + public string _ItemDatabase_ItemDefinitions_95 = "Spiked ring"; + public static string ItemDatabase_ItemDefinitions_96 => instance._ItemDatabase_ItemDefinitions_96; + public string _ItemDatabase_ItemDefinitions_96 = "Armor piercing for either melee or ranged weapons"; + public static string ItemDatabase_ItemDefinitions_97 => instance._ItemDatabase_ItemDefinitions_97; + public string _ItemDatabase_ItemDefinitions_97 = "Piercer"; + public static string ItemDatabase_ItemDefinitions_98 => instance._ItemDatabase_ItemDefinitions_98; + public string _ItemDatabase_ItemDefinitions_98 = "Moon Boots"; + public static string ItemDatabase_ItemDefinitions_99 => instance._ItemDatabase_ItemDefinitions_99; + public string _ItemDatabase_ItemDefinitions_99 = "A pair of boots from the moon."; + public static string ItemDatabase_ItemDefinitions_100 => instance._ItemDatabase_ItemDefinitions_100; + public string _ItemDatabase_ItemDefinitions_100 = "It is said that the wearer will not take fall damage while wearing these boots and will jump like on the moon, I wouldn't trust it tough."; + public static string ItemDatabase_ItemDefinitions_101 => instance._ItemDatabase_ItemDefinitions_101; + public string _ItemDatabase_ItemDefinitions_101 = "Golden Ring of Strength"; + public static string ItemDatabase_ItemDefinitions_102 => instance._ItemDatabase_ItemDefinitions_102; + public string _ItemDatabase_ItemDefinitions_102 = "A Ring of ancient times."; + public static string ItemDatabase_ItemDefinitions_103 => instance._ItemDatabase_ItemDefinitions_103; + public string _ItemDatabase_ItemDefinitions_103 = "A Golden Ring that looks simple and elegant, yet it feels powerfull to the touch."; + public static string ItemDatabase_ItemDefinitions_104 => instance._ItemDatabase_ItemDefinitions_104; + public string _ItemDatabase_ItemDefinitions_104 = "Golden Ring of Vitality"; + public static string ItemDatabase_ItemDefinitions_105 => instance._ItemDatabase_ItemDefinitions_105; + public string _ItemDatabase_ItemDefinitions_105 = "Golden Ring of Agility"; + public static string ItemDatabase_ItemDefinitions_106 => instance._ItemDatabase_ItemDefinitions_106; + public string _ItemDatabase_ItemDefinitions_106 = "Golden Ring of Intelligence"; + public static string ItemDatabase_ItemDefinitions_107 => instance._ItemDatabase_ItemDefinitions_107; + public string _ItemDatabase_ItemDefinitions_107 = "Silver Ring of Strength"; + public static string ItemDatabase_ItemDefinitions_108 => instance._ItemDatabase_ItemDefinitions_108; + public string _ItemDatabase_ItemDefinitions_108 = "A Silver Ring that looks simple and elegant, yet it feels powerfull to the touch."; + public static string ItemDatabase_ItemDefinitions_109 => instance._ItemDatabase_ItemDefinitions_109; + public string _ItemDatabase_ItemDefinitions_109 = "Silver Ring of Vitality"; + public static string ItemDatabase_ItemDefinitions_110 => instance._ItemDatabase_ItemDefinitions_110; + public string _ItemDatabase_ItemDefinitions_110 = "Silver Ring of Agility"; + public static string ItemDatabase_ItemDefinitions_111 => instance._ItemDatabase_ItemDefinitions_111; + public string _ItemDatabase_ItemDefinitions_111 = "Silver Ring of Intelligence"; + public static string ItemDatabase_ItemDefinitions_112 => instance._ItemDatabase_ItemDefinitions_112; + public string _ItemDatabase_ItemDefinitions_112 = "Steel Ring of Strength"; + public static string ItemDatabase_ItemDefinitions_113 => instance._ItemDatabase_ItemDefinitions_113; + public string _ItemDatabase_ItemDefinitions_113 = "A Steel Ring that looks simple and elegant, yet it feels powerfull to the touch."; + public static string ItemDatabase_ItemDefinitions_114 => instance._ItemDatabase_ItemDefinitions_114; + public string _ItemDatabase_ItemDefinitions_114 = "Steel Ring of Vitality"; + public static string ItemDatabase_ItemDefinitions_115 => instance._ItemDatabase_ItemDefinitions_115; + public string _ItemDatabase_ItemDefinitions_115 = "Steel Ring of Agility"; + public static string ItemDatabase_ItemDefinitions_116 => instance._ItemDatabase_ItemDefinitions_116; + public string _ItemDatabase_ItemDefinitions_116 = "Steel Ring of Intelligence"; + public static string ItemDatabase_ItemDefinitions_117 => instance._ItemDatabase_ItemDefinitions_117; + public string _ItemDatabase_ItemDefinitions_117 = "The One Ring To Rule Them All"; + public static string ItemDatabase_ItemDefinitions_118 => instance._ItemDatabase_ItemDefinitions_118; + public string _ItemDatabase_ItemDefinitions_118 = "An Ancient magical Ring of great power."; + public static string ItemDatabase_ItemDefinitions_119 => instance._ItemDatabase_ItemDefinitions_119; + public string _ItemDatabase_ItemDefinitions_119 = "It looks like and ordinay ring, but a strange energy is surrounding it. The Ring is said to have been found inside a volcanic rock by an archeologist, who went mad and isolated himself on the peninsula many years ago. But that's just a fairy tale, ring?"; + public static string ItemDatabase_ItemDefinitions_120 => instance._ItemDatabase_ItemDefinitions_120; + public string _ItemDatabase_ItemDefinitions_120 = "Attracts unwanted attention of an unknown entity."; + public static string ItemDatabase_ItemDefinitions_121 => instance._ItemDatabase_ItemDefinitions_121; + public string _ItemDatabase_ItemDefinitions_121 = "Golden Locket of Strength"; + public static string ItemDatabase_ItemDefinitions_122 => instance._ItemDatabase_ItemDefinitions_122; + public string _ItemDatabase_ItemDefinitions_122 = "A Locket of ancient times."; + public static string ItemDatabase_ItemDefinitions_123 => instance._ItemDatabase_ItemDefinitions_123; + public string _ItemDatabase_ItemDefinitions_123 = "A Golden Locket that looks simple and elegant, yet it feels powerfull to the touch."; + public static string ItemDatabase_ItemDefinitions_124 => instance._ItemDatabase_ItemDefinitions_124; + public string _ItemDatabase_ItemDefinitions_124 = "Golden Locket of Vitality"; + public static string ItemDatabase_ItemDefinitions_125 => instance._ItemDatabase_ItemDefinitions_125; + public string _ItemDatabase_ItemDefinitions_125 = "Golden Locket of Agility"; + public static string ItemDatabase_ItemDefinitions_126 => instance._ItemDatabase_ItemDefinitions_126; + public string _ItemDatabase_ItemDefinitions_126 = "Golden Locket of Intelligence"; + public static string ItemDatabase_ItemDefinitions_127 => instance._ItemDatabase_ItemDefinitions_127; + public string _ItemDatabase_ItemDefinitions_127 = "Silver Locket of Strength"; + public static string ItemDatabase_ItemDefinitions_128 => instance._ItemDatabase_ItemDefinitions_128; + public string _ItemDatabase_ItemDefinitions_128 = "A Silver Locket that looks simple and elegant, yet it feels powerfull to the touch."; + public static string ItemDatabase_ItemDefinitions_129 => instance._ItemDatabase_ItemDefinitions_129; + public string _ItemDatabase_ItemDefinitions_129 = "Silver Locket of Vitality"; + public static string ItemDatabase_ItemDefinitions_130 => instance._ItemDatabase_ItemDefinitions_130; + public string _ItemDatabase_ItemDefinitions_130 = "Silver Locket of Agility"; + public static string ItemDatabase_ItemDefinitions_131 => instance._ItemDatabase_ItemDefinitions_131; + public string _ItemDatabase_ItemDefinitions_131 = "Silver Locket of Intelligence"; + public static string ItemDatabase_ItemDefinitions_132 => instance._ItemDatabase_ItemDefinitions_132; + public string _ItemDatabase_ItemDefinitions_132 = "Emerald Pendant of Strength"; + public static string ItemDatabase_ItemDefinitions_133 => instance._ItemDatabase_ItemDefinitions_133; + public string _ItemDatabase_ItemDefinitions_133 = "A Pendant of ancient times."; + public static string ItemDatabase_ItemDefinitions_134 => instance._ItemDatabase_ItemDefinitions_134; + public string _ItemDatabase_ItemDefinitions_134 = "An Emerald Pendant that looks simple and elegant, yet it feels powerfull to the touch."; + public static string ItemDatabase_ItemDefinitions_135 => instance._ItemDatabase_ItemDefinitions_135; + public string _ItemDatabase_ItemDefinitions_135 = "Emerald Pendant of Vitality"; + public static string ItemDatabase_ItemDefinitions_136 => instance._ItemDatabase_ItemDefinitions_136; + public string _ItemDatabase_ItemDefinitions_136 = "Emerald Pendant of Agility"; + public static string ItemDatabase_ItemDefinitions_137 => instance._ItemDatabase_ItemDefinitions_137; + public string _ItemDatabase_ItemDefinitions_137 = "Emerald Pendant of Intelligence"; + public static string ItemDatabase_ItemDefinitions_138 => instance._ItemDatabase_ItemDefinitions_138; + public string _ItemDatabase_ItemDefinitions_138 = "Diamond Pendant of Strength"; + public static string ItemDatabase_ItemDefinitions_139 => instance._ItemDatabase_ItemDefinitions_139; + public string _ItemDatabase_ItemDefinitions_139 = "A Diamond Pendant that looks simple and elegant, yet it feels powerfull to the touch."; + public static string ItemDatabase_ItemDefinitions_140 => instance._ItemDatabase_ItemDefinitions_140; + public string _ItemDatabase_ItemDefinitions_140 = "Diamond Pendant of Vitality"; + public static string ItemDatabase_ItemDefinitions_141 => instance._ItemDatabase_ItemDefinitions_141; + public string _ItemDatabase_ItemDefinitions_141 = "Diamond Pendant of Agility"; + public static string ItemDatabase_ItemDefinitions_142 => instance._ItemDatabase_ItemDefinitions_142; + public string _ItemDatabase_ItemDefinitions_142 = "Diamond Pendant of Intelligence"; + public static string ItemDatabase_ItemDefinitions_143 => instance._ItemDatabase_ItemDefinitions_143; + public string _ItemDatabase_ItemDefinitions_143 = "Armsy Finger Necklace"; + public static string ItemDatabase_ItemDefinitions_144 => instance._ItemDatabase_ItemDefinitions_144; + public string _ItemDatabase_ItemDefinitions_144 = "A Necklace decorated with armsy fingertips."; + public static string ItemDatabase_ItemDefinitions_145 => instance._ItemDatabase_ItemDefinitions_145; + public string _ItemDatabase_ItemDefinitions_145 = "A Necklace made from the fingertips of an armsy, yeilding it's raw power and strentgh."; + public static string ItemDatabase_ItemDefinitions_146 => instance._ItemDatabase_ItemDefinitions_146; + public string _ItemDatabase_ItemDefinitions_146 = "Virginia Heart Pendant"; + public static string ItemDatabase_ItemDefinitions_147 => instance._ItemDatabase_ItemDefinitions_147; + public string _ItemDatabase_ItemDefinitions_147 = "A Pendant of a petrified Virginia heart."; + public static string ItemDatabase_ItemDefinitions_148 => instance._ItemDatabase_ItemDefinitions_148; + public string _ItemDatabase_ItemDefinitions_148 = "A Pendant made from a petrified Virginia heart, yeilding it's love and Vitality."; + public static string ItemDatabase_ItemDefinitions_149 => instance._ItemDatabase_ItemDefinitions_149; + public string _ItemDatabase_ItemDefinitions_149 = "Cowman Toe Necklace"; + public static string ItemDatabase_ItemDefinitions_150 => instance._ItemDatabase_ItemDefinitions_150; + public string _ItemDatabase_ItemDefinitions_150 = "A Necklace decorated with cowman toes."; + public static string ItemDatabase_ItemDefinitions_151 => instance._ItemDatabase_ItemDefinitions_151; + public string _ItemDatabase_ItemDefinitions_151 = "A Necklace made from the fingertips of an armsy, yeilding it's speed and agility."; + public static string ItemDatabase_ItemDefinitions_152 => instance._ItemDatabase_ItemDefinitions_152; + public string _ItemDatabase_ItemDefinitions_152 = "Pendant of Perpetual Rebirth"; + public static string ItemDatabase_ItemDefinitions_153 => instance._ItemDatabase_ItemDefinitions_153; + public string _ItemDatabase_ItemDefinitions_153 = "A Pendant of a shrunken babyhead."; + public static string ItemDatabase_ItemDefinitions_154 => instance._ItemDatabase_ItemDefinitions_154; + public string _ItemDatabase_ItemDefinitions_154 = "A pedant of great power. Obtainable only from babies or crafting"; + public static string ItemDatabase_ItemDefinitions_155(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_155, objects); + public string _ItemDatabase_ItemDefinitions_155 = "decrease a random cooldown by {0} second whenever you hit something with melee or ranged attack."; + public static string ItemDatabase_ItemDefinitions_156 => instance._ItemDatabase_ItemDefinitions_156; + public string _ItemDatabase_ItemDefinitions_156 = "Megan's Locket"; + public static string ItemDatabase_ItemDefinitions_157 => instance._ItemDatabase_ItemDefinitions_157; + public string _ItemDatabase_ItemDefinitions_157 = "The Locket Megan wore."; + public static string ItemDatabase_ItemDefinitions_158 => instance._ItemDatabase_ItemDefinitions_158; + public string _ItemDatabase_ItemDefinitions_158 = "Megan wore this Locket, it has a picture of her mom in it."; + public static string ItemDatabase_ItemDefinitions_159 => instance._ItemDatabase_ItemDefinitions_159; + public string _ItemDatabase_ItemDefinitions_159 = "Relic Hammer"; + public static string ItemDatabase_ItemDefinitions_160 => instance._ItemDatabase_ItemDefinitions_160; + public string _ItemDatabase_ItemDefinitions_160 = "It's slow and weak."; + public static string ItemDatabase_ItemDefinitions_161 => instance._ItemDatabase_ItemDefinitions_161; + public string _ItemDatabase_ItemDefinitions_161 = "Slows on hit"; + public static string ItemDatabase_ItemDefinitions_162 => instance._ItemDatabase_ItemDefinitions_162; + public string _ItemDatabase_ItemDefinitions_162 = "Black Hammer"; + public static string ItemDatabase_ItemDefinitions_163 => instance._ItemDatabase_ItemDefinitions_163; + public string _ItemDatabase_ItemDefinitions_163 = "It's slow but with enough strength i can make it a very deadly tool"; + public static string ItemDatabase_ItemDefinitions_164 => instance._ItemDatabase_ItemDefinitions_164; + public string _ItemDatabase_ItemDefinitions_164 = "Potato Sack"; + public static string ItemDatabase_ItemDefinitions_165 => instance._ItemDatabase_ItemDefinitions_165; + public string _ItemDatabase_ItemDefinitions_165 = "Can be used as a quiver"; + public static string ItemDatabase_ItemDefinitions_166 => instance._ItemDatabase_ItemDefinitions_166; + public string _ItemDatabase_ItemDefinitions_166 = "Rabbit Skin Quiver"; + public static string ItemDatabase_ItemDefinitions_167 => instance._ItemDatabase_ItemDefinitions_167; + public string _ItemDatabase_ItemDefinitions_167 = "Hollow Log"; + public static string ItemDatabase_ItemDefinitions_168 => instance._ItemDatabase_ItemDefinitions_168; + public string _ItemDatabase_ItemDefinitions_168 = "It allows for faster drawing of arrow than a cloth quiver"; + public static string ItemDatabase_ItemDefinitions_169 => instance._ItemDatabase_ItemDefinitions_169; + public string _ItemDatabase_ItemDefinitions_169 = "Spellbound Quiver"; + public static string ItemDatabase_ItemDefinitions_170 => instance._ItemDatabase_ItemDefinitions_170; + public string _ItemDatabase_ItemDefinitions_170 = "Long Lost Quiver"; + public static string ItemDatabase_ItemDefinitions_171 => instance._ItemDatabase_ItemDefinitions_171; + public string _ItemDatabase_ItemDefinitions_171 = "Spell Scroll"; + public static string ItemDatabase_ItemDefinitions_172 => instance._ItemDatabase_ItemDefinitions_172; + public string _ItemDatabase_ItemDefinitions_172 = "Contains a lot of information on how to properly cast spells to achieve better results"; + public static string ItemDatabase_ItemDefinitions_173 => instance._ItemDatabase_ItemDefinitions_173; + public string _ItemDatabase_ItemDefinitions_173 = "Cloth Pants"; + public static string ItemDatabase_ItemDefinitions_174 => instance._ItemDatabase_ItemDefinitions_174; + public string _ItemDatabase_ItemDefinitions_174 = "Offer little protction"; + public static string ItemDatabase_ItemDefinitions_175 => instance._ItemDatabase_ItemDefinitions_175; + public string _ItemDatabase_ItemDefinitions_175 = "Rough Hide Leggins"; + public static string ItemDatabase_ItemDefinitions_176 => instance._ItemDatabase_ItemDefinitions_176; + public string _ItemDatabase_ItemDefinitions_176 = "Plate Leggins"; + public static string ItemDatabase_ItemDefinitions_177 => instance._ItemDatabase_ItemDefinitions_177; + public string _ItemDatabase_ItemDefinitions_177 = "Sage's Robes"; + public static string ItemDatabase_ItemDefinitions_178 => instance._ItemDatabase_ItemDefinitions_178; + public string _ItemDatabase_ItemDefinitions_178 = "Hammer Jammers"; + public static string ItemDatabase_ItemDefinitions_179(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_179, objects); + public string _ItemDatabase_ItemDefinitions_179 = "Damage of your smash attack is increased by {0}, hammer stun duration is doubled"; + public static string ItemDatabase_ItemDefinitions_180 => instance._ItemDatabase_ItemDefinitions_180; + public string _ItemDatabase_ItemDefinitions_180 = "Pirate Pants"; + public static string ItemDatabase_ItemDefinitions_181 => instance._ItemDatabase_ItemDefinitions_181; + public string _ItemDatabase_ItemDefinitions_181 = "Those pants are ligh and comfortable. They offer plenty of mobility but lack in protection."; + public static string ItemDatabase_ItemDefinitions_182 => instance._ItemDatabase_ItemDefinitions_182; + public string _ItemDatabase_ItemDefinitions_182 = "Hexed Pants of Mr M."; + public static string ItemDatabase_ItemDefinitions_183 => instance._ItemDatabase_ItemDefinitions_183; + public string _ItemDatabase_ItemDefinitions_183 = "They look like yoga pants but for a man the size of a wardrobe"; + public static string ItemDatabase_ItemDefinitions_184 => instance._ItemDatabase_ItemDefinitions_184; + public string _ItemDatabase_ItemDefinitions_184 = "Once upon a time there was a man who was in a basement and fed himself with nothing but nuggets. He got so obese that friends and family started worrying. Hazard noticed this man and cursed his pants to force him to excercise."; + public static string ItemDatabase_ItemDefinitions_185(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_185, objects); + public string _ItemDatabase_ItemDefinitions_185 = "While moving, energy regeneration and damage is increased by {0}. While standing still for longer than a second, you loose {1} of max health per second."; + public static string ItemDatabase_ItemDefinitions_186 => instance._ItemDatabase_ItemDefinitions_186; + public string _ItemDatabase_ItemDefinitions_186 = "Leather Mantle"; + public static string ItemDatabase_ItemDefinitions_187 => instance._ItemDatabase_ItemDefinitions_187; + public string _ItemDatabase_ItemDefinitions_187 = "A piece of cloth to give protection from "; + public static string ItemDatabase_ItemDefinitions_188 => instance._ItemDatabase_ItemDefinitions_188; + public string _ItemDatabase_ItemDefinitions_188 = "Shoulder Guards"; + public static string ItemDatabase_ItemDefinitions_189 => instance._ItemDatabase_ItemDefinitions_189; + public string _ItemDatabase_ItemDefinitions_189 = "Medium armor piece."; + public static string ItemDatabase_ItemDefinitions_190 => instance._ItemDatabase_ItemDefinitions_190; + public string _ItemDatabase_ItemDefinitions_190 = "Heavy armor"; + public static string ItemDatabase_ItemDefinitions_191 => instance._ItemDatabase_ItemDefinitions_191; + public string _ItemDatabase_ItemDefinitions_191 = "Heavy Shoulder Plates"; + public static string ItemDatabase_ItemDefinitions_192 => instance._ItemDatabase_ItemDefinitions_192; + public string _ItemDatabase_ItemDefinitions_192 = "Heavy armor piece. They offer great protection at the cost of attack speed and movement speed decrease"; + public static string ItemDatabase_ItemDefinitions_193 => instance._ItemDatabase_ItemDefinitions_193; + public string _ItemDatabase_ItemDefinitions_193 = "Etched Mantle"; + public static string ItemDatabase_ItemDefinitions_194 => instance._ItemDatabase_ItemDefinitions_194; + public string _ItemDatabase_ItemDefinitions_194 = "Those pauldrons empower wearer's combat skill"; + public static string ItemDatabase_ItemDefinitions_195 => instance._ItemDatabase_ItemDefinitions_195; + public string _ItemDatabase_ItemDefinitions_195 = "Assassins Pauldrons"; + public static string ItemDatabase_ItemDefinitions_196 => instance._ItemDatabase_ItemDefinitions_196; + public string _ItemDatabase_ItemDefinitions_196 = "Death Pact"; + public static string ItemDatabase_ItemDefinitions_197 => instance._ItemDatabase_ItemDefinitions_197; + public string _ItemDatabase_ItemDefinitions_197 = "Find the greatest strength on the border of life and death."; + public static string ItemDatabase_ItemDefinitions_198(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_198, objects); + public string _ItemDatabase_ItemDefinitions_198 = "Every attack you make decreases your health by {0} of max health. For every percent of missing health you gain {1} damage amplification. This damage cannot kill you."; + public static string ItemDatabase_ItemDefinitions_199 => instance._ItemDatabase_ItemDefinitions_199; + public string _ItemDatabase_ItemDefinitions_199 = "Maximale Qualitot"; + public static string ItemDatabase_ItemDefinitions_200 => instance._ItemDatabase_ItemDefinitions_200; + public string _ItemDatabase_ItemDefinitions_200 = "A platinum ring with the most expensive jewels engraved on it. It's quality is uncomparable."; + public static string ItemDatabase_ItemDefinitions_201 => instance._ItemDatabase_ItemDefinitions_201; + public string _ItemDatabase_ItemDefinitions_201 = "Heart of Purity"; + public static string ItemDatabase_ItemDefinitions_202 => instance._ItemDatabase_ItemDefinitions_202; + public string _ItemDatabase_ItemDefinitions_202 = "A object filled with both destructive and creative energy. Allows to re-assign all spent mutation points"; + public static string ItemDatabase_ItemDefinitions_203 => instance._ItemDatabase_ItemDefinitions_203; + public string _ItemDatabase_ItemDefinitions_203 = "This powerful relic contains so much power, that it can kill anything and force it to come back to life, resulting in it's rebirth."; + public static string ItemDatabase_ItemDefinitions_204 => instance._ItemDatabase_ItemDefinitions_204; + public string _ItemDatabase_ItemDefinitions_204 = "Can be consumed by right clicking it. "; + public static string ItemDatabase_ItemDefinitions_205 => instance._ItemDatabase_ItemDefinitions_205; + public string _ItemDatabase_ItemDefinitions_205 = "Round Shield"; + public static string ItemDatabase_ItemDefinitions_206 => instance._ItemDatabase_ItemDefinitions_206; + public string _ItemDatabase_ItemDefinitions_206 = "A sturdy shield made of wood and reinforced with iron."; + public static string ItemDatabase_ItemDefinitions_207 => instance._ItemDatabase_ItemDefinitions_207; + public string _ItemDatabase_ItemDefinitions_207 = "Old Buckler"; + public static string ItemDatabase_ItemDefinitions_208 => instance._ItemDatabase_ItemDefinitions_208; + public string _ItemDatabase_ItemDefinitions_208 = "An old shield."; + public static string ItemDatabase_ItemDefinitions_209 => instance._ItemDatabase_ItemDefinitions_209; + public string _ItemDatabase_ItemDefinitions_209 = "This item has a lot of scratches that look like they were made by something with sharp claws."; + public static string ItemDatabase_ItemDefinitions_210 => instance._ItemDatabase_ItemDefinitions_210; + public string _ItemDatabase_ItemDefinitions_210 = "Dark Oak Shield"; + public static string ItemDatabase_ItemDefinitions_211 => instance._ItemDatabase_ItemDefinitions_211; + public string _ItemDatabase_ItemDefinitions_211 = "Bone Shield"; + public static string ItemDatabase_ItemDefinitions_212 => instance._ItemDatabase_ItemDefinitions_212; + public string _ItemDatabase_ItemDefinitions_212 = "A shield made of bones, held together by thick steel wire."; + public static string ItemDatabase_ItemDefinitions_213 => instance._ItemDatabase_ItemDefinitions_213; + public string _ItemDatabase_ItemDefinitions_213 = "Dull Longsword"; + public static string ItemDatabase_ItemDefinitions_214 => instance._ItemDatabase_ItemDefinitions_214; + public string _ItemDatabase_ItemDefinitions_214 = "It's round on the edges"; + public static string ItemDatabase_ItemDefinitions_215 => instance._ItemDatabase_ItemDefinitions_215; + public string _ItemDatabase_ItemDefinitions_215 = "Iron Horn"; + public static string ItemDatabase_ItemDefinitions_216(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_216, objects); + public string _ItemDatabase_ItemDefinitions_216 = "When using Warcry, you and all allies recieve armor bonus equal to {0} of your armor"; + public static string ItemDatabase_ItemDefinitions_217 => instance._ItemDatabase_ItemDefinitions_217; + public string _ItemDatabase_ItemDefinitions_217 = "The Great Iron Horn"; + public static string ItemDatabase_ItemDefinitions_218 => instance._ItemDatabase_ItemDefinitions_218; + public string _ItemDatabase_ItemDefinitions_218 = "Horned Helmet"; + public static string ItemDatabase_ItemDefinitions_219 => instance._ItemDatabase_ItemDefinitions_219; + public string _ItemDatabase_ItemDefinitions_219 = "A viking helmet"; + public static string ItemDatabase_ItemDefinitions_220 => instance._ItemDatabase_ItemDefinitions_220; + public string _ItemDatabase_ItemDefinitions_220 = "Mask"; + public static string ItemDatabase_ItemDefinitions_221 => instance._ItemDatabase_ItemDefinitions_221; + public string _ItemDatabase_ItemDefinitions_221 = "Mask of Madness"; + public static string ItemDatabase_ItemDefinitions_222 => instance._ItemDatabase_ItemDefinitions_222; + public string _ItemDatabase_ItemDefinitions_222 = "Old Scroll"; + public static string ItemDatabase_ItemDefinitions_223 => instance._ItemDatabase_ItemDefinitions_223; + public string _ItemDatabase_ItemDefinitions_223 = "Wormhole Stabilizators"; + public static string ItemDatabase_ItemDefinitions_224 => instance._ItemDatabase_ItemDefinitions_224; + public string _ItemDatabase_ItemDefinitions_224 = "High-tech gear"; + public static string ItemDatabase_ItemDefinitions_225 => instance._ItemDatabase_ItemDefinitions_225; + public string _ItemDatabase_ItemDefinitions_225 = "Hazard remember to put some fucking lore in here, don't leave it like this!"; + public static string ItemDatabase_ItemDefinitions_226(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_226, objects); + public string _ItemDatabase_ItemDefinitions_226 = "Increases the duration of a portal by {0} seconds"; + public static string ItemDatabase_ItemDefinitions_227 => instance._ItemDatabase_ItemDefinitions_227; + public string _ItemDatabase_ItemDefinitions_227 = "Cripplers"; + public static string ItemDatabase_ItemDefinitions_228(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_228, objects); + public string _ItemDatabase_ItemDefinitions_228 = "Increases the duration of a magic arrow's negative effect by {0} seconds"; + public static string ItemDatabase_ItemDefinitions_229 => instance._ItemDatabase_ItemDefinitions_229; + public string _ItemDatabase_ItemDefinitions_229 = "Crossfire"; + public static string ItemDatabase_ItemDefinitions_230 => instance._ItemDatabase_ItemDefinitions_230; + public string _ItemDatabase_ItemDefinitions_230 = "Infused with powerful magic. This item is a dangerous tool of destruction."; + public static string ItemDatabase_ItemDefinitions_231 => instance._ItemDatabase_ItemDefinitions_231; + public string _ItemDatabase_ItemDefinitions_231 = "When hitting an enemy with a projectile, create a magic arrow pointed at the enemy and shoot it without using in energy. This effect may occur once every 2 seconds, but can be interval can be shortened with cooldown reduction."; + public static string ItemDatabase_ItemDefinitions_232 => instance._ItemDatabase_ItemDefinitions_232; + public string _ItemDatabase_ItemDefinitions_232 = "Scroll of Recovery"; + public static string ItemDatabase_ItemDefinitions_233 => instance._ItemDatabase_ItemDefinitions_233; + public string _ItemDatabase_ItemDefinitions_233 = "Recovers health and stamina"; + public static string ItemDatabase_ItemDefinitions_234 => instance._ItemDatabase_ItemDefinitions_234; + public string _ItemDatabase_ItemDefinitions_234 = "Tiara"; + public static string ItemDatabase_ItemDefinitions_235 => instance._ItemDatabase_ItemDefinitions_235; + public string _ItemDatabase_ItemDefinitions_235 = "A beautiful tiara "; + public static string ItemDatabase_ItemDefinitions_236 => instance._ItemDatabase_ItemDefinitions_236; + public string _ItemDatabase_ItemDefinitions_236 = "This tiara may not provide much protection, but it sure is pretty"; + public static string ItemDatabase_ItemDefinitions_237 => instance._ItemDatabase_ItemDefinitions_237; + public string _ItemDatabase_ItemDefinitions_237 = "Shiny"; + public static string ItemDatabase_ItemDefinitions_238 => instance._ItemDatabase_ItemDefinitions_238; + public string _ItemDatabase_ItemDefinitions_238 = "Chastity belt"; + public static string ItemDatabase_ItemDefinitions_239 => instance._ItemDatabase_ItemDefinitions_239; + public string _ItemDatabase_ItemDefinitions_239 = "Dodge those fukbois"; + public static string ItemDatabase_ItemDefinitions_240 => instance._ItemDatabase_ItemDefinitions_240; + public string _ItemDatabase_ItemDefinitions_240 = "This belt will stop those cheeky cannibals and armsies from getting into your pants"; + public static string ItemDatabase_ItemDefinitions_241(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_241, objects); + public string _ItemDatabase_ItemDefinitions_241 = " {0} damage reduction while sleeping"; + public static string ItemDatabase_ItemDefinitions_242 => instance._ItemDatabase_ItemDefinitions_242; + public string _ItemDatabase_ItemDefinitions_242 = "Ice Scroll"; + public static string ItemDatabase_ItemDefinitions_243 => instance._ItemDatabase_ItemDefinitions_243; + public string _ItemDatabase_ItemDefinitions_243 = "A spell surrounded by flying shards of ice, contains tramendous power of cold."; + public static string ItemDatabase_ItemDefinitions_244 => instance._ItemDatabase_ItemDefinitions_244; + public string _ItemDatabase_ItemDefinitions_244 = "Created at the top of the mountain."; + public static string ItemDatabase_ItemDefinitions_245 => instance._ItemDatabase_ItemDefinitions_245; + public string _ItemDatabase_ItemDefinitions_245 = "Motorboat Modification Blueprints"; + public static string ItemDatabase_ItemDefinitions_246 => instance._ItemDatabase_ItemDefinitions_246; + public string _ItemDatabase_ItemDefinitions_246 = "Sheet of paper that allows to turn any raft into a high speed. Increases carry amount and increases speed of rafts."; + public static string ItemDatabase_ItemDefinitions_247 => instance._ItemDatabase_ItemDefinitions_247; + public string _ItemDatabase_ItemDefinitions_247 = "Who did this lmao."; + public static string ItemDatabase_ItemDefinitions_248 => instance._ItemDatabase_ItemDefinitions_248; + public string _ItemDatabase_ItemDefinitions_248 = "Axe of Swiftness"; + public static string ItemDatabase_ItemDefinitions_249 => instance._ItemDatabase_ItemDefinitions_249; + public string _ItemDatabase_ItemDefinitions_249 = "Severer"; + public static string ItemDatabase_ItemDefinitions_250 => instance._ItemDatabase_ItemDefinitions_250; + public string _ItemDatabase_ItemDefinitions_250 = "Golden Axe of Fortune"; + public static string ItemDatabase_ItemDefinitions_251 => instance._ItemDatabase_ItemDefinitions_251; + public string _ItemDatabase_ItemDefinitions_251 = "Axe of Misfortune"; + public static string ItemDatabase_ItemDefinitions_252 => instance._ItemDatabase_ItemDefinitions_252; + public string _ItemDatabase_ItemDefinitions_252 = "Misfortunate are the ones on the recieving end. They will bleed a lot"; + public static string ItemDatabase_ItemDefinitions_253 => instance._ItemDatabase_ItemDefinitions_253; + public string _ItemDatabase_ItemDefinitions_253 = "Golden Ring"; + public static string ItemDatabase_ItemDefinitions_254 => instance._ItemDatabase_ItemDefinitions_254; + public string _ItemDatabase_ItemDefinitions_254 = "Golden Locket"; + public static string ItemDatabase_ItemDefinitions_255 => instance._ItemDatabase_ItemDefinitions_255; + public string _ItemDatabase_ItemDefinitions_255 = "Dull Axe"; + public static string ItemDatabase_ItemDefinitions_256 => instance._ItemDatabase_ItemDefinitions_256; + public string _ItemDatabase_ItemDefinitions_256 = "Precise Adjustments"; + public static string ItemDatabase_ItemDefinitions_257(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_257, objects); + public string _ItemDatabase_ItemDefinitions_257 = "Focus attack speed buff duration is increased by {0} seconds"; + public static string ItemDatabase_ItemDefinitions_258 => instance._ItemDatabase_ItemDefinitions_258; + public string _ItemDatabase_ItemDefinitions_258 = "Rage"; + public static string ItemDatabase_ItemDefinitions_259(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_259, objects); + public string _ItemDatabase_ItemDefinitions_259 = "Increases maximum stacks of frenzy by {0}"; + public static string ItemDatabase_ItemDefinitions_260 => instance._ItemDatabase_ItemDefinitions_260; + public string _ItemDatabase_ItemDefinitions_260 = "Swords go brrrrrrttt"; + public static string ItemDatabase_ItemDefinitions_261 => instance._ItemDatabase_ItemDefinitions_261; + public string _ItemDatabase_ItemDefinitions_261 = "Jagged Edge"; + public static string ItemDatabase_ItemDefinitions_262(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_262, objects); + public string _ItemDatabase_ItemDefinitions_262 = "Bash has {0} a chance to make enemies to bleed for {1} of damage dealt per second for duration of slow"; + public static string ItemDatabase_ItemDefinitions_263 => instance._ItemDatabase_ItemDefinitions_263; + public string _ItemDatabase_ItemDefinitions_263 = "Bloodthirster"; + public static string ItemDatabase_ItemDefinitions_264 => instance._ItemDatabase_ItemDefinitions_264; + public string _ItemDatabase_ItemDefinitions_264 = "Drenched in blood of many unfortunate foes."; + public static string ItemDatabase_ItemDefinitions_265(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_265, objects); + public string _ItemDatabase_ItemDefinitions_265 = "Bash lifesteals {0} of damage dealt into energy and health"; + public static string ItemDatabase_ItemDefinitions_266 => instance._ItemDatabase_ItemDefinitions_266; + public string _ItemDatabase_ItemDefinitions_266 = "Frost Giant"; + public static string ItemDatabase_ItemDefinitions_267 => instance._ItemDatabase_ItemDefinitions_267; + public string _ItemDatabase_ItemDefinitions_267 = "Melee hits freeze enemies"; + public static string ItemDatabase_ItemDefinitions_268 => instance._ItemDatabase_ItemDefinitions_268; + public string _ItemDatabase_ItemDefinitions_268 = "Alexander's Shield"; + public static string ItemDatabase_ItemDefinitions_269 => instance._ItemDatabase_ItemDefinitions_269; + public string _ItemDatabase_ItemDefinitions_269 = "Parry has a chance to be casted when getting it. Requires parry to be equipped"; + public static string ItemDatabase_ItemDefinitions_270 => instance._ItemDatabase_ItemDefinitions_270; + public string _ItemDatabase_ItemDefinitions_270 = "King Qruies"; + public static string ItemDatabase_ItemDefinitions_271 => instance._ItemDatabase_ItemDefinitions_271; + public string _ItemDatabase_ItemDefinitions_271 = "A mighty sword seeking for it's owner"; + public static string ItemDatabase_ItemDefinitions_272 => instance._ItemDatabase_ItemDefinitions_272; + public string _ItemDatabase_ItemDefinitions_272 = "Gain additional melee damage equal to the last instance of physical damage taken."; + public static string ItemDatabase_ItemDefinitions_273 => instance._ItemDatabase_ItemDefinitions_273; + public string _ItemDatabase_ItemDefinitions_273 = "Grip of Sora"; + public static string ItemDatabase_ItemDefinitions_274 => instance._ItemDatabase_ItemDefinitions_274; + public string _ItemDatabase_ItemDefinitions_274 = "Look, a porcupine! -Sora"; + public static string ItemDatabase_ItemDefinitions_275(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_275, objects); + public string _ItemDatabase_ItemDefinitions_275 = "Multishot drains {0} less energy and shoots +4 projectiles. Additional projectiles do not increase the cost of multishot"; + public static string ItemDatabase_ItemDefinitions_276 => instance._ItemDatabase_ItemDefinitions_276; + public string _ItemDatabase_ItemDefinitions_276 = "Ancient Greatbow"; + public static string ItemDatabase_ItemDefinitions_277 => instance._ItemDatabase_ItemDefinitions_277; + public string _ItemDatabase_ItemDefinitions_277 = "A massive and slow bow, deals extra damage"; + public static string ItemDatabase_ItemDefinitions_278 => instance._ItemDatabase_ItemDefinitions_278; + public string _ItemDatabase_ItemDefinitions_278 = "Phoenix's Death"; + public static string ItemDatabase_ItemDefinitions_279 => instance._ItemDatabase_ItemDefinitions_279; + public string _ItemDatabase_ItemDefinitions_279 = "Ignites enemies on hit"; + public static string ItemDatabase_ItemDefinitions_280 => instance._ItemDatabase_ItemDefinitions_280; + public string _ItemDatabase_ItemDefinitions_280 = "Soulstring"; + public static string ItemDatabase_ItemDefinitions_281 => instance._ItemDatabase_ItemDefinitions_281; + public string _ItemDatabase_ItemDefinitions_281 = "A massive and slow bow"; + public static string ItemDatabase_ItemDefinitions_282(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_282, objects); + public string _ItemDatabase_ItemDefinitions_282 = "Blood infused arrow now deals additional {0} points of damage per health consumed"; + public static string ItemDatabase_ItemDefinitions_283 => instance._ItemDatabase_ItemDefinitions_283; + public string _ItemDatabase_ItemDefinitions_283 = "Greatbow"; + public static string ItemDatabase_ItemDefinitions_284 => instance._ItemDatabase_ItemDefinitions_284; + public string _ItemDatabase_ItemDefinitions_284 = "Withered Crown"; + public static string ItemDatabase_ItemDefinitions_285 => instance._ItemDatabase_ItemDefinitions_285; + public string _ItemDatabase_ItemDefinitions_285 = "Worn by Hazard."; + public static string ItemDatabase_ItemDefinitions_286(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_286, objects); + public string _ItemDatabase_ItemDefinitions_286 = "A single cast of blood infused arrow affects {0} more projectiles"; + public static string ItemDatabase_ItemDefinitions_287 => instance._ItemDatabase_ItemDefinitions_287; + public string _ItemDatabase_ItemDefinitions_287 = "Novice Magic Caster's Bracers"; + public static string ItemDatabase_ItemDefinitions_288 => instance._ItemDatabase_ItemDefinitions_288; + public string _ItemDatabase_ItemDefinitions_288 = "Ranger's Bracers"; + public static string ItemDatabase_ItemDefinitions_289 => instance._ItemDatabase_ItemDefinitions_289; + public string _ItemDatabase_ItemDefinitions_289 = "Swordsman's Bracers"; + public static string ItemDatabase_ItemDefinitions_290 => instance._ItemDatabase_ItemDefinitions_290; + public string _ItemDatabase_ItemDefinitions_290 = "Healer's Bracers"; + public static string ItemDatabase_ItemDefinitions_291 => instance._ItemDatabase_ItemDefinitions_291; + public string _ItemDatabase_ItemDefinitions_291 = "Novice Magic Caster's Gloves"; + public static string ItemDatabase_ItemDefinitions_292 => instance._ItemDatabase_ItemDefinitions_292; + public string _ItemDatabase_ItemDefinitions_292 = "Ranger's Gloves"; + public static string ItemDatabase_ItemDefinitions_293 => instance._ItemDatabase_ItemDefinitions_293; + public string _ItemDatabase_ItemDefinitions_293 = "Swordsman's Gloves"; + public static string ItemDatabase_ItemDefinitions_294 => instance._ItemDatabase_ItemDefinitions_294; + public string _ItemDatabase_ItemDefinitions_294 = "Healer's Gloves"; + public static string ItemDatabase_ItemDefinitions_295 => instance._ItemDatabase_ItemDefinitions_295; + public string _ItemDatabase_ItemDefinitions_295 = "Fate Gloves"; + public static string ItemDatabase_ItemDefinitions_296 => instance._ItemDatabase_ItemDefinitions_296; + public string _ItemDatabase_ItemDefinitions_296 = "Fate Boots"; + public static string ItemDatabase_ItemDefinitions_297 => instance._ItemDatabase_ItemDefinitions_297; + public string _ItemDatabase_ItemDefinitions_297 = "Greed"; + public static string ItemDatabase_ItemDefinitions_298 => instance._ItemDatabase_ItemDefinitions_298; + public string _ItemDatabase_ItemDefinitions_298 = "Automatically casts wide reach every second"; + public static string ItemDatabase_ItemDefinitions_299 => instance._ItemDatabase_ItemDefinitions_299; + public string _ItemDatabase_ItemDefinitions_299 = "Titanium Leggins"; + public static string ItemDatabase_ItemDefinitions_300 => instance._ItemDatabase_ItemDefinitions_300; + public string _ItemDatabase_ItemDefinitions_300 = "Heavily armored leg protection. Suffers from the same weaknesses as spartan armor."; + public static string ItemDatabase_ItemDefinitions_301 => instance._ItemDatabase_ItemDefinitions_301; + public string _ItemDatabase_ItemDefinitions_301 = "Iron Gauntlet"; + public static string ItemDatabase_ItemDefinitions_302 => instance._ItemDatabase_ItemDefinitions_302; + public string _ItemDatabase_ItemDefinitions_302 = "Magefist"; + public static string ItemDatabase_ItemDefinitions_303 => instance._ItemDatabase_ItemDefinitions_303; + public string _ItemDatabase_ItemDefinitions_303 = "Gloves that amplify magic"; + public static string ItemDatabase_ItemDefinitions_304 => instance._ItemDatabase_ItemDefinitions_304; + public string _ItemDatabase_ItemDefinitions_304 = "Spells deal double damage but have double the energy cost"; + public static string ItemDatabase_ItemDefinitions_305 => instance._ItemDatabase_ItemDefinitions_305; + public string _ItemDatabase_ItemDefinitions_305 = "Armored Boots"; + public static string ItemDatabase_ItemDefinitions_306 => instance._ItemDatabase_ItemDefinitions_306; + public string _ItemDatabase_ItemDefinitions_306 = "Heavily armored, resistant to damage boots."; + public static string ItemDatabase_ItemDefinitions_307 => instance._ItemDatabase_ItemDefinitions_307; + public string _ItemDatabase_ItemDefinitions_307 = "Broken Protector"; + public static string ItemDatabase_ItemDefinitions_308 => instance._ItemDatabase_ItemDefinitions_308; + public string _ItemDatabase_ItemDefinitions_308 = "This shield failed to protect those behind it."; + public static string ItemDatabase_ItemDefinitions_309 => instance._ItemDatabase_ItemDefinitions_309; + public string _ItemDatabase_ItemDefinitions_309 = "Forbidden Scroll"; + public static string ItemDatabase_ItemDefinitions_310 => instance._ItemDatabase_ItemDefinitions_310; + public string _ItemDatabase_ItemDefinitions_310 = "Too powerful to be kept."; + public static string ItemDatabase_ItemDefinitions_311 => instance._ItemDatabase_ItemDefinitions_311; + public string _ItemDatabase_ItemDefinitions_311 = "Doom Pauldrons"; + public static string ItemDatabase_ItemDefinitions_312 => instance._ItemDatabase_ItemDefinitions_312; + public string _ItemDatabase_ItemDefinitions_312 = "Despite the cool name, they are completely normal pair of shoulder armor."; + public static string ItemDatabase_ItemDefinitions_313 => instance._ItemDatabase_ItemDefinitions_313; + public string _ItemDatabase_ItemDefinitions_313 = "Wind armor"; + public static string ItemDatabase_ItemDefinitions_314 => instance._ItemDatabase_ItemDefinitions_314; + public string _ItemDatabase_ItemDefinitions_314 = "Run fast like the wind"; + public static string ItemDatabase_ItemDefinitions_315(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_315, objects); + public string _ItemDatabase_ItemDefinitions_315 = "Upon dodging an attack, gain {0} movement speed, {1} damage, {2} armor, and heal for {3} of your maximum health"; + public static string ItemDatabase_ItemDefinitions_316 => instance._ItemDatabase_ItemDefinitions_316; + public string _ItemDatabase_ItemDefinitions_316 = "Crusader Helmet"; + public static string ItemDatabase_ItemDefinitions_317 => instance._ItemDatabase_ItemDefinitions_317; + public string _ItemDatabase_ItemDefinitions_317 = "You're talking mad shit for someone within crusading distance"; + public static string ItemDatabase_ItemDefinitions_318 => instance._ItemDatabase_ItemDefinitions_318; + public string _ItemDatabase_ItemDefinitions_318 = "Hood"; + public static string ItemDatabase_ItemDefinitions_319 => instance._ItemDatabase_ItemDefinitions_319; + public string _ItemDatabase_ItemDefinitions_319 = "Hats provide usefull stat bonuses"; + public static string ItemDatabase_ItemDefinitions_320 => instance._ItemDatabase_ItemDefinitions_320; + public string _ItemDatabase_ItemDefinitions_320 = "The Spark of Light in The Darkness"; + public static string ItemDatabase_ItemDefinitions_321 => instance._ItemDatabase_ItemDefinitions_321; + public string _ItemDatabase_ItemDefinitions_321 = "Magic Scroll of great quality"; + public static string ItemDatabase_ItemDefinitions_322 => instance._ItemDatabase_ItemDefinitions_322; + public string _ItemDatabase_ItemDefinitions_322 = "Written in a language i canno't understand. Decyphering this text is impossible, so is the full utilization of the scroll."; + public static string ItemDatabase_ItemDefinitions_323(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_323, objects); + public string _ItemDatabase_ItemDefinitions_323 = "If a black hole hits {0} or more enemies during it's lifetime, a ball lightning is summoned after it ends."; + public static string ItemDatabase_ItemDefinitions_324 => instance._ItemDatabase_ItemDefinitions_324; + public string _ItemDatabase_ItemDefinitions_324 = "Purgatory"; + public static string ItemDatabase_ItemDefinitions_325 => instance._ItemDatabase_ItemDefinitions_325; + public string _ItemDatabase_ItemDefinitions_325 = "Golden ring with a bone chilling feel about it. This thing will only bring harm, but not to the wearer"; + public static string ItemDatabase_ItemDefinitions_326 => instance._ItemDatabase_ItemDefinitions_326; + public string _ItemDatabase_ItemDefinitions_326 = "Ring made of Netherrite"; + public static string ItemDatabase_ItemDefinitions_327(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_327, objects); + public string _ItemDatabase_ItemDefinitions_327 = "Purge increases all of your damage based on missing health. Up to {0}"; + public static string ItemDatabase_ItemDefinitions_328 => instance._ItemDatabase_ItemDefinitions_328; + public string _ItemDatabase_ItemDefinitions_328 = "Eruption"; + public static string ItemDatabase_ItemDefinitions_329 => instance._ItemDatabase_ItemDefinitions_329; + public string _ItemDatabase_ItemDefinitions_329 = "Incarnation of devastation"; + public static string ItemDatabase_ItemDefinitions_330 => instance._ItemDatabase_ItemDefinitions_330; + public string _ItemDatabase_ItemDefinitions_330 = "Headshots cause explosions"; + public static string ItemDatabase_ItemDefinitions_331 => instance._ItemDatabase_ItemDefinitions_331; + public string _ItemDatabase_ItemDefinitions_331 = "Archangel"; + public static string ItemDatabase_ItemDefinitions_332 => instance._ItemDatabase_ItemDefinitions_332; + public string _ItemDatabase_ItemDefinitions_332 = "Spread the goodness"; + public static string ItemDatabase_ItemDefinitions_333(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_333, objects); + public string _ItemDatabase_ItemDefinitions_333 = "Shooting another player causes them to be greatly empowered for {0} seconds"; + public static string ItemDatabase_ItemDefinitions_334 => instance._ItemDatabase_ItemDefinitions_334; + public string _ItemDatabase_ItemDefinitions_334 = "The Executioner"; + public static string ItemDatabase_ItemDefinitions_335 => instance._ItemDatabase_ItemDefinitions_335; + public string _ItemDatabase_ItemDefinitions_335 = "A sword for decapitating"; + public static string ItemDatabase_ItemDefinitions_336 => instance._ItemDatabase_ItemDefinitions_336; + public string _ItemDatabase_ItemDefinitions_336 = "Moon Cuirass"; + public static string ItemDatabase_ItemDefinitions_337 => instance._ItemDatabase_ItemDefinitions_337; + public string _ItemDatabase_ItemDefinitions_337 = "A piece of armor designed for an archer. "; + public static string ItemDatabase_ItemDefinitions_338(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_338, objects); + public string _ItemDatabase_ItemDefinitions_338 = "Landing a headshot with an arrow without the homing effect of seeking arrow at a distance greater than {0} feet deals tenfold damage, and hits the enemy two extra times"; + public static string ItemDatabase_ItemDefinitions_339 => instance._ItemDatabase_ItemDefinitions_339; + public string _ItemDatabase_ItemDefinitions_339 = "Thornmail"; + public static string ItemDatabase_ItemDefinitions_340 => instance._ItemDatabase_ItemDefinitions_340; + public string _ItemDatabase_ItemDefinitions_340 = "Spiked death on the outside, really comfy on the inside"; + public static string ItemDatabase_ItemDefinitions_341 => instance._ItemDatabase_ItemDefinitions_341; + public string _ItemDatabase_ItemDefinitions_341 = "Thorns deal double damage"; + public static string ItemDatabase_ItemDefinitions_342 => instance._ItemDatabase_ItemDefinitions_342; + public string _ItemDatabase_ItemDefinitions_342 = "Rusty Polearm"; + public static string ItemDatabase_ItemDefinitions_343 => instance._ItemDatabase_ItemDefinitions_343; + public string _ItemDatabase_ItemDefinitions_343 = "Used by the Ubersreik Five"; + public static string ItemDatabase_ItemDefinitions_344 => instance._ItemDatabase_ItemDefinitions_344; + public string _ItemDatabase_ItemDefinitions_344 = "Giant Polearm"; + public static string ItemDatabase_ItemDefinitions_345 => instance._ItemDatabase_ItemDefinitions_345; + public string _ItemDatabase_ItemDefinitions_345 = "Used by the Sir Kruber"; + public static string ItemDatabase_ItemDefinitions_346 => instance._ItemDatabase_ItemDefinitions_346; + public string _ItemDatabase_ItemDefinitions_346 = "Crude Feather"; + public static string ItemDatabase_ItemDefinitions_347 => instance._ItemDatabase_ItemDefinitions_347; + public string _ItemDatabase_ItemDefinitions_347 = "Materials can be put inside empty sockets to add stats to items"; + public static string ItemDatabase_ItemDefinitions_348 => instance._ItemDatabase_ItemDefinitions_348; + public string _ItemDatabase_ItemDefinitions_348 = "Soft Feather"; + public static string ItemDatabase_ItemDefinitions_349 => instance._ItemDatabase_ItemDefinitions_349; + public string _ItemDatabase_ItemDefinitions_349 = "Ornate Feather"; + public static string ItemDatabase_ItemDefinitions_350 => instance._ItemDatabase_ItemDefinitions_350; + public string _ItemDatabase_ItemDefinitions_350 = "Wonderful Feather"; + public static string ItemDatabase_ItemDefinitions_351 => instance._ItemDatabase_ItemDefinitions_351; + public string _ItemDatabase_ItemDefinitions_351 = "White Crow's Feather"; + public static string ItemDatabase_ItemDefinitions_352 => instance._ItemDatabase_ItemDefinitions_352; + public string _ItemDatabase_ItemDefinitions_352 = "Reef Shark"; + public static string ItemDatabase_ItemDefinitions_353 => instance._ItemDatabase_ItemDefinitions_353; + public string _ItemDatabase_ItemDefinitions_353 = "Tiger Shark Tooth"; + public static string ItemDatabase_ItemDefinitions_354 => instance._ItemDatabase_ItemDefinitions_354; + public string _ItemDatabase_ItemDefinitions_354 = "Whale Shark Tooth"; + public static string ItemDatabase_ItemDefinitions_355 => instance._ItemDatabase_ItemDefinitions_355; + public string _ItemDatabase_ItemDefinitions_355 = "Great White Shark Tooth"; + public static string ItemDatabase_ItemDefinitions_356 => instance._ItemDatabase_ItemDefinitions_356; + public string _ItemDatabase_ItemDefinitions_356 = "Megalodon's Tooth"; + public static string ItemDatabase_ItemDefinitions_357 => instance._ItemDatabase_ItemDefinitions_357; + public string _ItemDatabase_ItemDefinitions_357 = "Uncut Sapphire"; + public static string ItemDatabase_ItemDefinitions_358 => instance._ItemDatabase_ItemDefinitions_358; + public string _ItemDatabase_ItemDefinitions_358 = "Clear Sapphire"; + public static string ItemDatabase_ItemDefinitions_359 => instance._ItemDatabase_ItemDefinitions_359; + public string _ItemDatabase_ItemDefinitions_359 = "Shiny Sapphire"; + public static string ItemDatabase_ItemDefinitions_360 => instance._ItemDatabase_ItemDefinitions_360; + public string _ItemDatabase_ItemDefinitions_360 = "Enchanted Sapphire"; + public static string ItemDatabase_ItemDefinitions_361 => instance._ItemDatabase_ItemDefinitions_361; + public string _ItemDatabase_ItemDefinitions_361 = "Celestial Sapphire"; + public static string ItemDatabase_ItemDefinitions_362 => instance._ItemDatabase_ItemDefinitions_362; + public string _ItemDatabase_ItemDefinitions_362 = "Uncut Moonstone"; + public static string ItemDatabase_ItemDefinitions_363 => instance._ItemDatabase_ItemDefinitions_363; + public string _ItemDatabase_ItemDefinitions_363 = "Clear Moonstone"; + public static string ItemDatabase_ItemDefinitions_364 => instance._ItemDatabase_ItemDefinitions_364; + public string _ItemDatabase_ItemDefinitions_364 = "Shiny Moonstone"; + public static string ItemDatabase_ItemDefinitions_365 => instance._ItemDatabase_ItemDefinitions_365; + public string _ItemDatabase_ItemDefinitions_365 = "Enchanted Moonstone"; + public static string ItemDatabase_ItemDefinitions_366 => instance._ItemDatabase_ItemDefinitions_366; + public string _ItemDatabase_ItemDefinitions_366 = "Celestial Moonstone"; + public static string ItemDatabase_ItemDefinitions_367 => instance._ItemDatabase_ItemDefinitions_367; + public string _ItemDatabase_ItemDefinitions_367 = "Lead Ore"; + public static string ItemDatabase_ItemDefinitions_368 => instance._ItemDatabase_ItemDefinitions_368; + public string _ItemDatabase_ItemDefinitions_368 = "Vanadium Ore"; + public static string ItemDatabase_ItemDefinitions_369 => instance._ItemDatabase_ItemDefinitions_369; + public string _ItemDatabase_ItemDefinitions_369 = "Titanium Ore"; + public static string ItemDatabase_ItemDefinitions_370 => instance._ItemDatabase_ItemDefinitions_370; + public string _ItemDatabase_ItemDefinitions_370 = "Chromium Ore"; + public static string ItemDatabase_ItemDefinitions_371 => instance._ItemDatabase_ItemDefinitions_371; + public string _ItemDatabase_ItemDefinitions_371 = "Tungsten Ore"; + public static string ItemDatabase_ItemDefinitions_372 => instance._ItemDatabase_ItemDefinitions_372; + public string _ItemDatabase_ItemDefinitions_372 = "Knife on a stick"; + public static string ItemDatabase_ItemDefinitions_373 => instance._ItemDatabase_ItemDefinitions_373; + public string _ItemDatabase_ItemDefinitions_373 = "Kasper named this item, his fault"; + public static string ItemDatabase_ItemDefinitions_374 => instance._ItemDatabase_ItemDefinitions_374; + public string _ItemDatabase_ItemDefinitions_374 = "Fists of Nails"; + public static string ItemDatabase_ItemDefinitions_375 => instance._ItemDatabase_ItemDefinitions_375; + public string _ItemDatabase_ItemDefinitions_375 = "Swiss sheese makers"; + public static string ItemDatabase_ItemDefinitions_376(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_376, objects); + public string _ItemDatabase_ItemDefinitions_376 = "Gain {0} thorns per vitality"; + public static string ItemDatabase_ItemDefinitions_377 => instance._ItemDatabase_ItemDefinitions_377; + public string _ItemDatabase_ItemDefinitions_377 = "Cargo Shorts MK2"; + public static string ItemDatabase_ItemDefinitions_378 => instance._ItemDatabase_ItemDefinitions_378; + public string _ItemDatabase_ItemDefinitions_378 = "Deepest pockets out there"; + public static string ItemDatabase_ItemDefinitions_379 => instance._ItemDatabase_ItemDefinitions_379; + public string _ItemDatabase_ItemDefinitions_379 = "Improved cargo pants. Twice as many pockets, and since they didnt fit on the outside, they are inside. They are still ugly as hell tho"; + public static string ItemDatabase_ItemDefinitions_380 => instance._ItemDatabase_ItemDefinitions_380; + public string _ItemDatabase_ItemDefinitions_380 = "Aezyn"; + public static string ItemDatabase_ItemDefinitions_381 => instance._ItemDatabase_ItemDefinitions_381; + public string _ItemDatabase_ItemDefinitions_381 = "Enchanted with magic as strong as power swing. It's purpose? Hit harder."; + public static string ItemDatabase_ItemDefinitions_382(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_382, objects); + public string _ItemDatabase_ItemDefinitions_382 = "Magic arrow damage scaling is increased by {0}"; + public static string ItemDatabase_ItemDefinitions_383 => instance._ItemDatabase_ItemDefinitions_383; + public string _ItemDatabase_ItemDefinitions_383 = "Punny's Reflective Ring"; + public static string ItemDatabase_ItemDefinitions_384 => instance._ItemDatabase_ItemDefinitions_384; + public string _ItemDatabase_ItemDefinitions_384 = "Magic arrow is shot in volleys. This effect can stack."; + public static string ItemDatabase_ItemDefinitions_385 => instance._ItemDatabase_ItemDefinitions_385; + public string _ItemDatabase_ItemDefinitions_385 = "Eyepatch"; + public static string ItemDatabase_ItemDefinitions_386 => instance._ItemDatabase_ItemDefinitions_386; + public string _ItemDatabase_ItemDefinitions_386 = "A wise man once said:"; + public static string ItemDatabase_ItemDefinitions_387 => instance._ItemDatabase_ItemDefinitions_387; + public string _ItemDatabase_ItemDefinitions_387 = "Everyone thinks I'm just a one-eyed bloody monster, god damnit... (sobbing)"; + public static string ItemDatabase_ItemDefinitions_388 => instance._ItemDatabase_ItemDefinitions_388; + public string _ItemDatabase_ItemDefinitions_388 = "Explosion damage is also applied when performing jump attacks"; + public static string ItemDatabase_ItemDefinitions_389 => instance._ItemDatabase_ItemDefinitions_389; + public string _ItemDatabase_ItemDefinitions_389 = "Javelin"; + public static string ItemDatabase_ItemDefinitions_390 => instance._ItemDatabase_ItemDefinitions_390; + public string _ItemDatabase_ItemDefinitions_390 = "Warplate"; + public static string ItemDatabase_ItemDefinitions_391 => instance._ItemDatabase_ItemDefinitions_391; + public string _ItemDatabase_ItemDefinitions_391 = "Enchanted with the power of the GOD's armor. It's purpose? Hit harder, daddy."; + public static string ItemDatabase_ItemDefinitions_392 => instance._ItemDatabase_ItemDefinitions_392; + public string _ItemDatabase_ItemDefinitions_392 = "Strength comes from the power of will, the stronger the will the stronger you are"; + public static string ItemDatabase_ItemDefinitions_393 => instance._ItemDatabase_ItemDefinitions_393; + public string _ItemDatabase_ItemDefinitions_393 = "Torso of Strength"; + public static string ItemDatabase_ItemDefinitions_394 => instance._ItemDatabase_ItemDefinitions_394; + public string _ItemDatabase_ItemDefinitions_394 = "Demoman's Vest"; + public static string ItemDatabase_ItemDefinitions_395 => instance._ItemDatabase_ItemDefinitions_395; + public string _ItemDatabase_ItemDefinitions_395 = "What makes me a good demoman? If I were a bad demoman, I wouldn't be sittin' here discussin' it with you, now would I?! LET'S DO IT! Not one of you's gonna survive this! One crossed wire, one wayward pinch of potassium chlorate, one errant twitch, and KA-BLOOIE! I got a manky eye. I'm a black Scottish cyclops. They got more fecking sea monsters in the great Lochett Ness than they got the likes of me. So! T'all you fine dandies, so proud, so cocksure, prancin' about with your heads full of eyeballs... come and get me, I say! I'll be waitin' on you with a whiff of the old brimstone! I'm a Grimm bloody fable with an unhappy bloody end! Oh, they're going to have to glue you back together...IN HELL!"; + public static string ItemDatabase_ItemDefinitions_396 => instance._ItemDatabase_ItemDefinitions_396; + public string _ItemDatabase_ItemDefinitions_396 = "Brawler's Gloves"; + public static string ItemDatabase_ItemDefinitions_397 => instance._ItemDatabase_ItemDefinitions_397; + public string _ItemDatabase_ItemDefinitions_397 = "Nail Gloves"; + public static string ItemDatabase_ItemDefinitions_398 => instance._ItemDatabase_ItemDefinitions_398; + public string _ItemDatabase_ItemDefinitions_398 = "Enchanted with the power of penetration. It's purpose? Hit harder."; + public static string ItemDatabase_ItemDefinitions_399 => instance._ItemDatabase_ItemDefinitions_399; + public string _ItemDatabase_ItemDefinitions_399 = "Hand-held Ballista"; + public static string ItemDatabase_ItemDefinitions_400 => instance._ItemDatabase_ItemDefinitions_400; + public string _ItemDatabase_ItemDefinitions_400 = "Kuldars's Scarf"; + public static string ItemDatabase_ItemDefinitions_401 => instance._ItemDatabase_ItemDefinitions_401; + public string _ItemDatabase_ItemDefinitions_401 = "Strength comes from the power of will"; + public static string ItemDatabase_ItemDefinitions_402 => instance._ItemDatabase_ItemDefinitions_402; + public string _ItemDatabase_ItemDefinitions_402 = "Sword Devil's Scarf"; + public static string ItemDatabase_ItemDefinitions_403 => instance._ItemDatabase_ItemDefinitions_403; + public string _ItemDatabase_ItemDefinitions_403 = "Peasant's Scarf"; + public static string ItemDatabase_ItemDefinitions_404 => instance._ItemDatabase_ItemDefinitions_404; + public string _ItemDatabase_ItemDefinitions_404 = "Bombastinc Choker"; + public static string ItemDatabase_ItemDefinitions_405 => instance._ItemDatabase_ItemDefinitions_405; + public string _ItemDatabase_ItemDefinitions_405 = "Explosive Touch"; + public static string ItemDatabase_ItemDefinitions_406 => instance._ItemDatabase_ItemDefinitions_406; + public string _ItemDatabase_ItemDefinitions_406 = "Enchanted with the power of the explosions armor. It's purpose? Become the true explosion master"; + public static string ItemDatabase_ItemDefinitions_407 => instance._ItemDatabase_ItemDefinitions_407; + public string _ItemDatabase_ItemDefinitions_407 = "Strength comes from the power of will, the stronger the will the stronger the explosion"; + public static string ItemDatabase_ItemDefinitions_408 => instance._ItemDatabase_ItemDefinitions_408; + public string _ItemDatabase_ItemDefinitions_408 = "Volatile Bracers"; + public static string ItemDatabase_ItemDefinitions_409 => instance._ItemDatabase_ItemDefinitions_409; + public string _ItemDatabase_ItemDefinitions_409 = "Volatile Helmet"; + public static string ItemDatabase_ItemDefinitions_410 => instance._ItemDatabase_ItemDefinitions_410; + public string _ItemDatabase_ItemDefinitions_410 = "Gunpowder filled socks"; + public static string ItemDatabase_ItemDefinitions_411 => instance._ItemDatabase_ItemDefinitions_411; + public string _ItemDatabase_ItemDefinitions_411 = "Red Skirt"; + public static string ItemDatabase_ItemDefinitions_412 => instance._ItemDatabase_ItemDefinitions_412; + public string _ItemDatabase_ItemDefinitions_412 = "Gunpowder Boxers"; + public static string ItemDatabase_ItemDefinitions_413 => instance._ItemDatabase_ItemDefinitions_413; + public string _ItemDatabase_ItemDefinitions_413 = "Jihad Vest"; + public static string ItemDatabase_ItemDefinitions_414 => instance._ItemDatabase_ItemDefinitions_414; + public string _ItemDatabase_ItemDefinitions_414 = "Ring of Fortune"; + public static string ItemDatabase_ItemDefinitions_415 => instance._ItemDatabase_ItemDefinitions_415; + public string _ItemDatabase_ItemDefinitions_415 = "Mana Ring"; + public static string ItemDatabase_ItemDefinitions_416 => instance._ItemDatabase_ItemDefinitions_416; + public string _ItemDatabase_ItemDefinitions_416 = "Life Ring"; + public static string ItemDatabase_ItemDefinitions_417 => instance._ItemDatabase_ItemDefinitions_417; + public string _ItemDatabase_ItemDefinitions_417 = "Moritz's Gear"; + public static string ItemDatabase_ItemDefinitions_418 => instance._ItemDatabase_ItemDefinitions_418; + public string _ItemDatabase_ItemDefinitions_418 = "Band of Hurting"; + public static string ItemDatabase_ItemDefinitions_419 => instance._ItemDatabase_ItemDefinitions_419; + public string _ItemDatabase_ItemDefinitions_419 = "A ring for a warrior"; + public static string ItemDatabase_ItemDefinitions_420 => instance._ItemDatabase_ItemDefinitions_420; + public string _ItemDatabase_ItemDefinitions_420 = "Straw Hat"; + public static string ItemDatabase_ItemDefinitions_421 => instance._ItemDatabase_ItemDefinitions_421; + public string _ItemDatabase_ItemDefinitions_421 = "Rusty Javelin"; + public static string ItemDatabase_ItemDefinitions_422 => instance._ItemDatabase_ItemDefinitions_422; + public string _ItemDatabase_ItemDefinitions_422 = "Star Robe"; + public static string ItemDatabase_ItemDefinitions_423 => instance._ItemDatabase_ItemDefinitions_423; + public string _ItemDatabase_ItemDefinitions_423 = "Anger"; + public static string ItemDatabase_ItemDefinitions_424 => instance._ItemDatabase_ItemDefinitions_424; + public string _ItemDatabase_ItemDefinitions_424 = "Downscaled version of Greatsword Rage, made to be wielded by flimsy wizards"; + public static string ItemDatabase_ItemDefinitions_425(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_425, objects); + public string _ItemDatabase_ItemDefinitions_425 = "Increases maximum stacks of frenzy by {0}"; + public static string ItemDatabase_ItemDefinitions_426 => instance._ItemDatabase_ItemDefinitions_426; + public string _ItemDatabase_ItemDefinitions_426 = "Yuki-Onna Strides"; + public static string ItemDatabase_ItemDefinitions_427(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_427, objects); + public string _ItemDatabase_ItemDefinitions_427 = "Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by {0}"; + public static string ItemDatabase_ItemDefinitions_428 => instance._ItemDatabase_ItemDefinitions_428; + public string _ItemDatabase_ItemDefinitions_428 = "Boots looted off a snow demon"; + public static string ItemDatabase_ItemDefinitions_429(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_429, objects); + public string _ItemDatabase_ItemDefinitions_429 = "Increses snowstorm damage by {0}"; + public static string ItemDatabase_ItemDefinitions_430 => instance._ItemDatabase_ItemDefinitions_430; + public string _ItemDatabase_ItemDefinitions_430 = "Yuki-Onna Greaves"; + public static string ItemDatabase_ItemDefinitions_431 => instance._ItemDatabase_ItemDefinitions_431; + public string _ItemDatabase_ItemDefinitions_431 = "Yuki-Onna Kimono"; + public static string ItemDatabase_ItemDefinitions_432 => instance._ItemDatabase_ItemDefinitions_432; + public string _ItemDatabase_ItemDefinitions_432 = "Yuki-Onna's Headdress"; + public static string ItemDatabase_ItemDefinitions_433(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_433, objects); + public string _ItemDatabase_ItemDefinitions_433 = "Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by {0} and damage is increased by {1}"; + public static string ItemDatabase_ItemDefinitions_434 => instance._ItemDatabase_ItemDefinitions_434; + public string _ItemDatabase_ItemDefinitions_434 = "Lama Mega's Blood Bag"; + public static string ItemDatabase_ItemDefinitions_435(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_435, objects); + public string _ItemDatabase_ItemDefinitions_435 = "Melee hits cause enemies to bleed for {0} of your health as damage for {1} seconds"; + public static string ItemDatabase_ItemDefinitions_436 => instance._ItemDatabase_ItemDefinitions_436; + public string _ItemDatabase_ItemDefinitions_436 = "Socket Drill"; + public static string ItemDatabase_ItemDefinitions_437 => instance._ItemDatabase_ItemDefinitions_437; + public string _ItemDatabase_ItemDefinitions_437 = "A convienient one use tool"; + public static string ItemDatabase_ItemDefinitions_438 => instance._ItemDatabase_ItemDefinitions_438; + public string _ItemDatabase_ItemDefinitions_438 = "What's a drill doing here in a place full of primitive tribes?"; + public static string ItemDatabase_ItemDefinitions_439 => instance._ItemDatabase_ItemDefinitions_439; + public string _ItemDatabase_ItemDefinitions_439 = "Adds one socket to an item, unless the item can't have any more sockets."; + public static string ItemDatabase_ItemDefinitions_440 => instance._ItemDatabase_ItemDefinitions_440; + public string _ItemDatabase_ItemDefinitions_440 = "Moonwalkers"; + public static string ItemDatabase_ItemDefinitions_441 => instance._ItemDatabase_ItemDefinitions_441; + public string _ItemDatabase_ItemDefinitions_441 = "Cha cha real smooth."; + public static string ItemDatabase_ItemDefinitions_442 => instance._ItemDatabase_ItemDefinitions_442; + public string _ItemDatabase_ItemDefinitions_442 = "Inverts movement"; + public static string ItemDatabase_ItemDefinitions_443 => instance._ItemDatabase_ItemDefinitions_443; + public string _ItemDatabase_ItemDefinitions_443 = "Rabbit Ears Hairband"; + public static string ItemDatabase_ItemDefinitions_444 => instance._ItemDatabase_ItemDefinitions_444; + public string _ItemDatabase_ItemDefinitions_444 = "Cute"; + public static string ItemDatabase_ItemDefinitions_445 => instance._ItemDatabase_ItemDefinitions_445; + public string _ItemDatabase_ItemDefinitions_445 = "Bunny Ears Hairband"; + public static string ItemDatabase_ItemDefinitions_446 => instance._ItemDatabase_ItemDefinitions_446; + public string _ItemDatabase_ItemDefinitions_446 = "Iron plate full of holes"; + public static string ItemDatabase_ItemDefinitions_447 => instance._ItemDatabase_ItemDefinitions_447; + public string _ItemDatabase_ItemDefinitions_447 = "The integrity of this item is questionable"; + public static string ItemDatabase_ItemDefinitions_448 => instance._ItemDatabase_ItemDefinitions_448; + public string _ItemDatabase_ItemDefinitions_448 = "Small Tribal Necklace"; + public static string ItemDatabase_ItemDefinitions_449(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_449, objects); + public string _ItemDatabase_ItemDefinitions_449 = "Increases maximum stacks of frenzy by {0}"; + public static string ItemDatabase_ItemDefinitions_450 => instance._ItemDatabase_ItemDefinitions_450; + public string _ItemDatabase_ItemDefinitions_450 = "Tribal Necklace"; + public static string ItemDatabase_ItemDefinitions_451(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_451, objects); + public string _ItemDatabase_ItemDefinitions_451 = "Increases maximum stacks of frenzy by {0}"; + public static string ItemDatabase_ItemDefinitions_452 => instance._ItemDatabase_ItemDefinitions_452; + public string _ItemDatabase_ItemDefinitions_452 = "Warlord Necklace"; + public static string ItemDatabase_ItemDefinitions_453(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_453, objects); + public string _ItemDatabase_ItemDefinitions_453 = "Increases maximum stacks of frenzy by {0}"; + public static string ItemDatabase_ItemDefinitions_454 => instance._ItemDatabase_ItemDefinitions_454; + public string _ItemDatabase_ItemDefinitions_454 = "Travel Band"; + public static string ItemDatabase_ItemDefinitions_455(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_455, objects); + public string _ItemDatabase_ItemDefinitions_455 = "The distance of blink is increased by {0} feet"; + public static string ItemDatabase_ItemDefinitions_456 => instance._ItemDatabase_ItemDefinitions_456; + public string _ItemDatabase_ItemDefinitions_456 = "Destroyed Void Shard"; + public static string ItemDatabase_ItemDefinitions_457 => instance._ItemDatabase_ItemDefinitions_457; + public string _ItemDatabase_ItemDefinitions_457 = "Only a fraction of its previous might remains"; + public static string ItemDatabase_ItemDefinitions_458(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_458, objects); + public string _ItemDatabase_ItemDefinitions_458 = "Decrease the cooldown of one ability by {0} second whenever you hit something with melee or ranged attack."; + public static string ItemDatabase_ItemDefinitions_459 => instance._ItemDatabase_ItemDefinitions_459; + public string _ItemDatabase_ItemDefinitions_459 = "Famine Hammer"; + public static string ItemDatabase_ItemDefinitions_460(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_460, objects); + public string _ItemDatabase_ItemDefinitions_460 = "Chance to weaken enemies, causing them to take more damage from all attacks, is increased by {0}"; + public static string ItemDatabase_ItemDefinitions_461 => instance._ItemDatabase_ItemDefinitions_461; + public string _ItemDatabase_ItemDefinitions_461 = "Curse Hammer"; + public static string ItemDatabase_ItemDefinitions_462 => instance._ItemDatabase_ItemDefinitions_462; + public string _ItemDatabase_ItemDefinitions_462 = "Omnious Weapon"; + public static string ItemDatabase_ItemDefinitions_463(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_463, objects); + public string _ItemDatabase_ItemDefinitions_463 = "Chance to weaken enemies, causing them to take more damage from all attacks, is increased by {0}"; + public static string ItemDatabase_ItemDefinitions_464 => instance._ItemDatabase_ItemDefinitions_464; + public string _ItemDatabase_ItemDefinitions_464 = "Smasher"; + public static string ItemDatabase_ItemDefinitions_465 => instance._ItemDatabase_ItemDefinitions_465; + public string _ItemDatabase_ItemDefinitions_465 = "Smash damage is increased tripled"; + public static string ItemDatabase_ItemDefinitions_466 => instance._ItemDatabase_ItemDefinitions_466; + public string _ItemDatabase_ItemDefinitions_466 = "Vampiric Band"; + public static string ItemDatabase_ItemDefinitions_467(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_467, objects); + public string _ItemDatabase_ItemDefinitions_467 = "Gain {0} stamina on ranged and melee hit or double that amount on critical hits"; + public static string ItemDatabase_ItemDefinitions_468 => instance._ItemDatabase_ItemDefinitions_468; + public string _ItemDatabase_ItemDefinitions_468 = "Vampire Ring"; + public static string ItemDatabase_ItemDefinitions_469(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_469, objects); + public string _ItemDatabase_ItemDefinitions_469 = "Gain {0} stamina on ranged and melee hit or double that amount on critical hits"; + public static string ItemDatabase_ItemDefinitions_470 => instance._ItemDatabase_ItemDefinitions_470; + public string _ItemDatabase_ItemDefinitions_470 = "Tricksters Scarf"; + public static string ItemDatabase_ItemDefinitions_471(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_471, objects); + public string _ItemDatabase_ItemDefinitions_471 = "Magic arrow shoots {0} additional arrow."; + public static string ItemDatabase_ItemDefinitions_472 => instance._ItemDatabase_ItemDefinitions_472; + public string _ItemDatabase_ItemDefinitions_472 = "Magus' Necktie"; + public static string ItemDatabase_ItemDefinitions_473(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_473, objects); + public string _ItemDatabase_ItemDefinitions_473 = "Magic arrow shoots {0} additional arrows."; + public static string ItemDatabase_ItemDefinitions_474 => instance._ItemDatabase_ItemDefinitions_474; + public string _ItemDatabase_ItemDefinitions_474 = "Discounted Knockoff Magic Quiver"; + public static string ItemDatabase_ItemDefinitions_475(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_475, objects); + public string _ItemDatabase_ItemDefinitions_475 = "There's a {0} increased chance to not consume ammo when firing a projectile."; + public static string ItemDatabase_ItemDefinitions_476 => instance._ItemDatabase_ItemDefinitions_476; + public string _ItemDatabase_ItemDefinitions_476 = "Magic Quiver"; + public static string ItemDatabase_ItemDefinitions_477(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_477, objects); + public string _ItemDatabase_ItemDefinitions_477 = "There's a {0} increased chance to not consume ammo when firing a projectile."; + public static string ItemDatabase_ItemDefinitions_478 => instance._ItemDatabase_ItemDefinitions_478; + public string _ItemDatabase_ItemDefinitions_478 = "Improved Magic Quiver"; + public static string ItemDatabase_ItemDefinitions_479(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_479, objects); + public string _ItemDatabase_ItemDefinitions_479 = "There's a {0} increased chance to not consume ammo when firing a projectile."; + public static string ItemDatabase_ItemDefinitions_480 => instance._ItemDatabase_ItemDefinitions_480; + public string _ItemDatabase_ItemDefinitions_480 = "Factory Quiver"; + public static string ItemDatabase_ItemDefinitions_481(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_481, objects); + public string _ItemDatabase_ItemDefinitions_481 = "There's a {0} increased chance to not consume ammo when firing a projectile."; + public static string ItemDatabase_ItemDefinitions_482 => instance._ItemDatabase_ItemDefinitions_482; + public string _ItemDatabase_ItemDefinitions_482 = "Enzyme STR/34"; + public static string ItemDatabase_ItemDefinitions_483 => instance._ItemDatabase_ItemDefinitions_483; + public string _ItemDatabase_ItemDefinitions_483 = "A substance which results in surprising changes to gear"; + public static string ItemDatabase_ItemDefinitions_484 => instance._ItemDatabase_ItemDefinitions_484; + public string _ItemDatabase_ItemDefinitions_484 = "Changes Vitality, Agility or Intelligence stat on an item to Strength or changes Ranged or Spell damage stat to Melee Damage"; + public static string ItemDatabase_ItemDefinitions_485 => instance._ItemDatabase_ItemDefinitions_485; + public string _ItemDatabase_ItemDefinitions_485 = "Enzyme INT/33"; + public static string ItemDatabase_ItemDefinitions_486 => instance._ItemDatabase_ItemDefinitions_486; + public string _ItemDatabase_ItemDefinitions_486 = "Changes Vitality, Agility or Strength stat on an item to Intelligence or changes Ranged or Melee damage stat to Spell Damage"; + public static string ItemDatabase_ItemDefinitions_487 => instance._ItemDatabase_ItemDefinitions_487; + public string _ItemDatabase_ItemDefinitions_487 = "Enzyme AGI/39"; + public static string ItemDatabase_ItemDefinitions_488 => instance._ItemDatabase_ItemDefinitions_488; + public string _ItemDatabase_ItemDefinitions_488 = "Changes Vitality, Intelligence or Strength stat on an item to Agility or changes Melee or Spell damage stat to Ranged Damage"; + public static string ItemDatabase_ItemDefinitions_489 => instance._ItemDatabase_ItemDefinitions_489; + public string _ItemDatabase_ItemDefinitions_489 = "Enzyme VIT/449"; + public static string ItemDatabase_ItemDefinitions_490 => instance._ItemDatabase_ItemDefinitions_490; + public string _ItemDatabase_ItemDefinitions_490 = "Changes Agility, Intelligence or Strength stat on an item to Vitality"; + public static string ItemDatabase_ItemDefinitions_491 => instance._ItemDatabase_ItemDefinitions_491; + public string _ItemDatabase_ItemDefinitions_491 = "Stomach Acid"; + public static string ItemDatabase_ItemDefinitions_492 => instance._ItemDatabase_ItemDefinitions_492; + public string _ItemDatabase_ItemDefinitions_492 = "Removes all stats with negative values from an item"; + public static string ItemDatabase_ItemDefinitions_493 => instance._ItemDatabase_ItemDefinitions_493; + public string _ItemDatabase_ItemDefinitions_493 = "Elite Stomach Acid"; + public static string ItemDatabase_ItemDefinitions_494 => instance._ItemDatabase_ItemDefinitions_494; + public string _ItemDatabase_ItemDefinitions_494 = "Changes negative stat values into positive values on an item"; + public static string ItemDatabase_ItemDefinitions_495 => instance._ItemDatabase_ItemDefinitions_495; + public string _ItemDatabase_ItemDefinitions_495 = "Crimson Solution"; + public static string ItemDatabase_ItemDefinitions_496 => instance._ItemDatabase_ItemDefinitions_496; + public string _ItemDatabase_ItemDefinitions_496 = "Upgrades item of any rarity to one of the same type but of Legendary rarity"; + public static string ItemDatabase_ItemDefinitions_497 => instance._ItemDatabase_ItemDefinitions_497; + public string _ItemDatabase_ItemDefinitions_497 = "Weak Armor Hardening Mixture"; + public static string ItemDatabase_ItemDefinitions_498 => instance._ItemDatabase_ItemDefinitions_498; + public string _ItemDatabase_ItemDefinitions_498 = "Adds Armor Stat to a piece of equipment if the item does not already have it"; + public static string ItemDatabase_ItemDefinitions_499 => instance._ItemDatabase_ItemDefinitions_499; + public string _ItemDatabase_ItemDefinitions_499 = "Upgraded Armor Hardening Mixture"; + public static string ItemDatabase_ItemDefinitions_500 => instance._ItemDatabase_ItemDefinitions_500; + public string _ItemDatabase_ItemDefinitions_500 = "Adds Damage Reduction Stat to a piece of equipment if the item does not already have it"; + public static string ItemDatabase_ItemDefinitions_501 => instance._ItemDatabase_ItemDefinitions_501; + public string _ItemDatabase_ItemDefinitions_501 = "Chaos Water"; + public static string ItemDatabase_ItemDefinitions_502 => instance._ItemDatabase_ItemDefinitions_502; + public string _ItemDatabase_ItemDefinitions_502 = "Rerolls all stats on an item of rarity no higher than orange"; + public static string ItemDatabase_ItemDefinitions_503 => instance._ItemDatabase_ItemDefinitions_503; + public string _ItemDatabase_ItemDefinitions_503 = "Upgraded Chaos Water"; + public static string ItemDatabase_ItemDefinitions_504 => instance._ItemDatabase_ItemDefinitions_504; + public string _ItemDatabase_ItemDefinitions_504 = "Rerolls all stats on an item of any rarity"; + public static string ItemDatabase_ItemDefinitions_505 => instance._ItemDatabase_ItemDefinitions_505; + public string _ItemDatabase_ItemDefinitions_505 = "Gun Blade"; + public static string ItemDatabase_ItemDefinitions_506(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_506, objects); + public string _ItemDatabase_ItemDefinitions_506 = "Increases pistol damage by {0}"; + public static string ItemDatabase_ItemDefinitions_507 => instance._ItemDatabase_ItemDefinitions_507; + public string _ItemDatabase_ItemDefinitions_507 = "Sharpshooter's Axe"; + public static string ItemDatabase_ItemDefinitions_508(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_508, objects); + public string _ItemDatabase_ItemDefinitions_508 = "Increases pistol headshot chance by {0} and pistol damage by {1}"; + public static string ItemDatabase_ItemDefinitions_509 => instance._ItemDatabase_ItemDefinitions_509; + public string _ItemDatabase_ItemDefinitions_509 = "Shield Blade"; + public static string ItemDatabase_ItemDefinitions_510 => instance._ItemDatabase_ItemDefinitions_510; + public string _ItemDatabase_ItemDefinitions_510 = "So large can be used as a shield"; + public static string ItemDatabase_ItemDefinitions_511 => instance._ItemDatabase_ItemDefinitions_511; + public string _ItemDatabase_ItemDefinitions_511 = "A normal human cannot lift this weapon."; + public static string ItemDatabase_ItemDefinitions_512 => instance._ItemDatabase_ItemDefinitions_512; + public string _ItemDatabase_ItemDefinitions_512 = "Blunt Blade for Bashing Skulls"; + public static string ItemDatabase_ItemDefinitions_513(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_513, objects); + public string _ItemDatabase_ItemDefinitions_513 = "Bash damage debuff on enemies is increased by {0}"; + public static string ItemDatabase_ItemDefinitions_514 => instance._ItemDatabase_ItemDefinitions_514; + public string _ItemDatabase_ItemDefinitions_514 = "Madman's Legacy"; + public static string ItemDatabase_ItemDefinitions_515(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_515, objects); + public string _ItemDatabase_ItemDefinitions_515 = "Frenzy damage per stack is increased by {0}"; + public static string ItemDatabase_ItemDefinitions_516 => instance._ItemDatabase_ItemDefinitions_516; + public string _ItemDatabase_ItemDefinitions_516 = "Buckler"; + public static string ItemDatabase_ItemDefinitions_517 => instance._ItemDatabase_ItemDefinitions_517; + public string _ItemDatabase_ItemDefinitions_517 = "Pyromancy Mask"; + public static string ItemDatabase_ItemDefinitions_518(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_518, objects); + public string _ItemDatabase_ItemDefinitions_518 = "Ignited enemies burn for {0} longer."; + public static string ItemDatabase_ItemDefinitions_519 => instance._ItemDatabase_ItemDefinitions_519; + public string _ItemDatabase_ItemDefinitions_519 = "Ember Mask"; + public static string ItemDatabase_ItemDefinitions_520(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_520, objects); + public string _ItemDatabase_ItemDefinitions_520 = "Ignited enemies burn for {0} longer and fire ticks thrice as fast."; + public static string ItemDatabase_ItemDefinitions_521 => instance._ItemDatabase_ItemDefinitions_521; + public string _ItemDatabase_ItemDefinitions_521 = "Flame Pauldrons"; + public static string ItemDatabase_ItemDefinitions_522(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_522, objects); + public string _ItemDatabase_ItemDefinitions_522 = "Firebolt costs {0} additional energy to cast and its damage scaling is increased by {1}"; + public static string ItemDatabase_ItemDefinitions_523 => instance._ItemDatabase_ItemDefinitions_523; + public string _ItemDatabase_ItemDefinitions_523 = "Ancient Scroll"; + public static string ItemDatabase_ItemDefinitions_524 => instance._ItemDatabase_ItemDefinitions_524; + public string _ItemDatabase_ItemDefinitions_524 = "Guide on Tearing Spacetime"; + public static string ItemDatabase_ItemDefinitions_525 => instance._ItemDatabase_ItemDefinitions_525; + public string _ItemDatabase_ItemDefinitions_525 = "Blink creates an explosion at the exit point, and the damage of the explosion is increased by velocity and the radius is increased by the distance of blink"; + public static string ItemDatabase_ItemDefinitions_526 => instance._ItemDatabase_ItemDefinitions_526; + public string _ItemDatabase_ItemDefinitions_526 = "300th Spear"; + public static string ItemDatabase_ItemDefinitions_527 => instance._ItemDatabase_ItemDefinitions_527; + public string _ItemDatabase_ItemDefinitions_527 = "Stone Pauldrons"; + public static string ItemDatabase_ItemDefinitions_528(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_528, objects); + public string _ItemDatabase_ItemDefinitions_528 = "All damage increased by {0}"; + public static string ItemDatabase_ItemDefinitions_529 => instance._ItemDatabase_ItemDefinitions_529; + public string _ItemDatabase_ItemDefinitions_529 = "Iron Shoulder Pads"; + public static string ItemDatabase_ItemDefinitions_530(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_530, objects); + public string _ItemDatabase_ItemDefinitions_530 = "All damage increased by {0}"; + public static string ItemDatabase_ItemDefinitions_531 => instance._ItemDatabase_ItemDefinitions_531; + public string _ItemDatabase_ItemDefinitions_531 = "Steel Shoulder Pads"; + public static string ItemDatabase_ItemDefinitions_532(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_532, objects); + public string _ItemDatabase_ItemDefinitions_532 = "All damage increased by {0}"; + public static string ItemDatabase_ItemDefinitions_533 => instance._ItemDatabase_ItemDefinitions_533; + public string _ItemDatabase_ItemDefinitions_533 = "Battle scarred Shoulder Pads"; + public static string ItemDatabase_ItemDefinitions_534(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_534, objects); + public string _ItemDatabase_ItemDefinitions_534 = "All damage increased by {0}"; + public static string ItemDatabase_ItemDefinitions_535 => instance._ItemDatabase_ItemDefinitions_535; + public string _ItemDatabase_ItemDefinitions_535 = "Mystery Shoulder Pads"; + public static string ItemDatabase_ItemDefinitions_536(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_536, objects); + public string _ItemDatabase_ItemDefinitions_536 = "All damage increased by {0}"; + public static string ItemDatabase_ItemDefinitions_537 => instance._ItemDatabase_ItemDefinitions_537; + public string _ItemDatabase_ItemDefinitions_537 = "Stone Shield"; + public static string ItemDatabase_ItemDefinitions_538 => instance._ItemDatabase_ItemDefinitions_538; + public string _ItemDatabase_ItemDefinitions_538 = "Iron Shield"; + public static string ItemDatabase_ItemDefinitions_539 => instance._ItemDatabase_ItemDefinitions_539; + public string _ItemDatabase_ItemDefinitions_539 = "Steel Tower Shield"; + public static string ItemDatabase_ItemDefinitions_540 => instance._ItemDatabase_ItemDefinitions_540; + public string _ItemDatabase_ItemDefinitions_540 = "Guardian"; + public static string ItemDatabase_ItemDefinitions_541 => instance._ItemDatabase_ItemDefinitions_541; + public string _ItemDatabase_ItemDefinitions_541 = "Mystery Shield"; + public static string ItemDatabase_ItemDefinitions_542 => instance._ItemDatabase_ItemDefinitions_542; + public string _ItemDatabase_ItemDefinitions_542 = "Light Boot"; + public static string ItemDatabase_ItemDefinitions_543 => instance._ItemDatabase_ItemDefinitions_543; + public string _ItemDatabase_ItemDefinitions_543 = "Iron Boots"; + public static string ItemDatabase_ItemDefinitions_544 => instance._ItemDatabase_ItemDefinitions_544; + public string _ItemDatabase_ItemDefinitions_544 = "Steel Boots"; + public static string ItemDatabase_ItemDefinitions_545 => instance._ItemDatabase_ItemDefinitions_545; + public string _ItemDatabase_ItemDefinitions_545 = "Threads"; + public static string ItemDatabase_ItemDefinitions_546 => instance._ItemDatabase_ItemDefinitions_546; + public string _ItemDatabase_ItemDefinitions_546 = "Mystery Boots"; + public static string ItemDatabase_ItemDefinitions_547 => instance._ItemDatabase_ItemDefinitions_547; + public string _ItemDatabase_ItemDefinitions_547 = "Wraps"; + public static string ItemDatabase_ItemDefinitions_548 => instance._ItemDatabase_ItemDefinitions_548; + public string _ItemDatabase_ItemDefinitions_548 = "Steel Gauntlet"; + public static string ItemDatabase_ItemDefinitions_549 => instance._ItemDatabase_ItemDefinitions_549; + public string _ItemDatabase_ItemDefinitions_549 = "Titanium Gauntlet"; + public static string ItemDatabase_ItemDefinitions_550 => instance._ItemDatabase_ItemDefinitions_550; + public string _ItemDatabase_ItemDefinitions_550 = "Mystery Gauntlet"; + public static string ItemDatabase_ItemDefinitions_551 => instance._ItemDatabase_ItemDefinitions_551; + public string _ItemDatabase_ItemDefinitions_551 = "Leather Tasset"; + public static string ItemDatabase_ItemDefinitions_552 => instance._ItemDatabase_ItemDefinitions_552; + public string _ItemDatabase_ItemDefinitions_552 = "Iron Tasset"; + public static string ItemDatabase_ItemDefinitions_553 => instance._ItemDatabase_ItemDefinitions_553; + public string _ItemDatabase_ItemDefinitions_553 = "Steel Tasset"; + public static string ItemDatabase_ItemDefinitions_554 => instance._ItemDatabase_ItemDefinitions_554; + public string _ItemDatabase_ItemDefinitions_554 = "Black Steel Leggins"; + public static string ItemDatabase_ItemDefinitions_555 => instance._ItemDatabase_ItemDefinitions_555; + public string _ItemDatabase_ItemDefinitions_555 = "Mystery Leggins"; + public static string ItemDatabase_ItemDefinitions_556 => instance._ItemDatabase_ItemDefinitions_556; + public string _ItemDatabase_ItemDefinitions_556 = "Leather Vest"; + public static string ItemDatabase_ItemDefinitions_557 => instance._ItemDatabase_ItemDefinitions_557; + public string _ItemDatabase_ItemDefinitions_557 = "Iron Breastplate"; + public static string ItemDatabase_ItemDefinitions_558 => instance._ItemDatabase_ItemDefinitions_558; + public string _ItemDatabase_ItemDefinitions_558 = "Steel Breastplate"; + public static string ItemDatabase_ItemDefinitions_559 => instance._ItemDatabase_ItemDefinitions_559; + public string _ItemDatabase_ItemDefinitions_559 = "Silver Armor"; + public static string ItemDatabase_ItemDefinitions_560 => instance._ItemDatabase_ItemDefinitions_560; + public string _ItemDatabase_ItemDefinitions_560 = "Mystery Breastplate"; + public static string ItemDatabase_ItemDefinitions_561 => instance._ItemDatabase_ItemDefinitions_561; + public string _ItemDatabase_ItemDefinitions_561 = "Cloth Band"; + public static string ItemDatabase_ItemDefinitions_562 => instance._ItemDatabase_ItemDefinitions_562; + public string _ItemDatabase_ItemDefinitions_562 = "Iron Wristguard"; + public static string ItemDatabase_ItemDefinitions_563 => instance._ItemDatabase_ItemDefinitions_563; + public string _ItemDatabase_ItemDefinitions_563 = "Steel Wristguard"; + public static string ItemDatabase_ItemDefinitions_564 => instance._ItemDatabase_ItemDefinitions_564; + public string _ItemDatabase_ItemDefinitions_564 = "Baron Wristguards"; + public static string ItemDatabase_ItemDefinitions_565 => instance._ItemDatabase_ItemDefinitions_565; + public string _ItemDatabase_ItemDefinitions_565 = "Mystery Wristguards"; + public static string ItemDatabase_ItemDefinitions_566 => instance._ItemDatabase_ItemDefinitions_566; + public string _ItemDatabase_ItemDefinitions_566 = "Iron Helmet"; + public static string ItemDatabase_ItemDefinitions_567 => instance._ItemDatabase_ItemDefinitions_567; + public string _ItemDatabase_ItemDefinitions_567 = "Steel Helmet"; + public static string ItemDatabase_ItemDefinitions_568 => instance._ItemDatabase_ItemDefinitions_568; + public string _ItemDatabase_ItemDefinitions_568 = "Armored Hood"; + public static string ItemDatabase_ItemDefinitions_569 => instance._ItemDatabase_ItemDefinitions_569; + public string _ItemDatabase_ItemDefinitions_569 = "Mystery Helmet"; + public static string ItemDatabase_ItemDefinitions_570 => instance._ItemDatabase_ItemDefinitions_570; + public string _ItemDatabase_ItemDefinitions_570 = "Yorium's Gaze"; + public static string ItemDatabase_ItemDefinitions_571(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_571, objects); + public string _ItemDatabase_ItemDefinitions_571 = "SET PIECE. Melee weapon range is increased by {0}, attack cost in stamina is halved."; + public static string ItemDatabase_ItemDefinitions_572(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_572, objects); + public string _ItemDatabase_ItemDefinitions_572 = "Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by {0} seconds\n4 Pieces - Each second of berserk being in effect increases damage by {1}.\n5 Pieces - For the first {2} seconds of Berserk attack speed increases by {3} per second, and lasts till the end of the spell's duration."; + public static string ItemDatabase_ItemDefinitions_573 => instance._ItemDatabase_ItemDefinitions_573; + public string _ItemDatabase_ItemDefinitions_573 = "Yorium's Ruthlessness"; + public static string ItemDatabase_ItemDefinitions_574 => instance._ItemDatabase_ItemDefinitions_574; + public string _ItemDatabase_ItemDefinitions_574 = "Yorium's Burden"; + public static string ItemDatabase_ItemDefinitions_575 => instance._ItemDatabase_ItemDefinitions_575; + public string _ItemDatabase_ItemDefinitions_575 = "Yorium's Resolve"; + public static string ItemDatabase_ItemDefinitions_576 => instance._ItemDatabase_ItemDefinitions_576; + public string _ItemDatabase_ItemDefinitions_576 = "Atomic Augmentation"; + public static string ItemDatabase_ItemDefinitions_577 => instance._ItemDatabase_ItemDefinitions_577; + public string _ItemDatabase_ItemDefinitions_577 = "Yorium's Assault"; + public static string ItemDatabase_ItemDefinitions_578 => instance._ItemDatabase_ItemDefinitions_578; + public string _ItemDatabase_ItemDefinitions_578 = "Undying Promise"; + public static string ItemDatabase_ItemDefinitions_579(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_579, objects); + public string _ItemDatabase_ItemDefinitions_579 = "Resist lethal damage on a {0} minute cooldown"; + public static string ItemDatabase_ItemDefinitions_581(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_581, objects); + public string _ItemDatabase_ItemDefinitions_581 = "Snap freeze damage scaling is increased by {0} and the slow duration is increased by {1} seconds"; + public static string ItemDatabase_ItemDefinitions_582 => instance._ItemDatabase_ItemDefinitions_582; + public string _ItemDatabase_ItemDefinitions_582 = "If equipped on a weapon, increases ranged damage by "; + public static string ItemDatabase_ItemDefinitions_583 => instance._ItemDatabase_ItemDefinitions_583; + public string _ItemDatabase_ItemDefinitions_583 = "If equipped on boots, increases movement speed by "; + public static string ItemDatabase_ItemDefinitions_584 => instance._ItemDatabase_ItemDefinitions_584; + public string _ItemDatabase_ItemDefinitions_584 = "If equipped on a helmet, increases critical hit chance by "; + public static string ItemDatabase_ItemDefinitions_585 => instance._ItemDatabase_ItemDefinitions_585; + public string _ItemDatabase_ItemDefinitions_585 = "If equipped on accessories, increases ranged armor piercing by "; + public static string ItemDatabase_ItemDefinitions_586 => instance._ItemDatabase_ItemDefinitions_586; + public string _ItemDatabase_ItemDefinitions_586 = "If equipped in other slots, increases agility by "; + public static string ItemDatabase_ItemDefinitions_587 => instance._ItemDatabase_ItemDefinitions_587; + public string _ItemDatabase_ItemDefinitions_587 = "If equipped on a weapon, increases melee damage by "; + public static string ItemDatabase_ItemDefinitions_588 => instance._ItemDatabase_ItemDefinitions_588; + public string _ItemDatabase_ItemDefinitions_588 = "If equipped on boots, decreases damage taken by "; + public static string ItemDatabase_ItemDefinitions_589 => instance._ItemDatabase_ItemDefinitions_589; + public string _ItemDatabase_ItemDefinitions_589 = "If equipped on a helmet, increases attack speed by "; + public static string ItemDatabase_ItemDefinitions_590 => instance._ItemDatabase_ItemDefinitions_590; + public string _ItemDatabase_ItemDefinitions_590 = "If equipped on accessories, increases melee armor piercing by "; + public static string ItemDatabase_ItemDefinitions_591 => instance._ItemDatabase_ItemDefinitions_591; + public string _ItemDatabase_ItemDefinitions_591 = "If equipped in other slots, increases strength by "; + public static string ItemDatabase_ItemDefinitions_592 => instance._ItemDatabase_ItemDefinitions_592; + public string _ItemDatabase_ItemDefinitions_592 = "If equipped on a weapon, increases magic damage by "; + public static string ItemDatabase_ItemDefinitions_593 => instance._ItemDatabase_ItemDefinitions_593; + public string _ItemDatabase_ItemDefinitions_593 = "If equipped on boots, decreases spell cost by "; + public static string ItemDatabase_ItemDefinitions_594 => instance._ItemDatabase_ItemDefinitions_594; + public string _ItemDatabase_ItemDefinitions_594 = "If equipped on a helmet, decreases spell cooldown by "; + public static string ItemDatabase_ItemDefinitions_595 => instance._ItemDatabase_ItemDefinitions_595; + public string _ItemDatabase_ItemDefinitions_595 = "If equipped on accessories, increases energy on hit by "; + public static string ItemDatabase_ItemDefinitions_596 => instance._ItemDatabase_ItemDefinitions_596; + public string _ItemDatabase_ItemDefinitions_596 = "If equipped in other slots, increases intelligence by "; + public static string ItemDatabase_ItemDefinitions_597 => instance._ItemDatabase_ItemDefinitions_597; + public string _ItemDatabase_ItemDefinitions_597 = "If equipped on a weapon, increases all healing by "; + public static string ItemDatabase_ItemDefinitions_598 => instance._ItemDatabase_ItemDefinitions_598; + public string _ItemDatabase_ItemDefinitions_598 = "If equipped on boots, increases magic find by "; + public static string ItemDatabase_ItemDefinitions_599 => instance._ItemDatabase_ItemDefinitions_599; + public string _ItemDatabase_ItemDefinitions_599 = "If equipped on a helmet, increases experience gained by "; + public static string ItemDatabase_ItemDefinitions_600 => instance._ItemDatabase_ItemDefinitions_600; + public string _ItemDatabase_ItemDefinitions_600 = "If equipped on accessories, increases life per second by "; + public static string ItemDatabase_ItemDefinitions_601 => instance._ItemDatabase_ItemDefinitions_601; + public string _ItemDatabase_ItemDefinitions_601 = "If equipped in other slots, increases vitality by "; + public static string ItemDatabase_ItemDefinitions_602 => instance._ItemDatabase_ItemDefinitions_602; + public string _ItemDatabase_ItemDefinitions_602 = "If equipped on a weapon, increases crit damage by "; + public static string ItemDatabase_ItemDefinitions_603 => instance._ItemDatabase_ItemDefinitions_603; + public string _ItemDatabase_ItemDefinitions_603 = "If equipped on boots, increases resistance to magic by "; + public static string ItemDatabase_ItemDefinitions_604 => instance._ItemDatabase_ItemDefinitions_604; + public string _ItemDatabase_ItemDefinitions_604 = "If equipped on a helmet, increases health by "; + public static string ItemDatabase_ItemDefinitions_605 => instance._ItemDatabase_ItemDefinitions_605; + public string _ItemDatabase_ItemDefinitions_605 = "If equipped on accessories, increases thorns by "; + public static string ItemDatabase_ItemDefinitions_606 => instance._ItemDatabase_ItemDefinitions_606; + public string _ItemDatabase_ItemDefinitions_606 = "If equipped in other slots, increases armor by "; + public static string ItemDatabase_ItemDefinitions_607 => instance._ItemDatabase_ItemDefinitions_607; + public string _ItemDatabase_ItemDefinitions_607 = "Firebolt deals increased damage"; + public static string ItemDatabase_ItemDefinitions_608 => instance._ItemDatabase_ItemDefinitions_608; + public string _ItemDatabase_ItemDefinitions_608 = "\nWarcry gives damage resistance."; + public static string ItemDatabase_ItemDefinitions_609 => instance._ItemDatabase_ItemDefinitions_609; + public string _ItemDatabase_ItemDefinitions_609 = "Devil Dancers"; + public static string ItemDatabase_ItemDefinitions_610 => instance._ItemDatabase_ItemDefinitions_610; + public string _ItemDatabase_ItemDefinitions_610 = "When consuming frenzy stacks, gain 5% crit chance for 10 seconds for every stack consumed. Gain 3% attack speed per frenzy stack active."; + public static string ItemDatabase_ItemDefinitions_611 => instance._ItemDatabase_ItemDefinitions_611; + public string _ItemDatabase_ItemDefinitions_611 = "Call of the Ancients"; + public static string ItemDatabase_ItemDefinitions_612(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_612, objects); + public string _ItemDatabase_ItemDefinitions_612 = "Berserk increases all damage by additional {0}"; + public static string ItemDatabase_ItemDefinitions_613 => instance._ItemDatabase_ItemDefinitions_613; + public string _ItemDatabase_ItemDefinitions_613 = "Berserker's Wrath"; + public static string ItemDatabase_ItemDefinitions_614 => instance._ItemDatabase_ItemDefinitions_614; + public string _ItemDatabase_ItemDefinitions_614 = "Viking Amulet"; + public static string ItemDatabase_ItemDefinitions_615(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_615, objects); + public string _ItemDatabase_ItemDefinitions_615 = "Increases attack and movement speed during berserk by {0}"; + public static string ItemDatabase_ItemDefinitions_616 => instance._ItemDatabase_ItemDefinitions_616; + public string _ItemDatabase_ItemDefinitions_616 = "Pedant of Skallagrim"; + public static string ItemDatabase_ItemDefinitions_617 => instance._ItemDatabase_ItemDefinitions_617; + public string _ItemDatabase_ItemDefinitions_617 = "Wristguards of The Sanctuary Keeper"; + public static string ItemDatabase_ItemDefinitions_618(params object[] objects) => string.Format(instance._ItemDatabase_ItemDefinitions_618, objects); + public string _ItemDatabase_ItemDefinitions_618 = "Allies inside Sanctuary have {0} increased cooldown rate and attacks use {1} less resources"; //MainMenu_Hints public static string MainMenu_Hints_1 => instance._MainMenu_Hints_1; @@ -3290,9 +3286,9 @@ public partial class Translations //Player\Spells\SpellDataBase.cs - //Items\ItemDataBase_StatDefinitions.cs + //Items\ItemDatabase_StatDefinitions.cs - //Items\ItemDataBase_ItemDefinitions.cs + //Items\ItemDatabase_ItemDefinitions.cs //Items\Item.cs @@ -4153,704 +4149,704 @@ public partial class Translations SpellDataBase_50:: "Firebolt" SpellDataBase_51:: "Puts your weapon away and instead allows you to summon bone chilling blizzard around you that progressively gets stronger. After {0} seconds spell reaches maximum power - damage and radius is at it's peak\nAttacks twice per second, frost seeps into enemy armor reducing it by a fraction of damage dealt" SpellDataBase_52:: "Snow Storm" -ItemDataBase_StatDefinitions_1:: "Health" -ItemDataBase_StatDefinitions_2:: "Energy" -ItemDataBase_StatDefinitions_3:: "Health/sec" -ItemDataBase_StatDefinitions_4:: "Stamina/sec" -ItemDataBase_StatDefinitions_5:: "Energy regen" -ItemDataBase_StatDefinitions_6:: "Life regen" -ItemDataBase_StatDefinitions_7:: "Critical hit chance" -ItemDataBase_StatDefinitions_8:: "Life on hit" -ItemDataBase_StatDefinitions_9:: "Dodge chance" -ItemDataBase_StatDefinitions_10:: "Magic resistance" -ItemDataBase_StatDefinitions_11:: "Experience" -ItemDataBase_StatDefinitions_12:: "Spell damage" -ItemDataBase_StatDefinitions_13:: "Melee damage" -ItemDataBase_StatDefinitions_14:: "Ranged damage" -ItemDataBase_StatDefinitions_15:: "Base spell damage" -ItemDataBase_StatDefinitions_16:: "Base melee damage" -ItemDataBase_StatDefinitions_17:: "Base ranged damage" -ItemDataBase_StatDefinitions_18:: "Energy/agility" -ItemDataBase_StatDefinitions_19:: "Health/vitality" -ItemDataBase_StatDefinitions_20:: "Spell damage/intelligence" -ItemDataBase_StatDefinitions_21:: "Melee damage/strength" -ItemDataBase_StatDefinitions_22:: "Recovery" -ItemDataBase_StatDefinitions_23:: "PERMANENT PERK POINTS" -ItemDataBase_StatDefinitions_24:: " / " -ItemDataBase_StatDefinitions_25:: "EXPERIENCE" -ItemDataBase_StatDefinitions_26:: "Weapon length" -ItemDataBase_StatDefinitions_27:: "Attack cost reduction" -ItemDataBase_StatDefinitions_28:: "Spell cost to stamina" -ItemDataBase_StatDefinitions_29:: "Energy/sec" -ItemDataBase_StatDefinitions_30:: "Ranged damage/agility" -ItemDataBase_StatDefinitions_31:: "Melee armor piercing" -ItemDataBase_StatDefinitions_32:: "Ranged armor piercing" -ItemDataBase_StatDefinitions_33:: "Armor piercing" -ItemDataBase_StatDefinitions_34:: "Refund points" -ItemDataBase_StatDefinitions_35:: "Headshot damage" -ItemDataBase_StatDefinitions_36:: "Fire damage" -ItemDataBase_StatDefinitions_37:: "Chance on hit to slow" -ItemDataBase_StatDefinitions_38:: "Chance on hit to bleed" -ItemDataBase_StatDefinitions_39:: "Chance on hit to weaken" -ItemDataBase_StatDefinitions_40:: "Dynamite & bomb damage" -ItemDataBase_StatDefinitions_41:: "Spear damage" -ItemDataBase_StatDefinitions_42:: "Extra carried Sticks" -ItemDataBase_StatDefinitions_43:: "Extra carried Rocks" -ItemDataBase_StatDefinitions_44:: "Extra carried Ropes" -ItemDataBase_StatDefinitions_45:: " Soda: " -ItemDataBase_StatDefinitions_46:: "Booze: " -ItemDataBase_StatDefinitions_47:: "Extra carried Drinks" -ItemDataBase_StatDefinitions_48:: "Extra carried Food" -ItemDataBase_StatDefinitions_49:: "Black hole radius" -ItemDataBase_StatDefinitions_50:: "Black hole lifetime" -ItemDataBase_StatDefinitions_51:: "Black hole gravitational force" -ItemDataBase_StatDefinitions_52:: "Black hole damage" -ItemDataBase_StatDefinitions_53:: "Stun on hit" -ItemDataBase_StatDefinitions_54:: "Snap freeze Duration" -ItemDataBase_StatDefinitions_55:: "Raft speed" -ItemDataBase_StatDefinitions_56:: "Empty socket" -ItemDataBase_StatDefinitions_57:: "Socket: crit chance" -ItemDataBase_StatDefinitions_58:: "Socket: agility" -ItemDataBase_StatDefinitions_59:: "Socket: movement speed" -ItemDataBase_StatDefinitions_60:: "Socket: ranged damage" -ItemDataBase_StatDefinitions_61:: "Socket: ranged armor piercing" -ItemDataBase_StatDefinitions_62:: "Socket: attack speed" -ItemDataBase_StatDefinitions_63:: "Socket: strength" -ItemDataBase_StatDefinitions_64:: "Socket: damage reduction" -ItemDataBase_StatDefinitions_65:: "Socket: melee damage" -ItemDataBase_StatDefinitions_66:: "Socket: melee armor piercing" -ItemDataBase_StatDefinitions_67:: "Socket: cooldown reduction" -ItemDataBase_StatDefinitions_68:: "Socket: intelligence" -ItemDataBase_StatDefinitions_69:: "Socket: spell cost reduction" -ItemDataBase_StatDefinitions_70:: "Socket: spell damage" -ItemDataBase_StatDefinitions_71:: "Socket: energy on hit" -ItemDataBase_StatDefinitions_72:: "Socket: experience gain" -ItemDataBase_StatDefinitions_73:: "Socket: vitality " -ItemDataBase_StatDefinitions_74:: "Socket: magic find" -ItemDataBase_StatDefinitions_75:: "Socket: all healing" -ItemDataBase_StatDefinitions_76:: "Socket: life per second" -ItemDataBase_StatDefinitions_77:: "Socket: maximum health " -ItemDataBase_StatDefinitions_78:: "Socket: armor " -ItemDataBase_StatDefinitions_79:: "Socket: Resistance to magic" -ItemDataBase_StatDefinitions_80:: "Socket: crit damage" -ItemDataBase_StatDefinitions_81:: "Socket: thorns" -ItemDataBase_ItemDefinitions_1:: "Broken Flip-Flops" -ItemDataBase_ItemDefinitions_2:: "A pair of damaged shoes. Judging by their condition, i can imagine what happened to their owner." -ItemDataBase_ItemDefinitions_3:: "Worn by one of the passengers of the plane that Eric also flew in." -ItemDataBase_ItemDefinitions_4:: "Old Boots" -ItemDataBase_ItemDefinitions_5:: "A pair of old boots. They must have been lying here for ages." -ItemDataBase_ItemDefinitions_6:: "Found on the Peninsula, but judging by their condition, they belong neither to a plane passenger nor a cannibal." -ItemDataBase_ItemDefinitions_7:: "Damaged Leather Boots" -ItemDataBase_ItemDefinitions_8:: "A pair of leather boots. They look good and have only some scratches." -ItemDataBase_ItemDefinitions_9:: "They arrived to the Peninsula the same way Eric did. Since they were in a baggage, they avoided a lot of damage." -ItemDataBase_ItemDefinitions_10:: "Sturdy Leather Boots" -ItemDataBase_ItemDefinitions_11:: "A pair of leather boots. They are in a very good condition." -ItemDataBase_ItemDefinitions_12:: "They arrived to the Peninsula the same way Eric did. Eric found them undamaged in their original box. They still had a pricetag - $419,99." -ItemDataBase_ItemDefinitions_13:: "Damaged Army Boots" -ItemDataBase_ItemDefinitions_14:: "Sturdy, hard, resistant but damaged boots." -ItemDataBase_ItemDefinitions_15:: "They look modern, almost too modern for everything here." -ItemDataBase_ItemDefinitions_16:: "Army Boots" -ItemDataBase_ItemDefinitions_17:: "Sturdy, hard, resistant boots." -ItemDataBase_ItemDefinitions_18:: "Armsy Skin Footwear" -ItemDataBase_ItemDefinitions_19:: "Severed armsy legs, with all of their insides removed. All thats left is dried mutated skin." -ItemDataBase_ItemDefinitions_20:: "Armsy, the second heaviest of the mutants needs very resistant skin. It often drags its legs on the ground when it moves. The skin on their legs grew very thick, and has bone tissue mixed with skin tissue." -ItemDataBase_ItemDefinitions_21:: "Finger Warmer" -ItemDataBase_ItemDefinitions_22:: "A little glove to keep your fingers warm and cozy." -ItemDataBase_ItemDefinitions_23:: "Made of wool." -ItemDataBase_ItemDefinitions_24:: "Thick Rubber Glove" -ItemDataBase_ItemDefinitions_25:: "A glove that helps get a better grip." -ItemDataBase_ItemDefinitions_26:: "Tribal Glove" -ItemDataBase_ItemDefinitions_27:: "Offers medicore protection." -ItemDataBase_ItemDefinitions_28:: "Glove made out of thin bones, some may possibly be from a human." -ItemDataBase_ItemDefinitions_29:: "Tribe Leader Glove" -ItemDataBase_ItemDefinitions_30:: "A glove that offers little protection but a lot of offensive stats." -ItemDataBase_ItemDefinitions_31:: "A glove made of bones, some have engravings of crosses." -ItemDataBase_ItemDefinitions_32:: "Worn Shorts" -ItemDataBase_ItemDefinitions_33:: "Some protection for legs." -ItemDataBase_ItemDefinitions_34:: "Short, made out of cheap thin fabric, and on top of that they are damaged. But its better than nothing." -ItemDataBase_ItemDefinitions_35:: "Cargo Shorts" -ItemDataBase_ItemDefinitions_36:: "No protection at all but they allow to carry more items." -ItemDataBase_ItemDefinitions_37:: "They are ugly as hell tho" -ItemDataBase_ItemDefinitions_38:: "Passenger's Jacket" -ItemDataBase_ItemDefinitions_39:: "It's a little torn. " -ItemDataBase_ItemDefinitions_40:: "This jacket was worn by Preston A. the 34th passenger on the plane. Eric talked to him at the airport. Guy was odd, and now he's dead." -ItemDataBase_ItemDefinitions_41:: "Leather Jacket" -ItemDataBase_ItemDefinitions_42:: "Offers little protection" -ItemDataBase_ItemDefinitions_43:: "This jacket was in a baggage of one of the plane passengers" -ItemDataBase_ItemDefinitions_44:: "Boar Skin Armor" -ItemDataBase_ItemDefinitions_45:: "It's made from a skin of a huge individual. It's heavy and thick, and surely can protect from attacks of weaker enemies." -ItemDataBase_ItemDefinitions_46:: "Boar, one of the animals on the peninsula, is rather rare and it's skin is very durable." -ItemDataBase_ItemDefinitions_47:: "Crocodile Skin Armor" -ItemDataBase_ItemDefinitions_48:: "Plate armour" -ItemDataBase_ItemDefinitions_49:: "Bear Skin Armor" -ItemDataBase_ItemDefinitions_50:: "Archer's Gear" -ItemDataBase_ItemDefinitions_51:: "Hazard's Gear" -ItemDataBase_ItemDefinitions_52:: "Mysterious robe" -ItemDataBase_ItemDefinitions_53:: "Magic flows through the entirety of this object. It's made out of unknown material" -ItemDataBase_ItemDefinitions_54:: "Robe looks like it was created yesterday, but its older than the oldest of mankinds' civilizations. Simply looking at it sends chills down the spine." -ItemDataBase_ItemDefinitions_55:: "Empowers cataclysm. The vortex turns blue, damage is increased, freezes enemies " -ItemDataBase_ItemDefinitions_56:: "Rusty Longsword" -ItemDataBase_ItemDefinitions_57:: "A long, very heavy sword. Edge got dull over time. Still, it's in a condition that allows me to slice some enemies in half." -ItemDataBase_ItemDefinitions_58:: "The sword appears to be from medieval ages, through it's not. It was made a lot later. It never was used as a weapon in battles, because it was merely a decoration." -ItemDataBase_ItemDefinitions_59:: "Longsword" -ItemDataBase_ItemDefinitions_60:: "Sharp and long" -ItemDataBase_ItemDefinitions_61:: "The sword is in perfect contidion." -ItemDataBase_ItemDefinitions_62:: "Full Metal Sword" -ItemDataBase_ItemDefinitions_63:: "It's sooo big..." -ItemDataBase_ItemDefinitions_64:: "A normal human cannot lift this." -ItemDataBase_ItemDefinitions_65:: "The Leech" -ItemDataBase_ItemDefinitions_66:: "Hey where did my health g- oh it's back..." -ItemDataBase_ItemDefinitions_67:: "Smokey's Sacred Quiver" -ItemDataBase_ItemDefinitions_68:: "SmokeyTheBear died because he never used this item." -ItemDataBase_ItemDefinitions_69:: "Smokey was the friend of allmighty Hazard, who can materialize any kind of weapon at the snap of his fingers. Hazard remebered Smokey's favourite playstyle and he gave him this as a gift to purge the sh** out of mutants." -ItemDataBase_ItemDefinitions_70:: "Crossbows operate at {0} speed and deal {1} increased damage" -ItemDataBase_ItemDefinitions_71:: "Broken shield" -ItemDataBase_ItemDefinitions_72:: "Tower Shield" -ItemDataBase_ItemDefinitions_73:: "Broken Leather Shoulder Armor" -ItemDataBase_ItemDefinitions_74:: "Leather Shoulder Armor" -ItemDataBase_ItemDefinitions_75:: "Phase Pauldrons" -ItemDataBase_ItemDefinitions_76:: "The distance of blink is increased by {} meters, and blink now hits everything that you teleported through" -ItemDataBase_ItemDefinitions_77:: "MAGA Cap" -ItemDataBase_ItemDefinitions_78:: "Wearing this item channels the power of D.Trump to you" -ItemDataBase_ItemDefinitions_79:: "... or does it?" -ItemDataBase_ItemDefinitions_80:: "Hubble's Vision" -ItemDataBase_ItemDefinitions_81:: "Wearing this item empowers your black hole spell" -ItemDataBase_ItemDefinitions_82:: "Man, fuck gravity." -ItemDataBase_ItemDefinitions_83:: "Broken Loop" -ItemDataBase_ItemDefinitions_84:: "Loop" -ItemDataBase_ItemDefinitions_85:: "Toxic Ring" -ItemDataBase_ItemDefinitions_86:: " comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo." -ItemDataBase_ItemDefinitions_87:: "What the fuck did you just fucking say about me, you little bitch? I'll have you know I graduated top of my class in the Navy Seals, and I've been involved in numerous secret raids on Al-Quaeda, and I have over 300 confirmed kills. I am trained in gorilla warfare and I'm the top sniper in the entire US armed forces. You are nothing to me but just another target. I will wipe you the fuck out with precision the likes of which has never been seen before on this Earth, mark my fucking words. You think you can get away with saying that shit to me over the Internet? Think again, fucker. As we speak I am contacting my secret network of spies across the USA and your IP is being traced right now so you better prepare for the storm, maggot. The storm that wipes out the pathetic little thing you call your life. You're fucking dead, kid. I can be anywhere, anytime, and I can kill you in over seven hundred ways, and that's just with my bare hands. Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the United States Marine Corps and I will use it to its full extent to wipe your miserable ass off the face of the continent, you little shit. If only you could have known what unholy retribution your little \"clever\" comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo." -ItemDataBase_ItemDefinitions_88:: "Scarf" -ItemDataBase_ItemDefinitions_89:: "Damaged Bracer" -ItemDataBase_ItemDefinitions_90:: "Worn Bracer" -ItemDataBase_ItemDefinitions_91:: "Leather Bracer" -ItemDataBase_ItemDefinitions_92:: "Greater Mutated Heart" -ItemDataBase_ItemDefinitions_93:: "Can be consumed by right clicking it" -ItemDataBase_ItemDefinitions_94:: "Lesser Mutated Heart" -ItemDataBase_ItemDefinitions_95:: "Spiked ring" -ItemDataBase_ItemDefinitions_96:: "Armor piercing for either melee or ranged weapons" -ItemDataBase_ItemDefinitions_97:: "Piercer" -ItemDataBase_ItemDefinitions_98:: "Moon Boots" -ItemDataBase_ItemDefinitions_99:: "A pair of boots from the moon." -ItemDataBase_ItemDefinitions_100:: "It is said that the wearer will not take fall damage while wearing these boots and will jump like on the moon, I wouldn't trust it tough." -ItemDataBase_ItemDefinitions_101:: "Golden Ring of Strength" -ItemDataBase_ItemDefinitions_102:: "A Ring of ancient times." -ItemDataBase_ItemDefinitions_103:: "A Golden Ring that looks simple and elegant, yet it feels powerfull to the touch." -ItemDataBase_ItemDefinitions_104:: "Golden Ring of Vitality" -ItemDataBase_ItemDefinitions_105:: "Golden Ring of Agility" -ItemDataBase_ItemDefinitions_106:: "Golden Ring of Intelligence" -ItemDataBase_ItemDefinitions_107:: "Silver Ring of Strength" -ItemDataBase_ItemDefinitions_108:: "A Silver Ring that looks simple and elegant, yet it feels powerfull to the touch." -ItemDataBase_ItemDefinitions_109:: "Silver Ring of Vitality" -ItemDataBase_ItemDefinitions_110:: "Silver Ring of Agility" -ItemDataBase_ItemDefinitions_111:: "Silver Ring of Intelligence" -ItemDataBase_ItemDefinitions_112:: "Steel Ring of Strength" -ItemDataBase_ItemDefinitions_113:: "A Steel Ring that looks simple and elegant, yet it feels powerfull to the touch." -ItemDataBase_ItemDefinitions_114:: "Steel Ring of Vitality" -ItemDataBase_ItemDefinitions_115:: "Steel Ring of Agility" -ItemDataBase_ItemDefinitions_116:: "Steel Ring of Intelligence" -ItemDataBase_ItemDefinitions_117:: "The One Ring To Rule Them All" -ItemDataBase_ItemDefinitions_118:: "An Ancient magical Ring of great power." -ItemDataBase_ItemDefinitions_119:: "It looks like and ordinay ring, but a strange energy is surrounding it. The Ring is said to have been found inside a volcanic rock by an archeologist, who went mad and isolated himself on the peninsula many years ago. But that's just a fairy tale, ring?" -ItemDataBase_ItemDefinitions_120:: "Attracts unwanted attention of an unknown entity." -ItemDataBase_ItemDefinitions_121:: "Golden Locket of Strength" -ItemDataBase_ItemDefinitions_122:: "A Locket of ancient times." -ItemDataBase_ItemDefinitions_123:: "A Golden Locket that looks simple and elegant, yet it feels powerfull to the touch." -ItemDataBase_ItemDefinitions_124:: "Golden Locket of Vitality" -ItemDataBase_ItemDefinitions_125:: "Golden Locket of Agility" -ItemDataBase_ItemDefinitions_126:: "Golden Locket of Intelligence" -ItemDataBase_ItemDefinitions_127:: "Silver Locket of Strength" -ItemDataBase_ItemDefinitions_128:: "A Silver Locket that looks simple and elegant, yet it feels powerfull to the touch." -ItemDataBase_ItemDefinitions_129:: "Silver Locket of Vitality" -ItemDataBase_ItemDefinitions_130:: "Silver Locket of Agility" -ItemDataBase_ItemDefinitions_131:: "Silver Locket of Intelligence" -ItemDataBase_ItemDefinitions_132:: "Emerald Pendant of Strength" -ItemDataBase_ItemDefinitions_133:: "A Pendant of ancient times." -ItemDataBase_ItemDefinitions_134:: "An Emerald Pendant that looks simple and elegant, yet it feels powerfull to the touch." -ItemDataBase_ItemDefinitions_135:: "Emerald Pendant of Vitality" -ItemDataBase_ItemDefinitions_136:: "Emerald Pendant of Agility" -ItemDataBase_ItemDefinitions_137:: "Emerald Pendant of Intelligence" -ItemDataBase_ItemDefinitions_138:: "Diamond Pendant of Strength" -ItemDataBase_ItemDefinitions_139:: "A Diamond Pendant that looks simple and elegant, yet it feels powerfull to the touch." -ItemDataBase_ItemDefinitions_140:: "Diamond Pendant of Vitality" -ItemDataBase_ItemDefinitions_141:: "Diamond Pendant of Agility" -ItemDataBase_ItemDefinitions_142:: "Diamond Pendant of Intelligence" -ItemDataBase_ItemDefinitions_143:: "Armsy Finger Necklace" -ItemDataBase_ItemDefinitions_144:: "A Necklace decorated with armsy fingertips." -ItemDataBase_ItemDefinitions_145:: "A Necklace made from the fingertips of an armsy, yeilding it's raw power and strentgh." -ItemDataBase_ItemDefinitions_146:: "Virginia Heart Pendant" -ItemDataBase_ItemDefinitions_147:: "A Pendant of a petrified Virginia heart." -ItemDataBase_ItemDefinitions_148:: "A Pendant made from a petrified Virginia heart, yeilding it's love and Vitality." -ItemDataBase_ItemDefinitions_149:: "Cowman Toe Necklace" -ItemDataBase_ItemDefinitions_150:: "A Necklace decorated with cowman toes." -ItemDataBase_ItemDefinitions_151:: "A Necklace made from the fingertips of an armsy, yeilding it's speed and agility." -ItemDataBase_ItemDefinitions_152:: "Pendant of Perpetual Rebirth" -ItemDataBase_ItemDefinitions_153:: "A Pendant of a shrunken babyhead." -ItemDataBase_ItemDefinitions_154:: "A pedant of great power. Obtainable only from babies or crafting" -ItemDataBase_ItemDefinitions_155:: "decrease a random cooldown by {0} second whenever you hit something with melee or ranged attack." -ItemDataBase_ItemDefinitions_156:: "Megan's Locket" -ItemDataBase_ItemDefinitions_157:: "The Locket Megan wore." -ItemDataBase_ItemDefinitions_158:: "Megan wore this Locket, it has a picture of her mom in it." -ItemDataBase_ItemDefinitions_159:: "Relic Hammer" -ItemDataBase_ItemDefinitions_160:: "It's slow and weak." -ItemDataBase_ItemDefinitions_161:: "Slows on hit" -ItemDataBase_ItemDefinitions_162:: "Black Hammer" -ItemDataBase_ItemDefinitions_163:: "It's slow but with enough strength i can make it a very deadly tool" -ItemDataBase_ItemDefinitions_164:: "Potato Sack" -ItemDataBase_ItemDefinitions_165:: "Can be used as a quiver" -ItemDataBase_ItemDefinitions_166:: "Rabbit Skin Quiver" -ItemDataBase_ItemDefinitions_167:: "Hollow Log" -ItemDataBase_ItemDefinitions_168:: "It allows for faster drawing of arrow than a cloth quiver" -ItemDataBase_ItemDefinitions_169:: "Spellbound Quiver" -ItemDataBase_ItemDefinitions_170:: "Long Lost Quiver" -ItemDataBase_ItemDefinitions_171:: "Spell Scroll" -ItemDataBase_ItemDefinitions_172:: "Contains a lot of information on how to properly cast spells to achieve better results" -ItemDataBase_ItemDefinitions_173:: "Cloth Pants" -ItemDataBase_ItemDefinitions_174:: "Offer little protction" -ItemDataBase_ItemDefinitions_175:: "Rough Hide Leggins" -ItemDataBase_ItemDefinitions_176:: "Plate Leggins" -ItemDataBase_ItemDefinitions_177:: "Sage's Robes" -ItemDataBase_ItemDefinitions_178:: "Hammer Jammers" -ItemDataBase_ItemDefinitions_179:: "Damage of your smash attack is increased by {0}, hammer stun duration is doubled" -ItemDataBase_ItemDefinitions_180:: "Pirate Pants" -ItemDataBase_ItemDefinitions_181:: "Those pants are ligh and comfortable. They offer plenty of mobility but lack in protection." -ItemDataBase_ItemDefinitions_182:: "Hexed Pants of Mr M." -ItemDataBase_ItemDefinitions_183:: "They look like yoga pants but for a man the size of a wardrobe" -ItemDataBase_ItemDefinitions_184:: "Once upon a time there was a man who was in a basement and fed himself with nothing but nuggets. He got so obese that friends and family started worrying. Hazard noticed this man and cursed his pants to force him to excercise." -ItemDataBase_ItemDefinitions_185:: "While moving, energy regeneration and damage is increased by {0}. While standing still for longer than a second, you loose {1} of max health per second." -ItemDataBase_ItemDefinitions_186:: "Leather Mantle" -ItemDataBase_ItemDefinitions_187:: "A piece of cloth to give protection from " -ItemDataBase_ItemDefinitions_188:: "Shoulder Guards" -ItemDataBase_ItemDefinitions_189:: "Medium armor piece." -ItemDataBase_ItemDefinitions_190:: "Heavy armor" -ItemDataBase_ItemDefinitions_191:: "Heavy Shoulder Plates" -ItemDataBase_ItemDefinitions_192:: "Heavy armor piece. They offer great protection at the cost of attack speed and movement speed decrease" -ItemDataBase_ItemDefinitions_193:: "Etched Mantle" -ItemDataBase_ItemDefinitions_194:: "Those pauldrons empower wearer's combat skill" -ItemDataBase_ItemDefinitions_195:: "Assassins Pauldrons" -ItemDataBase_ItemDefinitions_196:: "Death Pact" -ItemDataBase_ItemDefinitions_197:: "Find the greatest strength on the border of life and death." -ItemDataBase_ItemDefinitions_198:: "Every attack you make decreases your health by {0} of max health. For every percent of missing health you gain {1} damage amplification. This damage cannot kill you." -ItemDataBase_ItemDefinitions_199:: "Maximale Qualitot" -ItemDataBase_ItemDefinitions_200:: "A platinum ring with the most expensive jewels engraved on it. It's quality is uncomparable." -ItemDataBase_ItemDefinitions_201:: "Heart of Purity" -ItemDataBase_ItemDefinitions_202:: "A object filled with both destructive and creative energy. Allows to re-assign all spent mutation points" -ItemDataBase_ItemDefinitions_203:: "This powerful relic contains so much power, that it can kill anything and force it to come back to life, resulting in it's rebirth." -ItemDataBase_ItemDefinitions_204:: "Can be consumed by right clicking it. " -ItemDataBase_ItemDefinitions_205:: "Round Shield" -ItemDataBase_ItemDefinitions_206:: "A sturdy shield made of wood and reinforced with iron." -ItemDataBase_ItemDefinitions_207:: "Old Buckler" -ItemDataBase_ItemDefinitions_208:: "An old shield." -ItemDataBase_ItemDefinitions_209:: "This item has a lot of scratches that look like they were made by something with sharp claws." -ItemDataBase_ItemDefinitions_210:: "Dark Oak Shield" -ItemDataBase_ItemDefinitions_211:: "Bone Shield" -ItemDataBase_ItemDefinitions_212:: "A shield made of bones, held together by thick steel wire." -ItemDataBase_ItemDefinitions_213:: "Dull Longsword" -ItemDataBase_ItemDefinitions_214:: "It's round on the edges" -ItemDataBase_ItemDefinitions_215:: "Iron Horn" -ItemDataBase_ItemDefinitions_216:: "When using Warcry, you and all allies recieve armor bonus equal to {0} of your armor" -ItemDataBase_ItemDefinitions_217:: "The Great Iron Horn" -ItemDataBase_ItemDefinitions_218:: "Horned Helmet" -ItemDataBase_ItemDefinitions_219:: "A viking helmet" -ItemDataBase_ItemDefinitions_220:: "Mask" -ItemDataBase_ItemDefinitions_221:: "Mask of Madness" -ItemDataBase_ItemDefinitions_222:: "Old Scroll" -ItemDataBase_ItemDefinitions_223:: "Wormhole Stabilizators" -ItemDataBase_ItemDefinitions_224:: "High-tech gear" -ItemDataBase_ItemDefinitions_225:: "Hazard remember to put some fucking lore in here, don't leave it like this!" -ItemDataBase_ItemDefinitions_226:: "Increases the duration of a portal by {0} seconds" -ItemDataBase_ItemDefinitions_227:: "Cripplers" -ItemDataBase_ItemDefinitions_228:: "Increases the duration of a magic arrow's negative effect by {0} seconds" -ItemDataBase_ItemDefinitions_229:: "Crossfire" -ItemDataBase_ItemDefinitions_230:: "Infused with powerful magic. This item is a dangerous tool of destruction." -ItemDataBase_ItemDefinitions_231:: "When hitting an enemy with a projectile, create a magic arrow pointed at the enemy and shoot it without using in energy. This effect may occur once every 2 seconds, but can be interval can be shortened with cooldown reduction." -ItemDataBase_ItemDefinitions_232:: "Scroll of Recovery" -ItemDataBase_ItemDefinitions_233:: "Recovers health and stamina" -ItemDataBase_ItemDefinitions_234:: "Tiara" -ItemDataBase_ItemDefinitions_235:: "A beautiful tiara " -ItemDataBase_ItemDefinitions_236:: "This tiara may not provide much protection, but it sure is pretty" -ItemDataBase_ItemDefinitions_237:: "Shiny" -ItemDataBase_ItemDefinitions_238:: "Chastity belt" -ItemDataBase_ItemDefinitions_239:: "Dodge those fukbois" -ItemDataBase_ItemDefinitions_240:: "This belt will stop those cheeky cannibals and armsies from getting into your pants" -ItemDataBase_ItemDefinitions_241:: " {0} damage reduction while sleeping" -ItemDataBase_ItemDefinitions_242:: "Ice Scroll" -ItemDataBase_ItemDefinitions_243:: "A spell surrounded by flying shards of ice, contains tramendous power of cold." -ItemDataBase_ItemDefinitions_244:: "Created at the top of the mountain." -ItemDataBase_ItemDefinitions_245:: "Motorboat Modification Blueprints" -ItemDataBase_ItemDefinitions_246:: "Sheet of paper that allows to turn any raft into a high speed. Increases carry amount and increases speed of rafts." -ItemDataBase_ItemDefinitions_247:: "Who did this lmao." -ItemDataBase_ItemDefinitions_248:: "Axe of Swiftness" -ItemDataBase_ItemDefinitions_249:: "Severer" -ItemDataBase_ItemDefinitions_250:: "Golden Axe of Fortune" -ItemDataBase_ItemDefinitions_251:: "Axe of Misfortune" -ItemDataBase_ItemDefinitions_252:: "Misfortunate are the ones on the recieving end. They will bleed a lot" -ItemDataBase_ItemDefinitions_253:: "Golden Ring" -ItemDataBase_ItemDefinitions_254:: "Golden Locket" -ItemDataBase_ItemDefinitions_255:: "Dull Axe" -ItemDataBase_ItemDefinitions_256:: "Precise Adjustments" -ItemDataBase_ItemDefinitions_257:: "Focus attack speed buff duration is increased by {0} seconds" -ItemDataBase_ItemDefinitions_258:: "Rage" -ItemDataBase_ItemDefinitions_259:: "Increases maximum stacks of frenzy by {0}" -ItemDataBase_ItemDefinitions_260:: "Swords go brrrrrrttt" -ItemDataBase_ItemDefinitions_261:: "Jagged Edge" -ItemDataBase_ItemDefinitions_262:: "Bash has {0} a chance to make enemies to bleed for {1} of damage dealt per second for duration of slow" -ItemDataBase_ItemDefinitions_263:: "Bloodthirster" -ItemDataBase_ItemDefinitions_264:: "Drenched in blood of many unfortunate foes." -ItemDataBase_ItemDefinitions_265:: "Bash lifesteals {0} of damage dealt into energy and health" -ItemDataBase_ItemDefinitions_266:: "Frost Giant" -ItemDataBase_ItemDefinitions_267:: "Melee hits freeze enemies" -ItemDataBase_ItemDefinitions_268:: "Alexander's Shield" -ItemDataBase_ItemDefinitions_269:: "Parry has a chance to be casted when getting it. Requires parry to be equipped" -ItemDataBase_ItemDefinitions_270:: "King Qruies" -ItemDataBase_ItemDefinitions_271:: "A mighty sword seeking for it's owner" -ItemDataBase_ItemDefinitions_272:: "Gain additional melee damage equal to the last instance of physical damage taken." -ItemDataBase_ItemDefinitions_273:: "Grip of Sora" -ItemDataBase_ItemDefinitions_274:: "Look, a porcupine! -Sora" -ItemDataBase_ItemDefinitions_275:: "Multishot drains {0} less energy and shoots +4 projectiles. Additional projectiles do not increase the cost of multishot" -ItemDataBase_ItemDefinitions_276:: "Ancient Greatbow" -ItemDataBase_ItemDefinitions_277:: "A massive and slow bow, deals extra damage" -ItemDataBase_ItemDefinitions_278:: "Phoenix's Death" -ItemDataBase_ItemDefinitions_279:: "Ignites enemies on hit" -ItemDataBase_ItemDefinitions_280:: "Soulstring" -ItemDataBase_ItemDefinitions_281:: "A massive and slow bow" -ItemDataBase_ItemDefinitions_282:: "Blood infused arrow now deals additional {0} points of damage per health consumed" -ItemDataBase_ItemDefinitions_283:: "Greatbow" -ItemDataBase_ItemDefinitions_284:: "Withered Crown" -ItemDataBase_ItemDefinitions_285:: "Worn by Hazard." -ItemDataBase_ItemDefinitions_286:: "A single cast of blood infused arrow affects {0} more projectiles" -ItemDataBase_ItemDefinitions_287:: "Novice Magic Caster's Bracers" -ItemDataBase_ItemDefinitions_288:: "Ranger's Bracers" -ItemDataBase_ItemDefinitions_289:: "Swordsman's Bracers" -ItemDataBase_ItemDefinitions_290:: "Healer's Bracers" -ItemDataBase_ItemDefinitions_291:: "Novice Magic Caster's Gloves" -ItemDataBase_ItemDefinitions_292:: "Ranger's Gloves" -ItemDataBase_ItemDefinitions_293:: "Swordsman's Gloves" -ItemDataBase_ItemDefinitions_294:: "Healer's Gloves" -ItemDataBase_ItemDefinitions_295:: "Fate Gloves" -ItemDataBase_ItemDefinitions_296:: "Fate Boots" -ItemDataBase_ItemDefinitions_297:: "Greed" -ItemDataBase_ItemDefinitions_298:: "Automatically casts wide reach every second" -ItemDataBase_ItemDefinitions_299:: "Titanium Leggins" -ItemDataBase_ItemDefinitions_300:: "Heavily armored leg protection. Suffers from the same weaknesses as spartan armor." -ItemDataBase_ItemDefinitions_301:: "Iron Gauntlet" -ItemDataBase_ItemDefinitions_302:: "Magefist" -ItemDataBase_ItemDefinitions_303:: "Gloves that amplify magic" -ItemDataBase_ItemDefinitions_304:: "Spells deal double damage but have double the energy cost" -ItemDataBase_ItemDefinitions_305:: "Armored Boots" -ItemDataBase_ItemDefinitions_306:: "Heavily armored, resistant to damage boots." -ItemDataBase_ItemDefinitions_307:: "Broken Protector" -ItemDataBase_ItemDefinitions_308:: "This shield failed to protect those behind it." -ItemDataBase_ItemDefinitions_309:: "Forbidden Scroll" -ItemDataBase_ItemDefinitions_310:: "Too powerful to be kept." -ItemDataBase_ItemDefinitions_311:: "Doom Pauldrons" -ItemDataBase_ItemDefinitions_312:: "Despite the cool name, they are completely normal pair of shoulder armor." -ItemDataBase_ItemDefinitions_313:: "Wind armor" -ItemDataBase_ItemDefinitions_314:: "Run fast like the wind" -ItemDataBase_ItemDefinitions_315:: "Upon dodging an attack, gain {0} movement speed, {1} damage, {2} armor, and heal for {3} of your maximum health" -ItemDataBase_ItemDefinitions_316:: "Crusader Helmet" -ItemDataBase_ItemDefinitions_317:: "You're talking mad shit for someone within crusading distance" -ItemDataBase_ItemDefinitions_318:: "Hood" -ItemDataBase_ItemDefinitions_319:: "Hats provide usefull stat bonuses" -ItemDataBase_ItemDefinitions_320:: "The Spark of Light in The Darkness" -ItemDataBase_ItemDefinitions_321:: "Magic Scroll of great quality" -ItemDataBase_ItemDefinitions_322:: "Written in a language i canno't understand. Decyphering this text is impossible, so is the full utilization of the scroll." -ItemDataBase_ItemDefinitions_323:: "If a black hole hits {0} or more enemies during it's lifetime, a ball lightning is summoned after it ends." -ItemDataBase_ItemDefinitions_324:: "Purgatory" -ItemDataBase_ItemDefinitions_325:: "Golden ring with a bone chilling feel about it. This thing will only bring harm, but not to the wearer" -ItemDataBase_ItemDefinitions_326:: "Ring made of Netherrite" -ItemDataBase_ItemDefinitions_327:: "Purge increases all of your damage based on missing health. Up to {0}" -ItemDataBase_ItemDefinitions_328:: "Eruption" -ItemDataBase_ItemDefinitions_329:: "Incarnation of devastation" -ItemDataBase_ItemDefinitions_330:: "Headshots cause explosions" -ItemDataBase_ItemDefinitions_331:: "Archangel" -ItemDataBase_ItemDefinitions_332:: "Spread the goodness" -ItemDataBase_ItemDefinitions_333:: "Shooting another player causes them to be greatly empowered for {0} seconds" -ItemDataBase_ItemDefinitions_334:: "The Executioner" -ItemDataBase_ItemDefinitions_335:: "A sword for decapitating" -ItemDataBase_ItemDefinitions_336:: "Moon Cuirass" -ItemDataBase_ItemDefinitions_337:: "A piece of armor designed for an archer. " -ItemDataBase_ItemDefinitions_338:: "Landing a headshot with an arrow without the homing effect of seeking arrow at a distance greater than {0} feet deals tenfold damage, and hits the enemy two extra times" -ItemDataBase_ItemDefinitions_339:: "Thornmail" -ItemDataBase_ItemDefinitions_340:: "Spiked death on the outside, really comfy on the inside" -ItemDataBase_ItemDefinitions_341:: "Thorns deal double damage" -ItemDataBase_ItemDefinitions_342:: "Rusty Polearm" -ItemDataBase_ItemDefinitions_343:: "Used by the Ubersreik Five" -ItemDataBase_ItemDefinitions_344:: "Giant Polearm" -ItemDataBase_ItemDefinitions_345:: "Used by the Sir Kruber" -ItemDataBase_ItemDefinitions_346:: "Crude Feather" -ItemDataBase_ItemDefinitions_347:: "Materials can be put inside empty sockets to add stats to items" -ItemDataBase_ItemDefinitions_348:: "Soft Feather" -ItemDataBase_ItemDefinitions_349:: "Ornate Feather" -ItemDataBase_ItemDefinitions_350:: "Wonderful Feather" -ItemDataBase_ItemDefinitions_351:: "White Crow's Feather" -ItemDataBase_ItemDefinitions_352:: "Reef Shark" -ItemDataBase_ItemDefinitions_353:: "Tiger Shark Tooth" -ItemDataBase_ItemDefinitions_354:: "Whale Shark Tooth" -ItemDataBase_ItemDefinitions_355:: "Great White Shark Tooth" -ItemDataBase_ItemDefinitions_356:: "Megalodon's Tooth" -ItemDataBase_ItemDefinitions_357:: "Uncut Sapphire" -ItemDataBase_ItemDefinitions_358:: "Clear Sapphire" -ItemDataBase_ItemDefinitions_359:: "Shiny Sapphire" -ItemDataBase_ItemDefinitions_360:: "Enchanted Sapphire" -ItemDataBase_ItemDefinitions_361:: "Celestial Sapphire" -ItemDataBase_ItemDefinitions_362:: "Uncut Moonstone" -ItemDataBase_ItemDefinitions_363:: "Clear Moonstone" -ItemDataBase_ItemDefinitions_364:: "Shiny Moonstone" -ItemDataBase_ItemDefinitions_365:: "Enchanted Moonstone" -ItemDataBase_ItemDefinitions_366:: "Celestial Moonstone" -ItemDataBase_ItemDefinitions_367:: "Lead Ore" -ItemDataBase_ItemDefinitions_368:: "Vanadium Ore" -ItemDataBase_ItemDefinitions_369:: "Titanium Ore" -ItemDataBase_ItemDefinitions_370:: "Chromium Ore" -ItemDataBase_ItemDefinitions_371:: "Tungsten Ore" -ItemDataBase_ItemDefinitions_372:: "Knife on a stick" -ItemDataBase_ItemDefinitions_373:: "Kasper named this item, his fault" -ItemDataBase_ItemDefinitions_374:: "Fists of Nails" -ItemDataBase_ItemDefinitions_375:: "Swiss sheese makers" -ItemDataBase_ItemDefinitions_376:: "Gain {0} thorns per vitality" -ItemDataBase_ItemDefinitions_377:: "Cargo Shorts MK2" -ItemDataBase_ItemDefinitions_378:: "Deepest pockets out there" -ItemDataBase_ItemDefinitions_379:: "Improved cargo pants. Twice as many pockets, and since they didnt fit on the outside, they are inside. They are still ugly as hell tho" -ItemDataBase_ItemDefinitions_380:: "Aezyn" -ItemDataBase_ItemDefinitions_381:: "Enchanted with magic as strong as power swing. It's purpose? Hit harder." -ItemDataBase_ItemDefinitions_382:: "Magic arrow damage scaling is increased by {0}" -ItemDataBase_ItemDefinitions_383:: "Punny's Reflective Ring" -ItemDataBase_ItemDefinitions_384:: "Magic arrow is shot in volleys. This effect can stack." -ItemDataBase_ItemDefinitions_385:: "Eyepatch" -ItemDataBase_ItemDefinitions_386:: "A wise man once said:" -ItemDataBase_ItemDefinitions_387:: "Everyone thinks I'm just a one-eyed bloody monster, god damnit... (sobbing)" -ItemDataBase_ItemDefinitions_388:: "Explosion damage is also applied when performing jump attacks" -ItemDataBase_ItemDefinitions_389:: "Javelin" -ItemDataBase_ItemDefinitions_390:: "Warplate" -ItemDataBase_ItemDefinitions_391:: "Enchanted with the power of the GOD's armor. It's purpose? Hit harder, daddy." -ItemDataBase_ItemDefinitions_392:: "Strength comes from the power of will, the stronger the will the stronger you are" -ItemDataBase_ItemDefinitions_393:: "Torso of Strength" -ItemDataBase_ItemDefinitions_394:: "Demoman's Vest" -ItemDataBase_ItemDefinitions_395:: "What makes me a good demoman? If I were a bad demoman, I wouldn't be sittin' here discussin' it with you, now would I?! LET'S DO IT! Not one of you's gonna survive this! One crossed wire, one wayward pinch of potassium chlorate, one errant twitch, and KA-BLOOIE! I got a manky eye. I'm a black Scottish cyclops. They got more fecking sea monsters in the great Lochett Ness than they got the likes of me. So! T'all you fine dandies, so proud, so cocksure, prancin' about with your heads full of eyeballs... come and get me, I say! I'll be waitin' on you with a whiff of the old brimstone! I'm a Grimm bloody fable with an unhappy bloody end! Oh, they're going to have to glue you back together...IN HELL!" -ItemDataBase_ItemDefinitions_396:: "Brawler's Gloves" -ItemDataBase_ItemDefinitions_397:: "Nail Gloves" -ItemDataBase_ItemDefinitions_398:: "Enchanted with the power of penetration. It's purpose? Hit harder." -ItemDataBase_ItemDefinitions_399:: "Hand-held Ballista" -ItemDataBase_ItemDefinitions_400:: "Kuldars's Scarf" -ItemDataBase_ItemDefinitions_401:: "Strength comes from the power of will" -ItemDataBase_ItemDefinitions_402:: "Sword Devil's Scarf" -ItemDataBase_ItemDefinitions_403:: "Peasant's Scarf" -ItemDataBase_ItemDefinitions_404:: "Bombastinc Choker" -ItemDataBase_ItemDefinitions_405:: "Explosive Touch" -ItemDataBase_ItemDefinitions_406:: "Enchanted with the power of the explosions armor. It's purpose? Become the true explosion master" -ItemDataBase_ItemDefinitions_407:: "Strength comes from the power of will, the stronger the will the stronger the explosion" -ItemDataBase_ItemDefinitions_408:: "Volatile Bracers" -ItemDataBase_ItemDefinitions_409:: "Volatile Helmet" -ItemDataBase_ItemDefinitions_410:: "Gunpowder filled socks" -ItemDataBase_ItemDefinitions_411:: "Red Skirt" -ItemDataBase_ItemDefinitions_412:: "Gunpowder Boxers" -ItemDataBase_ItemDefinitions_413:: "Jihad Vest" -ItemDataBase_ItemDefinitions_414:: "Ring of Fortune" -ItemDataBase_ItemDefinitions_415:: "Mana Ring" -ItemDataBase_ItemDefinitions_416:: "Life Ring" -ItemDataBase_ItemDefinitions_417:: "Moritz's Gear" -ItemDataBase_ItemDefinitions_418:: "Band of Hurting" -ItemDataBase_ItemDefinitions_419:: "A ring for a warrior" -ItemDataBase_ItemDefinitions_420:: "Straw Hat" -ItemDataBase_ItemDefinitions_421:: "Rusty Javelin" -ItemDataBase_ItemDefinitions_422:: "Star Robe" -ItemDataBase_ItemDefinitions_423:: "Anger" -ItemDataBase_ItemDefinitions_424:: "Downscaled version of Greatsword Rage, made to be wielded by flimsy wizards" -ItemDataBase_ItemDefinitions_425:: "Increases maximum stacks of frenzy by {0}" -ItemDataBase_ItemDefinitions_426:: "Yuki-Onna Strides" -ItemDataBase_ItemDefinitions_427:: "Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by {0}" -ItemDataBase_ItemDefinitions_428:: "Boots looted off a snow demon" -ItemDataBase_ItemDefinitions_429:: "Increses snowstorm damage by {0}" -ItemDataBase_ItemDefinitions_430:: "Yuki-Onna Greaves" -ItemDataBase_ItemDefinitions_431:: "Yuki-Onna Kimono" -ItemDataBase_ItemDefinitions_432:: "Yuki-Onna's Headdress" -ItemDataBase_ItemDefinitions_433:: "Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by {0} and damage is increased by {1}" -ItemDataBase_ItemDefinitions_434:: "Lama Mega's Blood Bag" -ItemDataBase_ItemDefinitions_435:: "Melee hits cause enemies to bleed for {0} of your health as damage for {1} seconds" -ItemDataBase_ItemDefinitions_436:: "Socket Drill" -ItemDataBase_ItemDefinitions_437:: "A convienient one use tool" -ItemDataBase_ItemDefinitions_438:: "What's a drill doing here in a place full of primitive tribes?" -ItemDataBase_ItemDefinitions_439:: "Adds one socket to an item, unless the item can't have any more sockets." -ItemDataBase_ItemDefinitions_440:: "Moonwalkers" -ItemDataBase_ItemDefinitions_441:: "Cha cha real smooth." -ItemDataBase_ItemDefinitions_442:: "Inverts movement" -ItemDataBase_ItemDefinitions_443:: "Rabbit Ears Hairband" -ItemDataBase_ItemDefinitions_444:: "Cute" -ItemDataBase_ItemDefinitions_445:: "Bunny Ears Hairband" -ItemDataBase_ItemDefinitions_446:: "Iron plate full of holes" -ItemDataBase_ItemDefinitions_447:: "The integrity of this item is questionable" -ItemDataBase_ItemDefinitions_448:: "Small Tribal Necklace" -ItemDataBase_ItemDefinitions_449:: "Increases maximum stacks of frenzy by {0}" -ItemDataBase_ItemDefinitions_450:: "Tribal Necklace" -ItemDataBase_ItemDefinitions_451:: "Increases maximum stacks of frenzy by {0}" -ItemDataBase_ItemDefinitions_452:: "Warlord Necklace" -ItemDataBase_ItemDefinitions_453:: "Increases maximum stacks of frenzy by {0}" -ItemDataBase_ItemDefinitions_454:: "Travel Band" -ItemDataBase_ItemDefinitions_455:: "The distance of blink is increased by {0} feet" -ItemDataBase_ItemDefinitions_456:: "Destroyed Void Shard" -ItemDataBase_ItemDefinitions_457:: "Only a fraction of its previous might remains" -ItemDataBase_ItemDefinitions_458:: "Decrease the cooldown of one ability by {0} second whenever you hit something with melee or ranged attack." -ItemDataBase_ItemDefinitions_459:: "Famine Hammer" -ItemDataBase_ItemDefinitions_460:: "Chance to weaken enemies, causing them to take more damage from all attacks, is increased by {0}" -ItemDataBase_ItemDefinitions_461:: "Curse Hammer" -ItemDataBase_ItemDefinitions_462:: "Omnious Weapon" -ItemDataBase_ItemDefinitions_463:: "Chance to weaken enemies, causing them to take more damage from all attacks, is increased by {0}" -ItemDataBase_ItemDefinitions_464:: "Smasher" -ItemDataBase_ItemDefinitions_465:: "Smash damage is increased tripled" -ItemDataBase_ItemDefinitions_466:: "Vampiric Band" -ItemDataBase_ItemDefinitions_467:: "Gain {0} stamina on ranged and melee hit or double that amount on critical hits" -ItemDataBase_ItemDefinitions_468:: "Vampire Ring" -ItemDataBase_ItemDefinitions_469:: "Gain {0} stamina on ranged and melee hit or double that amount on critical hits" -ItemDataBase_ItemDefinitions_470:: "Tricksters Scarf" -ItemDataBase_ItemDefinitions_471:: "Magic arrow shoots {0} additional arrow." -ItemDataBase_ItemDefinitions_472:: "Magus' Necktie" -ItemDataBase_ItemDefinitions_473:: "Magic arrow shoots {0} additional arrows." -ItemDataBase_ItemDefinitions_474:: "Discounted Knockoff Magic Quiver" -ItemDataBase_ItemDefinitions_475:: "There's a {0} increased chance to not consume ammo when firing a projectile." -ItemDataBase_ItemDefinitions_476:: "Magic Quiver" -ItemDataBase_ItemDefinitions_477:: "There's a {0} increased chance to not consume ammo when firing a projectile." -ItemDataBase_ItemDefinitions_478:: "Improved Magic Quiver" -ItemDataBase_ItemDefinitions_479:: "There's a {0} increased chance to not consume ammo when firing a projectile." -ItemDataBase_ItemDefinitions_480:: "Factory Quiver" -ItemDataBase_ItemDefinitions_481:: "There's a {0} increased chance to not consume ammo when firing a projectile." -ItemDataBase_ItemDefinitions_482:: "Enzyme STR/34" -ItemDataBase_ItemDefinitions_483:: "A substance which results in surprising changes to gear" -ItemDataBase_ItemDefinitions_484:: "Changes Vitality, Agility or Intelligence stat on an item to Strength or changes Ranged or Spell damage stat to Melee Damage" -ItemDataBase_ItemDefinitions_485:: "Enzyme INT/33" -ItemDataBase_ItemDefinitions_486:: "Changes Vitality, Agility or Strength stat on an item to Intelligence or changes Ranged or Melee damage stat to Spell Damage" -ItemDataBase_ItemDefinitions_487:: "Enzyme AGI/39" -ItemDataBase_ItemDefinitions_488:: "Changes Vitality, Intelligence or Strength stat on an item to Agility or changes Melee or Spell damage stat to Ranged Damage" -ItemDataBase_ItemDefinitions_489:: "Enzyme VIT/449" -ItemDataBase_ItemDefinitions_490:: "Changes Agility, Intelligence or Strength stat on an item to Vitality" -ItemDataBase_ItemDefinitions_491:: "Stomach Acid" -ItemDataBase_ItemDefinitions_492:: "Removes all stats with negative values from an item" -ItemDataBase_ItemDefinitions_493:: "Elite Stomach Acid" -ItemDataBase_ItemDefinitions_494:: "Changes negative stat values into positive values on an item" -ItemDataBase_ItemDefinitions_495:: "Crimson Solution" -ItemDataBase_ItemDefinitions_496:: "Upgrades item of any rarity to one of the same type but of Legendary rarity" -ItemDataBase_ItemDefinitions_497:: "Weak Armor Hardening Mixture" -ItemDataBase_ItemDefinitions_498:: "Adds Armor Stat to a piece of equipment if the item does not already have it" -ItemDataBase_ItemDefinitions_499:: "Upgraded Armor Hardening Mixture" -ItemDataBase_ItemDefinitions_500:: "Adds Damage Reduction Stat to a piece of equipment if the item does not already have it" -ItemDataBase_ItemDefinitions_501:: "Chaos Water" -ItemDataBase_ItemDefinitions_502:: "Rerolls all stats on an item of rarity no higher than orange" -ItemDataBase_ItemDefinitions_503:: "Upgraded Chaos Water" -ItemDataBase_ItemDefinitions_504:: "Rerolls all stats on an item of any rarity" -ItemDataBase_ItemDefinitions_505:: "Gun Blade" -ItemDataBase_ItemDefinitions_506:: "Increases pistol damage by {0}" -ItemDataBase_ItemDefinitions_507:: "Sharpshooter's Axe" -ItemDataBase_ItemDefinitions_508:: "Increases pistol headshot chance by {0} and pistol damage by {1}" -ItemDataBase_ItemDefinitions_509:: "Shield Blade" -ItemDataBase_ItemDefinitions_510:: "So large can be used as a shield" -ItemDataBase_ItemDefinitions_511:: "A normal human cannot lift this weapon." -ItemDataBase_ItemDefinitions_512:: "Blunt Blade for Bashing Skulls" -ItemDataBase_ItemDefinitions_513:: "Bash damage debuff on enemies is increased by {0}" -ItemDataBase_ItemDefinitions_514:: "Madman's Legacy" -ItemDataBase_ItemDefinitions_515:: "Frenzy damage per stack is increased by {0}" -ItemDataBase_ItemDefinitions_516:: "Buckler" -ItemDataBase_ItemDefinitions_517:: "Pyromancy Mask" -ItemDataBase_ItemDefinitions_518:: "Ignited enemies burn for {0} longer." -ItemDataBase_ItemDefinitions_519:: "Ember Mask" -ItemDataBase_ItemDefinitions_520:: "Ignited enemies burn for {0} longer and fire ticks thrice as fast." -ItemDataBase_ItemDefinitions_521:: "Flame Pauldrons" -ItemDataBase_ItemDefinitions_522:: "Firebolt costs {0} additional energy to cast and its damage scaling is increased by {1}" -ItemDataBase_ItemDefinitions_523:: "Ancient Scroll" -ItemDataBase_ItemDefinitions_524:: "Guide on Tearing Spacetime" -ItemDataBase_ItemDefinitions_525:: "Blink creates an explosion at the exit point, and the damage of the explosion is increased by velocity and the radius is increased by the distance of blink" -ItemDataBase_ItemDefinitions_526:: "300th Spear" -ItemDataBase_ItemDefinitions_527:: "Stone Pauldrons" -ItemDataBase_ItemDefinitions_528:: "All damage increased by {0}" -ItemDataBase_ItemDefinitions_529:: "Iron Shoulder Pads" -ItemDataBase_ItemDefinitions_530:: "All damage increased by {0}" -ItemDataBase_ItemDefinitions_531:: "Steel Shoulder Pads" -ItemDataBase_ItemDefinitions_532:: "All damage increased by {0}" -ItemDataBase_ItemDefinitions_533:: "Battle scarred Shoulder Pads" -ItemDataBase_ItemDefinitions_534:: "All damage increased by {0}" -ItemDataBase_ItemDefinitions_535:: "Mystery Shoulder Pads" -ItemDataBase_ItemDefinitions_536:: "All damage increased by {0}" -ItemDataBase_ItemDefinitions_537:: "Stone Shield" -ItemDataBase_ItemDefinitions_538:: "Iron Shield" -ItemDataBase_ItemDefinitions_539:: "Steel Tower Shield" -ItemDataBase_ItemDefinitions_540:: "Guardian" -ItemDataBase_ItemDefinitions_541:: "Mystery Shield" -ItemDataBase_ItemDefinitions_542:: "Light Boot" -ItemDataBase_ItemDefinitions_543:: "Iron Boots" -ItemDataBase_ItemDefinitions_544:: "Steel Boots" -ItemDataBase_ItemDefinitions_545:: "Threads" -ItemDataBase_ItemDefinitions_546:: "Mystery Boots" -ItemDataBase_ItemDefinitions_547:: "Wraps" -ItemDataBase_ItemDefinitions_548:: "Steel Gauntlet" -ItemDataBase_ItemDefinitions_549:: "Titanium Gauntlet" -ItemDataBase_ItemDefinitions_550:: "Mystery Gauntlet" -ItemDataBase_ItemDefinitions_551:: "Leather Tasset" -ItemDataBase_ItemDefinitions_552:: "Iron Tasset" -ItemDataBase_ItemDefinitions_553:: "Steel Tasset" -ItemDataBase_ItemDefinitions_554:: "Black Steel Leggins" -ItemDataBase_ItemDefinitions_555:: "Mystery Leggins" -ItemDataBase_ItemDefinitions_556:: "Leather Vest" -ItemDataBase_ItemDefinitions_557:: "Iron Breastplate" -ItemDataBase_ItemDefinitions_558:: "Steel Breastplate" -ItemDataBase_ItemDefinitions_559:: "Silver Armor" -ItemDataBase_ItemDefinitions_560:: "Mystery Breastplate" -ItemDataBase_ItemDefinitions_561:: "Cloth Band" -ItemDataBase_ItemDefinitions_562:: "Iron Wristguard" -ItemDataBase_ItemDefinitions_563:: "Steel Wristguard" -ItemDataBase_ItemDefinitions_564:: "Baron Wristguards" -ItemDataBase_ItemDefinitions_565:: "Mystery Wristguards" -ItemDataBase_ItemDefinitions_566:: "Iron Helmet" -ItemDataBase_ItemDefinitions_567:: "Steel Helmet" -ItemDataBase_ItemDefinitions_568:: "Armored Hood" -ItemDataBase_ItemDefinitions_569:: "Mystery Helmet" -ItemDataBase_ItemDefinitions_570:: "Yorium's Gaze" -ItemDataBase_ItemDefinitions_571:: "SET PIECE. Melee weapon range is increased by {0}, attack cost in stamina is halved." -ItemDataBase_ItemDefinitions_572:: "Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by {0} seconds\n4 Pieces - Each second of berserk being in effect increases damage by {1}.\n5 Pieces - For the first {2} seconds of Berserk attack speed increases by {3} per second, and lasts till the end of the spell's duration." -ItemDataBase_ItemDefinitions_573:: "Yorium's Ruthlessness" -ItemDataBase_ItemDefinitions_574:: "Yorium's Burden" -ItemDataBase_ItemDefinitions_575:: "Yorium's Resolve" -ItemDataBase_ItemDefinitions_576:: "Atomic Augmentation" -ItemDataBase_ItemDefinitions_577:: "Yorium's Assault" -ItemDataBase_ItemDefinitions_578:: "Undying Promise" -ItemDataBase_ItemDefinitions_579:: "Resist lethal damage on a {0} minute cooldown" -ItemDataBase_ItemDefinitions_581:: "Snap freeze damage scaling is increased by {0} and the slow duration is increased by {1} seconds" -ItemDataBase_ItemDefinitions_582:: "If equipped on a weapon, increases ranged damage by " -ItemDataBase_ItemDefinitions_583:: "If equipped on boots, increases movement speed by " -ItemDataBase_ItemDefinitions_584:: "If equipped on a helmet, increases critical hit chance by " -ItemDataBase_ItemDefinitions_585:: "If equipped on accessories, increases ranged armor piercing by " -ItemDataBase_ItemDefinitions_586:: "If equipped in other slots, increases agility by " -ItemDataBase_ItemDefinitions_587:: "If equipped on a weapon, increases melee damage by " -ItemDataBase_ItemDefinitions_588:: "If equipped on boots, decreases damage taken by " -ItemDataBase_ItemDefinitions_589:: "If equipped on a helmet, increases attack speed by " -ItemDataBase_ItemDefinitions_590:: "If equipped on accessories, increases melee armor piercing by " -ItemDataBase_ItemDefinitions_591:: "If equipped in other slots, increases strength by " -ItemDataBase_ItemDefinitions_592:: "If equipped on a weapon, increases magic damage by " -ItemDataBase_ItemDefinitions_593:: "If equipped on boots, decreases spell cost by " -ItemDataBase_ItemDefinitions_594:: "If equipped on a helmet, decreases spell cooldown by " -ItemDataBase_ItemDefinitions_595:: "If equipped on accessories, increases energy on hit by " -ItemDataBase_ItemDefinitions_596:: "If equipped in other slots, increases intelligence by " -ItemDataBase_ItemDefinitions_597:: "If equipped on a weapon, increases all healing by " -ItemDataBase_ItemDefinitions_598:: "If equipped on boots, increases magic find by " -ItemDataBase_ItemDefinitions_599:: "If equipped on a helmet, increases experience gained by " -ItemDataBase_ItemDefinitions_600:: "If equipped on accessories, increases life per second by " -ItemDataBase_ItemDefinitions_601:: "If equipped in other slots, increases vitality by " -ItemDataBase_ItemDefinitions_602:: "If equipped on a weapon, increases crit damage by " -ItemDataBase_ItemDefinitions_603:: "If equipped on boots, increases resistance to magic by " -ItemDataBase_ItemDefinitions_604:: "If equipped on a helmet, increases health by " -ItemDataBase_ItemDefinitions_605:: "If equipped on accessories, increases thorns by " -ItemDataBase_ItemDefinitions_606:: "If equipped in other slots, increases armor by " -ItemDataBase_ItemDefinitions_607:: "Firebolt deals increased damage" -ItemDataBase_ItemDefinitions_608:: "\nWarcry gives damage resistance." -ItemDataBase_ItemDefinitions_609:: "Devil Dancers" -ItemDataBase_ItemDefinitions_610:: "When consuming frenzy stacks, gain 5% crit chance for 10 seconds for every stack consumed. Gain 5% attack speed per frenzy stack active." -ItemDataBase_ItemDefinitions_611:: "Call of the Ancients" -ItemDataBase_ItemDefinitions_612:: "Berserk increases all damage by additional {0}" -ItemDataBase_ItemDefinitions_613:: "Berserker's Wrath" -ItemDataBase_ItemDefinitions_614:: "Viking Amulet" -ItemDataBase_ItemDefinitions_615:: "Increases attack and movement speed during berserk by {0}" -ItemDataBase_ItemDefinitions_616:: "Pedant of Skallagrim" -ItemDataBase_ItemDefinitions_617:: "Wristguards of The Sanctuary Keeper" -ItemDataBase_ItemDefinitions_618:: "Allies inside Sanctuary have {0} increased cooldown rate and attacks use {1} less resources" +ItemDatabase_StatDefinitions_1:: "Health" +ItemDatabase_StatDefinitions_2:: "Energy" +ItemDatabase_StatDefinitions_3:: "Health/sec" +ItemDatabase_StatDefinitions_4:: "Stamina/sec" +ItemDatabase_StatDefinitions_5:: "Energy regen" +ItemDatabase_StatDefinitions_6:: "Life regen" +ItemDatabase_StatDefinitions_7:: "Critical hit chance" +ItemDatabase_StatDefinitions_8:: "Life on hit" +ItemDatabase_StatDefinitions_9:: "Dodge chance" +ItemDatabase_StatDefinitions_10:: "Magic resistance" +ItemDatabase_StatDefinitions_11:: "Experience" +ItemDatabase_StatDefinitions_12:: "Spell damage" +ItemDatabase_StatDefinitions_13:: "Melee damage" +ItemDatabase_StatDefinitions_14:: "Ranged damage" +ItemDatabase_StatDefinitions_15:: "Base spell damage" +ItemDatabase_StatDefinitions_16:: "Base melee damage" +ItemDatabase_StatDefinitions_17:: "Base ranged damage" +ItemDatabase_StatDefinitions_18:: "Energy/agility" +ItemDatabase_StatDefinitions_19:: "Health/vitality" +ItemDatabase_StatDefinitions_20:: "Spell damage/intelligence" +ItemDatabase_StatDefinitions_21:: "Melee damage/strength" +ItemDatabase_StatDefinitions_22:: "Recovery" +ItemDatabase_StatDefinitions_23:: "PERMANENT PERK POINTS" +ItemDatabase_StatDefinitions_24:: " / " +ItemDatabase_StatDefinitions_25:: "EXPERIENCE" +ItemDatabase_StatDefinitions_26:: "Weapon length" +ItemDatabase_StatDefinitions_27:: "Attack cost reduction" +ItemDatabase_StatDefinitions_28:: "Spell cost to stamina" +ItemDatabase_StatDefinitions_29:: "Energy/sec" +ItemDatabase_StatDefinitions_30:: "Ranged damage/agility" +ItemDatabase_StatDefinitions_31:: "Melee armor piercing" +ItemDatabase_StatDefinitions_32:: "Ranged armor piercing" +ItemDatabase_StatDefinitions_33:: "Armor piercing" +ItemDatabase_StatDefinitions_34:: "Refund points" +ItemDatabase_StatDefinitions_35:: "Headshot damage" +ItemDatabase_StatDefinitions_36:: "Fire damage" +ItemDatabase_StatDefinitions_37:: "Chance on hit to slow" +ItemDatabase_StatDefinitions_38:: "Chance on hit to bleed" +ItemDatabase_StatDefinitions_39:: "Chance on hit to weaken" +ItemDatabase_StatDefinitions_40:: "Dynamite & bomb damage" +ItemDatabase_StatDefinitions_41:: "Spear damage" +ItemDatabase_StatDefinitions_42:: "Extra carried Sticks" +ItemDatabase_StatDefinitions_43:: "Extra carried Rocks" +ItemDatabase_StatDefinitions_44:: "Extra carried Ropes" +ItemDatabase_StatDefinitions_45:: " Soda: " +ItemDatabase_StatDefinitions_46:: "Booze: " +ItemDatabase_StatDefinitions_47:: "Extra carried Drinks" +ItemDatabase_StatDefinitions_48:: "Extra carried Food" +ItemDatabase_StatDefinitions_49:: "Black hole radius" +ItemDatabase_StatDefinitions_50:: "Black hole lifetime" +ItemDatabase_StatDefinitions_51:: "Black hole gravitational force" +ItemDatabase_StatDefinitions_52:: "Black hole damage" +ItemDatabase_StatDefinitions_53:: "Stun on hit" +ItemDatabase_StatDefinitions_54:: "Snap freeze Duration" +ItemDatabase_StatDefinitions_55:: "Raft speed" +ItemDatabase_StatDefinitions_56:: "Empty socket" +ItemDatabase_StatDefinitions_57:: "Socket: crit chance" +ItemDatabase_StatDefinitions_58:: "Socket: agility" +ItemDatabase_StatDefinitions_59:: "Socket: movement speed" +ItemDatabase_StatDefinitions_60:: "Socket: ranged damage" +ItemDatabase_StatDefinitions_61:: "Socket: ranged armor piercing" +ItemDatabase_StatDefinitions_62:: "Socket: attack speed" +ItemDatabase_StatDefinitions_63:: "Socket: strength" +ItemDatabase_StatDefinitions_64:: "Socket: damage reduction" +ItemDatabase_StatDefinitions_65:: "Socket: melee damage" +ItemDatabase_StatDefinitions_66:: "Socket: melee armor piercing" +ItemDatabase_StatDefinitions_67:: "Socket: cooldown reduction" +ItemDatabase_StatDefinitions_68:: "Socket: intelligence" +ItemDatabase_StatDefinitions_69:: "Socket: spell cost reduction" +ItemDatabase_StatDefinitions_70:: "Socket: spell damage" +ItemDatabase_StatDefinitions_71:: "Socket: energy on hit" +ItemDatabase_StatDefinitions_72:: "Socket: experience gain" +ItemDatabase_StatDefinitions_73:: "Socket: vitality " +ItemDatabase_StatDefinitions_74:: "Socket: magic find" +ItemDatabase_StatDefinitions_75:: "Socket: all healing" +ItemDatabase_StatDefinitions_76:: "Socket: life per second" +ItemDatabase_StatDefinitions_77:: "Socket: maximum health " +ItemDatabase_StatDefinitions_78:: "Socket: armor " +ItemDatabase_StatDefinitions_79:: "Socket: Resistance to magic" +ItemDatabase_StatDefinitions_80:: "Socket: crit damage" +ItemDatabase_StatDefinitions_81:: "Socket: thorns" +ItemDatabase_ItemDefinitions_1:: "Broken Flip-Flops" +ItemDatabase_ItemDefinitions_2:: "A pair of damaged shoes. Judging by their condition, i can imagine what happened to their owner." +ItemDatabase_ItemDefinitions_3:: "Worn by one of the passengers of the plane that Eric also flew in." +ItemDatabase_ItemDefinitions_4:: "Old Boots" +ItemDatabase_ItemDefinitions_5:: "A pair of old boots. They must have been lying here for ages." +ItemDatabase_ItemDefinitions_6:: "Found on the Peninsula, but judging by their condition, they belong neither to a plane passenger nor a cannibal." +ItemDatabase_ItemDefinitions_7:: "Damaged Leather Boots" +ItemDatabase_ItemDefinitions_8:: "A pair of leather boots. They look good and have only some scratches." +ItemDatabase_ItemDefinitions_9:: "They arrived to the Peninsula the same way Eric did. Since they were in a baggage, they avoided a lot of damage." +ItemDatabase_ItemDefinitions_10:: "Sturdy Leather Boots" +ItemDatabase_ItemDefinitions_11:: "A pair of leather boots. They are in a very good condition." +ItemDatabase_ItemDefinitions_12:: "They arrived to the Peninsula the same way Eric did. Eric found them undamaged in their original box. They still had a pricetag - $419,99." +ItemDatabase_ItemDefinitions_13:: "Damaged Army Boots" +ItemDatabase_ItemDefinitions_14:: "Sturdy, hard, resistant but damaged boots." +ItemDatabase_ItemDefinitions_15:: "They look modern, almost too modern for everything here." +ItemDatabase_ItemDefinitions_16:: "Army Boots" +ItemDatabase_ItemDefinitions_17:: "Sturdy, hard, resistant boots." +ItemDatabase_ItemDefinitions_18:: "Armsy Skin Footwear" +ItemDatabase_ItemDefinitions_19:: "Severed armsy legs, with all of their insides removed. All thats left is dried mutated skin." +ItemDatabase_ItemDefinitions_20:: "Armsy, the second heaviest of the mutants needs very resistant skin. It often drags its legs on the ground when it moves. The skin on their legs grew very thick, and has bone tissue mixed with skin tissue." +ItemDatabase_ItemDefinitions_21:: "Finger Warmer" +ItemDatabase_ItemDefinitions_22:: "A little glove to keep your fingers warm and cozy." +ItemDatabase_ItemDefinitions_23:: "Made of wool." +ItemDatabase_ItemDefinitions_24:: "Thick Rubber Glove" +ItemDatabase_ItemDefinitions_25:: "A glove that helps get a better grip." +ItemDatabase_ItemDefinitions_26:: "Tribal Glove" +ItemDatabase_ItemDefinitions_27:: "Offers medicore protection." +ItemDatabase_ItemDefinitions_28:: "Glove made out of thin bones, some may possibly be from a human." +ItemDatabase_ItemDefinitions_29:: "Tribe Leader Glove" +ItemDatabase_ItemDefinitions_30:: "A glove that offers little protection but a lot of offensive stats." +ItemDatabase_ItemDefinitions_31:: "A glove made of bones, some have engravings of crosses." +ItemDatabase_ItemDefinitions_32:: "Worn Shorts" +ItemDatabase_ItemDefinitions_33:: "Some protection for legs." +ItemDatabase_ItemDefinitions_34:: "Short, made out of cheap thin fabric, and on top of that they are damaged. But its better than nothing." +ItemDatabase_ItemDefinitions_35:: "Cargo Shorts" +ItemDatabase_ItemDefinitions_36:: "No protection at all but they allow to carry more items." +ItemDatabase_ItemDefinitions_37:: "They are ugly as hell tho" +ItemDatabase_ItemDefinitions_38:: "Passenger's Jacket" +ItemDatabase_ItemDefinitions_39:: "It's a little torn. " +ItemDatabase_ItemDefinitions_40:: "This jacket was worn by Preston A. the 34th passenger on the plane. Eric talked to him at the airport. Guy was odd, and now he's dead." +ItemDatabase_ItemDefinitions_41:: "Leather Jacket" +ItemDatabase_ItemDefinitions_42:: "Offers little protection" +ItemDatabase_ItemDefinitions_43:: "This jacket was in a baggage of one of the plane passengers" +ItemDatabase_ItemDefinitions_44:: "Boar Skin Armor" +ItemDatabase_ItemDefinitions_45:: "It's made from a skin of a huge individual. It's heavy and thick, and surely can protect from attacks of weaker enemies." +ItemDatabase_ItemDefinitions_46:: "Boar, one of the animals on the peninsula, is rather rare and it's skin is very durable." +ItemDatabase_ItemDefinitions_47:: "Crocodile Skin Armor" +ItemDatabase_ItemDefinitions_48:: "Plate armour" +ItemDatabase_ItemDefinitions_49:: "Bear Skin Armor" +ItemDatabase_ItemDefinitions_50:: "Archer's Gear" +ItemDatabase_ItemDefinitions_51:: "Hazard's Gear" +ItemDatabase_ItemDefinitions_52:: "Mysterious robe" +ItemDatabase_ItemDefinitions_53:: "Magic flows through the entirety of this object. It's made out of unknown material" +ItemDatabase_ItemDefinitions_54:: "Robe looks like it was created yesterday, but its older than the oldest of mankinds' civilizations. Simply looking at it sends chills down the spine." +ItemDatabase_ItemDefinitions_55:: "Empowers cataclysm. The vortex turns blue, damage is increased, freezes enemies " +ItemDatabase_ItemDefinitions_56:: "Rusty Longsword" +ItemDatabase_ItemDefinitions_57:: "A long, very heavy sword. Edge got dull over time. Still, it's in a condition that allows me to slice some enemies in half." +ItemDatabase_ItemDefinitions_58:: "The sword appears to be from medieval ages, through it's not. It was made a lot later. It never was used as a weapon in battles, because it was merely a decoration." +ItemDatabase_ItemDefinitions_59:: "Longsword" +ItemDatabase_ItemDefinitions_60:: "Sharp and long" +ItemDatabase_ItemDefinitions_61:: "The sword is in perfect contidion." +ItemDatabase_ItemDefinitions_62:: "Full Metal Sword" +ItemDatabase_ItemDefinitions_63:: "It's sooo big..." +ItemDatabase_ItemDefinitions_64:: "A normal human cannot lift this." +ItemDatabase_ItemDefinitions_65:: "The Leech" +ItemDatabase_ItemDefinitions_66:: "Hey where did my health g- oh it's back..." +ItemDatabase_ItemDefinitions_67:: "Smokey's Sacred Quiver" +ItemDatabase_ItemDefinitions_68:: "SmokeyTheBear died because he never used this item." +ItemDatabase_ItemDefinitions_69:: "Smokey was the friend of allmighty Hazard, who can materialize any kind of weapon at the snap of his fingers. Hazard remebered Smokey's favourite playstyle and he gave him this as a gift to purge the sh** out of mutants." +ItemDatabase_ItemDefinitions_70:: "Crossbows operate at {0} speed and deal {1} increased damage" +ItemDatabase_ItemDefinitions_71:: "Broken shield" +ItemDatabase_ItemDefinitions_72:: "Tower Shield" +ItemDatabase_ItemDefinitions_73:: "Broken Leather Shoulder Armor" +ItemDatabase_ItemDefinitions_74:: "Leather Shoulder Armor" +ItemDatabase_ItemDefinitions_75:: "Phase Pauldrons" +ItemDatabase_ItemDefinitions_76:: "The distance of blink is increased by {} meters, and blink now hits everything that you teleported through" +ItemDatabase_ItemDefinitions_77:: "MAGA Cap" +ItemDatabase_ItemDefinitions_78:: "Wearing this item channels the power of D.Trump to you" +ItemDatabase_ItemDefinitions_79:: "... or does it?" +ItemDatabase_ItemDefinitions_80:: "Hubble's Vision" +ItemDatabase_ItemDefinitions_81:: "Wearing this item empowers your black hole spell" +ItemDatabase_ItemDefinitions_82:: "Man, fuck gravity." +ItemDatabase_ItemDefinitions_83:: "Broken Loop" +ItemDatabase_ItemDefinitions_84:: "Loop" +ItemDatabase_ItemDefinitions_85:: "Toxic Ring" +ItemDatabase_ItemDefinitions_86:: " comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo." +ItemDatabase_ItemDefinitions_87:: "What the fuck did you just fucking say about me, you little bitch? I'll have you know I graduated top of my class in the Navy Seals, and I've been involved in numerous secret raids on Al-Quaeda, and I have over 300 confirmed kills. I am trained in gorilla warfare and I'm the top sniper in the entire US armed forces. You are nothing to me but just another target. I will wipe you the fuck out with precision the likes of which has never been seen before on this Earth, mark my fucking words. You think you can get away with saying that shit to me over the Internet? Think again, fucker. As we speak I am contacting my secret network of spies across the USA and your IP is being traced right now so you better prepare for the storm, maggot. The storm that wipes out the pathetic little thing you call your life. You're fucking dead, kid. I can be anywhere, anytime, and I can kill you in over seven hundred ways, and that's just with my bare hands. Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the United States Marine Corps and I will use it to its full extent to wipe your miserable ass off the face of the continent, you little shit. If only you could have known what unholy retribution your little \"clever\" comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo." +ItemDatabase_ItemDefinitions_88:: "Scarf" +ItemDatabase_ItemDefinitions_89:: "Damaged Bracer" +ItemDatabase_ItemDefinitions_90:: "Worn Bracer" +ItemDatabase_ItemDefinitions_91:: "Leather Bracer" +ItemDatabase_ItemDefinitions_92:: "Greater Mutated Heart" +ItemDatabase_ItemDefinitions_93:: "Can be consumed by right clicking it" +ItemDatabase_ItemDefinitions_94:: "Lesser Mutated Heart" +ItemDatabase_ItemDefinitions_95:: "Spiked ring" +ItemDatabase_ItemDefinitions_96:: "Armor piercing for either melee or ranged weapons" +ItemDatabase_ItemDefinitions_97:: "Piercer" +ItemDatabase_ItemDefinitions_98:: "Moon Boots" +ItemDatabase_ItemDefinitions_99:: "A pair of boots from the moon." +ItemDatabase_ItemDefinitions_100:: "It is said that the wearer will not take fall damage while wearing these boots and will jump like on the moon, I wouldn't trust it tough." +ItemDatabase_ItemDefinitions_101:: "Golden Ring of Strength" +ItemDatabase_ItemDefinitions_102:: "A Ring of ancient times." +ItemDatabase_ItemDefinitions_103:: "A Golden Ring that looks simple and elegant, yet it feels powerfull to the touch." +ItemDatabase_ItemDefinitions_104:: "Golden Ring of Vitality" +ItemDatabase_ItemDefinitions_105:: "Golden Ring of Agility" +ItemDatabase_ItemDefinitions_106:: "Golden Ring of Intelligence" +ItemDatabase_ItemDefinitions_107:: "Silver Ring of Strength" +ItemDatabase_ItemDefinitions_108:: "A Silver Ring that looks simple and elegant, yet it feels powerfull to the touch." +ItemDatabase_ItemDefinitions_109:: "Silver Ring of Vitality" +ItemDatabase_ItemDefinitions_110:: "Silver Ring of Agility" +ItemDatabase_ItemDefinitions_111:: "Silver Ring of Intelligence" +ItemDatabase_ItemDefinitions_112:: "Steel Ring of Strength" +ItemDatabase_ItemDefinitions_113:: "A Steel Ring that looks simple and elegant, yet it feels powerfull to the touch." +ItemDatabase_ItemDefinitions_114:: "Steel Ring of Vitality" +ItemDatabase_ItemDefinitions_115:: "Steel Ring of Agility" +ItemDatabase_ItemDefinitions_116:: "Steel Ring of Intelligence" +ItemDatabase_ItemDefinitions_117:: "The One Ring To Rule Them All" +ItemDatabase_ItemDefinitions_118:: "An Ancient magical Ring of great power." +ItemDatabase_ItemDefinitions_119:: "It looks like and ordinay ring, but a strange energy is surrounding it. The Ring is said to have been found inside a volcanic rock by an archeologist, who went mad and isolated himself on the peninsula many years ago. But that's just a fairy tale, ring?" +ItemDatabase_ItemDefinitions_120:: "Attracts unwanted attention of an unknown entity." +ItemDatabase_ItemDefinitions_121:: "Golden Locket of Strength" +ItemDatabase_ItemDefinitions_122:: "A Locket of ancient times." +ItemDatabase_ItemDefinitions_123:: "A Golden Locket that looks simple and elegant, yet it feels powerfull to the touch." +ItemDatabase_ItemDefinitions_124:: "Golden Locket of Vitality" +ItemDatabase_ItemDefinitions_125:: "Golden Locket of Agility" +ItemDatabase_ItemDefinitions_126:: "Golden Locket of Intelligence" +ItemDatabase_ItemDefinitions_127:: "Silver Locket of Strength" +ItemDatabase_ItemDefinitions_128:: "A Silver Locket that looks simple and elegant, yet it feels powerfull to the touch." +ItemDatabase_ItemDefinitions_129:: "Silver Locket of Vitality" +ItemDatabase_ItemDefinitions_130:: "Silver Locket of Agility" +ItemDatabase_ItemDefinitions_131:: "Silver Locket of Intelligence" +ItemDatabase_ItemDefinitions_132:: "Emerald Pendant of Strength" +ItemDatabase_ItemDefinitions_133:: "A Pendant of ancient times." +ItemDatabase_ItemDefinitions_134:: "An Emerald Pendant that looks simple and elegant, yet it feels powerfull to the touch." +ItemDatabase_ItemDefinitions_135:: "Emerald Pendant of Vitality" +ItemDatabase_ItemDefinitions_136:: "Emerald Pendant of Agility" +ItemDatabase_ItemDefinitions_137:: "Emerald Pendant of Intelligence" +ItemDatabase_ItemDefinitions_138:: "Diamond Pendant of Strength" +ItemDatabase_ItemDefinitions_139:: "A Diamond Pendant that looks simple and elegant, yet it feels powerfull to the touch." +ItemDatabase_ItemDefinitions_140:: "Diamond Pendant of Vitality" +ItemDatabase_ItemDefinitions_141:: "Diamond Pendant of Agility" +ItemDatabase_ItemDefinitions_142:: "Diamond Pendant of Intelligence" +ItemDatabase_ItemDefinitions_143:: "Armsy Finger Necklace" +ItemDatabase_ItemDefinitions_144:: "A Necklace decorated with armsy fingertips." +ItemDatabase_ItemDefinitions_145:: "A Necklace made from the fingertips of an armsy, yeilding it's raw power and strentgh." +ItemDatabase_ItemDefinitions_146:: "Virginia Heart Pendant" +ItemDatabase_ItemDefinitions_147:: "A Pendant of a petrified Virginia heart." +ItemDatabase_ItemDefinitions_148:: "A Pendant made from a petrified Virginia heart, yeilding it's love and Vitality." +ItemDatabase_ItemDefinitions_149:: "Cowman Toe Necklace" +ItemDatabase_ItemDefinitions_150:: "A Necklace decorated with cowman toes." +ItemDatabase_ItemDefinitions_151:: "A Necklace made from the fingertips of an armsy, yeilding it's speed and agility." +ItemDatabase_ItemDefinitions_152:: "Pendant of Perpetual Rebirth" +ItemDatabase_ItemDefinitions_153:: "A Pendant of a shrunken babyhead." +ItemDatabase_ItemDefinitions_154:: "A pedant of great power. Obtainable only from babies or crafting" +ItemDatabase_ItemDefinitions_155:: "decrease a random cooldown by {0} second whenever you hit something with melee or ranged attack." +ItemDatabase_ItemDefinitions_156:: "Megan's Locket" +ItemDatabase_ItemDefinitions_157:: "The Locket Megan wore." +ItemDatabase_ItemDefinitions_158:: "Megan wore this Locket, it has a picture of her mom in it." +ItemDatabase_ItemDefinitions_159:: "Relic Hammer" +ItemDatabase_ItemDefinitions_160:: "It's slow and weak." +ItemDatabase_ItemDefinitions_161:: "Slows on hit" +ItemDatabase_ItemDefinitions_162:: "Black Hammer" +ItemDatabase_ItemDefinitions_163:: "It's slow but with enough strength i can make it a very deadly tool" +ItemDatabase_ItemDefinitions_164:: "Potato Sack" +ItemDatabase_ItemDefinitions_165:: "Can be used as a quiver" +ItemDatabase_ItemDefinitions_166:: "Rabbit Skin Quiver" +ItemDatabase_ItemDefinitions_167:: "Hollow Log" +ItemDatabase_ItemDefinitions_168:: "It allows for faster drawing of arrow than a cloth quiver" +ItemDatabase_ItemDefinitions_169:: "Spellbound Quiver" +ItemDatabase_ItemDefinitions_170:: "Long Lost Quiver" +ItemDatabase_ItemDefinitions_171:: "Spell Scroll" +ItemDatabase_ItemDefinitions_172:: "Contains a lot of information on how to properly cast spells to achieve better results" +ItemDatabase_ItemDefinitions_173:: "Cloth Pants" +ItemDatabase_ItemDefinitions_174:: "Offer little protction" +ItemDatabase_ItemDefinitions_175:: "Rough Hide Leggins" +ItemDatabase_ItemDefinitions_176:: "Plate Leggins" +ItemDatabase_ItemDefinitions_177:: "Sage's Robes" +ItemDatabase_ItemDefinitions_178:: "Hammer Jammers" +ItemDatabase_ItemDefinitions_179:: "Damage of your smash attack is increased by {0}, hammer stun duration is doubled" +ItemDatabase_ItemDefinitions_180:: "Pirate Pants" +ItemDatabase_ItemDefinitions_181:: "Those pants are ligh and comfortable. They offer plenty of mobility but lack in protection." +ItemDatabase_ItemDefinitions_182:: "Hexed Pants of Mr M." +ItemDatabase_ItemDefinitions_183:: "They look like yoga pants but for a man the size of a wardrobe" +ItemDatabase_ItemDefinitions_184:: "Once upon a time there was a man who was in a basement and fed himself with nothing but nuggets. He got so obese that friends and family started worrying. Hazard noticed this man and cursed his pants to force him to excercise." +ItemDatabase_ItemDefinitions_185:: "While moving, energy regeneration and damage is increased by {0}. While standing still for longer than a second, you loose {1} of max health per second." +ItemDatabase_ItemDefinitions_186:: "Leather Mantle" +ItemDatabase_ItemDefinitions_187:: "A piece of cloth to give protection from " +ItemDatabase_ItemDefinitions_188:: "Shoulder Guards" +ItemDatabase_ItemDefinitions_189:: "Medium armor piece." +ItemDatabase_ItemDefinitions_190:: "Heavy armor" +ItemDatabase_ItemDefinitions_191:: "Heavy Shoulder Plates" +ItemDatabase_ItemDefinitions_192:: "Heavy armor piece. They offer great protection at the cost of attack speed and movement speed decrease" +ItemDatabase_ItemDefinitions_193:: "Etched Mantle" +ItemDatabase_ItemDefinitions_194:: "Those pauldrons empower wearer's combat skill" +ItemDatabase_ItemDefinitions_195:: "Assassins Pauldrons" +ItemDatabase_ItemDefinitions_196:: "Death Pact" +ItemDatabase_ItemDefinitions_197:: "Find the greatest strength on the border of life and death." +ItemDatabase_ItemDefinitions_198:: "Every attack you make decreases your health by {0} of max health. For every percent of missing health you gain {1} damage amplification. This damage cannot kill you." +ItemDatabase_ItemDefinitions_199:: "Maximale Qualitot" +ItemDatabase_ItemDefinitions_200:: "A platinum ring with the most expensive jewels engraved on it. It's quality is uncomparable." +ItemDatabase_ItemDefinitions_201:: "Heart of Purity" +ItemDatabase_ItemDefinitions_202:: "A object filled with both destructive and creative energy. Allows to re-assign all spent mutation points" +ItemDatabase_ItemDefinitions_203:: "This powerful relic contains so much power, that it can kill anything and force it to come back to life, resulting in it's rebirth." +ItemDatabase_ItemDefinitions_204:: "Can be consumed by right clicking it. " +ItemDatabase_ItemDefinitions_205:: "Round Shield" +ItemDatabase_ItemDefinitions_206:: "A sturdy shield made of wood and reinforced with iron." +ItemDatabase_ItemDefinitions_207:: "Old Buckler" +ItemDatabase_ItemDefinitions_208:: "An old shield." +ItemDatabase_ItemDefinitions_209:: "This item has a lot of scratches that look like they were made by something with sharp claws." +ItemDatabase_ItemDefinitions_210:: "Dark Oak Shield" +ItemDatabase_ItemDefinitions_211:: "Bone Shield" +ItemDatabase_ItemDefinitions_212:: "A shield made of bones, held together by thick steel wire." +ItemDatabase_ItemDefinitions_213:: "Dull Longsword" +ItemDatabase_ItemDefinitions_214:: "It's round on the edges" +ItemDatabase_ItemDefinitions_215:: "Iron Horn" +ItemDatabase_ItemDefinitions_216:: "When using Warcry, you and all allies recieve armor bonus equal to {0} of your armor" +ItemDatabase_ItemDefinitions_217:: "The Great Iron Horn" +ItemDatabase_ItemDefinitions_218:: "Horned Helmet" +ItemDatabase_ItemDefinitions_219:: "A viking helmet" +ItemDatabase_ItemDefinitions_220:: "Mask" +ItemDatabase_ItemDefinitions_221:: "Mask of Madness" +ItemDatabase_ItemDefinitions_222:: "Old Scroll" +ItemDatabase_ItemDefinitions_223:: "Wormhole Stabilizators" +ItemDatabase_ItemDefinitions_224:: "High-tech gear" +ItemDatabase_ItemDefinitions_225:: "Hazard remember to put some fucking lore in here, don't leave it like this!" +ItemDatabase_ItemDefinitions_226:: "Increases the duration of a portal by {0} seconds" +ItemDatabase_ItemDefinitions_227:: "Cripplers" +ItemDatabase_ItemDefinitions_228:: "Increases the duration of a magic arrow's negative effect by {0} seconds" +ItemDatabase_ItemDefinitions_229:: "Crossfire" +ItemDatabase_ItemDefinitions_230:: "Infused with powerful magic. This item is a dangerous tool of destruction." +ItemDatabase_ItemDefinitions_231:: "When hitting an enemy with a projectile, create a magic arrow pointed at the enemy and shoot it without using in energy. This effect may occur once every 2 seconds, but can be interval can be shortened with cooldown reduction." +ItemDatabase_ItemDefinitions_232:: "Scroll of Recovery" +ItemDatabase_ItemDefinitions_233:: "Recovers health and stamina" +ItemDatabase_ItemDefinitions_234:: "Tiara" +ItemDatabase_ItemDefinitions_235:: "A beautiful tiara " +ItemDatabase_ItemDefinitions_236:: "This tiara may not provide much protection, but it sure is pretty" +ItemDatabase_ItemDefinitions_237:: "Shiny" +ItemDatabase_ItemDefinitions_238:: "Chastity belt" +ItemDatabase_ItemDefinitions_239:: "Dodge those fukbois" +ItemDatabase_ItemDefinitions_240:: "This belt will stop those cheeky cannibals and armsies from getting into your pants" +ItemDatabase_ItemDefinitions_241:: " {0} damage reduction while sleeping" +ItemDatabase_ItemDefinitions_242:: "Ice Scroll" +ItemDatabase_ItemDefinitions_243:: "A spell surrounded by flying shards of ice, contains tramendous power of cold." +ItemDatabase_ItemDefinitions_244:: "Created at the top of the mountain." +ItemDatabase_ItemDefinitions_245:: "Motorboat Modification Blueprints" +ItemDatabase_ItemDefinitions_246:: "Sheet of paper that allows to turn any raft into a high speed. Increases carry amount and increases speed of rafts." +ItemDatabase_ItemDefinitions_247:: "Who did this lmao." +ItemDatabase_ItemDefinitions_248:: "Axe of Swiftness" +ItemDatabase_ItemDefinitions_249:: "Severer" +ItemDatabase_ItemDefinitions_250:: "Golden Axe of Fortune" +ItemDatabase_ItemDefinitions_251:: "Axe of Misfortune" +ItemDatabase_ItemDefinitions_252:: "Misfortunate are the ones on the recieving end. They will bleed a lot" +ItemDatabase_ItemDefinitions_253:: "Golden Ring" +ItemDatabase_ItemDefinitions_254:: "Golden Locket" +ItemDatabase_ItemDefinitions_255:: "Dull Axe" +ItemDatabase_ItemDefinitions_256:: "Precise Adjustments" +ItemDatabase_ItemDefinitions_257:: "Focus attack speed buff duration is increased by {0} seconds" +ItemDatabase_ItemDefinitions_258:: "Rage" +ItemDatabase_ItemDefinitions_259:: "Increases maximum stacks of frenzy by {0}" +ItemDatabase_ItemDefinitions_260:: "Swords go brrrrrrttt" +ItemDatabase_ItemDefinitions_261:: "Jagged Edge" +ItemDatabase_ItemDefinitions_262:: "Bash has {0} a chance to make enemies to bleed for {1} of damage dealt per second for duration of slow" +ItemDatabase_ItemDefinitions_263:: "Bloodthirster" +ItemDatabase_ItemDefinitions_264:: "Drenched in blood of many unfortunate foes." +ItemDatabase_ItemDefinitions_265:: "Bash lifesteals {0} of damage dealt into energy and health" +ItemDatabase_ItemDefinitions_266:: "Frost Giant" +ItemDatabase_ItemDefinitions_267:: "Melee hits freeze enemies" +ItemDatabase_ItemDefinitions_268:: "Alexander's Shield" +ItemDatabase_ItemDefinitions_269:: "Parry has a chance to be casted when getting it. Requires parry to be equipped" +ItemDatabase_ItemDefinitions_270:: "King Qruies" +ItemDatabase_ItemDefinitions_271:: "A mighty sword seeking for it's owner" +ItemDatabase_ItemDefinitions_272:: "Gain additional melee damage equal to the last instance of physical damage taken." +ItemDatabase_ItemDefinitions_273:: "Grip of Sora" +ItemDatabase_ItemDefinitions_274:: "Look, a porcupine! -Sora" +ItemDatabase_ItemDefinitions_275:: "Multishot drains {0} less energy and shoots +4 projectiles. Additional projectiles do not increase the cost of multishot" +ItemDatabase_ItemDefinitions_276:: "Ancient Greatbow" +ItemDatabase_ItemDefinitions_277:: "A massive and slow bow, deals extra damage" +ItemDatabase_ItemDefinitions_278:: "Phoenix's Death" +ItemDatabase_ItemDefinitions_279:: "Ignites enemies on hit" +ItemDatabase_ItemDefinitions_280:: "Soulstring" +ItemDatabase_ItemDefinitions_281:: "A massive and slow bow" +ItemDatabase_ItemDefinitions_282:: "Blood infused arrow now deals additional {0} points of damage per health consumed" +ItemDatabase_ItemDefinitions_283:: "Greatbow" +ItemDatabase_ItemDefinitions_284:: "Withered Crown" +ItemDatabase_ItemDefinitions_285:: "Worn by Hazard." +ItemDatabase_ItemDefinitions_286:: "A single cast of blood infused arrow affects {0} more projectiles" +ItemDatabase_ItemDefinitions_287:: "Novice Magic Caster's Bracers" +ItemDatabase_ItemDefinitions_288:: "Ranger's Bracers" +ItemDatabase_ItemDefinitions_289:: "Swordsman's Bracers" +ItemDatabase_ItemDefinitions_290:: "Healer's Bracers" +ItemDatabase_ItemDefinitions_291:: "Novice Magic Caster's Gloves" +ItemDatabase_ItemDefinitions_292:: "Ranger's Gloves" +ItemDatabase_ItemDefinitions_293:: "Swordsman's Gloves" +ItemDatabase_ItemDefinitions_294:: "Healer's Gloves" +ItemDatabase_ItemDefinitions_295:: "Fate Gloves" +ItemDatabase_ItemDefinitions_296:: "Fate Boots" +ItemDatabase_ItemDefinitions_297:: "Greed" +ItemDatabase_ItemDefinitions_298:: "Automatically casts wide reach every second" +ItemDatabase_ItemDefinitions_299:: "Titanium Leggins" +ItemDatabase_ItemDefinitions_300:: "Heavily armored leg protection. Suffers from the same weaknesses as spartan armor." +ItemDatabase_ItemDefinitions_301:: "Iron Gauntlet" +ItemDatabase_ItemDefinitions_302:: "Magefist" +ItemDatabase_ItemDefinitions_303:: "Gloves that amplify magic" +ItemDatabase_ItemDefinitions_304:: "Spells deal double damage but have double the energy cost" +ItemDatabase_ItemDefinitions_305:: "Armored Boots" +ItemDatabase_ItemDefinitions_306:: "Heavily armored, resistant to damage boots." +ItemDatabase_ItemDefinitions_307:: "Broken Protector" +ItemDatabase_ItemDefinitions_308:: "This shield failed to protect those behind it." +ItemDatabase_ItemDefinitions_309:: "Forbidden Scroll" +ItemDatabase_ItemDefinitions_310:: "Too powerful to be kept." +ItemDatabase_ItemDefinitions_311:: "Doom Pauldrons" +ItemDatabase_ItemDefinitions_312:: "Despite the cool name, they are completely normal pair of shoulder armor." +ItemDatabase_ItemDefinitions_313:: "Wind armor" +ItemDatabase_ItemDefinitions_314:: "Run fast like the wind" +ItemDatabase_ItemDefinitions_315:: "Upon dodging an attack, gain {0} movement speed, {1} damage, {2} armor, and heal for {3} of your maximum health" +ItemDatabase_ItemDefinitions_316:: "Crusader Helmet" +ItemDatabase_ItemDefinitions_317:: "You're talking mad shit for someone within crusading distance" +ItemDatabase_ItemDefinitions_318:: "Hood" +ItemDatabase_ItemDefinitions_319:: "Hats provide usefull stat bonuses" +ItemDatabase_ItemDefinitions_320:: "The Spark of Light in The Darkness" +ItemDatabase_ItemDefinitions_321:: "Magic Scroll of great quality" +ItemDatabase_ItemDefinitions_322:: "Written in a language i canno't understand. Decyphering this text is impossible, so is the full utilization of the scroll." +ItemDatabase_ItemDefinitions_323:: "If a black hole hits {0} or more enemies during it's lifetime, a ball lightning is summoned after it ends." +ItemDatabase_ItemDefinitions_324:: "Purgatory" +ItemDatabase_ItemDefinitions_325:: "Golden ring with a bone chilling feel about it. This thing will only bring harm, but not to the wearer" +ItemDatabase_ItemDefinitions_326:: "Ring made of Netherrite" +ItemDatabase_ItemDefinitions_327:: "Purge increases all of your damage based on missing health. Up to {0}" +ItemDatabase_ItemDefinitions_328:: "Eruption" +ItemDatabase_ItemDefinitions_329:: "Incarnation of devastation" +ItemDatabase_ItemDefinitions_330:: "Headshots cause explosions" +ItemDatabase_ItemDefinitions_331:: "Archangel" +ItemDatabase_ItemDefinitions_332:: "Spread the goodness" +ItemDatabase_ItemDefinitions_333:: "Shooting another player causes them to be greatly empowered for {0} seconds" +ItemDatabase_ItemDefinitions_334:: "The Executioner" +ItemDatabase_ItemDefinitions_335:: "A sword for decapitating" +ItemDatabase_ItemDefinitions_336:: "Moon Cuirass" +ItemDatabase_ItemDefinitions_337:: "A piece of armor designed for an archer. " +ItemDatabase_ItemDefinitions_338:: "Landing a headshot with an arrow without the homing effect of seeking arrow at a distance greater than {0} feet deals tenfold damage, and hits the enemy two extra times" +ItemDatabase_ItemDefinitions_339:: "Thornmail" +ItemDatabase_ItemDefinitions_340:: "Spiked death on the outside, really comfy on the inside" +ItemDatabase_ItemDefinitions_341:: "Thorns deal double damage" +ItemDatabase_ItemDefinitions_342:: "Rusty Polearm" +ItemDatabase_ItemDefinitions_343:: "Used by the Ubersreik Five" +ItemDatabase_ItemDefinitions_344:: "Giant Polearm" +ItemDatabase_ItemDefinitions_345:: "Used by the Sir Kruber" +ItemDatabase_ItemDefinitions_346:: "Crude Feather" +ItemDatabase_ItemDefinitions_347:: "Materials can be put inside empty sockets to add stats to items" +ItemDatabase_ItemDefinitions_348:: "Soft Feather" +ItemDatabase_ItemDefinitions_349:: "Ornate Feather" +ItemDatabase_ItemDefinitions_350:: "Wonderful Feather" +ItemDatabase_ItemDefinitions_351:: "White Crow's Feather" +ItemDatabase_ItemDefinitions_352:: "Reef Shark" +ItemDatabase_ItemDefinitions_353:: "Tiger Shark Tooth" +ItemDatabase_ItemDefinitions_354:: "Whale Shark Tooth" +ItemDatabase_ItemDefinitions_355:: "Great White Shark Tooth" +ItemDatabase_ItemDefinitions_356:: "Megalodon's Tooth" +ItemDatabase_ItemDefinitions_357:: "Uncut Sapphire" +ItemDatabase_ItemDefinitions_358:: "Clear Sapphire" +ItemDatabase_ItemDefinitions_359:: "Shiny Sapphire" +ItemDatabase_ItemDefinitions_360:: "Enchanted Sapphire" +ItemDatabase_ItemDefinitions_361:: "Celestial Sapphire" +ItemDatabase_ItemDefinitions_362:: "Uncut Moonstone" +ItemDatabase_ItemDefinitions_363:: "Clear Moonstone" +ItemDatabase_ItemDefinitions_364:: "Shiny Moonstone" +ItemDatabase_ItemDefinitions_365:: "Enchanted Moonstone" +ItemDatabase_ItemDefinitions_366:: "Celestial Moonstone" +ItemDatabase_ItemDefinitions_367:: "Lead Ore" +ItemDatabase_ItemDefinitions_368:: "Vanadium Ore" +ItemDatabase_ItemDefinitions_369:: "Titanium Ore" +ItemDatabase_ItemDefinitions_370:: "Chromium Ore" +ItemDatabase_ItemDefinitions_371:: "Tungsten Ore" +ItemDatabase_ItemDefinitions_372:: "Knife on a stick" +ItemDatabase_ItemDefinitions_373:: "Kasper named this item, his fault" +ItemDatabase_ItemDefinitions_374:: "Fists of Nails" +ItemDatabase_ItemDefinitions_375:: "Swiss sheese makers" +ItemDatabase_ItemDefinitions_376:: "Gain {0} thorns per vitality" +ItemDatabase_ItemDefinitions_377:: "Cargo Shorts MK2" +ItemDatabase_ItemDefinitions_378:: "Deepest pockets out there" +ItemDatabase_ItemDefinitions_379:: "Improved cargo pants. Twice as many pockets, and since they didnt fit on the outside, they are inside. They are still ugly as hell tho" +ItemDatabase_ItemDefinitions_380:: "Aezyn" +ItemDatabase_ItemDefinitions_381:: "Enchanted with magic as strong as power swing. It's purpose? Hit harder." +ItemDatabase_ItemDefinitions_382:: "Magic arrow damage scaling is increased by {0}" +ItemDatabase_ItemDefinitions_383:: "Punny's Reflective Ring" +ItemDatabase_ItemDefinitions_384:: "Magic arrow is shot in volleys. This effect can stack." +ItemDatabase_ItemDefinitions_385:: "Eyepatch" +ItemDatabase_ItemDefinitions_386:: "A wise man once said:" +ItemDatabase_ItemDefinitions_387:: "Everyone thinks I'm just a one-eyed bloody monster, god damnit... (sobbing)" +ItemDatabase_ItemDefinitions_388:: "Explosion damage is also applied when performing jump attacks" +ItemDatabase_ItemDefinitions_389:: "Javelin" +ItemDatabase_ItemDefinitions_390:: "Warplate" +ItemDatabase_ItemDefinitions_391:: "Enchanted with the power of the GOD's armor. It's purpose? Hit harder, daddy." +ItemDatabase_ItemDefinitions_392:: "Strength comes from the power of will, the stronger the will the stronger you are" +ItemDatabase_ItemDefinitions_393:: "Torso of Strength" +ItemDatabase_ItemDefinitions_394:: "Demoman's Vest" +ItemDatabase_ItemDefinitions_395:: "What makes me a good demoman? If I were a bad demoman, I wouldn't be sittin' here discussin' it with you, now would I?! LET'S DO IT! Not one of you's gonna survive this! One crossed wire, one wayward pinch of potassium chlorate, one errant twitch, and KA-BLOOIE! I got a manky eye. I'm a black Scottish cyclops. They got more fecking sea monsters in the great Lochett Ness than they got the likes of me. So! T'all you fine dandies, so proud, so cocksure, prancin' about with your heads full of eyeballs... come and get me, I say! I'll be waitin' on you with a whiff of the old brimstone! I'm a Grimm bloody fable with an unhappy bloody end! Oh, they're going to have to glue you back together...IN HELL!" +ItemDatabase_ItemDefinitions_396:: "Brawler's Gloves" +ItemDatabase_ItemDefinitions_397:: "Nail Gloves" +ItemDatabase_ItemDefinitions_398:: "Enchanted with the power of penetration. It's purpose? Hit harder." +ItemDatabase_ItemDefinitions_399:: "Hand-held Ballista" +ItemDatabase_ItemDefinitions_400:: "Kuldars's Scarf" +ItemDatabase_ItemDefinitions_401:: "Strength comes from the power of will" +ItemDatabase_ItemDefinitions_402:: "Sword Devil's Scarf" +ItemDatabase_ItemDefinitions_403:: "Peasant's Scarf" +ItemDatabase_ItemDefinitions_404:: "Bombastinc Choker" +ItemDatabase_ItemDefinitions_405:: "Explosive Touch" +ItemDatabase_ItemDefinitions_406:: "Enchanted with the power of the explosions armor. It's purpose? Become the true explosion master" +ItemDatabase_ItemDefinitions_407:: "Strength comes from the power of will, the stronger the will the stronger the explosion" +ItemDatabase_ItemDefinitions_408:: "Volatile Bracers" +ItemDatabase_ItemDefinitions_409:: "Volatile Helmet" +ItemDatabase_ItemDefinitions_410:: "Gunpowder filled socks" +ItemDatabase_ItemDefinitions_411:: "Red Skirt" +ItemDatabase_ItemDefinitions_412:: "Gunpowder Boxers" +ItemDatabase_ItemDefinitions_413:: "Jihad Vest" +ItemDatabase_ItemDefinitions_414:: "Ring of Fortune" +ItemDatabase_ItemDefinitions_415:: "Mana Ring" +ItemDatabase_ItemDefinitions_416:: "Life Ring" +ItemDatabase_ItemDefinitions_417:: "Moritz's Gear" +ItemDatabase_ItemDefinitions_418:: "Band of Hurting" +ItemDatabase_ItemDefinitions_419:: "A ring for a warrior" +ItemDatabase_ItemDefinitions_420:: "Straw Hat" +ItemDatabase_ItemDefinitions_421:: "Rusty Javelin" +ItemDatabase_ItemDefinitions_422:: "Star Robe" +ItemDatabase_ItemDefinitions_423:: "Anger" +ItemDatabase_ItemDefinitions_424:: "Downscaled version of Greatsword Rage, made to be wielded by flimsy wizards" +ItemDatabase_ItemDefinitions_425:: "Increases maximum stacks of frenzy by {0}" +ItemDatabase_ItemDefinitions_426:: "Yuki-Onna Strides" +ItemDatabase_ItemDefinitions_427:: "Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by {0}" +ItemDatabase_ItemDefinitions_428:: "Boots looted off a snow demon" +ItemDatabase_ItemDefinitions_429:: "Increses snowstorm damage by {0}" +ItemDatabase_ItemDefinitions_430:: "Yuki-Onna Greaves" +ItemDatabase_ItemDefinitions_431:: "Yuki-Onna Kimono" +ItemDatabase_ItemDefinitions_432:: "Yuki-Onna's Headdress" +ItemDatabase_ItemDefinitions_433:: "Set Piece:\n2 Pieces- Snow Storm pulls enemies towards you\n3 Pieces - Snow Storm radius, maximum damage, spell cost is doubled, but charge rate is slower\n4 Pieces - Snow storm hit frequency is increased by {0} and damage is increased by {1}" +ItemDatabase_ItemDefinitions_434:: "Lama Mega's Blood Bag" +ItemDatabase_ItemDefinitions_435:: "Melee hits cause enemies to bleed for {0} of your health as damage for {1} seconds" +ItemDatabase_ItemDefinitions_436:: "Socket Drill" +ItemDatabase_ItemDefinitions_437:: "A convienient one use tool" +ItemDatabase_ItemDefinitions_438:: "What's a drill doing here in a place full of primitive tribes?" +ItemDatabase_ItemDefinitions_439:: "Adds one socket to an item, unless the item can't have any more sockets." +ItemDatabase_ItemDefinitions_440:: "Moonwalkers" +ItemDatabase_ItemDefinitions_441:: "Cha cha real smooth." +ItemDatabase_ItemDefinitions_442:: "Inverts movement" +ItemDatabase_ItemDefinitions_443:: "Rabbit Ears Hairband" +ItemDatabase_ItemDefinitions_444:: "Cute" +ItemDatabase_ItemDefinitions_445:: "Bunny Ears Hairband" +ItemDatabase_ItemDefinitions_446:: "Iron plate full of holes" +ItemDatabase_ItemDefinitions_447:: "The integrity of this item is questionable" +ItemDatabase_ItemDefinitions_448:: "Small Tribal Necklace" +ItemDatabase_ItemDefinitions_449:: "Increases maximum stacks of frenzy by {0}" +ItemDatabase_ItemDefinitions_450:: "Tribal Necklace" +ItemDatabase_ItemDefinitions_451:: "Increases maximum stacks of frenzy by {0}" +ItemDatabase_ItemDefinitions_452:: "Warlord Necklace" +ItemDatabase_ItemDefinitions_453:: "Increases maximum stacks of frenzy by {0}" +ItemDatabase_ItemDefinitions_454:: "Travel Band" +ItemDatabase_ItemDefinitions_455:: "The distance of blink is increased by {0} feet" +ItemDatabase_ItemDefinitions_456:: "Destroyed Void Shard" +ItemDatabase_ItemDefinitions_457:: "Only a fraction of its previous might remains" +ItemDatabase_ItemDefinitions_458:: "Decrease the cooldown of one ability by {0} second whenever you hit something with melee or ranged attack." +ItemDatabase_ItemDefinitions_459:: "Famine Hammer" +ItemDatabase_ItemDefinitions_460:: "Chance to weaken enemies, causing them to take more damage from all attacks, is increased by {0}" +ItemDatabase_ItemDefinitions_461:: "Curse Hammer" +ItemDatabase_ItemDefinitions_462:: "Omnious Weapon" +ItemDatabase_ItemDefinitions_463:: "Chance to weaken enemies, causing them to take more damage from all attacks, is increased by {0}" +ItemDatabase_ItemDefinitions_464:: "Smasher" +ItemDatabase_ItemDefinitions_465:: "Smash damage is increased tripled" +ItemDatabase_ItemDefinitions_466:: "Vampiric Band" +ItemDatabase_ItemDefinitions_467:: "Gain {0} stamina on ranged and melee hit or double that amount on critical hits" +ItemDatabase_ItemDefinitions_468:: "Vampire Ring" +ItemDatabase_ItemDefinitions_469:: "Gain {0} stamina on ranged and melee hit or double that amount on critical hits" +ItemDatabase_ItemDefinitions_470:: "Tricksters Scarf" +ItemDatabase_ItemDefinitions_471:: "Magic arrow shoots {0} additional arrow." +ItemDatabase_ItemDefinitions_472:: "Magus' Necktie" +ItemDatabase_ItemDefinitions_473:: "Magic arrow shoots {0} additional arrows." +ItemDatabase_ItemDefinitions_474:: "Discounted Knockoff Magic Quiver" +ItemDatabase_ItemDefinitions_475:: "There's a {0} increased chance to not consume ammo when firing a projectile." +ItemDatabase_ItemDefinitions_476:: "Magic Quiver" +ItemDatabase_ItemDefinitions_477:: "There's a {0} increased chance to not consume ammo when firing a projectile." +ItemDatabase_ItemDefinitions_478:: "Improved Magic Quiver" +ItemDatabase_ItemDefinitions_479:: "There's a {0} increased chance to not consume ammo when firing a projectile." +ItemDatabase_ItemDefinitions_480:: "Factory Quiver" +ItemDatabase_ItemDefinitions_481:: "There's a {0} increased chance to not consume ammo when firing a projectile." +ItemDatabase_ItemDefinitions_482:: "Enzyme STR/34" +ItemDatabase_ItemDefinitions_483:: "A substance which results in surprising changes to gear" +ItemDatabase_ItemDefinitions_484:: "Changes Vitality, Agility or Intelligence stat on an item to Strength or changes Ranged or Spell damage stat to Melee Damage" +ItemDatabase_ItemDefinitions_485:: "Enzyme INT/33" +ItemDatabase_ItemDefinitions_486:: "Changes Vitality, Agility or Strength stat on an item to Intelligence or changes Ranged or Melee damage stat to Spell Damage" +ItemDatabase_ItemDefinitions_487:: "Enzyme AGI/39" +ItemDatabase_ItemDefinitions_488:: "Changes Vitality, Intelligence or Strength stat on an item to Agility or changes Melee or Spell damage stat to Ranged Damage" +ItemDatabase_ItemDefinitions_489:: "Enzyme VIT/449" +ItemDatabase_ItemDefinitions_490:: "Changes Agility, Intelligence or Strength stat on an item to Vitality" +ItemDatabase_ItemDefinitions_491:: "Stomach Acid" +ItemDatabase_ItemDefinitions_492:: "Removes all stats with negative values from an item" +ItemDatabase_ItemDefinitions_493:: "Elite Stomach Acid" +ItemDatabase_ItemDefinitions_494:: "Changes negative stat values into positive values on an item" +ItemDatabase_ItemDefinitions_495:: "Crimson Solution" +ItemDatabase_ItemDefinitions_496:: "Upgrades item of any rarity to one of the same type but of Legendary rarity" +ItemDatabase_ItemDefinitions_497:: "Weak Armor Hardening Mixture" +ItemDatabase_ItemDefinitions_498:: "Adds Armor Stat to a piece of equipment if the item does not already have it" +ItemDatabase_ItemDefinitions_499:: "Upgraded Armor Hardening Mixture" +ItemDatabase_ItemDefinitions_500:: "Adds Damage Reduction Stat to a piece of equipment if the item does not already have it" +ItemDatabase_ItemDefinitions_501:: "Chaos Water" +ItemDatabase_ItemDefinitions_502:: "Rerolls all stats on an item of rarity no higher than orange" +ItemDatabase_ItemDefinitions_503:: "Upgraded Chaos Water" +ItemDatabase_ItemDefinitions_504:: "Rerolls all stats on an item of any rarity" +ItemDatabase_ItemDefinitions_505:: "Gun Blade" +ItemDatabase_ItemDefinitions_506:: "Increases pistol damage by {0}" +ItemDatabase_ItemDefinitions_507:: "Sharpshooter's Axe" +ItemDatabase_ItemDefinitions_508:: "Increases pistol headshot chance by {0} and pistol damage by {1}" +ItemDatabase_ItemDefinitions_509:: "Shield Blade" +ItemDatabase_ItemDefinitions_510:: "So large can be used as a shield" +ItemDatabase_ItemDefinitions_511:: "A normal human cannot lift this weapon." +ItemDatabase_ItemDefinitions_512:: "Blunt Blade for Bashing Skulls" +ItemDatabase_ItemDefinitions_513:: "Bash damage debuff on enemies is increased by {0}" +ItemDatabase_ItemDefinitions_514:: "Madman's Legacy" +ItemDatabase_ItemDefinitions_515:: "Frenzy damage per stack is increased by {0}" +ItemDatabase_ItemDefinitions_516:: "Buckler" +ItemDatabase_ItemDefinitions_517:: "Pyromancy Mask" +ItemDatabase_ItemDefinitions_518:: "Ignited enemies burn for {0} longer." +ItemDatabase_ItemDefinitions_519:: "Ember Mask" +ItemDatabase_ItemDefinitions_520:: "Ignited enemies burn for {0} longer and fire ticks thrice as fast." +ItemDatabase_ItemDefinitions_521:: "Flame Pauldrons" +ItemDatabase_ItemDefinitions_522:: "Firebolt costs {0} additional energy to cast and its damage scaling is increased by {1}" +ItemDatabase_ItemDefinitions_523:: "Ancient Scroll" +ItemDatabase_ItemDefinitions_524:: "Guide on Tearing Spacetime" +ItemDatabase_ItemDefinitions_525:: "Blink creates an explosion at the exit point, and the damage of the explosion is increased by velocity and the radius is increased by the distance of blink" +ItemDatabase_ItemDefinitions_526:: "300th Spear" +ItemDatabase_ItemDefinitions_527:: "Stone Pauldrons" +ItemDatabase_ItemDefinitions_528:: "All damage increased by {0}" +ItemDatabase_ItemDefinitions_529:: "Iron Shoulder Pads" +ItemDatabase_ItemDefinitions_530:: "All damage increased by {0}" +ItemDatabase_ItemDefinitions_531:: "Steel Shoulder Pads" +ItemDatabase_ItemDefinitions_532:: "All damage increased by {0}" +ItemDatabase_ItemDefinitions_533:: "Battle scarred Shoulder Pads" +ItemDatabase_ItemDefinitions_534:: "All damage increased by {0}" +ItemDatabase_ItemDefinitions_535:: "Mystery Shoulder Pads" +ItemDatabase_ItemDefinitions_536:: "All damage increased by {0}" +ItemDatabase_ItemDefinitions_537:: "Stone Shield" +ItemDatabase_ItemDefinitions_538:: "Iron Shield" +ItemDatabase_ItemDefinitions_539:: "Steel Tower Shield" +ItemDatabase_ItemDefinitions_540:: "Guardian" +ItemDatabase_ItemDefinitions_541:: "Mystery Shield" +ItemDatabase_ItemDefinitions_542:: "Light Boot" +ItemDatabase_ItemDefinitions_543:: "Iron Boots" +ItemDatabase_ItemDefinitions_544:: "Steel Boots" +ItemDatabase_ItemDefinitions_545:: "Threads" +ItemDatabase_ItemDefinitions_546:: "Mystery Boots" +ItemDatabase_ItemDefinitions_547:: "Wraps" +ItemDatabase_ItemDefinitions_548:: "Steel Gauntlet" +ItemDatabase_ItemDefinitions_549:: "Titanium Gauntlet" +ItemDatabase_ItemDefinitions_550:: "Mystery Gauntlet" +ItemDatabase_ItemDefinitions_551:: "Leather Tasset" +ItemDatabase_ItemDefinitions_552:: "Iron Tasset" +ItemDatabase_ItemDefinitions_553:: "Steel Tasset" +ItemDatabase_ItemDefinitions_554:: "Black Steel Leggins" +ItemDatabase_ItemDefinitions_555:: "Mystery Leggins" +ItemDatabase_ItemDefinitions_556:: "Leather Vest" +ItemDatabase_ItemDefinitions_557:: "Iron Breastplate" +ItemDatabase_ItemDefinitions_558:: "Steel Breastplate" +ItemDatabase_ItemDefinitions_559:: "Silver Armor" +ItemDatabase_ItemDefinitions_560:: "Mystery Breastplate" +ItemDatabase_ItemDefinitions_561:: "Cloth Band" +ItemDatabase_ItemDefinitions_562:: "Iron Wristguard" +ItemDatabase_ItemDefinitions_563:: "Steel Wristguard" +ItemDatabase_ItemDefinitions_564:: "Baron Wristguards" +ItemDatabase_ItemDefinitions_565:: "Mystery Wristguards" +ItemDatabase_ItemDefinitions_566:: "Iron Helmet" +ItemDatabase_ItemDefinitions_567:: "Steel Helmet" +ItemDatabase_ItemDefinitions_568:: "Armored Hood" +ItemDatabase_ItemDefinitions_569:: "Mystery Helmet" +ItemDatabase_ItemDefinitions_570:: "Yorium's Gaze" +ItemDatabase_ItemDefinitions_571:: "SET PIECE. Melee weapon range is increased by {0}, attack cost in stamina is halved." +ItemDatabase_ItemDefinitions_572:: "Set Piece:\n2 Pieces- Berserk does not apply exhaustion when it ends\n3 Pieces - Berserk duration is increased by {0} seconds\n4 Pieces - Each second of berserk being in effect increases damage by {1}.\n5 Pieces - For the first {2} seconds of Berserk attack speed increases by {3} per second, and lasts till the end of the spell's duration." +ItemDatabase_ItemDefinitions_573:: "Yorium's Ruthlessness" +ItemDatabase_ItemDefinitions_574:: "Yorium's Burden" +ItemDatabase_ItemDefinitions_575:: "Yorium's Resolve" +ItemDatabase_ItemDefinitions_576:: "Atomic Augmentation" +ItemDatabase_ItemDefinitions_577:: "Yorium's Assault" +ItemDatabase_ItemDefinitions_578:: "Undying Promise" +ItemDatabase_ItemDefinitions_579:: "Resist lethal damage on a {0} minute cooldown" +ItemDatabase_ItemDefinitions_581:: "Snap freeze damage scaling is increased by {0} and the slow duration is increased by {1} seconds" +ItemDatabase_ItemDefinitions_582:: "If equipped on a weapon, increases ranged damage by " +ItemDatabase_ItemDefinitions_583:: "If equipped on boots, increases movement speed by " +ItemDatabase_ItemDefinitions_584:: "If equipped on a helmet, increases critical hit chance by " +ItemDatabase_ItemDefinitions_585:: "If equipped on accessories, increases ranged armor piercing by " +ItemDatabase_ItemDefinitions_586:: "If equipped in other slots, increases agility by " +ItemDatabase_ItemDefinitions_587:: "If equipped on a weapon, increases melee damage by " +ItemDatabase_ItemDefinitions_588:: "If equipped on boots, decreases damage taken by " +ItemDatabase_ItemDefinitions_589:: "If equipped on a helmet, increases attack speed by " +ItemDatabase_ItemDefinitions_590:: "If equipped on accessories, increases melee armor piercing by " +ItemDatabase_ItemDefinitions_591:: "If equipped in other slots, increases strength by " +ItemDatabase_ItemDefinitions_592:: "If equipped on a weapon, increases magic damage by " +ItemDatabase_ItemDefinitions_593:: "If equipped on boots, decreases spell cost by " +ItemDatabase_ItemDefinitions_594:: "If equipped on a helmet, decreases spell cooldown by " +ItemDatabase_ItemDefinitions_595:: "If equipped on accessories, increases energy on hit by " +ItemDatabase_ItemDefinitions_596:: "If equipped in other slots, increases intelligence by " +ItemDatabase_ItemDefinitions_597:: "If equipped on a weapon, increases all healing by " +ItemDatabase_ItemDefinitions_598:: "If equipped on boots, increases magic find by " +ItemDatabase_ItemDefinitions_599:: "If equipped on a helmet, increases experience gained by " +ItemDatabase_ItemDefinitions_600:: "If equipped on accessories, increases life per second by " +ItemDatabase_ItemDefinitions_601:: "If equipped in other slots, increases vitality by " +ItemDatabase_ItemDefinitions_602:: "If equipped on a weapon, increases crit damage by " +ItemDatabase_ItemDefinitions_603:: "If equipped on boots, increases resistance to magic by " +ItemDatabase_ItemDefinitions_604:: "If equipped on a helmet, increases health by " +ItemDatabase_ItemDefinitions_605:: "If equipped on accessories, increases thorns by " +ItemDatabase_ItemDefinitions_606:: "If equipped in other slots, increases armor by " +ItemDatabase_ItemDefinitions_607:: "Firebolt deals increased damage" +ItemDatabase_ItemDefinitions_608:: "\nWarcry gives damage resistance." +ItemDatabase_ItemDefinitions_609:: "Devil Dancers" +ItemDatabase_ItemDefinitions_610:: "When consuming frenzy stacks, gain 5% crit chance for 10 seconds for every stack consumed. Gain 5% attack speed per frenzy stack active." +ItemDatabase_ItemDefinitions_611:: "Call of the Ancients" +ItemDatabase_ItemDefinitions_612:: "Berserk increases all damage by additional {0}" +ItemDatabase_ItemDefinitions_613:: "Berserker's Wrath" +ItemDatabase_ItemDefinitions_614:: "Viking Amulet" +ItemDatabase_ItemDefinitions_615:: "Increases attack and movement speed during berserk by {0}" +ItemDatabase_ItemDefinitions_616:: "Pedant of Skallagrim" +ItemDatabase_ItemDefinitions_617:: "Wristguards of The Sanctuary Keeper" +ItemDatabase_ItemDefinitions_618:: "Allies inside Sanctuary have {0} increased cooldown rate and attacks use {1} less resources" MainMenu_Hints_1:: "Gain experience by hunting" MainMenu_Hints_2:: "Experience is shared between players" MainMenu_Hints_3:: "Gain experience by killing enemies" diff --git a/CotfUtils.cs b/Utils.cs similarity index 67% rename from CotfUtils.cs rename to Utils.cs index 1cc7f71..37b0570 100644 --- a/CotfUtils.cs +++ b/Utils.cs @@ -1,11 +1,14 @@ using System; +using System.IO; +using System.Runtime.InteropServices; using System.Text.RegularExpressions; - using UnityEngine; +using static TheForest.Buildings.World.EffigyArchitect; + namespace ChampionsOfForest { - public static class CotfUtils + public static class Utils { //removes any non ascii characters from a name of the player public static string TrimNonAscii(string value) @@ -39,9 +42,31 @@ public static string ListAllChildren(Transform tr, string prefix) } return s; } + + public static byte[] GetBytesFromObject(T obj) + { + int size = Marshal.SizeOf(obj); + byte[] arr = new byte[size]; + IntPtr ptr = Marshal.AllocHGlobal(size); + Marshal.StructureToPtr(obj, ptr, true); + Marshal.Copy(ptr, arr, 0, size); + Marshal.FreeHGlobal(ptr); + return arr; + } + + public static ParamT GetObjectFromBytes(BinaryReader reader) + { + int size = Marshal.SizeOf(default(ParamT)); + IntPtr ptr = Marshal.AllocHGlobal(size); + byte[] arr = reader.ReadBytes(size); + Marshal.Copy(arr, 0, ptr, size); + var param = (ParamT)Marshal.PtrToStructure(ptr, typeof(ParamT)); + Marshal.FreeHGlobal(ptr); + return param; + } } - public static class DamageMath + public static class DamageUtils { public const int SILENTattackerType = 2000000; public const int SILENTattackerTypeMagic = 2000001;