diff options
-rw-r--r-- | npc/001-14/ctrl.txt | 102 | ||||
-rw-r--r-- | npc/001-14/hocus.txt | 22 |
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))+")"); |