summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--npc/001-14/ctrl.txt102
-rw-r--r--npc/001-14/hocus.txt22
2 files changed, 109 insertions, 15 deletions
diff --git a/npc/001-14/ctrl.txt b/npc/001-14/ctrl.txt
index e76421cc0..8c316977b 100644
--- a/npc/001-14/ctrl.txt
+++ b/npc/001-14/ctrl.txt
@@ -13,6 +13,7 @@ OnInit:
end;
}
+/////////////////////////////////////////////////////////////////////////////////
// FIXME
001-14,88,27,0 script Hocus#MOLY1200 NPC_BLACKWIZARD,{
npctalk l("Icicle Challenge");
@@ -23,7 +24,7 @@ OnInit:
end;
}
-// FIXME
+/////////////////////////////////////////////////////////////////////////////////
001-14,111,42,0 script Hocus#MOLY0100 NPC_BLACKWIZARD,{
if (gettimetick(2) < @moly_tick) end;
mes ".:: " + l("Energy Ball Challenge") + ":: .";
@@ -92,6 +93,7 @@ OnClick:
end;
OnCheck:
+ if (@moly_chall != 1) end;
if (gettimetick(2) > @moly_tick) end;
.@wp = getequipid(EQI_HAND_R);
// Disarmed
@@ -128,6 +130,7 @@ OnInit:
end;
}
+/////////////////////////////////////////////////////////////////////////////////
001-14,135,61,0 script Hocus#MOLY0200 NPC_BLACKWIZARD,{
mes ".:: " + l("Intensive Mage Challenge") + ":: .";
mes l("Description: Use a lot of magic spells, regardless of type or raw strength. Points earned by skill level.");
@@ -141,6 +144,7 @@ OnInit:
end;
}
+/////////////////////////////////////////////////////////////////////////////////
// FIXME
001-14,139,85,0 script Hocus#MOLY0300 NPC_BLACKWIZARD,{
npctalk l("Fluffy Hunter Challenge");
@@ -151,6 +155,7 @@ OnInit:
end;
}
+/////////////////////////////////////////////////////////////////////////////////
// Note: Do player knows any chants?
001-14,135,117,0 script Hocus#MOLY0400 NPC_BLACKWIZARD,{
mes ".:: " + l("Chanting Challenge") + ":: .";
@@ -164,6 +169,7 @@ OnInit:
end;
}
+/////////////////////////////////////////////////////////////////////////////////
001-14,119,135,0 script Hocus#MOLY0500 NPC_NICHOLAS,{
mes ".:: " + l("Alchemy Master Challenge") + ":: .";
mes l("Description: Whoever crafts more potions, regardless of type, wins this event.");
@@ -190,16 +196,101 @@ OnInit:
end;
}
-// FIXME
+/////////////////////////////////////////////////////////////////////////////////
001-14,88,139,0 script Hocus#MOLY0600 NPC_BLACKWIZARD,{
- npctalk l("Ent Challenge");
+ mes ".:: " + l("Magic Raw Power Challenge") + ":: .";
+ mes l("Description: For starters, I'll blow away all your summons and summon an ent. You must do the most damage to it within 10 seconds.");
+ mes l("Using potions and support magic is fine. It has high defense, so magic attacks work better.");
+ mesc l("Only magic weapons are allowed, but legendary ones - %s and %s - won't be tolerated.", getitemlink(Runestaff), getitemlink(Lightbringer)), 1;
+ mes "";
+ mesc l("Your progress thus far: %s damage inflicted", fnum(FYMOLY_MPWLVL)), 3;
+ next;
+ mesc l("Begin campaign?"), 1;
+ if (askyesno() == ASK_NO) close;
+ killmonsterall(getmap());
+ .@m=areamonster(getmap(), 87, 140, 93, 145, strmobinfo(1, EntAbomination), EntAbomination, 1);
+ setunitdata(.@m, UDT_MAXHP, 1000000);
+ setunitdata(.@m, UDT_HP, 1000000);
+ setunitdata(.@m, UDT_LEVEL, 1);
+ setunitdata(.@m, UDT_SPEED, 60);
+ setunitdata(.@m, UDT_MODE, MD_CANMOVE|MD_CANATTACK|MD_BOSS);
+ setunitdata(.@m, UDT_DEF, 999);
+ setunitdata(.@m, UDT_MDEF, 0);
+ setunitdata(.@m, UDT_LUK, 32760);
+ .mob = .@m;
+ .pid = getcharid(3);
+ @moly_tick = gettimetick(2) + 60;
+ @moly_score = 0;
+ @moly_chall = 6;
+ npctalk "10";
+ addtimer 550, instance_npcname("Hocus#MOLY0600")+"::OnCheck";
+ initnpctimer;
+ closeclientdialog;
+ close;
+
+OnCheck:
+ if (@moly_chall != 6) end;
+ if (gettimetick(2) > @moly_tick) end;
+ .@wp = getequipid(EQI_HAND_R);
+ // Disarmed
+ if (.@wp < 1) {
+ addtimer(550, instance_npcname("Hocus#MOLY0600")+"::OnCheck");
+ end;
+ }
+ // Illegal weapon
+ if ((.@wp == Lightbringer || .@wp == Runestaff) ||
+ (.@wp != Judgement &&
+ .@wp != DarkPulsar &&
+ getiteminfo(.@wp, ITEMINFO_SUBTYPE) != W_STAFF)) {
+ @moly_score = -1;
+ @moly_tick = 0;
+ dispbottom col(l("You have been disqualified - illegal weapon: %s", getitemname(.@wp)), 1);
+ stopnpctimer;
+ killmonsterall(getmap());
+ end;
+ }
+ addtimer 550, instance_npcname("Hocus#MOLY0600")+"::OnCheck";
+ end;
+
+OnTimer1000:
+ npctalk "9"; end;
+OnTimer2000:
+ npctalk "8"; end;
+OnTimer3000:
+ npctalk "7"; end;
+OnTimer4000:
+ npctalk "6"; end;
+OnTimer5000:
+ npctalk "5"; end;
+OnTimer6000:
+ npctalk "4"; end;
+OnTimer7000:
+ npctalk col("3", 1); end;
+OnTimer8000:
+ npctalk col("2", 1); end;
+OnTimer9000:
+ npctalk col("1", 1); end;
+OnTimer10000:
+ npctalk col("Time out!", 1);
+ stopnpctimer;
+ attachrid(.pid);
+ if (@moly_chall != 6) end;
+ @moly_score = (getunitdata(.mob, UDT_HP) - getunitdata(.mob, UDT_MAXHP)) * -1;
+ killmonsterall(getmap());
+ dispbottom l("End! Score this time: %d", @moly_score);
+ FYMOLY_MPWLVL = max(FYMOLY_MPWLVL, @moly_score);
+ @moly_score = 0;
+ @moly_chall = 0;
end;
OnInit:
.distance=7;
+ .mob = 0;
+ .pid = 0;
end;
}
+/////////////////////////////////////////////////////////////////////////////////
001-14,54,133,0 script Hocus#MOLY0700 NPC_BLACKWIZARD,{
mes ".:: " + l("Mana Experience Challenge") + ":: .";
mes l("Description: Similar to Intensive Mage, but measures mana experience - meaning even less skills will count, and swapping skills give a better effect.");
@@ -212,6 +303,7 @@ OnInit:
end;
}
+/////////////////////////////////////////////////////////////////////////////////
// FIXME
001-14,39,114,0 script Hocus#MOLY0800 NPC_BLACKWIZARD,{
npctalk l("Maze Race Challenge");
@@ -222,7 +314,7 @@ OnInit:
end;
}
-// FIXME
+/////////////////////////////////////////////////////////////////////////////////
001-14,37,84,0 script Hocus#MOLY0900 NPC_BLACKWIZARD,{
mes ".:: " + l("Hocus Said So Challenge") + ":: .";
mes l("Description: There'll be differently colored sparks and you must kill ONLY those of the color I say so! Failure to do so will cause immediate disqualification!");
@@ -378,6 +470,7 @@ OnInit:
end;
}
+/////////////////////////////////////////////////////////////////////////////////
// FIXME
001-14,41,46,0 script Hocus#MOLY1000 NPC_BLACKWIZARD,{
npctalk l("Survival Challenge");
@@ -388,6 +481,7 @@ OnInit:
end;
}
+/////////////////////////////////////////////////////////////////////////////////
001-14,62,37,0 script Hocus#MOLY1100 NPC_BLACKWIZARD,{
mes ".:: " + l("Friendship's Strength Challenge") + ":: .";
mes l("Description: Use support skills and win the event with the power of FRIENDSHIP!");
diff --git a/npc/001-14/hocus.txt b/npc/001-14/hocus.txt
index 04835bf72..c63d83b4f 100644
--- a/npc/001-14/hocus.txt
+++ b/npc/001-14/hocus.txt
@@ -59,7 +59,7 @@ function showScores {
//parseScores("Fluffy Hunt Challenge", "$@moly03_n$", "$@moly03_v");
parseScores("Chanting Challenge", "$@moly04_n$", "$@moly04_v");
parseScores("Alchemy Master Challenge", "$@moly05_n$", "$@moly05_v");
- //parseScores("Magic Power Challenge", "$@moly06_n$", "$@moly06_v");
+ parseScores("Magic Power Challenge", "$@moly06_n$", "$@moly06_v");
parseScores("Mana Exp Challenge", "$@moly07_n$", "$@moly07_v");
//parseScores("Obstacle Race Challenge", "$@moly08_n$", "$@moly08_v", t());
parseScores("Hocus Commands Challenge", "$@moly09_n$", "$@moly09_v");
@@ -86,16 +86,16 @@ function parseScores {
mes "";
mes l("##B%s: TOP 10##b", .@t$);
if (.@tm < 0) {
- mes("1."+SCH(.@n$, 0)+" ("+SCH(.@v$, 0)+")");
- mes("2."+SCH(.@n$, 1)+" ("+SCH(.@v$, 1)+")");
- mes("3."+SCH(.@n$, 2)+" ("+SCH(.@v$, 2)+")");
- mes("4."+SCH(.@n$, 3)+" ("+SCH(.@v$, 3)+")");
- mes("5."+SCH(.@n$, 4)+" ("+SCH(.@v$, 4)+")");
- mes("6."+SCH(.@n$, 5)+" ("+SCH(.@v$, 5)+")");
- mes("7."+SCH(.@n$, 6)+" ("+SCH(.@v$, 6)+")");
- mes("8."+SCH(.@n$, 7)+" ("+SCH(.@v$, 7)+")");
- mes("9."+SCH(.@n$, 8)+" ("+SCH(.@v$, 8)+")");
- mes("10."+SCH(.@n$, 9)+" ("+SCH(.@v$, 9)+")");
+ mes("1."+SCH(.@n$, 0)+" ("+fnum(SCH(.@v$, 0))+")");
+ mes("2."+SCH(.@n$, 1)+" ("+fnum(SCH(.@v$, 1))+")");
+ mes("3."+SCH(.@n$, 2)+" ("+fnum(SCH(.@v$, 2))+")");
+ mes("4."+SCH(.@n$, 3)+" ("+fnum(SCH(.@v$, 3))+")");
+ mes("5."+SCH(.@n$, 4)+" ("+fnum(SCH(.@v$, 4))+")");
+ mes("6."+SCH(.@n$, 5)+" ("+fnum(SCH(.@v$, 5))+")");
+ mes("7."+SCH(.@n$, 6)+" ("+fnum(SCH(.@v$, 6))+")");
+ mes("8."+SCH(.@n$, 7)+" ("+fnum(SCH(.@v$, 7))+")");
+ mes("9."+SCH(.@n$, 8)+" ("+fnum(SCH(.@v$, 8))+")");
+ mes("10."+SCH(.@n$, 9)+" ("+fnum(SCH(.@v$, 9))+")");
} else {
mes("1."+SCH(.@n$, 0)+" ("+FuzzyTime(.@tm - SCH(.@v$, 0))+")");
mes("2."+SCH(.@n$, 1)+" ("+FuzzyTime(.@tm - SCH(.@v$, 1))+")");