diff options
Diffstat (limited to 'npc')
-rw-r--r-- | npc/006-7/ctrl.txt | 65 |
1 files changed, 62 insertions, 3 deletions
diff --git a/npc/006-7/ctrl.txt b/npc/006-7/ctrl.txt index da46197aa..67223e25d 100644 --- a/npc/006-7/ctrl.txt +++ b/npc/006-7/ctrl.txt @@ -9,19 +9,76 @@ OnTouch: if (!$@ICICLE_CHALLENGE) warp "006-6", 40, 36; end; + +OnRw: + getexp 1000000, 0; + Mobpt += 10000; + dispbottom l("Der Schneemann has been defeated: %s Monster Points gained.", fnum(10000)); + end; } 006-7,44,50,0 script Ice Lord NPC_YETIFLY,{ - if (.ticks > gettimetick(2)) end; + if (.ticks > gettimetick(2)) { + mesn; + mesq l("This challenge will be available in %s. Please wait until then.", FuzzyTime(.ticks)); + close; + } mesn; mesq l("With Magic and Blades, The Icicle shall break. Do you undertake the challenge?"); mesc l("Advised: 6+ players"), 1; mesc l("Advised: 1+ mage, 1+ tanker"), 1; mesc l("Time Limit: 90 minutes"), 1; + mesc l("Enter/Leave after start: %s", b(l("NO"))), 1; next; - if (askyesno() == ASK_NO) { closeclientdialog; close; } + select + l("Not yet."), + l("Bring it on!"), + rif(REBIRTH, l("Bring me, my worst nightmare.")); + mes ""; + if (@menu == 1) { + closeclientdialog; + close; + } .ticks = gettimetick(2) + 5400; // 90 minutes + .BOSS = monster("006-7", 44, 36, "Der Schneemann", SnowmanBoss, 1); + .@mlt = (@menu == 2 ? 10 : 15); + + setunitdata(.BOSS, UDT_MAXHP, 1000000 * .@mlt / 10); + setunitdata(.BOSS, UDT_HP, 1000000 * .@mlt / 10); + // Reconfigure the AI + .@opt=getunitdata(.BOSS, UDT_MODE); + // Disable looting + if (.@opt & MD_LOOTER) + .@opt=.@opt^MD_LOOTER; + // Add knockback immunity + .@opt=.@opt|MD_NOKNOCKBACK; + // Mark as boss + .@opt=.@opt|MD_BOSS; + // Mark as aggressive + .@opt=.@opt|MD_AGGRESSIVE; + .@opt=.@opt|MD_ANGRY; + // Make it more op + .@opt=.@opt|MD_DETECTOR; + .@opt=.@opt|MD_CASTSENSOR_CHASE; + .@opt=.@opt|MD_CASTSENSOR_IDLE; + .@opt=.@opt|MD_CHANGECHASE; + .@opt=.@opt|MD_CHANGETARGET_MELEE; + .@opt=.@opt|MD_CHANGETARGET_CHASE; + setunitdata(.BOSS, UDT_MODE, .@opt); + + // Nerf the damage, but never miss a hit + setunitdata(.BOSS, UDT_ATKMIN, 60 * .@mlt / 10); + setunitdata(.BOSS, UDT_ATKMAX, 60 * .@mlt / 10); + setunitdata(.BOSS, UDT_ADELAY, 2220 / .@mlt * 10); // 2220 or 1480ms + setunitdata(.BOSS, UDT_HIT, 2400); + + // Boosting the defense is not necessary + // It nerfs weapons to 40% (bows to 20%) + // Then it resists 50% of Neutral element. + // Note it is strong against Water (25% dmg) + // And weak against Fire (snow) and Wind (100% dmg) + // Otherwise, behave as Ghost element disablenpc .name$; initnpctimer; @@ -30,10 +87,12 @@ OnTouch: // Heart OnTimer5000: + if (!mobcount("006-7", "all")) + maptimer2("006-7", 10, "#OutOf0067::OnRw"); if (.ticks < gettimetick(2) || !mobcount("006-7", "all")) { killmonsterall("006-7"); enablenpc .name$; - .ticks = gettimetick(2); + .ticks = min(.ticks, gettimetick(2) + 1800); // Min. Cooldown: 30 min .beats = 0; stopnpctimer; end; |