summaryrefslogblamecommitdiff
path: root/npc/009-4/barriers.txt
blob: 26687017ea31f0dbe949a5444b8f871da9515b86 (plain) (tree)













































                                                                                         

                                                       





                                                                                                                    
                                 



                                                              
                                            




                                                              
                                            

                                                                                                                                              
                                 



                                                              

                                                                     




                                
                                                                      








                                                                                                                                                                         
                                                            



                                                                                                           
                                 



                                                              
                                            




                                                              


                                                                                                     
                                   
                                                                                                     


























                                                                                                                                                                         
                                                             


                
                                  



                                                              
                                             




                                                              

                                                                    



                                
                                       





























































































                                                                                                                                                                         
                                                             



                                                                                             
                                  



                                                              
                                             


                         
function	script	GetBarrierColor	{
    if (@Barrier < 0 || @Barrier > 2)
        goto L_Error;
    if (@BarrierColor <= 0 || @BarrierColor > 12)
        goto L_Error2;
    goto L_GetBarrierColor;

L_GetBarrierColor:
    @Mask = 15;
    @shift = 4 * @Barrier;
    @BarrierColor = (OrumQuestBarrier >> @shift) & @Mask;
    return;

L_Error:
    mes "Barrier number is out of range.";
    close2;
    return;

L_Error2:
    callfunc "SetUpOrumQuest";
    goto L_GetBarrierColor;
}

function	script	SetBarrierColor	{
    if (@Barrier < 0 || @Barrier > 2)
        goto L_Error;
    if (@BarrierColor <= 0 || @BarrierColor > 12)
        goto L_Error2;

    @Mask = (15 << (4 * @Barrier));
    OrumQuestBarrier = (OrumQuestBarrier & (~(@Mask))) | @BarrierColor << (4 * @Barrier);
    return;

L_Error:
    mes "Barrier number is out of range.";
    close2;
    return;

L_Error2:
    mes "Barrier color is out of range.";
    close2;
    return;
}


009-4,37,119,0	script	#OrumCaveStartMessage	NPC32767,0,0,{
    if (getq(MagicQuest_DarkMage) >= 3) end;
    if (getq(MagicQuest_DarkMage) == 2) goto L_Started;

    mes "As you try to pass, two torches begin to flare and push you back. They seem to form some kind of barrier.";
    close;

L_Started:
    message strcharinfo(0), "The torches dim as you approach, granting you passage.";
    setq(MagicQuest_DarkMage, 3);
    end;
}

009-4,37,120,0	script	#OrumCaveStartBarrier	NPC32767,0,0,{
    if (getq(MagicQuest_DarkMage) >= 3) end;
    warp "009-4", 37, 118;
    end;
}

009-4,57,29,0	script	#OrumCaveFirstBarrier	NPC32767,0,0,{
    if (getq(MagicQuest_DarkMage) >= 5) end;

    message strcharinfo(0), "Nothing seems to happen as you enter this room. The barrier must need both of its torches to function properly.";
    setq(MagicQuest_DarkMage, 5);
    end;
}

009-4,61,55,0	script	#OrumCaveSecondMessage	NPC32767,0,0,{
    if (getq(MagicQuest_DarkMage) >= 9) end;
    if (getq(MagicQuest_DarkMage) == 3) setq(MagicQuest_DarkMage, 4);

    @Barrier = 0;
    callfunc("GetBarrierColor");
    @Torch = 0;
    callfunc("GetTorchColor");
    if (getq(MagicQuest_DarkMage) > 7 && @TorchColor == @BarrierColor)
        goto L_Allow_Second_Passage;

    mes "As you try to pass, the torches begin to flare and push you back. Perhaps there's a way to get past it.";
    mes "";
    setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
    mes "Looking closely between the two torches you can see the barrier has a ##B" + @colors$[@BarrierColor] + "##b tint to it.";
    close;

L_Allow_Second_Passage:
    if (getq(MagicQuest_DarkMage) < 9) goto L_Advance_Quest;
    end;

L_Advance_Quest:
    message strcharinfo(0), "The torches dim as you enter like the first. You must be on the right trail.";
    setq(MagicQuest_DarkMage, 9);
    end;
}

009-4,61,54,0	script	#OrumCaveSecondBarrier	NPC32767,0,0,{
    if (getq(MagicQuest_DarkMage) >= 9) end;
    warp "009-4", 60, 56;
    end;
}

009-4,24,65,0	script	#OrumCaveThirdMessage	NPC32767,0,0,{
    if (getq(MagicQuest_DarkMage) >= 10) end;
    if (getq(MagicQuest_DarkMage) == 3) setq(MagicQuest_DarkMage, 4);
    if (getq(MagicQuest_DarkMage) > 8 && @Torch1Color == @firstColor && @Torch2Color == @secondColor)
        goto L_Allow_Third_Passage;
    if (getq(MagicQuest_DarkMage) > 8 && @Torch2Color == @firstColor && @Torch1Color == @secondColor)
        goto L_Allow_Third_Passage;

    @Barrier = 1;
    callfunc("GetBarrierColor");

    @Torch = 0;
    callfunc("GetTorchColor");
    @Torch1Color = @TorchColor;

    @Torch = 1;
    callfunc("GetTorchColor");
    @Torch2Color = @TorchColor;

    @firstColor = @BarrierColor - 2;
    @secondColor = @BarrierColor + 2;
    if (@firstColor < 1)
        @firstColor = 12;
    if (@secondColor > 12)
        @secondColor = 1;

    mes "As you try to pass, the torches begin to flare and push you back. Perhaps there is a way to get past it.";
    mes "";
    setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
    mes "Looking closely between the two torches you can see the barrier has a ##B" + @colors$[@BarrierColor] + "##b tint to it.";
    close;

