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; } }
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); } }