summaryrefslogblamecommitdiff
path: root/npc/006-7/ctrl.txt
blob: 1a89b35ca38f0a3b6440752a76631188eee48e51 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11










                                                        





                                                                                             


                                                     




                                                                                                     


                                                                                             
                                                        
                                        
                                                         
         








                                                         

                                                 





































                                                                        







                      

                                                   
                                                                                        

                                
                                                                             














                            
// TMW2 Script
// Author:
//    Jesusalva

006-7,44,50,0	script	#OutOf0067	NPC_HIDDEN,0,0,{
    end;

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)) {
        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, 2+ healer"), 1;
    mesc l("Time Limit: 90 minutes"), 1;
    mesc l("Enter/Leave after start: %s", b(l("NO"))), 1;
    next;
    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;
    closeclientdialog;
    close;

// Heart
OnTimer5000:
    if (!mobcount("006-7", "all"))
        maptimer2("006-7", 10, "#OutOf0067::OnRw");
    if (.ticks < gettimetick(2) || !mobcount("006-7", "all") || !getmapusers("006-7")) {
        killmonsterall("006-7");
        enablenpc .name$;
        .ticks = min(.ticks, gettimetick(2) + 1800); // Min. Cooldown: 30 min
        .beats = 0;
        stopnpctimer;
        end;
    }
    .beats += 1;
    initnpctimer;
    end;

OnInit:
    .distance = 4;
    .ticks = gettimetick(2);
    .beats = 0;
    end;
}