Ask Triggers for multiple mobs in one room

  • Nero
  • Nero's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
1 year 3 months ago #8523 by Nero
Is it possible to create ask triggers for multiple mobs in one room?

For example:
I have three mobs, fred, delnar, and negrak in one room who I want to each have their own ask triggers

Right now it only seems that fred's ask trigger overrides delnars and negraks since he is the first in the room
Name: 'Fredrick: Ask Trigger',  VNum: [23007], RNum: [ 1245]
Trigger Intended Assignment: Mobiles
Trigger Type: Command , Numeric Arg: 100, Arg list: ask
Commands:
if %cmd% == ask && (!%arg%)
return 0
*
elseif (%cmd% == ask && ((%arg% /= fredrick) && (%arg% /= delnar))
tell %actor.name% Delnar and his brother both volunteered to serve me in my time of need after Mistaavi tried to kill me.  Delnar does not seem to get along too well with my guards or their captain.  I wish he would temper that mean streak of his a little.

Please Log in or Create an account to join the conversation.

More
1 year 3 months ago #8524 by Krell
Replied by Krell on topic Ask Triggers for multiple mobs in one room
I'm not sure what you're trying to do. Are you trying to get each mob to say the same lines when asked?

Also
((%arg% /= fredrick) && (%arg% /= delnar))

Means that the string has to contain both "frederick" and "delnar" or it won't fire. Is that intentional?
Do all three mobs share the same script?

Please Log in or Create an account to join the conversation.

More
1 year 3 months ago #8525 by Krell
Replied by Krell on topic Ask Triggers for multiple mobs in one room
Did some testing with this script
if %cmd.mudcommand% == ask && %self.name% /= %arg.car%
  say %actor.name% is the greatest!
  say My name is %self.name%!
elseif %cmd% == ask && !%arg%
  return 0
end

The two mobs I was testing on wandered between two rooms. The latest mob to join the room was the mob that replied, unless it was the only mob. Mobs by themselves in the room replied.

So there seems to be something that determines which mob replies to the command based when it arrived in the room.

Please Log in or Create an account to join the conversation.

More
1 year 3 months ago - 1 year 3 months ago #8526 by Papaya Pete
Replied by Papaya Pete on topic Ask Triggers for multiple mobs in one room
It is possible to have them have their own ask chains, but you are going to have to McGuyver it.
If you are going to have these mobs wander about, they each are going to need their own scripts. Having all three in one room, with them not being able to be killed/moved, you can apply a script on one and have it handle topics being asked by all three.

I don't have an example on hand, give me a bit and I will pull one up and edit this post.

Here's an example I have on hand; it's a blacksmith in a small village, and you can ask him about different topics. I apologize ahead of time for the length and any weird spacing; I ripped this straight out of notepad with color codes in, and just tried to quickly remove them to make it more readable.
%echoaround% %actor% %actor.name% asks %self.name% a few questions...
switch %arg%
  case metalsmith name
  case durgen name
    emote pants a little, wiping sweat off of his brow. "The name's Durgen. Village metalsmith.  Pleased to meet you."
    break
  case metalsmith job
  case durgen job
    emote gestures with a hammer at his little shop. "It doesn't look like much, but this is it; finest goods in all of Hammerfell!"  He smiles in satisfaction.  "It gets a bit chilly wearing some of this, but when you're delving in caves the cold isn't that much of a problem.  Usually it's some other kind of danger."
    break
  case metalsmith help
  case durgen help
    say Ah there is something that you could do to earn some coin.
    say Over in the mines, there's plenty of iron for me to work with.  However, I can't really go over there and get it myself; I have plenty of work here to do!
    say Mine out as much as you can for me and bring it back, and I'll pay you for your hard work!
    break
  case metalsmith village
  case durgen village
    say It's small and out of the way, but that makes it easy to keep up with demand.  Not too many folk around here don't have a huge need for armor.  However, there's plenty of adventuring youths wanting a bit more protection before going to the mines or cavern.
    break
  case metalsmith hammerfell
  case durgen hammerfell
    emote shrugs, slamming his hammer down a few times.  "It's cold here, especially at night, but beyond the 	ocavern lies Frostfall Mountains and a lot more cold."
    break
  case metalsmith dangers
  case durgen dangers
  case metalsmith danger
  case durgen danger
    emote chuckles dryly as he continues to work on a blade.  "Yes, there are some to be found in the forest.  Even more if you head underground; browse my wares, friend!  I'll even repair something for you if you'd like."
    %send% %actor% If you'd like more information on repairing, type help repair.
    break
  case metalsmith cavern
  case durgen cavern
    say The cavern's the only way out of Hammerfell, and can be quite dangerous.  Some of the other youths around here have gone in and found quite a few cave bugs; they like warm places and settle in where there's food.	n
    emote chuckles, "Don't worry yourself too much... they're not meat eaters; mostly they just scavenge for plants and mushrooms.  The problems arise when you're too close to their nest."
    break
  case metalsmith twiglings
  case durgen twiglings
    emote laughs a little, "I think a spry youth like yourself can handle them."
    break
  case metalsmith wolves
  case durgen wolves
    emote nods rather grimly, "We've lost quite a few to those beasts.  The small packs are extremely dangerous; if I were you, I'd just run away from them if I was ambushed."
    break
  case metalsmith mine
  case durgen mine
  case metalsmith mines
  case durgen mines
    say They used to be easy to work in, but cave bugs have infested the place and make it a royal pain to get anything out of.  Others have managed to get some ore, but it took a lot of work!
    emote thinks for a moment, "Ah, one of them told me something... yes, that's right; the deeper you go, the closer you'll get to their nest.  Keep that in mind."
    break
  case metalsmith ruins
  case durgen ruins
    say Ruins, you say?  That's a dangerous place, I'm sure... best equip yourself with the best you've got if you plan on going there.
    break
  case metalsmith black hand
  case durgen black hand
    emote scowls, "It might be peaceful here, but those foul fiends will probably find a way to try and ruin that in Hammerfell.  By the time they get here, I'll make a blade so fine that its wielder will easily split any Black Hand brigand in two!"
    break
  case metalsmith phoenix
  case durgen phoenix
  case metalsmith phoenixes
  case durgen phoenixes
    emote sighs, "Been a while since I've gone in and heard Rucks talk about the good ol' days... well, good except for the being in a hopeless war part!  Hah!"
    say 	rSome of them are quite good; you'd probably get a kick out of it!	n
    break
  case metalsmith falwynd
  case durgen falwynd
    emote shrugs his shoulders, "Eh, I've thought about leaving here and trying to get to there... but I just don't have the heart to try.  I'd have to start over completely; it's not like I can ALL of my tools of the trade with me..."
    say 	No, no... I'm quite pleased to be in this little village.
    break
  default
    %send% %actor% Either the person you are questioning isn't here, or that person doesn't know anything about that subject.
    break
  end

So, if you had your three different mobs in the same room, you can add in case statements tying in the keywords that would point to that mob and a topic that he has something to say about. "case ben skywalker" if you want to ask Ben about someone named Skywalker, for example.
However, if mobs wander about and you don't know if said person will be in the room... you could have the script check to see if your target mob is in the same room, and react accordingly. If you have three different mobs who all wander around, you could just slap the same script into all three if it checks to see who is present when a question is asked.
Last edit: 1 year 3 months ago by Papaya Pete.

Please Log in or Create an account to join the conversation.

  • Nero
  • Nero's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
1 year 3 months ago - 1 year 3 months ago #8527 by Nero
Thanks this may be what I need. It will be 3 mobs that are all in one room, they do not wander. I have three separate scripts on each but only the mob that is first in the room seems to override when trying to ask anything.

Also, yes the above script is intentional

I want the player to ask fredrick delnar and he will respond with information about Delnar.
Last edit: 1 year 3 months ago by Nero.

Please Log in or Create an account to join the conversation.

More
1 year 3 months ago #8528 by Fizban
Replied by Fizban on topic Ask Triggers for multiple mobs in one room
The scripts don't need to be combined, the if checks just need to be selective enough to only trigger for things meant to trigger their speech, and they need return 0 for everything else to allow other triggers in the room to interact with any command that doesn't trigger the first script, etc.

Please Log in or Create an account to join the conversation.

More
1 year 3 months ago #8529 by thomas
Replied by thomas on topic Ask Triggers for multiple mobs in one room
Yes, the important thing here is:

they need return 0 for everything else to allow other triggers in the room to interact

If a script does not return 0, it is considered to have handled the inquiry - others won't get checked. If it returns 0, it is considered to be "not applicable" and next trigger is checked.

Please Log in or Create an account to join the conversation.

More
1 year 3 months ago - 1 year 3 months ago #8531 by Krell
Replied by Krell on topic Ask Triggers for multiple mobs in one room

The scripts don't need to be combined, the if checks just need to be selective enough to only trigger for things meant to trigger their speech, and they need return 0 for everything else to allow other triggers in the room to interact with any command that doesn't trigger the first script, etc.


Man, why couldn't I have seen this hours ago?!? As it is, this is the script I managed to come up with for my previously mentioned test mobs that seems to work. You have no idea what complicated mess I was working on before I scrapped the whole thing, twice....
*
* Mulitple Mobs Ask Trigger
*
context %self.id%
mobile_1 edgar
mobile_2 jess
*
*
if %cmd.mudcommand% == ask && %arg%
  if %self.name% /= %arg.car%
    say %actor.name% is the greatest!
    say My name is %self.name%!
  elseif edgar /= %arg.car% && edgar != %self.name.car%
    return 0
  elseif jess /= %arg.car% && jess != %self.name.car%
    return 0
  elseif %arg.car% && %arg.car% != %self.name.car%
    return 0
  end 
elseif %cmd.mudcommand% == ask && !%arg%
  return 0
else
  return 0
end

I was going to share earlier, but I didn't have a chance to test it until after work so I didn't know if it would work or not. Besides, I had some bugs I had to work out due to the odd misype. Also, I can't seem to get strings assigned to variables to work properly. Maybe someone can help with that?

Addendum:

I've already reduced it down to the following:
*
* Mulitple Mobs Ask Trigger
*
*
if %cmd.mudcommand% == ask && %arg%
  if %self.name.car% /= %arg.car%
    say %actor.name% is the greatest!
    say My name is %self.name%!
  elseif %self.name.car% != %arg.car%
    return 0
  end 
else
  return 0
end
Last edit: 1 year 3 months ago by Krell. Reason: Improvment and modification to shared script

Please Log in or Create an account to join the conversation.

Time to create page: 0.348 seconds