diff options
Diffstat (limited to 'npc/magic/level0-reapercry.txt')
-rw-r--r-- | npc/magic/level0-reapercry.txt | 228 |
1 files changed, 228 insertions, 0 deletions
diff --git a/npc/magic/level0-reapercry.txt b/npc/magic/level0-reapercry.txt new file mode 100644 index 00000000..1b6f07d5 --- /dev/null +++ b/npc/magic/level0-reapercry.txt @@ -0,0 +1,228 @@ +// #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", 75, 36; + end; +} |