Exemple #1
0
        public static void ImpactEffect(HitInfo info)
        {
            if (!info.DoHitEffects)
            {
                return;
            }
            string materialName = StringPool.Get(info.HitMaterial);
            string strName      = EffectDictionary.GetParticle(info.damageTypes.GetMajorityDamageType(), materialName);
            string decal        = EffectDictionary.GetDecal(info.damageTypes.GetMajorityDamageType(), materialName);

            if (TerrainMeta.WaterMap != null && info.HitMaterial != Projectile.WaterMaterialID() && info.HitMaterial != Projectile.FleshMaterialID() && info.HitPositionWorld.y < TerrainMeta.WaterMap.GetHeight(info.HitPositionWorld) && WaterLevel.Test(info.HitPositionWorld, false))
            {
                return;
            }
            if (BaseEntityEx.IsValid(info.HitEntity))
            {
                GameObjectRef impactEffect = info.HitEntity.GetImpactEffect(info);
                if (impactEffect.isValid)
                {
                    strName = impactEffect.resourcePath;
                }
                Run(strName, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal);
                if (info.DoDecals)
                {
                    Run(decal, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal);
                }
            }
            else
            {
                Type overrideType = Type.Generic;
                Run(strName, info.HitPositionWorld, info.HitNormalWorld, default(Vector3), overrideType);
                Run(decal, info.HitPositionWorld, info.HitNormalWorld, default(Vector3), overrideType);
            }
            if ((bool)info.WeaponPrefab)
            {
                BaseMelee baseMelee = info.WeaponPrefab as BaseMelee;
                if (baseMelee != null)
                {
                    string strikeEffectPath = baseMelee.GetStrikeEffectPath(materialName);
                    if (BaseEntityEx.IsValid(info.HitEntity))
                    {
                        Run(strikeEffectPath, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal);
                    }
                    else
                    {
                        Run(strikeEffectPath, info.HitPositionWorld, info.HitNormalWorld);
                    }
                }
            }
            if (info.damageTypes.Has(DamageType.Explosion))
            {
                DoAdditiveImpactEffect(info, "assets/bundled/prefabs/fx/impacts/additive/explosion.prefab");
            }
            if (info.damageTypes.Has(DamageType.Heat))
            {
                DoAdditiveImpactEffect(info, "assets/bundled/prefabs/fx/impacts/additive/fire.prefab");
            }
        }
Exemple #2
0
        public static void ImpactEffect(HitInfo info)
        {
            if (!info.DoHitEffects)
            {
                return;
            }
            string materialName = StringPool.Get(info.HitMaterial);

            if (Object.op_Inequality((Object)TerrainMeta.WaterMap, (Object)null) && (int)info.HitMaterial != (int)Projectile.WaterMaterialID() && ((int)info.HitMaterial != (int)Projectile.FleshMaterialID() && info.HitPositionWorld.y < (double)WaterLevel.GetWaterDepth(info.HitPositionWorld)))
            {
                return;
            }
            string strName = EffectDictionary.GetParticle(info.damageTypes.GetMajorityDamageType(), materialName);
            string decal   = EffectDictionary.GetDecal(info.damageTypes.GetMajorityDamageType(), materialName);

            if (info.HitEntity.IsValid())
            {
                GameObjectRef impactEffect = info.HitEntity.GetImpactEffect(info);
                if (impactEffect.isValid)
                {
                    strName = impactEffect.resourcePath;
                }
                Effect.server.Run(strName, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal, info.Predicted, false);
                Effect.server.Run(decal, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal, info.Predicted, false);
            }
            else
            {
                Effect.server.Run(strName, info.HitPositionWorld, info.HitNormalWorld, info.Predicted, false);
                Effect.server.Run(decal, info.HitPositionWorld, info.HitNormalWorld, info.Predicted, false);
            }
            if (Object.op_Implicit((Object)info.WeaponPrefab))
            {
                BaseMelee weaponPrefab = info.WeaponPrefab as BaseMelee;
                if (Object.op_Inequality((Object)weaponPrefab, (Object)null))
                {
                    string strikeEffectPath = weaponPrefab.GetStrikeEffectPath(materialName);
                    if (info.HitEntity.IsValid())
                    {
                        Effect.server.Run(strikeEffectPath, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal, info.Predicted, false);
                    }
                    else
                    {
                        Effect.server.Run(strikeEffectPath, info.HitPositionWorld, info.HitNormalWorld, info.Predicted, false);
                    }
                }
            }
            if (info.damageTypes.Has(DamageType.Explosion))
            {
                Effect.server.DoAdditiveImpactEffect(info, "assets/bundled/prefabs/fx/impacts/additive/explosion.prefab");
            }
            if (!info.damageTypes.Has(DamageType.Heat))
            {
                return;
            }
            Effect.server.DoAdditiveImpactEffect(info, "assets/bundled/prefabs/fx/impacts/additive/fire.prefab");
        }
