///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // Forgotten world base entrance
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        void ForgottenWorld(int itemid)
        {
            try
            {
                //Spawn portal
                WorldMgr.Monsters o = new WorldMgr.Monsters();

                float x = Character.Position.x;
                float z = Character.Position.z;
                float y = Character.Position.y;

                o.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object);
                o.UniqueID = o.Ids.GetUniqueID;
                o.xSec = Character.Position.xSec;
                o.ySec = Character.Position.ySec;
                o.x = Formule.gamex(x,o.xSec);
                o.z = z;
                o.y = Formule.gamey(y, o.ySec);

                client.Send(Packet.SpawnPortal(o, Character, itemid));
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
            }
        }
Ejemplo n.º 2
0
        void GMmobkill(int id, ushort type)
        {
            try
            {
                WorldMgr.Monsters o = Helpers.GetInformation.GetObject(id);
                o.ChangeState(0, 2);
                o.AddAgroDmg(Character.Information.UniqueID, o.HP);
                o.HP = 0;
                Send(Packet.StatePack(Character.Information.UniqueID, 8, 0, false));
                o.Send(Packet.Testeffect(id, o.HP));
                o.GetDie = true;
                o.Die    = true;
                o.MonsterDrop();
                o.SetExperience();
                o.StartDeadTimer(5000);
                if (o.Type == 3)
                {
                    Helpers.SendToClient.SendAll(Packet.Unique_Data(6, (int)o.ID, Character.Information.Name));
                }
                //Thread.Sleep(5000);

                /*o.Dispose();
                 * o = null;*/
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
            }
        }
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // Forgotten world base entrance
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        void ForgottenWorld(int itemid)
        {
            try
            {
                //Spawn portal
                WorldMgr.Monsters o = new WorldMgr.Monsters();

                float x = Character.Position.x;
                float z = Character.Position.z;
                float y = Character.Position.y;

                o.Ids      = new GenerateUniqueID(GenerateUniqueID.IDS.Object);
                o.UniqueID = o.Ids.GetUniqueID;
                o.xSec     = Character.Position.xSec;
                o.ySec     = Character.Position.ySec;
                o.x        = Formule.gamex(x, o.xSec);
                o.z        = z;
                o.y        = Formule.gamey(y, o.ySec);

                client.Send(Packet.SpawnPortal(o, Character, itemid));
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
            }
        }
Ejemplo n.º 4
0
        public void SavePlace()
        {
            //Wrap our function inside a catcher
            try
            {
                //Open our packet reader
                PacketReader reader   = new PacketReader(PacketInformation.buffer);
                int          ObjectID = reader.Int32();
                //Get object information
                WorldMgr.Monsters o = Helpers.GetInformation.GetObject(ObjectID);
                //Defaul value for type
                byte type = 0;
                //Switch by object name
                switch (ObjData.Manager.ObjectBase[o.ID].Name)
                {
                case "STORE_CH_GATE":
                    type = 1;
                    break;

                case "STORE_WC_GATE":
                    type = 2;
                    break;

                case "STORE_KT_GATE":
                    type = 5;
                    break;

                case "STORE_EU_GATE":
                    type = 20;
                    break;

                case "STORE_CA_GATE":
                    type = 25;
                    break;

                case "STORE_SD_GATE1":
                    type = 175;
                    break;

                case "STORE_SD_GATE2":
                    type = 176;
                    break;
                }
                //Set new return global information
                Character.Information.Place = type;
                //Update database
                DB.query("update character set savearea='" + Character.Information.Place + "' where id='" + Character.Information.CharacterID + "'");
                //Send confirmation packet
                client.Send(Packet.UpdatePlace());
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
            }
        }
Ejemplo n.º 5
0
 public static double gamedistance(WorldMgr.Monsters p1, WorldMgr.character._pos p2)
 {  // Nukei: for test with range checking on objects, maybe faster than only calculating distance
     if ((p1.xSec >= p2.xSec - 1) && (p1.xSec <= p2.xSec + 1) && (p1.ySec >= p2.ySec - 1) && (p1.ySec <= p2.ySec + 1))
     {
         return(gamedistance(p1.x, p1.y, p2.x, p2.y));
     }
     else
     {
         return(99999999999999);
     }
 }
Ejemplo n.º 6
0
 void GM_ISATTACK(int id, ushort type)
 {
     try
     {
         WorldMgr.Monsters o = Helpers.GetInformation.GetObject(id);
         o.Agresif = 1;
     }
     catch (Exception ex)
     {
         Log.Exception(ex);
     }
 }
