Register to post in forums, or Log in to your existing account
 

Play RetroMUD
Post new topic  Reply to topic     Home » Forums » zMUD General Discussion
GooseFire
Novice


Joined: 08 Sep 2003
Posts: 32
Location: USA

PostPosted: Tue Apr 06, 2004 2:55 am   

System eating herbs too quickly
 
Well, I had two afflictions put onto me with the system turned off so it wouldnt go on and cure it then.

I did -diagnose- skill which tells you whats wrong with you, in this case my system clears out everything in it then proceeds to just add whats wrong there, because illusions can mess things up.

This is Achaea for all that who wonder.

Well, what it does is that it eats things before it should. It'll eat one herb to cure an affliction and then go onto the next and wont cue it all properly, for some reason if its alot of afflictions I think it cues some of them, but when only on two it cures both. Maybe I have too many prompt triggers.

THis is the diagnosing alias:
leftarm=0
rightarm=0
leftleg=0
rightleg=0
HerbList=%null
SalveList=%null
insomnia=0
diag
#t+ Diag
#alarm +2.2 {#t- Diag
#if @HerbList=%null {} {#var HerbList {%sort( @HerbList)}
%item(@SalveList, 1)}}

This is the alias that adds the herb into the system:
#if (@HerbBalance=1) {HerbList=%additem( %1, @HerbList)
Herb=%1
#var HerbList {%sort( @HerbList)}} {#var HerbList {%sort( @HerbList)}
%1
Herb=%1
HerbBalance=1}

This is what it does to check the variable for what to cure next:
#var HerbList {%sort( @HerbList)}
#if (@HerbList=%null) {HerbBalance=0} {%item(@HerbList, 1)
HerbList=%delitem(%item(@HerbList, 1), @HerbList)}

and this is the two different venoms I used in my test:
#TRIGGER {afflicted by horrible asthma.} {#additem HerbList 12_clumsiness}
#TRIGGER {afflicted by horrible asthma.} {#additem HerbList 04_Asthma}

This is the quick log from the game when it didnt work correctly:
2296h, 2530m, 18550w exk-diag
You are:
afflicted by horrible asthma.
afflicted with clumsiness.
an insomniac.
2296h, 2530m, 18550w xk-
outr kelp
eat kelp
You have recovered equilibrium.
2296h, 2530m, 18550w exk-
outr kelp
eat kelp
2296h, 2530m, 18550w exk-You remove 1 kelp, bringing the total in the Rift to 29.
2296h, 2530m, 18550w exk-You eat a piece of kelp.
Your bronchial tubes open up and your asthma is cured.
2296h, 2530m, 18550w exk-You remove 1 kelp, bringing the total in the Rift to 28.
2296h, 2530m, 18550w exk-
You eat a piece of kelp.
The plant has no effect.

So, do I need a prompt trigger to tell it its eaten the herb already? I thought that would help but seeing as it eats the two herbs so quickly I was wondering if the system wasnt holding off on eating the other..
Reply with quote
Larkin
Wizard


Joined: 25 Mar 2003
Posts: 1113
Location: USA

PostPosted: Tue Apr 06, 2004 2:02 pm   
 
Couple of things:

1. Both of your diagnose triggers are the same pattern with different commands. I'm guessing you meant to post different patterns?

2. When you use the #IF command, why not switch your test and skip the "else" block if you don't need it? (Instead of #IF (blah = 1) {} {code}, try #IF (!(blah = 1)) {code}.)

3. I'm a bit confused by what you're trying to do with some of these commands, and I'm assuming there are command separators at the end of some of these lines. Perhaps if you exported your script and posted the one-line version of each trigger and alias, it might become clear.

4. Are you checking your herb queue based solely on timers? Or do you use your prompt and eat the next herb when you have regained herb balance? Failsafes are a good thing, but they are very tricky to implement with balances like these. Amnesia, stupidity, anorexia, etc., will all screw things up and you need to ensure that you don't get too lost in your failsafes to handle those situations.

Good luck to you.
Reply with quote
GooseFire
Novice


Joined: 08 Sep 2003
Posts: 32
Location: USA

PostPosted: Tue Apr 06, 2004 4:25 pm   
 
1. No, they both had the same command because it was just to show you how it added it to the system and the two different aliases that it added in with the commands.

