Как я это реализовал на mmc:
$U::Cast = undef;
$U::TargetCast = undef;
@U::AllCast = ("сила пре",
"драконий инт",
"проз",
"быс",
"выносливость тро",
"эльфийскаЯ кра",
"щит",
"пла",
"пол",
"видеть нев",
"видеть маг",
"видеть лов",
"инф",
"зака",
"шкура дра",
"шкура тро",
"антимагическаЯ защ",
"эфирный щит",
"внутреннее теп",
"доб",
"подводное дых",
"пре",
"благословение огн",
"нев",
"тени мра",
"дос",
"ледЯной щит",
"огненный щит",
"мистическаЯ сфе",
"электрощ");
sub NextCast($){
if($U::Cast == $#U::AllCast){
$U::Cast = 0;
disable(CAST)
}
else{
if($U::AllCast[$U::Cast] eq $_[0].$_[1]){
$U::Cast++;
if($U::TargetCast){
sendl("cast \'$U::AllCast[$U::Cast]\' $U::TargetCast")
}
else{
sendl("cast \'$U::AllCast[$U::Cast]\'")
}
}
}
return($U::Cast)
}
sub RepiteCast($){
if($U::TargetCast){
sendl("cast \'$U::AllCast[$U::Cast]\' $U::TargetCast")
}
else{
sendl("cast \'$U::AllCast[$U::Cast]\'")
}
return($U::Cast)
}
alias{
$U::Cast = 0;
$U::TargetCast = "@_";
enable(CAST);
if($U::TargetCast){
sendl("cast \'$U::AllCast[$U::Cast]\' $U::TargetCast")
}
else{
sendl("cast \'$U::AllCast[$U::Cast]\'")
}
} "обкаст";
trig { NextCast("сила пре") } 'Сила предков влилась в ваши жилы, вы стали сильнее\.$', "-n:CAST";
trig { NextCast("сила пре") } 'Мускулы \w+ налились силой\.$', "-n:CAST";
trig { NextCast("драконий инт") } 'Ваш интеллект повысилсЯ\.$', "-n:CAST";
trig { NextCast("драконий инт") } '\w+ выглЯдит умнее\.$', "-n:CAST";
trig { NextCast("проз") } 'Вы стали мудрее и прозорливее\.$', "-n:CAST";
trig { NextCast("проз") } 'В глазах \w+ зажегсЯ огонек мудрости\.$', "-n:CAST";
trig { NextCast("быс") } '\w+ \w+ ускорились\.$', "-n:CAST";
trig { NextCast("выносливость тро") } 'Ваша выносливость увеличилась\.$', "-n:CAST";
trig { NextCast("выносливость тро") } '\w+ выглЯдит более вынослив(?:ым|ой)\.$', "-n:CAST";
trig { NextCast("эльфийскаЯ кра") } '\w+ \w+ осветились эльфийской красотой\.$', "-n:CAST";
trig { NextCast("щит") } 'Аура голубоватой энергии окружила \w+\.$', "-n:CAST";
trig { NextCast("пла") } '\w+ \w+ повысилась\.$', "-n:CAST";
trig { NextCast("пол") } 'Вы поднЯлись над землей\.$', "-n:CAST";
trig { NextCast("пол") } '\w+, покачиваЯсь, взлетел(?:а|о)? в воздух\.$', "-n:CAST";
trig { NextCast("видеть нев") } 'Вы обрели возможность видеть невидимое\.$', "-n:CAST";
trig { NextCast("видеть маг") } 'Вы начали видеть голубое свечение вокруг магических объектов\.$', "-n:CAST";
trig { NextCast("видеть лов") } 'Теперь вы чувствуете ловушки\.$', "-n:CAST";
trig { NextCast("инф") } '\w+ получил(?:а|о|и)? способность видеть в темноте\.$', "-n:CAST";
trig { NextCast("зака") } 'Ваша кожа стала твердой, как камень\.$', "-n:CAST";
trig { NextCast("шкура дра") } 'Ваша кожа стала прочной, как шкура дракона\.$', "-n:CAST";
trig { NextCast("шкура тро") } 'Ваша кожа стала толстой, как шкура троллЯ\.$', "-n:CAST";
trig { NextCast("антимагическаЯ защ") } 'Прозрачный экран, отталкивающий любую магию, окружил вас\.$', "-n:CAST";
trig { NextCast("эфирный щит") } 'Вы защищены от влиЯниЯ вредных энергий\.$', "-n:CAST";
trig { NextCast("внутреннее теп") } 'Ваше тело налилось теплом\.$', "-n:CAST";
trig { NextCast("внутреннее теп") } '\w+ начал(?:а|о)? излучать тепло\.$', "-n:CAST";
trig { NextCast("доб") } 'Вы начали доблестно сопротивлЯтьсЯ любым попыткам оглушить и парализовать вас\.$', "-n:CAST";
trig { NextCast("доб") } '\w+ выглЯдит доблестно\.$', "-n:CAST";
trig { NextCast("подводное дых") } 'На \w+ (?:у )?\w+ выросли жабры\.$', "-n:CAST";
trig { NextCast("пре") } 'Вы предвидите будущее\.$', "-n:CAST";
trig { NextCast("пре") } '\w+ начал(?:а|о)? предвидеть будущее\.$', "-n:CAST";
trig { NextCast("благословение огн") } 'Ваша чувствительность к огню снизилась\.$', "-n:CAST";
trig { NextCast("нев") } 'Вы стали невидим(?:ым|ой)\.$', "-n:CAST";
trig { NextCast("нев") } '\w+ становитсЯ невидим(?:ым|ой)\.$', "-n:CAST";
trig { NextCast("тени мра") } 'Черные тени закрывают вас от врагов\.$', "-n:CAST";
trig { NextCast("дос") } '\w+ \w+ окружилось подобием магического доспеха\.$', "-n:CAST";
trig { NextCast("ледЯной щит") } 'Хоровод смертельно холодных льдинок окружил \w+\.$', "-n:CAST";
trig { NextCast("огненный щит") } 'Языки бушующего пламени окружили \w+ обжигающей стеной\.$', "-n:CAST";
trig { NextCast("мистическаЯ сфе") } 'Вокруг вас поЯвилась мистическаЯ сфера\.$', "-n:CAST";
trig { NextCast("электрощ") } 'Небольшие шаровые молнии начали кружить вокруг вашего тела\.$', "-n:CAST";
trig { RepiteCast($U::AllCast[$U::Cast]) } 'У вас зачесалось в носу в самый неподходЯщий момент\. Все стараниЯ пошли прахом\.$', "-n:CAST";
trig { RepiteCast($U::AllCast[$U::Cast]) } 'На середине фразы волшебнаЯ сила покинула вас\.$', "-n:CAST";
trig { RepiteCast($U::AllCast[$U::Cast]) } 'Вы не смогли сконцентрироватьсЯ\.$', "-n:CAST";
trig { RepiteCast($U::AllCast[$U::Cast]) } 'Что-то отвлекло вас, и заклинание не удалось\.$', "-n:CAST";
trig { RepiteCast($U::AllCast[$U::Cast]) } 'Камешек закатилсЯ в вашу обувь и помешал сосредоточитьсЯ\.$', "-n:CAST";
trig { RepiteCast($U::AllCast[$U::Cast]) } 'У вас кончилсЯ воздух в легких, и вы с шумом перевели дыхание\. Попробуйте еще раз\.$', "-n:CAST";
trig { RepiteCast($U::AllCast[$U::Cast]) } 'Вы закашлЯлись на середине фразы, заклинание сорвано\.\.\.$', "-n:CAST";
trig { NextCast($U::AllCast[$U::Cast]) } 'Вы не можете использовать это заклинание на других\.$', "-n:CAST";
trig { NextCast($U::AllCast[$U::Cast]) } 'Не удалось\.$', "-n:CAST";
trig { NextCast($U::AllCast[$U::Cast]) } 'Вы не умеете\.$', "-n:CAST";
(Добавление)
Как я это реализовал на jmc:
#alias {коаз} {кол 'антимагическаЯ защ'} {default}
#alias {кобо} {кол 'благословение огн'} {default}
#alias {ковл} {кол 'видеть лов'} {default}
#alias {ковм} {кол 'видеть маг'} {default}
#alias {ковн} {кол 'видеть нев'} {default}
#alias {ковт} {кол 'выносливость тро'} {default}
#alias {коди} {кол 'драконий инт'} {default}
#alias {колщ} {кол 'ледЯной щит'} {default}
#alias {комс} {кол 'мистическаЯ сфе'} {default}
#alias {коощ} {кол 'огненный щит'} {default}
#alias {копд} {кол 'подводное дых'} {default}
#alias {косп} {кол 'сила пре'} {default}
#alias {котм} {кол 'тени мра'} {default}
#alias {кошд} {кол 'шкура дра'} {default}
#alias {кошт} {кол 'шкура тро'} {default}
#alias {коэк} {кол 'эльфийскаЯ кра'} {default}
#alias {коэщ} {кол 'эфирный щит'} {default}
#alias {обкаст} {#var cast 1; #var ctar { }; #var ctar %1; косп %1} {default}
#alias {повтор} {#if {$cast == 1} {косп $ctar}; #if {$cast == 2} {коди $ctar}; #if {$cast == 3} {кол про $ctar}; #if {$cast == 4} {кол быс $ctar}; #if {$cast == 5} {ковт $ctar}; #if {$cast == 6} {коэк $ctar}; #if {$cast == 7} {кол щит $ctar}; #if {$cast == 8} {кол пла $ctar}; #if {$cast == 9} {кол пол $ctar}; #if {$cast == 10} {ковн $ctar}; #if {$cast == 11} {ковм $ctar}; #if {$cast == 12} {ковл $ctar}; #if {$cast == 13} {кол инф $ctar}; #if {$cast == 14} {кол доб $ctar}; #if {$cast == 15} {кол зак $ctar}; #if {$cast == 16} {кошд $ctar}; #if {$cast == 17} {кошт $ctar}; #if {$cast == 18} {коаз $ctar}; #if {$cast == 19} {коэщ $ctar}; #if {$cast == 20} {кол вну $ctar}; #if {$cast == 21} {кол пре $ctar}; #if {$cast == 22} {копд $ctar}; #if {$cast == 23} {кобо $ctar}; #if {$cast == 24} {кол нев $ctar}; #if {$cast == 25} {котм $ctar}; #if {$cast == 26} {кол дос $ctar}; #if {$cast == 27} {колщ $ctar}; #if {$cast == 28} {коощ $ctar}; #if {$cast == 29} {комс $ctar}; #if {$cast == 30} {кол электрощ $ctar}} {default}
#alias {следующий} {#if {$cast != 0} {#var cast {$cast + 1}; повтор $ctar}} {default}
#action {Сила предков влилась в ваши жилы, вы стали сильнее.} {#if {$cast == 1} {#var cast 2; коди $ctar}} {5} {default}
#action {Мускулы %1 налились силой.} {#if {$cast == 1} {#var cast 2; коди $ctar}} {5} {default}
#action {Ваш интеллект повысилсЯ.} {#if {$cast == 2} {#var cast 3; кол про $ctar}} {5} {default}
#action {%1 выглЯдит умнее.} {#if {$cast == 2} {#var cast 3; кол про $ctar}} {5} {default}
#action {Вы стали мудрее и прозорливее.} {#if {$cast == 3} {#var cast 4; кол быс $ctar}} {5} {default}
#action {В глазах %1 зажегсЯ огонек мудрости.} {#if {$cast == 3} {#var cast 4; кол быс $ctar}} {5} {default}
#action {%1 %2 ускорились.} {#if {$cast == 4} {#var cast 5; ковт $ctar}} {5} {default}
#action {Ваша выносливость увеличилась.} {#if {$cast == 5} {#var cast 6; коэк $ctar}} {5} {default}
#action {%1 выглЯдит более вынослив%2.} {#if {$cast == 5} {#var cast 6; коэк $ctar}} {5} {default}
#action {%1 %2 осветились эльфийской красотой.} {#if {$cast == 6} {#var cast 7; cast щит $ctar}} {5} {default}
#action {Аура голубоватой энергии окружила %1.} {#if {$cast == 7} {#var cast 8; кол пла $ctar}} {5} {default}
#action {%1 %2 повысилась.} {#if {$cast == 8} {#var cast 9; кол пол $ctar}} {5} {default}
#action {Вы поднЯлись над землей.} {#if {$cast == 9} {#var cast 10; ковн $ctar}} {5} {default}
#action {%1, покачиваЯсь, взлетел%2 в воздух.} {#if {$cast == 9} {#var cast 13; кол инф $ctar}} {5} {default}
#action {Вы обрели возможность видеть невидимое.} {#if {$cast == 10} {#var cast 11; ковм $ctar}} {5} {default}
#action {Вы начали видеть голубое свечение вокруг магических объектов.} {#if {$cast == 11} {#var cast 12; ковл $ctar}} {5} {default}
#action {Теперь вы чувствуете ловушки.} {#if {$cast == 12} {#var cast 14; кол доб $ctar}} {5} {default}
#action {%1 получил%2 способность видеть в темноте.} {#if {$cast == 13} {#var cast 14; кол доб $ctar}} {5} {default}
#action {Вы начали доблестно сопротивлЯтьсЯ любым попыткам оглушить и парализовать вас.} {#if {$cast == 14} {#var cast 15; кол зак $ctar}} {5} {default}
#action {%1 выглЯдит доблестно.} {#if {$cast == 14} {#var cast 20; кол вну $ctar}} {5} {default}
#action {Ваша кожа стала твердой, как камень.} {#if {$cast == 15} {#var cast 16; кошд $ctar}} {5} {default}
#action {Ваша кожа стала прочной, как шкура дракона.} {#if {$cast == 16} {#var cast 17; кошт $ctar}} {5} {default}
#action {Ваша кожа стала толстой, как шкура троллЯ.} {#if {$cast == 17} {#var cast 18; коаз $ctar}} {5} {default}
#action {Прозрачный экран, отталкивающий любую магию, окружил вас.} {#if {$cast == 18} {#var cast 19; коэщ $ctar}} {5} {default}
#action {Вы защищены от влиЯниЯ вредных энергий.} {#if {$cast == 19} {#var cast 20; кол вну $ctar}} {5} {default}
#action {Ваше тело налилось теплом.} {#if {$cast == 20} {#var cast 21; кол пре $ctar}} {5} {default}
#action {%1 начал%2 излучать тепло.} {#if {$cast == 20} {#var cast 21; кол пре $ctar}} {5} {default}
#action {Вы предвидите будущее.} {#if {$cast == 21} {#var cast 22; копд $ctar}} {5} {default}
#action {%1 начал%2 предвидеть будущее.} {#if {$cast == 21} {#var cast 22; копд $ctar}} {5} {default}
#action {На вашей шее выросли жабры.} {#if {$cast == 22} {#var cast 23; кобо $ctar}} {5} {default}
#action {На шее у %1 выросли жабры.} {#if {$cast == 22} {#var cast 24; кол нев $ctar}} {5} {default}
#action {Ваша чувствительность к огню снизилась.} {#if {$cast == 23} {#var cast 24; кол нев $ctar}} {5} {default}
#action {%1 становит%2 невидим%3.} {#if {$cast == 24} {#var cast 25; котм $ctar}} {5} {default}
#action {Черные тени закрывают вас от врагов.} {#if {$cast == 25} {#var cast 26; кол дос $ctar}} {5} {default}
#action {%1 %2 окружилось подобием магического доспеха.} {#if {$cast == 26} {#var cast 27; колщ $ctar}} {5} {default}
#action {Хоровод смертельно холодных льдинок окружил %1.} {#if {$cast == 27} {#var cast 28; коощ $ctar}} {5} {default}
#action {Языки бушующего пламени окружили %1 обжигающей стеной.} {#if {$cast == 28} {#var cast 29; комс $ctar}} {5} {default}
#action {Вокруг вас поЯвилась мистическаЯ сфера.} {#if {$cast == 29} {#var cast 30; комс $ctar}} {5} {default}
#action {Небольшие шаровые молнии начали кружить вокруг вашего тела.} {#if {$cast == 30} {#var cast 0}} {5} {default}
#action {У вас зачесалось в носу в самый неподходЯщий момент. Все стараниЯ пошли прахом.} {повтор $ctar} {5} {default}
#action {На середине фразы волшебнаЯ сила покинула вас.} {повтор $ctar} {5} {default}
#action {Вы не смогли сконцентрироватьсЯ.} {повтор $ctar} {5} {default}
#action {Что-то отвлекло вас, и заклинание не удалось.} {повтор $ctar} {5} {default}
#action {Камешек закатилсЯ в вашу обувь и помешал сосредоточитьсЯ.} {повтор $ctar} {5} {default}
#action {У вас кончилсЯ в легких воздух, и вы с шумом перевели дыхание. Попробуйте еще раз.} {повтор $ctar} {5} {default}
#action {Вы закашлЯлись на середине фразы, заклинание сорвано...} {повтор $ctar} {5} {default}
#action {Не удалось.} {следующий $ctar} {5} {default}
#action {Вы не умеете.} {следующий $ctar} {5} {default}
#action {Вы не можете использовать это заклинание на других.} {следующий $ctar} {5} {default}