 |
shalimar GURU

Joined: 04 Aug 2002 Posts: 4794 Location: Pensacola, FL, USA
|
Posted: Mon May 19, 2008 9:06 pm
[2.25] db var - i broke them again |
Its up to 1850 members now. I can post if needed.
the trigger is: #TR {%q{@myKills}} {#CW saddlebrown} |
|
|
|
 |
Vijilante SubAdmin

Joined: 18 Nov 2001 Posts: 5187
|
Posted: Tue May 20, 2008 12:08 am |
There is a limit in the regex engine for the size of the compiled pattern. I left it at the default which is 16 bit. I can easily change it for a future version to its maximum which is a 30 bit limit. Increasing the limit will cause all patterns to use a bit more memory, but the increase in usage would be rather small for most patterns. I didn't do it before becuase I hadn't fully studied how that particular setting interracted and couldn't determine what sort of a speed impact there would be. I also didn't think anyone was going to need that large of a pattern. At least this rebuild of the dll is painless.
On a seperate issue it looks like you use that variable for a kill counter as well. Because the regex has to be compiled everytime you change the variable I would suggest that you use seperate lists for triggerring. You can split the lists at specific letter ranges, and then only when you actually add a new mob would you cause a compile. Compiling such a large pattern is not a very fast operation, and it looks like you are losing a fair amount of speed with the way you are doing it now. |
|
_________________ The only good questions are the ones we have never answered before.
Search the Forums |
|
|
 |
shalimar GURU

Joined: 04 Aug 2002 Posts: 4794 Location: Pensacola, FL, USA
|
Posted: Tue May 20, 2008 6:16 am |
what would be my best way to sort this into various variables if i wanted it by ethnicity?
| Code: |
#ALIAS killSort {
$wildlife="wolf|dog|cat|lion|etc"
$ethnic="troll|dwarf|thief|wizard|etc"
#LOOPDB @myKills {
#SWITCH (%match(%key, "{$wildlife}")) {#ADDI wildlife {%key}}
(%match(%key, "({$ethnic})", $thisEthnic)) {#ADDI ${thisEthnic} {%key}}
{#ADDI otherKills {%key}}
}
} |
i havent tested that, but is there a better way to do this? |
|
|
|
 |
Larkin Wizard

Joined: 25 Mar 2003 Posts: 1113 Location: USA
|
Posted: Tue May 20, 2008 2:32 pm |
Zugg said that data record variables should only expand with the keys in a pattern, but that screenshot seems to show key=value expansion instead. Is this a bug?
|
|
|
|
 |
Zugg MASTER

Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
|
Posted: Wed May 21, 2008 5:19 am |
Looks like his variable is set to a string list instead of a database record. That would cause the key=value to be included in the pattern.
|
|
|
|
 |
Larkin Wizard

Joined: 25 Mar 2003 Posts: 1113 Location: USA
|
Posted: Wed May 21, 2008 11:30 am |
The subject says "db var" and he's using #LOOPDB to iterate over the myKills variable...
|
|
|
|
 |
Zugg MASTER

Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
|
Posted: Wed May 21, 2008 7:51 pm |
Right...but if the "type" of the variable is set to StringList in the settings editor, then it will be treated like a string list instead of a database variable. It's the only way I could see it adding the key=value to the trigger pattern. Testing this myself doesn't show the =value part added for database variables, so I think it's converting database variables properly normally.
|
|
|
|
 |
shalimar GURU