Ejemplo n.º 7
0
        /*
         * public static void StartEffectDamage(int intval, int HitPower, byte e_index, object target)
         * {
         *  try
         *  {
         *      if (target.sys.Character.Action.DeBuff.Effect.EffectImpactTimer[e_index] != null) target.sys.Character.Action.DeBuff.Effect.EffectImpactTimer[e_index].Dispose();
         *
         *      target.sys.Character.Action.DeBuff.Effect.EffectImpactTimer[e_index] = new Timer(
         *          new TimerCallback(
         *              delegate(object e)
         *              {
         *                  if (target.type == true) // player
         *                  {
         *                      if (!target.sys.Character.State.Die)
         *                      {
         *                          target.HP(HitPower);
         *                          target.sys.Send(Packet.Effects2Dmg(target.sys.Character.Information.UniqueID, HitPower));
         *                      }
         *                      else return;
         *                  }
         *                  else if (target.type == false) // mob
         *                  {
         *                      if (!target.os.Die)
         *                      {
         *                          target.HP(HitPower);
         *                          target.os.Send(Packet.Effects2Dmg(target.ID, HitPower));
         *                      }
         *                      else return;
         *                  }
         *              }
         *      ), null, 0, intval);
         *  }
         *  catch (Exception ex)
         *  {
         *      Log.Exception(ex);
         *      Console.WriteLine("StartEffectDamage() Error {0}", ex);
         *  }
         * }
         */
        ///////////////////////////////////////////////////////////////////////////
        // Shock state
        ///////////////////////////////////////////////////////////////////////////
        public static void GenerateEffect_es(object target, int skillid)
        {
            // Get effects parameters
            int Power       = ObjData.Manager.SkillBase[skillid].Properties1["es"];
            int Probability = ObjData.Manager.SkillBase[skillid].Properties2["es"];

            int Random = Rnd.Next(1, 100);

            byte slot;

            // if effect succeeded
            if (Random <= Probability)
            {
                if (target.GetType().ToString() == "CLGameServer.PlayerMgr") // player
                {
                    PlayerMgr sys = target as PlayerMgr;

                    if (sys.Character.State.Die == true)
                    {
                        return;
                    }

                    slot = sys.DeBuffGetFreeSlot();
                    sys.Character.Action.DeBuff.Effect.EffectID[slot] = EffectNumbers.SHOCKED;
                    sys.Character.Action.DeBuff.Effect.SkillID[slot]  = skillid;

                    sys.StartEffectTimer(Power * 100, slot);
                    sys.client.Send(Packet.EffectUpdate(sys.Character.Information.UniqueID, EffectNumbers.SHOCKED, true));

                    // Timer for burn state
                }
                else if (target.GetType().ToString() == "CLGameServer.WorldMgr.Monsters") // mob
                {
                    WorldMgr.Monsters os = target as WorldMgr.Monsters;

                    if (os.Die == true)
                    {
                        return;
                    }

                    slot = os.DeBuffGetFreeSlot();
                    os.DeBuff.Effect.EffectID[slot] = EffectNumbers.SHOCKED;
                    os.DeBuff.Effect.SkillID[slot]  = skillid;

                    os.StartEffectTimer(Power * 100, slot);
                    os.Send(Packet.EffectUpdate(os.UniqueID, EffectNumbers.SHOCKED, true));

                    // Burn timer
                    // Add (character details).
                }
            }
        }
Ejemplo n.º 8
0
        public static void DeleteEffect_fb(object target, byte EffectSlot)
        {
            try
            {
                if (target.GetType().ToString() == "CLGameServer.PlayerMgr") // player
                {
                    PlayerMgr sys = target as PlayerMgr;

                    sys.Send(Packet.EffectUpdate(sys.Character.Information.UniqueID, sys.Character.Action.DeBuff.Effect.EffectID[EffectSlot], false));

                    sys.Character.Action.DeBuff.Effect.EffectID[EffectSlot] = 0;
                    sys.Character.Action.DeBuff.Effect.SkillID[EffectSlot]  = 0;

                    //sys.Character.Speed.AttackSpeedModifier = 1;

                    sys.Character.Speed.RunSpeed     *= 2;
                    sys.Character.Speed.WalkSpeed    *= 2;
                    sys.Character.Speed.BerserkSpeed *= 2;

                    sys.Send(Packet.SetSpeed(sys.Character.Information.UniqueID, sys.Character.Speed.WalkSpeed, sys.Character.Speed.RunSpeed));
                }
                else if (target.GetType().ToString() == "CLGameServer.WorldMgr.Monsters") // mob
                {
                    WorldMgr.Monsters os = target as WorldMgr.Monsters;

                    os.Send(Packet.EffectUpdate(os.UniqueID, os.DeBuff.Effect.EffectID[EffectSlot], false));

                    os.DeBuff.Effect.EffectID[EffectSlot] = 0;
                    os.DeBuff.Effect.SkillID[EffectSlot]  = 0;

                    // attack speed
                    os.AttackSpeed = 1;

                    // movement speed
                    os.RunningSpeed *= 2;
                    os.WalkingSpeed *= 2;
                    //Set bool to false again
                    os.Frostbite = false;

                    os.Send(Packet.SetSpeed(os.UniqueID, os.WalkingSpeed, os.RunningSpeed));
                }
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
            }
        }
