use utf8;
my %CONS = ( # producing building
- r => ["rally point", 'pm'],
+ r => ['pm'],
);
my %UNIT = ( # any unit
- m => ["move", 'pm'],
- s => ["stop", 'pm'],
+ m => ['pm'],
+ s => ['pm'],
);
my %UNITF = ( # fighter
- p => ["patrol", 'pm'],
- h => ["hold", 'pm'],
+ p => ['pm'],
+ h => ['pm'],
);
my %UNITA = (
- a => ["attack", 'pm'],
+ a => ['pm'],
);
my %UNITB = (
- b => ["burrow", 'ci'],
+ b => ['ci'],
);
my %UNITH = (
%UNITA,
- g => ["gather", 'pm'],
- c => ["return cargo", 'pm'],
+ g => ['pm'],
+ c => ['pm'],
);
+{
+
'' => {
},
P => {
- desc => 'Protoss Probe',
%UNIT, %UNITH,
- b => ["build structure", 'me modePb'],
- v => ["build adv$sign{_}anced structure", 'me modePv'],
+ b => ['me modePb'],
+ v => ['me modePv'],
},
Pb => {
- desc => 'Protoss Probe build',
- n => ["nexus", 'mo modePbn'],
- p => ["pylon", 'me'],
- a => ["assimi$sign{_}lator", 'me'],
- g => ["gate$sign{_}way", 'mo modePbg'],
- f => ["forge", 'mv modePbf'],
- c => ["photon cannon", 'me'],
- y => ["cyber$sign{_}netics core", 'mv modePby'],
- b => ["shield batt$sign{_}ery", 'me modePbb'],
+ n => ['mo modePbn'],
+ p => ['me'],
+ a => ['me'],
+ g => ['mo modePbg'],
+ f => ['mv modePbf'],
+ c => ['me'],
+ y => ['mv modePby'],
+ b => ['me modePbb'],
},
Pbn => {
- desc => 'Protoss Nexus',
%CONS,
- p => ["probe", 'co modeP'],
+ p => ['co modeP'],
},
Pbg => {
- desc => 'Protoss Gateway',
%CONS,
- z => ["zealot", 'co'],
- d => ["dragoon", 'cp'],
- t => ["high templar", 'cp modePbgt'],
- k => ["dark templar", 'cp modePbgk'],
+ z => ['co'],
+ d => ['cp'],
+ t => ['cp modePbgt'],
+ k => ['cp modePbgk'],
},
Pbgt => {
- desc => 'Protoss High Templar',
%UNIT, %UNITF,
- t => ["psionic storm", 'ci'],
- l => ["halluci$sign{_}nation", 'ci'],
- r => ["archon warp", 'cp'],
+ t => ['ci'],
+ l => ['ci'],
+ r => ['cp'],
},
Pbgk => {
- desc => 'Protoss Dark Templar',
%UNIT, %UNITF, %UNITA,
- r => ["dark archon meld", 'cp modePbgkr'],
+ r => ['cp modePbgkr'],
},
Pbgkr => {
- desc => 'Protoss Dark Archon',
%UNIT, %UNITF,
- f => ["feed$sign{_}back", 'pm'],
- c => ["mind control", 'ci'],
- e => ["mael$sign{_}strom", 'ci'],
+ f => ['pm'],
+ c => ['ci'],
+ e => ['ci'],
},
Pbf => {
- desc => 'Protoss Forge',
- w => ["ground weap$sign{_}on$sign{_}s", 'mv'],
- a => ["ground armor", 'mv'],
- s => ["plasma shields", 'mv'],
+ w => ['mv'],
+ a => ['mv'],
+ s => ['mv'],
},
Pby => {
- desc => 'Protoss Cybernetics Core',
- w => ["air weap$sign{_}on$sign{_}s", 'mv'],
- a => ["air armor", 'mv'],
- s => ["dragoon range", 'mv'],
+ w => ['mv'],
+ a => ['mv'],
+ s => ['mv'],
},
Pbb => {
- desc => 'Protoss Shield Battery',
- r => ["recharge shields", 'pm'],
+ r => ['pm'],
},
Pv => {
- desc => 'Protoss Probe advanced build',
- r => ["robotics facility", 'mo modePvr'],
- s => ["stargate", 'mo modePvs'],
- c => ["citadel of adun", 'mv modePvc'],
- b => ["support bay", 'mv modePvb'],
- f => ["fleet beacon", 'mv modePvf'],
- t => ["templar archives", 'mv modePvt'],
- o => ["observa$sign{_}tory", 'mv modePvo'],
- a => ["arbiter tribunal", 'mv modePva'],
+ r => ['mo modePvr'],
+ s => ['mo modePvs'],
+ c => ['mv modePvc'],
+ b => ['mv modePvb'],
+ f => ['mv modePvf'],
+ t => ['mv modePvt'],
+ o => ['mv modePvo'],
+ a => ['mv modePva'],
},
Pvr => {
- desc => 'Protoss Robotics facility',
%CONS,
- s => ["shuttle", 'co'],
- o => ["observer", 'cp'],
- v => ["reaver", 'cp modePvrv'],
+ s => ['co'],
+ o => ['cp'],
+ v => ['cp modePvrv'],
},
Pvrv => {
- desc => 'Protoss Reaver',
%UNIT, %UNITF, %UNITA,
- r => ["scarab", 'co'],
+ r => ['co'],
},
Pvs => {
- desc => 'Protoss Stargate',
%CONS,
- s => ["scout", 'co'],
- c => ["carrier", 'cp modePvsc'],
- a => ["arbiter", 'cp modePvsa'],
- o => ["corsair", 'co modePvso ext'],
+ s => ['co'],
+ c => ['cp modePvsc'],
+ a => ['cp modePvsa'],
+ o => ['co modePvso ext'],
},
Pvsc => {
- desc => 'Protoss Carrier',
%UNIT, %UNITF, %UNITA,
- i => ["inter$sign{_}ceptor", 'co'],
+ i => ['co'],
},
Pvsa => {
- desc => 'Protoss Arbiter',
%UNIT, %UNITF, %UNITA,
- r => ["recall"],
- t => ["statis field"],
+ r => [undef],
+ t => [undef],
},
Pvso => {
- desc => 'Protoss Corsair',
%UNIT, %UNITF, %UNITA,
- d => ["disrup$sign{_}tion web", 'ci'],
+ d => ['ci'],
},
Pvc => {
- l => ["leg en$sign{_}hancem$sign{_}ent$sign{_}s", 'mv'],
+ l => ['mv'],
},
Pvb => {
- s => ["scarab damage", 'mv'],
- c => ["reaver capacity", 'mv'],
- g => ["gravitic drive", 'mv'],
+ s => ['mv'],
+ c => ['mv'],
+ g => ['mv'],
},
Pvf => {
- a => ["apial sensors", 'mv'],
- g => ["gravitic thrust$sign{_}ers", 'mv'],
- c => ["carrier capacity", 'mv'],
- d => ["disrup$sign{_}tion web", 'mv ext'],
- j => ["argus jewel", 'mv'],
+ a => ['mv'],
+ g => ['mv'],
+ c => ['mv'],
+ d => ['mv ext'],
+ j => ['mv'],
},
Pvt => {
- desc => 'Protoss Templar Archives',
- t => ["psionic storm", 'mv'],
- h => ["halluci$sign{_}nation", 'mv'],
- k => ["khayda$sign{_}rin amul$sign{_}et", 'mv'],
-# c => ["mind control?", 'mv'], #TODO
- e => ["mael$sign{_}strom", 'mv'],
- t => ["argus talisman", 'mv'],
+ t => ['mv'],
+ h => ['mv'],
+ k => ['mv'],
+# c => ['mv'], #TODO
+ e => ['mv'],
+ t => ['mv'],
},
Pvo => {
- desc => 'Protoss Observatory',
- g => ["gravitic booster", 'mv'],
- s => ["sensor array", 'mv'],
+ g => ['mv'],
+ s => ['mv'],
},
Pva => {
- desc => 'Protoss Arbiter Tribunal',
- r => ["recall", 'mv'],
- s => ["stasis field", 'mv'],
- k => ["khayda$sign{_}rin core", 'mv'],
+ r => ['mv'],
+ s => ['mv'],
+ k => ['mv'],
},
Z => {
- desc => 'Zerg Larva',
- d => ["drone", 'co modeZd'],
- z => ["zergling", 'cp'],
- o => ["overlord", 'co modeZo'],
- h => ["hydra$sign{_}lisk", 'cp modeZh'],
- q => ["queen", 'mv modeZq'],
+ d => ['co modeZd'],
+ z => ['cp'],
+ o => ['co modeZo'],
+ h => ['cp modeZh'],
+ q => ['mv modeZq'],
},
Zd => {
- desc => 'Zerg Drone',
%UNIT, %UNITH, %UNITB,
- b => ["basic mutat$sign{_}ion", 'me modeZdb'],
- v => ["advance$sign{_}d mutat$sign{_}ion", 'me modeZdv'],
+ b => ['me modeZdb'],
+ v => ['me modeZdv'],
},
Zdb => {
- desc => 'Zerg basic Drone mutation',
- h => ["hatche$sign{_}ry", 'mo modeZdbh'],
- c => ["creep colony", 'mo modeZdbc'],
- e => ["extrac$sign{_}tor", 'me'],
- s => ["spawning pool", 'mv modeZdbs'],
- v => ["evolution chamber", 'mv modeZdbv'],
- d => ["hydra$sign{_}lisk den", 'mv modeZdbd'],
+ h => ['mo modeZdbh'],
+ c => ['mo modeZdbc'],
+ e => ['me'],
+ s => ['mv modeZdbs'],
+ v => ['mv modeZdbv'],
+ d => ['mv modeZdbd'],
},
Zdbh => {
- desc => 'Zerg Hatchery',
%CONS,
- b => ["burrow", 'me'],
- s => ["select larvae", 'pm modeZ'],
- l => ["lair", 'mo modeZdbhl'],
+ b => ['me'],
+ s => ['pm modeZ'],
+ l => ['mo modeZdbhl'],
},
Zdbhl => {
- desc => 'Zerg Lair',
%CONS,
- b => ["burrow", 'me'],
- v => ["ventral sacs", 'mv'],
- a => ["antennae", 'mv'],
- p => ["pneumatized carapace", 'mv'],
- h => ["hive", 'mo modeZdbhlh'],
+ b => ['me'],
+ v => ['mv'],
+ a => ['mv'],
+ p => ['mv'],
+ h => ['mo modeZdbhlh'],
},
modeZdbhlh => {
- desc => 'Zerg Hive',
%CONS,
- b => ["burrow", 'me'],
- v => ["ventral sacs", 'mv'],
- a => ["antennae", 'mv'],
- p => ["pneumatized carapace", 'mv'],
+ b => ['me'],
+ v => ['mv'],
+ a => ['mv'],
+ p => ['mv'],
},
Zdbs => {
- desc => 'Zerg Spawning Pool',
- m => ["metabol boost", 'mv'],
- a => ["adrenal glands", 'mv'],
+ m => ['mv'],
+ a => ['mv'],
},
Zdbv => {
- m => ["melee attack$sign{_}s", 'mv'],
- a => ["missile attack$sign{_}s", 'mv'],
- c => ["carapace", 'mv'],
+ m => ['mv'],
+ a => ['mv'],
+ c => ['mv'],
},
Zdbd => {
- desc => 'Zerg Hydralisk Den',
- m => ["muscular augments", 'mv'],
- g => ["grooved spines", 'mv'],
- l => ["lurker aspect", 'mv'],
+ m => ['mv'],
+ g => ['mv'],
+ l => ['mv'],
},
Zdv => {
- desc => 'Zerg advanced Drone mutation',
},
+}