Esempio n. 1
0
 public override void NotifyAction(L2Player player)
 {
     if (hideout.ownerId == player.ClanId)
     {
         NpcHtmlMessage htm = new NpcHtmlMessage(player, "agitjanitorhi.htm", ObjID);
         htm.replace("<?my_pledge_name?>", player.Clan.Name);
         player.sendPacket(htm);
     }
 }
Esempio n. 2
0
        public override void OnDialog(L2Player player, int ask, int reply)
        {
            player.FolkNpc = this;
            short result;

            switch (ask)
            {
            case 0:
                NotifyAction(player);
                break;

            case -201:
                switch (reply)
                {
                case 0:
                    NotifyAction(player);
                    break;

                case 1:                                       //doors
                    if (player.Clan.LeaderId == player.ObjId) //TODO privs
                    {
                        player.SendPacket(new NpcHtmlMessage(player, _ai.FnDoor, ObjId));
                    }
                    break;

                case 2:         //banish
                    player.SendPacket(new NpcHtmlMessage(player, _ai.FnBanish, ObjId));
                    break;

                case 3:         //functions
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, _ai.FnDecoFunction, ObjId);
                    htm.Replace("<?HPDepth?>", _hideout.GetFuncDepth(AgitManagerAi.DecotypeHpregen));
                    htm.Replace("<?MPDepth?>", _hideout.GetFuncDepth(AgitManagerAi.DecotypeMpregen));
                    htm.Replace("<?XPDepth?>", _hideout.GetFuncDepth(AgitManagerAi.DecotypeXprestore));
                    player.SendPacket(htm);
                }
                break;

                case 4:         // warehouse
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, _ai.FnWarehouse, ObjId);
                    htm.Replace("<?agit_lease?>", _hideout.RentCost);
                    htm.Replace("<?pay_time?>", _hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    player.SendPacket(htm);
                }
                break;

                case 5:         // manage
                    player.SendPacket(new NpcHtmlMessage(player, _ai.FnManage, ObjId));
                    break;

                case 7:         //use buff
                {
                    int level = _hideout.GetFuncLevel(AgitManagerAi.DecotypeBuff);
                    if (level == 0)
                    {
                        player.SendPacket(new NpcHtmlMessage(player, _ai.FnFuncDisabled, ObjId));
                    }
                    else
                    {
                        NpcHtmlMessage htm = new NpcHtmlMessage(player, $"{_ai.FnAgitBuff}_{level}.htm", ObjId);
                        htm.Replace("<?MPLeft?>", (int)CurMp);
                        player.SendPacket(htm);
                    }
                }
                break;

                case 12:         //use itemcreate
                {
                    int level = _hideout.GetFuncLevel(AgitManagerAi.DecotypeItem);
                    if (level == 0)
                    {
                        player.SendPacket(new NpcHtmlMessage(player, _ai.FnFuncDisabled, ObjId));
                    }
                    else
                    {
                        NpcData.Instance.Buylist(player, this, (short)level);
                    }
                }
                break;

                case 51:         // manage regen
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, _ai.FnManageRegen, ObjId);
                    htm.Replace("<?HPDepth?>", _hideout.GetFuncDepth(AgitManagerAi.DecotypeHpregen));
                    htm.Replace("<?HPCost?>", _hideout.GetCurrentDecoCost(AgitManagerAi.DecotypeHpregen));
                    htm.Replace("<?HPExpire?>", _hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.Replace("<?HPReset?>", string.Empty);

                    htm.Replace("<?MPDepth?>", _hideout.GetFuncDepth(AgitManagerAi.DecotypeMpregen));
                    htm.Replace("<?MPCost?>", _hideout.GetCurrentDecoCost(AgitManagerAi.DecotypeMpregen));
                    htm.Replace("<?MPExpire?>", _hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.Replace("<?MPReset?>", string.Empty);

                    htm.Replace("<?XPDepth?>", _hideout.GetFuncDepth(AgitManagerAi.DecotypeXprestore));
                    htm.Replace("<?XPCost?>", _hideout.GetCurrentDecoCost(AgitManagerAi.DecotypeXprestore));
                    htm.Replace("<?XPExpire?>", _hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.Replace("<?XPReset?>", string.Empty);
                    player.SendPacket(htm);
                }
                break;

                case 52:         // manage etc
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, _ai.FnManageEtc, ObjId);
                    htm.Replace("<?TPDepth?>", _hideout.GetFuncDepth(AgitManagerAi.DecotypeTeleport));
                    htm.Replace("<?TPCost?>", _hideout.GetCurrentDecoCost(AgitManagerAi.DecotypeTeleport));
                    htm.Replace("<?TPExpire?>", _hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.Replace("<?TPReset?>", string.Empty);

                    htm.Replace("<?BFDepth?>", _hideout.GetFuncDepth(AgitManagerAi.DecotypeBuff));
                    htm.Replace("<?BFCost?>", _hideout.GetCurrentDecoCost(AgitManagerAi.DecotypeBuff));
                    htm.Replace("<?BFExpire?>", _hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.Replace("<?BFReset?>", string.Empty);

                    htm.Replace("<?ICDepth?>", _hideout.GetFuncDepth(AgitManagerAi.DecotypeItem));
                    htm.Replace("<?ICCost?>", _hideout.GetCurrentDecoCost(AgitManagerAi.DecotypeItem));
                    htm.Replace("<?ICExpire?>", _hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.Replace("<?ICReset?>", string.Empty);
                    player.SendPacket(htm);
                }
                break;

                case 53:         // manage deco
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, _ai.FnManageDeco, ObjId);
                    htm.Replace("<?7_Depth?>", _hideout.GetFuncDepth(AgitManagerAi.DecotypeCurtain));
                    htm.Replace("<?7_Cost?>", _hideout.GetCurrentDecoCost(AgitManagerAi.DecotypeCurtain));
                    htm.Replace("<?7_Expire?>", _hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.Replace("<?7_Reset?>", string.Empty);

                    htm.Replace("<?11_Depth?>", _hideout.GetFuncDepth(AgitManagerAi.DecotypePlatform));
                    htm.Replace("<?11_Cost?>", _hideout.GetCurrentDecoCost(AgitManagerAi.DecotypePlatform));
                    htm.Replace("<?11_Expire?>", _hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.Replace("<?11_Reset?>", string.Empty);
                    player.SendPacket(htm);
                }
                break;
                }

                break;

            case -203:
                switch (reply)
                {
                case 1:         //open doors
                    foreach (L2Door door in _hideout.doors.Where(door => door.Closed != 0))
                    {
                        door.Closed = 0;
                        door.BroadcastUserInfo();
                    }

                    player.SendPacket(new NpcHtmlMessage(player, _ai.FnAfterDoorOpen, ObjId));
                    break;

                case 2:         //close
                    foreach (L2Door door in _hideout.doors.Where(door => door.Closed != 1))
                    {
                        door.Closed = 1;
                        door.BroadcastUserInfo();
                    }

                    player.SendPacket(new NpcHtmlMessage(player, _ai.FnAfterDoorClose, ObjId));
                    break;
                }

                break;

            case -208:     //buffs
                result = UseBuff(reply, player);

                switch (result)
                {
                case 5:
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, _ai.FnNotEnoughMp, ObjId);
                    htm.Replace("<?MPLeft?>", (int)CurMp);
                    player.SendPacket(htm);
                }
                break;

                case 1:
                case 4:
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, _ai.FnNeedCoolTime, ObjId);
                    htm.Replace("<?MPLeft?>", (int)CurMp);
                    player.SendPacket(htm);
                }
                break;

                case -1:
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, _ai.FnAfterBuff, ObjId);
                    htm.Replace("<?MPLeft?>", (int)CurMp);
                    player.SendPacket(htm);
                }
                break;
                }

                break;

            case -219:
                switch (reply)
                {
                case 1:         //banish action
                    _hideout.Banish();
                    player.SendPacket(new NpcHtmlMessage(player, _ai.FnAfterBanish, ObjId));
                    break;
                }

                break;

            case -270:
            {
                string val = reply.ToString();
                int    lvl;
                int    id;
                if (val.Length == 5)
                {
                    id  = int.Parse(val.Remove(2));
                    lvl = int.Parse(val.Substring(3));
                }
                else
                {
                    lvl = int.Parse(val.Substring(2));
                    id  = int.Parse(val.Remove(1));
                }

                NpcHtmlMessage htm = new NpcHtmlMessage(player, $"agitdeco__{id}.htm", ObjId);
                htm.Replace("<?AgitDecoCost?>", _hideout.GetDecoCost(id, lvl));
                htm.Replace("<?AgitDecoEffect?>", _hideout.GetDecoEffect(id, lvl));
                htm.Replace("<?AgitDecoSubmit?>", reply);
                player.SendPacket(htm);
            }
            break;

            case -271:
            {
                result = 0;
                switch (reply)
                {
                case 1004:         //hp 80%
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeHpregen, 4);
                    break;

                case 1006:         //hp 120%
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeHpregen, 6);
                    break;

                case 1009:         //hp 180%
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeHpregen, 9);
                    break;

                case 1012:         //hp 240%
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeHpregen, 12);
                    break;

                case 1015:         //hp 300%
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeHpregen, 15);
                    break;

                case 2001:         // mp 5%
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeMpregen, 1);
                    break;

                case 2003:         //mp 15%
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeMpregen, 3);
                    break;

                case 2006:         //mp 30%
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeMpregen, 6);
                    break;

                case 2008:         //mp 40%
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeMpregen, 8);
                    break;

                case 4003:         // xp 15%
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeXprestore, 3);
                    break;

                case 4005:         //xp 25%
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeXprestore, 5);
                    break;

                case 4007:         //xp 35%
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeXprestore, 7);
                    break;

                case 4010:         //xp 50%
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeXprestore, 10);
                    break;

                case 5001:         // teleport lv 1
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeTeleport, 1);
                    break;

                case 5002:         //teleport lv 2
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeTeleport, 2);
                    break;

                case 7001:
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeCurtain, 1);
                    break;

                case 7002:
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeCurtain, 2);
                    break;

                case 9003:         // buff lv 3
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeBuff, 3);
                    break;

                case 9005:         //buff lv 5
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeBuff, 5);
                    break;

                case 9007:         // buff lv 7
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeBuff, 7);
                    break;

                case 9008:         //buff lv 8
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeBuff, 8);
                    break;

                case 11001:         // deco 11 lv 1
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypePlatform, 1);
                    break;

                case 11002:         //deco 11 lv 2
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypePlatform, 2);
                    break;

                case 12001:         // itemcreate lv 1
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeItem, 1);
                    break;

                case 12002:         //itemcreate lv 2
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeItem, 2);
                    break;

                case 12003:         // itemcreate lv 3
                    result = _hideout.MofidyFunc(AgitManagerAi.DecotypeItem, 3);
                    break;
                }

                switch (result)
                {
                case 1:
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, _ai.FnDecoAlreadySet, ObjId);
                    htm.Replace("<?AgitDecoEffect?>", "Decoration");         //TODO name
                    player.SendPacket(htm);
                }
                break;

                case 2:
                    player.SendPacket(new NpcHtmlMessage(player, _ai.FnFailtoSetDeco, ObjId));
                    break;

                case 5:
                    player.SendPacket(new NpcHtmlMessage(player, _ai.FnAfterSetDeco, ObjId));
                    BroadcastHideoutUpdate(player);
                    break;
                }
            }

            break;
            }
        }