Joined: 04 Aug 2002 Posts: 4794 Location: Pensacola, FL, USA
|
Posted: Thu May 22, 2008 8:26 pm |
The variable was set to 'Database record' when i checked.
The following is pasted from the xml view for the class this is in
| Code: |
<var name="myKills" type="Record" sorted="true" id="14">able-bodied hunter=1|abnormal mutant=1|absorbed hedge wizard=2|accountant=9|adorable rabbit=1|adorable vulture chick=1|affluent citizen=10|Agatean ambassador=1|Agatean boatswain=1|Agatean spy=1|aged bodyguard=1|aged rujona=4|ageing black horse=1|ageing red roan horse=1|ageing skewbald horse=1|ageing yellowish horse=1|aggressive boatswain=1|aggressive bodyguard=1|aggressive man=1|aggressive weapons master=1|aggressive woman=1|agile warrior=3|agile warrior mercenary=4|aging blood bay horse=1|agitator=6|alcoholic barge sailor=4|alert Fang bodyguard=1|alert Hong bodyguard=3|alert McSweeney bodyguard=4|alert palace guard=1|alert patroller=2|alert red dog fox=1|alert Tang bodyguard=4|Alice Cloye=1|ancient green alligator=1|angry dwarf fighter=2|angry dwarf warrior=3|angry fighter=2|angry human fighter=2|angry rogue=3|angry strongarm=1|angry troll fighter=1|angry weapons master=2|annoyed peasant=2|annoying bum=1|annoying child=2|anting quail=1|anxious brawler=1|anxious merchant=2|apprentice musketeer=3|architect=4|army officer=14|arrogant citizen=14|arrogant Fang nobleman=1|arrogant hunter=1|arrogant man=2|arrogant woman=1|Arthouse=4|arthritic grflx worker=6|ashamed ronin=3|ash-covered charcoal burner=1|assertive fighter=1|attractive farmer=1|Auriental spitz dog=1|awkward vulture chick=1|baby alligator=1|badger=1|bald Hong bodyguard=5|bald McSweeney bodyguard=3|bald Sung bodyguard=3|bald Tang bodyguard=4|bald yeti=1|bandit=136|bandit leader=8|bandit sentry=7|barkeep=1|barman=4|Baron Allan Boudreaux=1|bawdy fighter=1|bear=7|bearded D'reg=1|bearded yellow zombie=1|bear-like Lipwigzer=1|beautiful athletic woman=25|beautiful black horse=1|beautiful dapple grey horse=1|beautiful female captive=6|beautiful hunter=2|beautiful noblewoman=1|beautiful old woman=1|beautiful red roan horse=1|bedraggled pigeon=2|beekeeper=1|begging bum=1|belligerent dwarf warrior=3|belly dancer=3|benign young fighter=1|Benoit Latourette=1|bent hengeyokai=1|bent witch=1|besotted dwarf warrior=2|big boned hog=1|big boned sow=1|big businessman=1|big businesswoman=1|big shaggy lion=7|bitter barbarian=1|bitter palace guard=1|black bear=5|black boarhound=2|black crab=1|black Quirmian terrier=1|black rat=3|black scorpion=1|black star finch=1|black wolf=4|blackbird=1|bleary-eyed child=1|blind bum=1|bloated bullfrog=7|bloodthirsty pirate=3|blue crab=1|blue-cap finch=1|boastful barbarian=1|boastful deckhand=1|boastful sailor=1|bodyguard=27|bold Fang bodyguard=1|bold Hong bodyguard=3|bold McSweeney bodyguard=3|bold Sung bodyguard=3|bold Tang bodyguard=1|bored barbarian=1|bored birdwatcher=1|bored deckhand=1|bored Fang dealer=1|bored grflx worker=6|bored Hong dealer=1|bored palace guard=1|bored sailor=2|bored vendor=1|bored warehouse worker=1|boring man=1|boring peasant=3|boring troll=1|bossy crone=1|bossy dapple grey foal=1|bossy grey and white foal=1|bossy grflx workleader=4|bossy red roan foal=1|bossy yellowish foal=1|bouncy chestnut foal=1|bouncy dun foal=1|bouncy grey and white foal=2|bouncy grey foal=1|bouncy red roan foal=1|bouncy sheep=1|bouncy sparrow=2|bow legged young fighter=1|Boy Willie=5|brave Hong samurai=2|brave McSweeney samurai=1|brawny bodyguard=1|brawny Djelian soldier=6|brawny Ephebian soldier=1|brawny sailor=1|brawny troll warrior=1|brawny Tsortean soldier=4|bridge troll=1|brigand=24|brigand leader=4|bright red dog fox=1|bright red vixen=1|bright rujona=1|bright sparrow=3|bright-eyed red dog fox=1|bright-eyed red vixen=1|bright-eyed servant=1|brilliant blue lizard=1|brilliant red lizard=1|bristled hog=1|bristly dwarf=1|broad-shouldered crewman=1|broad-shouldered first mate=1|broad-shouldered skipper=1|brown blackbird=2|brown rat=2|brown wolf=2|brutal Fang samurai=2|brutal Fang thug=1|brutal Hong samurai=2|brutal Hong thug=2|brutal McSweeney samurai=1|brutal McSweeney thug=1|brutal Sung thug=2|brutal Tang samurai=1|brutal Tang thug=1|buck toothed bodyguard=1|buff-necked ibis=1|bulky dwarf=1|bulky dwarf fighter=2|bulky human fighter=1|bulky troll fighter=1|bulky tsimo wrestler=2|bulky white bear=2|burly bodyguard=1|burly captain=1|burly citizen=12|burly dwarf warrior=2|burly labourer=3|burly man=3|burly officer=5|burly smuggler=2|burly soldier=17|burly strongarm=3|burly troll=1|busty D'reg woman=2|busy Hong merchant=1|busy-looking scruffy man=1|cabbage farmer=1|cabbage hound=1|calcareous troll=1|calm dwarf=1|calm woman=1|calm young fighter=1|camel herder=1|Captain Ptargos=1|carousel operator=1|carter=4|Casanunda=2|cashier=2|cautious Fang merchant=1|cautious patroller=3|cautious scorpion=1|ceremonial guard=15|ceremonial sentry=9|Charisse of Gapp=7|Charles Marchella=5|charming gentleman=6|cheerful brown pointer=1|cheerful child=3|cheerful maid=1|cheerful party-goer=1|cheerful stablehand=1|cheerful witch=1|chequered quail=1|chipmunk=1|chipper party-goer=2|chiselled nitsuni=4|chivalrous Fang samurai=1|chivalrous musketeer=1|chivalrous Sung samurai=1|chivalrous Tang samurai=1|choleric bodyguard=1|chow chow dog=1|Christopher of Gufnork=1|chubby baby grflx=4|chubby child=8|chubby Djelian recruit=1|chubby Ephebian recruit=1|chubby red dog fox=1|chubby red vixen=1|cigarette girl=2|city guard=92|city sergeant=8|clean street sweeper=1|clever Hublandish barbarian=3|clever sensei=1|clever thief=1|coachman mouse=14|cockroach=3|cocky Fang nobleman=1|cocky youth=1|Coffee Nostra hitman=3|comely hunter=1|commanding knight=2|commercial banker=2|complacent child=1|complacent fighter=1|complacent Hong nobleman=1|complacent McSweeney nobleman=1|complacent Sung nobleman=1|complacent Tang nobleman=2|consumptive opera singer=1|contemplative captain=2|contemplative citizen=15|contemplative officer=1|contemplative soldier=26|content blackbird=2|content sparrow=1|content starling=1|cooing penguin=1|corpse-eating rat=1|courageous ranger=2|courteous child=1|courteous musketeer=2|cowardly pickpocket=1|crabby crab=1|crafty monk=12|craven Hong thug=2|craven McSweeney thug=4|craven Sung thug=3|craven Tang thug=1|crazy mystic=2|creamy wolf=1|creepy child=2|cringing dog=1|croaking bullfrog=3|cross-eyed fighter=1|cruel captain=1|cruel deckhand=1|cruel pirate=4|cruel seafarer=1|cruel second mate=1|cruel skipper=1|cucumber farmer=1|cuddly rabbit=1|cunning Fang bodyguard=1|cunning Hong bodyguard=2|cunning McSweeney bodyguard=3|cunning mongrel=1|cunning Sung bodyguard=1|cunning Tang bodyguard=2|curious grass wolf=1|curly-coated retriever=1|cute baby grflx=4|cute blackbird=3|cute rabbit=1|cute Ramtop sheep=1|cute sheep=3|cute starling=1|Cuthbert the Amazing Leaping Alligator=4|cynical palace guard=2|Daddy Clown=1|Dame Sufferland=7|dancing noblewoman=3|dangerous fighter=1|Danniell of Gapp=4|Daphne the Leshpian Thespian=1|dapper gentleman=3|dappled doe=1|dappled thrush=1|dark nitsuni=1|dark ranger=1|darling camel=1|dashing brigand=1|dashing hunter=1|dashing musketeer=4|dastardly fighter=3|deadly fighter=1|deadly warrior mercenary=7|debonair man=1|debonair musketeer=2|debonair woman=1|decorative Lancre cat=1|decrepit royal judge=1|dejected beggar=1|Delbert=8|delicate doe=1|delicate fawn=1|delicate grey and white horse=2|delicate grey horse=1|delicate red vixen=1|demented fighter=3|depressed beggar=4|depressed cadger=2|depressed sailor=1|deranged fighter=3|desiccated desert nomad=7|despicable ronin=2|devout warrior mercenary=5|devout woman=1|Diego Montoya=2|diligent student=8|diligent young fighter=1|diminutive alligator=1|dirty child=3|dirty dwarf journeyer=1|dirty fighter=7|dirty grandchild=1|dirty grass wolf=4|dirty hengeyokai=1|dirty hermit=1|dirty pigeon=2|dirty rogue=2|dirty servant=1|dirty swineherd=1|dirty thief=1|dirty tramp=1|dirty urchin=4|dirty vagabond=3|disciplined Djelian mercenary=1|disciplined Djelian soldier=3|disciplined Ephebian soldier=3|disciplined troll warrior=3|disciplined Tsortean mercenary=1|disciplined Tsortean soldier=6|disciplined warrior=1|disgraced ronin=2|disgruntled warehouse worker=1|disgusting child=5|dishonourable ronin=1|disrespectful child=1|disruptive Ephebian sailor=1|disruptive Genuan sailor=1|disruptive sailor=2|Djelian ambassador=1|docker=8|dockside merchant=5|dopey looking lion=6|dour dealer=3|dour merchant=1|downcast beggar=1|dreamy banker=1|droopy bloodhound=5|droopy eared rabbit=1|drover=2|druid=1|drunk=2|drunk citizen=17|drunk party-goer=2|drunk sailor=2|drunken barge sailor=3|drunken dwarf=45|drunken dwarf warrior=1|drunken rogue=3|drunken sailor=10|duelling witness=1|duke's quail=1|dull blue lizard=1|dull grflx adolescent=14|dull hermit=1|dull rujona=7|dull troll=1|dust delivery man=1|dust grey rabbit=1|dusty casual labourer=1|dusty D'reg=3|dusty grflx worker=6|dusty red vixen=1|dusty stone mason=1|dwarf bodyguard=10|dwarf gazelle=1|dwarfish barkeep=11|eager beggar=1|eager cadger=2|eager courtesan=1|eager dealer=1|eager mendicant=3|eager merchant=3|eager nitsuni=2|eager trader=3|eagle nosed bandit=1|eagle nosed young fighter=1|eagle-nosed hunter=3|earth grey rabbit=1|easy-going hunter=2|Ebony Tuchoille=1|eccentric hunter=1|effeminate hunter=1|efficient grflx workleader=5|elderly man=1|elegant gentleman=2|elegant hunter=1|elegant musketeer=1|emaciated rabbit=1|energetic Hong merchant=1|energetic rabbit=1|energetic Sung salesman=1|enraged rogue=2|Enrico Persuica=4|Ephebian ambassador=2|evil lawyer=2|evil troll=4|evil-looking rogue=3|excellent student=9|excitable pickpocket=2|excited bandit=1|executive manager=1|exhausted traveller=1|exhausted woman=1|expansive trader=1|expensive dealer=1|expensive merchant=1|expensive trader=1|experienced Djelian soldier=3|experienced Ephebian soldier=2|experienced student=10|experienced Tsortean soldier=7|expert nitsuni=1|extravagant Fang dealer=1|extravagant Fang merchant=1|extravagant Tang dealer=1|faithful young fighter=1|falcon=1|fallen ronin=2|Fang captain=2|farmer=2|Farnem Failey=6|fat brawler=1|fat brigand=1|fat bullfrog=4|fat bum=1|fat dealer=3|fat doe=2|fat drunkard=1|fat duck=1|fat dwarf fighter=2|fat dwarf warrior=1|fat engineer=1|fat farmer=1|fat grflx adolescent=5|fat human fighter=1|fat labourer=10|fat man=1|fat merchant=3|fat moose=1|fat peasant=5|fat pig=1|fat poacher=4|fat rujona=5|fat sheep=2|fat trader=3|fat troll=2|fat troll child=1|fat troll fighter=1|fat weapons master=5|fearful ronin=4|fearsome rogue=2|feather-covered birdwatcher=2|feathery blackbird=3|feathery sparrow=1|female ninja=1|ferrety bandit=1|fetching hunter=1|field mouse=1|fieldfare thrush=1|fierce bodyguard=1|fierce captain=1|fierce deckhand=1|fierce hunter=1|fierce pirate=2|fierce skipper=1|fig trader=2|filth-covered rabbit=1|filthy hengeyokai=1|firefly=15|First Mate Antonis=2|fisherman=11|flighty black horse=1|flighty blood bay horse=1|flighty piebald horse=1|flowery old florist=1|fluff-covered turkey=1|fluffy blackbird=1|fluffy sheep=3|fluffy starling=2|flustered civil servant=2|For Lilies=1|foreign looking bodyguard=1|foul-mouthed grandchild=1|foul-smelling tramp=3|frail royal judge=1|Frankie Harvard=5|Freaky Kept=3|Freda Glottik=3|friendly fisherman=2|friendly fishmonger=1|friendly grass wolf=1|friendly tharga beast=1|Fujiyama Osanawa=2|funny fishmonger=1|furious drunkard=4|furry sheep=2|furtive person=1|fuzzy moose=1|gallant Fang samurai=1|gallant palace guard=1|gallant Tang samurai=1|gangly Djelian recruit=1|gangly Ephebian recruit=1|gangly painted dog puppy=5|gangly Tsortean recruit=1|garrulous witch=1|garter snake=24|gaunt farmer=1|General Sallyforth=4|genteel lady=13|gentle buck=1|gentle doe=3|gentle fawn=1|gentle foxhound=1|gentle noh actor=1|Genuan ambassador=1|Geraldo Ciaco=4|Gerard de Wendelle=1|giant=32|giant alligator=1|giant leader=25|giant spider=7|gibbering old man=1|gigantic whirlwind of rubbish=1|gleeful party-goer=3|gloomy beggar=1|glossy ibis=1|glowering dwarf=1|Gnirble the gnoll=2|Gnodan the gnoll=1|Go Hitokui=7|goat=10|golden retriever=1|good looking bodyguard=1|good looking journeyman blacksmith=1|good natured bodyguard=1|good-looking captain=1|good-looking crewman=1|good-looking hunter=1|good-looking skipper=2|graceful Hong samurai=1|graceful hunter=1|graceful McSweeney samurai=1|graceful nitsuni=1|graceful poet=2|graceful rice farmer=1|graceful Sung samurai=1|graceful warrior mercenary=11|Graham Hobre=1|Granpa Clown=2|grasping beggar=2|grasping cadger=1|grasping dealer=1|grasping mendicant=1|greasy hawker=1|greasy trickster=2|greasy weapons master=3|greedy dealer=2|greedy imp=1|greedy merchant=6|greedy poacher=3|greedy trader=5|green duck=1|Greig Schwitz=3|grey grass wolf=2|grey haired journeyman blacksmith=1|grey rat=1|grey squirrel=1|grey wolf=6|Grflx=2|grflx soldier=21|grim captain=2|grinning man=2|grinning woman=1|grizzled Djelian soldier=3|grizzled Ephebian mercenary=1|grizzled Ephebian soldier=1|grizzled McSweeney thug=1|grizzled strongarm=4|grizzled Tsortean soldier=8|grizzled warrior=1|grizzly bear=8|groggy party-goer=3|groomed grflx mentor=6|grubby child=3|grubby crow=1|grubby grandchild=1|grubby hermit=2|grubby pickpocket=1|grubby scarred thug=19|grubby tramp=2|grubby urchin=1|grumbling peasant=2|grumpy blue roan horse=1|grumpy brown horse=1|grumpy dapple grey horse=1|grumpy dark horse=1|grumpy drunkard=1|grumpy dun horse=1|grumpy dwarf warrior=4|grumpy grey and white horse=1|grumpy grey horse=1|grumpy grflx workleader=7|grumpy skewbald horse=1|grumpy tharga beast=1|Guido of Gapp=2|gullible pickpocket=1|Hachi Hitokui=3|haggling Fang saleswoman=1|haggling Hong merchant=1|haggling Tang trader=1|hairless dog=2|hairy dwarf=1|hairy lumberjack=2|hairy strongarm=4|Halen of Sandelfon=2|handsome farmer=3|handsome McSweeney nobleman=1|handsome ranger=1|handsome wealthy man=1|happy bay foal=1|happy child=1|happy dapple grey foal=1|happy dun foal=1|happy dwarf warrior=1|happy Fang samurai=2|happy Fang trader=2|happy farmer=4|happy gardener=1|happy man=1|happy McSweeney mandarin=1|happy McSweeney samurai=1|happy McSweeney vendor=1|happy merchant=1|happy noh actor=1|happy peasant=1|happy pig=1|happy red roan foal=2|happy sailor=2|happy shepherd=1|happy Sung samurai=1|happy Tang samurai=1|happy troll=3|happy woman=1|happy yellowish foal=2|happy-looking old penguin=1|harbour guard=52|harbour mistress=5|hard crab=1|hardened D'reg=4|hardened nitsuni=5|hardworking merchant=3|hardworking trader=1|haughty chocolate cat=1|haughty ragdoll cat=1|haughty Sung nobleman=1|healthy citizen=14|healthy smuggler=3|healthy smuggler captain=1|heavily muscled man=21|heavily-built grass wolf=1|heavy tsimo wrestler=1|hefty bodyguard=2|hefty captain=2|hefty labourer=5|hefty musketeer=4|hefty officer=3|hefty soldier=22|helpful street urchin=1|heroic barbarian=2|heroic palace guard=2|hesitant highwaywoman=1|Hito Hitokui=3|Hlakket the Bartender=3|holy man=1|homesick sailor=2|honey haired bodyguard=1|Hong captain=5|honourable scribe=1|honourable sensei=1|horse-faced old dressmaker=1|hot smuggler=1|Howondalandish ambassador=2|Hrun=1|huge bodyguard=10|huge human fighter=1|huge troll=16|huge troll fighter=5|huge whirlwind of dust=1|hulking tallyman=1|hulking troll=6|human zombie=1|humongous whirlwind of dust=1|humourless grflx worker=7|hung over barge sailor=2|hunter grflx=27|hyperactive baby grflx=2|hyperactive woman=2|ice giant=1|Ichi Hitokui=3|Ickle Babby Clown=2|idle palace guard=2|ignoble ronin=1|ill-favoured child=2|immaculate gentleman=3|impatient Fang nobleman=1|Imperial guard=40|imperious knight=1|important Sung nobleman=1|important Tang nobleman=1|impoverished citizen=9|impressive knight=5|independent Morporkian sailor=1|indifferent brigand=1|indifferent highwayman=1|industrious grflx worker=9|industrious hunter=1|inebriated barge sailor=3|inebriated sailor=1|inept civil servant=2|inexperienced weapons master=1|injured student=8|innocent pickpocket=5|innocent urchin=2|inquisitive child=8|inquisitive fighter=1|insane pirate=2|insane weapons master=1|insolent civil servant=3|insolent woman=1|intelligent warrior mercenary=9|interesting child=1|interesting peasant=1|interesting troll=2|intimidating bodyguard=1|intimidating hawker=1|intimidating weapons master=1|intoxicated barge sailor=2|intruder=12|intuitive hunter=1|irate woman=1|irresponsible bandit=1|irritated sailor=2|Jack Straw=1|jaded palace guard=1|Jamie Bombed=1|jaundiced Fang thug=2|jaundiced McSweeney thug=2|jaundiced Sung thug=4|jaundiced Tang thug=1|jealous ronin=1|Jeef Lirwyn=4|jittery pickpocket=1|Jocasta Wiggs=1|John DeBois=5|Johnny the shoeshine boy=1|jolly merchant=1|jolly trader=2|journeying dwarf=1|jovial priestess=1|Juggles Clown=2|jumpy mercenary=2|jumpy palace guard=2|keen patroller=1|Kyakenko=1|Lady Ashley Marais=1|Lady Marie Bougereau=1|Laggy-san=1|lanky weapons master=1|large alligator=6|large black dog=1|large Djelian soldier=2|large D'reg=1|large Ephebian soldier=3|large Fang bodyguard=1|large foxhound=1|large green alligator=1|large grflx mentor=6|large Hong bodyguard=1|large light brown dog=1|large man=3|large McSweeney bodyguard=2|large orange cat=1|large pine=1|large raven=2|large savage lion=3|large schoolboy=1|large Sung bodyguard=1|large Tang bodyguard=7|large troll=3|large troll warrior=2|large Tsortean mercenary=1|large Tsortean soldier=1|lazy maid=1|lazy palace guard=3|lazy penguin=1|lazy servant=3|lazy troll=1|lean Djelian mercenary=1|lean ranger=1|lean troll warrior=2|lean warrior=1|learned student=2|leathery old tanner=1|leathery tanner=2|leek seller=1|lethargic drunkard=5|lethargic labourer=7|light brown rabbit=1|light-footed smuggler=3|light-footed smuggler captain=1|light-hearted hunter=1|lithe bodyguard=1|lithe captain=1|lithe officer=4|lithe soldier=17|little baby grflx=1|little bay foal=1|little brown frog=1|little dark foal=1|little dun foal=1|little ginger cat=1|little green frog=1|little grey and white foal=1|little grey frog=1|little old lady=36|little skewbald foal=1|Lon Fah Lo=1|long grass wolf=1|long-eared rabbit=1|looming troll=5|loquacious Hong merchant=1|lordly hunter=1|lost dwarf journeyer=1|lost mercenary=1|lost-looking cartographer=4|loud Fang salesman=1|loud Fang saleswoman=1|loud goatherd=1|loud McSweeney vendor=1|loud priestess=1|loud Sung merchant=1|loud Tang trader=1|loud vendor=1|Louis Accardo=6|lovely barmaid=1|loyal McSweeney samurai=1|lucky gambler=3|lucky warrior=2|lumbering troll=5|luminescent bullfrog=4|lynx=1|mad mystic=5|magnificent McSweeney samurai=2|magnificent Sung samurai=1|majestic knight=1|malevolent rogue=3|malnourished doe=1|man of low moral fibre=6|mangy fighter=2|mangy looking lion=7|mangy pigeon=1|mangy rabbit=1|manipulative dealer=2|manipulative trader=2|Marlon Gumboni=2|massive eagle=4|master thief=1|matted hengeyokai=2|Maude Scowd=1|McSweeney captain=3|mean brawler=1|mean fighter=4|mean looking lion=3|mean man=1|mean mercenary=44|mean pirate=2|mean rogue=7|mean thief=1|mean troll=5|mean troll fighter=2|medium alligator=5|meek civil servant=1|meek poet=1|member of the Merchant Guard=13|mercenary=35|merchant=18|merry party-goer=2|messy baby grflx=2|messy grflx adolescent=10|messy hermit=1|messy hound=1|meticulous fighter=1|mild calligrapher=1|mild-mannered lumberjack=1|mischievous child=2|mischievous courtesan=1|miserable courtesan=1|miserable drunkard=2|miserable servant=1|miserable tramp=2|modest noh actor=1|money grabbing banker=1|money-grabbing woman=1|Monsieur Aubert=1|Monsieur Leverett=3|monstrous outlaw=1|moon eyed hunter=1|morose grass wolf=1|Morporkian ambassador=1|Morporkian spy=1|mosquito watcher=1|mossy troll=1|moth-eaten feral cat=1|mournful beggar=1|mousey D'reg woman=1|mousey wealthy woman=1|mousy fighter=1|Mrs Kale=1|muddy grflx worker=15|multi-coloured turkey=1|Mummy Clown=3|muscled barbarian=2|muscular bodyguard=1|muscular captain=2|muscular citizen=9|muscular doe=1|muscular dwarf fighter=2|muscular Fang bodyguard=1|muscular gentleman=2|muscular Hong bodyguard=1|muscular Hong nobleman=1|muscular labourer=5|muscular lumberjack=1|muscular McSweeney bodyguard=4|muscular officer=3|muscular smuggler=3|muscular smuggler captain=1|muscular soldier=16|muscular Sung nobleman=1|muscular Tang bodyguard=3|muscular Tang nobleman=1|muscular troll fighter=4|muscular turkey=1|mysterious hunter=1|mysterious ranger=1|mysterious wealthy man=1|mystical ninja=1|Nana Hitokui=5|nasty fighter=4|nasty lawyer=1|nasty pickpocket=1|nasty rogue=1|nasty-looking man=1|nasty-looking woman=1|nerdy grflx adolescent=10|nervous buck=1|nervous Djelian recruit=2|nervous Ephebian recruit=2|nervous man=1|nervous pickpocket=3|nervous Tsortean recruit=4|Ni Hitokui=3|noble Fang samurai=1|noble knight=5|noble McSweeney samurai=1|noisy troll child=1|nomadic D'reg=2|Noobie=1|notorious ronin=2|obese woman=1|obnoxious child=1|obnoxious rat=1|obnoxious starling=1|obnoxious youth=2|observant birdwatcher=1|odorous bandit=1|odorous bodyguard=1|off-duty soldier=4|officer=1|officious civil servant=1|oily weapons master=5|old crone=1|old dwarf warrior=1|old farmer=1|old grass wolf=1|old hedge wizard=1|old Hublandish barbarian=2|old musketeer=2|old peasant=2|old sailor=2|old stone mason=1|old student=3|old troll=2|old Tsortean sailor=2|old turkey=1|Old Vincent=6|old woman=1|Ome outlaw=20|one-eyed mongrel=1|ordinary poet=1|ordinary scribe=1|outgoing dealer=1|outgoing D'reg woman=3|outgoing merchant=3|outgoing trader=1|over-confident black foal=1|over-confident brown foal=1|over-confident dapple grey foal=1|over-confident dark foal=2|over-confident dun foal=2|over-confident yellowish foal=1|overworked fishmonger=1|owl=1|painted dog=8|palace guard=5|pale grass wolf=2|pale hengeyokai=2|pale purple lizard=1|paperboy=2|papergirl=1|parsnip farmer=2|pasty stone mason=1|patchy cur=1|patchy mongrel=1|Pathos=4|Paulie Clemence=10|peacekeeper commander=9|peasant=2|Peeves=1|perky poodle=1|perky sparrow=1|pheasant quail=1|pickpocketing child=4|pie seller=4|pietistic woman=1|pigeon chested outlaw=1|pimply grflx adolescent=12|pine sapling=2|pink pig=2|placid tharga beast=1|playful troll child=3|pleasant looking gentleman=20|pleasant street sweeper=2|plucky musketeer=2|plumbeous ibis=1|plump bay horse=1|plump blood bay foal=1|plump blue roan foal=1|plump brown horse=1|plump dark horse=1|plump piebald foal=1|plump pig=1|plump rabbit=1|plump red roan horse=1|plump yellowish foal=2|plump yellowish horse=1|polished musketeer=1|polished nitsuni=1|polite child=1|Polly Tarton=1|ponderous Lipwigzer=1|poor beggar=7|poor citizen=10|poor tramp=1|potted dwarf warrior=1|pouting young fighter=1|powerful young fighter=1|prayerful woman=1|precocious McSweeney nobleman=1|precocious Sung nobleman=1|precocious Tang nobleman=1|pretentious Tang nobleman=1|priest=2|protective Fang bodyguard=2|protective Hong bodyguard=3|protective McSweeney bodyguard=2|protective Tang bodyguard=4|proud black horse=1|proud crewman=1|proud deckhand=1|proud first mate=2|proud Hong nobleman=2|proud McSweeney nobleman=1|proud McSweeney samurai=1|proud penguin chick=1|proud red roan horse=2|proud stag=1|proud Sung samurai=1|proud Tang samurai=1|proud yellowish horse=1|psychotic strongarm=2|pudgy brawler=1|pudgy dwarf warrior=1|pudgy thief=2|pugnacious dwarf warrior=1|pugnacious servant=1|puissant monk=4|puna ibis=2|quick rujona=2|quiet dealer=1|quiet Hong vendor=1|quiet man=2|quiet salesman=1|quiet Tang vendor=1|quirky bodyguard=2|Quisoda=2|Quoit=1|rabbit=1|rabbity civil servant=2|ragged citizen=11|ragged grass wolf=3|rain miner=3|rakish hound=1|rangy Djelian soldier=5|rangy Ephebian soldier=6|rangy troll warrior=7|rangy Tsortean soldier=4|rangy warrior=2|rat=10|recalcitrant youth=1|red ball-nest finch=2|red meadowhawk=1|red squirrel=2|red wolf=1|redwing thrush=6|refined gentleman=4|regal knight=6|reluctant grflx worker=7|renowned dwarf warrior=1|renowned Fang samurai=1|renowned McSweeney samurai=1|resentful farmer=1|resigned beggar=2|resigned cadger=2|resourceful Hong trader=1|resourceful McSweeney merchant=1|retired tsimo wrestler=1|rich ambassador=1|rich beggar=3|rich citizen=13|rich man=1|rich woman=1|rich-looking man=1|rickshaw driver=1|Rixacardo=4|roaring drunkard=6|Roger Less=1|Roku Hitokui=3|rough sailor=18|rough weapons master=1|rowdy woman=26|Royal Guard=5|rude brawler=1|rude brigand=1|rude Fang nobleman=1|rude Hong nobleman=1|rude McSweeney nobleman=1|rude patron=1|rude Tang nobleman=1|rude witch=1|rugged Djelian soldier=3|rugged Ephebian soldier=1|rugged Hublandish barbarian=3|rugged lumberjack=1|rugged ranger=1|rugged troll=2|rugged troll warrior=5|rugged Tsortean soldier=7|rugged turkey=1|rugged warrior=1|ruthless pirate=3|sad beggar=2|sad brawler=4|sad cadger=2|sad child=2|sad farmer=2|sad man=6|sad mendicant=1|sad thief=1|sad troll=3|sad troll child=1|Sadel Noctus=4|sadistic chef=5|sadistic rogue=2|sad-looking penguin=1|sailor=10|Samuel Casso=4|San Hitokui=3|sand coloured rabbit=1|sand yellow rabbit=1|sarcastic grflx workleader=3|sassy mugger=7|scaly snake=1|scampering child=1|scarlet ibis=2|scarred black cat=1|scarred dog=1|scarred dwarf journeyer=1|scarred Hong bodyguard=4|scarred McSweeney bodyguard=2|scarred red roan horse=1|scarred rogue=2|scarred sailor=1|scarred strongarm=2|scarred Sung bodyguard=2|scarred Tang bodyguard=1|scarred weapons master=1|scarred woman=1|scary mugger=7|scary rogue=5|scatterbrained henne=1|scheming child=3|scheming thief=1|scrappy urchin=5|scrawny black foal=1|scrawny blood bay foal=2|scrawny blue roan horse=1|scrawny brown foal=3|scrawny brown horse=2|scrawny child=1|scrawny dapple grey horse=1|scrawny dun foal=2|scrawny grey and white horse=1|scrawny grey horse=1|scrawny labourer=4|scrawny smuggler captain=1|scribe=2|scruffy boatswain=1|scruffy palace guard=1|scruffy shopper=1|seagull=10|security guard=16|self confident hunter=4|senile royal judge=3|Septa DeBlano=2|Serec=1|serene hunter=1|serious captain=2|serious looking hunter=1|serious wolfhound=1|servile servant=1|sexy buccaneer=1|shadowy thief=1|shady character=13|shady dealer=1|shady Fang vendor=1|shady spy=1|shady Sung vendor=1|shady Tang merchant=1|shaggy bay horse=1|shaggy brown horse=1|shaggy dark horse=1|shaggy dun horse=1|shaggy grey horse=1|shaggy skewbald horse=2|shaggy white bear=7|shaggy white dog fox=1|shaggy yellowish horse=1|sharp-tailed ibis=3|Shi Do Gai=1|shifty merchant=1|shih-tzu dog=1|shiny grflx mentor=2|shopkeeper=4|short child=1|short dealer=4|short deckhand=2|short Djelian recruit=3|short dwarf warrior=4|short Ephebian recruit=2|short Fang bodyguard=3|short farmer=2|short first mate=1|short gardener=1|short Hong bodyguard=3|short McSweeney bodyguard=1|short merchant=2|short peasant=2|short poacher=5|short second mate=1|short skipper=1|short Sung bodyguard=3|short Tang bodyguard=5|short trader=2|short troll=3|short Tsortean recruit=5|short weapons master=1|short wizard=1|short woman=2|shrewd desert nomad=3|shrewd warrior mercenary=7|shy baby grflx=5|shy D'reg woman=3|shy hermit=1|shy old woman=1|sickly smuggler=3|sickly smuggler captain=3|silent nitsuni=6|silky angora cat=1|silly drunkard=3|silver birch=1|simple farmer=1|sinewed rujona=2|sinewy young fighter=1|sinister Hong thug=2|sinister McSweeney thug=1|sinister rogue=5|sinister Sung thug=1|sinister Tang thug=1|Sir Ricard du Bois=1|skilled student=6|skinny bodyguard=1|skinny child=1|skinny Djelian recruit=1|skinny doe=2|skinny Ephebian recruit=7|skinny fawn=1|skinny fighter=1|skinny poacher=4|skinny priest=1|skinny priestess=1|skinny rabbit=1|skinny Tsortean recruit=1|skinny weasel=1|skittish bay horse=1|skittish blue roan horse=1|skittish brown horse=1|skittish dun horse=1|skittish red roan horse=1|skittish yellowish horse=1|sleek black cat=1|Sleep-With-Me-Own-Fishes DiBlarr=2|sleepy drunkard=1|sleepyheaded maid=1|slender bodyguard=1|Sle-peh-oloh=1|Slim Stevie=6|slim warrior=2|slimy lawyer=3|slimy mugger=10|slimy weapons master=1|slinky girl=1|slippery weapons master=1|slow crab=2|slow mugger=11|sluggish smuggler=2|sly brigand=1|sly desert nomad=3|sly monk=8|sly outlaw=1|sly urchin=4|small alligator=2|small blackbird=1|small dapple grey horse=1|small dark brown dog=2|small doe=1|small dun horse=1|small dwarf warrior=2|small grass wolf=2|small grey and white horse=1|small mottled dog=1|small piebald horse=1|small red vixen=1|small starling=1|small woman=1|smart palace guard=1|smart truffle-hunter=1|smelly child=8|smelly crab=2|smelly hengeyokai=1|smelly man=1|smelly moose=4|smelly mugger=4|smelly rujona=2|smelly schoolgirl=1|smelly tramp=4|smiling child=1|smiling mugger=10|smiling warrior=1|smiling young fighter=1|smooth hunter=1|snarling mugger=8|snarling rogue=4|sneaky lawyer=2|sneaky mugger=8|sneaky nitsuni=3|sneaky pickpocket=2|sneaky smuggler captain=3|sneaky spy=1|sneaky thief=2|Sneed Finkman=1|sno-ball vendor=1|snotty grandchild=1|snow eagle=1|snowy owl=1|sobbing girl=1|soft red dog fox=1|soldier=8|solemn ranger=4|song thrush=3|soot-covered charcoal burner=1|sooty deerhound=2|soused party-goer=1|Sparadigm=1|spindly rabbit=1|spoiled child=1|spotty doe=1|spotty fawn=1|sprightly blackbird=1|sprightly sparrow=1|squinting rujona=3|stalwart warrior mercenary=4|starving urchin=4|stately wolfhound=2|statuesque bodyguard=2|statuesque hunter=1|stern captain=1|stern dealer=1|stern grflx workleader=1|stern merchant=2|stern sensei=1|stern trader=2|stern-looking woman=1|stevedore=4|Stevie Cicone=4|sticky baby grflx=8|stinking drunkard=2|stinking vagabond=1|stinky grandchild=1|stocky dwarf warrior=4|stocky human fighter=1|stocky troll fighter=1|stony troll=1|stony troll child=2|stony troll warrior=1|Stores=1|straw grey rabbit=1|Stren Withel=1|stressed banker=1|strict captain=2|stringy desert nomad=6|strong dwarf=1|strong dwarf warrior=7|strong Fang bodyguard=1|strong Fang samurai=2|strong Hong bodyguard=5|strong Hong samurai=1|strong Hublandish barbarian=2|strong McSweeney bodyguard=1|strong McSweeney samurai=3|strong ronin=3|strong Tang bodyguard=3|strong troll=1|strongarm=2|strong-willed deckhand=1|strong-willed first mate=1|strong-willed helmsman=1|strong-willed seafarer=2|struggling actor=1|stubble cheeked hunter=1|stuck-up woman=2|stumpy grflx adolescent=10|stupid child=1|stupid grflx adolescent=8|stupid human fighter=2|stupid mugger=2|stupid smuggler captain=1|stupid troll fighter=2|sturdy troll=1|sturdy warrior mercenary=5|stylish bum=1|suave musketeer=5|sulky bay foal=1|sulky blood bay foal=1|sulky blue roan foal=2|sulky brown foal=1|sulky grey and white foal=1|sulky grey foal=2|sullen dwarf=1|Sum Dim crested dog=2|Sung captain=1|sun-tanned D'reg=1|sun-tanned farming labourer=1|sun-tanned stone mason=1|superfluous warrior=1|surly youth=1|suspicious palace guard=1|suspicious thief=3|swarthy pirate=2|swashbuckling pirate=1|sweating banker=4|swede farmer=1|swift assassin=1|swift thief=1|swift tsimo wrestler=1|sycophantic Hong salesman=1|sycophantic McSweeney vendor=1|sycophantic merchant=2|sycophantic Tang dealer=1|sympathetic bartender=3|talented calligrapher=1|talkative Fang dealer=1|talkative Fang merchant=1|talkative Fang salesman=1|talkative Hong trader=1|talkative man=1|talkative McSweeney vendor=1|tall and elegant old dressmaker=1|tall camel trader=1|tall captain=2|tall crewman=1|tall dealer=2|tall deckhand=2|tall D'reg=3|tall engineer=1|tall Fang bodyguard=2|tall farmer=2|tall giraffe=2|tall Hong bodyguard=3|tall Hong mandarin=1|tall Hong samurai=2|tall kabuki actor=1|tall man=1|tall McSweeney bodyguard=4|tall merchant=1|tall poacher=2|tall priest=1|tall priestess=2|tall ronin=2|tall Sung bodyguard=2|tall Sung samurai=1|tall Tang bodyguard=1|tall Tang nobleman=2|tall trader=3|tall troll=2|tall weapons master=1|tall woman=2|tan rabbit=1|tawny wolf=2|terrifying troll=3|Tfat Chick=3|thick-furred red vixen=1|thin dealer=1|thin dwarf warrior=2|thin farmer=1|thin ginger cat=1|thin grass wolf=3|thin labourer=4|thin merchant=1|thin party-goer=1|thin peasant=4|thin rabbit=1|thin sow=1|thin trader=4|thin woman=1|thoughtful citizen=12|thoughtful soldier=20|three-legged dog=1|thrifty dealer=2|thrifty merchant=2|thrifty trader=1|timid brown foal=1|timid Djelian recruit=3|timid grey foal=1|timid pickpocket=2|timid piebald foal=1|timid skewbald foal=1|timid Tsortean recruit=2|timid yellowish foal=1|tiny alligator=1|tiny blackbird=1|tiny duckling=5|tiny painted dog puppy=1|tiny rabbit=1|tiny sparrow=1|tiny starling=1|tipsy barge sailor=1|tipsy party-goer=1|tired citizen=12|tired fisherman=1|tired highwayman=2|tired man=1|tired palace guard=1|tired sensei=1|tired shepherd=2|tired shopper=2|tired woman=2|tired-looking camel trader=1|toothless bodyguard=2|toothless old lion=5|Too-toose Le Treque=1|tosher=1|tough barbarian=2|tough bodyguard=2|tough Djelian soldier=6|tough dwarf fighter=2|tough Ephebian soldier=6|tough Fang thug=1|tough Hong thug=3|tough Hublandish barbarian=2|tough human fighter=2|tough huntress=4|tough McSweeney thug=1|tough rogue=4|tough sailor=1|tough Sung thug=1|tough troll=4|tough troll fighter=3|tough troll warrior=4|tough Tsortean soldier=4|tough warrior=4|tough-looking turkey=1|towering giraffe=1|towering troll=6|town crier=2|T'paz=2|trained duellist=1|travelling dwarf=1|Triad boss=8|Triad heavy=25|Triad thug=133|tricky monk=9|troll bodyguard=18|Truckle the Uncivil=1|tsimo handler=6|Tsortean ambassador=2|Tsortean spy=1|twisted hengeyokai=1|ugly blood bay horse=1|ugly brown horse=1|ugly chestnut horse=2|ugly dapple grey horse=1|ugly dun horse=1|ugly farmer=1|ugly ginger cat=1|ugly grey horse=1|ugly grflx mentor=7|ugly piebald horse=1|ugly tom cat=1|ugly vulture chick=1|ugly weasel=1|Uncle Blacksheep Clown=4|unclean pigeon=1|unctuous musketeer=2|undernourished tharga beast=1|unhappy black zombie=1|unhappy ronin=1|unhealthy citizen=6|unlucky gambler=1|unpleasant Tang nobleman=1|unpleasant youth=1|unpretentious fighter=1|unpretentious hunter=1|unseen nitsuni=2|unsettled pirate=1|unsettling banker=1|unshaven hunter=1|unwashed thief=1|upset beggar=1|vague banker=2|venerable monk=6|Very Reverend Khepresh=1|very young penguin chick=1|veteran Fang bodyguard=7|veteran Hong bodyguard=7|veteran McSweeney bodyguard=2|veteran Sung bodyguard=2|veteran Tang bodyguard=4|vicious Fang samurai=1|vicious pirate=4|vicious Tang samurai=1|vicious-looking woman=2|vigilant Fang bodyguard=2|vigilant Hong bodyguard=6|vigilant McSweeney bodyguard=5|vigilant palace guard=1|vigilant patroller=3|vigilant Sung bodyguard=1|vigilant Tang bodyguard=2|vile rujona=4|violent drunkard=5|violent pirate=2|virtuous McSweeney samurai=1|virtuous Sung samurai=1|wandering Djelian soldier=6|wandering D'reg=1|wandering Ephebian mercenary=1|wandering Ephebian soldier=2|wandering hunter=1|wandering shopper=2|wandering troll warrior=3|wandering Tsortean soldier=6|wandering warrior=1|warty bullfrog=5|wary barbarian=1|wary bay horse=1|wary dapple grey horse=1|wary dark horse=1|wary desert nomad=4|wary dun horse=2|wary Fang thug=1|wary grey horse=3|wary McSweeney thug=2|wary palace guard=3|wary patroller=4|wary red dog fox=2|wary skewbald horse=1|wasted hengeyokai=1|watchful barbarian=1|watchful palace guard=1|watchman=22|wattled ibis=1|wealthy warrior mercenary=5|weary Fang trader=1|weary grflx worker=4|weary Hong saleswoman=1|weary Hong trader=1|weary McSweeney merchant=1|weary Sung merchant=1|weary Tang dealer=1|Weasel=2|weather beaten bodyguard=1|weatherbeaten Fang thug=2|weatherbeaten Hong thug=2|weatherbeaten McSweeney thug=2|weatherbeaten Sung thug=1|weathered Djelian soldier=8|weathered Ephebian soldier=2|weathered troll warrior=2|weathered Tsortean soldier=2|weathered warrior=1|weather-worn stone mason=1|weeping willow=1|weird mystic=4|well rounded hog=1|well-built D'reg=3|well-dressed gentleman=1|well-muscled dwarf=1|well-muscled man=3|well-muscled troll=3|well-off citizen=14|well-travelled sailor=2|whiny servant=1|white belt ninja=1|white hare=1|white wolf=1|white-tailed rabbit=1|wide-eyed doe=1|wild boar=2|wild mystic=5|wild turkey=1|willowy oread=1|wily thief=3|winsome maid=1|winsome stablehand=2|wiry desert nomad=6|wiry pickpocket=2|wiry woman=1|wise grflx mentor=3|wise monk=5|wise penguin=1|wistful bodyguard=1|witchy wizard=1|withered barbarian=2|withered courtesan=1|wizard=11|woeful cur=2|woeful mongrel=1|woman of low moral fibre=7|Won Artful Huckster=1|woolgathering hedge wizard=3|worried blue roan foal=1|worried brown foal=1|worried chestnut foal=1|worried doe=3|worried piebald foal=1|worried red roan foal=1|worried skewbald foal=1|wrinkled rujona=12|yellow grass wolf=1|Yon Hitokui=4|young barbarian=1|young beggar=1|young blood bay horse=1|young blue roan horse=1|young brown horse=1|young child=1|young dark horse=1|young Djelian recruit=4|young doe=1|young dwarf warrior=1|young Ephebian recruit=3|young fisherman=1|young goatherd=1|young grass wolf=2|young green alligator=1|young grey and white horse=1|young man=2|young musketeer=1|young painted dog=1|young penguin chick=1|young sailor=3|young sensei=2|young student=7|young troll=1|young Tsortean recruit=4|young turkey=1|young warrior=7|youthful Hong nobleman=1|youthful hunter=2|zombie town crier=12|Zoon sailor=14|Zyuu Hitokui=6</var>
|
|
|
|
|
 |
