|
Ashur Novice
Joined: 25 Jul 2011 Posts: 39
|
Posted: Thu Sep 29, 2011 11:57 pm
Long trigger |
I'm trying to make a trigger that will basically allow me to kick it off and it will herb a specified path. I figured I would accomplish this with a huge multi-state trigger.
In each room I need to:
search here for <herb name>
I will either be prompted with
Your search reveals nothing special.
or
You find a <herb>
If I don't find anything I need to move to the next room and try again. If I *do* find something, I need to 'search here for <herb name>' two more times, and then move on.
There's a good 60 rooms that I need to do this in, and it seems like there's a limit on how many states a trigger can have. Any suggestions from anyone would be helpful. |
|
|
|
Daern Sorcerer
Joined: 15 Apr 2011 Posts: 809
|
Posted: Fri Sep 30, 2011 12:24 am |
There's no limit on number of states as far as I know (I've seen at least 7), but I think you'll only need one state anyway. Try something like this:
Code: |
#ALIAS herb {#IF %1 {#T+ HerbSearching;herb = %-1;currentherbpath = @fullherbpath;search here for @herb} {#SAY "Syntax: herb <herb name>"}}
#CLASS HerbSearching
#VAR herb {}
#VAR currentherbpath {}
#VAR fullherbpath {n|s|e|w|etc}
#TRIGGER {^({Your search reveals nothing special.|You find a *})$} {#IF %match(%1,"^You find a ") {search here for @herb;search here for @herb};#IF %numitems(@currentherbpath) {#SEND %pop(currentherbpath);search here for @herb} {#T- HerbSearching}}
#CLASS 0 |
Just threw that together quickly, it's not tested so there's no guarantees it'll work, but I think it should. You'll need to put your list of directions in the fullherbpath variable. |
|
|
|
Ashur Novice
Joined: 25 Jul 2011 Posts: 39
|
Posted: Fri Sep 30, 2011 2:04 pm |
Ahh, so this works by setting up a specified path and the 'pop'ing the next direction at the appropriate time, right?
My question, then, is that the path is not necessarily linear. There is a fork and I need to search both ends of the fork. In essence, at some point I'll need to do:
Code: |
search here for <herb>; s;sw;se;se;ne;search here for <herb> |
Hopefully that makes sense. Any ideas?
*edit* Upon re-reading the code. Can I accomplish multiple moves by editing the fullherbpath to look more like
Code: |
#VAR fullherbpath {n;e;n;nw|s;e;s;w|etc} |
Does the '%pop(currentherbpath)' just whatever is between then |....| in the path? |
|
Last edited by Ashur on Fri Sep 30, 2011 4:09 pm; edited 1 time in total |
|
|
|
Daern Sorcerer
Joined: 15 Apr 2011 Posts: 809
|
Posted: Fri Sep 30, 2011 4:08 pm |
Just store s;sw;se;se;ne as one of the items in that list, and then change the bit that says #SEND %pop(currentherbpath) to #EXEC %pop(currentherbpath), so it expands.
|
|
|
|
Ashur Novice
Joined: 25 Jul 2011 Posts: 39
|
Posted: Fri Sep 30, 2011 4:10 pm |
Perfect, thank you Daern. Looks like I was just a little slow with my epiphany.
Thanks again! |
|
|
|
Ashur Novice
Joined: 25 Jul 2011 Posts: 39
|
Posted: Fri Sep 30, 2011 4:43 pm |
Hmmm, last thing (I hope) how to I kick this thing off?
|
|
|
|
Daern Sorcerer
Joined: 15 Apr 2011 Posts: 809
|
Posted: Fri Sep 30, 2011 7:39 pm |
Heh, type herb <herb name>.
|
|
|
|
Ashur Novice
Joined: 25 Jul 2011 Posts: 39
|
Posted: Fri Sep 30, 2011 9:08 pm |
Ahh, I was close. So, I have run into a small snag. Each room that contains 3 herbs. The syntax for "you found an herb" is always the same. So what I'm running into is the following
>You find a *
-trigger fires (search;#WAIT 900;search;#WAIT 9000)
But upon finding the second herb, the trigger fires again. So I end up being stuck searching when it's actually time to move to the next room. Can I make the trigger do something like on 'You find a *'
Code: |
disable myself
search here for @herb
WAIT 9000
search here for @herb
WAIT 9000
move to the next room
enable myself |
It seems like this should be very doable, I'm just not sure of the syntax
*edit*Hooray, I figured it out. Thanks! |
|
|
|
|
|