예제 #1
0
 protected void AddEffectWarningMessage(EffectWarningMessage message)
 {
     if (message.caster == null)
     {
         return;
     }
     this.ClearWarningMessage();
     this.MarkWarningMessageByEffect(message.caster, message.effectID, message.basePoint);
 }
예제 #2
0
        protected void ServerTriggerEffect(int effectID, int skillID)
        {
            Effect effect = DataReader <Effect> .Get(effectID);

            if (effect == null)
            {
                return;
            }
            SkillManager.effectPoolID++;
            EffectMaterial effectMaterial = (!this.effectMessageCache.ContainsKey(effectID)) ? null : this.effectMessageCache.get_Item(effectID);
            EffectMessage  effectMessage  = new EffectMessage();

            effectMessage.caster      = this.owner;
            effectMessage.casterActor = this.ownerActor;
            effectMessage.skillData   = DataReader <Skill> .Get(skillID);

            effectMessage.effectData = effect;
            if (effect.type2 == 4 || effect.type2 == 3)
            {
                effectMessage.basePoint = this.GetEffectBasePoint((EffectBasePointType)effect.@base, (float)effect.tremble, (effectMaterial != null) ? effectMaterial.skillTargetID : 0L, effect.summonId, effect.coord, effect.orientation);
            }
            else
            {
                effectMessage.basePoint = ((effectMaterial != null) ? effectMaterial.basePoint : null);
            }
            effectMessage.UID            = SkillManager.effectPoolID;
            effectMessage.isClientHandle = (effectMaterial == null || effectMaterial.isClientHandle);
            if (effect.aiEffectMove == 1 && effectMessage.basePoint != null)
            {
                EffectWarningMessage effectWarningMessage = new EffectWarningMessage();
                effectWarningMessage.caster    = this.owner;
                effectWarningMessage.effectID  = effectID;
                effectWarningMessage.basePoint = effectMessage.basePoint.ApplyOffset(effect.offset);
                EventDispatcher.Broadcast <EffectWarningMessage>(WarningManagerEvent.AddEffectWarningMessage, effectWarningMessage);
            }
            ClientEffectHandler.Instance.TriggerEffect(effect.delay, effectMessage);
            if (effectMessage.basePoint != null && effect.fx != 0)
            {
                CommandCenter.ExecuteCommand(this.ownerActor.FixTransform, new BulletFXCmd
                {
                    fxID  = effect.fx,
                    point = effectMessage.basePoint,
                    scale = DataReader <AvatarModel> .Get(this.ownerActor.GetEntity().FixModelID).scale
                });
            }
        }