private void Fire_FireMissile(On.EntityStates.Engi.EngiMissilePainter.Fire.orig_FireMissile orig, EntityStates.Engi.EngiMissilePainter.Fire self, HurtBox target, Vector3 position) { orig(self, target, position); var count = GetCount(self.characterBody); if (count <= 0) { return; } var pts = self.characterBody.gameObject.GetComponent <PixieTubeStopwatch>(); if (!pts) { pts = self.characterBody.gameObject.AddComponent <PixieTubeStopwatch>(); } if (!pts.CheckProc(SkillSlot.Utility)) { return; } for (var i = 0; i < count; i++) { SpawnWisp(self.characterBody.corePosition, self.teamComponent ? self.teamComponent.teamIndex : TeamIndex.None); } }
private void Fire_OnEnter(On.EntityStates.Engi.EngiMissilePainter.Fire.orig_OnEnter orig, EntityStates.Engi.EngiMissilePainter.Fire self) { orig(self); var count = GetCount(self.characterBody); if (count > 0 && self.targetsList.Count == 0) { var mainSpeed = count * buffFrac * engiBoostFrac; var massAdjust = (self.characterBody.characterMotor ? self.characterBody.characterMotor.mass : 1f); Vector3 dir = self.characterBody.transform.forward; if (self.characterBody.characterDirection) { dir = self.characterBody.characterDirection.forward; } dir.y += 0.75f; dir = dir.normalized; var yvelCancel = self.characterBody.characterMotor ? new Vector3(0f, -self.characterBody.characterMotor.velocity.y, 0f) : Vector3.zero; self.characterBody.characterMotor.ApplyForce(mainSpeed * massAdjust * dir + yvelCancel * massAdjust, false, false); self.fireIndex++; var muzzle = (self.fireIndex % 2 == 0) ? "MuzzleLeft" : "MuzzleRight"; EffectManager.SimpleMuzzleFlash(EntityStates.Engi.EngiMissilePainter.Fire.muzzleflashEffectPrefab, self.gameObject, muzzle, true); self.PlayAnimation((self.fireIndex % 2 == 0) ? "Gesture Left Cannon, Additive" : "Gesture Right Cannon, Additive", "FireHarpoon"); ProjectileManager.instance.FireProjectile(new FireProjectileInfo { projectilePrefab = EntityStates.Engi.EngiWeapon.FireGrenades.projectilePrefab, position = self.characterBody.footPosition, rotation = Util.QuaternionSafeLookRotation(Vector3.up), procChainMask = default,