summaryrefslogblamecommitdiff
path: root/npc/003-1/hasan.txt
blob: 658e4d3982272960075f77c357a9f60831770384 (plain) (tree)
1
2
3
4
5
6
7
8
9
10



               



                                                                                        

                                                                             
                                                                                     

                             
                                                             

                         

                                              



                                          




                                                    

                                                  


                                                                                       

                   
                                                       
                                                     
                                                       
                                                         
                        
                                                  





                                                               
                            










                                             
                                                             




                                                                                     
                                                                                          

          

         
         

                                                                           

         
                                                                                  


                                 
                  




                                             



                                                                                                              
                                                            
                                                                                                                                      
                                                                                                         

                                                                                                   
               









                                                                       

                               





                                                                            


         

                                                                                                                                      



                                                                                    
                                                  

                                                
                     
                      
 





                                              
                                  
                                              
                                  
                                              



                                  






                                                             
     


                



                                                                                       

        

          

        
                                                              



                                
                                 




                                                                            


                            

                                        
                                                          

        


                  


                          

        
                                              


                
 

                                                                       
                          
                                          
        
 
 
                                         
                                             


                                                     
 














                                                        
 
 
// TMW-2 Script
// Author:
//  Jesusalva
// Description:
//  Hasan is the city bully and steals from the player. He lost his father to a Murderer
//  Scorpion. Will respect player if they kill one. His mother is Sorfina, who
//  explains this and cries that he never touched a Soul Menhir. Allows the player
//  to kill the scorpion on Mahoud's Basement.
//
//  Player must report theft first to Dausen, who will tell the player that's
//  normal and nobody messes with Hasan, and giving player a pointer that they should
//  tell his mother, Sorfina.
//
//  Reward: Cotton Short, Hasan won't steal from you anymore.
//
//  GETQ1 Variable Value;
//  0 - Hasan has never stolen from the player
//  1 - Hasan already stole from the player
//  2 - Dausen pointed player to Sorfina
//  3 - Sorfina unlocked Mahoud's Basement
//  4 - Player killed Murderer Scorpion
//  5 - Quest is complete
//
//  $HASAN_ST
//      Number of Scorpions killed during Autumn
//  $HASAN_GP
//      Total money Hasan collected for Autumn event
//  $HASAN_LT
//      Previous collected money, for rewards calc
//
//  PS. $@GM_OVERRIDE will disable Season restrictions, but values from 20/09 and 21/12
//  must be set manually.

