// #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;
}