Esempio n. 1
0
        public Enhancement(BinaryReader reader)
        {
            RecipeIDX   = -1;
            IsModified  = false;
            IsNew       = false;
            StaticIndex = reader.ReadInt32();
            Name        = reader.ReadString();
            ShortName   = reader.ReadString();
            Desc        = reader.ReadString();
            TypeID      = (Enums.eType)reader.ReadInt32();
            SubTypeID   = (Enums.eSubtype)reader.ReadInt32();
            ClassID     = new int[reader.ReadInt32() + 1];
            for (var index = 0; index < ClassID.Length; ++index)
            {
                ClassID[index] = reader.ReadInt32();
            }
            Image        = reader.ReadString();
            nIDSet       = reader.ReadInt32();
            UIDSet       = reader.ReadString();
            EffectChance = reader.ReadSingle();
            LevelMin     = reader.ReadInt32();
            LevelMax     = reader.ReadInt32();
            Unique       = reader.ReadBoolean();
            MutExID      = (Enums.eEnhMutex)reader.ReadInt32();
            BuffMode     = (Enums.eBuffDebuff)reader.ReadInt32();
            if (MutExID < Enums.eEnhMutex.None)
            {
                MutExID = Enums.eEnhMutex.None;
            }
            Effect = new Enums.sEffect[reader.ReadInt32() + 1];
            for (var index = 0; index <= Effect.Length - 1; ++index)
            {
                Effect[index].Mode          = (Enums.eEffMode)reader.ReadInt32();
                Effect[index].BuffMode      = (Enums.eBuffDebuff)reader.ReadInt32();
                Effect[index].Enhance.ID    = reader.ReadInt32();
                Effect[index].Enhance.SubID = reader.ReadInt32();
                Effect[index].Schedule      = (Enums.eSchedule)reader.ReadInt32();
                Effect[index].Multiplier    = reader.ReadSingle();
                ref var local = ref Effect[index];
                Effect  effect;
                if (!reader.ReadBoolean())
                {
                    effect = null;
                }
                else
                {
                    effect = new Effect(reader)
                    {
                        isEnhancementEffect = true
                    }
                };
                local.FX = effect;
            }

            UID        = reader.ReadString();
            RecipeName = reader.ReadString();
            Superior   = reader.ReadBoolean();
            IsProc     = reader.ReadBoolean();
        }
Esempio n. 2
0
 public Enhancement(BinaryReader reader)
 {
     this.RecipeIDX   = -1;
     this.IsModified  = false;
     this.IsNew       = false;
     this.StaticIndex = reader.ReadInt32();
     this.Name        = reader.ReadString();
     this.ShortName   = reader.ReadString();
     this.Desc        = reader.ReadString();
     this.TypeID      = (Enums.eType)reader.ReadInt32();
     this.SubTypeID   = (Enums.eSubtype)reader.ReadInt32();
     this.ClassID     = new int[reader.ReadInt32() + 1];
     for (int index = 0; index < this.ClassID.Length; ++index)
     {
         this.ClassID[index] = reader.ReadInt32();
     }
     this.Image        = reader.ReadString();
     this.nIDSet       = reader.ReadInt32();
     this.UIDSet       = reader.ReadString();
     this.EffectChance = reader.ReadSingle();
     this.LevelMin     = reader.ReadInt32();
     this.LevelMax     = reader.ReadInt32();
     this.Unique       = reader.ReadBoolean();
     this.MutExID      = (Enums.eEnhMutex)reader.ReadInt32();
     this.BuffMode     = (Enums.eBuffDebuff)reader.ReadInt32();
     if (this.MutExID < Enums.eEnhMutex.None)
     {
         this.MutExID = Enums.eEnhMutex.None;
     }
     this.Effect = new Enums.sEffect[reader.ReadInt32() + 1];
     for (int index = 0; index <= this.Effect.Length - 1; ++index)
     {
         this.Effect[index].Mode          = (Enums.eEffMode)reader.ReadInt32();
         this.Effect[index].BuffMode      = (Enums.eBuffDebuff)reader.ReadInt32();
         this.Effect[index].Enhance.ID    = reader.ReadInt32();
         this.Effect[index].Enhance.SubID = reader.ReadInt32();
         this.Effect[index].Schedule      = (Enums.eSchedule)reader.ReadInt32();
         this.Effect[index].Multiplier    = reader.ReadSingle();
         ref Enums.sEffect        local = ref this.Effect[index];
         Base.Data_Classes.Effect effect;
         if (!reader.ReadBoolean())
         {
             effect = null;
         }
         else
         {
             effect = new Base.Data_Classes.Effect(reader)
             {
                 isEnhancementEffect = true
             }
         };
         local.FX = effect;
     }
     this.UID        = reader.ReadString();
     this.RecipeName = reader.ReadString();
     this.Superior   = reader.ReadBoolean();
 }
Esempio n. 3
0
 public void Assign(Enums.sEffect effect)
 {
     this.Mode          = effect.Mode;
     this.BuffMode      = effect.BuffMode;
     this.Enhance.ID    = effect.Enhance.ID;
     this.Enhance.SubID = effect.Enhance.SubID;
     this.Schedule      = effect.Schedule;
     this.Multiplier    = effect.Multiplier;
     if (effect.FX != null)
     {
         this.FX = (IEffect)effect.FX.Clone();
     }
 }
