عرض مشاركة واحدة
احصائياتى

الردود
9

المشاهدات
833
 
MRonlineGvrix
.:: عضو مميز ::.

    غير متواجد

المشاركات
363

+التقييم
0.13

تاريخ التسجيل
May 2019

الاقامة

نظام التشغيل

رقم العضوية
145
2019-08-06, 04:44 PM
المشاركة 1
2019-08-06, 04:44 PM
المشاركة 1
Happy مشكلة بخصوص اسكلة النينجا ToxicFog
صورة من الاسكلة (تم تعديل الموضوع بناء على طلب المشرف )

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

كود:
                                case 6001://toxicfog 
                                    
{
                                        if (
CanUseSpell(spell, attacker.Owner))
                                        {
                                            
PrepareSpell(spell, attacker.Owner);

                                            
SpellUse suse = new SpellUse(true);
                                            
suse.Attacker = attacker.UID;
                                            
suse.SpellID = spell.ID;
                                            
suse.SpellLevel = spell.Level;

                                            
suse.X = X;
                                            
suse.Y = Y;
                                            if (
Kernel.GetDistance(attacker.X, attacker.Y, X, Y) <= spell.Distance)
                                            {
                                                foreach (
Interfaces.IMapObject _obj in attacker.Owner.Screen.Objects)
                                                {
                                                    if (
_obj.MapObjType == MapObjectType.Entity || _obj.MapObjType == MapObjectType.Monster)
                                                    {
                                                        
attacked = _obj as Entity;
                                                        if (
attacked.MapObjType == MapObjectType.Monster)
                                                            if (
attacked.MonsterInfo.Boss)
                                                                continue;
                                                        if (
Kernel.GetDistance(X, Y, attacked.X, attacked.Y) <= spell.Range)
                                                        {
                                                            if (
CanAttack(attacker, attacked, spell, attack.AttackType == Attack.Melee))
                                                            {
                                                                
int potDifference = attacker.BattlePower - attacked.BattlePower;

                                                                
int rate = spell.Percent + potDifference - 20;

                                                                if (
Kernel.Rate(rate))
                                                                {
                                                                    
attacked.ToxicFogStamp = Time32.Now;
                                                                    
attacked.ToxicFogLeft = 7;
                                                                    
attacked.ToxicFogPercent = spell.PowerPercent;
                                                                    
attacked.AddFlag(Update.Flags.Poisoned);
                                                                    
suse.AddTarget(attacked.UID, 1, null);
                                                                }
                                                                else
                                                                {
                                                                    
suse.AddTarget(attacked.UID, 0, null);
                                                                    
suse.Targets[attacked.UID].Hit = false;
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                
attacker.AttackPacket = null;
                                            }
                                            
attacker.Owner.SendScreen(suse, true);
                                        }
                                        break;
                                    }