コード例 #1
0
        public LearnGuildSkillResult TryLearnSkill(GuildSkillId skillId, out GuildSkill skill)
        {
            skill = Skills[(int)skillId];
            if (skill != null)
            {
                if (skill.IsMaxLevel)
                {
                    return(LearnGuildSkillResult.ThisIsTheMaxLevelOfSkill);
                }
                //todo get real learn cost levelupSkill
                if (!SubstractGuildPoints(skill.NextLearnCost))
                {
                    return(LearnGuildSkillResult.IncifitientPoints);
                }
                Skills[(int)skillId].Level++;
            }
            else
            {
                if (!SubstractGuildPoints(GuildSkillTemplate.Templates[(int)skillId].LearnCosts[1]))
                {
                    return(LearnGuildSkillResult.IncifitientPoints);
                }

                RealmServer.IOQueue.AddMessage(() =>
                {
                    var s = new GuildSkill(this, skillId);
                    Skills[(int)skillId] = s;
                    s.CreateLater();
                });
            }
            Asda2GuildHandler.SendGuildSkillStatusChangedResponse(skill, ClanSkillStatus.Learned);

            return(LearnGuildSkillResult.Ok);
        }
コード例 #2
0
        public LearnGuildSkillResult TryLearnSkill(GuildSkillId skillId, out GuildSkill skill)
        {
            skill = this.Skills[(int)skillId];
            if (skill != null)
            {
                if (skill.IsMaxLevel)
                {
                    return(LearnGuildSkillResult.ThisIsTheMaxLevelOfSkill);
                }
                if (!this.SubstractGuildPoints(skill.NextLearnCost))
                {
                    return(LearnGuildSkillResult.IncifitientPoints);
                }
                ++this.Skills[(int)skillId].Level;
                Asda2GuildHandler.SendGuildSkillStatusChangedResponse(skill, ClanSkillStatus.Learned);
            }
            else
            {
                if (!this.SubstractGuildPoints(GuildSkillTemplate.Templates[(int)skillId].LearnCosts[1]))
                {
                    return(LearnGuildSkillResult.IncifitientPoints);
                }
                ServerApp <WCell.RealmServer.RealmServer> .IOQueue.AddMessage((Action)(() =>
                {
                    GuildSkill guildSkill = new GuildSkill(this, skillId);
                    this.Skills[(int)skillId] = guildSkill;
                    guildSkill.CreateLater();
                    Asda2GuildHandler.SendGuildSkillStatusChangedResponse(guildSkill, ClanSkillStatus.Learned);
                }));
            }

            return(LearnGuildSkillResult.Ok);
        }
コード例 #3
0
 public void updateGuildSkill(int skillLevel, string skillSid)
 {
     if (guildSkills == null)
     {
         guildSkills = new List <GuildSkill> ();
         GuildSkill skill = new GuildSkill(skillSid, skillLevel);
         guildSkills.Add(skill);
     }
     else
     {
         for (int i = 0; i < guildSkills.Count; i++)
         {
             if (guildSkills [i].sid == skillSid)
             {
                 guildSkills [i].level = skillLevel;
                 break;
             }
             else if (i == guildSkills.Count - 1)
             {
                 GuildSkill skill = new GuildSkill(skillSid, skillLevel);
                 guildSkills.Add(skill);
             }
         }
     }
 }
コード例 #4
0
        private GuildSkill TransformGuildSkill(Data.Repositories.Contracts.Classes.GuildSkill skill)
        {
            if (skill == null)
            {
                return(null);
            }

            var ret = new GuildSkill {
                Point = skill.Point
            };

            using (var ms = new MemoryStream(skill.Skill))
            {
                using (var br = new BinaryReader(ms))
                {
                    var l = new List <SkillEntry>();
                    for (var i = 0; i < ms.Length / 4; i++)
                    {
                        var se = new SkillEntry
                        {
                            SkillId = br.ReadInt16(),
                            Level   = br.ReadInt16()
                        };

                        l.Add(se);
                    }

                    ret.Skills = l.ToArray();
                }
            }

            return(ret);
        }