Zugg MASTER

Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
|
Posted: Thu May 29, 2008 10:22 pm |
OK, I found several bugs with this.
First, as people mentioned, if the string list contained a '=' character, then it was being treated as a database variable. The problem here was that the variable was being expanded early, and by the time the Regex routine got it, there was no way for it to tell if the original variable was a string list or database variable.
But the CMUD compiler already knew in advance that it was expanding a variable within a trigger pattern, because it already had code to strip out any " quotes around each string item. So I modified this routine to add a "hint" about the variable type so that the RegEx routine could properly determine if it was working with a real database variable or not.
I was also able to improve the performance a bit so that database variables were not converted to a string, then reconverted to a list and sorted to get the final RegEx string. The RegEx string is now properly created directly from the database variable in properly sorted order, saving a small bit of time the first time the trigger is used.
The other bug was with having wildcard characters within the string list or database variable. When I turned on the "Allow wildcards within {}" option, this caused wildcards in any {} to be processed, which was happening *after* the variable was expanded. So, using the "hint" added to the RegEx above, CMUD can now determine that a string list or database variable was expanded, and in that case, it doesn't perform the recursive wildcard test.
So, when using {@var} in the pattern, wildcards within the @var are ignored now, regardless of the new wildcard setting. The wildcard setting is only used when specifying a {a|b|c} list directory, or if @var is a normal expanded string variable instead of a string list or database variable.
The original error about the regular expression being too large will hopefully be fixed by a new PCRE.DLL in v2.26. |
|
|
|
 |