Esempio n. 4
0
        public Enhancement(IEnhancement iEnh)
        {
            StaticIndex  = iEnh.StaticIndex;
            Name         = iEnh.Name;
            ShortName    = iEnh.ShortName;
            Desc         = iEnh.Desc;
            TypeID       = iEnh.TypeID;
            SubTypeID    = iEnh.SubTypeID;
            Image        = iEnh.Image;
            ImageIdx     = iEnh.ImageIdx;
            nIDSet       = iEnh.nIDSet;
            UIDSet       = iEnh.UIDSet;
            EffectChance = iEnh.EffectChance;
            LevelMin     = iEnh.LevelMin;
            LevelMax     = iEnh.LevelMax;
            Unique       = iEnh.Unique;
            MutExID      = iEnh.MutExID;
            BuffMode     = iEnh.BuffMode;
            _power       = new Power(iEnh.GetPower());
            ClassID      = new int[iEnh.ClassID.Length];
            for (var index = 0; index <= ClassID.Length - 1; ++index)
            {
                ClassID[index] = iEnh.ClassID[index];
            }
            Effect = new Enums.sEffect[iEnh.Effect.Length];
            for (var index = 0; index <= Effect.Length - 1; ++index)
            {
                Effect[index].Mode          = iEnh.Effect[index].Mode;
                Effect[index].BuffMode      = iEnh.Effect[index].BuffMode;
                Effect[index].Enhance.ID    = iEnh.Effect[index].Enhance.ID;
                Effect[index].Enhance.SubID = iEnh.Effect[index].Enhance.SubID;
                Effect[index].Schedule      = iEnh.Effect[index].Schedule;
                Effect[index].Multiplier    = iEnh.Effect[index].Multiplier;
                if (iEnh.Effect[index].FX != null)
                {
                    Effect[index].FX = iEnh.Effect[index].FX.Clone() as IEffect;
                }
            }

            UID        = iEnh.UID;
            IsProc     = iEnh.IsProc;
            RecipeName = iEnh.RecipeName;
            RecipeIDX  = iEnh.RecipeIDX;
            Superior   = iEnh.Superior;
        }
Esempio n. 5
0
    public string GetEnhancementString()
    {
        string str1;

        if (this.Enh < 0)
        {
            str1 = string.Empty;
        }
        else
        {
            IEnhancement enhancement = DatabaseAPI.Database.Enhancements[this.Enh];
            if (enhancement.Effect.Length == 0)
            {
                str1 = enhancement.Desc;
            }
            else
            {
                StringBuilder   stringBuilder = new StringBuilder();
                bool            flag          = false;
                Enums.sEffect[] effect        = enhancement.Effect;
                int             index1        = 0;
                if (index1 >= effect.Length)
                {
                    str1 = stringBuilder.ToString();
                }
                else
                {
                    Enums.sEffect sEffect = effect[index1];
                    if (sEffect.Mode == Enums.eEffMode.FX)
                    {
                        flag = true;
                    }
                    string str2;
                    if (sEffect.Mode == Enums.eEffMode.Enhancement && sEffect.Schedule != Enums.eSchedule.None)
                    {
                        float scheduleMult = this.GetScheduleMult(enhancement.TypeID, sEffect.Schedule);
                        if ((double)sEffect.Multiplier > 0.0)
                        {
                            scheduleMult *= sEffect.Multiplier;
                        }
                        if (stringBuilder.Length > 0)
                        {
                            stringBuilder.Append(", ");
                        }
                        switch (enhancement.TypeID)
                        {
                        case Enums.eType.Normal:
                            string relativeString1 = Enums.GetRelativeString(this.RelativeLevel, false);
                            if (!string.IsNullOrEmpty(relativeString1) & relativeString1 != "X")
                            {
                                stringBuilder.Append(relativeString1 + " " + DatabaseAPI.Database.EnhGradeStringLong[(int)this.Grade] + " - ");
                                break;
                            }
                            if (relativeString1 == "X")
                            {
                                stringBuilder.Append("Disabled " + DatabaseAPI.Database.EnhGradeStringLong[(int)this.Grade] + " - ");
                                break;
                            }
                            stringBuilder.Append(DatabaseAPI.Database.EnhGradeStringLong[(int)this.Grade] + " - ");
                            break;

                        case Enums.eType.SpecialO:
                            string relativeString2 = Enums.GetRelativeString(this.RelativeLevel, false);
                            if (!string.IsNullOrEmpty(relativeString2) & relativeString2 != "X")
                            {
                                stringBuilder.Append(relativeString2 + " " + enhancement.GetSpecialName() + " - ");
                                break;
                            }
                            if (relativeString2 == "X")
                            {
                                stringBuilder.Append("Disabled " + enhancement.GetSpecialName() + " - ");
                                break;
                            }
                            stringBuilder.Append(enhancement.GetSpecialName() + " - ");
                            break;
                        }
                        stringBuilder.Append("Schedule: ");
                        stringBuilder.Append(sEffect.Schedule.ToString());
                        stringBuilder.AppendFormat(" ({0}%)", (scheduleMult * 100f).ToString((IFormatProvider)NumberFormatInfo.CurrentInfo));
                        str2 = stringBuilder.ToString();
                    }
                    else if (!flag)
                    {
                        str2 = stringBuilder.ToString();
                    }
                    else
                    {
                        var power = enhancement.GetPower();
                        for (int index2 = 0; index2 <= power.Effects.Length - 1; ++index2)
                        {
                            if (stringBuilder.Length > 0)
                            {
                                stringBuilder.Append(", ");
                            }
                            stringBuilder.Append(power.Effects[index2].BuildEffectString(true, "", false, false, false));
                        }
                        str2 = "Effect: " + stringBuilder;
                    }
                    str1 = str2;
                }
            }
        }
        return(str1);
    }