コード例 #5
0
    private void MakeCache()
    {
        if (dirtyDataId != dataId || dirtyType != type || dirtyLevel != level)
        {
            dirtyDataId              = dataId;
            dirtyType                = type;
            dirtyLevel               = level;
            cacheSkill               = null;
            cacheItem                = null;
            cacheGuildSkill          = null;
            cacheBuff                = default(Buff);
            cacheDuration            = 0;
            cacheRecoveryHp          = 0;
            cacheRecoveryMp          = 0;
            cacheRecoveryStamina     = 0;
            cacheRecoveryFood        = 0;
            cacheRecoveryWater       = 0;
            cacheIncreaseStats       = new CharacterStats();
            cacheIncreaseAttributes  = null;
            cacheIncreaseResistances = null;
            cacheIncreaseDamages     = null;
            cacheDamageOverTimes     = null;
            switch (type)
            {
            case BuffType.SkillBuff:
            case BuffType.SkillDebuff:
                if (GameInstance.Skills.TryGetValue(dataId, out cacheSkill) && cacheSkill != null)
                {
                    cacheBuff = type == BuffType.SkillBuff ? cacheSkill.buff : cacheSkill.debuff;
                }
                break;

            case BuffType.PotionBuff:
                if (GameInstance.Items.TryGetValue(dataId, out cacheItem) && cacheItem != null)
                {
                    cacheBuff = cacheItem.buff;
                }
                break;

            case BuffType.GuildSkillBuff:
                if (GameInstance.GuildSkills.TryGetValue(dataId, out cacheGuildSkill) && cacheGuildSkill != null)
                {
                    cacheBuff = cacheGuildSkill.buff;
                }
                break;
            }
            cacheDuration            = cacheBuff.GetDuration(level);
            cacheRecoveryHp          = cacheBuff.GetRecoveryHp(level);
            cacheRecoveryMp          = cacheBuff.GetRecoveryMp(level);
            cacheRecoveryStamina     = cacheBuff.GetRecoveryStamina(level);
            cacheRecoveryFood        = cacheBuff.GetRecoveryFood(level);
            cacheRecoveryWater       = cacheBuff.GetRecoveryWater(level);
            cacheIncreaseStats       = cacheBuff.GetIncreaseStats(level);
            cacheIncreaseAttributes  = cacheBuff.GetIncreaseAttributes(level);
            cacheIncreaseResistances = cacheBuff.GetIncreaseResistances(level);
            cacheIncreaseDamages     = cacheBuff.GetIncreaseDamages(level);
            cacheDamageOverTimes     = cacheBuff.GetDamageOverTimes(level);
        }
    }
コード例 #6
0
 public void createGuildSkill(GuildSkill skill)
 {
     if (guildSkills == null)
     {
         guildSkills = new List <GuildSkill> ();
     }
     guildSkills.Add(skill);
 }
コード例 #7
0
 public void initInfo(string sid, GuildCollegeWindow win)
 {
     this.sid    = sid;
     this.win    = win;
     skillSample = GuildSkillSampleManager.Instance.getGuildSkillSampleBySid(StringKit.toInt(sid));
     skill       = GuildManagerment.Instance.getGuildSkillBySid(sid);
     skillName   = skillSample.icon;
     updateInfo();
 }
コード例 #8
0
        /// <summary>
        /// Initialize the Guild after loading from DB
        /// </summary>
        internal void InitAfterLoad()
        {
            var ranks = GuildRank.FindAll(this);

            if (ranks.Length == 0)
            {
                log.Warn(string.Format("Guild {0} did not have ranks - Recreating default Ranks.", this));
                m_ranks = GuildMgr.CreateDefaultRanks(this);
            }
            else
            {
                m_ranks = new ImmutableList <GuildRank>(ranks.OrderBy(rank => rank.RankIndex));
            }

            foreach (var rank in m_ranks)
            {
                rank.InitRank();
            }

            var members = GuildMember.FindAll(Id);

            foreach (var gm in members)
            {
                gm.Init(this, World.GetCharacter((uint)gm.CharacterLowId));
                Members.Add(gm.Id, gm);
            }

            var skills = GuildSkill.FindAll(this);

            foreach (var guildSkill in skills)
            {
                guildSkill.InitAfterLoad(this);
                if (Skills[(int)guildSkill.Id] == null)
                {
                    Skills[(int)guildSkill.Id] = guildSkill;
                }
                else
                {
                    guildSkill.DeleteLater();
                }
            }
            m_leader = this[LeaderLowId];
            if (m_leader == null)
            {
                OnNoLeaderFound();
            }
            if (m_leader != null)
            {
                Register();
            }
        }