Ejemplo n.º 9
0
 public void SelectObject()
 {
     try
     {
         if (Character.Information.Scroll)
         {
             return;
         }
         PacketReader Reader   = new PacketReader(PacketInformation.buffer);
         int          objectid = Reader.Int32();
         if (objectid == 0)
         {
             return;
         }
         //Character.Action.Target = objectid;
         //if (Character.Position.Walking) StopPlayerMovementO(objectid);
         if (objectid == Character.Information.UniqueID)
         {
             return;
         }
         WorldMgr.Monsters o = Helpers.GetInformation.GetObject(objectid);
         if (o != null)
         {
             byte[] bb = Packet.SelectObject(objectid, o.ID, o.LocalType, o.HP);
             if (bb == null)
             {
                 return;
             }
             client.Send(bb);
             //Character.Action.Object = o;
             return;
         }
         PlayerMgr sys = Helpers.GetInformation.GetPlayers(objectid);
         if (o == null && sys != null)
         {
             client.Send(Packet.SelectObject(objectid, 0, 5, sys.Character.Stat.Hp));
             Character.Action.Object = sys;
             return;
         }
         Reader.Close();
     }
     catch (Exception ex)
     {
         Console.WriteLine("Selectobject error: {0}", ex);
     }
 }
Ejemplo n.º 10
0
 void GMmovetonpc(string NPCNAME)
 {
     WorldMgr.Monsters selectednpc = Helpers.GetInformation.GetObject(NPCNAME);
     if (selectednpc != null)
     {
         Character.Position.xSec = selectednpc.ySec;
         Character.Position.ySec = selectednpc.ySec;
         Character.Position.x    = (float)selectednpc.x;
         Character.Position.z    = (float)selectednpc.z;
         Character.Position.y    = (float)selectednpc.y;
         BuffAllClose();
         ObjectDeSpawnCheck();
         DeSpawnMe();
         //client.Send(Packet.TeleportOtherStart());
         Character.InGame = false;
         client.Send(Packet.TeleportImage(selectednpc.xSec, selectednpc.ySec));
         Character.Teleport = true;
     }
     else
     {
         client.Send(Packet.GameMaster(1, 0, 0, 0, "Could not find the chosen npc, teleporting has been stopped"));
     }
 }
        /////////////////////////////////////////////////////////////////////////////
        // Teleports
        /////////////////////////////////////////////////////////////////////////////
        public static void TeleportBuilding()
        {
            TxtFile.ReadFromFile(@"\data\teleportbuilding.txt", '\t');

            string s = null;

            for (int l = 0; l <= TxtFile.amountLine - 1; l++)
            {
                s = TxtFile.lines[l].ToString();
                TxtFile.commands = s.Split('\t');

                if (!(short.Parse(TxtFile.commands[41]) == 0))
                {
                    WorldMgr.Monsters o = new WorldMgr.Monsters();
                    int ID = Convert.ToInt32(TxtFile.commands[1]);
                    short AREA = short.Parse(TxtFile.commands[41]);
                    float x = Convert.ToSingle(TxtFile.commands[43]);
                    float z = Convert.ToSingle(TxtFile.commands[44]);
                    float y = Convert.ToSingle(TxtFile.commands[45]);
                    o.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object);
                    o.UniqueID = o.Ids.GetUniqueID;
                    objectdata os = new objectdata();
                    os.Name = TxtFile.commands[2];
                    Manager.ObjectBase[ID] = os;
                    o.ID = ID;
                    o.area = AREA;
                    o.xSec = Convert.ToByte((AREA).ToString("X4").Substring(2, 2), 16);
                    o.ySec = Convert.ToByte((AREA).ToString("X4").Substring(0, 2), 16);
                    o.x = Formule.gamex(x,o.xSec);
                    o.z = z;
                    o.y = Formule.gamey(y, o.ySec);
                    o.HP = 0x000000C0;
                    o.LocalType = 3;

                    Helpers.Manager.Objects.Add(o);
                }
            }
            Console.WriteLine("[INFO] Loaded " + TxtFile.amountLine + " teleport buildings");
            TeleportData();
        }
