Last python quest replacements and adjustments.

This commit is contained in:
MobiusDevelopment 2019-07-29 17:37:01 +00:00
parent 75d095e019
commit 748cb7cee3
515 changed files with 3575 additions and 3324 deletions

View File

@ -0,0 +1,182 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package ai.others;
import java.util.ArrayList;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
/**
* Adapted from FirstTeam Interlude
*/
public class Bingo
{
protected static final String template = "%msg%<br><br>%choices%<br><br>%board%";
protected static final String template_final = "%msg%<br><br>%board%";
protected static final String template_board = "For your information, below is your current selection.<br><table border=\"1\" border color=\"white\" width=100><tr><td align=\"center\">%cell1%</td><td align=\"center\">%cell2%</td><td align=\"center\">%cell3%</td></tr><tr><td align=\"center\">%cell4%</td><td align=\"center\">%cell5%</td><td align=\"center\">%cell6%</td></tr><tr><td align=\"center\">%cell7%</td><td align=\"center\">%cell8%</td><td align=\"center\">%cell9%</td></tr></table>";
protected static final String msg_again = "You have already selected that number. Choose your %choicenum% number again.";
protected static final String msg_begin = "I've arranged 9 numbers on the panel.<br>Now, select your %choicenum% number.";
protected static final String msg_next = "Now, choose your %choicenum% number.";
protected static final String msg_0lines = "You are spectacularly unlucky! The red-colored numbers on the panel below are the ones you chose. As you can see, they didn't create even a single line. Did you know that it is harder not to create a single line than creating all 3 lines?";
protected static final String msg_3lines = "You've created 3 lines! The red colored numbers on the bingo panel below are the numbers you chose. Congratulations!";
protected static final String msg_lose = "Hmm... You didn't make 3 lines. Why don't you try again? The red-colored numbers on the panel are the ones you chose.";
protected static final String[] nums =
{
"first",
"second",
"third",
"fourth",
"fifth",
"final"
};
private final String _template_choice;
private final List<Integer> board;
private final List<Integer> guesses;
protected int lines;
public Bingo(String template_choice)
{
board = new ArrayList<>();
guesses = new ArrayList<>();
_template_choice = template_choice;
while (board.size() < 9)
{
final int num = Rnd.get(1, 9);
if (!board.contains(num))
{
board.add(num);
}
}
}
public String Select(String s)
{
try
{
return Select(Integer.valueOf(s));
}
catch (Exception E)
{
return null;
}
}
public String Select(int choise)
{
if ((choise < 1) || (choise > 9))
{
return null;
}
if (guesses.contains(choise))
{
return getDialog("You have already selected that number. Choose your %choicenum% number again.");
}
guesses.add(choise);
if (guesses.size() == 6)
{
return getFinal();
}
return getDialog("");
}
protected String getBoard()
{
if (guesses.size() == 0)
{
return "";
}
String result = "For your information, below is your current selection.<br><table border=\"1\" border color=\"white\" width=100><tr><td align=\"center\">%cell1%</td><td align=\"center\">%cell2%</td><td align=\"center\">%cell3%</td></tr><tr><td align=\"center\">%cell4%</td><td align=\"center\">%cell5%</td><td align=\"center\">%cell6%</td></tr><tr><td align=\"center\">%cell7%</td><td align=\"center\">%cell8%</td><td align=\"center\">%cell9%</td></tr></table>";
for (int i = 1; i <= 9; ++i)
{
final String cell = "%cell" + String.valueOf(i) + "%";
final int num = board.get(i - 1);
if (guesses.contains(num))
{
result = result.replaceFirst(cell, "<font color=\"" + ((guesses.size() == 6) ? "ff0000" : "ffff00") + "\">" + String.valueOf(num) + "</font>");
}
else
{
result = result.replaceFirst(cell, "?");
}
}
return result;
}
public String getDialog(String msg)
{
String result = "%msg%<br><br>%choices%<br><br>%board%";
if (guesses.size() == 0)
{
result = result.replaceFirst("%msg%", "I've arranged 9 numbers on the panel.<br>Now, select your %choicenum% number.");
}
else
{
result = result.replaceFirst("%msg%", "".equalsIgnoreCase(msg) ? "Now, choose your %choicenum% number." : msg);
}
result = result.replaceFirst("%choicenum%", Bingo.nums[guesses.size()]);
final StringBuilder choices = new StringBuilder();
for (int i = 1; i <= 9; ++i)
{
if (!guesses.contains(i))
{
choices.append(_template_choice.replaceAll("%n%", String.valueOf(i)));
}
}
result = result.replaceFirst("%choices%", choices.toString());
result = result.replaceFirst("%board%", getBoard());
return result;
}
protected String getFinal()
{
String result = "%msg%<br><br>%board%".replaceFirst("%board%", getBoard());
calcLines();
switch (lines)
{
case 3:
result = result.replaceFirst("%msg%", "You've created 3 lines! The red colored numbers on the bingo panel below are the numbers you chose. Congratulations!");
break;
case 0:
result = result.replaceFirst("%msg%", "You are spectacularly unlucky! The red-colored numbers on the panel below are the ones you chose. As you can see, they didn't create even a single line. Did you know that it is harder not to create a single line than creating all 3 lines?");
break;
default:
result = result.replaceFirst("%msg%", "Hmm... You didn't make 3 lines. Why don't you try again? The red-colored numbers on the panel are the ones you chose.");
break;
}
return result;
}
public int calcLines()
{
lines = 0;
lines += (checkLine(0, 1, 2) ? 1 : 0);
lines += (checkLine(3, 4, 5) ? 1 : 0);
lines += (checkLine(6, 7, 8) ? 1 : 0);
lines += (checkLine(0, 3, 6) ? 1 : 0);
lines += (checkLine(1, 4, 7) ? 1 : 0);
lines += (checkLine(2, 5, 8) ? 1 : 0);
lines += (checkLine(0, 4, 8) ? 1 : 0);
return lines += (checkLine(2, 4, 6) ? 1 : 0);
}
public boolean checkLine(final int idx1, final int idx2, final int idx3)
{
return guesses.contains(board.get(idx1)) && guesses.contains(board.get(idx2)) && guesses.contains(board.get(idx3));
}
}

View File

@ -33,7 +33,7 @@ public class TurekOrcSupplier extends Quest
private TurekOrcSupplier()
{
super(-1, "TurekOrcFootman", "ai/others");
super(-1, "TurekOrcSupplier", "ai/others");
addAttackId(TUREK_ORC_SUPPLIER);
}

View File

@ -1,2 +0,0 @@
<html><body>Torai:<br>
Oh my! This… is a priceless book. Sell it to me…! Ill give you a high price for it… Heh heh heh…</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Alchemist Matild:<br>
Why do you want more Wish Potion when you haven't used what you already have? What a pig...!</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Alchemist Matild:<br>
Hey! You don't have any Wish Potion but yet you still want to make a wish...? How very disgraceful!</body></html>

View File

@ -1,14 +0,0 @@
<html><body>Alchemist Matild:<br>
You are allowed one wish after taking the potion. You will choose from one of the four wishes on this card.
<table>
<tr>
<td><img src="icon.Quest_TarotCard_Knowledge_t00" width=64 height=112></td>
<td><img src="icon.Quest_TarotCard_Love_t00" width=64 height=112></td>
<td><img src="icon.Quest_TarotCard_Power_t00" width=64 height=112></td>
<td><img src="icon.Quest_TarotCard_Wealth_t00" width=64 height=112></td>
</tr>
</table><br>
<a action="bypass -h Quest 334_TheWishingPotion 30738-16.htm">"I wish to be a loving person."</a><br>
<a action="bypass -h Quest 334_TheWishingPotion 30738-17.htm">"I wish for 100 million adena."</a><br>
<a action="bypass -h Quest 334_TheWishingPotion 30738-18.htm">"I wish to be a king!"</a><br>
<a action="bypass -h Quest 334_TheWishingPotion 30738-19.htm">"I wish to be the wisest person in the world."</a></body></html>

View File

@ -1,2 +0,0 @@
<html><body>Alchemist Matild:<br>
To begin the ceremony you must first apply the blood of crow to your forehead and then shake the wing of fairy three times...</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Alchemist Matild:<br>
To start the ceremony you must first apply the blood of crow to your forehead and then shake the leaf of timitran three times...</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Alchemist Matild:<br>
To start the ceremony you must first apply the blood of crow to your forehead and then put the crown of glory on your head...</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Alchemist Matild:<br>
To start the ceremony you must first apply the blood of crow to your forehead and then hit your head three times with a Sage's Staff...</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Alchemist Matild:<br>
You must wait, someone else is currently making a wish...</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Fairy of Love Rupina:<br>
Ah, it's you! Do you seek your true love? I'm sorry, but I am very busy and cannot help you now. Instead, take this pendant. It will help you to find your soul mate.</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Fairy of Love Rupina:<br>
Love is such a lovely thing.<br>
Lovers love loving.<br>
Love each other!</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Chest of Wisdom:<br>
(A voice comes out of the chest.) I will teach you a wise method to increase your wealth. Warehouse Keeper Sorint, Sorceress Page, Researcher Lorain, Warehouse Keeper Hagger, Guard Stan, Blacksmith Dunning, Magic Trader Ralph, Head Blacksmith Ferris, Warehouse Keeper Collob, and Grocer Pano… All these people are crazy about collecting weird coins!</body></html>

View File

