summaryrefslogblamecommitdiff
path: root/world/map/npc/009-4/torches.txt
blob: 842183b1841e1cd152cf22a60074babeec91c902 (plain) (tree)
1
2
3
4
5
6
7
8
9
                                        
                                        

                                               
 



                                                        

        

                                        

 


                                                 
 


                                                                               

        

                                        

         

                                       

 

                                               
 



                                                            

        

                                        

 


                                                        
 


                                                                                         

        

                                        

         

                                           

 


                                         
 
                                        
 
                        
                                                                                                                           
 
                      
                                                                                                 
          

            
                                                                                                                      

                     


                                   




                                                              
 




                                                              
 




                                                              


              
                                    

                               
 


                                  
 


                                                                                                                                                                         
                                                                                                                                                                             
                      

             





                                          
                                                         
          

          












                                            

             










                                            

           












                                             

            
                                                                                                  
          

             





                                  
                                                                                                                                                           
                      

              





                                        
                                                                                                                                                                             
                      

         






                                                                                                    


               
                                    

                               
 


                                  
 

                                                                                                                                                                         
                                                                                                                                                                             
                      

             





                                          
                                                         
          

          












                                            

             










                                            

           












                                             

            
                                                                                               
          

             





                                  
                                                                                                                                                           
                      

              





                                        
                                                                                                                                                                             
                      

         






                                                                                                    



              
                                    

                               
 


                                  
 


                                                                                                                                                                         
                                                                                                                                                                             
                      

          

                                                              

             





                                          
                                                         
          

          










                                            

             








                                            

           










                                             

            
                                                                                               
          

             





                                  
                                                                                                                                                           
                      

              





                                        
                                                                                                                                                                             
                      

         






                                                                                                    
 
//# see detailed description at orum.txt
//# see detailed description at orum.txt
function|script|GetTorchColor|{
    if (@Torch < 0 || @Torch > 2) goto L_Error;

    set @Mask, 15;
    set @Shift, 4 * @Torch;
    set @TorchColor, (OrumQuestTorch >> @Shift) & @Mask;
    return;

L_Error:
    mes "Torch number is out of range.";
    close;
}

function|script|SetTorchColor|{
    if (@Torch < 0 || @Torch > 2) goto L_Error;
    if (@Color < 1 || @Color > 12) goto L_Error2;

    set @Mask, (15 << (4 * @Torch));
    set OrumQuestTorch, (OrumQuestTorch & (~(@Mask))) | @Color << (4 * @Torch);
    return;

L_Error:
    mes "Torch number is out of range.";
    close;

L_Error2:
    mes "Torch color is out of range.";
    close;
}

function|script|GetTorchIntensity|{
    if (@Torch < 0 || @Torch > 2) goto L_Error;

    set @Mask, 15;
    set @Shift, 4 * (@Torch + 3);
    set @TorchIntensity, (OrumQuestTorch >> @Shift) & @Mask;
    return;

L_Error:
    mes "Torch number is out of range.";
    close;
}

function|script|SetTorchIntensity|{
    if (@Torch < 0 || @Torch > 2) goto L_Error;
    if (@Intensity < 0 || @Intensity > 2) goto L_Error2;

    set @Mask, (15 << (4 * (@Torch + 3)));
    set OrumQuestTorch, (OrumQuestTorch & (~(@Mask))) | @Intensity << (4 * (@Torch + 3));
    return;

L_Error:
    mes "Torch number is out of range.";
    close;

L_Error2:
    mes "Torch intensity is out of range.";
    close;
}

function|script|DoneWithTorches|{
    if (OrumQuest < 11 && OrumQuest >= 8)
        return;

    if (OrumQuest < 7) goto L_Different;

    if (OrumQuest >= 11)
        mes "The flame on the torch looks ordinary. Lowering the final barrier seems to have drained them of their magic.";

    if (OrumQuest < 8)
        mes "Without that powder the note mentions there isn't much you can do with this torch.";
    close;

L_Different:
    mes "The flame on this torch looks different than the rest. You better tell Orum about it before doing anything.";
    set OrumQuest, 6;
    close;
}

// To make sure in range of torches
function|script|InRangeTorch1|{
    if (isin("009-4.gat",67,20,69,25))
        return;
    mes "You're too far away to do anything with that torch.";
    close;
}
function|script|InRangeTorch2|{
    if (isin("009-4.gat",65,41,69,46))
        return;
    mes "You're too far away to do anything with that torch.";
    close;
}
function|script|InRangeTorch3|{
    if (isin("009-4.gat",33,84,37,88))
        return;
    mes "You're too far away to do anything with that torch.";
    close;
}

