private void BulletAttack_Fire(On.RoR2.BulletAttack.orig_Fire orig, BulletAttack self) { orig(self); if (ignoreMugs || !self.owner) { return; } var cpt = self.owner.GetComponent <CharacterBody>(); if (!cpt) { return; } var count = GetCount(cpt); if (count <= 0) { return; } var totalChance = count * procChance; int procCount = (Util.CheckRoll(Wrap(totalChance * 100f, 0f, 100f), cpt.master) ? 1 : 0) + (int)Mathf.Floor(totalChance); if (procCount <= 0) { return; } self.bulletCount = (uint)procCount; self.maxSpread += spreadConeHalfAngleDegr; self.spreadPitchScale = 1f; self.spreadYawScale = 1f; orig(self); }
private static void AdjustSpreadBullets(On.RoR2.BulletAttack.orig_Fire orig, BulletAttack self) { if (self.owner) { var body = self.owner.gameObject.GetComponent <CharacterBody>(); if (body) { var comp = body.masterObject.GetComponent <RBSExtraStatsController>(); if (comp) { var accuracy = comp.bulletAccuracy; body.SetSpreadBloom(Mathf.Min(0, body.spreadBloomAngle * accuracy), false); self.maxSpread = SimpleSpread(self.maxSpread, 1.15f); self.minSpread = SimpleSpread(accuracy, self.minSpread); if (body.inputBank) { self.aimVector = Vector3.Lerp(self.aimVector, body.inputBank.aimDirection, 1 - accuracy); } self.spreadPitchScale *= SimpleSpread(accuracy, self.spreadPitchScale); self.spreadYawScale *= SimpleSpread(accuracy, self.spreadYawScale); } } } orig(self); }
private void AdjustSpreadBullets(On.RoR2.BulletAttack.orig_Fire orig, BulletAttack self) { //doesn't work on MULT????? CharacterBody characterBody = self.owner.gameObject.GetComponent <CharacterBody>(); if (characterBody) { var inventory = characterBody.inventory; if (inventory) { var ResultMult = CalculateSpreadMultiplier(inventory, false); characterBody.SetSpreadBloom(Mathf.Min(0, characterBody.spreadBloomAngle * ResultMult), false); //Debug.Log("Bulletscope: maxspread: "+self.maxSpread+" multiplier: "+ResultMult+" result: "+ Mathf.Max(self.maxSpread * ResultMult, 0)); //if (self.radius == 0) //(maybe?) //self.radius = ResultMult; self.maxSpread = SimpleSpread(self.maxSpread, 1.15f); self.minSpread = SimpleSpread(ResultMult, self.minSpread); self.spreadPitchScale *= SimpleSpread(ResultMult, self.spreadPitchScale); self.spreadYawScale *= SimpleSpread(ResultMult, self.spreadYawScale); //self.owner.GetComponent<CharacterBody>().SetSpreadBloom(ResultMult, false); } } orig(self); }
private void FireTheSwordOnBulletAttack(On.RoR2.BulletAttack.orig_Fire orig, RoR2.BulletAttack self) { var projectileOwner = self.owner; if (projectileOwner) { var projectileBody = projectileOwner.GetComponent <CharacterBody>(); if (projectileBody) { var InventoryCount = GetCount(projectileBody); if (InventoryCount > 0) { if (projectileBody.healthComponent.combinedHealthFraction >= 1) { var newProjectileInfo = new FireProjectileInfo(); newProjectileInfo.owner = projectileOwner; newProjectileInfo.projectilePrefab = SwordProjectile; newProjectileInfo.speedOverride = 100.0f; newProjectileInfo.damage = projectileBody.damage * baseSwordDamageMultiplier + (projectileBody.damage * additionalSwordDamageMultiplier * (InventoryCount - 1)); newProjectileInfo.damageTypeOverride = null; newProjectileInfo.damageColorIndex = DamageColorIndex.Default; newProjectileInfo.procChainMask = default(RoR2.ProcChainMask); Vector3 MuzzleTransform = self.origin; var weapon = self.weapon; if (weapon) { var weaponModelLocator = weapon.GetComponent <ModelLocator>(); if (weaponModelLocator && weaponModelLocator.transform) { ChildLocator childLocator = weaponModelLocator.modelTransform.GetComponent <ChildLocator>(); if (childLocator) { if (self.muzzleName != null) { MuzzleTransform = childLocator.FindChild(self.muzzleName).position; } } } } newProjectileInfo.position = MuzzleTransform; newProjectileInfo.rotation = RoR2.Util.QuaternionSafeLookRotation(self.aimVector); try { RecursionPrevention = true; RoR2.Projectile.ProjectileManager.instance.FireProjectile(newProjectileInfo); } finally { RecursionPrevention = false; } } } } } orig(self); }
private void BulletAttack_Fire(On.RoR2.BulletAttack.orig_Fire orig, BulletAttack self) { bulletAttackDidHit = false; orig(self); if (!bulletAttackDidHit && self.owner == this.localUser.cachedBodyObject) { userProfile.statSheet.PushStatValue(Mug.instance.whiffsStatDef, 1UL); if (ProgressForAchievement() >= 1.0f) { Grant(); } } }
private void BulletAttack_Fire(On.RoR2.BulletAttack.orig_Fire orig, BulletAttack self) { self.damageType = ShockRoll(self.owner, self.damageType, self.procCoefficient); orig(self); }
private void BulletAttack_Fire(On.RoR2.BulletAttack.orig_Fire orig, BulletAttack self) { self.damageType = ProcDamageType(self.owner, itemDef, self.damageType, damageType, self.procCoefficient, BatteryBullets_ProcCoefficient, BatteryBullets_ProcCoefficientStack); orig(self); }