@ -1,371 +0,0 @@
#
# Created by DraX on 2005.09.08
# C4 Update by DrLecter
#
import sys
from org.l2jmobius.gameserver.model.quest import State
from org.l2jmobius.gameserver.model.quest import QuestState
from org.l2jmobius.gameserver.model.quest.jython import QuestJython as JQuest
from org.l2jmobius.gameserver.network.serverpackets import CreatureSay
qn = "334_TheWishingPotion"
# General Rewards
ADENA = 57
NECKLACE_OF_GRACE = 931
HEART_OF_PAAGRIO = 3943
R1=[3081,3076,3075,3074,4917,3077,3080,3079,3078,4928,4931,4932,5013,3067,3064,3061,3062,3058,4206,3065,3060,3063,4208,3057,3059,3066,4911,4918,3092,3039,4922,3091,3093,3431]
R2=[3430,3429,3073,3941,3071,3069,3072,4200,3068,3070,4912,3100,3101,3098,3094,3102,4913,3095,3096,3097,3099,3085,3086,3082,4907,3088,4207,3087,3084,3083,4929,4933,4919,3045]
R3=[4923,4201,4914,3942,3090,4909,3089,4930,4934,4920,3041,4924,3114,3105,3110,3104,3113,3103,4204,3108,4926,3112,3107,4205,3109,3111,3106,4925,3117,3115,3118,3116,4927]
R4=[1979,1980,2952,2953]
#Quest ingredients and rewards
WISH_POTION,ANCIENT_CROWN,CERTIFICATE_OF_ROYALTY = range(3467,3470)
ALCHEMY_TEXT,SECRET_BOOK,POTION_RECIPE_1,POTION_RECIPE_2,MATILDS_ORB,FORBIDDEN_LOVE_SCROLL = range(3678,3684)
AMBER_SCALE,WIND_SOULSTONE,GLASS_EYE,HORROR_ECTOPLASM,SILENOS_HORN,ANT_SOLDIER_APHID,TYRANTS_CHITIN,BUGBEAR_BLOOD = range(3684,3692)
#NPCs
GRIMA = 27135
SUCCUBUS_OF_SEDUCTION = 27136
GREAT_DEMON_KING = 27138
SECRET_KEEPER_TREE = 27139
SANCHES = 27153
BONAPARTERIUS = 27154
RAMSEBALIUS = 27155
TORAI = 30557
ALCHEMIST_MATILD = 30738
RUPINA = 30742
WISDOM_CHEST = 30743
#MOBs
WHISPERING_WIND = 20078
ANT_RECRUIT = 20087
ANT_WARRIOR_CAPTAIN = 20088
SILENOS = 20168
TYRANT = 20192
TYRANT_KINGPIN = 20193
AMBER_BASILISK = 20199
HORROR_MIST_RIPPER = 20227
TURAK_BUGBEAR = 20248
TURAK_BUGBEAR_WARRIOR = 20249
GLASS_JAGUAR = 20250
#DROPLIST
DROPLIST={AMBER_BASILISK:[AMBER_SCALE,15],WHISPERING_WIND:[WIND_SOULSTONE,20],GLASS_JAGUAR:[GLASS_EYE,35],HORROR_MIST_RIPPER:[HORROR_ECTOPLASM,15],
SILENOS:[SILENOS_HORN,30],ANT_RECRUIT:[ANT_SOLDIER_APHID,40],ANT_WARRIOR_CAPTAIN:[ANT_SOLDIER_APHID,40],TYRANT:[TYRANTS_CHITIN,50],
TYRANT_KINGPIN:[TYRANTS_CHITIN,50],TURAK_BUGBEAR:[BUGBEAR_BLOOD,25],TURAK_BUGBEAR_WARRIOR:[BUGBEAR_BLOOD,25]}
# set of random messages
MESSAGES={SUCCUBUS_OF_SEDUCTION:["Do you wanna be loved?","Do you need love?","Let me love you...","Want to know what love is?","Are you in need of love?","Me love you long time"],
GRIMA:["hey hum hum!","boom! boom!","...","Ki ab kya karein hum"],
}
def check_ingredients(st,required) :
if st.getQuestItemsCount(AMBER_SCALE) != required : return 0
if st.getQuestItemsCount(WIND_SOULSTONE) != required : return 0
if st.getQuestItemsCount(GLASS_EYE) != required : return 0
if st.getQuestItemsCount(HORROR_ECTOPLASM) != required : return 0
if st.getQuestItemsCount(SILENOS_HORN) != required : return 0
if st.getQuestItemsCount(ANT_SOLDIER_APHID) != required : return 0
if st.getQuestItemsCount(TYRANTS_CHITIN) != required : return 0
if st.getQuestItemsCount(BUGBEAR_BLOOD) != required : return 0
return 1
def autochat(npc,text) :
if npc: npc.broadcastPacket(CreatureSay(npc.getObjectId(),0,npc.getName(),text))
return
class Quest (JQuest) :
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
self.questItemIds = range(3678,3683)+range(3684,3692)
def onAdvEvent (self,event,npc,player):
st = player.getQuestState(qn)
if not st: return
htmltext = event
player=st.getPlayer()
if event == "30738-03.htm":
st.set("cond","1")
st.setState(State.STARTED)
st.playSound("ItemSound.quest_accept")
if st.getQuestItemsCount(ALCHEMY_TEXT) >= 2: st.takeItems(ALCHEMY_TEXT,-1)
if st.getQuestItemsCount(ALCHEMY_TEXT) == 0: st.giveItems(ALCHEMY_TEXT,1)
htmltext = "30738-03.htm"
if event == "30738-06.htm":
if st.getQuestItemsCount(WISH_POTION) :
htmltext = "30738-13.htm"
else :
st.playSound("ItemSound.quest_accept")
st.set("cond","3")
if st.getQuestItemsCount(ALCHEMY_TEXT) >= 1: st.takeItems(ALCHEMY_TEXT,-1)
if st.getQuestItemsCount(SECRET_BOOK) >= 1: st.takeItems(SECRET_BOOK,-1)
if st.getQuestItemsCount(POTION_RECIPE_1) >= 2: st.takeItems(POTION_RECIPE_1,-1)
if st.getQuestItemsCount(POTION_RECIPE_1) == 0: st.giveItems(POTION_RECIPE_1,1)
if st.getQuestItemsCount(POTION_RECIPE_2) >= 2: st.takeItems(POTION_RECIPE_2,-1)
if st.getQuestItemsCount(POTION_RECIPE_2) == 0: st.giveItems(POTION_RECIPE_2,1)
if st.getQuestItemsCount(MATILDS_ORB) : htmltext = "30738-12.htm"
if event == "30738-10.htm":
if check_ingredients(st,1) :
st.playSound("ItemSound.quest_finish")
st.takeItems(ALCHEMY_TEXT,-1)
st.takeItems(SECRET_BOOK,-1)
st.takeItems(POTION_RECIPE_1,-1)
st.takeItems(POTION_RECIPE_2,-1)
st.takeItems(AMBER_SCALE,-1)
st.takeItems(WIND_SOULSTONE,-1)
st.takeItems(GLASS_EYE,-1)
st.takeItems(HORROR_ECTOPLASM,-1)
st.takeItems(SILENOS_HORN,-1)
st.takeItems(ANT_SOLDIER_APHID,-1)
st.takeItems(TYRANTS_CHITIN,-1)
st.takeItems(BUGBEAR_BLOOD,-1)
if not st.getQuestItemsCount(MATILDS_ORB) : st.giveItems(MATILDS_ORB,1)
st.giveItems(WISH_POTION,1)
st.set("cond","5")
else :
htmltext="You don't have required items"
elif event == "30738-14.htm":
# if you dropped or destroyed your wish potion, you are not able to see the wish list
if st.getQuestItemsCount(WISH_POTION) :
htmltext = "30738-15.htm"
#### WISH I : Please make me into a loving person.
elif event == "30738-16.htm":
if st.getQuestItemsCount(WISH_POTION) :
st.set("wish","1")
st.startQuestTimer("matild_timer1",3000,npc)
st.takeItems(WISH_POTION,1)
npc.setBusy(True)
else:
htmltext = "30738-14.htm"
#### WISH II : I want to become an extremely rich person. How about 100 million adena?!
elif event == "30738-17.htm":
if st.getQuestItemsCount(WISH_POTION) :
st.set("wish","2")
st.startQuestTimer("matild_timer1",3000,npc)
st.takeItems(WISH_POTION,1)
npc.setBusy(True)
else:
htmltext = "30738-14.htm"
#### WISH III : I want to be a king in this world.
elif event == "30738-18.htm":
if st.getQuestItemsCount(WISH_POTION) :
st.set("wish","3")
st.startQuestTimer("matild_timer1",3000,npc)
st.takeItems(WISH_POTION,1)
npc.setBusy(True)
else:
htmltext = "30738-14.htm"
#### WISH IV : I'd like to become the wisest person in the world.
elif event == "30738-19.htm":
if st.getQuestItemsCount(WISH_POTION) >= 1:
st.set("wish","4")
st.startQuestTimer("matild_timer1",3000,npc)
st.takeItems(WISH_POTION,1)
npc.setBusy(True)
else:
htmltext = "30738-14.htm"
elif event == "matild_timer1":
autochat(npc,"OK, everybody pray fervently!")
st.startQuestTimer("matild_timer2",4000,npc)
return
elif event == "matild_timer2":
autochat(npc,"Both hands to heaven, everybody yell together!")
st.startQuestTimer("matild_timer3",4000,npc)
return
elif event == "matild_timer3":
autochat(npc,"One! Two! May your dreams come true!")
wish = st.getInt("wish")
WISH_CHANCE = st.getRandom(100)
if wish == 1 :
if WISH_CHANCE <= 50:
autochat(st.addSpawn(SUCCUBUS_OF_SEDUCTION,200000),MESSAGES[SUCCUBUS_OF_SEDUCTION][st.getRandom(len(MESSAGES))])
autochat(st.addSpawn(SUCCUBUS_OF_SEDUCTION,200000),MESSAGES[SUCCUBUS_OF_SEDUCTION][st.getRandom(len(MESSAGES))])
autochat(st.addSpawn(SUCCUBUS_OF_SEDUCTION,200000),MESSAGES[SUCCUBUS_OF_SEDUCTION][st.getRandom(len(MESSAGES))])
else:
autochat(st.addSpawn(RUPINA,120000),"Your love... love!")
elif wish == 2 :
if WISH_CHANCE <= 33 :
autochat(st.addSpawn(GRIMA,200000),MESSAGES[GRIMA][st.getRandom(len(MESSAGES))])
autochat(st.addSpawn(GRIMA,200000),MESSAGES[GRIMA][st.getRandom(len(MESSAGES))])
autochat(st.addSpawn(GRIMA,200000),MESSAGES[GRIMA][st.getRandom(len(MESSAGES))])
else :
st.giveItems(ADENA,10000)
elif wish == 3 :
if WISH_CHANCE <= 33 :
st.giveItems(CERTIFICATE_OF_ROYALTY,1)
elif WISH_CHANCE >= 66 :
st.giveItems(ANCIENT_CROWN,1)
else:
spawnedNpc=st.addSpawn(SANCHES,player,True,0)
autochat(spawnedNpc,"Who dares to call the dark Monarch?!")
st.startQuestTimer("sanches_timer1",200000,spawnedNpc)
elif wish == 4 :
if WISH_CHANCE <= 33:
st.giveItems(R1[st.getRandom(len(R1))],1)
st.giveItems(R2[st.getRandom(len(R2))],1)
st.giveItems(R3[st.getRandom(len(R3))],1)
if not st.getRandom(3):
st.giveItems(HEART_OF_PAAGRIO,1)
else:
autochat(st.addSpawn(WISDOM_CHEST,120000),"I contain the wisdom, I am the wisdom box!")
npc.setBusy(False)
return
elif event == "sanches_timer1" :
autochat(npc,"Hehehe, i'm just wasting my time here!")
npc.deleteMe()
return
elif event == "bonaparterius_timer1" :
autochat(npc,"A worth opponent would be a good thing")
npc.deleteMe()
elif event == "ramsebalius_timer1" :
autochat(npc,"Your time is up!")
npc.deleteMe()
return
elif event == "greatdemon_timer1" :
autochat(npc,"Do not interrupt my eternal rest again!")
npc.deleteMe()
return
return htmltext
def onTalk (self,npc,player):
htmltext = "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>"
st = player.getQuestState(qn)
if not st : return htmltext
npcId = npc.getNpcId()
cond = st.getInt("cond")
id = st.getState()
if npcId != ALCHEMIST_MATILD and id == State.CREATED : return htmltext
if npcId == TORAI and st.getQuestItemsCount(FORBIDDEN_LOVE_SCROLL) :
st.takeItems(FORBIDDEN_LOVE_SCROLL,1)
st.giveItems(ADENA,500000)
htmltext = "30557-01.htm"
elif npcId == WISDOM_CHEST :
st.giveItems(R1[st.getRandom(len(R1))],1)
st.giveItems(R2[st.getRandom(len(R2))],1)
st.giveItems(R3[st.getRandom(len(R3))],1)
if not st.getRandom(3):
st.giveItems(HEART_OF_PAAGRIO,1)
st.giveItems(4409,1)
st.giveItems(4408,1)
htmltext = "30743-0"+str(st.getRandom(6)+1)+".htm"
npc.deleteMe()
elif npcId == RUPINA:
if st.getRandom(100) <= 4:
st.giveItems(NECKLACE_OF_GRACE,1)
htmltext = "30742-01.htm"
else:
st.giveItems(R4[st.getRandom(len(R4))],1)
htmltext = "30742-02.htm"
npc.decayMe()
elif npcId == ALCHEMIST_MATILD:
if npc.isBusy() :
htmltext = "30738-20.htm"
elif player.getLevel() <= 29 :
htmltext = "30738-21.htm"
st.exitQuest(1)
elif cond == 5 and st.getQuestItemsCount(MATILDS_ORB) :
htmltext = "30738-11.htm"
elif cond == 4 and check_ingredients(st,1):
htmltext = "30738-08.htm"
elif cond == 3 and not check_ingredients(st,1):
htmltext = "30738-07.htm"
elif cond == 2 or (st.getQuestItemsCount(ALCHEMY_TEXT) and st.getQuestItemsCount(SECRET_BOOK)) :
htmltext = "30738-05.htm"
elif cond == 1 or (st.getQuestItemsCount(ALCHEMY_TEXT) and not st.getQuestItemsCount(SECRET_BOOK)) :
htmltext = "30738-04.htm"
else:
htmltext = "30738-01.htm"
return htmltext
def onKill(self,npc,player,isPet):
st = player.getQuestState(qn)
if not st : return
id = st.getState()
if id == State.CREATED: return
if id != State.STARTED: st.setState(State.STARTED)
npcId = npc.getNpcId()
cond = st.getInt("cond")
if npcId == SECRET_KEEPER_TREE and cond == 1 and not st.getQuestItemsCount(SECRET_BOOK):
st.set("cond","2")
st.giveItems(SECRET_BOOK,1)
st.playSound("ItemSound.quest_itemget")
elif npcId in DROPLIST.keys() and cond == 3 :
item,chance=DROPLIST[npcId]
if st.getRandom(100) <= chance and not st.getQuestItemsCount(item) :
st.giveItems(item,1)
if check_ingredients(st,1):
st.playSound("ItemSound.quest_middle")
st.set("cond","4")
else: st.playSound("ItemSound.quest_itemget")
else:
if npcId == SUCCUBUS_OF_SEDUCTION:
if st.getRandom(100) <= 3 :
st.playSound("ItemSound.quest_itemget")
st.giveItems(FORBIDDEN_LOVE_SCROLL,1)
elif npcId == GRIMA:
if st.getRandom(100) < 4 :
st.playSound("ItemSound.quest_itemget")
if st.getRandom(1000) == 0 :
st.giveItems(ADENA,100000000)
else:
st.giveItems(ADENA,900000)
elif npcId == SANCHES :
try :
st.getQuestTimer("sanches_timer1").cancel()
if st.getRandom(100) <= 50 :
autochat(npc,"It's time to come out my Remless... Bonaparterius!")
spawnedNpc=st.addSpawn(BONAPARTERIUS,npc,True,0)
autochat(spawnedNpc,"I am the Great Emperor's son!")
st.startQuestTimer("bonaparterius_timer1",600000,spawnedNpc)
else :
st.giveItems(R4[st.getRandom(len(R4))],1)
except : pass
elif npcId == BONAPARTERIUS:
try :
st.getQuestTimer("bonaparterius_timer1").cancel()
autochat(npc,"Only Ramsebalius would be able to avenge me!")
if st.getRandom(100) <= 50 :
spawnedNpc=st.addSpawn(RAMSEBALIUS,npc,True,0)
autochat(spawnedNpc,"Meet the absolute ruler!")
st.startQuestTimer("ramsebalius_timer1",600000,spawnedNpc)
else :
st.giveItems(R4[st.getRandom(len(R4))],1)
except : pass
elif npcId == RAMSEBALIUS:
try :
st.getQuestTimer("ramsebalius_timer1").cancel()
autochat(npc,"You evil piece of...")
if st.getRandom(100) <= 50 :
spawnedNpc=st.addSpawn(GREAT_DEMON_KING,npc,True,0)
autochat(spawnedNpc,"Who dares to kill my fiendly minion?!")
st.startQuestTimer("greatdemon_timer1",600000,spawnedNpc)
else :
st.giveItems(R4[st.getRandom(len(R4))],1)
except: pass
elif npcId == GREAT_DEMON_KING:
try :
st.getQuestTimer("greatdemon_timer1").cancel()
st.giveItems(ADENA,1412965)
st.playSound("ItemSound.quest_itemget")
except: pass
return
QUEST = Quest(334,qn,"The Wishing Potion")
QUEST.addStartNpc(ALCHEMIST_MATILD)
QUEST.addTalkId(ALCHEMIST_MATILD)
QUEST.addTalkId(TORAI)
QUEST.addTalkId(RUPINA)
QUEST.addTalkId(WISDOM_CHEST)
QUEST.addKillId(SECRET_KEEPER_TREE)
for mob in DROPLIST.keys():
QUEST.addKillId(mob)
QUEST.addKillId(SUCCUBUS_OF_SEDUCTION)
QUEST.addKillId(GRIMA)
QUEST.addKillId(SANCHES)
QUEST.addKillId(RAMSEBALIUS)
QUEST.addKillId(BONAPARTERIUS)
QUEST.addKillId(GREAT_DEMON_KING)

