private void ThiefSkill(NecClient client, int skillId, int targetId)
        {
            int skillBase = skillId / 1000;

            if (!_server.SettingRepository.SkillBase.TryGetValue(skillId, out SkillBaseSetting skillBaseSetting))
            {
                Logger.Error($"Getting SkillBaseSetting from skillid [{skillId}]");
                int            errorCode = -1;
                RecvSkillExecR execFail  = new RecvSkillExecR(errorCode, 0, 0);
                Router.Send(execFail, client);
                return;
            }

            if (skillBase > 114300 && skillBase < 114399)
            {
                Trap(client, skillId, skillBaseSetting);
                return;
            }
            else if (skillBase == 114607)
            {
                Stealth(client, skillId, skillBaseSetting);
                return;
            }

            RecvSkillExecR execSuccess =
                new RecvSkillExecR(0, skillBaseSetting.CastingCooldown, skillBaseSetting.RigidityTime);

            Router.Send(execSuccess, client);
            ThiefSkill thiefSkill =
                (ThiefSkill)Server.Instances.GetInstance((uint)client.Character.activeSkillInstance);

            thiefSkill.SkillExec();
        }
        private int DrawThiefSkill(ref XGraphics gfx, ThiefSkill skill, int start, int pageWidth)
        {
            DrawBonus(ref gfx, "Dovednost:", skill.Name,
                      PADDING, start + LINEHEIGHT * 0);

            DrawBonus(ref gfx, "Kategorie:", skill.Category,
                      PADDING, start + LINEHEIGHT * 1);
            if (skill.Rating == 3 && skill.Mastered)
            {
                DrawBonus(ref gfx, "Bonus mistra:", skill.MasterBonus,
                          pageWidth / 2, start + LINEHEIGHT * 1);
            }

            DrawBonus(ref gfx, "Stupeň:", skill.Rating + ((skill.Rating == 3 && skill.Mastered)?(" + M"):""),
                      PADDING, start + LINEHEIGHT * 2);
            DrawBonus(ref gfx, "Pravidla:", skill.Source.ToString(),
                      pageWidth / 2, start + LINEHEIGHT * 2, (LABEL_WIDTH / 3) * 2);

            return(start + LINEHEIGHT * 4);
        }
Esempio n. 3
0
        private void ThiefSkill(NecClient client, int skillId, uint skillTarget)
        {
            int skillBase = skillId / 1000;

            if (client.character.IsStealthed() && skillBase != 114607)
            {
                client.character.ClearStateBit(CharacterState.StealthForm);
                RecvCharaNotifyStateflag charState =
                    new RecvCharaNotifyStateflag(client.character.instanceId, (uint)client.character.state);
                _server.router.Send(client.map, charState);
            }

            if (skillBase > 114300 && skillBase < 114399)
            {
                Trap(client, skillId);
                return;
            }

            if (skillBase == 114607)
            {
                Stealth(client, skillId);
                return;
            }

            if (skillTarget == 0)
            {
                _Logger.Debug($"Skill requires target!! [{skillId}]");
                int errorCode = -1311;
                RecvSkillStartCastR skillFail = new RecvSkillStartCastR(errorCode, 0);
                router.Send(skillFail, client);
                return;
            }

            ThiefSkill thiefSkill = new ThiefSkill(_server, client, skillId, skillTarget);

            server.instances.AssignInstance(thiefSkill);
            client.character.activeSkillInstance = thiefSkill.instanceId;
            thiefSkill.StartCast();
        }