Exemple #3
0
        virtual public void Play(BubbleDeathType type)
        {
            Play();

            var effects = EffectDictionary.ContainsKey(type) ? EffectDictionary[type] : GetDefaultEffects(type);

            foreach (var effect in effects)
            {
                effectController.AddEffect(effect);
            }
        }
Exemple #4
0
        public void AddEffect(GameObject parent, AnimationType type, BubbleDeathType deathType, bool blocking)
        {
            if (!EffectDictionary.ContainsKey(deathType))
            {
                EffectDictionary.Add(deathType, new List <IEnumerator>());
            }

            var effect = blocking ? AnimationEffect.PlayAndRegister(parent, type, RegisterBlockers) :
                         AnimationEffect.Play(parent, type);

            EffectDictionary[deathType].Add(effect);
        }
    public static string GetParticle(DamageType damageType, string materialName)
    {
        switch (damageType)
        {
        case DamageType.Bullet:
        {
            return(EffectDictionary.GetParticle("bullet", materialName));
        }

        case DamageType.Slash:
        {
            return(EffectDictionary.GetParticle("slash", materialName));
        }

        case DamageType.Blunt:
        {
            return(EffectDictionary.GetParticle("blunt", materialName));
        }

        case DamageType.Fall:
        case DamageType.Radiation:
        case DamageType.Bite:
        {
            return(EffectDictionary.GetParticle("blunt", materialName));
        }

        case DamageType.Stab:
        {
            return(EffectDictionary.GetParticle("stab", materialName));
        }

        default:
        {
            if (damageType == DamageType.Arrow)
            {
                return(EffectDictionary.GetParticle("bullet", materialName));
            }
            return(EffectDictionary.GetParticle("blunt", materialName));
        }
        }
    }
    public static string GetDecal(DamageType damageType, string materialName)
    {
        switch (damageType)
        {
        case DamageType.Bullet:
            return(EffectDictionary.GetDecal("bullet", materialName));

        case DamageType.Slash:
            return(EffectDictionary.GetDecal("slash", materialName));

        case DamageType.Blunt:
            return(EffectDictionary.GetDecal("blunt", materialName));

        case DamageType.Stab:
            return(EffectDictionary.GetDecal("stab", materialName));

        case DamageType.Arrow:
            return(EffectDictionary.GetDecal("bullet", materialName));

        default:
            return(EffectDictionary.GetDecal("blunt", materialName));
        }
    }
 public static string GetDisplacement(string impactType, string materialName)
 {
     return(EffectDictionary.LookupEffect("displacement", impactType, materialName));
 }
 public static string GetDecal(string impactType, string materialName)
 {
     return(EffectDictionary.LookupEffect("decals", impactType, materialName));
 }
 public static string GetParticle(string impactType, string materialName)
 {
     return(EffectDictionary.LookupEffect("impacts", impactType, materialName));
 }