Ejemplo n.º 12
0
        public static void GenerateEffect_fb(object target, int skillid)
        {
            // Get effects parameters
            int Power       = ObjData.Manager.SkillBase[skillid].Properties1["fb"];
            int Probability = ObjData.Manager.SkillBase[skillid].Properties2["fb"];

            int Random = Rnd.Next(1, 100);

            byte slot;


            // if effect succeeded
            if (Random <= Probability)
            {
                if (target.GetType().ToString() == "CLGameServer.PlayerMgr") // player
                {
                    PlayerMgr sys = target as PlayerMgr;

                    if (sys.Character.State.Die == true)
                    {
                        return;
                    }

                    slot = sys.DeBuffGetFreeSlot();
                    sys.Character.Action.DeBuff.Effect.EffectID[slot] = EffectNumbers.FROSTBITE;
                    sys.Character.Action.DeBuff.Effect.SkillID[slot]  = skillid;

                    sys.StartEffectTimer(Power * 100, slot);
                    sys.Send(Packet.EffectUpdate(sys.Character.Information.UniqueID, EffectNumbers.FROSTBITE, true));

                    // attack speed
                    //sys.Character.Speed.AttackSpeedModifier = 1.5;

                    sys.Character.Speed.RunSpeed     /= 2;
                    sys.Character.Speed.WalkSpeed    /= 2;
                    sys.Character.Speed.BerserkSpeed /= 2;

                    sys.Send(Packet.SetSpeed(sys.Character.Information.UniqueID, sys.Character.Speed.WalkSpeed, sys.Character.Speed.RunSpeed));
                }
                else if (target.GetType().ToString() == "CLGameServer.WorldMgr.Monsters") // mob
                {
                    WorldMgr.Monsters os = target as WorldMgr.Monsters;

                    if (os.Die == true)
                    {
                        return;
                    }

                    slot = os.DeBuffGetFreeSlot();
                    os.DeBuff.Effect.EffectID[slot] = EffectNumbers.FROSTBITE;
                    os.DeBuff.Effect.SkillID[slot]  = skillid;
                    //target.os.DeBuff.Effect.EffectPower[slot] = Power;

                    os.StartEffectTimer(Power * 100, slot);

                    os.Send(Packet.EffectUpdate(os.UniqueID, EffectNumbers.FROSTBITE, true));

                    // attack speed
                    os.AttackSpeed = 1.5;

                    // movement speed
                    os.RunningSpeed /= 2;
                    os.WalkingSpeed /= 2;

                    //Set our bool active
                    os.Frostbite = true;

                    os.Send(Packet.SetSpeed(os.UniqueID, os.WalkingSpeed, os.RunningSpeed));
                }
            }
        }