View File

@ -1 +0,0 @@
<html><body>Conditions are not right to make this quest available.</body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
Many aspire to join our guild. Many such as you only see the glamorous side of our profession.<br>Becoming a hunter is not an easy task. Only the very best and brightest are selected for membership in the Hunters Guild. A hunting license is only given to those who pass a very severe test.<br>Many give up before a week has passed. Does that sound like you?<br>
(This quest is only for characters level 35 and above.)</body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
Many aspire to join our guild. Many such as you only see the glamorous side of our profession.<br>Becoming a hunter is not an easy task. Only the very best and brightest are selected for membership in the Hunters Guild. A hunting license is only given to those who pass a very severe test.<br>Many give up before a week has passed. Does that sound like you?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-03.htm">"I wish to take the test for the hunting license."</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
Did I hurt your feelings? Do you actually intend to try for the hunting license? If so, you must listen carefully to my words... <br>There are two types of hunters. Most hunters are 1-circle, but very skillful ones can obtain the 2-circle license by passing another test. Of course you must take the <font color="LEVEL">1-circle license test</font> first.<br>To pass this test, you must bring back at least three of the items on this list.<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-04.htm">View the list</a></body></html>

View File

@ -1,8 +0,0 @@
<html><body>Guild Member Grey:<br>
Next is the 1-circle hunter license test list. To pass the test, you have to bring at least three items from the list. Keep in mind that this is not just a simple treasure hunt but is a test to find out whether you have the nature and disposition of a hunter!<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-05.htm">40 scales of guardian basilisk</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-06.htm">20 Karut Weeds</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-07.htm">3 heads of raiders with the lord's bounty on their heads</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-08.htm">Skin of Windsus Aleph</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-09.htm">20 light-blue runestones</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-10.htm">30 sea of spores seeds</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
You must gather <font color="LEVEL">40 scales of guardian basilisk</font>. They live in the <font color="LEVEL">Death Pass</font>.<br>I really shouldn't tell you this... Gathering information about the items is a part of the test. Count yourself lucky to have received this valuable one-time hint!<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-04.htm">Go back</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
You must gather <font color="LEVEL">20 Karut Weeds</font>, used in the research of mages. The leto Lizardman mediums carry them. You may find the leto lizardmen in the southern part of Oren.<br>Gathering information about the items is a part of the test. Count yourself lucky to have received this valuable one-time hint!<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-04.htm">Go back</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
You must kill the three evil outlaw Haka brothers and bring back their heads. They are named <font color="LEVEL">Haka, Jakja and Marka</font>. They are prefects of the Breka orc tribe. They wantonly attack merchants' carriages, massacre citizens and set fire to their homes. There has been a bounty placed by on their heads by the Lord of Giran, therefore they have been laying low. But with the <font color="LEVEL">Breka Orc Warriors</font> destroyed, they are bound to appear seeking revenge.<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-04.htm">Go back</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
You must gather <font color="LEVEL">20 light-blue runestones</font>. These runestones are obtained by destroying <font color="LEVEL">manashen gargoyles or enchanted stone golems</font> in the area near the Ivory Tower. To protect their precious tower from interlopers, the mages apparently have inplanted runestones in the creatures of that area and are controlling them.<br>This is all I will say on this matter. If you are a true hunter, you must gather the information and find the items yourself. Don't expect any more hints!<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-04.htm">Go back</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
You must gather <font color="LEVEL">30 Sea of Spores seeds</font>. These can be obtained by going to the Sea of Spores and killing the <font color="LEVEL">giant fungus</font>.<br>Of course, I should let you discover this for yourself, but I'm just an old softie... No more hints!<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-04.htm">Go back</a></body></html>

