// Token: 0x06001E70 RID: 7792 RVA: 0x0008FAA4 File Offset: 0x0008DCA4 private void HandlePlayerFireProjectileInternal(NetworkMessage netMsg) { netMsg.ReadMessage <ProjectileManager.PlayerFireProjectileMessage>(this.fireMsg); GameObject gameObject = this.FindProjectilePrefabFromIndex((int)this.fireMsg.prefabIndex); if (gameObject == null) { this.ReleasePredictionId(netMsg.conn, this.fireMsg.predictionId); return; } FireProjectileInfo fireProjectileInfo = default(FireProjectileInfo); fireProjectileInfo.projectilePrefab = gameObject; fireProjectileInfo.position = this.fireMsg.position; fireProjectileInfo.rotation = this.fireMsg.rotation; fireProjectileInfo.owner = this.fireMsg.owner; fireProjectileInfo.damage = this.fireMsg.damage; fireProjectileInfo.force = this.fireMsg.force; fireProjectileInfo.crit = this.fireMsg.crit; GameObject gameObject2 = this.fireMsg.target.ResolveGameObject(); fireProjectileInfo.target = ((gameObject2 != null) ? gameObject2.gameObject : null); fireProjectileInfo.damageColorIndex = this.fireMsg.damageColorIndex; fireProjectileInfo.speedOverride = this.fireMsg.speedOverride; fireProjectileInfo.fuseOverride = this.fireMsg.fuseOverride; this.FireProjectileServer(fireProjectileInfo, netMsg.conn, this.fireMsg.predictionId, (double)Run.instance.time - this.fireMsg.sendTime); }
// Token: 0x06001E69 RID: 7785 RVA: 0x0008F6C9 File Offset: 0x0008D8C9 public void FireProjectile(FireProjectileInfo fireProjectileInfo) { if (NetworkServer.active) { this.FireProjectileServer(fireProjectileInfo, null, 0, 0.0); return; } this.FireProjectileClient(fireProjectileInfo, NetworkManager.singleton.client); }
// Token: 0x06001E6C RID: 7788 RVA: 0x0008F9C8 File Offset: 0x0008DBC8 private void FireProjectileServer(FireProjectileInfo fireProjectileInfo, NetworkConnection clientAuthorityOwner = null, ushort predictionId = 0, double fastForwardTime = 0.0) { GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(fireProjectileInfo.projectilePrefab, fireProjectileInfo.position, fireProjectileInfo.rotation); ProjectileController component = gameObject.GetComponent <ProjectileController>(); component.NetworkpredictionId = predictionId; ProjectileManager.InitializeProjectile(component, fireProjectileInfo); if (clientAuthorityOwner != null) { NetworkServer.SpawnWithClientAuthority(gameObject, clientAuthorityOwner); return; } NetworkServer.Spawn(gameObject); }
// Token: 0x06001E27 RID: 7719 RVA: 0x00081D80 File Offset: 0x0007FF80 public override void OnStartServer() { base.OnStartServer(); if (this.projectileTargetComponent.target) { this.SetLinkedObject(this.projectileTargetComponent.target.gameObject); return; } FireProjectileInfo fireProjectileInfo = default(FireProjectileInfo); fireProjectileInfo.position = base.transform.position; fireProjectileInfo.rotation = base.transform.rotation; fireProjectileInfo.target = base.gameObject; fireProjectileInfo.owner = this.projectileController.owner; fireProjectileInfo.speedOverride = 0f; fireProjectileInfo.projectilePrefab = Resources.Load <GameObject>("Prefabs/Projectiles/GatewayProjectile"); ProjectileManager.instance.FireProjectile(fireProjectileInfo); }
public void FireProjectile(GameObject prefab, Vector3 position, Quaternion rotation, GameObject owner, float damage, float force, bool crit, DamageColorIndex damageColorIndex = DamageColorIndex.Default, GameObject target = null, float speedOverride = -1f) { FireProjectileInfo fireProjectileInfo = new FireProjectileInfo { projectilePrefab = prefab, position = position, rotation = rotation, owner = owner, damage = damage, force = force, crit = crit, damageColorIndex = damageColorIndex, target = target, speedOverride = speedOverride, fuseOverride = -1f }; this.FireProjectile(fireProjectileInfo); }
// Token: 0x06001E6A RID: 7786 RVA: 0x0008F6F8 File Offset: 0x0008D8F8 private void FireProjectileClient(FireProjectileInfo fireProjectileInfo, NetworkClient client) { int num = this.FindProjectilePrefabIndex(fireProjectileInfo.projectilePrefab); if (num == -1) { Debug.LogErrorFormat(fireProjectileInfo.projectilePrefab, "Prefab {0} is not a registered projectile prefab.", new object[] { fireProjectileInfo.projectilePrefab }); return; } bool allowPrediction = ProjectileManager.projectilePrefabProjectileControllers[num].allowPrediction; ushort predictionId = 0; if (allowPrediction) { ProjectileController component = UnityEngine.Object.Instantiate <GameObject>(fireProjectileInfo.projectilePrefab, fireProjectileInfo.position, fireProjectileInfo.rotation).GetComponent <ProjectileController>(); ProjectileManager.InitializeProjectile(component, fireProjectileInfo); this.predictionManager.RegisterPrediction(component); predictionId = component.predictionId; } this.fireMsg.sendTime = (double)Run.instance.time; this.fireMsg.prefabIndex = (byte)num; this.fireMsg.position = fireProjectileInfo.position; this.fireMsg.rotation = fireProjectileInfo.rotation; this.fireMsg.owner = fireProjectileInfo.owner; this.fireMsg.predictionId = predictionId; this.fireMsg.damage = fireProjectileInfo.damage; this.fireMsg.force = fireProjectileInfo.force; this.fireMsg.crit = fireProjectileInfo.crit; this.fireMsg.damageColorIndex = fireProjectileInfo.damageColorIndex; this.fireMsg.speedOverride = fireProjectileInfo.speedOverride; this.fireMsg.fuseOverride = fireProjectileInfo.fuseOverride; this.fireMsg.target = HurtBoxReference.FromRootObject(fireProjectileInfo.target); NetworkWriter networkWriter = new NetworkWriter(); networkWriter.StartMessage(49); networkWriter.Write(this.fireMsg); networkWriter.FinishMessage(); client.SendWriter(networkWriter, 0); }
private void ProjectileManager_FireProjectile_FireProjectileInfo(On.RoR2.Projectile.ProjectileManager.orig_FireProjectile_FireProjectileInfo orig, RoR2.Projectile.ProjectileManager self, RoR2.Projectile.FireProjectileInfo fireProjectileInfo) { var component = fireProjectileInfo.projectilePrefab.GetComponent <ProjectileDamage>(); if (component) { var component2 = fireProjectileInfo.projectilePrefab.GetComponent <ProjectileController>(); var value1 = component2 ? component2.procCoefficient : 1; component.damageType = ShockRoll(fireProjectileInfo.owner, component.damageType, value1); } orig(self, fireProjectileInfo); }
private void ProjectileManager_FireProjectile_FireProjectileInfo(On.RoR2.Projectile.ProjectileManager.orig_FireProjectile_FireProjectileInfo orig, RoR2.Projectile.ProjectileManager self, RoR2.Projectile.FireProjectileInfo fireProjectileInfo) { var component = fireProjectileInfo.projectilePrefab.GetComponent <ProjectileDamage>(); if (component) { var component2 = fireProjectileInfo.projectilePrefab.GetComponent <ProjectileController>(); var value1 = component2 ? component2.procCoefficient : 1; component.damageType = ProcDamageType(fireProjectileInfo.owner, itemDef, component.damageType, damageType, value1, BatteryBullets_ProcCoefficient, BatteryBullets_ProcCoefficientStack); } orig(self, fireProjectileInfo); }
// Token: 0x06001E6B RID: 7787 RVA: 0x0008F888 File Offset: 0x0008DA88 private static void InitializeProjectile(ProjectileController projectileController, FireProjectileInfo fireProjectileInfo) { GameObject gameObject = projectileController.gameObject; ProjectileDamage component = gameObject.GetComponent <ProjectileDamage>(); TeamFilter component2 = gameObject.GetComponent <TeamFilter>(); ProjectileNetworkTransform component3 = gameObject.GetComponent <ProjectileNetworkTransform>(); MissileController component4 = gameObject.GetComponent <MissileController>(); ProjectileSimple component5 = gameObject.GetComponent <ProjectileSimple>(); projectileController.Networkowner = fireProjectileInfo.owner; projectileController.procChainMask = fireProjectileInfo.procChainMask; if (component2) { component2.teamIndex = TeamComponent.GetObjectTeam(fireProjectileInfo.owner); } if (component3) { component3.SetValuesFromTransform(); } if (component4) { component4.target = (fireProjectileInfo.target ? fireProjectileInfo.target.transform : null); } if (fireProjectileInfo.useSpeedOverride && component5) { component5.velocity = fireProjectileInfo.speedOverride; } if (fireProjectileInfo.useFuseOverride) { ProjectileImpactExplosion component6 = gameObject.GetComponent <ProjectileImpactExplosion>(); if (component6) { component6.lifetime = fireProjectileInfo.fuseOverride; } ProjectileFuse component7 = gameObject.GetComponent <ProjectileFuse>(); if (component7) { component7.fuse = fireProjectileInfo.fuseOverride; } } if (component) { component.damage = fireProjectileInfo.damage; component.force = fireProjectileInfo.force; component.crit = fireProjectileInfo.crit; component.damageColorIndex = fireProjectileInfo.damageColorIndex; } }