Toxic Adept
Joined: 27 May 2008 Posts: 299
|
Posted: Thu May 29, 2008 11:04 pm |
| Zugg wrote: |
So, when using {@var} in the pattern, wildcards within the @var are ignored now, regardless of the new wildcard setting. The wildcard setting is only used when specifying a {a|b|c} list directory, or if @var is a normal expanded string variable instead of a string list or database variable. |
Hmm thats not cool, I've got major scripts that require this. Is there another workaround for it so I can use {@var} as a trigger pattern and expect it to process the wildcards in @var? |
|
|
|
 |
Zugg MASTER

Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
|
Posted: Fri May 30, 2008 3:23 am |
Well first, remember that wildcards in {a|b|c} syntax were not supported at all until the recent versions of CMUD. But as I mentioned above, if you set your @var to a "Expanded String" then it will expand wildcards within.
The problem is that it is very common to have a situation like this:
| Code: |
#ADDITEM List "hits"
#ADDITEM List "mutilates"
#ADDITEM List "**destroys**"
#TRIGGER {Your swing {@List} the creature} {do whatever} |
The use the the "*" character by the MUD to highlight something is *very* common. And when CMUD started allowing these wildcards within the {@List} syntax, it broke a *lot* of existing scripts. I don't want a new feature to break existing scripts if possible, so that's why it is changed for 2.26.
Another workaround if @List *must* be a string list is to use this:
| Code: |
| #TRIGGER {{%%string(@List)}} {do whatever} |
Using the %string function will convert the @List from a string list to an expanded string, and then wildcards will be recognized within the list expansion. Just remember to use %% to call a function from within the trigger pattern. |
|
|
|
 |