Exemple #10
0
    public override void readPacketData(PacketReader r)
    {
        _EffectDict = (EffectDictionary)r.ReadByte();
        byte b = r.ReadByte();

        while (true)
        {
            int num = 1449331065;
            while (true)
            {
                uint num2;
                switch ((num2 = (uint)num ^ 0x40D1E49Eu) % 8u)
                {
                case 4u:
                    break;

                default:
                    return;

                case 2u:
                    _PositionTwo._PositionY = (((b & 0x10u) != 0) ? r.ReadSingle() : 0f);
                    num = 1157121933;
                    continue;

                case 3u:
                    _JEsT6uIdK1eySUKAfntb2FPG6xS = ((((uint)b & (true ? 1u : 0u)) != 0) ? ColorUtil.Read(r) : _sEbsBUoH2nb2Xe0NgbAdtwAYgyn);
                    _Duration = (((b & 0x20u) != 0) ? r.ReadSingle() : 1f);
                    num       = 324033816;
                    continue;

                case 7u:
                    _91Zhx0OBsUhlR5optw0cihxmls4 = (((b & 0x40u) != 0) ? CompressedInt.Read(r) : 0);
                    num = 1116186011;
                    continue;

                case 0u:
                    _Py6PkxjHTY3O6pw4WuxldaFbWxH = r.ReadByte();
                    num = (int)(num2 * 204275967) ^ -480569097;
                    continue;

                case 6u:
                {
                    int num3;
                    int num4;
                    if ((b & 0x80u) != 0)
                    {
                        num3 = 1165841944;
                        num4 = num3;
                    }
                    else
                    {
                        num3 = 1167361425;
                        num4 = num3;
                    }
                    num = num3 ^ ((int)num2 * -168239607);
                    continue;
                }

                case 5u:
                    _PositionOne._PositionX = (((b & 2u) != 0) ? r.ReadSingle() : 0f);
                    _PositionOne._PositionY = (((b & 4u) != 0) ? r.ReadSingle() : 0f);
                    _PositionTwo._PositionX = (((b & 8u) != 0) ? r.ReadSingle() : 0f);
                    num = 415062908;
                    continue;

                case 1u:
                    return;
                }
                break;
            }
        }
    }
Exemple #11
0
        public static void ImpactEffect(HitInfo info)
        {
            Vector3 vector3;
            string  str      = StringPool.Get(info.HitMaterial);
            string  particle = EffectDictionary.GetParticle(info.damageTypes.GetMajorityDamageType(), str);
            string  decal    = EffectDictionary.GetDecal(info.damageTypes.GetMajorityDamageType(), str);

            if (TerrainMeta.WaterMap != null && info.HitMaterial != Projectile.WaterMaterialID() && info.HitMaterial != Projectile.FleshMaterialID() && info.HitPositionWorld.y < TerrainMeta.WaterMap.GetHeight(info.HitPositionWorld))
            {
                return;
            }
            if (!info.HitEntity.IsValid())
            {
                Vector3 hitPositionWorld = info.HitPositionWorld;
                Vector3 hitNormalWorld   = info.HitNormalWorld;
                vector3 = new Vector3();
                Effect.client.Run(particle, hitPositionWorld, hitNormalWorld, vector3);
                Vector3 hitPositionWorld1 = info.HitPositionWorld;
                Vector3 hitNormalWorld1   = info.HitNormalWorld;
                vector3 = new Vector3();
                Effect.client.Run(decal, hitPositionWorld1, hitNormalWorld1, vector3);
            }
            else
            {
                GameObjectRef impactEffect = info.HitEntity.GetImpactEffect(info);
                if (impactEffect.isValid)
                {
                    particle = impactEffect.resourcePath;
                }
                Effect.client.Run(particle, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal);
                if (info.DoDecals)
                {
                    Effect.client.Run(decal, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal);
                }
            }
            if (info.WeaponPrefab)
            {
                BaseMelee weaponPrefab = info.WeaponPrefab as BaseMelee;
                if (weaponPrefab != null)
                {
                    string strikeEffectPath = weaponPrefab.GetStrikeEffectPath(str);
                    if (!info.HitEntity.IsValid())
                    {
                        Vector3 vector31        = info.HitPositionWorld;
                        Vector3 hitNormalWorld2 = info.HitNormalWorld;
                        vector3 = new Vector3();
                        Effect.client.Run(strikeEffectPath, vector31, hitNormalWorld2, vector3);
                    }
                    else
                    {
                        Effect.client.Run(strikeEffectPath, info.HitEntity, info.HitBone, info.HitPositionLocal, info.HitNormalLocal);
                    }
                }
            }
            if (info.damageTypes.Has(DamageType.Explosion))
            {
                Effect.client.DoAdditiveImpactEffect(info, "assets/bundled/prefabs/fx/impacts/additive/explosion.prefab");
            }
            if (info.damageTypes.Has(DamageType.Heat))
            {
                Effect.client.DoAdditiveImpactEffect(info, "assets/bundled/prefabs/fx/impacts/additive/fire.prefab");
            }
        }