Beispiel #1
0
    public static void PerformCollision(FightEntity entity, Entity other)
    {
        if (entity == null || other == null)
        {
            return;
        }

        Bullet bullet = other as Bullet;

        if (bullet != null)
        {
            ImpactData entityImpactData = entity.GetImpactData();
            ImpactData bulletImpactData = bullet.GetImpactData();
            if (GetRelation(entityImpactData.Camp, bulletImpactData.Camp) == RelationType.Friendly)
            {
                return;
            }

            entity.ApplyDamage(bulletImpactData.Attack);

            if (bullet.SubEffectTimes())
            {
                GameEntry.Entity.HideEntity(bullet.Id);
            }
            return;
        }
    }
Beispiel #2
0
        /// <summary>
        /// 对目标添加护甲
        /// </summary>
        /// <param name="instigator"></param>
        /// <param name="target"></param>
        public override void Resolve(TargetableObject instigator, TargetableObject target)
        {
            ImpactData targetImpactData = target.GetImpactData();

            TargetableObjectData.Shield shield = GainShield(Value);
            target.GainShield(instigator, shield);
        }
Beispiel #3
0
 private void RegisterHit(ImpactData impactData)
 {
     if (_sendEnemyStruckEvent)
     {
         GameEventDispatcher.DispatchEnemyStruck();
     }
     EmitSignal(nameof(DamageReceived), impactData);
 }
Beispiel #4
0
 void Impact(ImpactData id)
 {
     if (byName.Length > 0)
     {
         PS = GameObject.Find(byName).GetComponent <ParticleSystem>();
     }
     PS.transform.position = id.rayhit.point + id.rayhit.normal * 0.1f;
     PS.transform.rotation = Quaternion.LookRotation(id.rayhit.normal);
     PS.Emit(count);
 }
Beispiel #5
0
 private void OnDamageReceived(ImpactData impactData)
 {
     if (_velocityComponent != null)
     {
         var dir = impactData.Direction;
         if (dir == Vector2.Zero)
         {
             dir = (_damageReceiverComponent.GlobalPosition - impactData.SourcePosition).Normalized();
         }
         _velocityComponent.ApplyKnockback(dir, impactData.Force);
     }
 }
Beispiel #6
0
 void Impact(ImpactData id)
 {
     hitpoints -= id.projectile.damage;
     AudioSource.PlayClipAtPoint(src.clip, this.transform.position);
     if (hitpoints <= 0)
     {
         GameObject go  = Instantiate(camStrap);
         Rigidbody  rig = go.GetComponent <Rigidbody>();
         rig.AddTorque(Random.rotation.eulerAngles * 5, ForceMode.Impulse);
         go.transform.position = cam.transform.position;
         go.transform.rotation = Random.rotation;
         cam.transform.parent  = go.transform;
         Destroy(this.gameObject);
     }
 }
Beispiel #7
0
        private void OnDamageReceived(ImpactData impactData)
        {
            if (_hitEffect != null)
            {
                var effect = _hitEffect.Instance() as Node2D;
                Zone.Current.EffectsLayer.AddChild(effect);
                effect.Rotation = impactData.Direction.Angle();

                Vector2?spawnPos = impactData.ImpactPosition ?? _damageReceiverComponent?.GlobalPosition;
                if (spawnPos != null)
                {
                    effect.GlobalPosition = (Vector2)spawnPos;
                }
            }
            PlayHitShadeTween();
        }
Beispiel #8
0
        public static bool PlayerResources_OnImpact(PlayerResources __instance, ImpactData impact)
        {
            if (PlayerState.IsInsideShip())
            {
                return(false);
            }

            var speed      = Mathf.Clamp01((impact.speed - __instance.GetMinImpactSpeed()) / (__instance.GetMaxImpactSpeed() - __instance.GetMinImpactSpeed()));
            var tookDamage = __instance.ApplyInstantDamage(100f * speed, InstantDamageType.Impact);

            if (tookDamage && __instance._currentHealth <= 0f && !PlayerState.IsDead())
            {
                Locator.GetDeathManager().SetImpactDeathSpeed(impact.speed);
                Locator.GetDeathManager().KillPlayer(DeathType.Impact);
            }

            return(false);
        }
Beispiel #9
0
        public static bool OnImpact(AnglerfishController __instance,
                                    ImpactData impact)
        {
            var qsbAngler = __instance.GetWorldObject <QSBAngler>();

            var attachedOWRigidbody = impact.otherCollider.GetAttachedOWRigidbody();

            if ((attachedOWRigidbody.CompareTag("Player") || attachedOWRigidbody.CompareTag("Ship")) &&
                __instance._currentState != AnglerfishController.AnglerState.Consuming &&
                __instance._currentState != AnglerfishController.AnglerState.Stunned)
            {
                qsbAngler.TargetTransform = attachedOWRigidbody.transform;
                __instance.ChangeState(AnglerfishController.AnglerState.Chasing);
                qsbAngler.SendMessage(new AnglerDataMessage(qsbAngler));
                return(false);
            }

            return(false);
        }