2. I keep the test block because it was just pasting over from other macros I made. Macros that involved using my mount. If I were mounted, by said variable telling it, it would gallop, if the variable didnt register me as being mounted it would try dashing, or whatnot.

3. and 4. I'm not entirely sure about my problem, I do believe that I am missing a single trigger that tells it the herb balance is not there. Like, when I have multiple afflictions it'll only cure two at a time, one fails of course, but the others que up correctly. So, I was thinking maybe it might've registered both herbs ready to be eaten since I had herb balance at the time, and was wondering how I might alter my Checks to make sure it doesnt do that, if you can tell it not to. Oh, and both were the same trigger because I copy and paste the lines:
#TRIGGER {afflicted by horrible asthma.} {#additem HerbList 12_clumsiness}
#TRIGGER {afflicted by horrible asthma.} {#additem HerbList 04_Asthma}

And forgot to change the pattern on the first one. :/
It was to be:
#TRIGGER {wearied in body.} {#additem HerbList 12_clumsiness}

Exported:
#ALIAS dd {leftarm=0;rightarm=0;leftleg=0;rightleg=0;HerbList=%null;SalveList=%null;insomnia=0;diag;#t+ Diag;#alarm +2.2 {#t- Diag;#if @HerbList=%null {} {#var HerbList {%sort( @HerbList)};%item(@SalveList, 1)}}} "Aliases"

#ALIAS AddHerb {#if (@HerbBalance=1) {HerbList=%additem( %1, @HerbList);Herb=%1;#var HerbList {%sort( @HerbList)}} {#var HerbList {%sort( @HerbList)};%1;Herb=%1;HerbBalance=1}} "System"

#ALIAS CheckHerb {#var HerbList {%sort( @HerbList)};#if (@HerbList=%null) {HerbBalance=0} {%item(@HerbList, 1);HerbList=%delitem(%item(@HerbList, 1), @HerbList)}} "Aliases"

-- These are the two prompt lines that set off the curing

#TRIGGER {You may eat another plant.} {#co green;LastEat=0;#if (@kola=0 AND @HerbBalance=0) {eko};CheckSmoke;CheckHerb} "System"

#TRIGGER {^(%d)h, (%d)m, (%d)w (*)-} {Health=%1;Mana=%2;#if %pos(c,%4) {cloak=1} {cloak=0};#if %pos(e,%4) {equilibrium=1} {equilibrium=0};#if %pos(x,%4) {balance=1} {balance=0};#if %pos(k,%4) {kola=1} {kola=0};#if %pos(d,%4) {deafness=1} {deafness=0};#if %pos(b,%4) {blindness=1} {blindness=0};#if (@Aeon=1) {HerbBalance=1;SalveBalance=1;SmokeBalance=1;FocusBalance=1;WritheBalance=1;HealingBalance=1;MossBalance=1;#wa 3000;Aeon=0};#IF ((%ismember( 01_anorexia, @SalveList)) AND (%ismember( 04_asthma, @HerbList))) {focus};CheckSmoke;CheckSalve;CheckHerb;CheckWrithe} "System"

But, as I stated above, I think when this line hits:
2296h, 2530m, 18550w exk-

It's already curing one, but it hasn't eaten it already and thus doesnt know it needs to wait for herb balance.
Reply with quote
Larkin
Wizard


Joined: 25 Mar 2003
Posts: 1113
Location: USA

PostPosted: Tue Apr 06, 2004 6:58 pm   
 
If your prompts are coming in too fast for you to process the queues, I suggest adding a wait state to your prompt trigger. You'll have to play with the amount of delay to find the compromise between effective healing and lag, but it should help a good deal.

#TRIGGER {^(%d)h, (%d)m, (%d)w (*)-} {healing code}
#COND {} {} {wait|param=1000}

This will effectively disable your prompt trigger for only a second. If you get 10 prompts in one second, you'll only set off your healing code once. If you get one prompt in 10 seconds, you're still good.
Reply with quote
GooseFire
Novice


Joined: 08 Sep 2003
Posts: 32
Location: USA

PostPosted: Wed Apr 07, 2004 12:23 am   
 
Ahh, yes. That did help. Set it for 2200 seconds after it sees 'You are:' when diagnosing and it started to work correctly. : ) Thank you, Larkin.
Reply with quote
Display posts from previous:   
Post new topic   Reply to topic     Home » Forums » zMUD General Discussion All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

© 2009 Zugg Software. Hosted by Wolfpaw.net