summaryrefslogblamecommitdiff
path: root/npc/magic/level0-reapercry.txt
blob: 633f9a05b736418fd1f462b92feb61c417829274 (plain) (tree)
































































































































































































































                                                                    
                         

        
// #reapercry
// Spell to warp to Keshlam Outskirts
// Variable: @reapercry -> Holds summon state
//
// If this was Evol2 engine, I would be able to easily use bitmasks,
// Having a custom password sequence unique per character.
// But alas, on TMWA, I can't really abuse player variables.
// So I allow you to cheat. Or not. Lemme think. Account variable...
// This is actually an old script and I'm too lazy to redo.

// Returns true if player inside candle area
// call("alacriuspos", bitwise)

function	script	alacriuspos	{
    @alacriusp = 0;

    // Left side
    if (1 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
        goto L_25_53_29_56;
    if (2 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
        goto L_20_47_22_51;
    if (4 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
        goto L_22_40_25_43;
    if (8 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
        goto L_29_40_32_43;
    if (16 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
        goto L_32_47_35_50;
    if (32 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
        goto L_25_53_29_56;
    // Left not set
    if (1 == getarg(0))
        goto L_29_40_32_43;
    if (2 == getarg(0))
        goto L_32_47_35_50;
    if (4 == getarg(0))
        goto L_25_53_29_56;
    if (8 == getarg(0))
        goto L_20_47_22_51;
    if (16 == getarg(0))
        goto L_22_40_25_43;
    if (32 == getarg(0))
        goto L_29_40_32_43;
    // Right side
    if (64 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
        goto L_49_53_53_56;
    if (128 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
        goto L_43_47_46_51;
    if (256 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
        goto L_46_40_49_43;
    if (512 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
        goto L_53_40_56_43;
    if (1024 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
        goto L_56_47_58_50;
    if (2048 == getarg(0) && #CRYPT_PASSWORD & getarg(0))
        goto L_49_53_53_56;
    // Right side not set
    if (64 == getarg(0))
        goto L_53_40_56_43;
    if (128 == getarg(0))
        goto L_56_47_58_50;
    if (256 == getarg(0))
        goto L_49_53_53_56;
    if (512 == getarg(0))
        goto L_43_47_46_51;
    if (1024 == getarg(0))
        goto L_46_40_49_43;
    if (2048 == getarg(0))
        goto L_53_40_56_43;

    // Nope, all wrong
    @alacriusp = 0;
    return;

L_29_40_32_43:
    @alacriusp = isin("027-8", 29, 40, 32, 43);
    return;
L_22_40_25_43:
    @alacriusp = isin("027-8", 22, 40, 25, 43);
    return;
L_20_47_22_51:
    @alacriusp = isin("027-8", 20, 47, 22, 51);
    return;
L_25_53_29_56:
    @alacriusp = isin("027-8", 25, 53, 29, 56);
    return;
L_32_47_35_50:
    @alacriusp = isin("027-8", 32, 47, 35, 50);
    return;

L_53_40_56_43:
    @alacriusp = isin("027-8", 53, 40, 56, 43);
    return;
L_46_40_49_43:
    @alacriusp = isin("027-8", 46, 40, 49, 43);
    return;
L_43_47_46_51:
    @alacriusp = isin("027-8", 43, 47, 46, 51);
    return;
L_49_53_53_56:
    @alacriusp = isin("027-8", 49, 53, 53, 56);
    return;
L_56_47_58_50:
    @alacriusp = isin("027-8", 56, 47, 58, 50);
    return;

}

function	script	Reapercry	{
    // Not in Terogan's Room
    if (getmapname() != "027-8") end;

    // Terogan is asleep
    if (!$@CRYPT_FIGHT3) end;

    // No password is set o.o
    if (!#CRYPT_PASSWORD) end;

    // Switch the quest state
    if (@reapercry == 0)
        goto L_Check0;
    if (@reapercry == 1)
        goto L_Check1;
    if (@reapercry == 2)
        goto L_Check2;
    if (@reapercry == 3)
        goto L_Check3;
    if (@reapercry == 4)
        goto L_Check4;
    if (@reapercry == 5)
        goto L_Check5;

    // Something went wrong!!
    end;

L_Check0:
    callfunc("alacriuspos", 1);
    if (@alacriusp) goto L_Exec0;
    callfunc("alacriuspos", 64);
    if (@alacriusp) goto L_Exec0;

    @reapercry = 0;
    misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
    end;

L_Exec0:
    misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME
    @reapercry = 1;
    end;

L_Check1:
    callfunc("alacriuspos", 2);
    if (@alacriusp) goto L_Exec1;
    callfunc("alacriuspos", 128);
    if (@alacriusp) goto L_Exec1;

    @reapercry = 0;
    misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
    end;

L_Exec1:
    misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME
    @reapercry = 2;
    end;

L_Check2:
    callfunc("alacriuspos", 4);
    if (@alacriusp) goto L_Exec2;
    callfunc("alacriuspos", 256);
    if (@alacriusp) goto L_Exec2;

    @reapercry = 0;
    misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
    end;

L_Exec2:
    misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME
    @reapercry = 3;
    end;

L_Check3:
    callfunc("alacriuspos", 8);
    if (@alacriusp) goto L_Exec3;
    callfunc("alacriuspos", 512);
    if (@alacriusp) goto L_Exec3;

    @reapercry = 0;
    misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
    end;

L_Exec3:
    misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME
    @reapercry = 4;
    end;

L_Check4:
    callfunc("alacriuspos", 16);
    if (@alacriusp) goto L_Exec4;
    callfunc("alacriuspos", 1024);
    if (@alacriusp) goto L_Exec4;

    @reapercry = 0;
    misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
    end;

L_Exec4:
    misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME
    @reapercry = 5;
    end;

L_Check5:
    callfunc("alacriuspos", 32);
    if (@alacriusp) goto L_Exec5;
    callfunc("alacriuspos", 2048);
    if (@alacriusp) goto L_Exec5;

    @reapercry = 0;
    misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0);
    end;

L_Exec5:
    // This means cast sequence complete
    // Maybe FX_MAGIC_BLUE_TELEPORT? (iilia's effect)
    @reapercry = 0;
    getexp 100000, 0;
    misceffect FX_MAGIC_TELEPORT, strcharinfo(0);
    warp "099-7", 95, 52;
    end;
}