コード例 #9
0
        /// <summary>Initialize the Guild after loading from DB</summary>
        internal void InitAfterLoad()
        {
            GuildRank[] all = GuildRank.FindAll(this);
            if (all.Length == 0)
            {
                Guild.log.Warn(string.Format("Guild {0} did not have ranks - Recreating default Ranks.",
                                             (object)this));
                this.m_ranks = GuildMgr.CreateDefaultRanks(this);
            }
            else
            {
                this.m_ranks = new ImmutableList <GuildRank>(
                    (IEnumerable <GuildRank>)((IEnumerable <GuildRank>)all).OrderBy <GuildRank, int>(
                        (Func <GuildRank, int>)(rank => rank.RankIndex)));
            }

            foreach (GuildRank rank in this.m_ranks)
            {
                rank.InitRank();
            }
            foreach (GuildMember guildMember in GuildMember.FindAll(this.Id))
            {
                guildMember.Init(this, World.GetCharacter((uint)guildMember.CharacterLowId));
                this.Members.Add(guildMember.Id, guildMember);
            }

            foreach (GuildSkill record in GuildSkill.FindAll(this))
            {
                record.InitAfterLoad(this);
                if (this.Skills[(int)record.Id] == null)
                {
                    this.Skills[(int)record.Id] = record;
                }
                else
                {
                    record.DeleteLater();
                }
            }

            this.m_leader = this[this.LeaderLowId];
            if (this.m_leader == null)
            {
                this.OnNoLeaderFound();
            }
            if (this.m_leader == null)
            {
                return;
            }
            this.Register();
        }
コード例 #10
0
ファイル: Guild.cs プロジェクト: 0xFh/Asda2-Project
        /// <summary>Initialize the Guild after loading from DB</summary>
        internal void InitAfterLoad()
        {
            GuildRank[] all = GuildRank.FindAll(this);
            if (all.Length == 0)
            {
                log.Warn(string.Format("Guild {0} did not have ranks - Recreating default Ranks.",
                                       this));
                m_ranks = GuildMgr.CreateDefaultRanks(this);
            }
            else
            {
                m_ranks = new ImmutableList <GuildRank>(
                    all.OrderBy(
                        rank => rank.RankIndex));
            }

            foreach (GuildRank rank in m_ranks)
            {
                rank.InitRank();
            }
            foreach (GuildMember guildMember in GuildMember.FindAll(Id))
            {
                guildMember.Init(this, World.GetCharacter((uint)guildMember.CharacterLowId));
                Members.Add(guildMember.Id, guildMember);
            }

            foreach (GuildSkill record in GuildSkill.FindAll(this))
            {
                record.InitAfterLoad(this);
                if (Skills[(int)record.Id] == null)
                {
                    Skills[(int)record.Id] = record;
                }
                else
                {
                    record.DeleteLater();
                }
            }

            m_leader = this[LeaderLowId];
            if (m_leader == null)
            {
                OnNoLeaderFound();
            }
            if (m_leader == null)
            {
                return;
            }
            Register();
        }
コード例 #11
0
    private void MakeCache()
    {
        if (dirtyDataId != dataId)
        {
            dirtyDataId     = dataId;
            cacheSkill      = null;
            cacheGuildSkill = null;
            switch (type)
            {
            case SkillUsageType.Skill:
                GameInstance.Skills.TryGetValue(dataId, out cacheSkill);
                break;

            case SkillUsageType.GuildSkill:
                GameInstance.GuildSkills.TryGetValue(dataId, out cacheGuildSkill);
                break;
            }
        }
    }
コード例 #12
0
    //是否可以学习或升级技能
    public bool isUpLearnGuildSkill(string uid)
    {
        GuildSkillSample sample = GuildSkillSampleManager.Instance.getGuildSkillSampleBySid(StringKit.toInt(uid));

        if (getBuildLevel(GuildManagerment.COLLEGE) < sample.openLevel)
        {
            UiManager.Instance.openDialogWindow <MessageWindow> ((win) => {
                win.initWindow(1, LanguageConfigManager.Instance.getLanguage("s0093"), null, LanguageConfigManager.Instance.getLanguage("Guild_55"), null);
            });
            return(false);
        }
        GuildSkill skill = getGuildSkillBySid(uid);

        if (skill != null && skill.level >= getBuildLevel(GuildManagerment.COLLEGE))
        {
            UiManager.Instance.openDialogWindow <MessageWindow> ((win) => {
                win.initWindow(1, LanguageConfigManager.Instance.getLanguage("s0093"), null, LanguageConfigManager.Instance.getLanguage("Guild_72"), null);
            });
            return(false);
        }
        int cost = 0;

        if (skill != null)
        {
            cost = sample.costs [skill.level];
        }
        else
        {
            cost = sample.costs [0];
        }
        if (guild.contributioning >= cost)
        {
            return(true);
        }
        else
        {
            UiManager.Instance.openDialogWindow <MessageWindow> ((win) => {
                win.initWindow(1, LanguageConfigManager.Instance.getLanguage("s0093"), null, LanguageConfigManager.Instance.getLanguage("Guild_54"), null);
            });
            return(false);
        }
    }
