Exemple #1
0
        public virtual void InitByEffect(EffectID effectID)
        {
            int       eid    = (int)effectID;
            EffectRec effRec = EffectsData.dbEffects[eid];

            if (effRec.FrameCount > 0)
            {
                AnimKind     = effRec.AnimationKind;
                ImagesOrigin = effRec.ImageIndex;
                FramesCount  = (int)effRec.FrameCount;
            }
        }
Exemple #2
0
        public void Exec(NWCreature creature, EffectID effectID, InvokeMode invokeMode, EffectExt ext, string rayMsg)
        {
            GlobalVars.nwrWin.ShowText(creature, rayMsg);

            int          i      = Effect.GetMagnitude(effectID);
            EffectTarget target = EffectTarget.et_None;

            if ((ext.ReqParams.Contains(EffectParams.ep_Direction)))
            {
                target = EffectTarget.et_Direction;
            }
            else
            {
                if ((ext.ReqParams.Contains(EffectParams.ep_Creature)))
                {
                    target = EffectTarget.et_Creature;
                }
            }
            int x;
            int y;
            int x2;
            int y2;

            if (target != EffectTarget.et_Direction)
            {
                if (target != EffectTarget.et_Creature)
                {
                    return;
                }
                x = creature.PosX;
                y = creature.PosY;
                NWCreature extCr = (NWCreature)ext.GetParam(EffectParams.ep_Creature);
                x2 = extCr.PosX;
                y2 = extCr.PosY;
                int dir = Directions.GetDirByCoords(x, y, x2, y2);
                x += Directions.Data[dir].DX;
                y += Directions.Data[dir].DY;
            }
            else
            {
                int dir = (int)ext.GetParam(EffectParams.ep_Direction);
                x  = creature.PosX + Directions.Data[dir].DX;
                y  = creature.PosY + Directions.Data[dir].DY;
                x2 = x + Directions.Data[dir].DX * i;
                y2 = y + Directions.Data[dir].DY * i;
            }
            Creature = creature;
            Dir      = Directions.GetDirByCoords(x, y, x2, y2);
            EffID    = effectID;

            Field = Creature.CurrentField;

            int       eid    = (int)effectID;
            EffectRec effRec = EffectsData.dbEffects[eid];

            if (effRec.FrameCount > 0)
            {
                MapObject = new MapObject(creature.Space, Field);
                MapObject.InitByEffect(effectID);
                Field.Features.Add(MapObject);
            }
            else
            {
                MapObject = null;
            }

            TargetMeeted = AuxUtils.DoLine(x, y, x2, y2, LineProc, true);

            if (MapObject != null)
            {
                Field.Features.Remove(MapObject);
            }
        }