Пример #1
0
        private void Main_FirstFrame1()
        {
            foreach (var effect in skinnedEffects)
            {
                var ind = EffectCatalog.FindEffectIndexFromPrefab(effect);
                if (ind == EffectIndex.Invalid)
                {
                    Main.LogE("Invalid effect: " + effect.name);
                    continue;
                }

                skinnedEffectCache[ind] = new Dictionary <UInt32, EffectDef>();
            }

            foreach (var projectile in skinnedProjectiles)
            {
                var ind = ProjectileCatalog.GetProjectileIndex(projectile);
                if (ind == -1)
                {
                    Main.LogE("Invalid projectile: " + projectile.name);
                    continue;
                }

                skinnedGhostCache[ind] = new Dictionary <UInt32, GameObject>();
            }
        }
 private void onCharacterDeathGlobal(DamageReport report)
 {
     if (report.attackerBody == this.trackedBody && report.attackerBody)
     {
         if (!base.IsCurrentBody(report.damageInfo.attacker))
         {
             return;
         }
         int index = ProjectileCatalog.GetProjectileIndex(report.damageInfo.inflictor);
         if (index == this.fireProjIndex || index == this.lightningProjIndex || index == this.iceProjIndex)
         {
             this.progress++;
             if (this.progress >= ManipulatorJump.requirement)
             {
                 base.Grant();
             }
         }
     }
 }
        // Token: 0x06001EE1 RID: 7905 RVA: 0x00085AC0 File Offset: 0x00083CC0
        private void FireProjectileClient(FireProjectileInfo fireProjectileInfo, NetworkClient client)
        {
            int projectileIndex = ProjectileCatalog.GetProjectileIndex(fireProjectileInfo.projectilePrefab);

            if (projectileIndex == -1)
            {
                Debug.LogErrorFormat(fireProjectileInfo.projectilePrefab, "Prefab {0} is not a registered projectile prefab.", new object[]
                {
                    fireProjectileInfo.projectilePrefab
                });
                return;
            }
            bool   allowPrediction = ProjectileCatalog.GetProjectilePrefabProjectileControllerComponent(projectileIndex).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)projectileIndex;
            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);
        }
 // Token: 0x060028B7 RID: 10423 RVA: 0x000ACD70 File Offset: 0x000AAF70
 private void OnCharacterDeath(DamageReport damageReport)
 {
     if (!damageReport.victimBody)
     {
         return;
     }
     if (damageReport.victimBody.bodyIndex != this.impBossBodyIndex)
     {
         return;
     }
     if (!base.IsCurrentBody(damageReport.damageInfo.attacker))
     {
         return;
     }
     if (ProjectileCatalog.GetProjectileIndex(damageReport.damageInfo.inflictor) != this.bfgProjectileIndex)
     {
         return;
     }
     base.Grant();
 }