View File

@ -1,2 +0,0 @@
<html><body>Guild Member Grey:<br>
You have obtained the items from the list! I must admit that I doubted you at first, but I stand corrected! Well, you certainly qualify as a hunter. I hereby bestow on you the 1-circle hunting license. Welcome to the guild, new hunting brother!<br>Now you are qualified to perform the various tasks that come to our Hunters Guild. Please go and ask <font color="LEVEL">Guild Member Tor</font> over there for details.<br>Sometimes you will be assigned jobs by the guild, other times you'll be hired by individuals. Recently <font color="LEVEL">Cybellin</font> asked me to introduce him to a trustworthy hunter; would you like to meet him?</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Guild Member Grey:<br>
Welcome, my hunter brother. What can I do for you?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-14.htm">"Is there any work?"</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-15.htm">"I wish to test for the 2-circle hunter license."</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-31.htm">"I wish to leave the Hunters Guild."</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
We get dozens of hunting requests every day. You should speak to <font color="LEVEL">Guild Member Tor</font> to find out what requests have currently come in. If there is a job that you like, you can accept it.<br>There is also the possibility of being hired by individuals. Recently <font color="LEVEL">Cybellin</font> asked me to introduce him to a trustworthy hunter. Would you care to meet him?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-13.htm">"Go back"</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
You are already applying for the 2-circle hunting license? Nice to see that you don't lack ambition! But look. You're not ready. You do have some skills but you still need more important practical experience. For the time being, you should develop your talents while carrying out hunting requests.<br>
(You can apply for the 2-circle license test after reaching level 45.)</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Guild Member Grey:<br>
Welcome, my hunter brother. What can I do for you?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-17.htm">"Are there any jobs?"</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-19.htm">"I wish to test for the 2-circle hunting license."</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-31.htm">Leave the Hunters Guild</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
We get dozens of hunting requests every day. You should see <font color="LEVEL">Guild Member Tor</font>, he will know what requests have come in. If there is a job that you like, you can accept it.<br>Hunters are also hired by individuals, not just through the guild. Recently <font color="LEVEL">Cybellin</font> asked me to introduce him to a trustworthy hunter. Would you care to meet him?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-16.htm">Go back</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
So, you wish to take the 2-circle hunting license test? Well I suppose you're up to giving it a try. As before, in the 2-circle test you must bring back at least three items written on the list. Of course, these items will be harder to obtain than those of the 1-circle test. Maybe you should look at the list first...<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">View list</a></body></html>

View File

@ -1,2 +0,0 @@
<html><body>Guild Member Grey:<br>
Still taking the test, are you? Come and see me when you've finished.</body></html>

View File

@ -1,8 +0,0 @@
<html><body>Guild Member Grey:<br>
Here is the 2-circle hunting license test list. You must bring <br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-21.htm">20 Timak Orc Totems</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-22.htm">20 skeins of trisalim cobweb</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-23.htm">30 Ambrosius Fruits</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-24.htm">20 Balefire Crystals</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-25.htm">20 Imperial Arrowheads</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-26.htm">The heads of 5 outlaw raiders</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
You must gather <br><font color="LEVEL">20 Timak Orc Totems</font>. To obtain them you must kill Timak Orc Warriors. You should have no trouble with this. Now go!<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">Go back</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
You must gather<font color="LEVEL">20 trisalim cobwebs</font>. This should be no problem for you. Quickly now! Get them and come back to me!<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">Go back</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
You must gather <font color="LEVEL">30 Ambrosius Fruits</font>. You are familiar with ambrosius, aren't you? It's a fruit somewhat like an apple that grows on valley treants in Enchanted Valley. This should be easy for you!<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">Go back</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
You must gather <font color="LEVEL">twenty Balefire Crystals</font>. Actually, I didn't know what this was so I asked the sorcerers about it. They said it could be obtained if you kill a <font color="LEVEL">tairim</font> in the Cemetery. This hint should be of great value to you.<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">Go back</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
You must gather <font color="LEVEL">20 Imperial Arrowheads</font>. This should be easy for you. If you go to the <font color="LEVEL">National Cemetery</font> and kill the undead archers, you can obtain arrowheads made during the Elmoreden era. Are you up for it?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">Go back</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
You must kill five tarlk bugbear raiders and bring back their heads. Their names are Athu, Triska, Motura and Lanka, and they are led by one called Kalath. These <font color="LEVEL">tarlk bugbear warriors</font> have been attacking and pillaging merchant carriages. I'm sure you would deal with these outlaws even if it weren't a requirement of the test, wouldn't you?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-20.htm">Go back</a></body></html>

View File

@ -1,4 +0,0 @@
<html>
<body>
Guild Member Grey:<br>Good work! I knew that you would complete the test without much trouble. Now you are a respectable 2-circle hunter. Congratulations!<br>Now you are qualified for more dangerous hunts. Go see Guild Member Tor.<br>Or perhaps you should visit Cybellin. He is still looking for a good hunter...</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Guild Member Grey:<br>
Hello, hunter brother. What can I do for you?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-30.htm">"Are there any jobs?"</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-31.htm">"I wish to leave the Hunters Guild."</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Grey:<br>
We get dozens of hunting requests every day. You should go to <font color="LEVEL">Guild Member Tor</font> to find out what requests have currently come in. If there is an assignment that appeals to you, you can accept it.<br>There are also individuals who wish to hire hunters. Recently <font color="LEVEL">Cybellin</font> asked me if I knew of a trustworthy hunter. Would you like to meet her?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-29.htm">Go back</a></body></html>

View File

@ -1,4 +0,0 @@
<html><body>Guild Member Grey:<br>
You wish to leave the guild? Certainly you know that is impossible. Once you join this brotherhood you are in for life... Didn't you know that?... You should reconsider your decision...<br>... The fear in your eyes makes it impossible for me to keep a straight face! I'm joking, you idiot! Of course you can leave if that is what you really want... You must have a good reason... <br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-32.htm">Leave</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30744-34.htm">Cancel</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Guild Member Tor:<br>
Pleased to meet you, brother! Is there anything I can help you with?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-07.htm">"I would like to take on a request."</a></body></html>

View File

@ -1,4 +0,0 @@
<html><body>Guild Member Tor:<br>
Nice to meet you, brother! Is there anything I can help you with?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-09.htm">Discontinue mission</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-11.htm">Continue mission</a></body></html>

View File

@ -1,2 +0,0 @@
<html><body>
Guild Member Tor:<br>Well, it seems you have your mind made up, I won't try to change it. I will confiscate all of your Laurel Leaf Pins. I hope in the future you will learn to fulfill your obligations.</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Guild Member Tor:<br>
Good work! Here is your reward. Also, please accept this Laurel Leaf Pin that recognizes the successful fulfillment of a request. The more pins you possess, the better chance you will receive class A and B requests.<br>Do you wish to undertake a new request?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-03.htm">"I would like to receive a new request."</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-14.htm">"I need a break."</a></body></html>

View File

@ -1,4 +0,0 @@
<html><body>Guild Member Tor:<br>
Good work! Here is your reward. Also, please accept this Laurel Leaf Pin that recognizes the successful fulfillment of a request. The more pins you possess, the better the chance you will receive class A and B requests.<br>Do you wish to undertake a new request?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-07.htm">"I would like to receive a new request."</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30745-14.htm">"I need a break."</a></body></html>

View File

@ -1,2 +0,0 @@
<html><body>Guild Member Tor:<br>
Details of the Request: Obtain 40 charms of Kadesh. The charm bears the image of Kadesh, the evil spirit worshiped by leto lizardmen. It is known that leto Lizardman archers and soldiers carry the charm as an amulet to invoke magical power.<br>Request Class: C</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Hunters Guild Member Tor:<br>
Details of the Request: Collect and bring back 40 Dire Wyrm Eggs.<br>Request Class: C</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Guild Member Tor:<br>
Details of the Request: Collect and bring back 50 Taik Obsidian Amulets. You must defeat an archer or warrior of the Taik orc tribe to obtain this amulet.<br>Request Class: C</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Guild Member Tor:<br>
Details of the Request: Kill the karul bugbears that are terrorizing the south of Aden and bring back their heads.<br>Request Class: C</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Guild Member Tor:<br>
Details of the Request: Collect 40 Tamlin Ivory Charms. This charm is obtained by killing a tamlin orc.<br>Request Class: C</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Guild Member Tor:<br>
Details of the Request: Bring me the head of Kaikee, captain of the Timak orc raiders. Start killing Timak Orc Warriors and eventually Kaikee will make his appearance.<br>Request Class: B</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Guild Member Tor:<br>
Details of the Request: Collect and bring back 50 Taik Orc Totems. This totem can be obtained by slaying Taik orc shamans or captains. <br>Request Class: C</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Guild Member Tor:<br>
Details of the Request: Collect and bring back 30 Shillien Manes. To obtain them you must kill grunts, scouts or warriors of the vanor silenos tribe that have been running amok in the north of Aden.<br>Request Class: C</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Guild Member Tor:<br>
Details of the Request: Collect and bring back 20 horns of unicorn. They are found in the Enchanted Valley.<br>Request Class: B</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Guild Member Tor:<br>
Details of the Request: Bring back 20 skulls of undead executed criminals. These vagrant spirits have wandered aimlessly about the Cemetery of Kings since ancient times.<br>Request Class: A</body></html>

View File

