Public feed #892387

Untitled

public python v1 · immutable
Raw Edit
·published 2008-02-05 11:10 UTC
rendered paste body
# 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:["armor_t91_uk_i00", [["Dynasty Breast Plate - Shield Master", 9417,99991,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 ItemName# etc_ticket_i00 is a standard icon for armor tokens need a valid token icon check    (MaterialId(99991)) == ArmorTokendef getMaterialName(MaterialID):    if MaterialID == 99991 :        return "etc_ticket_i00"    return "Unknown material"  # etc_ticket_i00 is a standard icon for armor tokens need a valid token icon check    (MaterialId(99991)) == ArmorTokendef getMaterialIcon(MaterialID):    if MaterialID == 99991 :        return "etc_ticket_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"