Ejemplo n.º 13
0
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // Monster Summon Scrolls
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        void HandleSummon(int scrollid)
        {
            try
            {
                //if (Character.Information.Level < 10) return;

                int count = 1;//Default should be set to 1

                //single scroll
                if (scrollid == 3936)
                {
                    count = 5;
                }
                //party scroll
                if (scrollid == 3935)
                {
                    if (Character.Network.Party == null)
                    {
                        return;
                    }
                    if (Character.Network.Party.Members.Count < 5)
                    {
                        return;
                    }

                    count = Character.Network.Party.Members.Count;
                }

                int  model = GetStrongMobByLevel(Character.Information.Level);
                byte type  = ObjData.Manager.ObjectBase[model].ObjectType;

                for (int i = 1; i <= count; i++)
                {
                    WorldMgr.Monsters Spawn = new WorldMgr.Monsters();

                    Spawn.ID             = model;
                    Spawn.Type           = type;
                    Spawn.Ids            = new GenerateUniqueID(GenerateUniqueID.IDS.Object);
                    Spawn.UniqueID       = Spawn.Ids.GetUniqueID;
                    Spawn.x              = Character.Position.x;
                    Spawn.z              = Character.Position.z;
                    Spawn.y              = Character.Position.y;
                    Spawn.OriginalX      = Spawn.x;
                    Spawn.OriginalY      = Spawn.y;
                    Spawn.xSec           = Character.Position.xSec;
                    Spawn.ySec           = Character.Position.ySec;
                    Spawn.AutoMovement   = true;
                    Spawn.State          = 1;
                    Spawn.Move           = 1;
                    Spawn.WalkingSpeed   = ObjData.Manager.ObjectBase[Spawn.ID].SpeedWalk;
                    Spawn.RunningSpeed   = ObjData.Manager.ObjectBase[Spawn.ID].SpeedRun;
                    Spawn.BerserkerSpeed = ObjData.Manager.ObjectBase[Spawn.ID].SpeedZerk;
                    Spawn.HP             = ObjData.Manager.ObjectBase[model].HP;
                    Spawn.Agresif        = ObjData.Manager.ObjectBase[model].Agresif;
                    Spawn.LocalType      = 1;
                    Spawn.AutoSpawn      = false;
                    Spawn.Kat            = 1;
                    Helpers.Functions.aRound(ref Spawn.x, ref Spawn.y, 1);
                    Helpers.Manager.Objects.Add(Spawn);
                    Spawn.SpawnMe();
                }
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
            }
        }
        public targetObject(object o, PlayerMgr player)
        {
            try
            {
                os = null;
                o_x = 0;
                o_y = 0;
                o_z = 0;
                magdef = 0;
                phydef = 0;
                type = false;

                if (o == null) return;
                main = player;
                if (main == null) return;
                if (o.GetType().ToString() == "CLGameServer.WorldMgr.Monsters")
                {
                    os = o as Monsters;
                    if (os.Die) { player.StopAttackTimer(); return; }
                    o_x = (float)os.x;
                    o_y = (float)os.y;
                    o_z = (float)os.z;
                    xsec = os.xSec;
                    ysec = os.ySec;
                    magdef = ObjData.Manager.ObjectBase[os.ID].MagDef;
                    phydef = ObjData.Manager.ObjectBase[os.ID].PhyDef;
                    id = os.UniqueID;
                    type = false;
                    hps = os.HP;
                    state = os.State;
                    main.Character.Action.MonsterID.Add(os.UniqueID);
                    mabsrob = 0;
                    os.Target = player;
                }
                if (o.GetType().ToString() == "CLGameServer.PlayerMgr")
                {
                    sys = o as PlayerMgr;
                    o_x = sys.Character.Position.x;
                    o_y = sys.Character.Position.y;
                    o_z = sys.Character.Position.z;
                    xsec = sys.Character.Position.xSec;
                    ysec = sys.Character.Position.ySec;
                    magdef = sys.Character.Stat.MagDef;
                    phydef = sys.Character.Stat.PhyDef;
                    id = sys.Character.Information.UniqueID;
                    absorbphy = sys.Character.Stat.phy_Absorb;
                    absorbmag = sys.Character.Stat.mag_Absorb;
                    state = sys.Character.State.LastState;
                    hps = sys.Character.Stat.SecondHp;
                    type = true;
                    mabsrob = sys.Character.Stat.Absorb_mp;
                }
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
            }
        }
        void GMloadmonster(int M_ObjID, byte M_Count, byte M_Type, bool Zoe = false)
        {
            try
            {

                for (int index = 1; index <= M_Count; index++)
                {

                    WorldMgr.Monsters o = new WorldMgr.Monsters();
                    o.ID = M_ObjID;
                    o.Type = M_Type;
                    o.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object);
                    o.UniqueID = o.Ids.GetUniqueID;
                    if (Zoe)
                    {
                        ObjData.SpawnData.TempSpawn.Add(o.UniqueID);
                        o.AutoMovement = false;
                    }
                    else
                    {
                        o.AutoMovement = true;
                    }
                    o.x = Character.Position.x;
                    o.z = Character.Position.z;
                    o.y = Character.Position.y;
                    o.OriginalX = o.x;
                    o.OriginalY = o.y;
                    o.xSec = Character.Position.xSec;
                    o.ySec = Character.Position.ySec;
                    o.Angle = (ushort)(index / M_Count * 65535 / M_Count * index);
                    o.HP = ObjData.Manager.ObjectBase[o.ID].HP;
                    o.Agresif = ObjData.Manager.ObjectBase[o.ID].Agresif;
                    if (ObjData.Manager.ObjectBase[o.ID].Type == 4) o.LocalType = 4;
                    else if (ObjData.Manager.ObjectBase[o.ID].Type == 1) o.LocalType = 1;
                    else if (ObjData.Manager.ObjectBase[o.ID].Type == 2) o.LocalType = 2;
                    o.AutoSpawn = false;
                    o.Kat = 1;
                    o.WalkingSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedWalk;
                    o.RunningSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedRun;
                    o.BerserkerSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedZerk;
                    switch (M_Type)
                    {
                        case 1:
                            o.Agresif = 1;
                            o.HP *= 2;
                            o.Kat = 2;
                            o.StartAgressiveTimer(2000);
                            break;
                        case 4:
                            o.HP *= 20;
                            o.Kat = 20;
                            o.Agresif = 1;
                            o.StartAgressiveTimer(2000);
                            break;
                        case 5:
                            o.HP *= 100;
                            o.Kat = 100;
                            o.Agresif = 1;
                            o.StartAgressiveTimer(2000);
                            break;
                        case 16:
                            o.HP *= 10;
                            o.Kat = 10;
                            break;
                        case 17:
                            o.HP *= 20;
                            o.Kat = 20;
                            o.Agresif = 1;
                            o.StartAgressiveTimer(2000);
                            break;
                        case 20:
                            o.HP *= 210;
                            o.Kat = 210;
                            o.Agresif = 1;
                            o.StartAgressiveTimer(2000);
                            break;
                    }

                    Helpers.Manager.Objects.Add(o);
                    o.SpawnMe();
                    if (M_Type == 3 || M_Type == 5)
                    {
                        Helpers.SendToClient.SendAll(Packet.Unique_Data(5, o.ID, string.Empty));
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // Monster Summon Scrolls
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        void HandleSummon(int scrollid)
        {
            try
            {
                //if (Character.Information.Level < 10) return;

                int count = 1;//Default should be set to 1

                //single scroll
                if (scrollid == 3936)
                {
                    count = 5;
                }
                //party scroll
                if (scrollid == 3935)
                {
                    if (Character.Network.Party == null) return;
                    if (Character.Network.Party.Members.Count < 5) return;

                    count = Character.Network.Party.Members.Count;
                }

                int model = GetStrongMobByLevel(Character.Information.Level);
                byte type = ObjData.Manager.ObjectBase[model].ObjectType;

                for (int i = 1; i <= count; i++)
                {
                    WorldMgr.Monsters Spawn = new WorldMgr.Monsters();

                    Spawn.ID = model;
                    Spawn.Type = type;
                    Spawn.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object);
                    Spawn.UniqueID = Spawn.Ids.GetUniqueID;
                    Spawn.x = Character.Position.x;
                    Spawn.z = Character.Position.z;
                    Spawn.y = Character.Position.y;
                    Spawn.OriginalX = Spawn.x;
                    Spawn.OriginalY = Spawn.y;
                    Spawn.xSec = Character.Position.xSec;
                    Spawn.ySec = Character.Position.ySec;
                    Spawn.AutoMovement = true;
                    Spawn.State = 1;
                    Spawn.Move = 1;
                    Spawn.WalkingSpeed = ObjData.Manager.ObjectBase[Spawn.ID].SpeedWalk;
                    Spawn.RunningSpeed = ObjData.Manager.ObjectBase[Spawn.ID].SpeedRun;
                    Spawn.BerserkerSpeed = ObjData.Manager.ObjectBase[Spawn.ID].SpeedZerk;
                    Spawn.HP = ObjData.Manager.ObjectBase[model].HP;
                    Spawn.Agresif = ObjData.Manager.ObjectBase[model].Agresif;
                    Spawn.LocalType = 1;
                    Spawn.AutoSpawn = false;
                    Spawn.Kat = 1;
                    Helpers.Functions.aRound(ref Spawn.x, ref Spawn.y, 1);
                    Helpers.Manager.Objects.Add(Spawn);
                    Spawn.SpawnMe();
                }
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
            }
        }
        public void RandomMonster(int sID, byte randomTYPE)
        {
            try
            {
                if (ObjData.Manager.ObjectBase[sID].SpeedWalk == 0 && ObjData.Manager.ObjectBase[sID].SpeedRun == 0)
                {
                    return;
                }
                Monsters o = new Monsters();
                o.ID = sID;
                o.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object);
                o.UniqueID = o.Ids.GetUniqueID;
                o.x = x;
                o.z = z;
                o.y = y;
                Helpers.Functions.aRound(ref o.x, ref o.y, 2);
                o.UniqueGuardMode = true;
                o.OriginalY = OriginalY;
                o.OriginalX = OriginalX;

                o.xSec = xSec;
                o.ySec = ySec;

                o.AutoMovement = AutoMovement;
                o.AutoSpawn = true;
                o.Move = 1;

                o.HP = ObjData.Manager.ObjectBase[o.ID].HP;
                o.WalkingSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedWalk;
                o.RunningSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedRun;
                o.BerserkerSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedZerk;
                o.Agresif = 0;
                o.LocalType = 1;
                o.State = 2;
                o.Kat = 1;
                o.spawnOran = 0;

                if (randomTYPE == 0) // Standart
                {
                    o.Type = Helpers.Functions.RandomType(ObjData.Manager.ObjectBase[o.ID].Level, ref Kat, false, ref o.Agresif);
                    if (o.Type == 1) o.Agresif = 1;
                    if (ObjData.Manager.ObjectBase[o.ID].Agresif == 1)
                    {
                        o.Agresif = 1;
                    }
                    o.HP *= Kat;
                }
                else
                {
                    if (randomTYPE == 6)
                        o.HP *= 4;
                    else if (randomTYPE == 4)
                        o.HP *= 20;
                    else if (randomTYPE == 1)
                        o.HP *= 2;
                    else if (randomTYPE == 16)
                        o.HP *= 10;
                    else if (randomTYPE == 17)
                        o.HP *= 20;
                    else if (randomTYPE == 20)
                        o.HP *= 210;
                    o.AutoSpawn = false;
                    o.Type = randomTYPE;
                    o.Agresif = 1;
                }
                Helpers.Manager.Objects.Add(o);
                o.SpawnMe();
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
            }
        }
Ejemplo n.º 18
0
        void GMloadmonster(int M_ObjID, byte M_Count, byte M_Type, bool Zoe = false)
        {
            try
            {
                for (int index = 1; index <= M_Count; index++)
                {
                    WorldMgr.Monsters o = new WorldMgr.Monsters();
                    o.ID       = M_ObjID;
                    o.Type     = M_Type;
                    o.Ids      = new GenerateUniqueID(GenerateUniqueID.IDS.Object);
                    o.UniqueID = o.Ids.GetUniqueID;
                    if (Zoe)
                    {
                        ObjData.SpawnData.TempSpawn.Add(o.UniqueID);
                        o.AutoMovement = false;
                    }
                    else
                    {
                        o.AutoMovement = true;
                    }
                    o.x         = Character.Position.x;
                    o.z         = Character.Position.z;
                    o.y         = Character.Position.y;
                    o.OriginalX = o.x;
                    o.OriginalY = o.y;
                    o.xSec      = Character.Position.xSec;
                    o.ySec      = Character.Position.ySec;
                    o.Angle     = (ushort)(index / M_Count * 65535 / M_Count * index);
                    o.HP        = ObjData.Manager.ObjectBase[o.ID].HP;
                    o.Agresif   = ObjData.Manager.ObjectBase[o.ID].Agresif;
                    if (ObjData.Manager.ObjectBase[o.ID].Type == 4)
                    {
                        o.LocalType = 4;
                    }
                    else if (ObjData.Manager.ObjectBase[o.ID].Type == 1)
                    {
                        o.LocalType = 1;
                    }
                    else if (ObjData.Manager.ObjectBase[o.ID].Type == 2)
                    {
                        o.LocalType = 2;
                    }
                    o.AutoSpawn      = false;
                    o.Kat            = 1;
                    o.WalkingSpeed   = ObjData.Manager.ObjectBase[o.ID].SpeedWalk;
                    o.RunningSpeed   = ObjData.Manager.ObjectBase[o.ID].SpeedRun;
                    o.BerserkerSpeed = ObjData.Manager.ObjectBase[o.ID].SpeedZerk;
                    switch (M_Type)
                    {
                    case 1:
                        o.Agresif = 1;
                        o.HP     *= 2;
                        o.Kat     = 2;
                        o.StartAgressiveTimer(2000);
                        break;

                    case 4:
                        o.HP     *= 20;
                        o.Kat     = 20;
                        o.Agresif = 1;
                        o.StartAgressiveTimer(2000);
                        break;

                    case 5:
                        o.HP     *= 100;
                        o.Kat     = 100;
                        o.Agresif = 1;
                        o.StartAgressiveTimer(2000);
                        break;

                    case 16:
                        o.HP *= 10;
                        o.Kat = 10;
                        break;

                    case 17:
                        o.HP     *= 20;
                        o.Kat     = 20;
                        o.Agresif = 1;
                        o.StartAgressiveTimer(2000);
                        break;

                    case 20:
                        o.HP     *= 210;
                        o.Kat     = 210;
                        o.Agresif = 1;
                        o.StartAgressiveTimer(2000);
                        break;
                    }

                    Helpers.Manager.Objects.Add(o);
                    o.SpawnMe();
                    if (M_Type == 3 || M_Type == 5)
                    {
                        Helpers.SendToClient.SendAll(Packet.Unique_Data(5, o.ID, string.Empty));
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
        /////////////////////////////////////////////////////////////////////////////
        // Load objects
        /////////////////////////////////////////////////////////////////////////////
        public static void LoadObject()
        {
            TxtFile.ReadFromFile(@"\data\npcpos.txt", '\t');
            int npcamount = Helpers.Settings.Rate.MonsterSpawn;
            for (int l = 0; l <= TxtFile.amountLine - 1; l++)
            {
                TxtFile.commands =  TxtFile.lines[l].ToString().Split('\t');
                int ID = Convert.ToInt32(TxtFile.commands[0]);
                string namecheck = Manager.ObjectBase[ID].Name;
                if (namecheck.Contains("MOB_"))
                {
                    for (int i = 1; i <= npcamount; i++)
                    {
                        WorldMgr.Monsters o = new WorldMgr.Monsters();
                        short AREA = short.Parse(TxtFile.commands[1]);
                        float x = Convert.ToInt32(TxtFile.commands[2]);
                        float z = Convert.ToInt32(TxtFile.commands[3]);
                        float y = Convert.ToInt32(TxtFile.commands[4]);
                        o.ID = ID;
                        o.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object);
                        o.UniqueID = o.Ids.GetUniqueID;

                        o.xSec = Convert.ToByte((AREA).ToString("X4").Substring(2, 2), 16);
                        o.ySec = Convert.ToByte((AREA).ToString("X4").Substring(0, 2), 16);
                        o.x = Formule.gamex(x, o.xSec);
                        o.z = z;
                        o.y = Formule.gamey(y, o.ySec);
                        if (i > 1)
                        {
                            Helpers.Functions.aRound(ref o.x, ref o.y, Rnd.Next(1, 6));
                        }

                        o.OriginalX = o.x;
                        o.OriginalY = o.y;

                        o.State = 1;
                        o.Move = 1;
                        o.AutoSpawn = true;
                        o.State = 2;
                        o.HP = Manager.ObjectBase[ID].HP;
                        o.Kat = 1;
                        o.AgressiveDMG = new List<WorldMgr._agro>();
                        o.WalkingSpeed = Manager.ObjectBase[o.ID].SpeedWalk;
                        o.RunningSpeed = Manager.ObjectBase[o.ID].SpeedRun;
                        o.BerserkerSpeed = Manager.ObjectBase[o.ID].SpeedZerk;
                        o.Agresif = Manager.ObjectBase[o.ID].Agresif;
                        if (o.Type == 1) o.Agresif = 1;
                        o.spawnOran = 20;
                        if (o.WalkingSpeed == 0 && o.RunningSpeed == 0)
                        {
                            o.AutoMovement = false;
                            o.LocalType = 5;//fix for static flowers,ishades,etc
                        }
                        else
                        {
                            o.AutoMovement = true;
                            o.LocalType = Manager.ObjectBase[ID].Type;
                        }
                        if (o.AutoMovement) o.StartRunTimer(Rnd.Next(1, 5) * 1000);

                        if (Manager.ObjectBase[ID].ObjectType != 3)
                        {
                            o.Type = Helpers.Functions.RandomType(Manager.ObjectBase[ID].Level, ref o.Kat, false, ref o.Agresif);
                            o.HP *= o.Kat;
                            if (o.Type == 1)
                                o.Agresif = 1;
                            Helpers.Manager.Objects.Add(o);

                        }
                        else
                        {
                            o.AutoSpawn = false;
                            o.Type = Manager.ObjectBase[ID].ObjectType;
                            //GlobalUnique.AddObject(o);

                        }
                        if (namecheck.Contains("CH")) Manager.ObjectBase[ID].Race = 0;
                        if (namecheck.Contains("EU")) Manager.ObjectBase[ID].Race = 1;
                        if (!namecheck.Contains("CH") && (!namecheck.Contains("EU"))) Manager.ObjectBase[ID].Race = 2;
                        o.InitalizeNpcs();
                    }
                }
            }
            Console.WriteLine("[INFO] Loaded " + TxtFile.amountLine + " monsters");
        }
        /////////////////////////////////////////////////////////////////////////////
        // Load npcs
        /////////////////////////////////////////////////////////////////////////////
        public static void LoadNpcs()
        {
            TxtFile.ReadFromFile(@"\data\npcpos.txt", '\t');
            string input = null;
            string s = null;
            string[] npcangle1;
            int count = TxtFile.amountLine;
            uint index = 0;
            int countme = 0;
            for (int l = 0; l <= TxtFile.amountLine - 1; l++)
            {
                s = TxtFile.lines[l].ToString();
                TxtFile.commands = s.Split('\t');
                int ID = Convert.ToInt32(TxtFile.commands[0]);
                byte race = Manager.ObjectBase[ID].Type;
                string namecheck = Manager.ObjectBase[ID].Name;

                if (namecheck.Contains("NPC_"))
                {
                    countme += 1;
                    TextReader Npcangle = new StreamReader(Environment.CurrentDirectory + @"\data\NpcAngles.txt");
                    WorldMgr.Monsters o = new WorldMgr.Monsters();
                    index++;
                    short AREA = short.Parse(TxtFile.commands[1]);
                    float x = Convert.ToSingle(TxtFile.commands[2]);
                    float z = Convert.ToSingle(TxtFile.commands[3]);
                    float y = Convert.ToSingle(TxtFile.commands[4]);

                    byte movement = 0;
                    o.Agresif = movement;
                    o.AutoMovement = true;
                    o.ID = ID;
                    o.Ids = new GenerateUniqueID(GenerateUniqueID.IDS.Object);
                    o.UniqueID = o.Ids.GetUniqueID;
                    o.area = AREA;
                    o.xSec = Convert.ToByte((AREA).ToString("X4").Substring(2, 2), 16);
                    o.ySec = Convert.ToByte((AREA).ToString("X4").Substring(0, 2), 16);
                    o.x = Formule.gamex(x, o.xSec);
                    o.z = z;
                    o.y = Formule.gamey(y, o.ySec);
                    o.OriginalX = o.x;
                    o.OriginalY = o.y;
                    o.State = 1;
                    o.Move = 1;
                    o.LocalType = 2;
                    o.AutoSpawn = true;
                    o.State = 2;
                    o.HP = Manager.ObjectBase[ID].HP;
                    o.Kat = 1;
                    o.AgressiveDMG = new List<WorldMgr._agro>();
                    o.spawnOran = 20;

                    while ((input = Npcangle.ReadLine()) != null)
                    {
                        npcangle1 = input.Split(',');
                        if (ID == ushort.Parse(npcangle1[0]) && AREA == ushort.Parse(npcangle1[2]))
                        {
                            o.Angle = ushort.Parse(npcangle1[1]);
                            break;
                        }
                    }
                    Npcangle.Close();

                    if (Manager.ObjectBase[ID].ObjectType != 3)
                    {
                        o.Type = Helpers.Functions.RandomType(Manager.ObjectBase[ID].Level, ref o.Kat, false, ref o.Agresif);
                        o.HP *= o.Kat;
                        if (o.Type == 1) o.Agresif = 1;
                        Helpers.Manager.Objects.Add(o);
                    }
                    else
                    {
                        o.AutoSpawn = false;
                        o.Type = Manager.ObjectBase[ID].ObjectType;
                        // This is unique NPC_MONSTER
                    }
                }
            }
            Console.WriteLine("[INFO] Loaded " + TxtFile.amountLine + " npc's");
        }