@ -1 +0,0 @@
<html><body>Guild Member Tor:<br><?reply1?><?reply2?><?reply3?><?reply4?><?reply5?></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Cybellin:<br>
Excellent! Take this <font color="LEVEL">Blood Crystal</font> and dagger. Use the dagger to kill the evil <font color="LEVEL">leto lizardmen</font> and <font color="LEVEL">harit lizardmen</font> and the crystal to absorb their blood. This will raise the purity of the crystal above its current level of 1. Although this may seem quite simple, the process is not without risks. In addition to the danger posed by the lizardmen, there is a chance each time that the crystal will shatter, that is, the crystal will either increase in purity or be destroyed.<br>If you successfully raise the purity of the crystal and bring it to me, you shall receive a reward. The higher the level of purity, the greater your reward will be. <br>There are different theories as to why the crystal reacts like this to the blood of the lizardmen, possibly it is because these evil lizards are descended from dragons! You will find that certain grades of blood are very effective and others have no effect at all. This can only be determined by trial and error...<br>
I have written down this task for you.</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Cybellin:<br>
After you kill the <font color="LEVEL">leto lizardmen</font> and <font color="LEVEL">harit lizardmen</font> with that dagger, you must use the Blood Crystal to absorb their blood. <br>When you raise the purity of the crystal and return it to me, I shall give you a reward. The higher the level of purity, the greater your reward will be. There is an element of risk, however, as each time it is possible that the crystal will be destroyed.<br>You will find that certain grades of blood are useful and some grades have no effect at all on the Blood Crystal. This can only be determined by trial and error...</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Cybellin:<br>
The purity of the crystal is still at level 1! Have you decided not to carry out my request?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-04.htm">"How can I raise the purity of the crystal?"</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-03.htm">Continue</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-12.htm">Quit</a></body></html>

View File

@ -1,4 +0,0 @@
<html><body>Cybellin:<br>
You have raised the purity of the Blood Crystal! Would you like to try increasing it some more or do you wish to give it to me at its current level? It doesn't matter to me, but you should remember that the higher level of crystal that you bring me, the greater your reward will be.<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-08.htm">"Take the jewel at its current level."</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-09.htm">"I will attempt to raise the level of the crystal."</a></body></html>

View File

@ -1,4 +0,0 @@
<html><body>Cybellin:<br>
You have successfully created a Blood Crystal of level 10 purity! Oh my Shilen! That's awesome! As I promised, I will pay you the reward money. Thank you so very much!<br>Well, may I ask you to do me another favor?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-03.htm">Tell her that you will take up the task.</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-12.htm">Quit.</a></body></html>

View File

@ -1,4 +0,0 @@
<html><body>Cybellin:<br>
Excellent! You shall receive your reward based on the level of purity of the Blood Crystal. Good job! Could I ask you another favor?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-03.htm">"I will do another favor for you."</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-12.htm">"No, just give me the reward and I'll be on my way."</a></body></html>

View File

@ -1,2 +0,0 @@
<html><body>Cybellin:<br>
Fine, I will explain my request. You must increase the purity of a Blood Crystal and bring it to me. This is accomplished by dipping the crystal in the blood of <font color="LEVEL">leto lizardmen</font> and <font color="LEVEL">harit lizardmen</font> after you kill them with the dagger I gave you. If you are able to increase the crystal's purity to a level of 10 without destroying it, I will use my entire fortune to procure your reward!</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Cybellin:<br>
Hunter, will you continue to help me?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-03.htm">"Yes."</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-12.htm">"No."</a></body></html>

View File

@ -1,4 +0,0 @@
<html><body>Cybellin:<br>
Ah, yes... Shattered... The crystal's structure was unstable and it failed. Don't be discouraged. Here is another crystal, will you please try again?<br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-03.htm">"Yes."</a><br>
<a action="bypass -h Quest 335_TheSongOfTheHunter 30746-12.htm">"No."</a></body></html>

View File

@ -1,2 +0,0 @@
<html><body>Cybellin:<br>
Thank you for your help. May Shilen protect you...</body></html>

View File

