private bool HandlePrefixToItemIfItHasNoHistory(On.Terraria.Item.orig_Prefix orig, Item self, int pre) { bool ret = orig(self, pre); if (pre == -2) { return(ret); //Reforging, as this code should only run for non-reforge contexts } if (self.IsAir) { return(ret); } self.GetGlobalItem <CRGlobalItem>().AddPrefixToItemIfItHasNoHistory(self); return(ret); }
private bool Item_Prefix(On.Terraria.Item.orig_Prefix orig, Item self, int pre) { int originalRarity = 0; if (self.rare > ItemRarityID.Purple) { originalRarity = self.rare; } orig(self, pre); if (originalRarity != 0) { self.rare = originalRarity; } return(true); }
private bool UpdateRarity(On.Terraria.Item.orig_Prefix orig, Terraria.Item item, int pre) { orig(item, pre); Terraria.Item It = new Terraria.Item(); It.SetDefaults(item.type); int baseRarity = It.rare; int baseDamage = It.damage; int baseUseTime = It.useTime; int baseMana = It.mana; float baseKnockback = It.knockBack; float baseScale = It.scale; float baseShootspeed = It.shootSpeed; int baseCrit = It.crit; item.rare = baseRarity; if (_isFixedRarity.Contains(item.rare)) { return(true); } float DamageInc = 1; if (baseDamage != 0) { DamageInc = item.damage / baseDamage; } float KnockBack = 1; if (baseKnockback != 0) { KnockBack = item.knockBack / baseKnockback; } float UseTimeMult = 1; if (baseUseTime != 0) { UseTimeMult = item.useTime / baseUseTime; } float ScaleMult = 1; if (baseScale != 0) { ScaleMult = item.scale / baseScale; } float ShootspeedMult = 1; if (baseShootspeed != 0) { ShootspeedMult = item.shootSpeed / baseShootspeed; } float ManaMult = 1; if (baseMana != 0) { ManaMult = item.mana / baseMana; } float CritMult = 1; if (baseCrit != 0) { CritMult = item.crit / baseCrit; } ; int i = item.prefix; float TotalValue = 1f * DamageInc * (2f - UseTimeMult) * (2f - ManaMult) * ScaleMult * KnockBack * ShootspeedMult * (1f + (float)CritMult * 0.02f); if (i == 62 || i == 69 || i == 73 || i == 77) { TotalValue *= 1.05f; } if (i == 63 || i == 70 || i == 74 || i == 78 || i == 67) { TotalValue *= 1.1f; } if (i == 64 || i == 71 || i == 75 || i == 79 || i == 66) { TotalValue *= 1.15f; } if (i == PrefixID.Warding || i == PrefixID.Menacing || i == PrefixID.Lucky || i == PrefixID.Quick || i == PrefixID.Violent) { TotalValue *= 1.2f; } if (i == ModContent.PrefixType <Shielding>() || i == ModContent.PrefixType <Wrathful>() || i == ModContent.PrefixType <Weighted>() || i == ModContent.PrefixType <Rapid>() || i == ModContent.PrefixType <Beserk>()) { TotalValue *= 1.5f; } if ((double)TotalValue >= 1.5) { item.rare += 3; } else if ((double)TotalValue >= 1.2) { item.rare += 2; } else if ((double)TotalValue >= 1.05) { item.rare++; } else if ((double)TotalValue <= 0.8) { item.rare -= 2; } else if ((double)TotalValue <= 0.95) { item.rare--; } if (item.rare > MaxRarity) { item.rare = MaxRarity; } return(true); }