// Temporary sprite
003-1,62,148,0	script	Hasan	NPC_ELVEN_MAN_RED,2,2,{
    if (getq(TulimsharQuest_Hasan) == 0) goto L_Safe;
    if (getq(TulimsharQuest_Hasan) == 4) goto L_Finish;
    if (getq(TulimsharQuest_Hasan) >= 5) goto L_Complete;
    mesn strcharinfo(0);
    mesq l("Give me back what you stole, thief!");
    next;
    mesn;
    mesq l("I stole nothing from you. Do you have any proof?");
    next;
    menu
        l("I have a print screen!"), L_Print,
        l("No..."), L_Close;
    close;

L_Away:
    mesn;
    mesq l("Hey... Go bother someone else.");
    close;

L_Print:
    mes "";
    mesn;
    mesq l("Let me analyze that.");
    mesc l("Hasan takes your print screen and analyzes it.");
    next;
    mesn;
    mesq l("Photoshopped. Definitely. Good luck convincing somebody with that! %%a");
    next;
    mesn;
    mesq l("If you go to Lieutenant Dausen, he'll say that you used GIMP. Just give up.");
    close;

// TODO
L_Finish:
    mesn;
    // The scorpion and not a scorpion because of dramatic buildup.
    mesq l("Is that... Wait... Wow. You... Killed the murderer scorpion.");
    next;
    mesn;
    mesq l("I promise I'll never steal from you again. Here, take these shorts.");
    mesq l("Good job, man!");
    setq TulimsharQuest_Hasan, 5;
    getitem CottonShorts, 1;
    getexp 99, 55;
    close;

L_Complete:
    mesn;
    mesq l("Thanks for avenging my father.");
    next;
    mesn;
    mesq l("I am collecting money for the Yearly Autumn Scorpion Hunter quest.");
    mesq l("You're, of course, invited. Thus far, the total prize money I've collected is @@ GP.", $HASAN_GP);
    if (season() == AUTUMN || $@GM_OVERRIDE || is_staff()) {
        mesq l("You've killed @@ scorpions, and a total of @@ were killed this season.", fnum(getq2(SQuest_Autumn)), fnum($HASAN_ST));
        mesq l("If the event ended now, you would get @@ GP.", getq2(SQuest_Autumn)*$HASAN_GP/$HASAN_ST);
        mes "";
        mesc l("Note: Poll may increase more than total money donated depending on current date.");
        menuint
            l("Thanks."),                                       0,
            rif(Zeny >= 5, l("Donate 5 GP for prize")),         5,
            rif(Zeny >= 15, l("Donate 15 GP for prize")),       15,
            rif(Zeny >= 50, l("Donate 50 GP for prize")),       50,
            rif(Zeny >= 100, l("Donate 100 GP for prize")),     100,
            rif(Zeny >= 1000, l("Donate 1k GP for prize")),     1000,
            rif(Zeny >= 10000, l("Donate 10k GP for prize")),   10000,
            rif(Zeny >= 25000, l("Donate 25k GP for prize")),   25000,
            rif(Zeny >= 100000, l("Donate 100k GP for prize")), 100000,
            rif(Zeny >= 250000, l("Donate 250k GP for prize")), 250000;
        if (@menuret > 0) {
            Zeny=Zeny-@menuret;
            .@poll=@menuret;
            .@bonus=10000;
            .@bonus+=rand(gettime(GETTIME_MONTH) == DECEMBER ? 2000 : 4000);
            .@bonus+=(gettime(GETTIME_MONTH) == DECEMBER ? 0 : 1000);
            .@poll=.@poll*.@bonus/10000;
            $HASAN_GP=$HASAN_GP+.@poll;
        }
    }

    .@q=getq(SQuest_Autumn);
    if (season() == WINTER && (.@q == gettime(GETTIME_YEAR) || (.@q == gettime(GETTIME_YEAR)-1 && gettime(GETTIME_MONTH) <= MARCH))) {
        .@p=getq2(SQuest_Autumn)*$HASAN_LT/$HASAN_ST;
        mesn l("Summary");
        mes l("Scorpions killed: @@/@@ scorpions", getq2(SQuest_Autumn), $HASAN_ST);
        mes l("Total money collected: @@ GP", $HASAN_LT);
        mesc l("Your prize: %s GP", fnum(.@p)), 2;
        if (getq2(SQuest_Autumn) > 20)
            getexp (getq2(SQuest_Autumn)/20), 0;
        if (.@p >= 1)
            Zeny+=.@p;

        // Top 5 reward
        if (strcharinfo(0) == $@hasn_name$[0])
            getitem SupremeGift, 1;
        if (strcharinfo(0) == $@hasn_name$[1])
            getitem PrismGift, 1;
        if (strcharinfo(0) == $@hasn_name$[2])
            getitem GoldenGift, 1;
        if (strcharinfo(0) == $@hasn_name$[3])
            getitem SilverGift, 1;
        if (strcharinfo(0) == $@hasn_name$[4])
            getitem BronzeGift, 1;

        // Quest is closed
        setq1 SQuest_Autumn, 1970;
        next;
        mes ".:: Scoreboards ::.";
    	mesf("1. %s (%d)", $@hasn_name$[0], $@hasn_value[0]);
    	mesf("2. %s (%d)", $@hasn_name$[1], $@hasn_value[1]);
    	mesf("3. %s (%d)", $@hasn_name$[2], $@hasn_value[2]);
    	mesf("4. %s (%d)", $@hasn_name$[3], $@hasn_value[3]);
    	mesf("5. %s (%d)", $@hasn_name$[4], $@hasn_value[4]);
    }
    close;

L_TouchComplete:
    if (@hasan_antiflood < gettimetick(2)) {
        npctalkonce l("Hey there, @@! Good luck killing monsters!", strcharinfo(0)), 3;
        @hasan_antiflood=gettimetick(2)+600;
    }
    end;

L_Close:
    close;

OnTouch:
    if (getq(TulimsharQuest_Hasan) >= 5) goto L_TouchComplete;
    if (Zeny > 15) goto L_Steal;
    end;

L_Steal:
    npctalkonce(l("*whistles*"));
    if (getq(TulimsharQuest_Hasan) == 0) goto L_DoSteal;
    if (getq(TulimsharQuest_Hasan) <= 4 && rand(0,100) < 20) goto L_DoSteal;
    end;

L_DoSteal:
    .@s=rand(3,12);
    $HASAN_GP=$HASAN_GP+.@s;
    Zeny=Zeny-.@s;
    if (getq(TulimsharQuest_Hasan) == 0)
        setq TulimsharQuest_Hasan, 1;
    dispbottom l("##BYou were robbed##b by an evil NPC.");
    end;

OnInit:
    .sex = G_MALE;
    .distance = 5;

    //npcspeed(150);
    //npcwalkto(<x>, <y>);
    end;

// Restart hasan status on 20/09 (double-sure)
OnDay0920:
    $HASAN_ST=0;
    end;

// Once autumn is over (21/12) restart GP poll and send value to backup
OnDay1221:
    $HASAN_LT=0+$HASAN_GP;
    $HASAN_GP=2000+(TOP3AVERAGELVL()*100);
    end;
}

function	script	SQuest_Hasan	{
    if (season() != AUTUMN && !$@GM_OVERRIDE)
        return;
    if (getq(SQuest_Autumn) != gettime(GETTIME_YEAR))
        setq SQuest_Autumn, gettime(GETTIME_YEAR), 0;

    // All scorpions are counting for Hasan Autumn Quest
    if (
        killedrid == Scorpion ||
        killedrid == RedScorpion ||
        killedrid == BlackScorpion ||
        killedrid == CandorScorpion ||
        killedrid == AngryScorpion ||
        killedrid == AngryRedScorpion ||
        killedrid == NightScorpion ||
        killedrid == GoldenScorpion ||
        killedrid == MurdererScorpion) {
            setq2 SQuest_Autumn, getq2(SQuest_Autumn)+1;
            $HASAN_ST=$HASAN_ST+1;
    }
    return;
}