@ -1,631 +0,0 @@
#Made by Emperorc
import sys
from org.l2jmobius.gameserver.model.quest import State
from org.l2jmobius.gameserver.model.quest import QuestState
from org.l2jmobius.gameserver.model.quest.jython import QuestJython as JQuest
from org.l2jmobius.gameserver.network.serverpackets import CreatureSay
from org.l2jmobius.commons.util import Rnd
qn = "335_TheSongOfTheHunter"
#NPCS
Grey = 30744
Tor = 30745
Cybellin = 30746
#Items
Cyb_Dagger = 3471
License_1 = 3692
License_2 = 3693
Leaf_Pin = 3694
Test_Instructions_1 = 3695
Test_Instructions_2 = 3696
Cyb_Req = 3697
#Mobs
Breka_Orc_Warrior = 20271
Windsus = 20553
Tarlk_Bugbear_Warrior = 20571
Gremlin_Filcher = 27149
Mobs = [Breka_Orc_Warrior, Windsus, Tarlk_Bugbear_Warrior, Gremlin_Filcher]
Lizardmen = [20578,20579,20581,20582,20641,20642,20643]
#Droplist Format- npcId:[itemId,itemAmount,chance]
Level_1 = {
20550 : [3709,40,75], #Gaurdian Basilisk
20581 : [3710,20,50], #Leto Lizardman Shaman
27140 : [3711,1,100], #Breka Overlord Haka
27141 : [3712,1,100], #Breka Overlord Jaka
27142 : [3713,1,100], #Breka Overlord Marka
27143 : [3714,1,100], #Windsus Aleph
20563 : [3715,20,50], #Manashen Gargoyle
20565 : [3715,20,50], #Enchanted Stone Golemn
20555 : [3716,30,70], #Giant Fungus
}
Level_2 = {
20586 : [3717,20,50], #Timak Orc Warrior
20560 : [3718,20,50], #Trisalim Spider
20561 : [3718,20,50], #Trisalim Tarantula
20591 : [3719,30,100], #Valley Treant
20597 : [3719,30,100], #Valley Treant Elder
20675 : [3720,20,50], #Tairim
20660 : [3721,20,50], #Archer of Greed
27144 : [3722,1,100], #Tarlk Raider Athu
27145 : [3723,1,100], #Tarlk Raider Lanka
27146 : [3724,1,100], #Tarlk Raider Triska
27147 : [3725,1,100], #Tarlk Raider Motura
27148 : [3726,1,100], #Tarlk Raider Kalath
}
Grey_Advance = [
#level 1
[[3709],40],
[[3710],20],
[[3711,3712,3713],1],
[[3714],1],
[[3715],20],
[[3716],30],
#level 2
[[3717],20],
[[3718],20],
[[3719],30],
[[3720],20],
[[3721],20],
[[3722,3723,3724,3725,3726],1]
]
#Droplist Format- npcId : [itemRequired,itemGive,itemToGiveAmount,itemAmount,chance]
Tor_requests_1 = {
20578 : [3727,3769,'1',40,80], #Leto Lizardman Archer
20579 : [3727,3769,'1',40,83], #Leto Lizardman Soldier
20586 : [3728,3770,'1',50,89], #Timak Orc Warrior
20588 : [3728,3770,'1',50,100], #Timak Orc Overlord
20565 : [3729,3771,'1',50,100], #Enchanted Stone Golem
20556 : [3730,3772,'1',30,50], #Giant Monster Eye
20557 : [3731,3773,'1',40,80], #Dire Wyrm
20550 : [3732,3774,'Rnd.get(2) + 1',100,100], #Guardian Basilisk
20552 : [3733,3775,'1',50,100], #Fettered Soul
20553 : [3734,3776,'1',30,50], #Windsus
20554 : [3735,3777,'2',100,100],#Grandis
20631 : [3736,3778,'1',50,100], #Taik Orc Archer
20632 : [3736,3778,'1',50,93], #Taik Orc Warrior
20600 : [3737,3779,'1',30,50], #Karul Bugbear
20601 : [3738,3780,'1',40,62], #Tamlin Orc
20602 : [3738,3780,'1',40,80], #Tamlin Orc Archer
27157 : [3739,3781,'1',1,100], #Leto Chief Narak
20567 : [3740,3782,'1',50,50], #Enchanted Gargoyle
20269 : [3741,3783,'1',50,93], #Breka Orc Shaman
20271 : [3741,3783,'1',50,100], #Breka Orc Warrior
27156 : [3742,3784,'1',1,100], #Leto Shaman Ketz
27158 : [3743,3785,'1',1,100], #Timak Raider Kaikee
20603 : [3744,3786,'1',30,50], #Kronbe Spider
27160 : [3746,3788,'1',1,100], #Gok Magok
27164 : [3747,3789,'1',1,100] #Karul Chief Orooto
}
#Droplist Format- npcId : [itemRequired,itemGive,itemAmount,chance]
Tor_requests_2 = {
20560 : [3749,3791,40,66], #Trisalim Spider
20561 : [3749,3791,40,75], #Trisalim Tarantula
20633 : [3750,3792,50,53], #Taik Orc Shaman
20634 : [3750,3792,50,99], #Taik Orc Captain
20641 : [3751,3793,40,88], #Harit Lizardman Grunt
20642 : [3751,3793,40,88], #Harit Lizardman Archer
20643 : [3751,3793,40,91], #Harit Lizardman Warrior
20661 : [3752,3794,20,50], #Hatar Ratman Thief
20662 : [3752,3794,20,52], #Hatar Ratman Boss
20667 : [3753,3795,30,90], #Farcran
20589 : [3754,3796,40,49], #Fline
20590 : [3755,3797,40,51], #Liele
20592 : [3756,3798,40,80], #Satyr
20598 : [3756,3798,40,100], #Satyr Elder
20682 : [3758,3800,30,70], #Vanor Silenos Grunt
20683 : [3758,3800,30,85], #Vanor Silenos Scout
20684 : [3758,3800,30,90], #Vanor Silenos Warrior
20571 : [3759,3801,30,63], #Tarlk Bugbear Warrior
27159 : [3760,3802,1,100], #Timak Overlord Okun
27161 : [3761,3803,1,100], #Taik Overlord Kakran
20639 : [3762,3804,40,86], #Mirror
20664 : [3763,3805,20,77], #Deprive
20593 : [3764,3806,20,68], #Unicorn
20599 : [3764,3806,20,86], #Unicorn Elder
27163 : [3765,3807,1,100], #Vanor Elder Kerunos
20659 : [3766,3808,20,73], #Grave Wanderer
27162 : [3767,3809,1,100], #Hatar Chieftain Kubel
20676 : [3768,3810,10,64] #Judge of Marsh
}
#FilcherDropList Format- reqId : [item,amount,bonus]
Filcher = {
3752 : [3794,20,3],
3754 : [3796,40,5],
3755 : [3797,40,5],
3762 : [3804,40,5]
}
#SpawnList Format- npcId : [item1,item2,npcToSpawn]
Tor_requests_tospawn = {
20582 : [3739,3781,27157], #Leto Lizardman Overlord
20581 : [3742,3784,27156], #Leto Lizardman Shaman
20586 : [3743,3785,27158], #Timak Orc Warrior
20554 : [3746,3788,27160], #Grandis
#level 2
20588 : [3760,3802,27159], #Timak Orc Overlord
20634 : [3761,3803,27161], #Tiak Orc Captain
20686 : [3765,3807,27163], #Vanor Silenos Chieftan
20662 : [3767,3809,27162] #Hatar Ratman Boss
}
#RewardsList Format- requestId : [item,quantity,rewardAmount]
Tor_Rewards_1 = {
3727 : [3769,40,2090],
3728 : [3770,50,6340],
3729 : [3771,50,9480],
3730 : [3772,30,9110],
3731 : [3773,40,8690],
3732 : [3774,100,9480],
3733 : [3775,50,11280],
3734 : [3776,30,9640],
3735 : [3777,100,9180],
3736 : [3778,50,5160],
3737 : [3779,30,3140],
3738 : [3780,40,3160],
3739 : [3781,1,6370],
3740 : [3782,50,19080],
3741 : [3783,50,17730],
3742 : [3784,1,5790],
3743 : [3785,1,8560],
3744 : [3786,30,8320],
3746 : [3788,1,27540],
3747 : [3789,1,20560],
}
Tor_Rewards_2 = {
3749 : [3791,40,7250],
3750 : [3792,50,7160],
3751 : [3793,40,6580],
3752 : [3794,20,10100],
3753 : [3795,30,13000],
3754 : [3796,40,7660],
3755 : [3797,40,7660],
3756 : [3798,40,11260],
3758 : [3800,30,8810],
3759 : [3801,30,7350],
3760 : [3802,1,8760],
3761 : [3803,1,9380],
3762 : [3804,40,17820],
3763 : [3805,20,17540],
3764 : [3806,20,14160],
3765 : [3807,1,15960],
3766 : [3808,20,39100],
3767 : [3809,1,39550],
3768 : [3810,10,41200]
}
#Format item : adenaAmount
Cyb_Rewards = {
3699 : 3400,
3700 : 6800,
3701 : 13600,
3702 : 27200,
3703 : 54400,
3704 : 108800,
3705 : 217600,
3706 : 435200,
3707 : 870400
}
Tor_menu = [
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3727\">C: Obtain 40 charms of Kadesh</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3728\">C: Collect 50 Timak Jade Necklaces</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3729\">C: Gather 50 Enchanted Golem Shards</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3730\">C: Collect and bring back 30 pieces of Giant Monster Eye Meat</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3731\">C: Collect and bring back 40 Dire Wyrm Eggs</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3732\">C: Collect and bring back 100 guardian basilisk talons</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3733\">C: Collect and bring back 50 revenants chains</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3734\">C: Collect and bring back 30 Windsus Tusks</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3735\">C: Collect and bring back 100 Grandis Skulls</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3736\">C: Collect and bring back 50 Taik Obsidian Amulets</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3737\">C: Bring me 30 heads of karul bugbears</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3738\">C: Collect 40 Tamlin Ivory Charms</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3739\">B: Bring me the head of Elder Narak of the leto lizardmen</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3740\">B: Collect and bring back 50 Enchanted Gargoyle Horns</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3741\">B: Collect and bring back 50 Coiled Serpent Totems</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3742\">B: Bring me the totem of the Serpent Demon Kadesh</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3743\">B: Bring me the head of Kaikis</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3744\">B: Collect and bring back 30 Kronbe Venom Sacs</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3746\">A: Recover the precious stone tablet that was stolen from a Dwarven cargo wagon by grandis</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3747\">A: Recover the precious Book of Shunaiman</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3749\">C: Collect and bring back 40 Trisalim Venom Sacs</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3750\">C: Collect and bring back 50 Taik Orc Totems</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3751\">C: Collect and bring back 40 Harit Lizardman barbed necklaces</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3752\">C: Collect and bring back 20 coins of the old empire</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3753\">C: Kill 30 farcrans and bring back their skins</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3754\">C: Collect and bring back 40 Tempest Shards</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3755\">C: Collect and bring back 40 Tsunami Shards</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3756\">C: Collect and bring back 40 Satyr Manes</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3758\">C: Collect and bring back 30 Shillien Manes</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3759\">C: Collect and bring back 30 tarlk bugbear totems</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3760\">B: Bring me the head of Okun</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3761\">B: Bring me the head of Kakran</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3762\">B: Collect and bring back 40 narcissus soulstones</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3763\">B: Collect and bring back 20 Deprive Eyes</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3764\">B: Collect and bring back 20 horns of summon unicorn</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3765\">B: Bring me the golden mane of Kerunos</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3766\">A: Bring back 20 skulls of undead executed criminals</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3767\">A: Recover the stolen bust of the late King Travis</a><br>",
"<a action=\"bypass -h Quest 335_TheSongOfTheHunter 3768\">A: Recover 10 swords of Cadmus</a><br>"
]
def HasItems(st,check) :
count = 0
for list in Grey_Advance :
count2 = 0
for item in list[0] :
if not st.getQuestItemsCount(item) >= list[1] :
break
count2 += 1
if count2 == len(list[0]) :
count += 1
if count >= check :
return 1
return 0
def AutoChat(npc,text) :
chars = npc.getKnownList().getKnownPlayers().values().toArray()
if chars != None:
for pc in chars :
sm = CreatureSay(npc.getObjectId(), 0, npc.getName(), text)
pc.sendPacket(sm)
return
def HasRequestCompleted(st,level) :
rewards = Tor_Rewards_1
if level == 2 :
rewards = Tor_Rewards_2
for req in rewards.keys() :
if st.getQuestItemsCount(req) :
if st.getQuestItemsCount(rewards[req][0]) >= rewards[req][1] :
return req
return 0
class Quest (JQuest) :
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
self.questItemIds = range(3692,3811) + [3471]
def onAdvEvent (self,event,npc,player):
st = player.getQuestState(qn)
if not st: return
htmltext = event
if event == "30744-03.htm" :
st.setState(State.STARTED)
st.playSound("ItemSound.quest_accept")
st.giveItems(Test_Instructions_1,1)
st.set("cond","1")
#set Memo = 0
elif event == "30744-32.htm" :
st.playSound("ItemSound.quest_finish")
if st.getQuestItemsCount(Leaf_Pin) >= 20 :
htmltext = "30744-33.htm"
st.giveItems(57,20000)
st.exitQuest(1)
elif event == "30744-19.htm" :
if not HasItems(st,1) :
st.giveItems(Test_Instructions_2,1)
htmltext = "30744-18.htm"
elif event == "30745-03.htm" :
if st.getQuestItemsCount(Test_Instructions_2) :
htmltext = "30745-04.htm"
elif event == "Tor_list_1" :
if not st.getInt("hasTask") :
htmltext = "<html><body>Guild Member Tor:<br>"
pins = st.getQuestItemsCount(Leaf_Pin)
reply_0 = Rnd.get(12)
reply_1 = Rnd.get(12)
reply_2 = Rnd.get(12)
reply_3 = Rnd.get(12)
reply_4 = Rnd.get(12)
if Rnd.get(100) < 20 :
if pins < 4 and pins :
reply_0 = Rnd.get(6) + 12
reply_2 = Rnd.get(6)
reply_3 = Rnd.get(6) + 6
elif pins >= 4 :
reply_0 = Rnd.get(6) + 6
if not Rnd.get(20) :
reply_1 = Rnd.get(2) + 18
reply_2 = Rnd.get(6)
reply_3 = Rnd.get(6) + 6
elif pins >= 4 :
if not Rnd.get(20) :
reply_1 = Rnd.get(2) + 18
reply_2 = Rnd.get(6)
reply_3 = Rnd.get(6) + 6
htmltext += Tor_menu[reply_0] + Tor_menu[reply_1] + Tor_menu[reply_2] + Tor_menu[reply_3] + Tor_menu[reply_4]
htmltext += "</body></html>"
elif event == "Tor_list_2" :
if not st.getInt("hasTask") :
htmltext = "<html><body>Guild Member Tor:<br>"
pins = st.getQuestItemsCount(Leaf_Pin)
reply_0 = Rnd.get(10)
reply_1 = Rnd.get(10)
reply_2 = Rnd.get(5)
reply_3 = Rnd.get(5) + 5
reply_4 = Rnd.get(10)
if Rnd.get(100) < 20 :
if pins < 4 and pins:
reply_0 = Rnd.get(6) + 10
elif pins >= 4 :
reply_0 = Rnd.get(6) + 10
if not Rnd.get(20):
reply_1 = Rnd.get(3) + 16
elif pins >= 4 :
if not Rnd.get(20) :
reply_1 = Rnd.get(3) + 16
htmltext += Tor_menu[reply_0 + 20] + Tor_menu[reply_1 + 20] + Tor_menu[reply_2 + 20] + Tor_menu[reply_3 + 20] + Tor_menu[reply_4 + 20]
htmltext += "</body></html>"
elif event == "30745-10.htm" :
st.takeItems(Leaf_Pin,1)
for item in range(3727,3811) :
st.takeItems(item,-1)
st.set("hasTask","0")
elif event == "30746-03.htm" :
if not st.getQuestItemsCount(Cyb_Req) :
st.giveItems(Cyb_Req,1)
if not st.getQuestItemsCount(3471) :
st.giveItems(3471,1)
if not st.getQuestItemsCount(3698) :
st.giveItems(3698,1)
st.takeItems(6708,-1)
elif event == "30746-08.htm" :
for item in Cyb_Rewards.keys() :
if st.getQuestItemsCount(item) :
st.takeItems(item,-1)
st.giveItems(57,Cyb_Rewards[item])
break
elif event == "30746-12.htm" :
st.takeItems(3698,-1)
st.takeItems(3697,-1)
st.takeItems(3471,-1)
elif event.isdigit() :
event = int(event)
st.giveItems(event,1)
st.set("hasTask","1")
event = event - 3712
htmltext = "30745-" + str(event) + ".htm"
return htmltext
def onTalk (self,npc,player):
htmltext = "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>"
st = player.getQuestState(qn)
if not st : return htmltext
npcId = npc.getNpcId()
cond = st.getInt("cond")
id = st.getState()
level = player.getLevel()
bracelet_1 = st.getQuestItemsCount(License_1)
bracelet_2 = st.getQuestItemsCount(License_2)
if npcId == Grey :
if id == State.CREATED :
if level >= 35 :
htmltext = "02"
else :
htmltext = "01"
elif cond == 1 :
if HasItems(st,3) :
htmltext = "12"
st.set("cond","2")
for item in range(3709,3717) :
st.takeItems(item,-1)
st.takeItems(Test_Instructions_1,-1)
st.giveItems(License_1,1)
else :
htmltext = "11"
elif cond == 2 :
instructions = st.getQuestItemsCount(Test_Instructions_2)
if level < 45 and bracelet_1 :
htmltext = "13"
elif level >= 45 and bracelet_1 and not instructions :
htmltext = "16"
elif instructions :
if HasItems(st,3) :
htmltext = "28"
st.set("cond","3")
for item in range(3718,3727) :
st.takeItems(item,-1)
st.takeItems(Test_Instructions_2,-1)
st.takeItems(License_1,-1)
st.giveItems(License_2,1)
else :
htmltext = "27"
elif cond == 3 :
htmltext = "29"
elif npcId == Tor :
if not bracelet_1 and not bracelet_2 :
htmltext = "01"
elif bracelet_1 :
req = HasRequestCompleted(st,1)
if not st.getInt("hasTask") :
if level >= 45 :
if st.getQuestItemsCount(Test_Instructions_2) :
htmltext = "04"
else :
htmltext = "05"
else :
htmltext = "02"
elif req :
htmltext = "12"
item,quantity,reward = Tor_Rewards_1[req]
st.giveItems(Leaf_Pin,1)
st.giveItems(57,reward)
st.playSound("ItemSound.quest_middle")
st.set("hasTask","0")
st.takeItems(req,-1)
st.takeItems(item,-1)
else :
htmltext = "08"
elif bracelet_2 :
req = HasRequestCompleted(st,2)
if not st.getInt("hasTask") :
htmltext = "06"
elif req :
htmltext = "13"
item,quantity,reward = Tor_Rewards_2[req]
st.giveItems(Leaf_Pin,1)
st.giveItems(57,reward)
st.playSound("ItemSound.quest_middle")
st.set("hasTask","0")
st.takeItems(req,-1)
st.takeItems(item,-1)
else :
htmltext = "08"
elif npcId == Cybellin :
if not bracelet_1 and not bracelet_2 :
htmltext = "01"
elif bracelet_1 or bracelet_2 :
if not st.getQuestItemsCount(Cyb_Req) :
htmltext = "02"
elif st.getQuestItemsCount(3698) :
htmltext = "05"
elif st.getQuestItemsCount(3707) :
htmltext = "07"
st.takeItems(3707,-1)
st.giveItems(57,Cyb_Rewards[3707])
elif st.getQuestItemsCount(3708) :
htmltext = "11"
st.takeItems(3708,-1)
elif st.getQuestItemsCount(3699) or st.getQuestItemsCount(3700) or st.getQuestItemsCount(3701) or st.getQuestItemsCount(3702) or \
st.getQuestItemsCount(3703) or st.getQuestItemsCount(3704) or st.getQuestItemsCount(3705) or st.getQuestItemsCount(3706) :
htmltext = "06"
else :
htmltext = "10"
if htmltext.isdigit() :
htmltext = str(npcId) + "-" + htmltext + ".htm"
return htmltext
def onKill(self,npc,player,isPet):
st = player.getQuestState(qn)
if not st : return
npcId = npc.getNpcId()
cond = st.getInt("cond")
rand = Rnd.get(100)
instructions_1 = st.getQuestItemsCount(Test_Instructions_1)
instructions_2 = st.getQuestItemsCount(Test_Instructions_2)
if cond == 1 and instructions_1 :
if npcId in Level_1.keys() :
item,amount,chance = Level_1[npcId]
if rand < chance and st.getQuestItemsCount(item) < amount :
st.giveItems(item,1)
if st.getQuestItemsCount(item) >= amount :
st.playSound("ItemSound.quest_middle")
else :
st.playSound("ItemSound.quest_itemget")
elif npcId == Breka_Orc_Warrior and rand < 10 :
if st.getQuestItemsCount(3711) == 0 :
st.addSpawn(27140,300000)
elif st.getQuestItemsCount(3712) == 0 :
st.addSpawn(27141,300000)
elif st.getQuestItemsCount(3713) == 0 :
st.addSpawn(27142,300000)
elif npcId == Windsus and not st.getQuestItemsCount(3714) and rand < 10 :
st.addSpawn(27143,300000)
elif cond == 2 :
if instructions_2 :
if npcId in Level_2.keys() :
item,amount,chance = Level_2[npcId]
if rand < chance and st.getQuestItemsCount(item) < amount :
st.giveItems(item,1)
if st.getQuestItemsCount(item) >= amount :
st.playSound("ItemSound.quest_middle")
else :
st.playSound("ItemSound.quest_itemget")
elif npcId == Tarlk_Bugbear_Warrior and rand < 10 :
if st.getQuestItemsCount(3722) == 0 :
st.addSpawn(27144,300000)
elif st.getQuestItemsCount(3723) == 0 :
st.addSpawn(27145,300000)
elif st.getQuestItemsCount(3724) == 0 :
st.addSpawn(27146,300000)
elif st.getQuestItemsCount(3725) == 0 :
st.addSpawn(27147,300000)
elif st.getQuestItemsCount(3726) == 0 :
st.addSpawn(27148,300000)
elif npcId in Tor_requests_1.keys() :
req,give,giveAmount,amount,chance = Tor_requests_1[npcId]
if rand < chance and st.getQuestItemsCount(req) and st.getQuestItemsCount(give) < amount :
st.giveItems(give,eval(giveAmount))
if st.getQuestItemsCount(give) >= amount :
st.playSound("ItemSound.quest_middle")
else :
st.playSound("ItemSound.quest_itemget")
if npcId in [27160,27164] and Rnd.get(2) :
st.addSpawn(27150,300000)
st.addSpawn(27150,300000)
AutoChat(npc,"We will destroy the legacy of the ancient empire!")
elif cond == 3 :
if npcId in Tor_requests_2.keys() :
req,give,amount,chance = Tor_requests_2[npcId]
if st.getQuestItemsCount(req) and st.getQuestItemsCount(give) < amount :
if rand < chance :
st.giveItems(give,1)
if st.getQuestItemsCount(give) >= amount :
st.playSound("ItemSound.quest_middle")
else :
st.playSound("ItemSound.quest_itemget")
if npcId == 27162 and Rnd.get(2) :
st.addSpawn(27150,300000)
st.addSpawn(27150,300000)
AutoChat(npc,"We will destroy the legacy of the ancient empire!")
if npcId in [20661,20662,20589,20590,20639] and not Rnd.get(20) :
st.addSpawn(Gremlin_Filcher,300000)
AutoChat(npc,"Get out! The jewels are mine!")
elif npcId == Gremlin_Filcher :
req = 0
for item in Filcher.keys() :
if st.getQuestItemsCount(item) :
req = item
break
if req :
item,amount,bonus = Filcher[req]
if st.getQuestItemsCount(item) < amount :
st.giveItems(item,bonus)
if st.getQuestItemsCount(item) >= amount :
st.playSound("ItemSound.quest_middle")
else :
st.playSound("ItemSound.quest_itemget")
AutoChat(npc,"What!")
if npcId in Tor_requests_tospawn.keys() and rand < 10:
it1,it2,id = Tor_requests_tospawn[npcId]
if st.getQuestItemsCount(it1) and not st.getQuestItemsCount(it2) :
st.addSpawn(id,300000)
if npcId in Lizardmen and player.getActiveWeaponItem() and player.getActiveWeaponItem().getItemId() == Cyb_Dagger and st.getQuestItemsCount(Cyb_Req) and not st.getQuestItemsCount(3708):
if Rnd.get(2) :
if cond == 2 or cond == 3 :
for item in range(3698,3707) :
if st.getQuestItemsCount(item) :
st.giveItems(item+1,1)
st.takeItems(item,-1)
if item >= 3703 :
st.playSound("ItemSound.quest_jackpot")
break
else :
for item in range(3698,3707) :
st.takeItems(item,-1)
st.giveItems(3708,1)
return
QUEST = Quest(335,qn,"The Song of the Hunter")
QUEST.addStartNpc(Grey)
QUEST.addTalkId(Grey)
QUEST.addTalkId(Tor)
QUEST.addTalkId(Cybellin)
npcs = []
for npc in Level_1.keys() + Level_2.keys() + Tor_requests_1.keys() + Tor_requests_2.keys() + Tor_requests_tospawn.keys() + Mobs :
if npc not in npcs :
QUEST.addKillId(npc)
npcs.append(npc)
del npcs