L_Allow_Third_Passage:
    if (getq(MagicQuest_DarkMage) < 10) goto L_Advance_Quest;
    end;

L_Advance_Quest:
    setq(MagicQuest_DarkMage, 10);
    end;
}

009-4,24,66,0	script	#OrumCaveThirdBarrier	NPC32767,0,0,{
    if (getq(MagicQuest_DarkMage) >= 10) end;
    warp "009-4", 23, 64;
    end;
}

009-4,48,37,0	script	#OrumCaveEndMessage	NPC32767,0,0,{
    if (getq(MagicQuest_DarkMage) >= 11) end;
    if (getq(MagicQuest_DarkMage) == 3) setq MagicQuest_DarkMage, 4;

    @Barrier = 2;
    callfunc("GetBarrierColor");

    if (getq(MagicQuest_DarkMage) < 10)
        goto L_Deny_Final_Passage;

    @Torch = 0;
    callfunc("GetTorchColor");
    @Torch1Color = @TorchColor;

    @Torch = 1;
    callfunc("GetTorchColor");
    @Torch2Color = @TorchColor;

    @Torch = 2;
    callfunc("GetTorchColor");
    @Torch3Color = @TorchColor;

    // Extract the secondary color
    @secondary = @BarrierColor - 1;
    if (@secondary != 3 && @secondary != 7 && @secondary != 11)
        @secondary = @BarrierColor + 1;

    // Make sure it's in bounds
    if (@secondary > 12)
        @secondary = @secondary - 12;
    if (@secondary < 1)
        @secondary = @secondary + 12;

    // Extract first 2 required colors
    @firstColor = @secondary - 2;
    @secondColor = @secondary + 2;
    if (@firstColor > 12)
        @firstColor = @firstColor - 12;
    if (@firstColor < 1)
        @firstColor = @firstColor + 12;
    if (@secondColor > 12)
        @secondColor = @secondColor - 12;
    if (@secondColor < 1)
        @secondColor = @secondColor + 12;

    @thirdColor = 12;
    @offsetOne = @BarrierColor + 1;
    @offsetTwo = @BarrierColor - 1;

    // Make sure they in bounds
    if (@offsetOne > 12)
        @offsetOne = @offsetOne - 12;
    if (@offsetOne < 1)
        @offsetOne = @offsetOne + 12;
    if (@offsetTwo > 12)
        @offsetTwo = @offsetTwo - 12;
    if (@offsetTwo < 1)
        @offsetTwo = @offsetTwo + 12;

    // Extract third needed color
    if (@secondary == @offsetOne)
        @thirdColor = @firstColor;
    if (@secondary == @offsetTwo)
        @thirdColor = @secondColor;

    @firstDone = 0;
    @secondDone = 0;
    @thirdDone = 0;

    if (@firstDone == 0 && @secondDone != 1 && @thirdDone != 1 && @Torch1Color == @firstColor)
        @firstDone = 1;
    if (@firstDone != 1 && @secondDone == 0 && @thirdDone != 1 && @Torch1Color == @secondColor)
        @secondDone = 1;
    if (@firstDone != 1 && @secondDone != 1 && @thirdDone == 0 && @Torch1Color == @thirdColor)
        @thirdDone = 1;

    if (@firstDone == 0 && @secondDone != 2 && @thirdDone != 2 && @Torch2Color == @firstColor)
        @firstDone = 2;
    if (@firstDone != 2 && @secondDone == 0 && @thirdDone != 2 && @Torch2Color == @secondColor)
        @secondDone = 2;
    if (@firstDone != 2 && @secondDone != 2 && @thirdDone == 0 && @Torch2Color == @thirdColor)
        @thirdDone = 2;

    if (@firstDone == 0 && @secondDone != 3 && @thirdDone != 3 && @Torch3Color == @firstColor)
        @firstDone = 3;
    if (@firstDone != 3 && @secondDone == 0 && @thirdDone != 3 && @Torch3Color == @secondColor)
        @secondDone = 3;
    if (@firstDone != 3 && @secondDone != 3 && @thirdDone == 0 && @Torch3Color == @thirdColor)
        @thirdDone = 3;

    if (@firstDone != 0 && @secondDone != 0 && @thirdDone != 0)
        goto L_Allow_Final_Passage;
    goto L_Deny_Final_Passage;

L_Deny_Final_Passage:
    mes "As you try to pass, the torches begin to flare and push you back. Perhaps there is a way to get past it.";
    mes "";
    setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
    mes "Looking closely between the two torches you can see the barrier has a ##B" + @colors$[@BarrierColor] + "##b tint to it.";
    close;

L_Allow_Final_Passage:
    if (getq(MagicQuest_DarkMage) < 11) goto L_Advance_Quest;
    end;

L_Advance_Quest:
    message strcharinfo(0), "The torches dim as you enter. At last you finally have access!";
    setq(MagicQuest_DarkMage, 11);
    end;
}

009-4,48,38,0	script	#OrumCaveEndBarrier	NPC32767,0,0,{
    if (getq(MagicQuest_DarkMage) >= 11) end;
    warp "009-4", 47, 36;
    end;
}