منتدي اكواد

منتدي اكواد (https://code.vpscairo.com/index.php)
-   تطوير سيرفرات كونكر (https://code.vpscairo.com/forumdisplay.php?f=11)
-   -   اضافه شخصية Windwalker (https://code.vpscairo.com/showthread.php?t=1048)

محمد ياسر 2019-07-26 07:53 PM

اضافه شخصية Windwalker
 

السلام عليكم ورحمة الله وبركاته
اتمني تكونوا في صحه وعافيه
الموضوع ده قديم اووي بس لناس الي بتحاول ترفع سورس ليه من 5700 وهي طالعه بتعمل ابجريد للكل فايكون مفيد انه تشوف الموضوع ده يلا نبداء


هتروح باكت هندل
فويد EquipItem

هتنزل لحد دى
كود PHP:

 if (client.Entity.Class >= 80 && client.Entity.Class <= 85

فوقيها هتحط دى
كود PHP:

if (client.Entity.Class >= 160 && client.Entity.Class <= 165)
                {
                    
can2hand true;
                    
can2wpn true;
                } 

هتنزل هتلاقى سطر بالشكل دة
كود PHP:

 if (client.Entity.Class >= 100 

هتعملو بالشكل دة
كود PHP:

if (client.Entity.Class >= 100 && client.Entity.Class <= 145

هتروح ل فويد دة EquipPassJobReq

هتحط دة
كود PHP:

 #region Windwalker
                
case 160: if (client.Entity.Class <= 165 && client.Entity.Class >= 160) return true; break;
                case 
161: if (client.Entity.Class <= 165 && client.Entity.Class >= 161) return true; break;
                case 
162: if (client.Entity.Class <= 165 && client.Entity.Class >= 162) return true; break;
                case 
163: if (client.Entity.Class <= 165 && client.Entity.Class >= 163) return true; break;
                case 
164: if (client.Entity.Class <= 165 && client.Entity.Class >= 164) return true; break;
                case 
165: if (client.Entity.Class == 165) return true; break;
                
#endregion 

هتروح ل فويد دة
كود PHP:

 public static ushort ItemPosition(uint ID

تحت دى هتحط دول
كود PHP:

UInt32 iType ID 1000

كود PHP:

if (ID >= 170000 && ID <= 170309)
                return 
ConquerItem.Head;
 if (
ID >= 101000 && ID <= 101309)
                return 
ConquerItem.Armor;
 if (
ID >= 626003 && ID <= 626439)
                return 
ConquerItem.RightWeapon;
            if (
ID >= 626003 && ID <= 626439)
                return 
ConquerItem.LeftWeapon

هتروح ل فويد دة GetPositionFromID

تحت دى
كود PHP:

 UInt32 iType itemid 1000

هتحط دول
كود PHP:

 if (iType == 170)
                return 
Positions.Head;
  if (
iType == 101)
                return 
Positions.Armor;
if (
iType == 626)
                return 
Positions.Right

وهتبدل دى من جوة انتى تيبول عندك
كود PHP:

 switch (eC.Class)
            {
                case 
0:
                case 
1eC.Class = 100; break;
                case 
2:
                case 
3eC.Class = 10; break;
                case 
4:
                case 
5eC.Class = 40; break;
                case 
6:
                case 
7eC.Class = 20; break;
                case 
8:
                case 
9eC.Class = 50; break;
                case 
10:
                case 
11eC.Class = 60; break;
                case 
12:
                case 
13eC.Class = 70; break;
                case 
14:
                case 
15eC.Class = 80; break;
                case 
16:
                case 
17:
                    {
                        
eC.Class = 160;
                        
client.Entity.Windwalker = (byte)8;//Cshser    
                        
break;
                    }
                case 
18:
                case 
19:
                    {
                        
eC.Class = 160;
                        
client.Entity.Windwalker = (byte)0;//Stmper
                        
break;
                    }
                default: { 
Console.WriteLine("Error Class = " eC.Class); } break;
            } 

ودة الاوفسات الى زادت بتعت entity
كود PHP:

public const ushort
        TimeStamp 
4,
        
Mesh 8,
        
UID 12,
        
GuildID 16,
        
GuildRank 20,
        
Unknown 24,
        
StatusFlag 26,
        
StatusFlag2 34,
        
StatusFlag3 42,
        
StatusFlag4 50,
        
Appearance 54,
        
Head 56,
        
Garment 60,
        
Armor 64,
        
LeftWeapon 68,
        
RightWeapon 72,
        
LeftWeaponAccessory 76,
        
RightWeaponAccessory 80,
        
Steed 84,
        
MountArmor 88,
        
Wing 92,
        
WingPlus 96,
        
WingProgress 97,
        
Hitpoints 111,
        
MonsterLevel 117,
        
119,
        
121,
        
HairStyle 123,
        
Facing 125,
        
Action 126,
        
Action2 128,
        
Reborn 133,
        
Level 134,
        
WindowSpawn 136,
        
Away 137,
        
ExtraBattlePower 138,
        
Flower 154,
        
NobilityRank 158,
        
ArmorColor 162,
        
LeftWeaponColor 164,
        
HeadColor 166,
        
QuizPoints 168,
        
SteedPlus 172,
        
SteedColor 174,
        
Enlighten 178,
        
TotalInnerScore 182,
        
ClanUID 194,
        
ClanRank 198,
        
ClanSharedBp 202,
        
TitleActivated 206,
        
EntitySize 208,
        
GuildSharedBp 213,
        
ShowArenaGlow 217,
        
Boss 220,
        
HeadSoul 221,
        
RaceItem 222,
        
ArmorSoul 225,
        
LeftWeaponSoul 229,
        
RightWeaponSoul 233,
        
SubPro 237,
        
SubProActive 238,
        
FirstRebornClass 246,
        
SecondRebornClass 248,
        Class = 
250,
        
CountryFlag 252,
        
EquipmentColor 258,
        
JiangHuTalen 262,
        
JiangHuActive 263,
        
ServerID 265,
        
OwnerPet 271,
        
OwnerPet1 272,
        
OwnerUID 274,
        
UnionID 278,
        
UnionExploits 282,
        
Offical_Harem_Guards 286,
        
UnionRank 290,
        
UnionType 291,
        
MyTitle 292,
        
MyTitleScore 296,
        
MyWing 300,
        
Windwalker 304,
        
Name 312

هتروح باكت هندل هتبحث عن

شفرة الى بالشكل دة
كود PHP:

case "class":
                                {
                                    
byte _class client.Entity.Class;
                                    
byte.TryParse(Data[1], out _class);
                                    
_class Math.Min((byte)145Math.Max((byte)1_class));
                                    
client.Entity.Class = _class;
                                    if (
client.Entity.Reborn == 0)
                                    {
                                        
Database.DataHolder.GetStats(_classclient.Entity.Levelclient);
                                        
client.CalculateStatBonus();
                                        
client.CalculateHPBonus();
                                        
client.GemAlgorithm();
                                    }
                                    break;
                                } 

وهتبزبط سطر دة
كود PHP:

_class Math.Min((byte)145Math.Max((byte)1_class)); 

بدل ما هيا 145 اعملها 165

ودة شفرة متعدل عليها
كود PHP:

case "class":
                                {
                                    
byte _class client.Entity.Class;
                                    
byte.TryParse(Data[1], out _class);
                                    
_class Math.Min((byte)165Math.Max((byte)1_class));
                                    
client.Entity.Class = _class;
                                    if (
client.Entity.Reborn == 0)
                                    {
                                        
Database.DataHolder.GetStats(_classclient.Entity.Levelclient);
                                        
client.CalculateStatBonus();
                                        
client.CalculateHPBonus();
                                        
client.GemAlgorithm();
                                    }
                                    break;
                                } 


هتروح انتى تيبول هتروح فويد

LoadEntity

تحت دة
كود PHP:

client.Entity.Class = reader.ReadByte("Class"); 

هتحط دة
كود PHP:

if (reader.ReadByte("Class") >= 160 && reader.ReadByte("Class") <= 165)
                        
client.Entity.Windwalker reader.ReadByte("Windwalker"); 

وهتروح فويد SaveEntity

وهتحط دة جوة
كود PHP:

.Set("Windwalker"e.Windwalker

وهتروح فويد CreateEntity

وتنزل لحد
كود PHP:

 switch (eC.Class) 

هتنزل لحد
كود PHP:

 using (var cmd = new MySqlCommand(MySqlCommandType.INSERT)) 

وتزود دة ف الاخر قبل كلمة
كود PHP:

 .Execute(); 

كود PHP:

.Insert("Windwalker"client.Entity.Windwalker

بعدين هتدخل كلاس CharacterInfo

هتروح فويد
كود PHP:

public byte[] ToArray() 

وضيف دى
كود PHP:

 if (client.Entity.Class >= 160 && client.Entity.Class <= 165)
                
Writer.WriteUInt32(this.client.Entity.Windwalker89level); 

وبعدين هتعمل عمود ف entities
كود PHP:

Windwalker  bigint  20  0   -1  0   0   0   0   0   0                   0   0 

هتدخل ع كلاس DataHolder

تحت دى
كود PHP:

 static SafeDictionary<bytestringMonkStats = new SafeDictionary<bytestring>(130); 

هتحط دى
كود PHP:

static SafeDictionary<bytestringWindwalkerStats = new SafeDictionary<bytestring>(130); 

وتحت دى
كود PHP:

  public static bool IsMonk(byte Job) { return Job >= 60 && Job <= 65; } 

هتحط دى
كود PHP:

public static bool IsWindwalker(byte Job) { return Job >= 160 && Job <= 165; } 

وهتروح ع فويد [/PHP] public static void ReadStats()[PHP]

فوق دى
كود PHP:

 job "Monk[" lvl "]"

هتحط دى
كود PHP:

 job "Windwalker[" lvl "]";
                    
Data IniFile.ReadString("Stats"job);
                    
WindwalkerStats.Add(lvlData); 

وبعدين هتروح ع فويد دة
كود PHP:

public static void GetStats

وتحت دى
كود PHP:

case 60: Class = "Monk"; break; 

هتحط دى
كود PHP:

 case 160: Class = "Windwalker"; break; 

وفوق دى
كود PHP:

else if (Class == "Monk"

هتحط دى
كود PHP:

 else if (Class == "Windwalker")
                
Data WindwalkerStats[inLevel].Split(','); 

وهتعمل نقاط شخصية ف ملف Stats.ini

ف داتا بيز

دة نموذج
كود PHP:

Windwalker[1]=5,3,2,0
Windwalker
[2]=3,6,4,0
Windwalker
[3]=4,7,5,0
Windwalker
[4]=4,9,6,0
Windwalker
[5]=5,10,7,0
Windwalker
[6]=6,10,9,0
Windwalker
[7]=7,11,10,0
Windwalker
[8]=7,13,11,0
Windwalker
[9]=8,14,12,0
Windwalker
[10]=9,15,13,0
Windwalker
[11]=10,16,14,0
Windwalker
[12]=10,17,15,0
Windwalker
[13]=11,19,16,0
Windwalker
[14]=12,20,17,0
Windwalker
[15]=13,21,18,0
Windwalker
[16]=13,23,19,0
Windwalker
[17]=14,24,20,0
Windwalker
[18]=15,25,21,0
Windwalker
[19]=16,25,23,0
Windwalker
[20]=17,26,24,0
Windwalker
[21]=18,28,25,0
Windwalker
[22]=18,29,26,0
Windwalker
[23]=19,30,27,0
Windwalker
[24]=19,32,28,0
Windwalker
[25]=20,33,29,0
Windwalker
[26]=21,34,30,0
Windwalker
[27]=22,35,31,0
Windwalker
[28]=22,37,32,0
Windwalker
[29]=23,38,33,0
Windwalker
[30]=24,39,34,0
Windwalker
[31]=24,40,36,0
Windwalker
[32]=25,41,37,0
Windwalker
[33]=26,42,38,0
Windwalker
[34]=27,43,39,0
Windwalker
[35]=28,44,40,0
Windwalker
[36]=28,46,41,0
Windwalker
[37]=29,47,42,0
Windwalker
[38]=30,48,43,0
Windwalker
[39]=31,49,44,0
Windwalker
[40]=32,50,45,0
Windwalker
[41]=32,52,46,0
Windwalker
[42]=33,53,47,0
Windwalker
[43]=33,54,48,0
Windwalker
[44]=34,55,50,0
Windwalker
[45]=35,56,51,0
Windwalker
[46]=36,57,52,0
Windwalker
[47]=37,58,53,0
Windwalker
[48]=37,60,54,0
Windwalker
[49]=38,61,55,0
Windwalker
[50]=39,62,56,0
Windwalker
[51]=40,63,57,0
Windwalker
[52]=40,65,58,0
Windwalker
[53]=41,66,59,0
Windwalker
[54]=42,67,60,0
Windwalker
[55]=43,68,61,0
Windwalker
[56]=43,69,63,0
Windwalker
[57]=44,70,64,0
Windwalker
[58]=45,71,65,0
Windwalker
[59]=46,72,66,0
Windwalker
[60]=46,74,67,0
Windwalker
[61]=47,75,68,0
Windwalker
[62]=48,76,69,0
Windwalker
[63]=49,77,70,0
Windwalker
[64]=49,79,71,0
Windwalker
[65]=50,80,72,0
Windwalker
[66]=51,81,73,0
Windwalker
[67]=52,82,74,0
Windwalker
[68]=52,84,75,0
Windwalker
[69]=53,84,77,0
Windwalker
[70]=54,85,78,0
Windwalker
[71]=55,86,79,0
Windwalker
[72]=55,88,80,0
Windwalker
[73]=56,89,81,0
Windwalker
[74]=57,90,82,0
Windwalker
[75]=58,91,83,0
Windwalker
[76]=58,93,84,0
Windwalker
[77]=59,94,85,0
Windwalker
[78]=60,95,86,0
Windwalker
[79]=61,96,87,0
Windwalker
[80]=61,98,88,0
Windwalker
[81]=62,98,90,0
Windwalker
[82]=63,99,91,0
Windwalker
[83]=64,100,92,0
Windwalker
[84]=64,102,93,0
Windwalker
[85]=65,103,94,0
Windwalker
[86]=66,104,95,0
Windwalker
[87]=67,105,96,0
Windwalker
[88]=67,107,97,0
Windwalker
[89]=68,108,98,0
Windwalker
[90]=69,109,99,0
Windwalker
[91]=70,110,100,0
Windwalker
[92]=70,112,101,0
Windwalker
[93]=71,113,102,0
Windwalker
[94]=72,113,104,0
Windwalker
[95]=73,114,105,0
Windwalker
[96]=73,116,106,0
Windwalker
[97]=74,117,107,0
Windwalker
[98]=75,118,108,0
Windwalker
[99]=76,119,109,0
Windwalker
[100]=76,121,110,0
Windwalker
[101]=77,122,111,0
Windwalker
[102]=78,123,112,0
Windwalker
[103]=79,124,113,0
Windwalker
[104]=79,126,114,0
Windwalker
[105]=80,127,115,0
Windwalker
[106]=81,127,117,0
Windwalker
[107]=82,128,118,0
Windwalker
[108]=82,130,119,0
Windwalker
[109]=83,131,120,0
Windwalker
[110]=84,132,121,0
Windwalker
[111]=85,133,122,0
Windwalker
[112]=85,135,123,0
Windwalker
[113]=86,136,124,0
Windwalker
[114]=87,137,125,0
Windwalker
[115]=88,138,126,0
Windwalker
[116]=88,140,127,0
Windwalker
[117]=89,141,128,0
Windwalker
[118]=90,142,129,0
Windwalker
[119]=91,142,131,0
Windwalker
[120]=91,144,132,

عايز تبدء وتكملة تخمين كمل عايزو كامل زى اونلاين كلم هيما

هتدخل ع كلاس ابديت
هضيف دة
كود PHP:

public class Flags4
        
{//By Mina
            
public const ulong
            Omnipotence 
1UL << 192,
            
JusticeChant 1UL << 194,
            
BlockFrostGaze 1UL << 195,
            
HealingSnow 1UL << 196,
            
ChillingSnow 1UL << 197,
            
xChillingSnow 1UL << 198,
            
FreezingPelter 1UL << 200,
            
xFreezingPelter 1UL << 201,
            
RevengeTaill 1UL << 202,
            
WindwalkerTop 1UL << 203,
            
ShadowofChaser 1UL << 204;
        } 

هتبدل دول بالى عندك
كود PHP:

public void AppendFull(byte typeulong val1ulong val2ulong val3ulong val4)
        {
            
UpdateCount UpdateCount 1;
            
ushort offset = (ushort)(16 + ((UpdateCount 1) * 28));
            
WriteUInt32(typeoffsetBuffer);
            
WriteUInt64(val1offset 4Buffer);
            
WriteUInt64(val2offset 12Buffer);
            
WriteUInt64(val3offset 20Buffer);
            
WriteUInt64(val4offset 28Buffer);
        }
 
 
 public 
void Append(ulong val1ulong val2ulong val3uint val4uint val5uint val6uint val7)
        {
            
WriteUInt32(val4,  24Buffer);
            
WriteUInt32(val632Buffer);
        } 

بعدين هضيف دول ف انتى
كود PHP:

  private ulong _Stateff4 0;
        public 
ulong StatusFlag4
        
{
            
get { return _Stateff4; }
            
set
            
{
                
ulong OldV StatusFlag4;
                if (
value != OldV)
                {
                    
_Stateff4 value;
                    
WriteUInt64(valueOffset.StatusFlag4SpawnPacket);
                    
UpdateEffects(true);
                }
            }
        }
        public 
void AddFlag4(ulong flag)
        {
            
StatusFlag4 |= flag;
        }
        public 
void RemoveFlag4(ulong flag)
        {
            if (
ContainsFlag4(flag))
            {
                
StatusFlag4 &= ~flag;
            }
        }
        public 
bool ContainsFlag4(ulong flag)
        {
            
ulong aux StatusFlag4;
            
aux &= ~flag;
            return !(
aux == StatusFlag4);
        } 

وهتبحث عن
كود PHP:

 public void UpdateEffects(bool screen

تبدل دة بالسطر الى زيو
كود PHP:

 update.AppendFull(0x19StatusFlagStatusFlag2StatusFlag3StatusFlag4); 

هنيجى بقى الاسكلات كاملة والكمال لله واحده هفنتح ملف الهاندل
ونضيف دول
كود PHP:

#region WindWalker
                                #region Chaser
                                #region ThunderCloud(Passive)
                                
case 12840:
                                    {
                                        if (
Time64.Now >= attacker.TCSpellUse.AddSeconds(59))
                                        {
                                            if (
CanUseSpell(spellattacker.Owner))
                                            {
                                                
PrepareSpell(spellattacker.Owner);
                                                
SpellUse suse = new SpellUse(true);
                                                
suse.Attacker attacker.UID;
                                                
suse.X;
                                                
suse.Y;
                                                
suse.SpellID spell.ID;
                                                
attacker.Owner.SendScreen(susetrue);
                                                
//////////////////////////////////////////////////
                                                ///////////////////////////////////////////////////
                                                
uint UID Kernel.Maps[attacker.MapID].EntityUIDCounter.Next;
                                                
uint Mesh 980;
                                                
//////////////////////////////////////////////////////
                                                
byte[] Buffer = new byte[68 8];
                                                
Writer.Write(Buffer.Length 80Buffer);
                                                
Writer.Write(20352Buffer);//Packet ID
                                                
Writer.Write(UID4Buffer);//FlowerUID
                                                
Writer.Write(42648Buffer);
                                                
Buffer[12] = 3;
                                                
Writer.Write(Mesh16Buffer);//FloorItemID
                                                
Buffer[24] = 14;//AttackRange
                                                
Writer.Write(X26Buffer);
                                                
Writer.Write(Y28Buffer);
                                                
Writer.Write("Thundercloud"30Buffer);
                                                
//////////////////////////////////////////////////
                                                ///////////////////////////////////////////////////
                                                //////////////////////////////////////////////////////
                                                
Entity ThunderCloud = new Entity(Game.EntityFlag.Monstertrue);
                                                
ThunderCloud.Name "Thundercloud";
                                                
ThunderCloud.Mesh Mesh;
                                                
ThunderCloud.UID UID;
                                                
ThunderCloud.GuildID attacker.GuildID;
                                                
ThunderCloud.MaxHitpoints attacker.MaxHitpoints;
                                                
ThunderCloud.Level 140;
                                                
ThunderCloud.X;
                                                
ThunderCloud.Y;
                                                
ThunderCloud.Facing attacker.Facing;
                                                
ThunderCloud.Boss 1;
                                                
ThunderCloud.MapID attacker.MapID;
                                                
Writer.Write(3308ThunderCloud.SpawnPacket);
                                                
Writer.Write(15272ThunderCloud.SpawnPacket);
                                                
Writer.Write(3271ThunderCloud.SpawnPacket);//AttackUser
                                                //Writer.Write(attacker.Owner.UnionID, 278, ThunderCloud.SpawnPacket);//UnionID
                                                
ThunderCloud.CUID attacker.UID;
                                                
ThunderCloud.Owner = new Client.GameClient(null);
                                                
ThunderCloud.Owner.Entity ThunderCloud;
                                                
ThunderCloud.MonsterInfo = new MonsterInformation();
                                                
ThunderCloud.MonsterInfo.AttackType 24;
                                                
ThunderCloud.MonsterInfo.AttackSpeed 1000;
                                                
ThunderCloud.MonsterInfo.AttackRange 14;
                                                
ThunderCloud.MonsterInfo.Boss true;
                                                
ThunderCloud.MonsterInfo.BoundX X;
                                                
ThunderCloud.Companion true;
                                                
ThunderCloud.MonsterInfo.Guard false;
                                                
ThunderCloud.MonsterInfo.BoundY Y;
                                                
ThunderCloud.MonsterInfo.Defence attacker.Defence;
                                                
ThunderCloud.MonsterInfo.Hitpoints 10000;
                                                
ThunderCloud.MonsterInfo.Mesh 980;
                                                
ThunderCloud.MonsterInfo.MoveSpeed int.MaxValue;
                                                
ThunderCloud.MonsterInfo.Name "Thundercloud";
                                                
ThunderCloud.MonsterInfo.Owner attacker;
                                                
ThunderCloud.MonsterInfo.ViewRange 14;
                                                
ThunderCloud.MonsterInfo.RespawnTime 0;
                                                
ThunderCloud.MonsterInfo.RunSpeed int.MaxValue;
                                                
ThunderCloud.MonsterInfo.SpellID 13190;
                                                
ThunderCloud.Hitpoints 10000;
                                                
Kernel.Maps[ThunderCloud.MapID].AddEntity(ThunderCloud);
                                                
//////////////////////////////////////////////////////////////
                                                //////////////////////////////////////////////////////////
                                                //////////////////////////////////////////////////////////
                                                /////////////////////////////////////////////
                                                
Network.GamePackets.Data d = new Data(true);
                                                
d.UID UID;
                                                
d.ID Data.AddEntity;
                                                
d.Facing attacker.Facing;
                                                
d.X2 ThunderCloud.X;
                                                
d.Y2 ThunderCloud.Y;
                                                
///////////////////////////////////////////////
                                                ////////////////////////////////////////////
                                                /////////////////////////////////////////
                                                
attacker.Owner.SendScreen(Buffertrue);
                                                
attacker.Owner.SendScreen(ThunderCloud.SpawnPackettrue);
                                                
attacker.Owner.SendScreenSpawn(ThunderCloudtrue);
                                                
attacker.Owner.SendScreen(dtrue);
                                                
ThunderCloud.ThunderCloudStamp Time64.Now;
                                                
Program.World.Register(ThunderCloud);
                                                
attacker.AttackPacket null;
                                            }
                                        }
                                        break;
 
                                    }
                                
#endregion
                                #region ShadowofChaser(Active)
                                
case 13090:
                                    {
                                        if (
attacker.ContainsFlag4(Update.Flags4.ShadowofChaser))
                                        {
                                            
attacker.RemoveFlag4(Update.Flags4.ShadowofChaser);
                                            
attacker.AttackPacket null;
                                            break;
                                        }
                                        if (
CanUseSpell(spellattacker.Owner))
                                        {
                                            
PrepareSpell(spellattacker.Owner);
                                            
SpellUse suse = new SpellUse(true);
                                            
suse.Attacker attacker.UID;
                                            
suse.Attacker1 attacker.UID;
                                            
suse.SpellID spell.ID;
                                            
suse.SpellLevel spell.Level;
                                            
suse.AddTarget(attacker.UID0attack);
                                            
attack = new Attack(true);
                                            
attack.Attacker attack.Attacked attacker.UID;
                                            
attack.attacker.Xattack.attacker.Y;
                                            
attack.AttackType 24;
                                            
attack.SpellID spell.ID;
                                            
attacker.Owner.SendScreen(susetrue);
                                            
attacker.AddFlag4(Update.Flags4.ShadowofChaser);
                                            
attacker.AttackPacket null;
                                        }
                                        break;
                                    }
                                
#endregion
                                #region TripleBlasts(Passive)
                                
case 12850:
                                    {
                                        if (
CanUseSpell(spellattacker.Owner))
                                        {
                                            
PrepareSpell(spellattacker.Owner);
                                            
SpellUse suse = new SpellUse(true);
                                            
suse.Attacker attacker.UID;
                                            
suse.Attacker1 attackedsob == null attacked.UID attackedsob.UID;
                                            
suse.SpellID spell.ID;
                                            
suse.SpellLevel spell.Level;
                                            
suse.X;
                                            
suse.Y;
                                            if (
attackedsob == null)
                                            {
                                                if (
CanAttack(attackerattackedspellfalse))
                                                {
                                                    if (
attacker.ContainsFlag4(Update.Flags4.ShadowofChaser) && attacker.IsChaser2())
                                                    {
                                                        var 
spell2 Database.SpellTable.GetSpell(13090attacker.Owner);
                                                        if (
spell2 != null)
                                                        {
                                                            
spell2.CanKill true;
                                                            if (
Kernel.Rate(spell2.Percent))
                                                            {
                                                                
ShadowofChaser(attackerattackedattack1);
                                                                break;
                                                            }
                                                        }
                                                    }
 
                                                    
uint damage Game.Attacking.Calculate.Ranged(attackerattackedref attack);
                                                    
damage = (uint)(damage 0.2);
 
                                                    
ReceiveAttack(attackerattackedattack,damagespell);
                                                    
suse.AddTarget(attacked.UIDdamageattack);
                                                    
attacker.Owner.SendScreen(susetrue);
                                                }
                                            }
                                            else
                                            {
                                                if (
CanAttack(attackerattackedsobspell))
                                                {
 
                                                    
uint damage Game.Attacking.Calculate.Ranged(attackerattackedsobref attack);
 
                                                    
ReceiveAttack(attackerattackedsobattackdamagespell);
                                                    
suse.AddTarget(attacked.UIDdamageattack);
                                                    
attacker.Owner.SendScreen(susetrue);
                                                }
                                            }
 
                                        }
                                        break;
                                    }
                                
#endregion
                                #region swirlingStor
                                
case 12890:
                                    {
                                        if (
CanUseSpell(spellattacker.Owner))
                                        {
                                            
PrepareSpell(spellattacker.Owner);
                                            
SpellUse suse = new SpellUse(true);
                                            
spell.UseStamina 40;
                                            
suse.Attacker attacker.UID;
                                            
suse.SpellID spell.ID;
                                            
suse.SpellLevel spell.Level;
                                            
suse.X;
                                            
suse.Y;
                                            
Sector sector = new Sector(attacker.Xattacker.YXY);
                                            
sector.Arrange(spell.Sectorspell.Distance);
                                            {
                                                foreach (
Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
                                                {
                                                    if (
_obj == null)
                                                        continue;
                                                    if (
_obj.MapObjType == MapObjectType.Monster || _obj.MapObjType == MapObjectType.Player)
                                                    {
                                                        
attacked _obj as Entity;
                                                        if (
sector.Inside(attacked.Xattacked.Y))
                                                        {
                                                            if (
CanAttack(attackerattackedspellattack.AttackType == Attack.Melee))
                                                            {
                                                                
attack.Effect Attack.AttackEffects.None;
                                                                
uint damage Game.Attacking.Calculate.Ranged(attackerattackedref attack);
                                                                
damage = (uint)(damage spell.Power 10);
                                                                
suse.Effect attack.Effect;
                                                                
ReceiveAttack(attackerattackedattackdamagespell);
                                                                
suse.AddTarget(attacked.UIDdamageattack);
                                                            }
                                                        }
                                                    }
                                                    else if (
_obj.MapObjType == MapObjectType.SobNpc)
                                                    {
                                                        
attackedsob _obj as SobNpcSpawn;
                                                        if (
sector.Inside(attackedsob.Xattackedsob.Y))
                                                        {
                                                            if (
CanAttack(attackerattackedsobspell))
 
                                                                
attack.Effect Attack.AttackEffects.None;
                                                            
uint damage Game.Attacking.Calculate.Ranged(attackerattackedsobref attack);
                                                            
damage = (uint)(damage spell.Power 10);
                                                            
suse.Effect attack.Effect;
                                                            
suse.AddTarget(attackedsob.UIDdamageattack);
                                                            
attacker.Owner.SendScreen(susetrue);
                                                        }
                                                    }
                                                }
                                            }
                                            
attacker.Owner.SendScreen(susetrue);
                                        }
                                        break;
                                    }
                                
#endregion
                                #region ThunderBolt(Active)
                                
case 12970:
                                    {
                                        if (!
attacker.Owner.Spells.ContainsKey(12840)) break;
                                        foreach (var 
th in Kernel.Maps[attacker.MapID].Entities.Values.Where(=> i.Name == "Thundercloud"))
                                        {
                                            if (
th.CUID == attacker.UID)
                                            {
                                                if (
Kernel.GetDistance(attacker.Xattacker.Yth.Xth.Y) <= th.MonsterInfo.AttackRange)
                                                {
                                                    if (
CanUseSpell(spellattacker.Owner))
                                                    {
                                                        
PrepareSpell(spellattacker.Owner);
                                                        
SpellUse suse = new SpellUse(true);
                                                        
suse.Attacker attacker.UID;
                                                        
suse.X;
                                                        
suse.Y;
                                                        
suse.SpellID spell.ID;
                                                        
suse.AddTarget(th.UID0null);
                                                        
Writer.Write(12850th.SpawnPacket);//Flag4(128)
                                                        
attacker.Owner.SendScreen(susetrue);
                                                        
attacker.AttackPacket null;
                                                        foreach (var 
client in Kernel.GamePool.Values.Where(=> Kernel.GetDistance(th.Xth.Yi.Entity.Xi.Entity.Y) < 17))
                                                        {
                                                            
client.Send(th.SpawnPacket);
                                                        }
 
                                                    }
                                                }
                                            }
                                        }
                                        break;
                                    }
                                
#endregion
                                #region Omnipotence(XP)
                                
case 12860:
                                    {
                                        
SpellUse suse = new SpellUse(true);
                                        
suse.Attacker attacker.UID;
                                        
suse.SpellID spell.ID;
                                        
suse.SpellLevel spell.Level;
                                        
suse.X;
                                        
suse.Y;
                                        if (
attacker.ContainsFlag(Update.Flags.XPList))
                                        {
                                            
attacker.AddFlag4(Update.Flags4.Omnipotence);
                                            
attacker.OmnipotenceStamp Time64.Now;
                                            
attacker.RemoveFlag(Update.Flags.XPList);
                                            
attacker.Owner.SendScreen(susetrue);
                                        }
                                        else
                                        {
                                            if (
Kernel.GetDistance(attacker.Xattacker.YXY) <= spell.Range)
                                            {
                                                foreach (
Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
                                                {
                                                    if (
_obj == null) continue;
                                                    if (
_obj.MapObjType == MapObjectType.Player)
                                                    {
                                                        
attacked _obj as Entity;
                                                        if (
Kernel.GetDistance(attacker.Xattacker.Yattacked.Xattacked.Y) <= spell.Range)
                                                        {
                                                            if (
CanAttack(attackerattackedspellattack.AttackType == Attack.Melee))
                                                            {
 
                                                                
uint damage Game.Attacking.Calculate.Melee(attackerattackedref attackspell) / 10;
 
                                                                
ReceiveAttack(attackerattackedattack,  damagespell);
                                                                
suse.AddTarget(attacked.UIDdamageattack);
                                                            }
                                                        }
                                                    }
                                                    else if (
_obj.MapObjType == MapObjectType.SobNpc)
                                                    {
                                                        
attackedsob _obj as SobNpcSpawn;
                                                        if (
Kernel.GetDistance(attacker.Xattacker.Yattackedsob.Xattackedsob.Y) <= spell.Range)
                                                        {
                                                            if (
CanAttack(attackerattackedsobspell))
                                                            {
 
                                                                
uint damage Game.Attacking.Calculate.Melee(attackerattackedsobref attack) * 350 100;
 
 
                                                                
ReceiveAttack(attackerattackedsobattackdamagespell);
                                                                
suse.AddTarget(attacked.UIDdamageattack);
                                                            }
                                                        }
                                                    }
                                                    else if (
_obj.MapObjType == MapObjectType.Monster)
                                                    {
                                                        
attacked _obj as Entity;
                                                        if (
Kernel.GetDistance(attacker.Xattacker.Yattacked.Xattacked.Y) <= spell.Range)
                                                        {
                                                            if (
CanAttack(attackerattackedspellattack.AttackType == Attack.Melee))
                                                            {
 
                                                                
uint damage Game.Attacking.Calculate.Melee(attackerattackedsobref attack) * 350 100;
 
                                                                
ReceiveAttack(attackerattackedattackdamagespell);
                                                                
suse.AddTarget(attacked.UIDdamageattack);
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        
attacker.Owner.SendScreen(susetrue);
                                        
attacker.AttackPacket null;
                                        break;
                                    }
                                
#endregion
                                #region FrostGaze(I-II-III)
                                
case 12830:
                                case 
13070:
                                case 
13080:
                                    {
                                        if (
CanUseSpell(spellattacker.Owner))
                                        {
                                            
PrepareSpell(spellattacker.Owner);
                                            
SpellUse suse = new SpellUse(true);
                                            
suse.Attacker attacker.UID;
                                            
suse.SpellID spell.ID;
                                            
suse.SpellLevel spell.Level;
                                            
suse.X;
                                            
suse.Y;
                                            
attacker.Owner.SendScreen(susetrue);
                                            foreach (
Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
                                            {
                                                if (
_obj == null)
                                                    continue;
                                                if (
_obj.MapObjType == MapObjectType.Player)
                                                {
                                                    
attacked _obj as Entity;
 
                                                    if (
Kernel.GetDistance(attacker.Xattacker.Yattacked.Xattacked.Y) <= spell.Range)
                                                    {
                                                        if (
CanAttack(attackerattackedspellattack.AttackType == Attack.Melee))
                                                        {
                                                            
int Rate 100;
                                                            
int diff attacked.BattlePower attacker.BattlePower;
                                                            if (
diff 0diff 0;
                                                            
Rate -= (byte)(diff 5);
                                                            if (
Rate 0Rate 0;
                                                            if (
Kernel.Rate(Rate))
                                                            {
                                                                if (
attacked.Stamina >= (byte)spell.Power)
                                                                    
attacked.Stamina -= (byte)spell.Power;
                                                                else 
attacked.Stamina 0;
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        break;
                                    }
                                
#endregion
                                #endregion
                                #region Stomper
                                #region ChillingSnow(Active)
                                
case 12960:
                                    {
                                        if (
attacker.ContainsFlag4(Update.Flags4.ChillingSnow))
                                        {
                                            
attacker.RemoveFlag4(Update.Flags4.ChillingSnow);
                                            
attacker.AttackPacket null;
                                            break;
                                        }
                                        if (
CanUseSpell(spellattacker.Owner))
                                        {
                                            
attacker.RemoveFlag4(Update.Flags4.HealingSnow);
                                            
attacker.RemoveFlag4(Update.Flags4.FreezingPelter);
                                            
PrepareSpell(spellattacker.Owner);
                                            
SpellUse suse = new SpellUse(true);
                                            
suse.Attacker attacker.UID;
                                            
suse.Attacker1 attacker.UID;
                                            
suse.SpellID spell.ID;
                                            
suse.SpellLevel spell.Level;
                                            
suse.X;
                                            
suse.Y;
                                            
suse.AddTarget(attacker.UID0attack);
                                            
attacker.Owner.SendScreen(susetrue);
                                            
attacker.AddFlag4(Update.Flags4.ChillingSnow);
                                            
attacker.AttackPacket null;
                                        }
                                        break;
                                    }
                                
#endregion
                                #region HealingSnow(Active)
                                
case 12950:
                                    {
                                        if (
attacker.ContainsFlag4(Update.Flags4.HealingSnow))
                                        {
                                            
attacker.RemoveFlag4(Update.Flags4.HealingSnow);
                                            
attacker.AttackPacket null;
                                            break;
                                        }
                                        if (
CanUseSpell(spellattacker.Owner))
                                        {
                                            
attacker.RemoveFlag4(Update.Flags4.ChillingSnow);
                                            
attacker.RemoveFlag4(Update.Flags4.FreezingPelter);
                                            
PrepareSpell(spellattacker.Owner);
                                            
SpellUse suse = new SpellUse(true);
                                            
suse.Attacker attacker.UID;
                                            
suse.Attacker1 attacker.UID;
                                            
suse.SpellID spell.ID;
                                            
suse.SpellLevel spell.Level;
                                            
suse.X;
                                            
suse.Y;
                                            
suse.AddTarget(attacker.UID0attack);
                                            
attacker.Owner.SendScreen(susetrue);
                                            
attacker.AddFlag4(Update.Flags4.HealingSnow);
                                            
attacker.AttackPacket null;
                                        }
                                        break;
                                    }
                                
#endregion
                                #region FreezingPelter(Active)
                                
case 13020:
                                    {
                                        if (
attacker.ContainsFlag4(Update.Flags4.FreezingPelter))
                                        {
                                            
attacker.RemoveFlag4(Update.Flags4.FreezingPelter);
                                            
attacker.Owner.LoadItemStats();
                                            
attacker.AttackPacket null;
                                            break;
                                        }
                                        if (
CanUseSpell(spellattacker.Owner))
                                        {
                                            
attacker.RemoveFlag4(Update.Flags4.ChillingSnow);
                                            
attacker.RemoveFlag4(Update.Flags4.HealingSnow);
                                            
PrepareSpell(spellattacker.Owner);
                                            
SpellUse suse = new SpellUse(true);
                                            
suse.Attacker attacker.UID;
                                            
suse.Attacker1 attacker.UID;
                                            
suse.SpellID spell.ID;
                                            
suse.SpellLevel spell.Level;
                                            
suse.X;
                                            
suse.Y;
                                            
suse.AddTarget(attacker.UID0attack);
                                            
attacker.Owner.SendScreen(susetrue);
                                            
attacker.AddFlag4(Update.Flags4.FreezingPelter);
                                            
attacker.Owner.LoadItemStats();
                                            
attacker.AttackPacket null;
                                        }
                                        break;
                                    }
                                
#endregion
                                #region RevengeTail(Active)
                                
case 13030:
                                    {
                                        if (
CanUseSpell(spellattacker.Owner))
                                        {
                                            
PrepareSpell(spellattacker.Owner);
                                            
SpellUse suse = new SpellUse(true);
                                            
suse.Attacker attacker.UID;
                                            
suse.Attacker1 attacker.UID;
                                            
suse.SpellID spell.ID;
                                            
suse.SpellLevel spell.Level;
                                            
suse.X;
                                            
suse.Y;
                                            
suse.AddTarget(attacker.UID0attack);
                                            
attacker.Owner.SendScreen(susetrue);
                                            
attacker.AddFlag4(Update.Flags4.RevengeTaill);
                                            
attacker.RevengeTaillStamp Time64.Now;
                                            
attacker.AttackPacket null;
                                        }
                                        break;
                                    }
                                
#endregion
                                #region BurntFrost(Passive)
                                
case 12940:
                                    {
                                        if (
CanUseSpell(spellattacker.Owner))
                                        {
                                            
PrepareSpell(spellattacker.Owner);
 
 
                                            
SpellUse suse = new SpellUse(true);
                                            
suse.Attacker attacker.UID;
                                            
suse.SpellID spell.ID;
                                            
suse.SpellLevel spell.Level;
                                            
suse.X;
                                            
suse.Y;
                                            
Fan sector = new Fan(attacker.Xattacker.YXYspell.Rangespell.Sector);
                                            if (
Kernel.GetDistance(attacker.Xattacker.YXY) <= spell.Distance 1)
                                            {
                                                foreach (
Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
                                                {
                                                    if (
_obj.MapObjType == MapObjectType.Monster || _obj.MapObjType == MapObjectType.Player)
                                                    {
                                                        if (
_obj == null)
                                                            continue;
                                                        
attacked _obj as Entity;
                                                        if (
attacked == null) continue;
                                                        if (
sector.IsInFan(attacked.Xattacked.Y))
                                                        {
                                                            if (
CanAttack(attackerattackedspellattack.AttackType == Attack.Melee))
                                                            {
 
                                                                
uint damage Calculate.Melee(attackerattackedref attackspell);
                                                                
damage = (uint)(damage 0.6);
                                                                
ReceiveAttack(attackerattackedattack,damagespell);
                                                                
suse.AddTarget(attacked.UIDdamageattack);
                                                            }
                                                        }
                                                    }
                                                    else if (
_obj.MapObjType == MapObjectType.SobNpc)
                                                    {
                                                        if (
_obj == null)
                                                            continue;
                                                        
attackedsob _obj as SobNpcSpawn;
                                                        if (
attackedsob == null) continue;
                                                        if (
sector.IsInFan(attackedsob.Xattackedsob.Y))
                                                        {
                                                            if (
CanAttack(attackerattackedsobspell))
                                                            {
 
                                                                
uint damage Game.Attacking.Calculate.Melee(attackerattackedsobref attack);
 
                                                                
ReceiveAttack(attackerattackedsobattackdamagespell);
                                                                
suse.AddTarget(attackedsob.UIDdamageattack);
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                            
attacker.Owner.SendScreen(susetrue);
                                            
attacker.AttackPacket null;
                                        }
                                        break;
                                    }
                                
#endregion
                                #region RageofWar(Passive)
                                
case 12930:
                                    {
                                        if (
CanUseSpell(spellattacker.Owner))
                                        {
                                            
PrepareSpell(spellattacker.Owner);
                                            
Game.Attacking.InLineAlgorithm ila = new Game.Attacking.InLineAlgorithm(attacker.X,
                                        
Xattacker.YY, (byte)spell.RangeInLineAlgorithm.Algorithm.DDA);
                                            
SpellUse suse = new SpellUse(true);
                                            
suse.Attacker attacker.UID;
                                            
suse.SpellID SpellID;
                                            
suse.SpellLevel attacker.Owner.Spells[SpellID].Level;
                                            
suse.X;
                                            
suse.Y;
                                            
attacker.Owner.SendScreen(susetrue);
                                            
bool first false;
                                            foreach (
Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
                                            {
                                                if (
_obj == null)
                                                    continue;
                                                if (
_obj.MapObjType == MapObjectType.Player)
                                                {
                                                    
attacked _obj as Entity;
                                                    if (
ila.InLine(attacked.Xattacked.Y))
                                                    {
                                                        if (!
CanAttack(attackerattackedspellattack.AttackType == Attack.Melee))
                                                            continue;
                                                        if (
Kernel.GetDistance(attacked.Xattacked.Yattacker.Xattacker.Y) > 11) continue;
                                                        if (!
first)
                                                        {
                                                            var 
map Kernel.Maps[attacker.MapID];
                                                            
Network.GamePackets.FloorItem flooritem = new Network.GamePackets.FloorItem(true);
                                                            
flooritem.UID Network.GamePackets.FloorItem.FloorUID.Next;
                                                            while (
map.Npcs.ContainsKey(flooritem.UID))
                                                                
flooritem.UID Network.GamePackets.FloorItem.FloorUID.Next;
                                                            
flooritem.ItemID FloorItem.RageOfWarTrap;
                                                            
flooritem.attacked.X;
                                                            
flooritem.MapID map.ID;
                                                            
flooritem.attacked.Y;
                                                            
flooritem.MapObjType MapObjectType.FloorSpell;
                                                            
flooritem.Type FloorItem.Effect;
                                                            
flooritem.mColor 15;
                                                            
flooritem.OwnerUID attacker.UID;
                                                            
flooritem.OnFloor Time64.Now;
                                                            
flooritem.Owner attacker.Owner;
                                                            
flooritem.Name2 "RageofWarTrap";
                                                            
map.AddFloorItem(flooritem);
                                                            
attacker.Owner.SendScreenSpawn(flooritemtrue);
                                                            
first true;
                                                        }
                                                        
uint damage Calculate.Melee(attackerattackedref attackspell);
                                                        
damage = (uint)(damage 0.6);
                                                        
attack.Damage damage;
                                                        
ReceiveAttack(attackerattackedattack,damagespell);
 
                                                        
suse.AddTarget(attacked.UIDdamageattack);
                                                    }
                                                }
                                                else if (
_obj.MapObjType == MapObjectType.Monster)
                                                {
                                                    
attacked _obj as Entity;
                                                    if (
ila.InLine(attacked.Xattacked.Y))
                                                    {
                                                        if (!
CanAttack(attackerattackedspellattack.AttackType == Attack.Melee))
                                                            continue;
                                                        if (
Kernel.GetDistance(attacked.Xattacked.Yattacker.Xattacker.Y) > 11) continue;
                                                        if (!
first)
                                                        {
                                                            var 
map Kernel.Maps[attacker.MapID];
                                                            
Network.GamePackets.FloorItem flooritem = new Network.GamePackets.FloorItem(true);
                                                            
flooritem.UID Network.GamePackets.FloorItem.FloorUID.Next;
                                                            while (
map.Npcs.ContainsKey(flooritem.UID))
                                                                
flooritem.UID Network.GamePackets.FloorItem.FloorUID.Next;
 
                                                            
flooritem.ItemID FloorItem.RageOfWarTrap;
                                                            
flooritem.attacked.X;
                                                            
flooritem.MapID map.ID;
                                                            
flooritem.attacked.Y;
                                                            
flooritem.Type FloorItem.Effect;
                                                            
flooritem.MapObjType MapObjectType.FloorSpell;
                                                            
flooritem.mColor 15;
                                                            
flooritem.OwnerUID attacker.UID;
                                                            
flooritem.OnFloor Time64.Now;
                                                            
flooritem.Owner attacker.Owner;
                                                            
flooritem.Name2 "RageofWarTrap";
                                                            
map.AddFloorItem(flooritem);
                                                            
attacker.Owner.SendScreenSpawn(flooritemtrue);
                                                            
first true;
                                                        }
 
                                                        
uint damage = (uint)(Game.Attacking.Calculate.Melee(attackerattackedref attack) * (spell.Power 30000) / 100);
 
 
                                                        
attack.Damage damage;
 
                                                        
ReceiveAttack(attackerattackedattack,damagespell);
 
                                                        
suse.AddTarget(attacked.UIDdamageattack);
                                                    }
 
 
                                                }
                                                else if (
_obj.MapObjType == MapObjectType.SobNpc)
                                                {
                                                    
attackedsob _obj as SobNpcSpawn;
                                                    if (
attackedsob == null) continue;
                                                    if (
ila.InLine(attackedsob.Xattackedsob.Y))
                                                    {
                                                        if (!
CanAttack(attackerattackedsobspell))
                                                            continue;
                                                        if (
Kernel.GetDistance(attackedsob.Xattackedsob.Yattacker.Xattacker.Y) > 11) continue;
                                                        if (!
first)
                                                        {
                                                            var 
map Kernel.Maps[attacker.MapID];
                                                            
Network.GamePackets.FloorItem flooritem = new Network.GamePackets.FloorItem(true);
                                                            
flooritem.UID Network.GamePackets.FloorItem.FloorUID.Next;
                                                            while (
map.Npcs.ContainsKey(flooritem.UID))
                                                                
flooritem.UID Network.GamePackets.FloorItem.FloorUID.Next;
                                                            
flooritem.MapObjType MapObjectType.FloorSpell;
                                                            
flooritem.ItemID FloorItem.RageOfWarTrap;
                                                            
flooritem.attackedsob.X;
                                                            
flooritem.MapID map.ID;
                                                            
flooritem.attackedsob.Y;
                                                            
flooritem.Type FloorItem.Effect;
                                                            
flooritem.mColor 15;
                                                            
flooritem.OwnerUID attacker.UID;
                                                            
flooritem.OnFloor Time64.Now;
                                                            
flooritem.Owner attacker.Owner;
                                                            
flooritem.Name2 "RageofWarTrap";
                                                            
map.AddFloorItem(flooritem);
                                                            
attacker.Owner.SendScreenSpawn(flooritemtrue);
                                                            
first true;
                                                        }
 
                                                        
uint damage = (uint)(Game.Attacking.Calculate.Melee(attackerattackedsobref attack) * (spell.Power 30000) / 100);
 
 
                                                        
attack.Damage damage;
 
                                                        
ReceiveAttack(attackerattackedsobattackdamagespell);
 
                                                        
suse.AddTarget(attackedsob.UIDdamageattack);
                                                    }
 
 
                                                }
                                            }
                                            
attacker.Owner.SendScreen(susetrue);
                                            
attacker.AttackPacket null;
                                        }
                                        break;
                                    }
                                
#endregion
                                #endregion
                                #endregion 

هتيجى تقولى ايه ده ياعم فيه ايرورات ظاهرها هقولك تعالى لسه هنعمل سيرش على كود ده
كود PHP:

 public static bool Allyss(Entity attackerEntity attacked

هنقفله بعلامة السالب وتحتية هنضيف كود ده
كود PHP:

  public static void ShadowofChaser(Entity attackerEntity attackedAttack attackbyte oneortwo)
        {
            
#region ShadowofChaser(Active)
            
IMapObject lastAttacked attacked;
            if (
oneortwo == 1)
            {
                if (
attacker.ContainsFlag4(Update.Flags4.ShadowofChaser) && attacker.IsChaser2())
                {
                    
#region FloorItem
                    
var map Kernel.Maps[attacker.MapID];
                    
Network.GamePackets.FloorItem flooritem = new Network.GamePackets.FloorItem(true);
                    
flooritem.UID Network.GamePackets.FloorItem.FloorUID.Next;
                    while (
map.Npcs.ContainsKey(flooritem.UID))
                        
flooritem.UID Network.GamePackets.FloorItem.FloorUID.Next;
 
                    
flooritem.ItemID FloorItem.ShadowofChaser;
                    
flooritem.lastAttacked.X;
                    
flooritem.MapID attacker.MapID;
                    
flooritem.lastAttacked.Y;
                    
flooritem.Type FloorItem.Effect;
                    
flooritem.mColor 14;
                    
flooritem.FlowerType 3;
                    
flooritem.Unknown37 1;
                    
flooritem.MapObjType MapObjectType.FloorSpell;
                    
flooritem.Attack attack;
                    
flooritem.OwnerUID attacker.UID;
                    
flooritem.Owner attacker.Owner;
                    
flooritem.OwnerGuildUID attacker.GuildID;
                    
flooritem.OnFloor Time64.Now;
                    
flooritem.Name2 "ShadowofChaser";
                    
flooritem.ShadowofChaserAttacked attacked;
                    
flooritem.ShadowofChaserAttacker attacker;
                    
attacker.Owner.Map.AddFloorItem(flooritem);
                    
attacker.Owner.SendScreenSpawn(flooritemtrue);
                    
#endregion
                    
return;
                }
            }
            else if (
oneortwo == 2)
            {
                var 
spell Database.SpellTable.GetSpell(13090attacker.Owner);
                
SpellUse suse = new SpellUse(true);
                
suse.Attacker attacker.UID;
                
suse.Attacker1 attacker.UID;
                
suse.SpellID spell.ID;
                
suse.SpellLevel spell.Level;
                if (
CanAttack(attackerattackedspellfalse))
                {
                    
lastAttacked attacked;
                    var 
damage Game.Attacking.Calculate.Melee(attackerattackedref attackspell);
                    
Handle.ReceiveAttack(attackerattackedattack,damagespell);
                    
suse.AddTarget(attacked.UIDdamagenull);
                }
                
attacker.Owner.SendScreen(susetrue);
                
SpellUse suse2 = new SpellUse(true);
                
suse2.Attacker attacker.UID;
                
suse2.SpellID spell.ID;
                
suse2.SpellLevel spell.Level;
                
suse2.attacked.X;
                
suse2.attacked.Y;
                foreach (
Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
                {
                    if (
_obj.MapObjType == MapObjectType.Monster || _obj.MapObjType == MapObjectType.Player)
                    {
                        if (
_obj == null) continue;
                        var 
attacked1 _obj as Entity;
                        if (
lastAttacked.UID == attacked1.UID) continue;
                        if (
Kernel.GetDistance(lastAttacked.XlastAttacked.Yattacked1.Xattacked1.Y) <= 4)
                        {
                            if (
CanAttack(attackerattacked1spellfalse))
                            {
                                var 
damage Game.Attacking.Calculate.Melee(attackerattackedref attackspell);
                                
ReceiveAttack(attackerattacked1attackdamagespell);
                                
suse2.AddTarget(attacked1.UIDdamagenull);
                            }
                        }
                    }
                }
                
attacker.Owner.SendScreen(suse2true);
            }
            
#endregion
            
attacker.AttackPacket null;
        } 

بعدين هنعمل سيرش على كود ده
#region Kinetic Spark
تحتيه
كود PHP:

 #region ShadowofChaser
                            
if (attacker.ContainsFlag4(Update.Flags4.ShadowofChaser))
                            {
                                var 
spell Database.SpellTable.GetSpell(13090attacker.Owner);
                                if (
spell != null)
                                {
                                    
spell.CanKill true;
                                    if (
Kernel.Rate(spell.Percent))
                                    {
                                        
SpellUse suse = new SpellUse(true);
                                        
suse.Attacker attacker.UID;
                                        
suse.SpellID spell.ID;
                                        
suse.SpellLevel spell.Level;
                                        
suse.attacker.X;
                                        
suse.attacker.Y;
                                        
IMapObject lastAttacked attacker;
                                        
/*****************/
                                        
attacker.Owner.SendScreen(susetrue);
                                        
ushort _X attacker.X_Y attacker.Y;
                                        
ushort _tX X_tY Y;
                                        
// byte dist = 18;
                                        
var Array = attacker.Owner.Screen.Objects;
                                        var 
map attacker.Owner.Map;
                                        
// if (!map.Floor[X, Y, MapObjectType.Item, null])
                                        // return;
                                        
Game.Attacking.InLineAlgorithm algo = new Game.Attacking.InLineAlgorithm(attacked.X,
                                        
Xattacked.YY, (byte)spell.RangeInLineAlgorithm.Algorithm.DDA);
                                        
// InLineAlgorithm algo = new InLineAlgorithm(attacker.X, X, attacker.Y, Y, dist,
                                        // InLineAlgorithm.Algorithm.DDA);
                                        
var count = (double)algo.lcoords.Count 1;
                                        for (
int i 01i++)
                                        {
                                            var 
selected * (int)count;
                                            
selected Math.Min(algo.lcoords.Count 1selected);
                                            
= (ushort)algo.lcoords[selected].X;
                                            
= (ushort)algo.lcoords[selected].Y;
                                            
FloorItem floorItem = new FloorItem(true);
                                            
floorItem.ItemID 1550;
                                            
floorItem.ItemColor = (Enums.Color)(1);
                                            
floorItem.MapID attacker.MapID;
                                            
floorItem.Type FloorItem.Effect;
                                            
floorItem.X;
                                            
floorItem.Y;
                                            
floorItem.OnFloor Time64.Now;
                                            
floorItem.Owner attacker.Owner;
                                            while (
map.Npcs.ContainsKey(floorItem.UID))
                                                
floorItem.UID Network.GamePackets.FloorItem.FloorUID.Next;
                                            
map.AddFloorItem(floorItem);
                                            
attacker.Owner.SendScreenSpawn(floorItemtrue);
                                        }
                                        
/****************/
                                        
uint p 0;
                                        if (
Handle.CanAttack(attackerattackedspellfalse))
                                        {
                                            
lastAttacked attacked;
                                            
uint damage Game.Attacking.Calculate.Ranged(attackerattackedspellref attack);
                                            
suse.Effect attack.Effect;
                                            
damage damage damage * (+= 20) / 100;
                                            
Handle.ReceiveAttack(attackerattackedattack,  damagespell);
                                            
suse.AddTarget(attacked.UIDdamageattack);
                                        }
                                        foreach (
Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
                                        {
                                            if (
_obj == null) continue;
                                            if (
_obj.MapObjType == MapObjectType.Monster || _obj.MapObjType == MapObjectType.Player)
                                            {
                                                if (
_obj.UID == attacked.UID) continue;
                                                var 
attacked1 _obj as Entity;
                                                if (
Kernel.GetDistance(lastAttacked.XlastAttacked.Yattacked1.Xattacked1.Y) <= 5)
                                                {
                                                    if (
Handle.CanAttack(attackerattacked1spellfalse))
                                                    {
                                                        
lastAttacked attacked1;
                                                        
uint damage Game.Attacking.Calculate.Ranged(attackerattacked1spellref attack);
                                                        
suse.Effect attack.Effect;
                                                        
damage damage damage * (+= 20) / 100;
                                                        if (
damage == 0) break;
                                                        
Handle.ReceiveAttack(attackerattacked1attack,  damagespell);
                                                        
suse.AddTarget(attacked1.UIDdamageattack);
                                                    }
                                                }
                                            }
                                            else if (
_obj.MapObjType == MapObjectType.SobNpc)
                                            {
                                                
attackedsob _obj as SobNpcSpawn;
                                                if (
Kernel.GetDistance(lastAttacked.XlastAttacked.Yattackedsob.Xattackedsob.Y) <= 5)
                                                {
                                                    if (
Handle.CanAttack(attackerattackedsobspell))
                                                    {
                                                        
lastAttacked attackedsob;
                                                        
uint damage Game.Attacking.Calculate.Ranged(attackerattackedsobref attack);
                                                        
suse.Effect attack.Effect;
                                                        
damage damage damage * (+= 20) / 100;
                                                        if (
damage == 0) break;
                                                        
Handle.ReceiveAttack(attackerattackedsobattackdamagespell);
                                                        
suse.AddTarget(attackedsob.UIDdamageattack);
                                                    }
                                                }
                                            }
                                        }
                                        
attacker.Owner.SendScreen(susetrue);
                                        return;
                                    }
                                }
                            }
                            
#endregion
                            #region  RageofWar
                            
if (attacker.ContainsFlag4(Update.Flags4.RageofWar))
                            {
                                var 
spell Database.SpellTable.GetSpell(12930attacker.Owner);
                                if (
spell != null)
                                {
                                    
spell.CanKill true;
                                    if (
Kernel.Rate(spell.Percent))
                                    {
                                        
SpellUse suse = new SpellUse(true);
                                        
suse.Attacker attacker.UID;
                                        
suse.SpellID spell.ID;
                                        
suse.SpellLevel spell.Level;
                                        
suse.attacker.X;
                                        
suse.attacker.Y;
                                        
IMapObject lastAttacked attacker;
                                        
/*****************/
                                        
attacker.Owner.SendScreen(susetrue);
                                        
ushort _X attacker.X_Y attacker.Y;
                                        
ushort _tX X_tY Y;
                                        
// byte dist = 18;
                                        
var Array = attacker.Owner.Screen.Objects;
                                        var 
map attacker.Owner.Map;
                                        
// if (!map.Floor[X, Y, MapObjectType.Item, null])
                                        // return;
                                        
Game.Attacking.InLineAlgorithm algo = new Game.Attacking.InLineAlgorithm(attacked.X,
                                        
Xattacked.YY, (byte)spell.RangeInLineAlgorithm.Algorithm.DDA);
                                        
// InLineAlgorithm algo = new InLineAlgorithm(attacker.X, X, attacker.Y, Y, dist,
                                        // InLineAlgorithm.Algorithm.DDA);
                                        
var count = (double)algo.lcoords.Count 1;
                                        for (
int i 01i++)
                                        {
                                            var 
selected * (int)count;
                                            
selected Math.Min(algo.lcoords.Count 1selected);
                                            
= (ushort)algo.lcoords[selected].X;
                                            
= (ushort)algo.lcoords[selected].Y;
                                            
FloorItem floorItem = new FloorItem(true);
                                            
floorItem.ItemID 1500;
                                            
floorItem.ItemColor = (Enums.Color)(1);
                                            
floorItem.MapID attacker.MapID;
                                            
floorItem.Type FloorItem.Effect;
                                            
floorItem.X;
                                            
floorItem.Y;
                                            
floorItem.OnFloor Time64.Now;
                                            
floorItem.Owner attacker.Owner;
                                            while (
map.Npcs.ContainsKey(floorItem.UID))
                                                
floorItem.UID Network.GamePackets.FloorItem.FloorUID.Next;
                                            
map.AddFloorItem(floorItem);
                                            
attacker.Owner.SendScreenSpawn(floorItemtrue);
                                        }
                                        
/****************/
                                        
uint p 0;
                                        if (
Handle.CanAttack(attackerattackedspellfalse))
                                        {
                                            
lastAttacked attacked;
                                            
uint damage Game.Attacking.Calculate.Ranged(attackerattackedspellref attack);
                                            
suse.Effect attack.Effect;
                                            
damage damage damage * (+= 20) / 100;
                                            
Handle.ReceiveAttack(attackerattackedattackdamagespell);
                                            
suse.AddTarget(attacked.UIDdamageattack);
                                        }
                                        foreach (
Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
                                        {
                                            if (
_obj == null) continue;
                                            if (
_obj.MapObjType == MapObjectType.Monster || _obj.MapObjType == MapObjectType.Player)
                                            {
                                                if (
_obj.UID == attacked.UID) continue;
                                                var 
attacked1 _obj as Entity;
                                                if (
Kernel.GetDistance(lastAttacked.XlastAttacked.Yattacked1.Xattacked1.Y) <= 5)
                                                {
                                                    if (
Handle.CanAttack(attackerattacked1spellfalse))
                                                    {
                                                        
lastAttacked attacked1;
                                                        
uint damage Game.Attacking.Calculate.Ranged(attackerattacked1spellref attack);
                                                        
suse.Effect attack.Effect;
                                                        
damage damage damage * (+= 20) / 100;
                                                        if (
damage == 0) break;
                                                        
Handle.ReceiveAttack(attackerattacked1attackdamagespell);
                                                        
suse.AddTarget(attacked1.UIDdamageattack);
                                                    }
                                                }
                                            }
                                            else if (
_obj.MapObjType == MapObjectType.SobNpc)
                                            {
                                                
attackedsob _obj as SobNpcSpawn;
                                                if (
Kernel.GetDistance(lastAttacked.XlastAttacked.Yattackedsob.Xattackedsob.Y) <= 5)
                                                {
                                                    if (
Handle.CanAttack(attackerattackedsobspell))
                                                    {
                                                        
lastAttacked attackedsob;
                                                        
uint damage Game.Attacking.Calculate.Ranged(attackerattackedsobref attack);
                                                        
suse.Effect attack.Effect;
                                                        
damage damage damage * (+= 20) / 100;
                                                        if (
damage == 0) break;
                                                        
Handle.ReceiveAttack(attackerattackedsobattackdamagespell);
                                                        
suse.AddTarget(attackedsob.UIDdamageattack);
                                                    }
                                                }
                                            }
                                        }
                                        
attacker.Owner.SendScreen(susetrue);
                                        return;
                                    }
                                }
                            }
                            
#endregion
                            #region  HorrorOfStomper
                            
if (attacker.ContainsFlag4(Update.Flags4.HorrorOfStomper))
                            {
                                var 
spell Database.SpellTable.GetSpell(12990attacker.Owner);
                                if (
spell != null)
                                {
                                    
spell.CanKill true;
                                    if (
Kernel.Rate(spell.Percent))
                                    {
                                        
SpellUse suse = new SpellUse(true);
                                        
suse.Attacker attacker.UID;
                                        
suse.SpellID spell.ID;
                                        
suse.SpellLevel spell.Level;
                                        
suse.attacker.X;
                                        
suse.attacker.Y;
                                        
IMapObject lastAttacked attacker;
                                        
/*****************/
                                        
attacker.Owner.SendScreen(susetrue);
                                        
ushort _X attacker.X_Y attacker.Y;
                                        
ushort _tX X_tY Y;
                                        
// byte dist = 18;
                                        
var Array = attacker.Owner.Screen.Objects;
                                        var 
map attacker.Owner.Map;
                                        
// if (!map.Floor[X, Y, MapObjectType.Item, null])
                                        // return;
                                        
Game.Attacking.InLineAlgorithm algo = new Game.Attacking.InLineAlgorithm(attacked.X,
                                        
Xattacked.YY, (byte)spell.RangeInLineAlgorithm.Algorithm.DDA);
                                        
// InLineAlgorithm algo = new InLineAlgorithm(attacker.X, X, attacker.Y, Y, dist,
                                        // InLineAlgorithm.Algorithm.DDA);
                                        
var count = (double)algo.lcoords.Count 1;
                                        for (
int i 01i++)
                                        {
                                            var 
selected * (int)count;
                                            
selected Math.Min(algo.lcoords.Count 1selected);
                                            
= (ushort)algo.lcoords[selected].X;
                                            
= (ushort)algo.lcoords[selected].Y;
                                            
FloorItem floorItem = new FloorItem(true);
                                            
floorItem.ItemID 1530;
                                            
floorItem.ItemColor = (Enums.Color)(1);
                                            
floorItem.MapID attacker.MapID;
                                            
floorItem.Type FloorItem.Effect;
                                            
floorItem.X;
                                            
floorItem.Y;
                                            
floorItem.OnFloor Time64.Now;
                                            
floorItem.Owner attacker.Owner;
                                            while (
map.Npcs.ContainsKey(floorItem.UID))
                                                
floorItem.UID Network.GamePackets.FloorItem.FloorUID.Next;
                                            
map.AddFloorItem(floorItem);
                                            
attacker.Owner.SendScreenSpawn(floorItemtrue);
                                        }
                                        
/****************/
                                        
uint p 0;
                                        if (
Handle.CanAttack(attackerattackedspellfalse))
                                        {
                                            
lastAttacked attacked;
                                            
uint damage Game.Attacking.Calculate.Ranged(attackerattackedspellref attack);
                                            
suse.Effect attack.Effect;
                                            
damage damage damage * (+= 20) / 100;
                                            
Handle.ReceiveAttack(attackerattackedattackdamagespell);
                                            
suse.AddTarget(attacked.UIDdamageattack);
                                        }
                                        foreach (
Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
                                        {
                                            if (
_obj == null) continue;
                                            if (
_obj.MapObjType == MapObjectType.Monster || _obj.MapObjType == MapObjectType.Player)
                                            {
                                                if (
_obj.UID == attacked.UID) continue;
                                                var 
attacked1 _obj as Entity;
                                                if (
Kernel.GetDistance(lastAttacked.XlastAttacked.Yattacked1.Xattacked1.Y) <= 5)
                                                {
                                                    if (
Handle.CanAttack(attackerattacked1spellfalse))
                                                    {
                                                        
lastAttacked attacked1;
                                                        
uint damage Game.Attacking.Calculate.Ranged(attackerattacked1spellref attack);
                                                        
suse.Effect attack.Effect;
                                                        
damage damage damage * (+= 20) / 100;
                                                        if (
damage == 0) break;
                                                        
Handle.ReceiveAttack(attackerattacked1attackdamagespell);
                                                        
suse.AddTarget(attacked1.UIDdamageattack);
                                                    }
                                                }
                                            }
                                            else if (
_obj.MapObjType == MapObjectType.SobNpc)
                                            {
                                                
attackedsob _obj as SobNpcSpawn;
                                                if (
Kernel.GetDistance(lastAttacked.XlastAttacked.Yattackedsob.Xattackedsob.Y) <= 5)
                                                {
                                                    if (
Handle.CanAttack(attackerattackedsobspell))
                                                    {
                                                        
lastAttacked attackedsob;
                                                        
uint damage Game.Attacking.Calculate.Ranged(attackerattackedsobref attack);
                                                        
suse.Effect attack.Effect;
                                                        
damage damage damage * (+= 20) / 100;
                                                        if (
damage == 0) break;
                                                        
Handle.ReceiveAttack(attackerattackedsobattackdamagespell);
                                                        
suse.AddTarget(attackedsob.UIDdamageattack);
                                                    }
                                                }
                                            }
                                        }
                                        
attacker.Owner.SendScreen(susetrue);
                                        return;
                                    }
                                }
                            }
                            
#endregion
                            #region  PeaceofStomper
                            
if (attacker.ContainsFlag4(Update.Flags4.PeaceofStomper))
                            {
                                var 
spell Database.SpellTable.GetSpell(13000attacker.Owner);
                                if (
spell != null)
                                {
                                    
spell.CanKill true;
                                    if (
Kernel.Rate(spell.Percent))
                                    {
                                        
SpellUse suse = new SpellUse(true);
                                        
suse.Attacker attacker.UID;
                                        
suse.SpellID spell.ID;
                                        
suse.SpellLevel spell.Level;
                                        
suse.attacker.X;
                                        
suse.attacker.Y;
                                        
IMapObject lastAttacked attacker;
                                        
/*****************/
                                        
attacker.Owner.SendScreen(susetrue);
                                        
ushort _X attacker.X_Y attacker.Y;
                                        
ushort _tX X_tY Y;
                                        
// byte dist = 18;
                                        
var Array = attacker.Owner.Screen.Objects;
                                        var 
map attacker.Owner.Map;
                                        
// if (!map.Floor[X, Y, MapObjectType.Item, null])
                                        // return;
                                        
Game.Attacking.InLineAlgorithm algo = new Game.Attacking.InLineAlgorithm(attacked.X,
                                        
Xattacked.YY, (byte)spell.RangeInLineAlgorithm.Algorithm.DDA);
                                        
// InLineAlgorithm algo = new InLineAlgorithm(attacker.X, X, attacker.Y, Y, dist,
                                        // InLineAlgorithm.Algorithm.DDA);
                                        
var count = (double)algo.lcoords.Count 1;
                                        for (
int i 01i++)
                                        {
                                            var 
selected * (int)count;
                                            
selected Math.Min(algo.lcoords.Count 1selected);
                                            
= (ushort)algo.lcoords[selected].X;
                                            
= (ushort)algo.lcoords[selected].Y;
                                            
FloorItem floorItem = new FloorItem(true);
                                            
floorItem.ItemID 1540;
                                            
floorItem.ItemColor = (Enums.Color)(1);
                                            
floorItem.MapID attacker.MapID;
                                            
floorItem.Type FloorItem.Effect;
                                            
floorItem.X;
                                            
floorItem.Y;
                                            
floorItem.OnFloor Time64.Now;
                                            
floorItem.Owner attacker.Owner;
                                            while (
map.Npcs.ContainsKey(floorItem.UID))
                                                
floorItem.UID Network.GamePackets.FloorItem.FloorUID.Next;
                                            
map.AddFloorItem(floorItem);
                                            
attacker.Owner.SendScreenSpawn(floorItemtrue);
                                        }
                                        
/****************/
                                        
uint p 0;
                                        if (
Handle.CanAttack(attackerattackedspellfalse))
                                        {
                                            
lastAttacked attacked;
                                            
uint damage Game.Attacking.Calculate.Ranged(attackerattackedspellref attack);
                                            
suse.Effect attack.Effect;
                                            
damage damage damage * (+= 20) / 100;
                                            
Handle.ReceiveAttack(attackerattackedattackdamagespell);
                                            
suse.AddTarget(attacked.UIDdamageattack);
                                        }
                                        foreach (
Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
                                        {
                                            if (
_obj == null) continue;
                                            if (
_obj.MapObjType == MapObjectType.Monster || _obj.MapObjType == MapObjectType.Player)
                                            {
                                                if (
_obj.UID == attacked.UID) continue;
                                                var 
attacked1 _obj as Entity;
                                                if (
Kernel.GetDistance(lastAttacked.XlastAttacked.Yattacked1.Xattacked1.Y) <= 5)
                                                {
                                                    if (
Handle.CanAttack(attackerattacked1spellfalse))
                                                    {
                                                        
lastAttacked attacked1;
                                                        
uint damage Game.Attacking.Calculate.Ranged(attackerattacked1spellref attack);
                                                        
suse.Effect attack.Effect;
                                                        
damage damage damage * (+= 20) / 100;
                                                        if (
damage == 0) break;
                                                        
Handle.ReceiveAttack(attackerattacked1attackdamagespell);
                                                        
suse.AddTarget(attacked1.UIDdamageattack);
                                                    }
                                                }
                                            }
                                            else if (
_obj.MapObjType == MapObjectType.SobNpc)
                                            {
                                                
attackedsob _obj as SobNpcSpawn;
                                                if (
Kernel.GetDistance(lastAttacked.XlastAttacked.Yattackedsob.Xattackedsob.Y) <= 5)
                                                {
                                                    if (
Handle.CanAttack(attackerattackedsobspell))
                                                    {
                                                        
lastAttacked attackedsob;
                                                        
uint damage Game.Attacking.Calculate.Ranged(attackerattackedsobref attack);
                                                        
suse.Effect attack.Effect;
                                                        
damage damage damage * (+= 20) / 100;
                                                        if (
damage == 0) break;
                                                        
Handle.ReceiveAttack(attackerattackedsobattackdamagespell);
                                                        
suse.AddTarget(attackedsob.UIDdamageattack);
                                                    }
                                                }
                                            }
                                        }
                                        
attacker.Owner.SendScreen(susetrue);
                                        return;
                                    }
                                }
                            }
                            
#endregion
                            #region TripleBeast
                            
if (attacker.ContainsFlag3(Update.Flags4.TripleBeast))
                            {
                                var 
spell Database.SpellTable.GetSpell(12850attacker.Owner);
                                if (
spell != null && Kernel.Rate(30))
                                {
                                    
spell.CanKill true;
                                    {
                                        
SpellUse suse = new SpellUse(true);
                                        
suse.Attacker attacker.UID;
                                        
suse.SpellID spell.ID;
                                        
suse.SpellLevel spell.Level;
                                        
suse.attacker.X;
                                        
suse.attacker.Y;
                                        
IMapObject lastAttacked attacker;
                                        
uint p 0;
                                        if (
Handle.CanAttack(attackerattackedspellfalse))
                                        {
                                            
lastAttacked attacked;
                                            
uint damage Game.Attacking.Calculate.Melee(attackerattackedref attackspell);
                                            
damage damage 160 100;
                                            
p++;
                                            
suse.Effect attack.Effect;
                                            
attack.Damage 0;
                                            
Handle.ReceiveAttack(attackerattackedattackdamagespell);
                                            
suse.AddTarget(attacked.UIDdamageattack);
                                            
suse.Effect attack.Effect Attack.AttackEffects.None;
                                        }
                                        foreach (
Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
                                        {
                                            if (
5) break;
                                            if (
_obj == null) continue;
                                            if (
_obj.MapObjType == MapObjectType.Monster || _obj.MapObjType == MapObjectType.Player)
                                            {
                                                if (
_obj.UID == attacked.UID) continue;
                                                var 
attacked1 _obj as Entity;
                                                if (
Kernel.GetDistance(lastAttacked.XlastAttacked.Yattacked1.Xattacked1.Y) <= && attacked.UID != attacked1.UID)
                                                {
                                                    if (
Handle.CanAttack(attackerattacked1spellfalse))
                                                    {
                                                        
lastAttacked attacked1;
                                                        
uint damage Game.Attacking.Calculate.Melee(attackerattacked1ref attackspell);
                                                        if (
== 1)
                                                        {
                                                            
damage damage 80 100;
                                                        }
                                                        if (
== 2)
                                                        {
                                                            
damage damage 60 100;
                                                        }
                                                        if (
== 3)
                                                        {
                                                            
damage damage 40 100;
                                                        }
                                                        else if (
3)
                                                        {
                                                            
damage damage 20 100;
                                                        }
                                                        
suse.Effect attack.Effect;
                                                        
Handle.ReceiveAttack(attackerattacked1attackdamagespell);
                                                        
suse.AddTarget(attacked1.UIDdamageattack);
                                                        
suse.Effect attack.Effect Attack.AttackEffects.None;
                                                        
p++;
                                                    }
                                                }
                                            }
                                            else if (
_obj.MapObjType == MapObjectType.SobNpc)
                                            {
                                                
attackedsob _obj as SobNpcSpawn;
                                                if (
Kernel.GetDistance(lastAttacked.XlastAttacked.Yattackedsob.Xattackedsob.Y) <= 5)
                                                {
                                                    if (
Handle.CanAttack(attackerattackedsobspell))
                                                    {
                                                        
lastAttacked attackedsob;
                                                        
uint damage Game.Attacking.Calculate.Melee(attackerattackedsobref attack);
                                                        
suse.Effect attack.Effect;
                                                        
Handle.ReceiveAttack(attackerattackedsobattackdamagespell);
                                                        
suse.AddTarget(attackedsob.UIDdamageattack);
                                                        
suse.Effect attack.Effect Attack.AttackEffects.None;
                                                    }
                                                }
                                            }
                                        }
                                        
attacker.Owner.SendScreen(susetrue);
                                        return;
                                    }
                                }
                            }
                            
#endregion 

بعد كده هتعمل سيرش على كود ده
كود PHP:

 public static void ReceiveAttack(Game.Entity attackerGame.Entity attackedAttack attackuint damageDatabase.SpellInformation spell

تضيف تحتيه
كود PHP:

 #region ThunderCloud
            
if (attacked.Name == "Thundercloud")
            {
                if (
spell != null && spell.ID != 0)
                {
                    if (
Kernel.Rate(75)) damage 1;
                    else 
damage 0;
                }
                else if (
spell == null || spell.ID == 0)
                {
                    
damage 1;
                }
            }
            foreach (var 
th in Kernel.Maps[attacker.MapID].Entities.Values.Where(=> i.Name == "Thundercloud"))
            {
                if (
th.CUID == attacked.UID)
                {
                    if (
attacker == null || Kernel.GetDistance(attacker.Xattacker.Yth.Xth.Y) > th.MonsterInfo.AttackRange || attacker.Dead) break;
                    
th.MonsterInfo.InSight attacker.UID;
                    break;
                }
            }
            
#endregion
            #region RevengeTaill
            
if (attacked.ContainsFlag4(Network.GamePackets.Update.Flags4.RevengeTaill))
            {
                if (
attacked.Owner != null && attacked.Owner.Spells != null && attacked.Owner.Spells.ContainsKey(13030))
                {
                    var 
spelll Database.SpellTable.GetSpell(13030attacked.Owner);
                    if (
damage <= spelll.Power)
                    {
                        
SpellUse suses = new SpellUse(true);
                        
suses.Attacker attacked.UID;
                        
suses.Attacker1 attacker.UID;
                        
suses.SpellID 13030;
                        
suses.SpecialEffect 1;
                        
suses.AddTarget(attacker.UIDdamagenull);
                        if (
attacker.Hitpoints <= damage)
                        {
                            
attacker.Die(attacked);
                        }
                        else
                        {
                            
attacker.Hitpoints -= damage;
                        }
                        
attacked.Owner.SendScreen(susestrue);
                    }
                }
            }
            
#endregion
            #region ChillingSnow
            
if (attacked.ContainsFlag4(Update.Flags4.ChillingSnow) && attacked.IsStomper2() && attacker.EntityFlag == EntityFlag.Player)
            {
                var 
spell1 Database.SpellTable.GetSpell(12960attacked.Owner);
                
int rate 95;
                
int diff attacker.BattlePower attacked.BattlePower;
                if (
diff 0diff 0;
                
rate -= (byte)(diff 5);
                if (
rate 0rate 0;
                if (
Kernel.Rate(rate))
                {
                    
attacker.AddFlag4(Update.Flags4.xChillingSnow);
                    
attacker.ChillingSnowStamp Time64.Now;
                    
attacker.ChillingSnow = (byte)(spell1.Level 1);
                }
            }
            
#endregion
            #region FreezingPelter
            
if (attacked.ContainsFlag4(Update.Flags4.FreezingPelter) && attacked.IsStomper2() && attacker.EntityFlag == EntityFlag.Player)
            {
                var 
spell1 Database.SpellTable.GetSpell(13020attacked.Owner);
                
int rate 30;
                
int diff attacker.BattlePower attacked.BattlePower;
                if (
diff 0diff 0;
                
rate -= (byte)(diff 5);
                if (
rate 0rate 0;
                if (
Kernel.Rate(rate))
                {
                    
attacker.AddFlag4(Update.Flags4.xFreezingPelter);
                    
attacker.FreezingPelterStamp Time64.Now;
                    
byte num 0;
                    if (
spell1.Level == 0num 1;
                    if (
spell1.Level == 1num 1;
                    if (
spell1.Level == 2num 2;
                    if (
spell1.Level == 3num 2;
                    if (
spell1.Level == 4num 3;
                    if (
spell1.Level == 5num 3;
                    if (
spell1.Level == 5num 4;
                    
attacker.FreezingPelter num;
                }
            }
            
#endregion 

وبعدين فى اخر الكود ده
كود PHP:

attacker.AttackStamp Time64.Now

هضيف كود ده
كود PHP:

#region ThunderCloud
            
foreach (var th in Kernel.Maps[attacker.MapID].Entities.Values.Where(=> i.Name == "Thundercloud"))
            {
                if (
th.CUID == attacker.UID)
                {
                    if (
attacked == null || Kernel.GetDistance(attacked.Xattacked.Yth.Xth.Y) > th.MonsterInfo.AttackRange || attacked.Dead) break;
                    
th.MonsterInfo.InSight attacked.UID;
                    break;
                }
            }
            
#endregion 

بعدين هنعمل سيرش فى كود ده
كود PHP:

 public static bool CanAttack(Game.Entity attackerGame.Entity attackedDatabase.SpellInformation spellbool melee

هنضيف تحتيه كود ده
كود PHP:

#region ThunderCloud
            
if (attacked.Name == "Thundercloud")
            {
                if (
attacked.CUID == attacker.UID) return false;
                if (!
Constants.PKForbiddenMaps.Contains(attacker.MapID))
                {
                    if (
attacker.PKMode != Game.Enums.PKMode.PK &&
                     
attacker.PKMode != Game.Enums.PKMode.Team)
                        return 
false;
                    else
                    {
                        
attacker.AddFlag(Network.GamePackets.Update.Flags.FlashingName);
                        
attacker.FlashingNameStamp Time64.Now;
                        
attacker.FlashingNameTime 20;
 
                        return 
true;
                    }
                }
                else return 
false;
            }
            
#endregion 

بعدين نعمل سيرش على كود ده
كود PHP:

  #region Monster -> Player \ Monster 

هنضيف تحتيه كود ده
كود PHP:

 if (attacked.EntityFlag == EntityFlag.Player)
                {
                    if (
attacker.Companion && attacker.Name != "Thundercloud")
                    {
                        if (
Constants.PKForbiddenMaps.Contains(attacker.MapID))
                            return;
                    } 

فيه نفس كود
هنضيف كود ده
كود PHP:

#region ThunderCloud
                    
if (attacker.Name == "Thundercloud")
                    {
                        if (
Kernel.GamePool.ContainsKey(attacker.CUID))
                        {
                            var 
owner Kernel.GamePool[attacker.CUID];
                            var 
spell Database.SpellTable.GetSpell(12840owner);
                            var 
spell2 Database.SpellTable.GetSpell(12970owner);
                            
byte percent 0;
                            if (
spell2 != null)
                            {
                                if (
spell2.Level == 0percent 130;
                                if (
spell2.Level == 1percent 140;
                                if (
spell2.Level == 2percent 150;
                                if (
spell2.Level == 3percent 160;
                                if (
spell2.Level == 4percent 170;
                                if (
spell2.Level == 5percent 180;
                                if (
spell2.Level == 6percent 200;
                            }
                            
attack = new Attack(true);
                            
attack.Attacker attacker.UID;
                            
attack.Attacked attacked.UID;
                            
attack.AttackType Network.GamePackets.Attack.Kill;
                            
attack.attacked.X;
                            
attack.attacked.Y;
                            
attack.Damage 1;
                            
uint damage2 = (uint)(Calculate.Melee(owner.Entityattackedref attack) * spell.FirstDamage 100);
                            if (
attacker.SpawnPacket[50] == 128)//ThunderBolt
                                
damage2 = (uint)(damage2 percent 100);
                            
SpellUse suse2 = new SpellUse(true);
                            
suse2.Attacker attacker.UID;
                            
suse2.Attacker1 attacked.UID;
                            
suse2.SpellID 13190;
                            
suse2.attacked.X;
                            
suse2.attacked.Y;
                            
suse2.AddTarget(attacked.UIDdamage2attack);
                            
attacker.MonsterInfo.SendScreen(suse2);
                            if (
attacked.Hitpoints <= damage2)
                            {
                                
attacked.Die(attacker);
                                
attack.ResponseDamage damage2;
                                
attacker.MonsterInfo.SendScreen(attack);
                            }
                            else
                            {
                                
attacked.Hitpoints -= damage2;
                            }
                            return;
                        }
                        else
                            return;
                    }
                    
#endregion
#region ThunderCloudSight
                    
foreach (var th in Kernel.Maps[attacker.MapID].Entities.Values.Where(=> i.Name == "Thundercloud"))
                    {
                        if (
th.CUID == attacked.UID)
                        {
                            if (
attacker == null || Kernel.GetDistance(attacker.Xattacker.Yth.Xth.Y) > th.MonsterInfo.AttackRange || attacker.Dead) break;
                            
th.MonsterInfo.InSight attacker.UID;
                            break;
                        }
                    }
                    
#endregion 

بعدين هنعمل سيرش على كود ده
كود PHP:

 attack.Effect Attack.AttackEffects.None

تحتيه هضيف كود ده
كود PHP:

#region ThunderCloud
                        
if (attacker.Name == "Thundercloud")
                        {
                            if (
Kernel.GamePool.ContainsKey(attacker.CUID))
                            {
                                var 
owner Kernel.GamePool[attacker.CUID];
                                var 
spell Database.SpellTable.GetSpell(12840owner);
                                var 
spell2 Database.SpellTable.GetSpell(12970owner);
                                
uint damage2 = (uint)(Calculate.Melee(owner.Entityattackedref attack) * (spell.Level spell.FirstDamage 50) / 100);
                                if (
attacker.SpawnPacket[50] == 128)
                                    
damage2 = (uint)(damage2 spell2.FirstDamage);
                                
SpellUse suse2 = new SpellUse(true);
                                
suse2.Attacker attacker.UID;
                                
suse2.Attacker1 attacked.UID;
                                
suse2.SpellID 13190;
                                
suse2.attacked.X;
                                
suse2.attacked.Y;
                                
suse2.AddTarget(attacked.UIDdamage2attack);
                                
attacker.MonsterInfo.SendScreen(suse2);
                                if (
attacked.Hitpoints <= damage2)
                                {
                                    
attacked.Die(attacker);
                                    
attack = new Attack(true);
                                    
attack.Attacker attacker.UID;
                                    
attack.Attacked attacked.UID;
                                    
attack.AttackType Network.GamePackets.Attack.Kill;
                                    
attack.attacked.X;
                                    
attack.attacked.Y;
                                    
attack.Damage 1;
                                    
attack.ResponseDamage damage2;
                                    
attacker.MonsterInfo.SendScreen(attack);
                                }
                                else
                                {
                                    
attacked.Hitpoints -= damage2;
                                }
                                return;
                            }
                            else
                                return;
                        }
                        
#endregion 

بعدين هنعمل سيرش
#region Ranged
هنزل لحد كود ده
كود PHP:

if (weapons.Item1.ID 1000 != 500 && weapons.Item1.ID 1000 != 613 && weapons.Item1.ID 

هنبدلهبى الكود ده
كود PHP:

 if (weapons.Item1.ID 1000 != 500 && weapons.Item1.ID 1000 != 613 && weapons.Item1.ID 1000 != 626) return; 

هنعمل سيرش على نفس كود وهنضفهم تانى
كده خلصنا من ملف الهاندل نيجى بقى لى ملف اينتى
هنضيف دول فى ملف اينتى
كود PHP:

 #region WindWalker
        
public Time64 TCSpellUse;
        public 
Time64 SwirlingStamp;
        public 
bool IsStomper()
        {
            if (
EntityFlag == Game.EntityFlag.Player)
            {
                if (
this.Class >= 160 && this.Class <= 165)
                    if (
this.Windwalker == || this.Windwalker == || this.Windwalker == 15)
                        return 
true;
            }
            return 
false;
        }
        public 
bool IsStomper1()
        {
            if (
EntityFlag == Game.EntityFlag.Player)
            {
                var 
weapons Owner.Weapons;
                if (
weapons.Item1 != null)
                    if (
weapons.Item1.ID 1000 == 626)
                        if (
this.Class >= 160 && this.Class <= 165)
                            if (
this.Windwalker == || this.Windwalker == || this.Windwalker == 15)
                                return 
true;
            }
            return 
false;
        }
        public 
bool IsStomper2()
        {
            if (
EntityFlag == Game.EntityFlag.Player)
            {
                var 
weapons Owner.Weapons;
                if (
weapons.Item2 != null)
                    if (
weapons.Item2.ID 1000 == 626)
                        if (
this.Class >= 160 && this.Class <= 165)
                            if (
this.Windwalker == || this.Windwalker == || this.Windwalker == 15)
                                return 
true;
            }
            return 
false;
        }
        public 
bool IsChaser()
        {
            if (
EntityFlag == Game.EntityFlag.Player)
            {
                if (
this.Class >= 160 && this.Class <= 165)
                    if (
this.Windwalker == || this.Windwalker == || this.Windwalker == 1)
                        return 
true;
            }
            return 
false;
        }
        public 
bool IsChaser1()
        {
            if (
EntityFlag == Game.EntityFlag.Player)
            {
                var 
weapons Owner.Weapons;
                if (
weapons.Item1 != null)
                    if (
weapons.Item1.ID 1000 == 626)
                        if (
this.Class >= 160 && this.Class <= 165)
                            if (
this.Windwalker == || this.Windwalker == || this.Windwalker == 1)
                                return 
true;
            }
            return 
false;
        }
        public 
bool IsChaser2()
        {
            if (
EntityFlag == Game.EntityFlag.Player)
            {
                var 
weapons Owner.Weapons;
                if (
weapons.Item2 != null)
                    if (
weapons.Item2.ID 1000 == 626)
                        if (
this.Class >= 160 && this.Class <= 165)
                            if (
this.Windwalker == || this.Windwalker == || this.Windwalker == 1)
                                return 
true;
            }
            return 
false;
        }
        public 
Time64 OmnipotenceStampRevengeTaillStampStomperStaminaStampChaserStaminaStampHealingSnowStampThunderCloudStampChillingSnowStampFreezingPelterStamp;
        public 
byte ChillingSnow 0FreezingPelter 0;
        
#endregion
        #region WindWalker.
        
public String Branch "";
        private 
byte _ChangeBranch;
        public 
byte ChangeBranch
        
{
            
get
            
{
                return 
_ChangeBranch;
            }
            
set
            
{
                
_ChangeBranch value;
            }
        }
        public 
Time64 TripleBeastStamp Time64.Now;
        public 
bool SwirlingStorm false;
        public 
float SwirlingStormPercent;
        public 
byte _Windwalker;
        public 
byte Windwalker
        
{
            
get
            
{
                
SpawnPacket[304] = _Windwalker;
                return 
_Windwalker;
            }
            
set
            
{
                
_Windwalker value;
                
SpawnPacket[304] = value;
                if (
value 0)
                    
AddFlag4(Network.GamePackets.Update.Flags4.JusticeChant);
            }
        }
        public 
bool PWindWalker()
        {
            if (
EntityFlag == Game.EntityFlag.Player)
            {
                var 
weapons Owner.Weapons;
                if (
weapons.Item2 != null)
                    if (
weapons.Item2.ID 1000 == 626)
                        return 
true;
            }
            return 
false;
        }
        
#endregion 

بعد كده هنبدل ده بالى عندك
كود PHP:

 public uint Mesh
       
{
            
get
            
{
                return 
BitConverter.ToUInt32(SpawnPacket_Mesh);
            }
            
set
            
{
                
Writer.Write(value_MeshSpawnPacket);
            }
 
        } 

بعد كده هنفتح ملف فلور ايتم
هنضيف دول
كود PHP:

  RageOfWarTrap 1500,
  
ShadowofChaser 1550

بعد كده هنضيف كوده ده
كود PHP:

 public Game.Entity ShadowofChaserAttackerShadowofChaserAttacked;
public 
Attack Attack

بعد كده هنضيف

كود PHP:

 public byte Unknown37
        
{
            
get { return Buffer[37]; }
            
set Buffer[37] = value; }
        }
 
        public 
string Name2
        
{
            
get { return Program.Encoding.GetString(Buffer9316); }
            
set Writer.Write(value93Buffer); }
        }
        public 
ushort X2
        
{
            
get { return BitConverter.ToUInt16(Buffer61); }
            
set Writer.Write(value61Buffer); }
        }
 
        public 
ushort Y2
        
{
            
get { return BitConverter.ToUInt16(Buffer63); }
            
set Writer.Write(value63Buffer); }
        } 


هنفتح ملف Map.cs
اعمل سيرش
كود PHP:

public enum MapObjectType 

ضيف فيه كود ده
FloorSpell,
هنفتح ملف Data.cs
هنضيف كود ده
كود PHP:

public ushort X2
        
{
            
get
            
{
                return 
BitConverter.ToUInt16(Buffer28);
            }
            
set
            
{
                
Writer.Write(value28Buffer);
            }
        }
        public 
ushort Y2
        
{
            
get
            
{
                return 
BitConverter.ToUInt16(Buffer30);
            }
            
set
            
{
                
Writer.Write(value30Buffer);
            }
        } 

هنفتح ملف world.cs
هنضيف فيه كود ده
كود PHP:

 public bool Register(Entity ThunderCloudd)
        {
            if (
ThunderCloudd.Owner.TimerSubscriptions == null)
            {
                
ThunderCloudd.Owner.TimerSyncRoot = new object();
                
ThunderCloudd.Owner.TimerSubscriptions = new IDisposable[]
                {
                    
ThunderCloud.Add(ThunderCloudd)
                };
                return 
true;
            }
            return 
false;
        }
        public 
void Unregister(Entity Thundercloud)
        {
            if (
Thundercloud.Owner == null || Thundercloud.Owner.TimerSubscriptions == null) return;
            
lock (Thundercloud.Owner.TimerSyncRoot)
            {
                if (
Thundercloud.Owner.TimerSubscriptions != null)
                {
                    foreach (var 
timer in Thundercloud.Owner.TimerSubscriptions)
                        
timer.Dispose();
                    
Thundercloud.Owner.TimerSubscriptions null;
                }
            }
        } 

طبعا هيظهرلك ايرور
هنضيف فى نفس ملف
كود ده
كود PHP:

 public TimerRule<EntityThunderCloud;
        private 
void ThunderCloudTimer(Entity ThunderCloudint time)
        {
            if (
ThunderCloud == null) return;
            if (
Time64.Now >= ThunderCloud.ThunderCloudStamp.AddSeconds(1))
            {
                
ThunderCloud.ThunderCloudStamp Time64.Now;
                if (
ThunderCloud.Hitpoints 400)
                    
ThunderCloud.Hitpoints -= 400;
                else
                {
                    
Kernel.Maps[ThunderCloud.MapID].RemoveEntity(ThunderCloud);
                    
Data data = new Data(true);
                    
data.UID ThunderCloud.UID;
                    
data.ID Data.RemoveEntity;
                    
ThunderCloud.MonsterInfo.SendScreen(data);
                    
ThunderCloud.MonsterInfo.SendScreen(data);
                    foreach (var 
client in Kernel.GamePool.Values)
                    {
                        if (
Kernel.GetDistance(ThunderCloud.XThunderCloud.Yclient.Entity.Xclient.Entity.Y) > 16) continue;
                        
client.RemoveScreenSpawn(ThunderCloudtrue);
                    }
                    
Unregister(ThunderCloud);
                    return;
                }
            }
            if ((
ThunderCloud.SpawnPacket[50] == && Time64.Now >= ThunderCloud.MonsterInfo.LastMove.AddMilliseconds(750)) || ThunderCloud.SpawnPacket[50] == 128)
            {
                
ThunderCloud.MonsterInfo.LastMove Time64.Now;
                if (
ThunderCloud.MonsterInfo.InSight == 0)
                {
                    foreach (var 
one in Kernel.Maps[ThunderCloud.MapID].Entities.Values.Where(=> Kernel.GetDistance(ThunderCloud.XThunderCloud.Yi.Xi.Y) <= ThunderCloud.MonsterInfo.AttackRange))
                    {
                        if (
one == null || one.Dead || one.MonsterInfo.Guard || one.Companion) continue;
                        
ThunderCloud.MonsterInfo.InSight one.UID;
                        
Entity insight null;
                        if (
Kernel.Maps[ThunderCloud.MapID].Entities.ContainsKey(ThunderCloud.MonsterInfo.InSight))
                            
insight Kernel.Maps[ThunderCloud.MapID].Entities[ThunderCloud.MonsterInfo.InSight];
                        else if (
Kernel.GamePool.ContainsKey(ThunderCloud.MonsterInfo.InSight))
                            
insight Kernel.GamePool[ThunderCloud.MonsterInfo.InSight].Entity;
                        if (
insight == null || insight.Dead || (insight.MonsterInfo != null && insight.MonsterInfo.Guard))
                        {
                            
ThunderCloud.MonsterInfo.InSight 0;
                            break;
                        }
                        new 
Game.Attacking.Handle(nullThunderCloudinsight);
                        break;
                    }
                }
                else
                {
                    
Entity insight null;
                    if (
Kernel.Maps[ThunderCloud.MapID].Entities.ContainsKey(ThunderCloud.MonsterInfo.InSight))
                        
insight Kernel.Maps[ThunderCloud.MapID].Entities[ThunderCloud.MonsterInfo.InSight];
                    else if (
Kernel.GamePool.ContainsKey(ThunderCloud.MonsterInfo.InSight))
                        
insight Kernel.GamePool[ThunderCloud.MonsterInfo.InSight].Entity;
                    if (
insight == null || insight.Dead || (insight.MonsterInfo != null && insight.MonsterInfo.Guard))
                    {
                        
ThunderCloud.MonsterInfo.InSight 0;
                        return;
                    }
                    new 
Game.Attacking.Handle(nullThunderCloudinsight);
                }
            }
 
        } 

هنيجى لاخر حاجة هنفتح ملف ان بى سى
نعمل سيرش على كود
كود PHP:

public Npcs(GameClient client

هنضيف تحتيه
كود PHP:

 public static string WindwalkerSkills(GameClient clientushort spellid)
        {
            
byte level 0;
            if (
spellid == 12830 || spellid == 13070 || spellid == 13080level 120;
            if (
spellid == 12840 || spellid == 12960 || spellid == 13000level 70;
            if (
spellid == 12850 || spellid == 12930 || spellid == 12990level 40;
            if (
spellid == 12860 || spellid == 12870level 3;
            if (
spellid == 12890 || spellid == 12940 || spellid == 12950 || spellid == 13090level 15;
            if (
spellid == 12970 || spellid == 13020 || spellid == 13030level 100;
            var 
spell Database.SpellTable.GetSpell(spellidclient);
            if (!
client.Spells.ContainsKey(spellid) && client.Entity.Level >= level) return "Available";
            else if (
client.Spells.ContainsKey(spellid)) return "Learned";
            else return 
"N/A";
        } 

بعدين نضيف ان بى سى ده
كود PHP:

#region WindwalkerLord
                                
case 5158:
                                    {
                                        switch (
npcRequest.OptionID)
                                        {
                                            case 
0:
                                                {
                                                    if (
client.Entity.Class >= 160 && client.Entity.Class <= 165)
                                                    {
 
                                                        
dialog.Text("Our Windwalker school was founded by Saint Wan on the principle of KINDNESS and JUSTICE. Once you decide to");
                                                        
dialog.Text("~join us as a Windwalker, you take the responsibility for the security of the country against alien invaders and devils.");
                                                        if (
client.Entity.Class != 165)
                                                        {
                                                            
dialog.Option("I~want~to~get~promoted."1);
                                                        }
                                                        
dialog.Option("Learn~skills."2);
                                                        
dialog.Option("Switch~to~another~branch."4);
                                                        
dialog.Option("I`ll~talk~to~you~later."255);
                                                        
dialog.Send();
 
                                                    }
                                                    else
                                                    {
                                                        
dialog.Text("You don`t look like a Windwalker. What`s the matter? If you were ever a Windwalker in either of the previous two lives, you can learn [Frost Gaze I] from me.");
 
                                                        
dialog.Option("Learn~Frost~Gaze~I."3);
                                                        
dialog.Send();
                                                    }
                                                    break;
                                                }
                                            
#region Promocion
                                            
case 1:
                                                {
                                                    if (
client.Entity.Class >= 160 && client.Entity.Class <= 165)
                                                    {
                                                        if (
client.Entity.Class == 165)
                                                        {
                                                            
dialog.Text("You cannot be promoted anymore. You have mastered your class.");
                                                            
dialog.Option("Thank you master."255);
                                                            
dialog.Send();
                                                        }
                                                        else
                                                        {
                                                            
dialog.Text("To promote now you need" client.PromoteItemNameNeed " level " client.PromoteLevelNeed ".");
                                                            
dialog.Option("Promote me sir."7);
                                                            
dialog.Send();
                                                        }
                                                    }
                                                    else
                                                    {
                                                        
dialog.Text("I will not tell any of the Windwalker secrets to another class, so, good bye.");
                                                        
dialog.Option("Alright."255);
                                                        
dialog.Send();
                                                    }
                                                    break;
                                                }
                                            case 
7:
                                                {
                                                    if (
client.Entity.Class >= 160 && client.Entity.Class <= 165)
                                                    {
                                                        if (
client.Entity.Class == 165)
                                                        {
                                                            
dialog.Text("You cannot be promoted anymore. You have mastered your class.");
                                                            
dialog.Option("Thank you master."255);
                                                            
dialog.Send();
                                                        }
                                                        else
                                                        {
                                                            if (
client.PromoteItemNeed == 721020)
                                                            {
                                                                if (
client.Inventory.Remove("moonbox"))
                                                                {
                                                                    
client.Entity.Update(10"end_task"true);
                                                                    
client.Inventory.Add(client.PromoteItemGain01);
                                                                    
client.Entity.Class++;
                                                                    
dialog.Text("Congratulations! You have been promoted.");
                                                                    
dialog.Option("Thank you master."255);
                                                                    
dialog.Send();
                                                                }
                                                                else
                                                                {
                                                                    
dialog.Text("You don't meet the requierments.");
                                                                    
dialog.Option("Ahh."255);
                                                                    
dialog.Send();
                                                                }
                                                                return;
                                                            }
                                                            if (
client.Inventory.Contains(client.PromoteItemNeedclient.PromoteItemCountNeed) && client.Entity.Level >= client.PromoteLevelNeed)
                                                            {
                                                                
client.Inventory.Remove(client.PromoteItemNeedclient.PromoteItemCountNeed);
                                                                
client.Inventory.Add(client.PromoteItemGain01);
                                                                
client.Entity.Class++;
                                                                
client.Entity.Update(10"end_task"true);
                                                                
dialog.Text("Congratulations! You have been promoted.");
                                                                
dialog.Option("Thank you master."255);
                                                                
dialog.Send();
                                                            }
                                                            else
                                                            {
                                                                
dialog.Text("You don't meet the requierments.");
                                                                
dialog.Option("Ahh."255);
                                                                
dialog.Send();
                                                            }
                                                        }
                                                    }
                                                    else
                                                    {
                                                        
dialog.Text("I will not tell any of the WindWalker secrets to another class, so, good bye.");
                                                        
dialog.Option("Alright."255);
                                                        
dialog.Send();
                                                    }
                                                    break;
                                                }
                                            
#endregion
                                            
case 4:
                                                {
                                                    if (
client.Entity.IsChaser())
                                                    {
                                                        
dialog.Text("                                       *Branches of Windwalker School*");
                                                        
dialog.Text("،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ");
                                                        
dialog.Text("Stomper: Excels in melee combat with excellent attack range and remarkable recovery ability. Stomper`s exclusive skill");
                                                        
dialog.Text("          can freeze enemies` blood to extend their skill cooldown time and response time.");
                                                        
dialog.Text("Chaser: Excels in ranged combat. With a unique focusing skill, Chaser is able to control the power of wind to attack");
                                                        
dialog.Text("         enemies far away.");
                                                        
dialog.Text("،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ");
                                                        
dialog.Text("(You`re currently on the [RangedChaser] branch. Each Windwalker can switch his/her branch once every 30 days, free of charge.)");
                                                        
dialog.Option("Switch~to~[MeleeStomper]~branch."5);
                                                        
dialog.Option("I`ll~think~about~it."255);
                                                        
dialog.Send();
                                                    }
                                                    else if (
client.Entity.IsStomper())
                                                    {
                                                        
dialog.Text("                                       *Branches of Windwalker School*");
                                                        
dialog.Text("،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ");
                                                        
dialog.Text("Stomper: Excels in melee combat with excellent attack range and remarkable recovery ability. Stomper`s exclusive skill");
                                                        
dialog.Text("          can freeze enemies` blood to extend their skill cooldown time and response time.");
                                                        
dialog.Text("Chaser: Excels in ranged combat. With a unique focusing skill, Chaser is able to control the power of wind to attack");
                                                        
dialog.Text("         enemies far away.");
                                                        
dialog.Text("،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ،ھ");
                                                        
dialog.Text("(You`re currently on the [MeleeStomper] branch. Each Windwalker can switch his/her branch once every 30 days, free of charge.)");
                                                        
dialog.Option("Switch~to~[RangedChaser]~branch."6);
                                                        
dialog.Option("I`ll~think~about~it."255);
                                                        
dialog.Send();
                                                    }
                                                    break;
                                                }
                                            case 
5:
                                                {
                                                    if (
client.Entity.IsStomper())
                                                        
client.Entity.Windwalker 0;
                                                    else if (
client.Entity.IsChaser())
                                                        
client.Entity.Windwalker 8;
                                                    else break;
                                                    
Update upd = new Update(true);
                                                    
upd.UID client.Entity.UID;
                                                    
upd.UpdateCount 1;
                                                    
upd.SwitchWindwalker(32772091);
                                                    
client.SendScreen(updtrue);
                                                    
Update upd2 = new Update(true);
                                                    
upd2.UID client.Entity.UID;
                                                    
upd2.UpdateCount 1;
                                                    
upd2.SwitchWindwalker(71client.Entity.Windwalker);
                                                    
client.SendScreen(upd2true);
                                                    
client.Entity.RemoveFlag4((ulong)Network.GamePackets.Update.Flags4.JusticeChant);
                                                    
client.Entity.RemoveFlag4((ulong)Network.GamePackets.Update.Flags4.ChillingSnow);
                                                    
client.Entity.RemoveFlag4((ulong)Network.GamePackets.Update.Flags4.FreezingPelter);
                                                    
client.Entity.RemoveFlag4((ulong)Network.GamePackets.Update.Flags4.HealingSnow);
                                                    
client.Entity.RemoveFlag4((ulong)Network.GamePackets.Update.Flags4.RevengeTaill);
                                                    
client.Entity.RemoveFlag4((ulong)Network.GamePackets.Update.Flags4.ShadowofChaser);
                                                    
client.Entity.RemoveFlag4((ulong)Network.GamePackets.Update.Flags4.Omnipotence);
                                                    
dialog.Text("Okay, I`ve changed your branch to [MeleeStomper].");
                                                    
dialog.Option("Thanks!"255);
                                                    
dialog.Send();
                                                    break;
                                                }
                                            case 
6:
                                                {
                                                    if (
client.Entity.IsStomper())
                                                        
client.Entity.Windwalker 0;
                                                    else if (
client.Entity.IsChaser())
                                                        
client.Entity.Windwalker 8;
                                                    else break;
                                                    
Update upd = new Update(true);
                                                    
upd.UID client.Entity.UID;
                                                    
upd.UpdateCount 1;
                                                    
upd.SwitchWindwalker(32772091);
                                                    
client.SendScreen(updtrue);
                                                    
Update upd2 = new Update(true);
                                                    
upd2.UID client.Entity.UID;
                                                    
upd2.UpdateCount 1;
                                                    
upd2.SwitchWindwalker(71client.Entity.Windwalker);
                                                    
client.SendScreen(upd2true);
                                                    
client.Entity.RemoveFlag4((ulong)Network.GamePackets.Update.Flags4.JusticeChant);
                                                    
client.Entity.RemoveFlag4((ulong)Network.GamePackets.Update.Flags4.ChillingSnow);
                                                    
client.Entity.RemoveFlag4((ulong)Network.GamePackets.Update.Flags4.FreezingPelter);
                                                    
client.Entity.RemoveFlag4((ulong)Network.GamePackets.Update.Flags4.HealingSnow);
                                                    
client.Entity.RemoveFlag4((ulong)Network.GamePackets.Update.Flags4.RevengeTaill);
                                                    
client.Entity.RemoveFlag4((ulong)Network.GamePackets.Update.Flags4.ShadowofChaser);
                                                    
client.Entity.RemoveFlag4((ulong)Network.GamePackets.Update.Flags4.Omnipotence);
                                                    
dialog.Text("Okay, I`ve changed your branch to [RangedChaser].");
                                                    
dialog.Option("Thanks!"255);
                                                    
dialog.Send();
                                                    break;
                                                }
                                            case 
3:
                                                {
                                                    if (
client.Entity.FirstRebornClass == 0)
                                                    {
                                                        
client.AddSpell(LearnableSpell(12830));
                                                        break;
                                                    }
                                                    else if (
client.Entity.FirstRebornClass == 165)
                                                    {
                                                        
client.AddSpell(LearnableSpell(13070));
                                                        break;
                                                    }
                                                    else if (
client.Entity.FirstRebornClass == 165 client.Entity.SecondRebornClass == 165)
                                                    {
                                                        
client.AddSpell(LearnableSpell(13080));
                                                        break;
                                                    }
                                                    else
                                                    {
                                                        
client.MessageBox("You`re not qualified to learn this skill.");
                                                        break;
                                                    }
 
                                                }
                                            case 
2:
                                                {
                                                    
dialog.Text("Our Windwalker school is divided into two branches: Chaser and Stomper. Chaser focuses on");
                                                    
dialog.Text("~ranged combat, while Stomper excels in melee combat. I`m here representing the Chief to");
                                                    
dialog.Text("~impart distinctive skills to the Windwalkers.");
 
                                                    
dialog.Option("Learn~skills~of~Stomper."10);
                                                    
dialog.Option("Learn~skills~of~Chaser."11);
                                                    
dialog.Option("Learn~rebirth~skill."12);
                                                    
dialog.Option("Learn~universal~skills."13);
                                                    
dialog.Send();
                                                    break;
                                                }
                                            case 
12:
                                                {
                                                    
dialog.Text("Frost Gaze is an exclusive rebirth skill for Windwalker. The heroes who got reborn to be Windwalker can learn Frost Gaze I. If both of your precious andd");
                                                    
dialog.Text("~current Class are Windwalker, you can learn Frost Gaze II. While for Windwalkers who were also a Windwalker in previous two lives, they can learn Frost Gaze III.");
 
                                                    if (
client.Entity.FirstRebornClass == 0)
                                                        
dialog.Option("Frost~Gaze~I."3);
                                                    if (
client.Entity.FirstRebornClass == 165)
                                                        
dialog.Option("Frost~Gaze~II."3);
                                                    if (
client.Entity.SecondRebornClass == 165)
                                                        
dialog.Option("Frost~Gaze~III."3);
                                                    
dialog.Option("I~want~to~learn~other~skills."2);
                                                    
dialog.Option("I`ll~talk~to~you~later."255);
                                                    
dialog.Send();
                                                    break;
                                                }
                                            case 
13:
                                                {
                                                    
dialog.Text("Omnipotence and Justice Chant are basic skills for Windwalker, which are available to both Chaser and Stomper learners. I`ll teach you if you want.");
 
                                                    
dialog.Option("Omnipotence~[Lv.3].~(" WindwalkerSkills(client12860) + ")"40);
                                                    
dialog.Option("JusticeChant~[Lv.3].~(" WindwalkerSkills(client12870) + ")"41);
                                                    
dialog.Option("I~want~to~learn~other~skills."2);
                                                    
dialog.Option("I`ll~talk~to~you~later."255);
                                                    
dialog.Send();
                                                    break;
                                                }
                                            case 
40:
                                            case 
41:
                                                {
                                                    
ushort spellid 12800;
                                                    switch (
npcRequest.OptionID)
                                                    {
                                                        case 
40: { spellid += 60; break; }
                                                        case 
41: { spellid += 70; break; }
                                                    }
                                                    if (
WindwalkerSkills(clientspellid) == "Learned")
                                                    {
                                                        
dialog.Text("FellowBrother has already acquired this skill. Go practice and feel its power.");
 
                                                        
dialog.Option("Okay."2);
                                                        
dialog.Send();
                                                        break;
                                                    }
                                                    else if (
WindwalkerSkills(clientspellid) == "Available")
                                                    {
                                                        
client.AddSpell(LearnableSpell(spellid));
                                                    }
                                                    else
                                                    {
                                                        
dialog.Text("The study of [" SpellTable.GetSpell(spellid0).Name "] requires FellowBrother to reach a certain level. FellowBrother, you can find me when you reach the required Level.");
 
                                                        
dialog.Option("I`ll~see~you!"2);
                                                        
dialog.Send();
                                                    }
                                                    break;
                                                }
                                            case 
10:
                                                {
                                                    
dialog.Text("The Stomper branch has developed overwhelming melee skills which enable the caster to disable an enemy with swift and flexible fighting moves.");
                                                    
dialog.Text("~FellowBrother, which skill would you like to learn?");
 
                                                    
dialog.Option("AngerofStomper~[Lv.1].~(" WindwalkerSkills(client12980) + ")"20);
                                                    
dialog.Option("BurntFrost~[Lv.15].~(" WindwalkerSkills(client12940) + ")"21);
                                                    
dialog.Option("HealingSnow~[Lv.15].~(" WindwalkerSkills(client12950) + ")"22);
                                                    
dialog.Option("RageofWar~[Lv.40].~(" WindwalkerSkills(client12930) + ")"23);
                                                    
dialog.Option("HorrorofStomper~[Lv.40].~(" WindwalkerSkills(client12990) + ")"24);
                                                    
dialog.Option("ChillingSnow~[Lv.70].~(" WindwalkerSkills(client12960) + ")"25);
                                                    
dialog.Option("PeaceofStomper~[Lv.70].~(" WindwalkerSkills(client13000) + ")"26);
                                                    
dialog.Option("Next."27);
                                                    
dialog.Send();
                                                    break;
                                                }
                                            case 
27:
                                                {
                                                    
dialog.Text("The Stomper branch has developed overwhelming melee skills which enable the caster to disable an enemy with swift and flexible fighting moves.");
                                                    
dialog.Text("~FellowBrother, which skill would you like to learn?");
 
                                                    
dialog.Option("RevengeTail~[Lv.100].~(" WindwalkerSkills(client13030) + ")"28);
                                                    
dialog.Option("FreezingPelter~[Lv.100].~(" WindwalkerSkills(client13020) + ")"29);
                                                    
dialog.Option("I~want~to~learn~other~skills."2);
                                                    
dialog.Option("I`ll~talk~to~you~later."255);
                                                    
dialog.Option("Previous."10);
                                                    
dialog.Send();
                                                    break;
                                                }
                                            case 
20:
                                            case 
21:
                                            case 
22:
                                            case 
23:
                                            case 
24:
                                            case 
25:
                                            case 
26:
                                            case 
28:
                                            case 
29:
                                                {
                                                    
ushort spellid 12900;
                                                    switch (
npcRequest.OptionID)
                                                    {
                                                        case 
20: { spellid += 80; break; }
                                                        case 
21: { spellid += 40; break; }
                                                        case 
22: { spellid += 50; break; }
                                                        case 
23: { spellid += 30; break; }
                                                        case 
24: { spellid += 90; break; }
                                                        case 
25: { spellid += 60; break; }
                                                        case 
26: { spellid += 100; break; }
                                                        case 
28: { spellid += 130; break; }
                                                        case 
29: { spellid += 120; break; }
                                                    }
                                                    if (
WindwalkerSkills(clientspellid) == "Learned")
                                                    {
                                                        
dialog.Text("FellowBrother has already acquired this skill. Go practice and feel its power.");
 
                                                        
dialog.Option("Okay."2);
                                                        
dialog.Send();
                                                        break;
                                                    }
                                                    else if (
WindwalkerSkills(clientspellid) == "Available")
                                                    {
                                                        
client.AddSpell(LearnableSpell(spellid));
                                                    }
                                                    else
                                                    {
                                                        
dialog.Text("The study of [" SpellTable.GetSpell(spellid0).Name "] requires FellowBrother to reach a certain level. FellowBrother, you can find me when you reach the required Level.");
 
                                                        
dialog.Option("I`ll~see~you!"2);
                                                        
dialog.Send();
                                                    }
                                                    break;
                                                }
                                            case 
11:
                                                {
                                                    
dialog.Text("The Chaser branch is famous for its ability to control wind and outstanding ranged attacks.");
                                                    
dialog.Text("~FellowBrother, which skill would you like to learn?");
 
                                                    
dialog.Option("SwirlingStorm~[Lv.15].~(" WindwalkerSkills(client12890) + ")"30);
                                                    
dialog.Option("ShadowofChaser~[Lv.15].~(" WindwalkerSkills(client13090) + ")"31);
                                                    
dialog.Option("TripleBlasts~[Lv.40].~(" WindwalkerSkills(client12850) + ")"32);
                                                    
dialog.Option("Thundercloud~[Lv.70]~[" WindwalkerSkills(client12840) + "]"33);
                                                    
dialog.Option("Thunderbolt~[Lv.100]~[" WindwalkerSkills(client12970) + "]"34);
                                                    
dialog.Option("I~want~to~learn~other~skills."2);
                                                    
dialog.Option("I`ll~talk~to~you~later."255);
                                                    
dialog.Send();
                                                    break;
                                                }
                                            case 
30:
                                            case 
31:
                                            case 
32:
                                            case 
33:
                                            case 
34:
                                                {
                                                    
ushort spellid 12800;
                                                    switch (
npcRequest.OptionID)
                                                    {
                                                        case 
30: { spellid += 90; break; }
                                                        case 
31: { spellid += 290; break; }
                                                        case 
32: { spellid += 50; break; }
                                                        case 
33: { spellid += 40; break; }
                                                        case 
34: { spellid += 170; break; }
                                                    }
                                                    if (
WindwalkerSkills(clientspellid) == "Learned")
                                                    {
                                                        
dialog.Text("FellowBrother has already acquired this skill. Go practice and feel its power.");
 
                                                        
dialog.Option("Okay."2);
                                                        
dialog.Send();
                                                        break;
                                                    }
                                                    else if (
WindwalkerSkills(clientspellid) == "Available")
                                                    {
                                                        
client.AddSpell(LearnableSpell(spellid));
                                                    }
                                                    else
                                                    {
                                                        
dialog.Text("The study of [" SpellTable.GetSpell(spellid0).Name "] requires FellowBrother to reach a certain level. FellowBrother, you can find me when you reach the required Level.");
 
                                                        
dialog.Option("I`ll~see~you!"2);
                                                        
dialog.Send();
                                                    }
                                                    break;
                                                }
                                        }
                                        break;
                                    }
                                
#endregion 

بعدين ان بى سى ريبورن واسكند
هنبدله بى ده
كود PHP:

#region RebirthMaster
                    
case 59558:
                        {
                            
dialog.Avatar(67);
                            switch (
npcRequest.OptionID)
                            {
                                case 
0:
                                    {
 
                                        
dialog.Text("I devote all my life to the research of eternity. And finally I Know the secret of");
                                        
dialog.Text(" rebirth! Well, anything I can help you with?");
                                        
dialog.Option("1st Rebirth."1);
                                        
dialog.Option("2nd Rebirth."2);
                                        
dialog.Option("Reincarnation."3);
                                        
dialog.Option("Reallot my Attribute Points."4);
                                        
dialog.Option("Just Passing By."255);
                                        
dialog.Send();
                                        break;
                                    }
                                case 
175:
                                    {
                                        
dialog.Text("It`s a magic stone which is required for the 1st rebirth. There`re 2 ways you can get it: a) Buy it from the Shopping Mall,");
                                        
dialog.Text("~b) Collect 7 Normal gems and a bottle of Clean Water, swap them for a Celestial Stone from Celestine (Twin City 365,92).");
                                        
dialog.Text("~Tips: You can dig for gems in Mine Caves in main cities. As to the Clean Water, you try your luck on the Water Devil in the Adventure Islands.");
 
                                        
dialog.Option("I~see."255);
                                        
dialog.Send();
                                        break;
                                    }
                                case 
176:
                                    {
                                        
dialog.Text("After the rebirth, you`ll receive some extra attribute points and start from Level 15. Every time you level up, you`ll gain some attribute points, which you can allot to different attributes at your will.");
 
                                        
dialog.Option("Back."1);
                                        
dialog.Option("I~see."255);
                                        
dialog.Send();
                                        break;
                                    }
                                case 
177:
                                    {
                                        
dialog.Text("Some of the skills you`ve leant are completely forgotten after the rebirth, while the others are forgotten for the moment.");
                                        
dialog.Text("~They can have an epiphany. The epiphany makes the skill leap, after it reaches to half of the former level before rebirth.");
 
                                        
dialog.Option("Back."1);
                                        
dialog.Option("I~see."255);
                                        
dialog.Send();
                                        break;
                                    }
                                case 
190:
                                    {
                                        
dialog.Text("It`s a magic stone which is required for the 1st rebirth. There`re 2 ways you can get it: a) Buy it from the Shopping Mall,");
                                        
dialog.Text("~b) Collect 7 Normal gems and a bottle of Clean Water, swap them for a Celestial Stone from Celestine (Twin City 365,92).");
                                        
dialog.Text("~Tips: You can dig for gems in Mine Caves in main cities. As to the Clean Water, you try your luck on the Water Devil in the Adventure Islands.");
 
                                        
dialog.Option("I~see."255);
                                        
dialog.Send();
                                        break;
                                    }
                                case 
1:
                                    {
                                        if (
client.Entity.Reborn == 0)
                                        {
                                            if (
client.Entity.Level >= 120 || client.Entity.Class > 100 && client.Entity.Level >= 110)
                                            {
                                                if (
client.Entity.Class % 10 == 5)
                                                {
                                                    if (
client.Inventory.Contains(7212591))
                                                    {
                                                        
dialog.Text("If you want to get reborn, you should reach at least Level 120 (Level 110 if you`re a Water Taoist), and be promoted to the highest job title.");
                                                        
dialog.Text("~Besides, you should give me a Celestial Stone. After rebirth, you`ll be able to freely allot your attribute points and learn more powerful skills.");
 
                                                        
dialog.Option("Celestial~Stone?"175);
                                                        
dialog.Option("Allot~attribute~points?"176);
                                                        
dialog.Option("Powerful~skills?"177);
                                                        
dialog.Option("I~would~like~to~be~reborn."12);
                                                        
dialog.Option("Let~me~think~it~over."255);
                                                        
dialog.Send();
                                                    }
                                                    else
                                                    {
                                                        
dialog.Text("I`m really sorry, but I can`t do anything without the Celestial Stone.");
 
                                                        
dialog.Option("Celestial~Stone?"190);
                                                        
dialog.Send();
                                                    }
                                                }
                                                else
                                                {
 
                                                    
dialog.Text("You need to master your class. First!.");
 
                                                    
dialog.Option("I~see."255);
                                                    
dialog.Send();
 
                                                }
                                            }
                                            else
                                            {
                                                
dialog.Text("Your~Level~is~lower~than~the~required.~Please~train~harder.");
 
                                                
dialog.Option("I~see."255);
                                                
dialog.Send();
                                            }
                                        }
                                        else
                                        {
                                            
dialog.Text("You~have~been~reborn.~Please~work~harder.");
 
                                            
dialog.Option("Oh,~I~see."255);
                                            
dialog.Send();
                                        }
                                        break;
                                    }
                                case 
12:
                                    {
                                        if (
client.Entity.Reborn == 0)
                                        {
                                            if (
client.Entity.Class % 10 == && client.Entity.Level >= (client.Entity.Class == 135 110 120))
                                            {
                                                
dialog.Text("There`re 2 ways to get reborn. Attention: Only the items you equipped will be degraded during the rebirth.");
 
                                                
dialog.Option("Blessed~rebirth."181);
                                                
dialog.Option("Normal~rebirth."180);
                                                
dialog.Send();
                                            }
                                            else
                                            {
                                                
dialog.Text("You cannot reborn if your level is not 110+ for water saints and 120+ for other masters.");
                                                
dialog.Option("Ahh."255);
                                                
dialog.Send();
                                            }
                                        }
                                        else
                                        {
                                            
dialog.Text("You cannot reborn again here. Alex, an elder who lives in Ape Canyon, will tell you about the third life.");
                                            
dialog.Option("Thank you."255);
                                            
dialog.Send();
                                        }
                                        break;
                                    }
                                case 
181:
                                    {
                                        
dialog.Text("I dedicate myself to studying the blessed force of eternity, which absorbs the essences of the universe.");
                                        
dialog.Text("~During the rebirth, a random piece of your equipment will be added with blessed attribute.");
                                        
dialog.Text("But please be noted that epic weapons can only be blessed when you get reborn into the same class (for instance: Trojan-Trojan, Ninja-Ninja).");
 
                                        
dialog.Option("I~agree."13);
                                        
dialog.Option("Back."12);
                                        
dialog.Option("Let~me~think~it~over."255);
                                        
dialog.Send();
                                        break;
                                    }
                                case 
180:
                                    {
                                        
dialog.Text("Unlike blessed rebirth, you won`t get blessed attribute added to your equipment.");
                                        
dialog.Text("~However, you will receive a Super gem, instead. So, select a class for your new life, first!");
 
                                        
dialog.Option("Okay."15);
                                        
dialog.Option("Back."12);
                                        
dialog.Option("Let~me~think~it~over."255);
                                        
dialog.Send();
                                        break;
                                    }
                                case 
15:
                                    {
                                        if (
client.Entity.Reborn == 0)
                                        {
                                            if (
client.Entity.Class % 10 == && client.Entity.Level >= (client.Entity.Class == 135 110 120))
                                            {
                                                
dialog.Text("Select the super gem you desire.");
                                                
dialog.Option("SuperPhoenixGem."203);
                                                
dialog.Option("SuperDragonGem."213);
                                                
dialog.Option("SuperFuryGem."223);
                                                
dialog.Option("SuperRainbowGem."233);
                                                
dialog.Option("SuperVioletGem."253);
                                                
dialog.Option("SuperMoonGem."254);
                                                
dialog.Option("SuperKylinGem."243);
                                                
dialog.Option("Nothing thank you."255);
                                                
dialog.Send();
                                            }
                                            else
                                            {
                                                
dialog.Text("You cannot reborn if your level is not 110+ for water saints and 120+ for other masters.");
                                                
dialog.Option("Ahh."255);
                                                
dialog.Send();
                                            }
                                            break;
                                        }
                                        else
                                        {
                                            
dialog.Text("You cannot reborn again here. Alex, an elder who lives in Ape Canyon, will tell you about the third life.");
                                            
dialog.Option("Thank you."255);
                                            
dialog.Send();
                                        }
                                        break;
                                    }
                                case 
185:
                                    {
                                        
dialog.Text("You`ve reached the highest of the class. Now, you can select one of the followings as your new class:");
 
                                        
dialog.Option("Pirate.", (byte)(70 13));
                                        
dialog.Option("Wind.Guard.", (byte)(161 npcRequest.OptionID));
                                        
dialog.Option("Dragon-Warror.", (byte)(80 13));
                                        
dialog.Option("Previous~page."13);
                                        
dialog.Option("I`ll~think~about~it."255);
                                        
dialog.Send();
                                        break;
                                    }
                                case 
13:
                                    {
                                        if (
client.Entity.Reborn == 0)
                                        {
                                            if (
client.Entity.Class % 10 == && client.Entity.Level >= (client.Entity.Class == 135 110 120))
                                            {
                                                
dialog.Text("You`ve reached the highest of the class. Now, you can select one of the followings as your new class:");
 
                                                
dialog.Option("Trojan.", (byte)(10 npcRequest.OptionID));
                                                
dialog.Option("Warrior.", (byte)(20 npcRequest.OptionID));
                                                
dialog.Option("Archer.", (byte)(40 npcRequest.OptionID));
                                                
dialog.Option("WaterTaoist.", (byte)(132 npcRequest.OptionID));
                                                
dialog.Option("FireTaoist.", (byte)(142 npcRequest.OptionID));
                                                
dialog.Option("Ninja.", (byte)(50 npcRequest.OptionID));
                                                
dialog.Option("Monk.", (byte)(60 npcRequest.OptionID));
                                                
dialog.Option("More~choices."185);
                                                
dialog.Send();
                                            }
                                            else
                                            {
                                                
dialog.Text("You cannot reborn if your level is not 110+ for water saints and 120+ for other masters.");
                                                
dialog.Option("Ahh."255);
                                                
dialog.Send();
                                            }
                                            break;
                                        }
                                        else
                                        {
                                            
dialog.Text("You have been reborn. Please work harder.");
                                            
dialog.Option("Thank you."255);
                                            
dialog.Send();
                                        }
                                        break;
                                    }
                                
#region Reincarnation
                                
case 3:
                                    {
                                        
dialog.Text("From now on, have total control of your life! If you've been Reborn twice and are at least Level 110, just bring me some Oblivion Dew and I'll help you become Reincarnated! After the Reincarnation, your class skills will revert to level 0,");
                                        
dialog.Text("~but they`ll return to their previous levels when you reach Level 110, again. If your classes have been the same for all three lives, including your current one, you can learn the Pure Skills from your class trainer,");
                                        
dialog.Text("~in the job center.");
 
                                        
dialog.Option("I~want~to~get~Reincarnated."5);
                                        
dialog.Option("Where~can~I~get~the~Dew?"6);
                                        
dialog.Send();
                                        break;
                                    }
                                case 
5:
                                    {
                                        if (
client.Entity.Reborn == && client.Entity.Level >= 120)
                                        {
                                            
client.Send(new Data(true)
                                            {
                                                
UID client.Entity.UID,
                                                
ID Data.OpenWindow,
                                                
dwParam Data.WindowCommands.Reincarnation,
                                                
wParam1 client.Entity.X,
                                                
wParam2 client.Entity.Y
                                            
});
                                        }
                                        else
                                        {
                                            
dialog.Text("You have not been Reborn twice. I`m afraid you will not withstand the power of the Oblivion Dew. Come to me when you get stronger.");
 
                                            
dialog.Option("Got~it!~Thanks!"255);
                                            
dialog.Send();
                                        }
                                        break;
                                    }
                                case 
6:
                                    {
                                        
dialog.Text("Oblivion Dew is available in the Honor Store and the Horse Race Store. You can use your Honor Points or Horse Race Points to purchase one.");
 
                                        
dialog.Option("Got~it!~Thanks!"255);
                                        
dialog.Send();
                                        break;
                                    }
                                
#endregion
                                #region Reallot Attributes
                                
case 4:
                                    {
                                        
dialog.Text("Reborn~level~70+~players~can~redistribute~their~attribute~points~at~the~cost~of~a~dragonball.");
 
                                        
dialog.Option("I~will~reallot~my~points."8);
                                        
dialog.Option("Let~me~think~it~over."255);
                                        
dialog.Send();
                                        break;
                                    }
                                case 
8:
                                    {
                                        if (
client.Entity.Reborn 0)
                                        {
                                            if (
client.Entity.Level >= 70)
                                            {
                                                if (
client.Inventory.Contains(10880001))
                                                {
                                                    
client.Inventory.Remove(10880001);
                                                    if (
client.Entity.Reborn != 0)
                                                    {
                                                        
client.Entity.Agility 0;
                                                        
client.Entity.Strength 0;
                                                        
client.Entity.Vitality 1;
                                                        
client.Entity.Spirit 0;
                                                        if (
client.Entity.Reborn == 1)
                                                        {
                                                            
client.Entity.Atributes = (ushort)(client.ExtraAtributePoints(client.Entity.FirstRebornLevelclient.Entity.FirstRebornLevel)
                                                                + 
52 * (client.Entity.Level 15));
                                                        }
                                                        else
                                                        {
                                                            
client.Entity.Atributes = (ushort)(client.ExtraAtributePoints(client.Entity.FirstRebornLevelclient.Entity.FirstRebornClass) +
                                                                
client.ExtraAtributePoints(client.Entity.SecondRebornLevelclient.Entity.SecondRebornClass) + 52 * (client.Entity.Level 15));
                                                        }
                                                    }
                                                }
                                                else
                                                {
                                                    
dialog.Text("Although~you~are~reborn,~you~have~not~reached~level~70.~Please~put~in~more~efforts.");
 
                                                    
dialog.Option("I~see."255);
                                                    
dialog.Send();
                                                }
                                            }
                                            else
                                            {
                                                
dialog.Text("Sorry,~you~do~not~have~a~dragonball.");
 
                                                
dialog.Option("I~see."255);
                                                
dialog.Send();
                                            }
                                        }
                                        else
                                        {
                                            
dialog.Text("You~cannot~reallot~your~ability~points~unless~you~are~reborn~and~above~level~70.");
 
                                            
dialog.Option("I~see."255);
                                            
dialog.Send();
                                        }
                                        break;
                                    }
                                
#endregion
                                #region 2nd reborn
                                
case 2:
                                    {
                                        if (
client.Entity.Reborn == 1)
                                        {
                                            
dialog.Text("Good. You`ve met the requirements for the second rebirth. You`ll face ElmistRo challenges till you complete the big quest.");
                                            
dialog.Text("~Once you manage to get reborn, you will receive unique aura, be able to learn Bless, and enjoy many benefits.");
                                            
dialog.Text("~If you don`t want to bother with the quest, just go buy an Exemption Token!");
                                            
dialog.Option("Exemption~Token?"9);
                                            
dialog.Option("Hear~about~the~quest."254);
                                            
dialog.Option("Back."255);
                                            
dialog.Option("Never~mind.~I~quit."255);
                                            
dialog.Send();
                                        }
                                        else if (
client.Entity.Reborn == 2)
                                        {
                                            
dialog.Text("Impressive! You are already reborn twice!");
                                            
dialog.Option("Take me to the Evil Abyss."254);
                                            
dialog.Option("Yup!"255);
                                            
dialog.Send();
                                        }
                                        break;
                                    }
                                case 
9:
                                    {
                                        if (
client.Entity.Reborn == 1)
                                        {
                                            if (
client.Entity.Class % 10 == && client.Entity.Level >= (client.Entity.Class == 135 110 120))
                                            {
                                                
dialog.Text("Select the class you want to reborn in.");
                                                
dialog.Option("Trojan."11);
                                                
dialog.Option("Warrior."21);
                                                
dialog.Option("Archer."41);
                                                
dialog.Option("WaterTaoist."132);
                                                
dialog.Option("FireTaoist."142);
                                                
dialog.Option("Ninja."51);
                                                
dialog.Option("Monk."61);
                                                
dialog.Option("Pirate."71);
                                                
dialog.Option("Wind.Guard."161);
                                                
dialog.Option("Dragon-Warror"81);
                                                
dialog.Send();
                                            }
                                            else
                                            {
                                                
dialog.Text("If you are a water saint you need level 110+, else you need 120+.");
                                                
dialog.Option("I'll just leave"255);
                                                
dialog.Send();
                                                break;
                                            }
                                        }
                                        else
                                        {
                                            
dialog.Text("Impressive! You are already reborn twice!");
                                            
dialog.Option("Take me to the Evil Abyss."254);
                                            
dialog.Option("Yup!"255);
                                            
dialog.Send();
                                            break;
                                        }
                                        break;
                                    }
                                case 
11:
                                case 
21:
                                case 
41:
                                case 
51:
                                case 
61:
                                case 
71:
                                case 
81:
                                case 
132:
                                case 
142:
                                case 
161:
                                    {
                                        if (
npcRequest.OptionID == 255) return;
                                        if (
client.Entity.Reborn == 1)
                                        {
                                            if (
client.Entity.Class % 10 == && client.Entity.Level >= (client.Entity.Class == 135 110 120))
                                            {
                                                if (
client.Inventory.Contains(7237011) || client.Quests.GetQuest(QuestID.SecondQuestStageFour) != null && client.Quests.CheckQuest(QuestID.SecondQuestStageFour) == QuestPacket.QuestData.QuestStatus.Finished)
                                                {
                                                    if (
client.Reborn(npcRequest.OptionID))
                                                    {
                                                        
client.Inventory.Remove(7237011);
                                                    }
                                                    else
                                                    {
                                                        
dialog.Text("You need two free slots in your inventory.");
                                                        
dialog.Option("I'll just leave"255);
                                                        
dialog.Send();
                                                        break;
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                
dialog.Text("If you are a water saint you need level 110+, else you need 120+.");
                                                
dialog.Option("I'll just leave"255);
                                                
dialog.Send();
                                                break;
                                            }
                                        }
                                        else
                                        {
                                            
dialog.Text("You need to be in the second life to be able to get the third life.");
                                            
dialog.Option("I'll just leave"255);
                                            
dialog.Send();
                                            break;
                                        }
                                        break;
                                    }
                                case 
254:
                                    {
                                        if (
client.Entity.Reborn == && client.Quests.GetQuest(QuestID.SecondQuestStageFour) != null && client.Quests.CheckQuest(QuestID.SecondQuestStageFour) == QuestPacket.QuestData.QuestStatus.Finished)
                                        {
                                            
dialog.Text("You have completed your quests with protect performance. you can take your");
                                            
dialog.Text(" Second Rebirth now.");
                                            
dialog.Option("I want second rebirth."9);
                                            
dialog.Option("I don't want second rebirth."255);
                                            
dialog.Send();
                                        }
                                        else
                                        {
                                            
dialog.Text("It`s a really ElmistRo way to go... You`re going to meet many trials in the Evil Abyss. What`s more, after you get reborn,"); dialog.Text("~you will need to start over again and make triple efforts to level-up. You`d better think it over before making such a vital decision."); dialog.Text("~If you`ve made up your mind to accept this quest, I`ll send you to the Evil Abyss.");
                                            
dialog.Option("Yes,~please!"253);
                                            
dialog.Option("I~don`t~want~to~risk~my~life."255);
                                            
dialog.Send();
                                        }
                                        break;
                                    }
                                case 
253:
                                    {
                                        var 
coords Kernel.Maps[1700].RandomCoordinates(69270940);
                                        
client.Entity.TeleportTeam(1700coords.Item1coords.Item2);
                                        break;
                                    }
                                
#endregion
                                
default:
                                    {
                                        if (
client.Entity.Reborn == 0)
                                        {
                                            if (
client.Entity.Class % 10 == && client.Entity.Level >= (client.Entity.Class == 135 110 120))
                                            {
                                                if (
npcRequest.OptionID == 255)
                                                    return;
                                                if (
npcRequest.OptionID >= 200 && npcRequest.OptionID <= 254)
                                                {
                                                    
client.SelectedGem = (byte)(npcRequest.OptionID 100);
                                                    if (
client.SelectedGem == 54)
                                                        
client.SelectedGem 63;
                                                    if (
client.Entity.Reborn == 0)
                                                    {
                                                        
byte id 4;
                                                        
dialog.Text("Select the class you want to reborn in.");
                                                        
dialog.Option("Trojan.", (byte)(10 id));
                                                        
dialog.Option("Warrior.", (byte)(20 id));
                                                        
dialog.Option("Archer.", (byte)(40 id));
                                                        
dialog.Option("WaterTaoist.", (byte)(132 id));
                                                        
dialog.Option("FireTaoist.", (byte)(142 id));
                                                        
dialog.Option("Ninja.", (byte)(50 id));
                                                        
dialog.Option("Monk.", (byte)(60 id));
                                                        
dialog.Option("Pirate.", (byte)(70 id));
                                                        
dialog.Option("Wind.Guard.", (byte)(161 id));
                                                        
dialog.Option("Dragon-Warror.", (byte)(80 id));
                                                        
dialog.Send();
                                                        break;
                                                    }
                                                    else
                                                    {
                                                        
dialog.Text("You cannot reborn again here. Alex, an elder who lives in Ape Canyon, will tell you about the third life.");
                                                        
dialog.Option("Thank you."255);
                                                        
dialog.Send();
                                                    }
                                                }
                                                else
                                                {
                                                    if (
client.Inventory.Contains(7212591))
                                                    {
                                                        
byte _class = (byte)(npcRequest.OptionID npcRequest.OptionID 10);
                                                        if (
_class 100)
                                                            
_class += 2;
                                                        
byte type = (byte)(npcRequest.OptionID _class);
                                                        if (
_class 100)
                                                            
_class++;
                                                        if (
type != 4)
                                                        {
                                                            
_class -= 10;
                                                        }
                                                        if (
client.Reborn(_class))
                                                        {
                                                            
client.Inventory.Remove(7212591);
                                                            if (
type == 4)
                                                            {
                                                                if (
client.SelectedGem != 0)
                                                                {
                                                                    
uint gemid = (uint)(client.SelectedGem 700000);
                                                                    
client.Inventory.Add(gemid01);
                                                                }
                                                            }
                                                            else
                                                            {
                                                                
int availableshots 0;
                                                                for (
byte count 0count 19count++)
                                                                {
                                                                    if (!
client.Equipment.Free(count))
                                                                    {
                                                                        if (
client.Equipment.TryGetItem(count).Bless == 0)
                                                                        {
                                                                            
availableshots++;
                                                                        }
                                                                    }
                                                                }
                                                                if (
availableshots != 0)
                                                                {
                                                                    
byte ex = (byte)Kernel.Random.Next(20);
                                                                    if (!
client.Equipment.Free(ex) && client.Equipment.Objects[ex 1].Position != (byte)PacketHandler.Positions.Steed)
                                                                    {
                                                                        if (
client.Equipment.TryGetItem(ex).Bless == 0)
                                                                        {
                                                                            var 
item client.Equipment.TryGetItem(ex);
                                                                            
item.Bless 1;
                                                                            
item.Mode ElmistRo.Game.Enums.ItemMode.Update;
                                                                            
item.Send(client);
                                                                            
ElmistRo.Database.ConquerItemTable.UpdateBless(item);
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                        else
                                                        {
                                                            
dialog.Text("Sorry, but you need atleast 2 free spaces in your inventory.");
                                                            
dialog.Option("Ohh."255);
                                                            
dialog.Send();
                                                        }
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                
dialog.Text("You have been reborn. Please work harder.");
                                                
dialog.Option("Thank you."255);
                                                
dialog.Send();
                                            }
                                        }
                                        break;
                                    }
                            }
                            break;
                        }
                    
#endregion 

هتفتح فولدر
Game\Features\Reincarnation
وهنفتح ملف هاندل هنلاقيه جوه فولدر وهنبحث عن كود ده
كود PHP:

#region Remove Extra Skill 

هنضيف فيه كود ده
كود PHP:

if (client.Entity.FirstRebornClass == 165 && client.Entity.SecondRebornClass == 165 && client.Entity.Class == 165)
            {
                
WontAdd(ElmistRo.Game.Enums.SkillIDs.FrostGazeI);
               
            } 

وبعدين نفس ملف هنبحث عن كود ده
كود PHP:

switch (client.Entity.FirstRebornClass

هنضيف ده فيه تحتيه
كود PHP:

case 165:
                    {
                        
Add(Game.Enums.SkillIDs.FrostGazeI);
                        
Add(Game.Enums.SkillIDs.Thundercloud);
                        
Add(Game.Enums.SkillIDs.TripleBlasts);
                        
Add(Game.Enums.SkillIDs.Omnipotence);
                        
Add(Game.Enums.SkillIDs.JusticeChant);
                        
Add(Game.Enums.SkillIDs.BurntFrost);
                        
Add(Game.Enums.SkillIDs.HealingSnow);
                        
Add(Game.Enums.SkillIDs.ChillingSnow);
                        
Add(Game.Enums.SkillIDs.Thunderbolt);
                        
Add(Game.Enums.SkillIDs.AngerofStomper);
                        
Add(Game.Enums.SkillIDs.HorrorofStomper);
                        
Add(Game.Enums.SkillIDs.RageofWar);
                        
Add(Game.Enums.SkillIDs.PeaceofStomper);
                        
Add(Game.Enums.SkillIDs.FreezingPelter);
                        
Add(Game.Enums.SkillIDs.RevengeTail);
                        
Add(Game.Enums.SkillIDs.Circle);
                        
Add(Game.Enums.SkillIDs.Rectangle);
                        
Add(Game.Enums.SkillIDs.FrostGazeII);
                        
Add(Game.Enums.SkillIDs.FrostGazeIII);
                        
Add(Game.Enums.SkillIDs.ShadowofChaser);
                        
Add(Game.Enums.SkillIDs.ThundercloudAttack);
                        
Add(Game.Enums.SkillIDs.DestinyFire);
                        
Add(Game.Enums.SkillIDs.FireShower);
                        
Add(Game.Enums.SkillIDs.WheelOfDevastation);
                        break;
                    }
            } 

طبعا هتقولى ايه ده ياعم ايه كمية الايرورات ديه تعالى نحلها مع بعض
شايفين كلمة SkillIDs هتدوسو عليها اف 12 وهتعملو ده
هضيفه تحت اى كود اسكل الاسكلات ديه
كود PHP:

 FrostGazeI 12830,
            
Thundercloud 12840,
            
TripleBlasts 12850,
            
Omnipotence 12860,
            
JusticeChant 12870,
            
SwirlingStorm 12890,
            
RageofWar 12930,
            
BurntFrost 12940,
            
HealingSnow 12950,
            
ChillingSnow 12960,
            
Thunderbolt 12970,
            
AngerofStomper 12980,
            
HorrorofStomper 12990,
            
PeaceofStomper 13000,
            
FreezingPelter 13020,
            
RevengeTail 13030,
            
Circle 13050,
            
Rectangle 13060,
            
FrostGazeII 13070,
            
FrostGazeIII 13080,
            
ShadowofChaser 13090,
            
ThundercloudAttack 13190,
            
DestinyFire 13362,
            
FireShower 13363,
            
WheelOfDevastation 13364

بس كده الايرور اتحل بكده عملنا الفريست ريبورن تعالو نعمل السكند ريبورن
فى ملف الهاندل هنبحث عن كود ده
كود PHP:

 switch (client.Entity.SecondRebornClass

هنضيف ده تحتيه
كود PHP:

case 165:
                    {
                        
Add(Game.Enums.SkillIDs.FrostGazeI);
                        
Add(Game.Enums.SkillIDs.Thundercloud);
                        
Add(Game.Enums.SkillIDs.TripleBlasts);
                        
Add(Game.Enums.SkillIDs.Omnipotence);
                        
Add(Game.Enums.SkillIDs.JusticeChant);
                        
Add(Game.Enums.SkillIDs.BurntFrost);
                        
Add(Game.Enums.SkillIDs.HealingSnow);
                        
Add(Game.Enums.SkillIDs.ChillingSnow);
                        
Add(Game.Enums.SkillIDs.Thunderbolt);
                        
Add(Game.Enums.SkillIDs.AngerofStomper);
                        
Add(Game.Enums.SkillIDs.HorrorofStomper);
                        
Add(Game.Enums.SkillIDs.RageofWar);
                        
Add(Game.Enums.SkillIDs.PeaceofStomper);
                        
Add(Game.Enums.SkillIDs.FreezingPelter);
                        
Add(Game.Enums.SkillIDs.RevengeTail);
                        
Add(Game.Enums.SkillIDs.Circle);
                        
Add(Game.Enums.SkillIDs.Rectangle);
                        
Add(Game.Enums.SkillIDs.FrostGazeII);
                        
Add(Game.Enums.SkillIDs.FrostGazeIII);
                        
Add(Game.Enums.SkillIDs.ShadowofChaser);
                        
Add(Game.Enums.SkillIDs.ThundercloudAttack);
                        
Add(Game.Enums.SkillIDs.DestinyFire);
                        
Add(Game.Enums.SkillIDs.FireShower);
                        
Add(Game.Enums.SkillIDs.WheelOfDevastation);
                        break;
                    } 

وبعدين نبحث عن كود ده
كود PHP:

#region Low level items 

هنزل تحت لغايت ما نلاقى اسامى الشخصيات
هنضيف الشخصية الجديدة تحت اى شخصية
كود PHP:

#region Windwalker
                
case 165:
                    {
                        switch (
Second)
                        {
                            case 
61: break;
                            default:
                                
WontAdd(Enums.SkillIDs.FrostGazeI);
                                
WontAdd(Enums.SkillIDs.Thundercloud);
                                
WontAdd(Enums.SkillIDs.TripleBlasts);
                                
WontAdd(Enums.SkillIDs.Omnipotence);
                                
WontAdd(Enums.SkillIDs.JusticeChant);
                                
WontAdd(Enums.SkillIDs.SwirlingStorm);
                                
WontAdd(Enums.SkillIDs.RageofWar);
                                
WontAdd(Enums.SkillIDs.BurntFrost);
                                
WontAdd(Enums.SkillIDs.HealingSnow);
                                
WontAdd(Enums.SkillIDs.ChillingSnow);
                                
WontAdd(Enums.SkillIDs.Thunderbolt);
                                
WontAdd(Enums.SkillIDs.AngerofStomper);
                                
WontAdd(Enums.SkillIDs.HorrorofStomper);
                                
WontAdd(Enums.SkillIDs.PeaceofStomper);
                                
WontAdd(Enums.SkillIDs.FreezingPelter);
                                
WontAdd(Enums.SkillIDs.RevengeTail);
                                
WontAdd(Enums.SkillIDs.Circle);
                                
WontAdd(Enums.SkillIDs.Rectangle);
                                
WontAdd(Enums.SkillIDs.FrostGazeII);
                                
WontAdd(Enums.SkillIDs.FrostGazeIII);
                                
WontAdd(Enums.SkillIDs.ShadowofChaser);
                                
WontAdd(Enums.SkillIDs.ThundercloudAttack);
                                
WontAdd(Enums.SkillIDs.DestinyFire);
                                
WontAdd(Enums.SkillIDs.FireShower);
                                
WontAdd(Enums.SkillIDs.WheelOfDevastation);
                                break;
                        }
                        break;
                    }
                
#endregion 

وبعدين فى نفس ملف هنبحث عن كود ده
#region Spells
تحتيه هنضيف شخصية الجديدة
كود PHP:

#region Windwalker
 
                
if (PreviousClass == 165)
                {
                    if (
client.Entity.Class != 161)
                    {
                        switch (
spell.ID)
                        {
                            case 
12830:
                            case 
12840:
                            case 
12850:
                            case 
12860:
                            case 
12870:
                            case 
12880:
                            case 
12890:
                            case 
12930:
                            case 
12940:
                            case 
12950:
                            case 
12960:
                            case 
12970:
                            case 
12980:
                            case 
12990:
                            case 
13000:
                            case 
13020:
                            case 
13030:
                            case 
13190:
                            case 
13050:
                            case 
13060:
                            case 
13070:
                            case 
13080:
                            case 
13090:
                            case 
13360:
                                
client.RemoveSpell(spell);
                                break;
                        }
                    }
                }
 
                
#endregion 

بعدين هنبحث تانى
#region Spells
هنضيف الشخصية الجديدة
كود PHP:

#region Windwalker
                
if (PreviousClass == 165)
                {
                    if (
client.Entity.Class != 161)
                    {
                        switch (
aspell.ID)
                        {
                            case 
12830:
                            case 
12840:
                            case 
12850:
                            case 
12860:
                            case 
12870:
                            case 
12880:
                            case 
12890:
                            case 
12930:
                            case 
12940:
                            case 
12950:
                            case 
12960:
                            case 
12970:
                            case 
12980:
                            case 
12990:
                            case 
13000:
                            case 
13020:
                            case 
13030:
                            case 
13190:
                            case 
13050:
                            case 
13060:
                            case 
13070:
                            case 
13080:
                            case 
13090:
                            case 
13360:
                                
client.RemoveSpell(aspell);
                                break;
                        }
                    }
                }
                
#endregion 

بعدين هنبحث عن كود ده
كود PHP:

#region Add Extra Skill 

هنضيف فيه كود ده
كود PHP:

if (client.Entity.FirstRebornClass == 165 && client.Entity.SecondRebornClass == 165 && client.Entity.Class == 165)
            {
                
WontAdd(ElmistRo.Game.Enums.SkillIDs.FrostGazeI);
                
WontAdd(ElmistRo.Game.Enums.SkillIDs.FrostGazeIII);
 
            } 

بس كده معاك شخصية جديدة كاملة مكملة والكمال لله واحده
ديه الايتم بتاعت الشخصية
عفواً لايمكن عرض الروابط إلا بعد الرد على الموضوع


ابو حمزه9 2019-07-26 09:03 PM

رد: اضافه شخصية Windwalker
 


تسلم أيدك ياشق :d


ابو حمزه9 2019-07-26 09:04 PM

رد: اضافه شخصية Windwalker
 


جبتة في وقتة :o


Rider 2019-07-26 10:41 PM

رد: اضافه شخصية Windwalker
 
عاش

uncelsam 2019-10-24 05:54 PM

رد: اضافه شخصية Windwalker
 
حاجه فظيعه

mohammedshafik 2023-05-25 12:57 PM

رد: اضافه شخصية Windwalker
 
thxxxx

youssef12345 2023-05-28 02:02 AM

رد: اضافه شخصية Windwalker
 
ty

Start5503777 2023-10-09 08:35 PM

رد: اضافه شخصية Windwalker
 
طيب لو عاوز اضيف النينجا والمونك في سورس 5095

xblack99 2024-02-09 10:23 PM

رد: اضافه شخصية Windwalker
 
hytrth

hegazii4 2024-03-04 04:21 PM

رد: اضافه شخصية Windwalker
 
uhhha


الساعة الآن 03:55 PM

مرحبا بكم في منتدي اكواد لتطوير الالعاب