View File

@ -1,8 +0,0 @@
<html><body>Grocer Pano:<br>
I operate this grocery store and my hobby has reached this point... Wait here a moment...<br>
Ah, right. Here it is.<br>
OK, and here are the coins that I have... I am collecting<font color="LEVEL"> blood succubus, blood basilisk, silver dryad, silver undine, gold giant and gold wyrms</font>. Would you like to choose from things that I have?<br>
<a action="bypass -h Quest 336_CoinOfMagic 30078-02.htm">Blood dragon</a><br>
<a action="bypass -h Quest 336_CoinOfMagic 30078-03.htm">Silver dragon</a><br>
<a action="bypass -h Quest 336_CoinOfMagic 30078-04.htm">Gold dragon</a><br>
<a action="bypass -h Quest 336_CoinOfMagic 30078-05.htm">Beleth's silver dragon</a></body></html>

View File

@ -1,7 +0,0 @@
<html><body>Grocer Pano:<br>
Ah, you mean the blood dragon. Then, how shall we do the trade? I can trade 1 blood dragon for 5 blood basilisks and 5 blood succubus or I can exchange it for you at a slightly better rate through a game that is popular with the collectors club.<br>
<a action="bypass -h Quest 336_CoinOfMagic Li_30078_3477">Trade at set ratio.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30078_3477_2">Play game. [Guess correctly in two tries - 3 blood basilisks]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30078_3477_3">Play game. [Guess correctly in three tries - 7 blood basilisks]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30078_3477_4">Play game. [Guess correctly in four tries - 9 blood basilisks]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic 30078-53.htm">Play game.</a></body></html>

View File

@ -1,7 +0,0 @@
<html><body>Grocer Pano:<br>
Ah, you mean the silver dragon. Then, how shall we do the trade? I can trade 1 silver dragon for 5 silver dryad and 5 silver undines or I can exchange it for you at a slightly better rate through a game that is popular with the collectors club.<br>
<a action="bypass -h Quest 336_CoinOfMagic Li_30078_3493">Exchange at set ratio.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30078_3493_2">Play game. [Guess correctly in two tries - 3 silver dryads]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30078_3493_3">Play game. [Guess correctly in three tries - 7 silver dryads]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30078_3493_4">Play game. [Guess correctly in four tries - 9 silver dryads]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic 30078-53.htm">Play game.</a></body></html>