Toxic Adept
Joined: 27 May 2008 Posts: 299
|
Posted: Fri May 30, 2008 1:32 pm |
| Zugg wrote: |
Well first, remember that wildcards in {a|b|c} syntax were not supported at all until the recent versions of CMUD. But as I mentioned above, if you set your @var to a "Expanded String" then it will expand wildcards within.
The problem is that it is very common to have a situation like this:
| Code: |
#ADDITEM List "hits"
#ADDITEM List "mutilates"
#ADDITEM List "**destroys**"
#TRIGGER {Your swing {@List} the creature} {do whatever} |
The use the the "*" character by the MUD to highlight something is *very* common. And when CMUD started allowing these wildcards within the {@List} syntax, it broke a *lot* of existing scripts. I don't want a new feature to break existing scripts if possible, so that's why it is changed for 2.26.
Another workaround if @List *must* be a string list is to use this:
| Code: |
| #TRIGGER {{%%string(@List)}} {do whatever} |
Using the %string function will convert the @List from a string list to an expanded string, and then wildcards will be recognized within the list expansion. Just remember to use %% to call a function from within the trigger pattern. |
I just started using cmud at 2.25 so, I've never built in a version without this feature, lucky me. Here is a more detailed breakdown of my code....
http://forums.zuggsoft.com/forums/viewtopic.php?t=30540
But here is the basics...
| Code: |
#TR {^({@{dbvar}})$} {#SHOW {%1}}
#VAR dbvar {This is a (%w) test string.=test value|key2 = val2} |
Output...
This is a good test string.
{This is a good test string.}
What your saying is I could change the trigger pattern to ^{%%string(@dbvar)}$ and it will still fire correctly?
Ultimatly, I know a work around for this that doesn't use wildcards, but I'd like to keep it this way...
Also Im still looking for a way to drag out the wildcarded word inside the pattern for the trigger so I can assign it to a variable within the trigger.... If someone can also help me figure that out. Its also worth noting that the wildcarded word is not always in the same spot for each key inside @dbvar and not every key will have a wildcard in it, just some of them, and it is obviously not always the same word. |
|
|
|
 |