Beispiel #10
0
 private void ApplyDamage(GameEntity entity)
 {
     if (IgnoreCreator && entity == Creator)
     {
         return;
     }
     if (NextImpact && NextImpact.GetComponent <SkillImpact>())
     {
         var impact = Utility.Instantiate(NextImpact, Creator.gameObject.scene).GetComponent <SkillImpact>();
         impact.Creator = Creator;
         impact.Effects = Effects;
         impact.Activate(transform.position, Direction, TargetEntity);
     }
     else
     {
         var data = new ImpactData()
         {
             Position = transform.position, Creator = Creator, ImpactType = ImpactType, Direction = this.Direction
         };
         new SkillImpactMessage(this, Effects.Select(effect => effect.Effect.Create(effect, data, this.Creator)).ToArray()).Dispatch(entity);
     }
 }
Beispiel #11
0
        public override void ReadData(ESPReader reader, long dataEnd)
        {
            while (reader.BaseStream.Position < dataEnd)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "EDID":
                    if (EditorID == null)
                    {
                        EditorID = new SimpleSubrecord <String>();
                    }

                    EditorID.ReadBinary(reader);
                    break;

                case "MODL":
                    if (Model == null)
                    {
                        Model = new Model();
                    }

                    Model.ReadBinary(reader);
                    break;

                case "DATA":
                    if (Data == null)
                    {
                        Data = new ImpactData();
                    }

                    Data.ReadBinary(reader);
                    break;

                case "DODT":
                    if (DecalData == null)
                    {
                        DecalData = new DecalData();
                    }

                    DecalData.ReadBinary(reader);
                    break;

                case "DNAM":
                    if (TextureSet == null)
                    {
                        TextureSet = new RecordReference();
                    }

                    TextureSet.ReadBinary(reader);
                    break;

                case "SNAM":
                    if (Sound1 == null)
                    {
                        Sound1 = new RecordReference();
                    }

                    Sound1.ReadBinary(reader);
                    break;

                case "NAM1":
                    if (Sound2 == null)
                    {
                        Sound2 = new RecordReference();
                    }

                    Sound2.ReadBinary(reader);
                    break;

                default:
                    throw new Exception();
                }
            }
        }
Beispiel #12
0
 public Impact(SimpleSubrecord <String> EditorID, Model Model, ImpactData Data, DecalData DecalData, RecordReference TextureSet, RecordReference Sound1, RecordReference Sound2)
 {
     this.EditorID = EditorID;
     this.Data     = Data;
 }
Beispiel #13
0
 public Impact()
 {
     EditorID = new SimpleSubrecord <String>("EDID");
     Data     = new ImpactData("DATA");
 }
Beispiel #14
0
        public override void ReadDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("EditorID", false, out subEle))
            {
                if (EditorID == null)
                {
                    EditorID = new SimpleSubrecord <String>();
                }

                EditorID.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Model", false, out subEle))
            {
                if (Model == null)
                {
                    Model = new Model();
                }

                Model.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Data", false, out subEle))
            {
                if (Data == null)
                {
                    Data = new ImpactData();
                }

                Data.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("DecalData", false, out subEle))
            {
                if (DecalData == null)
                {
                    DecalData = new DecalData();
                }

                DecalData.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("TextureSet", false, out subEle))
            {
                if (TextureSet == null)
                {
                    TextureSet = new RecordReference();
                }

                TextureSet.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Sound1", false, out subEle))
            {
                if (Sound1 == null)
                {
                    Sound1 = new RecordReference();
                }

                Sound1.ReadXML(subEle, master);
            }
            if (ele.TryPathTo("Sound2", false, out subEle))
            {
                if (Sound2 == null)
                {
                    Sound2 = new RecordReference();
                }

                Sound2.ReadXML(subEle, master);
            }
        }
Beispiel #15
0
 private void OnDamageReceived(ImpactData impactData)
 {
     CurrentHealth -= _damageOverride > 0f ? _damageOverride : impactData.Damage;
 }
Beispiel #16
0
 void Impact(ImpactData id)
 {
     AudioSource.PlayClipAtPoint(src.clip, this.transform.position);
     hitPoints -= id.projectile.damage;
 }
Beispiel #17
0
 private void OnDamageReceived(ImpactData impactData)
 {
     PlayAudio();
 }
Beispiel #18
0
 public void RegisterRaycastHit(Projectile projectile, RaycastResult raycastResult)
 {
     RegisterHit(ImpactData.FromRaycastProjectile(projectile, raycastResult));
 }
Beispiel #19
0
 public void RegisterAreaOfEffect(Projectile projectile, Vector2 sourcePosition)
 {
     RegisterHit(ImpactData.FromAreaOfEffectProjectile(projectile, sourcePosition));
 }
Beispiel #20
0
 void Impact(ImpactData id)
 {
     BlowUp();
 }
Beispiel #21
0
 void Impact(ImpactData id)
 {
     PS.Stop();
     PS.transform.parent = null;
     Destroy(PS.gameObject, PS.startLifetime); // if particles live for at most 5 secs
 }
Beispiel #22
0
 private void OnDamageReceived(ImpactData impactData)
 {
     Aggressive = true;
 }
Beispiel #23
0
 void Impact(ImpactData id)
 {
     _rig.AddForce(id.projectile.velocity.xy(), ForceMode2D.Impulse);
 }