🎉
隐藏内容已自动解锁 (满足: 时间满90天)
importPackage(net.貌似会被和谐自己打上去.odinms.tools); l%?4L/J)#
importPackage(net.貌似会被和谐自己打上去.odinms.server.life); ,w9|?%S
importPackage(java.awt); TXf60{:f
G%zJ4W%
var status; \
i}-Y[Dg
var curMap; Dfc%
jWbA
var playerStatus; *
{~`Lw)y
var chatState; ~t$ng l$
var questions = Array("首先给你出一个问题!请仔细听好:作为一名战士,他在1转的时候需要达到的等级是多少,那么请交给我同样数量的通行证。", _IV!9 JL
"首先给你出一个问题! 请仔细听好:作为一名战士,他在1转的时候需要力量的能力值最小是多少点,那么请交给我同样数量的通行证。", M&gi$Qs[E
"首先给你出一个问题!请仔细听好: 作为一名法师,他在1转的时候需要智力的能力值最小是多少点,那么请交给我同样数量的通行证。", kg7bZ
"首先给你出一个问题!请仔细听好: 作为一名弓箭手,他在1转的时候需要敏捷的能力值最小是多少点,那么请交给我同样数量的通行证。", }QQ 7jE
"首先给你出一个问题!请仔细听好: 作为一名飞侠,他在1转的时候需要敏捷的能力值最小是多少点,那么请交给我同样数量的通行证。", 19pFNg'kA
"首先给你出一个问题!请仔细听好: 所有职业在2转的时候需要达到的等级是多少,那么请交给我同样数量的通行证。"); vifw
FPe
var qanswers = Array(10, 35, 20, 25, 25, 30);
s_+.xIZ
var party; F+ RE
var preamble; P|p
X
F~
var stage2rects = Array(Rectangle(-755,-132,4,218),Rectangle(-721,-340,4,166), kUT^o
Rectangle(-586,-326,4,150),Rectangle(-483,-181,4,222)); Qe4 % A
var stage2combos = Array(Array(0,1,1,1),Array(1,0,1,1),Array(1,1,0,1),Array(1,1,1,0));
Hi/[
var stage3rects = Array(Rectangle(608,-180,140,50),Rectangle(791,-117,140,45), >LN*3&W
Rectangle(958,-180,140,50),Rectangle(876,-238,140,45), rl$"~/ oz
Rectangle(702,-238,140,45)); #sg
dMrVQ
var stage3combos = Array(Array(0,0,1,1,1),Array(0,1,0,1,1),Array(0,1,1,0,1), @$;
8k }
Array(0,1,1,1,0),Array(1,0,0,1,1),Array(1,0,1,0,1), SXO.|"M
Array(1,0,1,1,0),Array(1,1,0,0,1),Array(1,1,0,1,0), /` nkz
Array(1,1,1,0,0)); :xbj&
l
var stage4rects = Array(Rectangle(910,-236,35,5),Rectangle(877,-184,35,5), ' u;Zw%O(J
Rectangle(946,-184,35,5),Rectangle(845,-132,35,5), 5ug|crX
Rectangle(910,-132,35,5),Rectangle(981,-132,35,5)); v<<ATs%w
var stage4combos = Array(Array(0,0,0,1,1,1),Array(0,0,1,0,1,1),Array(0,0,1,1,0,1), 'O.f}m SS
Array(0,0,1,1,1,0),Array(0,1,0,0,1,1),Array(0,1,0,1,0,1), ""|;5kJS4
Array(0,1,0,1,1,0),Array(0,1,1,0,0,1),Array(0,1,1,0,1,0), Iu5 9W>
Array(0,1,1,1,0,0),Array(1,0,0,0,1,1),Array(1,0,0,1,0,1), rwio>4=
Array(1,0,0,1,1,0),Array(1,0,1,0,0,1),Array(1,0,1,0,1,0), ~3Zz.!F
Array(1,0,1,1,0,0),Array(1,1,0,0,0,1),Array(1,1,0,0,1,0), _'X
Array(1,1,0,1,0,0),Array(1,1,1,0,0,0)); o~L(;A]yN
var eye = 9300002; EA9
.?F
var necki = 9300000; .}Ys+d1b9c
var slime = 9300003; "M\rO!f:
var monsterIds = Array(eye, eye, eye, B*Om\I
necki, necki, necki, necki, necki, necki, ;cPPx`0$9
slime); X Z3fWcw[
var prizeIdScroll = Array(2040502,2040505,2040514,2040517, // overall BIew\N
2040802, 2040805, // glove )UTjP/\gN
2040002, 2040402, 2040602, 2040902, // armor def (top/bottom/shield/hat) W\5 -Yg(@
2044502, 2044702, 2044602, 2043302, // weapon atk u?g&(h
2043102, 2043202, 2043002, 2044402, qbCU&G|
)
2044302, 2044102, 2044202, 2044002);
4~ L1~Gk
var prizeIdUse = Array( 2000001, 2000002, 2000003, 2000006, // orange white blue manalixir pots 2mMi=pv9
2000004, 2000005, 2001000, 2001001, // elix/p.elix, watermelon/sundae FKL@,>!<e
2002006, 2002007, 2002008, 2002010); // warrior/sniper/magic/speed pills 3hje
var prizeQtyUse = Array(100, 75, 100, 45, N`3^:EJL8
20, 10, 35, 30, cR,'aX
10, 10, 10, 10); [u^ fy<jdp
var prizeIdEquip = Array(1032000, 1032009, 1032004, 1032005, // 20-25 earrings o2hZ=+w>
1032006, 1032007, 1032010, // 30 earrings j8PeO&n>
1032002, 1032008, // 35 earrings Doq}U
Wp
1002026, 1002089, 1002090); // bamboo hats JRZp'Ln
var prizeIdEtc = Array( 4010000, 4010001, 4010002, 4010003, // Mineral ores +{m+aHk
4010004, 4010005, 4010006, // Mineral ores + gold xO<%lq`
4020000, 4020001, 4020002, 4020003, // Jewel ores ur=:Ha
4020004, 4020005, 4020006, // Jewel ores u2`
j\
Vu
4020007, 4020007, 4003000); // Diamond/BC/screws ^q0`eS
var prizeQtyEtc = Array(15, 15, 15, 15, }aI>dHL
15, 15, 8, k'PvQl"I
15, 15, 15, 15, }[drR(]`dO
15, 15, 15, 6K<o0=,jm2
8, 5, 20); UIg?3J}R
%6Vb1?x
jt: *Y
function start() { v0=v1G*rvJ
status = -1; ;T8(byH ?
mapId = cm.getChar().getMapId(); nm]lPK U+Y
if (mapId == 103000800) z 0zB&}
curMap = 1; 11Qi
_T\
else if (mapId == 103000801) 7 b(
curMap = 2; v
}D0t]
else if (mapId == 103000802) :F#^Q%-IS
curMap = 3; ~x+'-2A46
else if (mapId == 103000803) v^F00@2I
curMap = 4; J4U_utp
else if (mapId == 103000804) ;*9<lUvu
curMap = 5; fo`R=
|L[
playerStatus = cm.isLeader(); a~Ld
cUYs
preamble = null; E?bv<L,"
action(1, 0, 0); /me ]sOkn
} kumo%TXB&
e>.^RtDF
function action(mode, type, selection) { #Ufb
if (mode == -1) { ja/wI'J<
cm.dispose(); }bdoJ5
} else { 8faT@J'e;
if (mode == 0 && status == 0) {
NXDkGO/*
cm.dispose(); @Bjp7v:w
return; }|N88PN
} uudd'L
if (mode == 1) |%fNLUJ)
status++; yGrnzB6|
else Li0+%ijM
status--; ["
Tro;K#
if (curMap == 1) { // First Stage. \/gf_R_GN
if (playerStatus) { // party leader XP:fL
NpQ
if (status == 0) { 05\0g9
var eim = cm.getChar().getEventInstance(); j6$@vA)
party = eim.getPlayers(); B
YHyqpP9
preamble = eim.getProperty("leader1stpreamble"); *:"6
0fkoU
if (preamble == null) { JKO*bbj
cm.sendNext("Hello,欢迎您的第一阶段。环顾四周,你会看到很多鳄鱼游荡。当你打败他们,他们就会咳嗽了#bpasses#k队长应该对我说话,收集了相同数量的#bpasses#k为回答这个问题我给他们。\r\n如果你收集的数额#bpasses#k,我给了#bpass#k该成员。当所有的队员聚集了#bpasses#k和给他们的队长,队长将交出#bpasses#k对我来说,清理阶段的进程。更快你照顾的阶段,更多的阶段就可以挑战。因此,我建议你照顾快速和迅速。那么,最好的你好运。"); f\Hw Y)^>
eim.setProperty("leader1stpreamble","done"); /vi Ic
%=
cm.dispose(); ]@Z
nP,8
} $cwmfF2C
else { // check how many they have compared to number of party members OI78wG
// check for stage completed 4,h)<(d{
var complete = eim.getProperty(curMap.toString() + "stageclear"); \*qradgx$
if (complete != null) { @,;h!vB*=
cm.sendNext("请赶紧去下一关,们已经打开了"); S')DAx
cm.dispose(); O@W/s!&lFa
} A:
2CP&*
else { 0R`>F">
var numpasses = party.size()-1; %zRuIDmv
var passes = cm.haveItem(4001008,numpasses); d#$Pf=}
var strpasses = "#b" + numpasses.toString() + " passes#k"; Ruq>+ }4
if (!passes) { e{Vn{.i,5
cm.sendNext("对不起,你的通行证没有达到指定的数目。你需要给指定的通行证数目给我;应当的队员数目减去你的队长, " + strpasses + ",以明确的阶段。告诉您的队员解决问题,收集了通行证,并让他们给你."); S~ S>62
cm.dispose(); (: kn)
} m .(\u?J
else { RW1+y/#%P
cm.sendNext("你们已经通过 " + strpasses + "! 恭喜大家完成本阶段的挑战! 我将打开传送门,带大家进入到下一关的挑战.因为本次任务有时间限制,请大家抓紧时间,祝大家好运!"); L:mE)Xq2
clear(1,eim,cm); ?m7i7Dz
cm.givePartyExp(100, party); % WXl*
cm.gainItem(4001008,-numpasses); XeY[
;}
9
cm.dispose(); )Y'g;
// TODO: make the shiny thing flash 9) $[W
} 0aI@m
} x
_d
} 92.Rjz;=9?
} 9(}d7y
/*debug G %\/[
B
cm.sendNext("你好,这仅仅只是一个测试."); I|K!hQ"m
cm.dispose();*/ ycki0&n3
} nN@
Ch
else { // non leader a}|<*!4zUQ
var eim = cm.getChar().getEventInstance(); C.LAr~P
pstring = "member1stpreamble" + cm.getChar().getId().toString(); JC~4B3!
preamble = eim.getProperty(pstring); /-m)
if (status == 0 && preamble == null) { o"L8n(\
var qstring = "member1st" + cm.getChar().getId().toString(); bi+g=
cS
var question = eim.getProperty(qstring); %[9ty`UE
if (question == null) { tq@)J_7|
// Select a random question to ask the player. ad47 42
var questionNum = Math.floor(Math.random() * questions.length); /YU8L
eim.setProperty(qstring, questionNum.toString()); "Ms{c=XPK
} x?u@
j7[
cm.sendNext("在这里,你需要收集#bcoupons#k击败同样数目的Ligators作为回答提问个别。"); #f_'&m
-)Vy)hD,
} >SziRm>Y7
else if (status == 0) {// otherwise 9^N(s7s
// check for stage completed y;4g>m
a0
var complete = eim.getProperty(curMap.toString() + "stageclear"); [cZ/)tm
if (complete != null) { UzIE,A
cm.sendNext("请赶紧去下一关,们已经打开了"); =2DK?]K;
cm.dispose(); <RbfW'<G
} \-{$IC-L
else { z7L+wNYwg
// else correct/incorrect response to question here 4KSq]S.
var qstring = "member1st" + cm.getChar().getId().toString(); w^ofH-R/
var numcoupons = qanswers[parseInt(eim.getProperty(qstring))]; kTT%<
e
var qcorr = cm.haveItem(4001007,(numcoupons+1)); uTPAf^|
var enough = false; MZcvr 9y
if (!qcorr) { // not too many E4Ez)IaKyi
qcorr = cm.haveItem(4001007,numcoupons); dn?'06TD
if (qcorr) { // just right HkhZB^_V
cm.sendNext("这是正确的答案!对于你刚才收到了#bpass#k请交给你的队长。"); $UK m[:7
cm.gainItem(4001007,-numcoupons); )+8r$ i
cm.gainItem(4001008,1); f\q5{#"z
enough = true; R+e)TR7+
} !O}e)t
} tl7:L>
if (!enough) { 8y_(Iu|:
cm.sendNext("很抱歉,你数量错误! 请仔细对照问题,再来给我正确数量的通行证吧."); 3XQe? 2:<
} V*(x@pF
cm.dispose(); 3fXrwmBT8
} *)I^+zN
} 61&{I>~1
else if (status == 1) { %hZX XpuO
if (preamble == null) { YO?o$Hv16
var qstring = "member1st" + cm.getChar().getId().toString(); AcH!KbYf
var question = parseInt(eim.getProperty(qstring)); 02%~HBS
cm.sendNextPrev(questions[question]); i^Jw`eAmT
} m-;8O /
else { // shouldn't happen, if it does then just dispose ;#IrHR*Bk
cm.dispose(); >=:mtcph
} s6(md<r
Rbr:Q]zGN
} Q)M-f;O
else if (status == 2) { // preamble completed Mw-L?j0o[k
eim.setProperty(pstring,"done"); u>agVB4\F
cm.dispose(); &b*v7c=o
} @p^EXc*|
else { // shouldn't happen, but still... C2=PGq
eim.setProperty(pstring,"done"); // just to be sure n+Conp/
cm.dispose(); ~&F|g2:
} wL>*WLf
R
} ?1Vx)j>|
} // end first map scripts Z1+Ewq3m
`'3 De(
else if (2 <= curMap && 4 >= curMap) { h)j#?\KYm9
rectanglestages(cm); a_{'I6a*,
} ~UQ<8`@a
else if (curMap == 5) { // Final stage (a-Lx2 T
var eim = cm.getChar().getEventInstance(); #Yp
&yi
}
var stage5done = eim.getProperty("5stageclear"); z
j#<X
if (stage5done == null) { 1=sL[I 7<
if (playerStatus) { // Leader ]GCw3r(!
var map = eim.getMapInstance(cm.getChar().getMapId()); uR.pQo07y<
var passes = cm.haveItem(4001008,10); 0`p"7!r
if (passes) { 5rCJIl.
// clear HrFbUK@@
cm.sendNext("这是个任务,导致您在过去,奖金阶段。这是一个阶段,可让您打败怪物经常变得更轻松。您可以一套大量的时间来寻找尽可能多的,但您随时可以离开该阶段中。同样,祝贺结算的所有阶段。"); M2d&7>N
party = eim.getPlayers(); be]/ROP>H
cm.gainItem(4001008,-10); G?\eO&QG{"
clear(5,eim,cm); ZU.E}Rn:
cm.givePartyExp(1500, party); @(E6P;+{
cm.dispose(); ~]?EV?T
} ;V
?(j3b[
else { // not done yet y:$qX*+9e
cm.sendNext("欢迎您到第5次和最后阶段。步行游览地图,你可以找到一些怪物。打败所有的人,收集了#bthepasses#k,并请您给我。在队长下将收集,然后让他们给我一旦#bpasses#k聚集了。怪物可能是熟悉的你,但他们可能会远远超出你觉得,所以请小心。祝您好运!由于投诉,现在是强制性的要杀死所有的泥!做到这一点! "); vkR~nIp
} I?%q`GyP5
cm.dispose(); 0Bkz)4R
}
t]]Ig
else { // Members 5`Uzx u
cm.sendNext("欢迎您到第5次和最后阶段。步行游览地图,你将能够找到一些怪物。打败他们所有,收集了#bpasses#k,并给予他们到您的队长。一旦您完成时,返回给我,收集您的奖励。 "); 4MW oGV9
cm.dispose();
(Pw,3CbJ
} m?Cb^WgcF
} /YJBRU2
else { // give rewards and warp out upZc~k!1\
if (status == 0) { 0c!^=(
cm.sendNext("难以置信!您通过了所有阶段进入了这一点。这里有一个小奖为您所做的出色工作。在您接受它,但是,请确保您的使用等物品栏要有空格 \r\n#b你将无法收到奖品,如果您有没有空格!#k"); aUc#,t;Qd
} "*l{ m2"
if (status == 1) { cq
gCcO,
getPrize(eim,cm); -a~n_Z>_
cm.dispose(); mJ5%+.V
} O\Z!7UQ$
} V6((5o#
} DcM/p8da
// etc T \
- x3i
else { // no map found /n>vPJvz
cm.sendNext("无效的计划,这意味着在现阶段是不完整的."); fZsw+PSy
cm.dispose(); 1{d;Ngx
} ;~[}B v
} IuAu_`,Ndi
} (f_J @n
Pec Zuv
function clear(stage, eim, cm) { T<Qa`|5>
eim.setProperty(stage.toString() + "stageclear","true"); T3"'`
Sd9;
var packetef = MaplePacketCreator.showEffect("quest/party/clear"); @]}/vsI m
var packetsnd = MaplePacketCreator.playSound("Party1/Clear"); }2m>S6""A
var packetglow = MaplePacketCreator.environmentChange("gate",2); |]?W`KN0
var map = eim.getMapInstance(cm.getChar().getMapId()); /0|1xHs
map.broadcastMessage(packetef); 7P*\|Sxk%
map.broadcastMessage(packetsnd); oAB:H\
map.broadcastMessage(packetglow); sMUpkU-
var mf = eim.getMapFactory(); T3S
FG]H
map = mf.getMap(103000800 + stage); V:P]Ved
var nextStage = eim.getMapInstance(103000800 + stage); K]M
@t=
var portal = nextStage.getPortal("next00"); t:P]b
p^#
if (portal != null) { uW/>c$*)
portal.setScriptName("kpq" + (stage+1).toString()); hy%5LV<(
} wmXI8'~F&
else { // into final stage xt"-Jmox
//cm.sendNext("Initiating final stage monsters..."); s?->2gxhx
// spawn monsters - removed since lerks patch makes -1 monsters spawn ONCE anyway =ONM#DxH
// var map = eim.getMapInstance(103000804); xE!0p EHd
// map.spawnMonsters(monsterIds); /dvr
onG
} c>3? T^=
} LN<rBF[_:f
5T( cy
function failstage(eim, cm) { *kTp(*K/7`
var packetef = MaplePacketCreator.showEffect("quest/party/wrong_kor"); S*J\YcqSC
var packetsnd = MaplePacketCreator.playSound("Party1/Failed"); ed_+bCNy
var map = eim.getMapInstance(cm.getChar().getMapId()); y\-iGKz{0
map.broadcastMessage(packetef); p8YOow7)
map.broadcastMessage(packetsnd); Q!=`|X|:
}
6|3 X*Orn
&OXx\}>MW
function rectanglestages (cm) { 3W#E$^G_v
// debug makes these stages clear without being correct 6biR5&Y5U&
var debug = false; y x#ub-A8
var eim = cm.getChar().getEventInstance(); ,C0y3pL
if (curMap == 2) { r%X
M`;bQX
var nthtext = "2nd"; dhJ=+Fz"w
var nthobj = "ropes"; J9j
@V4
var nthverb = "hang"; g=qaq
var nthpos = "hang on the ropes too low"; .v'`TD).6
var curcombo = stage2combos; #=ij</
//var curtestcombo = [0,0,0,1]; Lpkx$QZ
var currect = stage2rects; _!Tjb^
var objset = [0,0,0,0]; 5P\A++22Y
} ~Jw84U{$
else if (curMap == 3) { bXXX-Xc
var nthtext = "3rd"; X !0 7QKs
var nthobj = "platforms"; cT/mi":8{
var nthverb = "stand"; 2Kr>
93O
var nthpos = "stand too close to the edges";
JgKhrDx
var curcombo = stage3combos; <}8G1<QZ'.
//var curtestcombo = [0,0,1,0,0]; wS&D-!8v
var currect = stage3rects; ?P>4H0@I+
var objset = [0,0,0,0,0]; ?vI2mra+
} c VO-iPK
else if (curMap == 4) { d^!3&y&
var nthtext = "4th"; C|w<mryx
var nthobj = "barrels"; eK*oV}U-k
var nthverb = "stand"; \b!E"I_^
var nthpos = "stand too close to the edges"; Mk973'K'
var curcombo = stage4combos; FyPG5-
//var curtestcombo = [0,1,0,0,0,0]; 83'+q((<
var currect = stage4rects; .j|uf[?h
var objset = [0,0,0,0,0,0]; cwtlOg
} ?YV#
K
if (playerStatus) { // leader whP5u/857
if (status == 0) { $ #GuV'
// check for preamble YPY,gR
W_ Hoa*~
party = eim.getPlayers(); [E6ceX0
preamble = eim.getProperty("leader" + nthtext + "preamble"); 7w8UnPuM
if (preamble == null) { o&z [d
cm.sendNext("嗨。欢迎您到" + nthtext + " 的阶段。我旁边,你会看到一些" + nthobj + ". 在这些" + nthobj +", #b第3关,向您发送到下一阶段#k所有您需要做的是有#b的队员找到正确的" + nthobj + "和" + nthverb +"上.#k\r\nBUT ,但这不能作为答案如果您" + nthobj + ";请靠近中间的" + nthobj +"算作一个正确的答案。此外,只有3名队员是不被允许的" + nthobj + " 。一旦" + nthverb +"技术对他们来说,队长必须双击我来检查,看看答案的正确与否#k现在,找到正确的" + nthobj + "到" + nthverb +"对!"); 98?O[=
eim.setProperty("leader" + nthtext + "preamble","done"); CH|cK8q
var sequenceNum = Math.floor(Math.random() * curcombo.length); =e PX^J*M'
eim.setProperty("stage" + nthtext + "combo",sequenceNum.toString()); 1Mn
C5[Q
cm.dispose(); lVd-{m)
} um_J%v6ER
else { \awkt!Wa
// otherwise \ )>#`X
// check for stage completed $ywROa]
var complete = eim.getProperty(curMap.toString() + "stageclear"); Yhm veV
if (complete != null) { P7bb2"_9
var mapClear = curMap.toString() + "stageclear";
^P]5@d v
eim.setProperty(mapClear,"true"); // Just to be sure 41+WIa
L
cm.sendNext("Please hurry on to the next stage, the portal opened!"); xWK/uE (
} .q4$)8[Pg
// check for people on ropes Yh@2m9
else { $G }9iV7
// check for people on ropes(objset) xFM^-`7
var totplayers = 0; {^uiu^RAc
for (i = 0; i < objset.length; i++) { 3k(tv U+eC
for (j = 0; j < party.size(); j++) { +(afO~9
var present = currect.contains(party.get(j).getPosition()); a;-%C{S9r
if (present) { "XLtrAu{
objset = objset + 1; *vIP\NL?H
totplayers = totplayers + 1; _JTK$\
} kZrc^
} g"Ueo'd*
} )uR_d=B&
// compare to correct &N6[*7
// first, are there 3 players on the objset? y^nT
G
if (totplayers == 3 || debug) { Y}t)!}p$r
var combo = curcombo[parseInt(eim.getProperty("stage" + nthtext + "combo"))]; WwtVuc|
// debug ~!g2+^G7+P
// combo = curtestcombo; Hy,""Py
var testcombo = true; kw gLK@@%1
for (i = 0; i < objset.length; i++) { _FcTY5."S
if (combo != objset) f5un7,m
testcombo = false;
iD])E/
} 4(oU88z
if (testcombo || debug) { N'aq4okoL
// do clear Fo;:GX,b
clear(curMap,eim,cm); {[Y7h}7
var exp = (Math.pow(2,curMap) * 50); @H~oOf
cm.givePartyExp(exp, party); d]^m^
cm.dispose(); .\ya
} Sj|tR[SAoD
else { // wrong W+U0Y,N6
// do wrong g.%} +5
failstage(eim,cm); L+
XAbL)
cm.dispose(); ^q&|7Ou-
} .oTS7rYw
} j;z7T;!i
else { LYd:S
// oops, it doesn't display fail if you're not on the ropes JXq!v:w6
// failstage(eim,cm); x{K"z4xbI
if (debug) { ^ACrWk~UY
var outstring = "Objects contain:" 5jwv! L<n
for (i = 0; i < objset.length; i++) { &y