// First Torch
009-4.gat,68,21,0|script|Torch|400,{
    callfunc "InRangeTorch1";
    callfunc "DoneWithTorches";

    set @Torch, 0;
    callfunc("GetTorchColor");
    callfunc("GetTorchIntensity");

    set @lastColor, @TorchColor;
    setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
    setarray @intensities$,"calm","bright","blinding";
    mes "Looking closely you notice that this torch is not like the others. This one has a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + " tint to it.";
    goto L_Color_Loop;

L_Color_Loop:
    callfunc("GetTorchColor");
    menu
        "Add Red Powder", L_Use_Red,
        "Add Yellow Powder", L_Use_Yellow,
        "Add Blue Powder", L_Use_Blue,
        "Leave it alone.", -;
    mes "The flame flickers as if it's laughing at you.";
    close;

L_Use_Red:
    if (countitem("RedPowder") < 1)
        goto L_No_Powder;
    if (@TorchColor > 6 && @TorchColor < 12)
        set @Color, @TorchColor + 1;
    if (@TorchColor < 6 && @TorchColor > 1)
        set @Color, @TorchColor - 1;
    if (@TorchColor == 12)
        set @Color, 1;
    if (@TorchColor == 0)
        set @Color, 1;
    callfunc("SetTorchColor");
    delitem "RedPowder", 1;
    goto L_Show_Color;

L_Use_Yellow:
    if (countitem("YellowPowder") < 1)
        goto L_No_Powder;
    if (@TorchColor < 10 && @TorchColor > 5)
        set @Color, @TorchColor - 1;
    if (@TorchColor >= 1 && @TorchColor < 5)
        set @Color, @TorchColor + 1;
    if (@TorchColor == 0)
        set @Color, 5;
    callfunc("SetTorchColor");
    delitem "YellowPowder", 1;
    goto L_Show_Color;

L_Use_Blue:
    if (countitem("BluePowder") < 1)
        goto L_No_Powder;
    if (@TorchColor > 4 && @TorchColor < 9)
        set @Color, @TorchColor + 1;
    if (@TorchColor <= 12 && @TorchColor > 9)
        set @Color, @TorchColor - 1;
    if (@TorchColor == 1)
        set @Color, 12;
    if (@TorchColor == 0)
        set @Color, 9;
    callfunc("SetTorchColor");
    delitem "BluePowder", 1;
    goto L_Show_Color;

L_No_Powder:
    mes "You notice you're all out of that color of powder. Perhaps Orum can make you some more.";
    close;

L_Show_Color:
    callfunc("GetTorchColor");
    callfunc("GetTorchIntensity");
    if (@TorchColor == @lastColor)
        goto L_Wrong_Color;
    misceffect 5;
    set @lastColor, @TorchColor;
    mes "As your pour the powder into the flame you can see its tint transform to a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + ".";
    goto L_Color_Loop;

L_Wrong_Color:
    set @Intensity, @TorchIntensity + 1;
    if (@Intensity > 2)
        goto L_Failed;
    callfunc("SetTorchIntensity");
    callfunc("GetTorchIntensity");
    misceffect 5;
    mes "As you pour the powder into the flame it flares violently for a moment and then turns into a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + ".";
    goto L_Color_Loop;

L_Failed:
    mes "As you pour the powder into the flame it flares violently before bursting into your face!";
    misceffect 5;
    misceffect 16;
    set @Intensity, 0;
    callfunc("SetTorchIntensity");
    heal -Hp, 0;
    close;
}

// Second Torch
009-4.gat,67,42,0|script|Torch|400,{
    callfunc "InRangeTorch2";
    callfunc "DoneWithTorches";

    set @Torch, 1;
    callfunc("GetTorchColor");
    callfunc("GetTorchIntensity");

    set @lastColor, @TorchColor;
    setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
    mes "Looking closely you notice that this torch is not like the others. This one has a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + " tint to it.";
    goto L_Color_Loop;

L_Color_Loop:
    callfunc("GetTorchColor");
    menu
        "Add Red Powder", L_Use_Red,
        "Add Yellow Powder", L_Use_Yellow,
        "Add Blue Powder", L_Use_Blue,
        "Leave it alone.", -;
    mes "The flame flickers as if it's laughing at you.";
    close;

L_Use_Red:
    if (countitem("RedPowder") < 1)
        goto L_No_Powder;
    if (@TorchColor > 6 && @TorchColor < 12)
        set @Color, @TorchColor + 1;
    if (@TorchColor < 6 && @TorchColor > 1)
        set @Color, @TorchColor - 1;
    if (@TorchColor == 12)
        set @Color, 1;
    if (@TorchColor == 0)
        set @Color, 1;
    callfunc("SetTorchColor");
    delitem "RedPowder", 1;
    goto L_Show_Color;

L_Use_Yellow:
    if (countitem("YellowPowder") < 1)
        goto L_No_Powder;
    if (@TorchColor < 10 && @TorchColor > 5)
        set @Color, @TorchColor - 1;
    if (@TorchColor >= 1 && @TorchColor < 5)
        set @Color, @TorchColor + 1;
    if (@TorchColor == 0)
        set @Color, 5;
    callfunc("SetTorchColor");
    delitem "YellowPowder", 1;
    goto L_Show_Color;

L_Use_Blue:
    if (countitem("BluePowder") < 1)
        goto L_No_Powder;
    if (@TorchColor > 4 && @TorchColor < 9)
        set @Color, @TorchColor + 1;
    if (@TorchColor <= 12 && @TorchColor > 9)
        set @Color, @TorchColor - 1;
    if (@TorchColor == 1)
        set @Color, 12;
    if (@TorchColor == 0)
        set @Color, 9;
    callfunc("SetTorchColor");
    delitem "BluePowder", 1;
    goto L_Show_Color;

L_No_Powder:
    mes "You notice you're all out of that color powder. Perhaps Orum can make you some more.";
    close;

L_Show_Color:
    callfunc("GetTorchColor");
    callfunc("GetTorchIntensity");
    if (@TorchColor == @lastColor)
        goto L_Wrong_Color;
    misceffect 5;
    set @lastColor, @TorchColor;
    mes "As your pour the powder into the flame you can see its tint transform to a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + ".";
    goto L_Color_Loop;

L_Wrong_Color:
    set @Intensity, @TorchIntensity + 1;
    if (@Intensity > 2)
        goto L_Failed;
    callfunc("SetTorchIntensity");
    callfunc("GetTorchIntensity");
    misceffect 5;
    mes "As you pour the powder into the flame it flares violently for a moment and then turns into a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + ".";
    goto L_Color_Loop;

L_Failed:
    mes "As you pour the powder into the flame it flares violently before bursting into your face!";
    misceffect 5;
    misceffect 16;
    set @Intensity, 0;
    callfunc("SetTorchIntensity");
    heal -Hp, 0;
    close;
}