Esempio n. 3
0
        public async Task ShowNPCInfoAsync(L2Player player)
        {
            NpcHtmlMessage html = new NpcHtmlMessage(player, "./html/admin/npcinfo.htm", ObjectId);

            html.Replace("%objid%", ObjectId);
            html.Replace("%class%", "null");
            html.Replace("%id%", NpcId);
            html.Replace("%lvl%", Level);
            html.Replace("%name%", Name);
            html.Replace("%tmplid%", Template.IdTemplate);
            html.Replace("%aggro%", Attackable > 0 ? Template.AggroRange : 0);
            html.Replace("%corpse%", Template.CorpseTime);
            html.Replace("%enchant%", Template.EnchantEffect);
            html.Replace("%hp%", CharStatus.CurrentHp);
            html.Replace("%hpmax%", MaxHp);
            html.Replace("%mp%", CharStatus.CurrentMp);
            html.Replace("%mpmax%", MaxMp);
            html.Replace("%patk%", Template.BasePAtk);
            html.Replace("%matk%", Template.BaseMAtk);
            html.Replace("%mdef%", Template.BaseMDef);
            html.Replace("%pdef%", Template.BasePDef);
            html.Replace("%accu%", CharacterStat.Accuracy);
            html.Replace("%evas%", CharacterStat.EvasionRate(this));
            html.Replace("%crit%", Template.BaseCritRate);
            html.Replace("%aspd%", Template.BasePAtkSpd);
            html.Replace("%cspd%", CharacterStat.MAttackSpeed);
            html.Replace("%rspd%", Template.BaseRunSpd);
            html.Replace("%str%", Str);
            html.Replace("%con%", Con);
            html.Replace("%dex%", Dex);
            html.Replace("%int%", Int);
            html.Replace("%wit%", Wit);
            html.Replace("%men%", Men);
            html.Replace("%loc%", $"{X} {Y} {Z}");
            html.Replace("%dist%", player.Movement.DistanceToSquared(X, Y));
            //         // byte attackAttribute = ((L2Character)this).getAttackElement();
            //         html.replace("%ele_atk_value%", "%todo%" /* String.valueOf(((L2Character)this).getAttackElementValue(attackAttribute)) */);
            //         html.replace("%ele_dfire%", String.valueOf(((L2Character)this).getDefenseElementValue((byte)2)));
            //         html.replace("%ele_dwater%", String.valueOf(((L2Character)this).getDefenseElementValue((byte)3)));
            //         html.replace("%ele_dwind%", String.valueOf(((L2Character)this).getDefenseElementValue((byte)1)));
            //         html.replace("%ele_dearth%", String.valueOf(((L2Character)this).getDefenseElementValue((byte)4)));
            //         html.replace("%ele_dholy%", String.valueOf(((L2Character)this).getDefenseElementValue((byte)5)));
            //         html.replace("%ele_ddark%", String.valueOf(((L2Character)this).getDefenseElementValue((byte)6)));

            if (spawn != null)
            {
                html.Replace("%spawn%", $"{spawn.Location.X} {spawn.Location.Y} {spawn.Location.Z}");
                html.Replace("%loc2d%", player.Movement.DistanceToSquared(spawn.Location.Y, spawn.Location.X));
                html.Replace("%loc3d%", "<font color=FF0000>--</font>");
                //html.Replace("%loc3d%", player.getDistanceSq(spawn.Location.X,spawn.Location.Y,spawn.Location.Z); -Not implemented
                html.Replace("%resp%", spawn.Location.RespawnDelay / 1000);
            }
            else
            {
                html.Replace("%spawn%", "<font color=FF0000>null</font>");
                html.Replace("%loc2d%", "<font color=FF0000>--</font>");
                html.Replace("%loc3d%", "<font color=FF0000>--</font>");
                html.Replace("%resp%", "<font color=FF0000>--</font>");
            }

            //         if (hasAI())
            //         {
            //             html.replace("%ai_intention%", "<tr><td><table width=270 border=0><tr><td width=100><font color=FFAA00>Intention:</font></td><td align=right width=170>" + String.valueOf(getAI().getIntention().name()) + "</td></tr></table></td></tr>");
            //             html.replace("%ai%", "<tr><td><table width=270 border=0><tr><td width=100><font color=FFAA00>AI</font></td><td align=right width=170>" + getAI().getClass().getSimpleName() + "</td></tr></table></td></tr>");
            //             html.replace("%ai_type%", "<tr><td><table width=270 border=0><tr><td width=100><font color=FFAA00>AIType</font></td><td align=right width=170>" + String.valueOf(getAiType()) + "</td></tr></table></td></tr>");
            //             html.replace("%ai_clan%", "<tr><td><table width=270 border=0><tr><td width=100><font color=FFAA00>Clan & Range:</font></td><td align=right width=170>" + String.valueOf(getClan()) + " " + String.valueOf(getClanRange()) + "</td></tr></table></td></tr>");
            //             html.replace("%ai_enemy_clan%", "<tr><td><table width=270 border=0><tr><td width=100><font color=FFAA00>Enemy & Range:</font></td><td align=right width=170>" + String.valueOf(getEnemyClan()) + " " + String.valueOf(getEnemyRange()) + "</td></tr></table></td></tr>");
            //         }
            //         else
            //         {
            //             html.replace("%ai_intention%", "");
            //             html.replace("%ai%", "");
            //             html.replace("%ai_type%", "");
            //             html.replace("%ai_clan%", "");
            //             html.replace("%ai_enemy_clan%", "");
            //         }

            if (Template.GetType().ToString() == "L2dotNET.Models.Npcs.L2Merchant")
            {
                html.Replace("%butt%", "<button value=\"Shop\" action=\"bypass -h admin_showShop " + NpcId + "\" width=65 height=19 back=\"L2UI_ch3.smallbutton2_over\" fore=\"L2UI_ch3.smallbutton2\">");
            }
            else
            {
                html.Replace("%butt%", "");
            }

            await player.SendPacketAsync(html);
        }
