summaryrefslogblamecommitdiff
path: root/npc/functions/dungeon.txt
blob: 4ea5bfa5409385a8a0bae4abe1125a347d96ee57 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                            
                                                     
                                

        
                                         















                                                                              
                                                  





                                                   
        














                                         
                                                                                                                                                


                                                         
                                                     
                   

                          


                                         
                                  


                                                         
                           
 

                                                      
        
 
















                                                                                  
                        
                            
                             















                                                           
 

 

                                    

                                   
                                   


 
// TMW2 Script
// Authors:
//    Jesusalva
// Description:
//    Dungeon utilities

-	script	#DungeonCore	NPC_HIDDEN,{
    end;

// Main initialization
OnInit:
    setarray .heatmap$, "007-2";
    setarray .cursemap$, "006-4", "006-4-1", "025-1";
    setarray .sickmap$, "029-5";
    end;

/////////////////////////////////////////
// Heartbeat for Heat effects
OnHeat:
    // Did you left?
    .@i=array_find(.heatmap$, getmap());
    if (.@i < 0) {
        @heat$="";
        end;
    }

    // First time seeing this
    if (@heat$ != getmap()) {
        @heat$=getmap();
        dispbottom l("This is a hot map, you're suffering damage over time.");
    }

    // You are in a HEATMAP$, so suffer damage from heat
    if (@coolio > gettimetick(2) || Class == Redy)
        percentheal -1, 0;
    else
        percentheal -5, 0;

    // New tick (dies in 140~180 seconds)
    addtimer2 rand2(7000, 9000), .name$+"::OnHeat";
    end;


/////////////////////////////////////////
// Heartbeat for Cursed Land map effects
OnCurse:
    // Did you left?
    .@i=array_find(.cursemap$, getmap());
    if (.@i < 0) {
        @curse$="";
        end;
    }

    // First time seeing this
    if (@curse$ != getmap()) {
        @curse$=getmap();
        dispbottom l("This is a Cursed Lands map, you'll lose mana over time and may also incurr in debuffs if mana is low (may cause death).");
    }

    // You are in a CURSEMAP$, so suffer damage from heat
    if (@purifio > gettimetick(2) || Class == Savior)
        heal 0, -1;
    else
        percentheal 0, -5;

    // MP is below 20%, you'll get cursed
    if (Sp*100 < MaxSp*20)
        SC_Bonus(15, SC_CURSE, 1);

    // MP is below 1%, you'll get start losing HP rapidly
    if (Sp*100 < MaxSp)
        percentheal -10, 0;

    // New tick (cycles every 15 seconds in average)
    addtimer2 rand2(14000, 15000), .name$+"::OnCurse";
    end;

/////////////////////////////////////////
// Heartbeat for Disease effects
OnSick:
    // Did you left?
    .@i=array_find(.sickmap$, getmap());
    if (.@i < 0) {
        @sick$="";
        end;
    }

    // First time seeing this
    if (@sick$ != getmap()) {
        @sick$=getmap();
        dispbottom l("This map contains poisonous class and may cause diseases.");
    }

    // The effect is based on HP
    if (Hp*10 > MaxHp*7)
        .@eff = SC_BLOODING;
    else if (Hp*10 > MaxHp*4)
        .@eff = SC_POISON;
    else
        .@eff = SC_DPOISON;

    // You are in a SICKMAP$, so suffer damage from disease
    if (@sickio > gettimetick(2)) {
        heal -50, 0;
    } else {
        heal -rand2(50, 200), 0;
        SC_Bonus(10, .@eff, 1);
    }

    // New tick (10 seconds fixed cycle)
    addtimer2 10000, .name$+"::OnSick";
    end;

}


//////////////////////////////
007-2	mapflag	nosave	007-1,99,189
006-4	mapflag	nosave	006-3,54,36
006-4-1	mapflag	nosave	006-3,54,36
029-5	mapflag	nosave	029-4,21,97