|
Rugbystyle Wanderer
Joined: 07 Oct 2001 Posts: 71
|
Posted: Fri Apr 12, 2002 2:49 am
Difficult Trigger problem. Solution Appreciated. |
The txt recieved from the mud is something like as follows -
Bob waggles his fingers at you.
Horror overcomes you as blindness sets in.
50 health, 50 mana
Bob waggles his fingers at you.
You suddenly feel unclean and cursed
50 health, 50 mana
Now that is all ONE attack from Bob, spams across quickly in one grouping. The first grouping "Bob waggles his fingers at you.;Horror overcomes you as blindness sets in." is a fake attack, it's displayed, but only a distraction. The second grouping which follows right after is real.(Bob enters the fake attack, and real attack all at once on his side). I can't have my triggers trying to cure blindness, and not being able to cure curse because of the fake attack msg. So my question is, how do I get my triggers to ignore that first msg grouping, and cure the second REAL affliction. When the attack msg "Bob waggles his fingers at you." is the same for every attack, just the spell affliction is different?
I hope I explained that well enough. Any help will be appreciated. |
|
|
|
Buba Newbie
Joined: 01 May 2002 Posts: 0
|
Posted: Fri Apr 12, 2002 3:22 am |
Well, You could Trigger off the Horror overcomes you as blindness sets in, Or does he only 'fake' the attack one time each fight or several times? Is the Fake attack always say the same thing after Bob waggles his fingers at you. ?
I would need more information to answer more clearly, maybe some of the others can Decifer it better??? |
|
|
|
TonDiening GURU
Joined: 26 Jul 2001 Posts: 1958 Location: Canada
|
Posted: Fri Apr 12, 2002 3:34 am |
#TRIGGER {waggles his fingers at you.$You suddenly feel unclean and cursed$%d health, %d mana} {#CO 31;#ECHO cursed!}
Question is what comes after the real attack
to differentiate it from the fake?
#TRIGGER {waggles his fingers at you.$Horror overcomes you as blindness sets in.$%d health, %d mana$%w waggles his fingers at you.} {#CO 31;#ECHO fake}
Ton Diening |
|
|
|
Rugbystyle Wanderer
Joined: 07 Oct 2001 Posts: 71
|
Posted: Fri Apr 12, 2002 3:35 am |
It works like every one of "Bob"s attacks have a fake one right before the real one. And the msg of the spell he uses changes. so the first attack is.
Bob waggles his fingers at you.
Horror overcomes you as blindness sets in.
50 health, 50 mana
Bob waggles his fingers at you.
You suddenly feel unclean and cursed.
50 health, 50 mana
Which makes my trigger try and cure blindness, and curse at the same time, but only the cure blindness goes through, which hurts because I'm not even blind, I'm cursed. But the next attack could be...
Bob waggles his fingers at you.
You look around in wonder as your sense of hearing vanishes.
50 health, 50 mana
Bob waggles his fingers at you.
Horror overcomes you as blindness sets in.
50 health, 50 mana
So now my triggers fire cure deafness, and cure blindness in succession. Only the cure deafness goes through first, and I'm not deaf, I'm blind. so now I'm cursed and blind, because the fake attacks fool my triggers. That's why the fake attack skill was given to them, to stop people from trigger curing all thier spell afflictions. |
|
|
|
LightBulb MASTER
Joined: 28 Nov 2000 Posts: 4817 Location: USA
|
Posted: Fri Apr 12, 2002 3:42 am |
If you can depend on Bob to always fake an attack first and then deliver a real one second, it should be easy.
#TR {Bob waggles his fingers at you$*$%d health, %d mana$Bob waggles his fingers at you$(*)$} {#SAY {the real attack is {%1}}}
Replace the #SAY command with whatever you want the trigger to do.
LightBulb
All scripts untested unless otherwise noted |
|
|
|
Rugbystyle Wanderer
Joined: 07 Oct 2001 Posts: 71
|
Posted: Fri Apr 12, 2002 3:44 am |
To elaborate on exactly what I need Zmud to do for me.
For example say there are 10 spells that give afflictions in total.
I need to trigger cure for all of them. However the casters can fake any and all of them at random. So they could "fake spell 1, attack spell 2" "fake spell 4, attack spell 2" "fake spell 2, attack spell 8". I haven't figured out a way or found a way to differentiate between the fakes and the true attacks. Aside from the fact, that the fake is always before the attack. With a prompt in between. I hope that clears it up even more. |
|
|
|
TonDiening GURU
Joined: 26 Jul 2001 Posts: 1958 Location: Canada
|
Posted: Fri Apr 12, 2002 3:49 am |
Paste an entire attack round.
We need to see what happens between
what you have posted and the next round
of fake/real attacks.
From that we can see what can be anchored
upon to "detect" real attacks.
ie.. show us
Aside from the fact, that the fake is always before the attack. With a prompt in between
Ton Diening |
|
|
|
LightBulb MASTER
Joined: 28 Nov 2000 Posts: 4817 Location: USA
|
Posted: Fri Apr 12, 2002 4:12 am |
Someone should give you the bad news.
Unfortunately (for you), you have clever opponents. They've already noticed that some people are able to counter their attacks by using triggers and initiated the use of fake attacks to foil that. When you succeed in overcoming the "fake/real" attack pattern they will almost certainly notice that also. The moderately clever ones will then go back to no fakes or increase to two fakes. The truly clever ones will realize that any predictable pattern can be overcome and will initiate the use of random fakes instead. So sometimes there will be a fake, sometimes the real attack will come first, and sometimes it might come third. And unless you have some way (other than counting) to differentiate a real attack from a fake one, zMUD is NOT going to be able to do much.
Sorry.
LightBulb
Vague questions get vague answers |
|
|
|
dysonsphere Beginner
Joined: 11 Dec 2001 Posts: 16 Location: Canada
|
Posted: Fri Apr 12, 2002 5:07 am |
Actually the really really clever ones will figure out that you are using triggers and like Lightbulb said go to a random sequence or if devious enough will actually count on you to use your triggers against you. Just my 2 pennies
quote:
Someone should give you the bad news.
Unfortunately (for you), you have clever opponents. They've already noticed that some people are able to counter their attacks by using triggers and initiated the use of fake attacks to foil that. When you succeed in overcoming the "fake/real" attack pattern they will almost certainly notice that also. The moderately clever ones will then go back to no fakes or increase to two fakes. The truly clever ones will realize that any predictable pattern can be overcome and will initiate the use of random fakes instead. So sometimes there will be a fake, sometimes the real attack will come first, and sometimes it might come third. And unless you have some way (other than counting) to differentiate a real attack from a fake one, zMUD is NOT going to be able to do much.
Sorry.
LightBulb
Vague questions get vague answers
|
|
|
|
Rugbystyle Wanderer
Joined: 07 Oct 2001 Posts: 71
|
Posted: Fri Apr 12, 2002 5:25 am |
Well there are constants to the fake attacks.
-The ILLUSION skill itself (making a fake attack msg display) takes a balance. HOWEVER thier Affliction attack skill will work DIRECTLY after an ILLUSION. Hence they put ILLUSION ATTACK, and REAL ATTACK all in one macro.
-They can't for instance do REAL ATTACK/ILLUSION ATTACK both at once, because the REAL ATTACK takes balance from them, and they can't do the ILLUSION ATTACK without balance.
-They can't do FAKE ATTACK/FAKE ATTACK, or REAL ATTACK/REAL ATTACK by the same principal of needing balance.
-They CAN however do a FAKE ATTACK (wait for balance to come back) another FAKE ATTACK or REAL ATTACK. They wouldn't be back to back IE FAKE ATTACK/prompt/REAL ATTACK display
I was using EXAMPLES made up to aid in those who do not play the MUD in understanding the situation. Here is an EXACT clip from a fight log. My notes for explination are contained between ** **. -
*ILLUSION*Kassadur sinks his fangs into your body and you wince in pain.
You gasp as you feel your fine-tuned reflexes disappear into a haze of
3108h, 2641m ex-
*REAL*Kassadur sinks his fangs into your body and you wince in pain.
Hmmmm. Why must everything be so difficult to figure out?
3108h, 2641m ex-punch Kassadur
You throw a quick jab at Kassadur.
You connect!
3108h, 2641m e-
*REAL*Kassadur sinks his fangs into your body and you wince in pain.
A sense of extreme nausea washes over you.
3108h, 2641m ex-punch Kassadur
You throw a quick jab at Kassadur.
You connect!
3108h, 2641m e-
*ILLUSION*Kassadur sinks his fangs into your body and you wince in pain.
A sense of extreme nausea washes over you.
3108h, 2641m ex-
*REAL*Kassadur sinks his fangs into your body and you wince in pain.
The effect of the kalmia venom burns away at your fitness.
That was a quick clip of a Friend helping me out by attacking me. The Illusion/Real go all at once. I need to cure the afflictions that are given from the REAL attacks, while ignoring the illusioned affliction attacks. |
|
|
|
Vijilante SubAdmin
Joined: 18 Nov 2001 Posts: 5182
|
Posted: Fri Apr 12, 2002 11:31 am |
I am guessing you already have triggers for all the different afflictions, and you already have all the appropiate cures set up. Create this permenant ALARM
#ALARM {*1} {#IF (@CureSomething) {#SEND @CureSomething;@CureSomething=""}}
Then have all your triggers just set the appropiate cure commands into CureSomething, instead of sending them. It isn't perfect since the ALARM could possible fire after the fake is received and before the real is received, but the odds of that are quite low. |
|
|
|
Kjata GURU
Joined: 10 Oct 2000 Posts: 4379 Location: USA
|
Posted: Fri Apr 12, 2002 12:04 pm |
How about you put all the possible affliction messages into a stringlist, lets call it @afflictions, and you have the cures for the affliction in another list in the same order you have the affliction messages, lets call this list @cures, then you can do this:
#TRIGGER {{@afflictions}$%dh, %dm %w-$({@afflictions})} {#EXEC %item(@cures, %ismember("%1", @afflictions))}
This trigger will then look for an affliction message, followed by your prompt and then by another affliction message. This second affliction message is matched agaisnt the corresponding cure and sent to the MUD.
Now, to cover the case when the other person doesn't use an illusion you can use this trigger:
#TRIGGER {({@afflictions})} {#IF (!(%line3 =~ {@afflictions})) {#EXEC %item(@cures, %ismember("%1", @afflictions))}}
This trigger will look for a line that matches one of the stored affliction messaged, but then it checks to see that the second line before that is not another affliction message. If it isn't, we know that this is a real affliction message and thus we match it with its corresponding cure and send it.
Kjata |
|
|
|
Humpton Apprentice
Joined: 10 Oct 2000 Posts: 158 Location: Chicago, IL
|
Posted: Fri Apr 12, 2002 4:28 pm |
I have to confess to not having read all of the replies, but here's my solution logic - I don't have time to think about code.
Two triggers.
One is in a class called Fake, the other a class called DoIt.
Both trigger on the same thing.
ie Bob waggles his fingers (or whatever it was).
Start with the Fake class on, the DoIt class off.
Your Fake trigger turns the Fake class off and the DoIt class on. It does nothing else.
Your DoIt class does all it's magic (the code you have already probably) then turns the DoIt class off and the Fake class back on ready to do it again.
Any help?
Stay JOLLY!
H
___
Humpton lives like he types.... fast, and full of mistakes!
Core 2651: For those who prefer the future to the past. |
|
|
|
thePhos Newbie
Joined: 13 May 2002 Posts: 4 Location: USA
|
Posted: Sat Apr 13, 2002 12:20 pm |
Hi all,
Let me be the first to say I'm a total ZMud newbie. So I may be totally out to lunch. But I am also a DB programmer IRL.
It seems to me that you're saying that your 'real' attack always comes last in the string. So, should it not be fairly easy to have the trigger just check after each sequence to see if another attack sequence is behind it? If so, then ignore the previous sequence, and if not then run the 'cure' to the current sequence.
Hope that helps,
===Harpoonz=> |
|
|
|
|
|