Esempio n. 4
0
        public override void onDialog(L2Player player, int ask, int reply)
        {
            player.FolkNpc = this;
            short result = 0;

            switch (ask)
            {
            case 0:
                NotifyAction(player);
                break;

            case -201:
                switch (reply)
                {
                case 0:
                    NotifyAction(player);
                    break;

                case 1:                                       //doors
                    if (player.Clan.LeaderID == player.ObjID) //TODO privs
                    {
                        player.sendPacket(new NpcHtmlMessage(player, ai.fnDoor, ObjID));
                    }
                    else
                    {
                        player.teleport(hideout.outsideLoc[0], hideout.outsideLoc[1], hideout.outsideLoc[2]);
                    }
                    break;

                case 2:         //banish
                    player.sendPacket(new NpcHtmlMessage(player, ai.fnBanish, ObjID));
                    break;

                case 3:         //functions
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, ai.fnDecoFunction, ObjID);
                    htm.replace("<?HPDepth?>", hideout.GetFuncDepth(AgitManagerAI.decotype_hpregen));
                    htm.replace("<?MPDepth?>", hideout.GetFuncDepth(AgitManagerAI.decotype_mpregen));
                    htm.replace("<?XPDepth?>", hideout.GetFuncDepth(AgitManagerAI.decotype_xprestore));
                    player.sendPacket(htm);
                }
                break;

                case 4:         // warehouse
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, ai.fnWarehouse, ObjID);
                    htm.replace("<?agit_lease?>", hideout.RentCost);
                    htm.replace("<?pay_time?>", hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    player.sendPacket(htm);
                }
                break;

                case 5:         // manage
                    player.sendPacket(new NpcHtmlMessage(player, ai.fnManage, ObjID));
                    break;

                case 7:         //use buff
                {
                    int level = hideout.GetFuncLevel(AgitManagerAI.decotype_buff);
                    if (level == 0)
                    {
                        player.sendPacket(new NpcHtmlMessage(player, ai.fnFuncDisabled, ObjID));
                    }
                    else
                    {
                        NpcHtmlMessage htm = new NpcHtmlMessage(player, ai.fnAgitBuff + "_" + level + ".htm", ObjID);
                        htm.replace("<?MPLeft?>", (int)CurMP);
                        player.sendPacket(htm);
                    }
                }
                break;

                case 12:         //use itemcreate
                {
                    int level = hideout.GetFuncLevel(AgitManagerAI.decotype_item);
                    if (level == 0)
                    {
                        player.sendPacket(new NpcHtmlMessage(player, ai.fnFuncDisabled, ObjID));
                    }
                    else
                    {
                        NpcData.getInstance().buylist(player, this, (short)level);
                    }
                }
                break;

                case 51:         // manage regen
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, ai.fnManageRegen, ObjID);
                    htm.replace("<?HPDepth?>", hideout.GetFuncDepth(AgitManagerAI.decotype_hpregen));
                    htm.replace("<?HPCost?>", hideout.GetCurrentDecoCost(AgitManagerAI.decotype_hpregen));
                    htm.replace("<?HPExpire?>", hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.replace("<?HPReset?>", "");

                    htm.replace("<?MPDepth?>", hideout.GetFuncDepth(AgitManagerAI.decotype_mpregen));
                    htm.replace("<?MPCost?>", hideout.GetCurrentDecoCost(AgitManagerAI.decotype_mpregen));
                    htm.replace("<?MPExpire?>", hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.replace("<?MPReset?>", "");

                    htm.replace("<?XPDepth?>", hideout.GetFuncDepth(AgitManagerAI.decotype_xprestore));
                    htm.replace("<?XPCost?>", hideout.GetCurrentDecoCost(AgitManagerAI.decotype_xprestore));
                    htm.replace("<?XPExpire?>", hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.replace("<?XPReset?>", "");
                    player.sendPacket(htm);
                }
                break;

                case 52:         // manage etc
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, ai.fnManageEtc, ObjID);
                    htm.replace("<?TPDepth?>", hideout.GetFuncDepth(AgitManagerAI.decotype_teleport));
                    htm.replace("<?TPCost?>", hideout.GetCurrentDecoCost(AgitManagerAI.decotype_teleport));
                    htm.replace("<?TPExpire?>", hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.replace("<?TPReset?>", "");

                    htm.replace("<?BFDepth?>", hideout.GetFuncDepth(AgitManagerAI.decotype_buff));
                    htm.replace("<?BFCost?>", hideout.GetCurrentDecoCost(AgitManagerAI.decotype_buff));
                    htm.replace("<?BFExpire?>", hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.replace("<?BFReset?>", "");

                    htm.replace("<?ICDepth?>", hideout.GetFuncDepth(AgitManagerAI.decotype_item));
                    htm.replace("<?ICCost?>", hideout.GetCurrentDecoCost(AgitManagerAI.decotype_item));
                    htm.replace("<?ICExpire?>", hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.replace("<?ICReset?>", "");
                    player.sendPacket(htm);
                }
                break;

                case 53:         // manage deco
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, ai.fnManageDeco, ObjID);
                    htm.replace("<?7_Depth?>", hideout.GetFuncDepth(AgitManagerAI.decotype_curtain));
                    htm.replace("<?7_Cost?>", hideout.GetCurrentDecoCost(AgitManagerAI.decotype_curtain));
                    htm.replace("<?7_Expire?>", hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.replace("<?7_Reset?>", "");

                    htm.replace("<?11_Depth?>", hideout.GetFuncDepth(AgitManagerAI.decotype_platform));
                    htm.replace("<?11_Cost?>", hideout.GetCurrentDecoCost(AgitManagerAI.decotype_platform));
                    htm.replace("<?11_Expire?>", hideout.PayTime.ToString("yyyy/MM/dd HH:mm"));
                    htm.replace("<?11_Reset?>", "");
                    player.sendPacket(htm);
                }
                break;
                }
                break;

            case -203:
                switch (reply)
                {
                case 1:         //open doors
                    foreach (L2Door door in hideout.doors)
                    {
                        if (door.Closed == 0)
                        {
                            continue;
                        }

                        door.Closed = 0;
                        door.broadcastUserInfo();
                    }

                    player.sendPacket(new NpcHtmlMessage(player, ai.fnAfterDoorOpen, ObjID));
                    break;

                case 2:         //close
                    foreach (L2Door door in hideout.doors)
                    {
                        if (door.Closed == 1)
                        {
                            continue;
                        }

                        door.Closed = 1;
                        door.broadcastUserInfo();
                    }

                    player.sendPacket(new NpcHtmlMessage(player, ai.fnAfterDoorClose, ObjID));
                    break;
                }
                break;

            case -208:     //buffs
                result = useBuff(reply, player);

                switch (result)
                {
                case 5:
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, ai.fnNotEnoughMP, ObjID);
                    htm.replace("<?MPLeft?>", (int)CurMP);
                    player.sendPacket(htm);
                }
                break;

                case 1:
                case 4:
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, ai.fnNeedCoolTime, ObjID);
                    htm.replace("<?MPLeft?>", (int)CurMP);
                    player.sendPacket(htm);
                }
                break;

                case -1:
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, ai.fnAfterBuff, ObjID);
                    htm.replace("<?MPLeft?>", (int)CurMP);
                    player.sendPacket(htm);
                }
                break;
                }
                break;

            case -219:
                switch (reply)
                {
                case 1:         //banish action
                    hideout.Banish();
                    player.sendPacket(new NpcHtmlMessage(player, ai.fnAfterBanish, ObjID));
                    break;
                }
                break;

            case -270:
            {
                string val = reply + "";
                int    lvl = 0;
                int    id  = 0;
                if (val.Length == 5)
                {
                    id  = int.Parse(val.Remove(2));
                    lvl = int.Parse(val.Substring(3));
                }
                else
                {
                    lvl = int.Parse(val.Substring(2));
                    id  = int.Parse(val.Remove(1));
                }

                NpcHtmlMessage htm = new NpcHtmlMessage(player, "agitdeco__" + id + ".htm", ObjID);
                htm.replace("<?AgitDecoCost?>", hideout.GetDecoCost(id, lvl));
                htm.replace("<?AgitDecoEffect?>", hideout.GetDecoEffect(id, lvl));
                htm.replace("<?AgitDecoSubmit?>", reply);
                player.sendPacket(htm);
            }
            break;

            case -271:
            {
                result = 0;
                switch (reply)
                {
                case 1004:             //hp 80%
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_hpregen, 4);
                    break;

                case 1006:             //hp 120%
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_hpregen, 6);
                    break;

                case 1009:             //hp 180%
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_hpregen, 9);
                    break;

                case 1012:             //hp 240%
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_hpregen, 12);
                    break;

                case 1015:             //hp 300%
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_hpregen, 15);
                    break;

                case 2001:            // mp 5%
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_mpregen, 1);
                    break;

                case 2003:             //mp 15%
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_mpregen, 3);
                    break;

                case 2006:             //mp 30%
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_mpregen, 6);
                    break;

                case 2008:             //mp 40%
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_mpregen, 8);
                    break;

                case 4003:            // xp 15%
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_xprestore, 3);
                    break;

                case 4005:             //xp 25%
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_xprestore, 5);
                    break;

                case 4007:             //xp 35%
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_xprestore, 7);
                    break;

                case 4010:             //xp 50%
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_xprestore, 10);
                    break;

                case 5001:            // teleport lv 1
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_teleport, 1);
                    break;

                case 5002:             //teleport lv 2
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_teleport, 2);
                    break;

                case 7001:
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_curtain, 1);
                    break;

                case 7002:
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_curtain, 2);
                    break;

                case 9003:            // buff lv 3
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_buff, 3);
                    break;

                case 9005:             //buff lv 5
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_buff, 5);
                    break;

                case 9007:            // buff lv 7
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_buff, 7);
                    break;

                case 9008:             //buff lv 8
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_buff, 8);
                    break;

                case 11001:            // deco 11 lv 1
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_platform, 1);
                    break;

                case 11002:             //deco 11 lv 2
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_platform, 2);
                    break;

                case 12001:            // itemcreate lv 1
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_item, 1);
                    break;

                case 12002:             //itemcreate lv 2
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_item, 2);
                    break;

                case 12003:            // itemcreate lv 3
                    result = hideout.MofidyFunc(AgitManagerAI.decotype_item, 3);
                    break;
                }

                switch (result)
                {
                case 1:
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, ai.fnDecoAlreadySet, ObjID);
                    htm.replace("<?AgitDecoEffect?>", "Decoration");                 //TODO name
                    player.sendPacket(htm);
                }
                break;

                case 2:
                    player.sendPacket(new NpcHtmlMessage(player, ai.fnFailtoSetDeco, ObjID));
                    break;

                case 5:
                    player.sendPacket(new NpcHtmlMessage(player, ai.fnAfterSetDeco, ObjID));
                    broadcastHideoutUpdate(player);
                    break;
                }
            }
            break;
            }
        }