// Third Torch
009-4.gat,33,86,0|script|Torch|400,{
    callfunc "InRangeTorch3";
    callfunc "DoneWithTorches";

    set @Torch, 2;
    callfunc("GetTorchColor");
    callfunc("GetTorchIntensity");

    set @lastColor, @TorchColor;
    setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
    setarray @intensities$,"calm","bright","blinding";
    mes "Looking closely you notice that this torch is not like the others. This one has a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + " tint to it.";
    goto L_Color_Loop;

L_Too_Far:
    mes "You're too far away to do anything with that torch.";
    close;

L_Color_Loop:
    callfunc("GetTorchColor");
    menu
        "Add Red Powder", L_Use_Red,
        "Add Yellow Powder", L_Use_Yellow,
        "Add Blue Powder", L_Use_Blue,
        "Leave it alone.", -;
    mes "The flame flickers as if it's laughing at you.";
    close;

L_Use_Red:
    if (countitem("RedPowder") < 1)
        goto L_No_Powder;
    if (@TorchColor > 6 && @TorchColor < 12)
        set @Color, @TorchColor + 1;
    if (@TorchColor < 6 && @TorchColor > 1)
        set @Color, @TorchColor - 1;
    if (@TorchColor == 12)
        set @Color, 1;
    callfunc("SetTorchColor");
    delitem "RedPowder", 1;
    goto L_Show_Color;

L_Use_Yellow:
    if (countitem("YellowPowder") < 1)
        goto L_No_Powder;
    if (@TorchColor < 10 && @TorchColor > 5)
        set @Color, @TorchColor - 1;
    if (@TorchColor >= 1 && @TorchColor < 5)
        set @Color, @TorchColor + 1;
    callfunc("SetTorchColor");
    delitem "YellowPowder", 1;
    goto L_Show_Color;

L_Use_Blue:
    if (countitem("BluePowder") < 1)
        goto L_No_Powder;
    if (@TorchColor > 4 && @TorchColor < 9)
        set @Color, @TorchColor + 1;
    if (@TorchColor <= 12 && @TorchColor > 9)
        set @Color, @TorchColor - 1;
    if (@TorchColor == 1)
        set @Color, 12;
    callfunc("SetTorchColor");
    delitem "BluePowder", 1;
    goto L_Show_Color;

L_No_Powder:
    mes "You notice you're all out of that color powder. Perhaps Orum can make you some more.";
    close;

L_Show_Color:
    callfunc("GetTorchColor");
    callfunc("GetTorchIntensity");
    if (@TorchColor == @lastColor)
        goto L_Wrong_Color;
    misceffect 5;
    set @lastColor, @TorchColor;
    mes "As your pour the powder into the flame you can see its tint transform to a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + ".";
    goto L_Color_Loop;

L_Wrong_Color:
    set @Intensity, @TorchIntensity + 1;
    if (@Intensity > 2)
        goto L_Failed;
    callfunc("SetTorchIntensity");
    callfunc("GetTorchIntensity");
    misceffect 5;
    mes "As you pour the powder into the flame it flares violently for a moment and then turns into a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + ".";
    goto L_Color_Loop;

L_Failed:
    mes "As you pour the powder into the flame it flares violently before bursting into your face!";
    misceffect 5;
    misceffect 16;
    set @Intensity, 0;
    callfunc("SetTorchIntensity");
    heal -Hp, 0;
    close;
}