Zugg MASTER

Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
|
Posted: Fri May 30, 2008 4:33 pm |
Since you are using a database variable and not a string list, you will actually need to use %dbkeys to return a list of the key values, instead of using the %string function. So your trigger pattern would be this:
| Code: |
| #TR {^({%%dbkeys(@dbvar)})$} {#SHOW %1} |
Not sure why you have @{dbvar} instead of just @dbvar in your original pattern, and the {} were not needed around the %1 in the #SHOW command. |
|
|
|
 |
Toxic Adept
Joined: 27 May 2008 Posts: 299
|
Posted: Fri May 30, 2008 4:38 pm |
| Zugg wrote: |
Since you are using a database variable and not a string list, you will actually need to use %dbkeys to return a list of the key values, instead of using the %string function. So your trigger pattern would be this:
| Code: |
| #TR {^({%%dbkeys(@dbvar)})$} {#SHOW %1} |
Not sure why you have @{dbvar} instead of just @dbvar in your original pattern, and the {} were not needed around the %1 in the #SHOW command. |
I put the {} around the %1 in show as not to create a trigger loop heh. Just in case someone actually used the code to test. Still having the issue of pulling out the wildcarded word in the pattern to assign it to a variable... Im not sure its possible but would be nice. Hey as long as this will process the wildcards in the keys, Im happy, thats all I need. |
|
|
|
 |
Vijilante SubAdmin

Joined: 18 Nov 2001 Posts: 5187
|
Posted: Sat May 31, 2008 1:22 am |
Updated dll sent to Zugg.
|
|
_________________ The only good questions are the ones we have never answered before.
Search the Forums |
|
|
 |
shalimar GURU

Joined: 04 Aug 2002 Posts: 4794 Location: Pensacola, FL, USA
|
Posted: Sat May 31, 2008 4:57 am |
I can hardly wait till next week.
|
|
|
|
 |
|
|
|