コード例 #13
0
    public override void read(ErlKVMessage message)
    {
        ErlType  type  = message.getValue("msg") as ErlType;
        ErlArray array = type as ErlArray;

        if (array.Value.Length > 0)
        {
            //断线重连后先清理一次公会技能,不然会反复ADD,增加战斗力 fix YXZH-3962
            GuildManagerment.Instance.clearGuildSkillList();
            for (int i = 0; i < array.Value.Length; i++)
            {
                ErlArray   temp  = array.Value[i] as ErlArray;
                GuildSkill skill = new GuildSkill(temp.Value[0].getValueString(), StringKit.toInt(temp.Value[1].getValueString()));
                GuildManagerment.Instance.createGuildSkill(skill);
            }
        }
        if (callback != null)
        {
            callback();
        }
    }
コード例 #14
0
        private static void LoadGameLibraries()
        {
            Count = MapLibs.Length + Monsters.Length + Gates.Length + NPCs.Length + CArmours.Length +
                    CHair.Length + CWeapons.Length + CWeaponEffect.Length + AArmours.Length + AHair.Length + AWeaponsL.Length + AWeaponsR.Length +
                    ARArmours.Length + ARHair.Length + ARWeapons.Length + ARWeaponsS.Length +
                    CHumEffect.Length + AHumEffect.Length + ARHumEffect.Length + Mounts.Length + Fishing.Length + Pets.Length +
                    Transform.Length + TransformMounts.Length + TransformEffect.Length + TransformWeaponEffect.Length + 17;

            Dragon.Initialize();
            Progress++;

            BuffIcon.Initialize();
            Progress++;

            Help.Initialize();
            Progress++;

            MiniMap.Initialize();
            Progress++;

            MagIcon.Initialize();
            Progress++;
            MagIcon2.Initialize();
            Progress++;

            Magic.Initialize();
            Progress++;
            Magic2.Initialize();
            Progress++;
            Magic3.Initialize();
            Progress++;
            MagicC.Initialize();
            Progress++;

            Effect.Initialize();
            Progress++;

            GuildSkill.Initialize();
            Progress++;

            Background.Initialize();
            Progress++;

            Deco.Initialize();
            Progress++;

            Items.Initialize();
            Progress++;
            StateItems.Initialize();
            Progress++;
            FloorItems.Initialize();
            Progress++;

            for (int i = 0; i < MapLibs.Length; i++)
            {
                if (MapLibs[i] == null)
                {
                    MapLibs[i] = new MLibrary("");
                }
                else
                {
                    MapLibs[i].Initialize();
                }
                Progress++;
            }

            for (int i = 0; i < Monsters.Length; i++)
            {
                Monsters[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < Gates.Length; i++)
            {
                Gates[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < NPCs.Length; i++)
            {
                NPCs[i].Initialize();
                Progress++;
            }


            for (int i = 0; i < CArmours.Length; i++)
            {
                CArmours[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < CHair.Length; i++)
            {
                CHair[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < CWeapons.Length; i++)
            {
                CWeapons[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < CWeaponEffect.Length; i++)
            {
                CWeaponEffect[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < AArmours.Length; i++)
            {
                AArmours[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < AHair.Length; i++)
            {
                AHair[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < AWeaponsL.Length; i++)
            {
                AWeaponsL[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < AWeaponsR.Length; i++)
            {
                AWeaponsR[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < ARArmours.Length; i++)
            {
                ARArmours[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < ARHair.Length; i++)
            {
                ARHair[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < ARWeapons.Length; i++)
            {
                ARWeapons[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < ARWeaponsS.Length; i++)
            {
                ARWeaponsS[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < CHumEffect.Length; i++)
            {
                CHumEffect[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < AHumEffect.Length; i++)
            {
                AHumEffect[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < ARHumEffect.Length; i++)
            {
                ARHumEffect[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < Mounts.Length; i++)
            {
                Mounts[i].Initialize();
                Progress++;
            }


            for (int i = 0; i < Fishing.Length; i++)
            {
                Fishing[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < Pets.Length; i++)
            {
                Pets[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < Transform.Length; i++)
            {
                Transform[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < TransformEffect.Length; i++)
            {
                TransformEffect[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < TransformWeaponEffect.Length; i++)
            {
                TransformWeaponEffect[i].Initialize();
                Progress++;
            }

            for (int i = 0; i < TransformMounts.Length; i++)
            {
                TransformMounts[i].Initialize();
                Progress++;
            }

            Loaded = true;
        }
コード例 #15
0
        public void Decode(MaplePacket pPacket)
        {
            ID   = pPacket.ReadInt();
            Name = pPacket.ReadString();

            for (byte i = 0; i < 5; i++)
            {
                Ranks[i] = pPacket.ReadString();
            }

            Players = pPacket.ReadByte();

            Members = new List <GuildMember>();
            for (byte i = 0; i < Players; i++)
            {
                var id = pPacket.ReadInt(); // Player ID

                Members.Add(new GuildMember()
                {
                    CharacterID = id
                });
            }

            for (byte i = 0; i < Players; i++)
            {
                GuildMember tmp = Members[i];

                pPacket.ReadString(13);               // Name
                pPacket.ReadInt();                    // Job ID
                pPacket.ReadInt();                    // Level OR -1
                tmp.Rank = (byte)pPacket.ReadInt();   // Guild Rank
                pPacket.ReadInt();                    // Online
                pPacket.ReadInt();                    // Alliance Rank
                tmp.Contribution = pPacket.ReadInt(); // Contribution
            }

            Capacity        = (byte)pPacket.ReadInt();
            Background      = pPacket.ReadShort();
            BackgroundColor = pPacket.ReadByte();
            Foreground      = pPacket.ReadShort();
            ForegroundColor = pPacket.ReadByte();

            Notice = pPacket.ReadString();

            Points = pPacket.ReadInt();
            pPacket.ReadInt(); // Today's points
            AllianceID = pPacket.ReadInt();

            pPacket.ReadByte();  // Unk
            pPacket.ReadShort(); // Herp

            Skills = new List <GuildSkill>();
            var skills = pPacket.ReadShort(); // Buffs

            for (var i = 0; i < skills; i++)
            {
                GuildSkill gb = new GuildSkill()
                {
                    SkillID  = pPacket.ReadInt(),
                    Level    = pPacket.ReadShort(),
                    BoughtAt = pPacket.ReadLong(),
                    BoughtBy = pPacket.ReadString(),
                    Unknown  = pPacket.ReadString()
                };

                Skills.Add(gb);
            }
        }
コード例 #16
0
 public GuildSkillTuple(GuildSkill guildSkill, short targetLevel)
 {
     this.guildSkill  = guildSkill;
     this.targetLevel = targetLevel;
 }
コード例 #17
0
ファイル: Guild.cs プロジェクト: diamondo25/mapler.me
        public void Decode(MaplePacket pPacket)
        {
            ID = pPacket.ReadInt();
            Name = pPacket.ReadString();

            for (byte i = 0; i < 5; i++)
                Ranks[i] = pPacket.ReadString();

            Players = pPacket.ReadByte();

            Members = new List<GuildMember>();
            for (byte i = 0; i < Players; i++)
            {
                var id = pPacket.ReadInt(); // Player ID

                Members.Add(new GuildMember() { CharacterID = id });
            }

            for (byte i = 0; i < Players; i++)
            {
                GuildMember tmp = Members[i];

                pPacket.ReadString(13); // Name
                pPacket.ReadInt(); // Job ID
                pPacket.ReadInt(); // Level OR -1
                tmp.Rank = (byte)pPacket.ReadInt(); // Guild Rank
                pPacket.ReadInt(); // Online
                pPacket.ReadInt(); // Alliance Rank
                tmp.Contribution = pPacket.ReadInt(); // Contribution
            }

            Capacity = (byte)pPacket.ReadInt();
            Background = pPacket.ReadShort();
            BackgroundColor = pPacket.ReadByte();
            Foreground = pPacket.ReadShort();
            ForegroundColor = pPacket.ReadByte();

            Notice = pPacket.ReadString();

            Points = pPacket.ReadInt();
            pPacket.ReadInt(); // Today's points
            AllianceID = pPacket.ReadInt();

            pPacket.ReadByte(); // Unk
            pPacket.ReadShort(); // Herp

            Skills = new List<GuildSkill>();
            var skills = pPacket.ReadShort(); // Buffs
            for (var i = 0; i < skills; i++)
            {
                GuildSkill gb = new GuildSkill()
                {
                    SkillID = pPacket.ReadInt(),
                    Level = pPacket.ReadShort(),
                    BoughtAt = pPacket.ReadLong(),
                    BoughtBy = pPacket.ReadString(),
                    Unknown = pPacket.ReadString()
                };

                Skills.Add(gb);
            }
        }