Esempio n. 5
0
        public void OnBypass(L2Player player, npcs.L2Citizen npc, string cmd)
        {
            if (cmd.Equals("_mrvhome"))
            {
                player.ShowHtm("mr_keeper.htm", npc);
            }
            else if (cmd.Equals("_mrvw01"))//View Odds
            {
            }
            else if (cmd.Equals("_mrvw20"))//View Monster Information
            {
                if (status == 1)
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, "mr_vw20.htm", npc.ObjID);

                    for (byte a = 0; a < 8; a++)
                    {
                        MonsterRunner mr = runners[a + rnd];

                        htm.replace("<?NAME" + (a + 1) + "?>", "&$" + mr.sys_string + ";");
                        htm.replace("<?COND" + (a + 1) + "?>", 0);
                        htm.replace("<?WIN" + (a + 1) + "?>", (int)(mr.winCount / mr.runCount * 100));
                    }

                    htm.replace("<?LINK_HOME?>", "bypass _mrvhome");
                    player.sendPacket(htm);
                }
            }
            else if (cmd.Equals("_mrbu01"))//Purchase Ticket
            {
                if (status == 1)
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(player, "mr_buy1.htm", npc.ObjID);
                    htm.replace("<?RACE_ID?>", currentRaceId);
                    for (byte a = 0; a < 8; a++)
                    {
                        MonsterRunner mr = runners[a + rnd];

                        htm.replace("<?SEL" + (a + 1) + "?>", "bypass _mrbu2 " + a + " 1");
                        htm.replace("<?NAME" + (a + 1) + "?>", "&$" + mr.sys_string + ";");
                        htm.replace("<?COND" + (a + 1) + "?>", 0);
                        htm.replace("<?WIN" + (a + 1) + "?>", (int)(mr.winCount / mr.runCount * 100));
                    }

                    htm.replace("<?LINK_HOME?>", "bypass _mrvhome");
                    htm.replace("<?SEL_ID?>", "");
                    player.sendPacket(htm);
                }
            }
            else if (cmd.Equals("_mrsl01"))//Calculate Winnings
            {
            }
            else if (cmd.Equals("_mrvw31"))//View Past Results
            {
            }
            else if (cmd.StartsWith("_mrbu2"))
            {
                byte line = Convert.ToByte(cmd.Split(' ')[1]);
                byte cost = Convert.ToByte(cmd.Split(' ')[2]);

                int adena = 0;
                switch (cost)
                {
                case 1: adena = 100; break;

                case 2: adena = 500; break;

                case 3: adena = 1000; break;

                case 4: adena = 5000; break;

                case 5: adena = 10000; break;

                case 6: adena = 20000; break;

                case 7: adena = 50000; break;

                case 8: adena = 100000; break;
                }

                MonsterRunner  mr  = runners[line + rnd];
                NpcHtmlMessage htm = new NpcHtmlMessage(player, "mr_buy2.htm", npc.ObjID);
                htm.replace("<?RACE_ID?>", currentRaceId);
                htm.replace("<?LANE?>", (line + 1));
                htm.replace("<?NAME1?>", "&$" + mr.sys_string + ";");
                htm.replace("<?COND1?>", 0);
                htm.replace("<?WIN1?>", (int)(mr.winCount / mr.runCount * 100));

                for (byte a = 1; a <= 8; a++)
                {
                    htm.replace("<?LINK_BUY_" + a + "?>", "bypass _mrbu2 " + line + " " + a);
                }

                htm.replace("<?SEL_ID?>", adena);
                htm.replace("<?LINK_NEXT?>", "bypass _mrbu3 " + line + " " + cost);
                player.sendPacket(htm);
            }
            else if (cmd.StartsWith("_mrbu3"))
            {
                byte line = Convert.ToByte(cmd.Split(' ')[1]);
                byte cost = Convert.ToByte(cmd.Split(' ')[2]);

                int adena = 0;
                switch (cost)
                {
                case 1: adena = 100; break;

                case 2: adena = 500; break;

                case 3: adena = 1000; break;

                case 4: adena = 5000; break;

                case 5: adena = 10000; break;

                case 6: adena = 20000; break;

                case 7: adena = 50000; break;

                case 8: adena = 100000; break;
                }

                MonsterRunner  mr  = runners[line + rnd];
                NpcHtmlMessage htm = new NpcHtmlMessage(player, "mr_buy3.htm", npc.ObjID);
                htm.replace("<?RACE_ID?>", currentRaceId);
                htm.replace("<?LANE?>", (line + 1));
                htm.replace("<?NAME1?>", "&$" + mr.sys_string + ";");
                htm.replace("<?COND1?>", 0);
                htm.replace("<?WIN1?>", (int)(mr.winCount / mr.runCount * 100));

                htm.replace("<?BUY_AMOUNT?>", adena);
                htm.replace("<?TAX_AMOUNT?>", 0);
                htm.replace("<?SUM_AMOUNT?>", adena);

                htm.replace("<?LINK_HOME?>", "bypass _mrvhome");
                htm.replace("<?LINK_NEXT?>", "bypass _mrbu4 " + line + " " + cost);
                player.sendPacket(htm);
            }
            else if (cmd.StartsWith("_mrbu4"))
            {
                byte line = Convert.ToByte(cmd.Split(' ')[1]);
                byte cost = Convert.ToByte(cmd.Split(' ')[2]);

                int adena = 0;
                switch (cost)
                {
                case 1: adena = 100; break;

                case 2: adena = 500; break;

                case 3: adena = 1000; break;

                case 4: adena = 5000; break;

                case 5: adena = 10000; break;

                case 6: adena = 20000; break;

                case 7: adena = 50000; break;

                case 8: adena = 100000; break;
                }

                if (player.getAdena() < adena)
                {
                    player.sendSystemMessage(279);//You do not have enough adena.
                    return;
                }

                player.reduceAdena(adena, true, true);

                L2Item ticket = new L2Item(ItemTable.getInstance().getItem(TICKET));
                ticket.Location    = L2Item.L2ItemLocation.inventory;
                ticket.CustomType1 = line + 1;
                ticket.CustomType2 = adena / 100;
                ticket.Enchant     = currentRaceId;

                player.Inventory.addItem(ticket, true, true);
            }
        }
