Public feed
#889138
# Written by Vice & Izzyimport sysfrom net.sf.l2j.gameserver.model.quest import Statefrom net.sf.l2j.gameserver.model.quest import QuestStatefrom net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuestfrom net.sf.l2j.gameserver.datatables import ItemTableqn = "1006_armor_enchanter"SMITHS = [1006]############################## Feel Free to add more Armors ##########################################################################################################3# Armor enhancement definition ArmorID:[Icon, [Enhancement, newArmorID, ArmorToken, MaterialID, MaterialQuant, Ancient Adena], ...]EnhanceList={9416:["xxxxx_xxxxx_i01", [["Dynasty Breast Plate - Shield Master", 9417,9991,0, 0,25000000],["Dynasty Breast Plate - Weapon Master", 9418,99991,0, 0,25000000],["Dynasty Breast Plate - Force Master", 9419,99991,0, 0,25000000],["Dynasty Breast Plate - Bard", 9420,99991,0, 0,25000000]]],}############################################################## DO NOT MODIFY BELOW THIS LINE #####################################################################################def getItemName(Item): ItemName = Item.getItem().getName() if Item.getEnchantLevel() > 0: ItemName = "+" + str(Item.getEnchantLevel()) + " " + ItemName return ItemNamedef getMaterialName(MaterialID): if MaterialID == 99991 : return "xxxxx_xxxxx_i01" return "Unknown material" def getMaterialIcon(MaterialID): if MaterialID == 99991 : return "xxxxxx_i00" return "etc_unknown_material_i00"# Main Codeclass Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) def onEvent (self,event,st) : htmltext = event # Creates a List to chose an armor if event == "1": htmltext = "" for Item in st.getPlayer().getInventory().getItems(): if Item.getItemId() in EnhanceList and not Item.isEquipped(): Icon, Enhancements = EnhanceList[Item.getItemId()] EnhancID = 0 for Name, ArmorID, ArmorToken, MaterialID, MaterialQuant, Adena in Enhancements: htmltext += "<tr>\n<td width=35><img src=\"icon." + Icon + "\" width=32 height=32 align=\"left\"></td>\n" \ "<td width=835><table border=0 width=\"835\">\n<tr><td><a action=\"bypass -h Quest 1006_armor_enchanter 2_" + str(Item.getObjectId()) + "." + str(EnhancID) + "\">" + getItemName(Item) + ": " + Name + "</a></td></tr>\n" \ "<tr><td><font color=\"B09878\">Enhance</font></td></tr></table></td>\n</tr>" EnhancID += 1 if htmltext == "": htmltext = "<tr><td>You have no enhancable armor in your inventory</td></tr>" htmltext = "<html><body>\nList:\n<left>\n<table width=870 border=0>\n" + htmltext + "</table>\n<br></left></body></html>" return htmltext # shows you how much materials you need to enhance, ok button to go forward, too elif event.startswith("2_"): reqEnh = event.replace("2_", "").split(".") ObjectID = int(reqEnh[0]) EnhancID = int(reqEnh[1]) Item = st.getPlayer().getInventory().getItemByObjectId(ObjectID) if Item.getItemId() in EnhanceList: Icon, Enhancements = EnhanceList[Item.getItemId()] Name, ArmorID, ArmorToken, MaterialID, MaterialQuant, Adena = Enhancements[EnhancID] htmltext = st.showHtmlFile("2.htm") return htmltext.replace("<ArmorName>", getItemName(Item) + ": " + Name)\ .replace("<ArmorIcon>", Icon)\ .replace("<ArmorName>", getMaterialName(ArmorToken))\ .replace("<ArmorIcon>", getMaterialIcon(ArmorToken))\ .replace("<MaterialName>", getMaterialName(MaterialID))\ .replace("<MaterialIcon>", getMaterialIcon(MaterialID))\ .replace("<MaterialQuantity>", str(MaterialQuant))\ .replace("<Ancient Adena>", str(Adena))\ .replace("<EventOK>", "3_" + str(Item.getObjectId()) + "." + str(EnhancID)) # this handels the whole enhance stuff with objectIds, not ItemIds... no html shows up.. just work and socket return elif event.startswith("3_"): reqEnh = event.replace("3_", "").split(".") ObjectID = int(reqEnh[0]) EnhancID = int(reqEnh[1]) Item = st.getPlayer().getInventory().getItemByObjectId(ObjectID) if Item.getItemId() in EnhanceList: Icon, Enhancements = EnhanceList[Item.getItemId()] Name, ArmorID, ArmorToken, MaterialID, MaterialQuant, Adena = Enhancements[EnhancID] if st.getQuestItemsCount(ArmorToken) >= 1 and st.getQuestItemsCount(MaterialID) >= MaterialQuant and st.getQuestItemsCount(57) >= Adena : EnchantLevel = Item.getEnchantLevel() st.getPlayer().destroyItem("enhance_1007", ObjectID, 1, st.getPlayer(), 0) NewItem = ItemTable.getInstance().createItem("enhance", ArmorID, 1, st.getPlayer()) NewItem.setEnchantLevel(EnchantLevel) st.getPlayer().addItem("enhance", NewItem, st.getPlayer(), 0) st.takeItems(MaterialID, MaterialQuant) st.takeItems(ArmorToken, 1) st.takeItems(5575,Adena) htmltext = "Item has been succesfully enhanced!" else : htmltext = "You do not have enough materials." # if event is 0, or has a bug... trade is canceled else : htmltext = "Trade has been cancelled." st.setState(State.COMPLETED) st.exitQuest(1) return htmltext # this just return new html, if the player can talk with this npc about that enhance stuff def onTalk (self,npc,player): htmltext = "<html><head><body>I have nothing to say to you.</body></html>" st = player.getQuestState(qn) if not st : return htmltext npcId = npc.getNpcId() st.set("cond","0") st.setState(State.STARTED) return "1.htm"QUEST = Quest(1006,qn,"custom") # init all npc to the correct statsfor npcId in SMITHS: QUEST.addStartNpc(npcId) QUEST.addTalkId(npcId) # always at the end, then it shows only up if anything is correct in the code.. no jython error.. because we cant check jython errors with idleprint "importing custom: 1006: armor_enchanter"