View File

@ -1,7 +0,0 @@
<html><body>Grocer Pano:<br>
Ah, you mean the gold dragon. Then, how shall we do the trade? I can trade one gold dragon for 5 gold wyrms and 5 gold giants or I can exchange it for you at a slightly better rate through a game that is popular with the collectors club.<br>
<a action="bypass -h Quest 336_CoinOfMagic Li_30078_3481">Exchange at set ratio.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30078_3481_2">Play game. [Guess correctly in two tries - 3 gold wyrms]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30078_3481_3">Play game. [Guess correctly in three tries - 7 gold wyrms]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30078_3481_4">Play game. [Guess correctly in four tries - 9 gold wyrms]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic 30078-53.htm">Listen to game explanation.</a></body></html>

View File

@ -1,7 +0,0 @@
<html><body>Grocer Pano:<br>
Ah, you mean the beleth's silver dragon. Then, how shall we do the trade? I can trade 1 beleth's silver dragon for 10 silver dryads and 10 silver undines or I can exchange it for you at a slightly better rate through a game that is popular with the collectors club.<br>
<a action="bypass -h Quest 336_CoinOfMagic Li_30078_3496">Trade at set ratio.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30078_3496_2">Play game. [Guess correctly in two tries - 3 silver fairies, 3 silver dryads]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30078_3496_3">Play game. [Guess correctly in three tries - 7 silver fairies, 7 silver dryads]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30078_3496_4">Play game. [Guess correctly in four tries - 9 silver fairies, 9 silver dryads]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic 30078-53.htm">Play game.</a></body></html>

View File

@ -1,5 +0,0 @@
<html><body>Grocer Pano:<br>
OK, that's good. How many do you want to exchange?<br>
<a action="bypass -h Quest 336_CoinOfMagic Ex_30078_%itemid%_1">Exchange 1.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ex_30078_%itemid%_5">Exchange 5.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ex_30078_%itemid%_10">Exchange 10.</a></body></html>

View File

@ -1,2 +0,0 @@
<html><body>Grocer Pano:<br>
OK, take this. It's the coin you requested.</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Grocer Pano:<br>
I'll take a look... One, two... Huh? There aren't enough coins.</body></html>

View File

@ -1,6 +0,0 @@
<html><body>Grocer Pano:<br>
I like this game. And this is my favorite moment of the game. OK, OK, OK...<br>
What's the color of the first coin?<br>
<a action="bypass -h Quest 336_CoinOfMagic _13">Gold</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _14">Silver</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _15">Blood</a></body></html>

View File

@ -1,5 +0,0 @@
<html><body>Grocer Pano:<br>
What's the color of the second coin?<br>
<a action="bypass -h Quest 336_CoinOfMagic _16">Gold</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _17">Silver</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _18">Blood</a></body></html>

View File

@ -1,5 +0,0 @@
<html><body>Grocer Pano:<br>
What's the color of the third coin?<br>
<a action="bypass -h Quest 336_CoinOfMagic _19">Gold</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _20">Silver</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _21">Blood</a></body></html>

View File

@ -1,2 +0,0 @@
<html><body>Grocer Pano:<br>
Oh, no. What happened? What special method did you use? I absolutely didn't think you'd be able to get it right... Darn!</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Grocer Pano:<br>
I win! Oh, that's too bad for you, though. The answer was %first% - %second% - %third%.</body></html>

View File

@ -1,6 +0,0 @@
<html><body>Grocer Pano:<br>
OK, one! You got one right. Then, take your next chance!<br>
What's the color of the first coin?<br>
<a action="bypass -h Quest 336_CoinOfMagic _13">Gold</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _14">Silver</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _15">Blood</a></body></html>

View File

@ -1,6 +0,0 @@
<html><body>Grocer Pano:<br>
OK, two! You got two right. Then, take your next chance!<br>
What's the color of the first coin?<br>
<a action="bypass -h Quest 336_CoinOfMagic _13">Gold</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _14">Silver</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _15">Blood</a></body></html>

View File

@ -1,6 +0,0 @@
<html><body>Grocer Pano:<br>
Oh, my! They're all wrong! OK, take a deep breath and try again!<br>
What's the color of the first coin?<br>
<a action="bypass -h Quest 336_CoinOfMagic _13">Gold</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _14">Silver</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _15">Blood</a></body></html>

View File

@ -1,3 +0,0 @@
<html><body>Grocer Pano:<br>
You already know, right? You've got to guess the sequence of the coins that I arrange within the number of chances that we determine in advance. Hmm... I don't need to explain in any more detail, do I? If you want to know more, please go ask a level 3 member...<br>
<a action="bypass -h Quest 336_CoinOfMagic 30078-02.htm">Go back to the beginning.</a></body></html>

View File

@ -1,8 +0,0 @@
<html><body>Warehouse Keeper Collob:<br>
Please wait a moment. I definitely stored it here somewhere...<br>
Ah, right. Here it is.<br>
OK, and here are the coins that I have... I want<font color="LEVEL"> blood succubus, blood basilisk, silver dryad, silver undine, gold giant and gold wyrms</font>. Would you like to choose?<br>
<a action="bypass -h Quest 336_CoinOfMagic 30092-02.htm">Blood dragon.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic 30092-03.htm">Silver dragon.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic 30092-04.htm">Gold dragon.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic 30092-05.htm">Beleth's gold dragon.</a></body></html>

View File

@ -1,7 +0,0 @@
<html><body>Warehouse Keeper Collob:<br>
Ah, the blood dragon. How shall we do the trade? I can trade one blood dragon for 5 blood succubuses and 5 blood basilisks or I can exchange it for you at a slightly better rate through a game that you know well.<br>
<a action="bypass -h Quest 336_CoinOfMagic Li_30092_3477">Exchange at set ratio.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30092_3477_2">Play game. [Guess correctly in two tries - 3 blood succubus]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30092_3477_3">Play game. [Guess correctly in three tries - 7 blood succubus]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30092_3477_4">Play game. [Guess correctly in four tries - 9 blood succubus]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic 30092-53.htm">Listen to game explanation.</a></body></html>

View File

@ -1,7 +0,0 @@
<html><body>Warehouse Keeper Collob:<br>
Ah, the silver dragon. How shall we do the trade? I can trade one silver dragon for 5 silver dryad and 5 silver undines or I can exchange it for you at a slightly better rate through a game that you know well.<br>
<a action="bypass -h Quest 336_CoinOfMagic Li_30092_3493">Exchange at set ratio.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30092_3493_2">Play game. [Guess correctly in two tries - 3 silver undines]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30092_3493_3">Play game. [Guess correctly in three tries - 7 silver undines]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30092_3493_4">Play game. [Guess correctly in four tries - 9 silver undines]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic 30092-53.htm">Listen to game explanation.</a></body></html>

View File

@ -1,7 +0,0 @@
<html><body>Warehouse Keeper Collob:<br>
Ah, the gold dragon. How shall we do the trade? I can trade one gold dragon for 5 gold wyrms and 5 gold giants or I can exchange it for you at a slightly better rate through a game that you know well.<br>
<a action="bypass -h Quest 336_CoinOfMagic Li_30092_3481">Exchange at set ratio.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30092_3481_2">Play game. [Guess correctly in two tries - 3 gold wyrms]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30092_3481_3">Play game. [Guess correctly in three tries - 7 gold wyrms]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30092_3481_4">Play game. [Guess correctly in four tries - 9 gold wyrms]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic 30092-53.htm">Listen to game explanation.</a></body></html>

View File

@ -1,7 +0,0 @@
<html><body>Warehouse Keeper Collob:<br>
Ah, the beleth's gold dragon. How shall we do the trade? I can trade one beleth's gold dragon for 10 gold wyrms and 10 gold giants or I can exchange it for you at a slightly better rate through a game that you know well.<br>
<a action="bypass -h Quest 336_CoinOfMagic Li_30092_3487">Exchange at set ratio.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30092_3487_2">Play game. [Guess correctly in two tries - 3 gold wyrm, 3 gold giants]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30092_3487_3">Play game. [Guess correctly in three tries - 7 gold wyrm, 7 gold giants]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ga_30092_3487_4">Play game. [Guess correctly in four tries - 9 gold wyrm, 9 gold giants]</a><br>
<a action="bypass -h Quest 336_CoinOfMagic 30092-53.htm">Listen to game explanation.</a></body></html>

View File

@ -1,5 +0,0 @@
<html><body>Warehouse Keeper Collob:<br>
Yes. How many do you want to exchange?<br>
<a action="bypass -h Quest 336_CoinOfMagic Ex_30092_%itemid%_1">Exchange 1.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ex_30092_%itemid%_5">Exchange 5.</a><br>
<a action="bypass -h Quest 336_CoinOfMagic Ex_30092_%itemid%_10">Exchange 10.</a></body></html>

View File

@ -1,2 +0,0 @@
<html><body>Warehouse Keeper Collob:<br>
I'll take a look... One, two... Um, that's right. Here it is. Take it.</body></html>

View File

@ -1,2 +0,0 @@
<html><body>Warehouse Keeper Collob:<br>
I'll take a look... One, two... Huh? There aren't enough coins.</body></html>

View File

@ -1,6 +0,0 @@
<html><body>Warehouse Keeper Collob:<br>
Ok, ok... Let's start.<br>
What the color of the first coin?<br>
<a action="bypass -h Quest 336_CoinOfMagic _13">Gold</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _14">Silver</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _14">Blood</a></body></html>

View File

@ -1,5 +0,0 @@
<html><body>Warehouse Keeper Collob:<br>
What's the color of the second coin?<br>
<a action="bypass -h Quest 336_CoinOfMagic _16">Gold</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _17">Silver</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _18">Blood</a></body></html>

View File

@ -1,5 +0,0 @@
<html><body>Warehouse Keeper Collob:<br>
What's the color of the third coin?<br>
<a action="bypass -h Quest 336_CoinOfMagic _19">Gold</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _20">Silver</a><br>
<a action="bypass -h Quest 336_CoinOfMagic _21">Blood</a></body></html>

View File

@ -1,2 +0,0 @@
<html><body>Warehouse Keeper Collob:<br>
Hey! That's right. Oh, oh. I lost money today.</body></html>

Some files were not shown because too many files have changed in this diff Show More