Esempio n. 6
0
        public override void TalkedReply(L2Player talker, int ask, int reply)
        {
            if (ask == -3)
            {
                L2Clan pledge  = talker.Clan;
                byte   pledgLv = pledge != null ? pledge.Level : (byte)0;

                switch (reply)
                {
                case 0:     //new clan
                    if (talker.Level < 10)
                    {
                        talker.ShowHtm("pl002.htm", myself);
                    }
                    else if (talker.Clan != null && talker.Clan.LeaderID == talker.ObjID)
                    {
                        talker.ShowHtm("pl003.htm", myself);
                    }
                    else if (talker.Clan != null && talker.Clan.LeaderID != talker.ObjID)
                    {
                        talker.ShowHtm("pl004.htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("pl005.htm", myself);
                    }
                    break;

                case 1:     //Повысить
                    if (talker.ClanLeader)
                    {
                        talker.ShowHtm("pl013.htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("pl014.htm", myself);
                    }
                    break;

                case 2:     //Распустить
                    if (talker.ClanLeader || talker.HavePledgePower(@PP_MANAGE_GROWTH))
                    {
                        talker.ShowHtm("pl007.htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("pl008.htm", myself);
                    }
                    break;

                case 3:     //Восстановить
                    if (talker.ClanLeader || talker.HavePledgePower(@PP_MANAGE_GROWTH))
                    {
                        talker.ShowHtm("pl010.htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("pl011.htm", myself);
                    }
                    break;

                case 4:     //Умения
                    if (talker.ClanLeader)
                    {
                        ShowEtcSkillList(talker, 2);
                    }
                    else
                    {
                        talker.ShowHtm("pl017.htm", myself);
                    }
                    break;

                case 5:     //Управлять Академией
                    talker.ShowHtm("pl_aca_help.htm", myself);
                    break;

                case 6:     //Управлять Подразделениями Стражей
                    talker.ShowHtm("pl_sub_help.htm", myself);
                    break;

                case 7:
                    if (pledge == null)
                    {
                        talker.ShowHtm("pl_no_pledgeman.htm", myself);
                    }
                    else if (talker.ClanLeader || talker.HavePledgePower(@PP_MANAGE_GROWTH))
                    {
                        if (pledge.Level > 5)
                        {
                            if (pledge.HasSubPledge(100))
                            {
                                if (pledge.HasSubPledge(200))
                                {
                                    talker.ShowHtm("pl_err_more_sub.htm", myself);
                                }
                                else
                                {
                                    talker.ShowHtm("pl_create_sub200.htm", myself);
                                }
                            }
                            else
                            {
                                talker.ShowHtm("pl_create_sub100.htm", myself);
                            }
                        }
                        else
                        {
                            talker.ShowHtm("pl_err_plv.htm", myself);
                        }
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_master.htm", myself);
                    }
                    break;

                case 8:
                    if (pledge == null)
                    {
                        talker.ShowHtm("pl_no_pledgeman.htm", myself);
                    }
                    else if (talker.ClanLeader || talker.HavePledgePower(@PP_MANAGE_GROWTH))
                    {
                        if (pledge.Level > 5)
                        {
                            if (pledge.HasSubPledge(100))
                            {
                                talker.ShowHtm("pl_submaster.htm", myself);
                            }
                            else
                            {
                                talker.ShowHtm("pl_err_more_sm.htm", myself);
                            }
                        }
                        else
                        {
                            talker.ShowHtm("pl_err_plv.htm", myself);
                        }
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_master.htm", myself);
                    }
                    break;

                case 9:     //Управлять Подразделениями Рыцарей
                    talker.ShowHtm("pl_sub2_help.htm", myself);
                    break;

                case 10:
                    if (pledge == null)
                    {
                        talker.ShowHtm("pl_no_pledgeman.htm", myself);
                    }
                    else if (talker.ClanLeader || talker.HavePledgePower(@PP_MANAGE_GROWTH))
                    {
                        if (pledge.Level > 6)
                        {
                            if (pledge.HasSubPledge(100))
                            {
                                if (pledge.HasSubPledge(10001))
                                {
                                    if (pledge.HasSubPledge(1002))
                                    {
                                        if (pledge.HasSubPledge(200))
                                        {
                                            if (pledge.HasSubPledge(2001))
                                            {
                                                if (pledge.HasSubPledge(2002))
                                                {
                                                    talker.ShowHtm("pl_err_more_sub2.htm", myself);
                                                }
                                                else
                                                {
                                                    talker.ShowHtm("pl_create_sub2002.htm", myself);
                                                }
                                            }
                                            else
                                            {
                                                talker.ShowHtm("pl_create_sub2001.htm", myself);
                                            }
                                        }
                                        else
                                        {
                                            talker.ShowHtm("pl_need_high_lv_sub.htm", myself);
                                        }
                                    }
                                    else
                                    {
                                        talker.ShowHtm("pl_create_sub1002.htm", myself);
                                    }
                                }
                                else
                                {
                                    talker.ShowHtm("pl_create_sub1001.htm", myself);
                                }
                            }
                            else
                            {
                                talker.ShowHtm("pl_need_high_lv_sub.htm", myself);
                            }
                        }
                        else
                        {
                            talker.ShowHtm("pl_err_plv.htm", myself);
                        }
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_master.htm", myself);
                    }
                    break;

                case 11:
                    if (pledge == null)
                    {
                        talker.ShowHtm("pl_no_pledgeman.htm", myself);
                    }
                    else if (talker.ClanLeader || talker.HavePledgePower(@PP_MANAGE_GROWTH))
                    {
                        if (pledge.Level > 6)
                        {
                            if (pledge.HasSubPledge(100))
                            {
                                if (pledge.HasSubPledge(1001))
                                {
                                    talker.ShowHtm("pl_submaster2.htm", myself);
                                }
                                else
                                {
                                    talker.ShowHtm("pl_err_more_sm2.htm", myself);
                                }
                            }
                            else
                            {
                                talker.ShowHtm("pl_need_high_lv_sub.htm", myself);
                            }
                        }
                        else
                        {
                            talker.ShowHtm("pl_err_plv.htm", myself);
                        }
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_master.htm", myself);
                    }
                    break;

                case 12:
                    if (talker.ClanLeader || talker.HavePledgePower(@PP_MANAGE_GROWTH))
                    {
                        if (pledge.Level > 4)
                        {
                            talker.ShowHtm("pl_create_aca.htm", myself);
                        }
                        else
                        {
                            talker.ShowHtm("pl_err_plv.htm", myself);
                        }
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_master.htm", myself);
                    }
                    break;

                case 13:     //Передать Полномочия Лидера Клана
                    talker.ShowHtm("pl_master.htm", myself);
                    break;

                case 14:    //Запрос Передачи Полномочий Лидера Клана
                    if (talker.ClanLeader)
                    {
                        talker.ShowHtm("pl_transfer_master.htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_master.htm", myself);
                    }
                    break;

                case 15:    //Отменить Запрос Передачи Полномочий Лидера Клана
                    if (talker.ClanLeader)
                    {
                        talker.ShowHtm("pl_cancel_master.htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_master.htm", myself);
                    }
                    break;

                case 16:
                    if (talker.ClanLeader || talker.HavePledgePower(@PP_MANAGE_GROWTH))
                    {
                        talker.ShowHtm("pl_rename.htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_master.htm", myself);
                    }
                    break;

                case 17:
                    if (talker.ClanLeader || talker.HavePledgePower(@PP_MANAGE_GROWTH))
                    {
                        talker.ShowHtm("pl_rename2.htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_master.htm", myself);
                    }
                    break;

                case 100:     //main
                    talker.ShowHtm("pl001.htm", myself);
                    break;

                case 101:
                    if (talker.ClanLeader)
                    {
                        ShowChangePledgeNameUI(talker);
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_master.htm", myself);
                    }
                    break;
                }
            }
            else if (ask == -111)
            {
                if (!talker.ClanLeader || !talker.HavePledgePower(@PP_MANAGE_GROWTH))
                {
                    talker.ShowHtm("pl_err_master.htm", myself);
                    return;
                }

                if (reply < 1000)
                {
                    if (reply < 100)
                    {
                        talker.ShowHtm("pl_err_rename_aca.htm", myself);
                    }
                    else if (reply / 100 > royalGuard)
                    {
                        talker.ShowHtm("pl_err_more_sub.htm", myself);
                    }
                    else if (talker.Clan.HasSubPledge(reply))
                    {
                        NpcHtmlMessage htm  = new NpcHtmlMessage(talker, "pl_ch_submaster" + reply + ".htm", myself.ObjID);
                        string         mstr = talker.Clan.GetSubpledgeMasterName(reply);
                        if (mstr == null)
                        {
                            mstr = FString.getInstance().get(1010642);
                        }
                        htm.replace("<?" + reply + "submaster?>", mstr);

                        talker.sendPacket(htm);
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_more_sm.htm", myself);
                    }
                }
                else if (reply < 10000)
                {
                    if (reply <= 1000 && reply % 1000 == 0)
                    {
                        talker.ShowHtm("pl_err_more_sm2.htm", myself);
                    }
                    else if (reply % 1000 > knights / royalGuard)
                    {
                        talker.ShowHtm("pl_err_more_sub2.htm", myself);
                    }
                    else if (talker.Clan.HasSubPledge(reply))
                    {
                        NpcHtmlMessage htm  = new NpcHtmlMessage(talker, "pl_ch_submaster" + reply + ".htm", myself.ObjID);
                        string         mstr = talker.Clan.GetSubpledgeMasterName(reply);
                        if (mstr == null)
                        {
                            mstr = FString.getInstance().get(1010642);
                        }
                        htm.replace("<?" + reply + "submaster?>", mstr);

                        talker.sendPacket(htm);
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_more_sm2.htm", myself);
                    }
                }
            }
            else if (ask == -222)
            {
                if (!talker.ClanLeader || !talker.HavePledgePower(@PP_MANAGE_GROWTH))
                {
                    talker.ShowHtm("pl_err_master.htm", myself);
                    return;
                }

                if (reply == -1)
                {
                    if (talker.Clan.HasSubPledge(reply))
                    {
                        talker.ShowHtm("pl_ch_rename_aca.htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_rename_aca.htm", myself);
                    }
                }
                else if (reply < 1000)
                {
                    if (reply / 100 > royalGuard)
                    {
                        talker.ShowHtm("pl_err_more_sub.htm", myself);
                    }
                    else if (talker.Clan.HasSubPledge(reply))
                    {
                        talker.ShowHtm("pl_ch_rename" + reply + ".htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_rename_sub.htm", myself);
                    }
                }
                else if (reply < 10000)
                {
                    if (reply % 1000 > knights / royalGuard)
                    {
                        talker.ShowHtm("pl_err_more_sub2.htm", myself);
                    }
                    else if (talker.Clan.HasSubPledge(reply))
                    {
                        talker.ShowHtm("pl_ch_rename" + reply + ".htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("pl_err_rename_sub2.htm", myself);
                    }
                }
            }
            else if (ask == -223)
            {
                byte lvl = talker.ClanLevel;
                if (reply == 0)
                {
                    switch (lvl)
                    {
                    case 9:
                        talker.ShowHtm(GetDialog("fnHalfUpgrade"), myself);
                        break;

                    case 10:
                    case 11:
                        talker.ShowHtm(GetDialog("fnFullUpgrade"), myself);
                        break;

                    default:
                        talker.ShowHtm(GetDialog("fnLowSkillLvForUpgrade"), myself);
                        break;
                    }
                }
                else if (reply == 1)
                {
                    if (lvl == 11)
                    {
                        talker.ShowHtm(GetDialog("fnFullUpgradeSub"), myself);
                    }
                    else
                    {
                        talker.ShowHtm(GetDialog("fnLowSkillLvForUpgradeSub"), myself);
                    }
                }
            }
            else if (ask == -4)
            {
                if (reply == 0)
                {
                    talker.ShowHtm("al005.htm", myself);
                }
            }
        }
Esempio n. 7
0
        public override void TalkedReply(L2Player talker, int ask, int reply)
        {
            if (ask == -1000)
            {
                if (reply == 0)
                {
                    talker.ShowHtm(GetDialog("fnHi"), myself);
                }
                else if (reply == 1)
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(talker, GetDialog(myself.residenceId > 0 ? "fnFeudInfo" : "fnNoFeudInfo"), myself.ObjID);

                    if (myself.residenceId > 0)
                    {
                        Castle castle = CastleManager.getInstance().get(myself.residenceId);
                        htm.replace("<?my_pledge_name?>", castle.OwningClanName);
                        htm.replace("<?my_owner_name?>", castle.OwningPlayerName);
                        htm.replace("<?current_tax_rate?>", (int)castle.Tax);
                    }

                    htm.replace("<?kingdom_name?>", FString.getInstance().get(myself.residenceId < 7 ? 1001000 : 1001100));
                    htm.replace("<?feud_name?>", FString.getInstance().get(myself.residenceId + 1001000));

                    talker.sendPacket(htm);
                }
            }
            else if (ask == -303)
            {
                if (reply == 579)
                {
                    if (talker.Level > 40 && talker.Level < 46)
                    {
                        MultiSell.getInstance().showList(talker, myself, reply);
                    }
                }
                else if (reply == 580)
                {
                    if (talker.Level >= 46 && talker.Level < 52)
                    {
                        MultiSell.getInstance().showList(talker, myself, reply);
                    }
                }
                else if (reply == 581)
                {
                    if (talker.Level >= 52)
                    {
                        MultiSell.getInstance().showList(talker, myself, reply);
                    }
                }
                else
                {
                    MultiSell.getInstance().showList(talker, myself, reply);
                }
            }
            else if (ask == -503)
            {
                if (reply == 100)
                {
                    ShowVariationMakeWindow(talker);
                }
                else if (reply == 200)
                {
                    ShowVariationCancelWindow(talker);
                }
            }
            else if (ask == -601)
            {
                if (reply == 0)
                {
                    if (!talker.hasAllOfThisItems(8957, 8958, 8959))
                    {
                        talker.ShowHtm("welcomeback003.htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("welcomeback004.htm", myself);
                    }
                }
                else if (reply == 0)
                {
                    if (!talker.hasAllOfThisItems(8957, 8958, 8959))
                    {
                        talker.ShowHtm("welcome_lin2_cat002.htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("welcome_lin2_cat004.htm", myself);
                    }
                }
                else if (reply == 2)
                {
                    if (talker.Level < 20)
                    {
                        MultiSell.getInstance().showList(talker, myself, 583);
                    }
                    else if (talker.Level >= 20 && talker.Level < 40)
                    {
                        MultiSell.getInstance().showList(talker, myself, 584);
                    }
                    else if (talker.Level >= 40 && talker.Level < 52)
                    {
                        MultiSell.getInstance().showList(talker, myself, 585);
                    }
                    else if (talker.Level >= 52 && talker.Level < 61)
                    {
                        MultiSell.getInstance().showList(talker, myself, 586);
                    }
                    else if (talker.Level >= 61 && talker.Level < 76)
                    {
                        MultiSell.getInstance().showList(talker, myself, 587);
                    }
                    else if (talker.Level >= 76)
                    {
                        MultiSell.getInstance().showList(talker, myself, 588);
                    }
                }
                else if (reply == 3)
                {
                    if (talker.Level < 20)
                    {
                        MultiSell.getInstance().showList(talker, myself, 589);
                    }
                    else if (talker.Level >= 20 && talker.Level < 40)
                    {
                        MultiSell.getInstance().showList(talker, myself, 590);
                    }
                    else if (talker.Level >= 40 && talker.Level < 52)
                    {
                        MultiSell.getInstance().showList(talker, myself, 591);
                    }
                    else if (talker.Level >= 52 && talker.Level < 61)
                    {
                        MultiSell.getInstance().showList(talker, myself, 592);
                    }
                    else if (talker.Level >= 61 && talker.Level < 76)
                    {
                        MultiSell.getInstance().showList(talker, myself, 593);
                    }
                    else if (talker.Level >= 76)
                    {
                        MultiSell.getInstance().showList(talker, myself, 594);
                    }
                }
                else if (reply == 4)
                {
                    if (talker.Level < 20)
                    {
                        MultiSell.getInstance().showList(talker, myself, 595);
                    }
                    else if (talker.Level >= 20 && talker.Level < 40)
                    {
                        MultiSell.getInstance().showList(talker, myself, 596);
                    }
                    else if (talker.Level >= 40 && talker.Level < 52)
                    {
                        MultiSell.getInstance().showList(talker, myself, 597);
                    }
                    else if (talker.Level >= 52 && talker.Level < 61)
                    {
                        MultiSell.getInstance().showList(talker, myself, 598);
                    }
                    else if (talker.Level >= 61 && talker.Level < 76)
                    {
                        MultiSell.getInstance().showList(talker, myself, 601);
                    }
                    else if (talker.Level >= 76)
                    {
                        MultiSell.getInstance().showList(talker, myself, 600);
                    }
                }
            }
        }