private obj getMob(int id, List <string> param) { short AREA = short.Parse(param[1]); float x = Convert.ToInt32(param[2]); float z = Convert.ToInt32(param[3]); float y = Convert.ToInt32(param[4]); obj o = new obj(); o.AutoMovement = true; o.LocalType = Data.ObjectBase[id].Type; o.OrgMovement = o.AutoMovement; o.StartRunTimer(Global.RandomID.GetRandom(5000, 8000)); o.ID = id; o.Ids = new Global.ID(Global.ID.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 = (o.xSec - 135) * 192 + (x) / 10; o.z = z; o.y = (o.ySec - 92) * 192 + (y) / 10; o.oX = o.x; o.oY = o.y; Systems.aRound(ref o.oX, ref o.oY, 9); o.State = 1; o.Move = 1; o.AutoSpawn = true; o.State = 2; o.HP = Data.ObjectBase[id].HP; o.Kat = 1; o.Agro = new List <_agro>(); o.SpeedWalk = Data.ObjectBase[o.ID].SpeedWalk; o.SpeedRun = Data.ObjectBase[o.ID].SpeedRun; o.SpeedZerk = Data.ObjectBase[o.ID].SpeedZerk; o.oldAgresif = o.Agresif; if (o.Type == 1) { o.Agresif = 1; } //if (o.Type == 0) o.Agresif = 0; o.spawnOran = 20; if (id == 1979 || id == 2101 || id == 2124 || id == 2111 || id == 2112) { o.AutoMovement = false; } o.OrgMovement = o.AutoMovement; if (o.AutoMovement) { o.StartRunTimer(Global.RandomID.GetRandom(5000, 8000)); } o.Type = Systems.RandomType(Data.ObjectBase[id].Level, ref o.Kat, false, ref o.Agresif); o.HP *= o.Kat; if (o.Type == 1) { o.Agresif = 1; } return(o); }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Drop System Base /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public void SkillDrop(obj o, character c, string type) { try { world_item sitem = new world_item(); switch (type) { case "mask": sitem.Model = 10364; sitem.Ids = new Global.ID(Global.ID.IDS.World); sitem.UniqueID = sitem.Ids.GetUniqueID; sitem.PlusValue = 0; sitem.x = this.x + rnd.Next(0, 7); sitem.z = this.z; sitem.y = this.y + rnd.Next(0, 6); sitem.xSec = this.xSec; sitem.ySec = this.ySec; sitem.Type = 3; sitem.fromType = 5; sitem.downType = true; sitem.fromOwner = this.UniqueID; sitem.Owner = ((Systems)this.GetTarget()).Character.Account.ID; Systems.aRound(ref sitem.x, ref sitem.y, 0); Systems.WorldItem.Add(sitem); sitem.Send(Packet.ObjectSpawn(sitem), true); break; } } catch (Exception ex) { Console.WriteLine("Skill drop error {0}", ex); Systems.Debugger.Write(ex); } }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Monster Summon Scrolls /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void HandleSummon(int scrollid) { try { //if (this.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 (this.Character.Network.Party == null) { return; } if (this.Character.Network.Party.Members.Count < 5) { return; } count = this.Character.Network.Party.Members.Count; } int model = GetStrongMobByLevel(this.Character.Information.Level); byte type = Data.ObjectBase[model].ObjectType; for (int i = 1; i <= count; i++) { obj Spawn = new obj(); Spawn.ID = model; Spawn.Type = type; Spawn.Ids = new Global.ID(Global.ID.IDS.Object); Spawn.UniqueID = Spawn.Ids.GetUniqueID; Spawn.x = Character.Position.x; Spawn.z = Character.Position.z; Spawn.y = Character.Position.y; Spawn.oX = Spawn.x; Spawn.oY = Spawn.y; Spawn.xSec = Character.Position.xSec; Spawn.ySec = Character.Position.ySec; Spawn.AutoMovement = true; Spawn.State = 1; Spawn.Move = 1; Spawn.SpeedWalk = Data.ObjectBase[Spawn.ID].SpeedWalk; Spawn.SpeedRun = Data.ObjectBase[Spawn.ID].SpeedRun; Spawn.SpeedZerk = Data.ObjectBase[Spawn.ID].SpeedZerk; Spawn.HP = Data.ObjectBase[model].HP; Spawn.Agresif = Data.ObjectBase[model].Agresif; Spawn.LocalType = 1; Spawn.AutoSpawn = false; Spawn.Kat = 1; Systems.aRound(ref Spawn.x, ref Spawn.y, 1); Systems.Objects.Add(Spawn); Spawn.SpawnMe(); } } catch (Exception ex) { Systems.Debugger.Write(ex); } }
public void MonsterDrop() { try { if (this.GetDie || this.Die) { if (this.Type != 16) { /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Set Target Information /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Systems sys = (Systems)this.GetTarget(); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // If There's no target return /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (sys == null) { return; } sbyte Leveldiff = (sbyte)(sys.Character.Information.Level - Data.ObjectBase[ID].Level); int Amountinfo = 0; if (Math.Abs(Leveldiff) < 10 || Math.Abs(Leveldiff) == 0) { /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Gold Drop /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Gold int Golddrop = rnd.Next(Data.LevelGold[Data.ObjectBase[ID].Level].min, Data.LevelGold[Data.ObjectBase[ID].Level].max); Amountinfo = 0; if (this.Type == 4 && (rnd.Next(0, 200) < 200 * Systems.Rate.Gold)) { Amountinfo = Convert.ToByte(rnd.Next(1, 3)); } if (this.Type == 3 && (rnd.Next(0, 200) < 200 * Systems.Rate.Gold)) { Amountinfo = Convert.ToByte(rnd.Next(4, 6)); } if (this.Type == 1 && (rnd.Next(0, 200) < 200 * Systems.Rate.Gold)) { Amountinfo = Convert.ToByte(rnd.Next(1, 3)); } if (this.Type == 0 && (rnd.Next(0, 200) < 100 * Systems.Rate.Gold)) { Amountinfo = 1; } for (byte a = 1; a <= Amountinfo;) { world_item Gold_Drop = new world_item(); Gold_Drop.amount = Golddrop * Systems.Rate.Gold; Gold_Drop.Model = 1; if (Gold_Drop.amount < 1000) { Gold_Drop.Model = 1; } else if (Gold_Drop.amount > 1000 && Gold_Drop.amount < 10000) { Gold_Drop.Model = 2; } else if (Gold_Drop.amount > 10000) { Gold_Drop.Model = 3; } Gold_Drop.Ids = new Global.ID(Global.ID.IDS.World); Gold_Drop.UniqueID = Gold_Drop.Ids.GetUniqueID; Gold_Drop.x = this.x + rnd.Next(0, 7); Gold_Drop.z = this.z; Gold_Drop.y = this.y + rnd.Next(0, 7); Gold_Drop.xSec = this.xSec; Gold_Drop.ySec = this.ySec; Gold_Drop.Type = 1; Gold_Drop.downType = true; Gold_Drop.fromType = 5; Systems.aRound(ref Gold_Drop.x, ref Gold_Drop.y, 0); Systems.WorldItem.Add(Gold_Drop); Gold_Drop.Send(Packet.ObjectSpawn(Gold_Drop), true); a++; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Send Info To Grabpet /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (((Systems)this.GetTarget()).Character.Grabpet.Active) { ((Systems)this.GetTarget()).Pet_PickupItem(Gold_Drop); } } #endregion /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Drop Database /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Drop Databases foreach (KeyValuePair <string, DarkEmu_GameServer.Global.drop_database> p in Data.DropBase) { Amountinfo = p.Value.GetAmount(Data.ObjectBase[ID].Type, p.Key); if (Amountinfo > 0) { for (byte c = 1; c <= Amountinfo; c++) { world_item Dropped_Item = new world_item(); Dropped_Item.Model = p.Value.GetDrop(Data.ObjectBase[this.ID].Level, this.ID, p.Key, sys.Character.Information.Race); if (Dropped_Item.Model == -1) { continue; } Dropped_Item.Ids = new Global.ID(Global.ID.IDS.World); Dropped_Item.UniqueID = Dropped_Item.Ids.GetUniqueID; Dropped_Item.PlusValue = Function.Items.RandomPlusValue(); Dropped_Item.MagAtt = Function.Items.RandomStatValue(); Dropped_Item.x = this.x + rnd.Next(0, 11); Dropped_Item.z = this.z; Dropped_Item.y = this.y + rnd.Next(0, 11); Dropped_Item.xSec = this.xSec; Dropped_Item.ySec = this.ySec; Dropped_Item.Type = p.Value.GetSpawnType(p.Key); Dropped_Item.fromType = 5; Dropped_Item.downType = true; Dropped_Item.fromOwner = this.UniqueID; Dropped_Item.amount = p.Value.GetQuantity(this.Type, p.Key); Dropped_Item.Owner = ((Systems)this.GetTarget()).Character.Account.ID; Systems.WorldItem.Add(Dropped_Item); Dropped_Item.Send(Packet.ObjectSpawn(Dropped_Item), true); } } } } #endregion } } } catch (Exception ex) { Console.WriteLine("Drop system error: {0}", ex); } }