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); } }
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; } }
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); }
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; } }
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); } }
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); } } }
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); } } } }