Mobs reacting to socials, %victim.name% not set in act triggers?

  • Banlock
  • Topic Author
  • Offline
  • Fresh Boarder
  • Fresh Boarder
More
2 months 4 days ago - 2 months 4 days ago #8435 by Banlock
I'm running tbaMUD 2018.1 and I've been looking for a generalized way to have mobs react to socials (slap a dragon lately?), perhaps with a multiple triggers based on mob temperaments (one trigger each for aggressive, cautious, wimp, etc.) and then in each trigger a set of 'case' statements to flip through all of the socials I'd like to respond to - maybe with a default of 'emote ignores %actor.name%'.

But how would a script determine if the triggering mob is the victim of the social? Looking at the examples, it seems that most trigger on text from the social - but I want to be more general. Why not use %victim.name%?

So I created this trigger:
Name: 'RW - Mob Response to Socials',  VNum: [ 1004], RNum: [  288]
Trigger Intended Assignment: Mobiles
Trigger Type: Act , Numeric Arg: 1, Arg list: *
Commands:
say Trigger activated!
say The victim name is %victim.name%
say the command is %arg%!
say the actor is %actor.name%!

Then in one room loaded a clone (10) and a zombie (11) and attached my trigger to the clone. Then:

550H 150M 132V > smile zombie
You smile at it.
The clone says, 'Trigger activated!'
The clone says, 'The victim name is the zombie'
The clone says, 'the command is Admin beams a smile at the zombie.!'
The clone says, 'the actor is Admin!'

550H 150M 132V > smile clone
You smile at it.
The clone says, 'Trigger activated!'
The clone says, 'The victim name is '
The clone says, 'the command is Admin smiles at you.!'
The clone says, 'the actor is Admin!'


It looks like %victim.name% isn't getting set when the triggering mob is the victim.

Am I doing something wrong?

Is there a way to compare to nul?

I tried:
if %victim.name% == ""
  say I think I'm the target!
  say the actor is %actor.name%!
  say the command is %arg%!
else
  say I don't think I'm the target
  say the target is %victim.name%
  say the actor is %actor.name%!
  say the command is %arg%!
end

Which gives me:

550H 150M 132V > slap zombie
You slap the zombie.
The clone says, 'Trigger activated!'
The clone says, 'I don't think I'm the target'
The clone says, 'the target is the zombie'
The clone says, 'the actor is Admin!'
The clone says, 'the command is Admin slaps the zombie.!'

550H 150M 132V > slap clone
You slap the clone.
The clone says, 'Trigger activated!'
The clone says, 'I don't think I'm the target'
The clone says, 'the target is '
The clone says, 'the actor is Admin!'
The clone says, 'the command is Admin slaps you. Ow!!'


I could use 'you*' to establish that the triggering mob is the victim, but at least 'splash' also uses that in the text to the non-victims. So it doesn't seem safe to do that.

Any advice?
Last edit: 2 months 4 days ago by Banlock.

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

More
2 months 1 day ago #8436 by Rumble
I would test with a mortal, looks like you are testing with nohassle on (help nohassle- Prevents aggressive mobs from attacking and triggers from targeting the player).

Rumble
The Builder Academy
tbamud.com 9091

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

  • Banlock
  • Topic Author
  • Offline
  • Fresh Boarder
  • Fresh Boarder
More
2 months 1 day ago #8437 by Banlock
Thanks, looking at the results of 'toggle' I seem to be running 'nohassle' already, but I tried switching to the zombie first (which should remove any god settings, correct?), and still got an unset victim:

550H 150M 132V > switch zombie
Okay.
the zombie> slap clone
You slap the clone.
The clone says, 'Trigger activated!'
The clone says, 'The victim name is '
The clone says, 'the command is the zombie slaps you. Ow!!'
The clone says, 'the actor is the zombie!'
the zombie> return
You return to your original body.


What I've done now is:
* This is setup to fire on actions
say Trigger activated!
* Note, as this trips on all actions including OLC, emotes and look
* The victim.name isn't set if the target is itself, so we test for 
if (!%victim.name%) && (%self.pos% == Standing)
  say I think I'm the target!
  say the actor is %actor.name%!
  say the command is %arg%!
else
  * Do we want to do anything for other positions?
end

Which gives me:

550H 150M 132V > switch zombie
Okay.
the zombie> slap clone
You slap the clone.
The clone says, 'Trigger activated!'
The clone says, 'I think I'm the target!'
The clone says, 'the actor is the zombie!'
The clone says, 'the command is the zombie slaps you. Ow!!'
the zombie> return
You return to your original body.


I'm working on a more complicated one that will do something like a consider to help the mob decide if they should attack when the victim of a physical social (like a slap).

I might also have some social flagged as too silly to respond to, and have something like:
echo We apologize for the silliness in the socials. Those responsible have been sacked.

I'm working on a more real example, and I'll post that here in case it would be useful to anyone.

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

More
1 month 1 week ago - 1 month 1 week ago #8438 by Fizban
What MUD are you working on this script on?

I can play around with it on tbaMUD, but might be easier to log onto the actual MUD in question and see if I can help you get it to work due to any potential code-related differences between the two MUDs.
Last edit: 1 month 1 week ago by Fizban.

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

  • Banlock
  • Topic Author
  • Offline
  • Fresh Boarder
  • Fresh Boarder
More
1 month 1 week ago #8439 by Banlock
Thanks for the offer, the MUD isn't ready for action, between family and the job and whatnot. I'm really still just still working on the god zone for the mud, none of the player areas are ready. I guess I'm using the god zone to test out the atmosphere, or I'm just procrastinating.

But if you are still interested, its mud.rouseworld.org:4000, just let me know your user name so I can promote you to a level that can do some editing.

Below is the current state of the test script, it seems to work okay, but obviously can be confused by emotes with similar wordings. I want at some point to do a better job pushing the socials into categories that make more sense.
* Mob reactions to socials
* This is a test of a mob that is intelligent, non-social, non-provokable, non-wimpy
* Note - This is setup to fire on actions
* Note - From note above, this trips on all actions including OLC and look
* Note - In socials.new the fifth line is the line that the victim sees
* Note - For some of these, will need to do a consider before violent reaction?
* Note - Maybe have a this social is too silly response?

* The victim.name isn't set if the target is itself, so we test for negation/empty string
* Note - emotes also don't set victims, so potentially could trigger incorrectly on one
*   Maybe also check for name in the arg? (%arg% /= %self.name.cdr% doesn't seem to work)
if (!%victim.name%) && (%self.pos% == Standing)
* aim
  if (%arg% /= weapon at you)
    emote gets into a fighting position.
    say Are you trying to start something?
* battlecry/growl/hate/hiss
  elseif (%arg% /= warcrying) || (%arg% /= growls at you) || (%arg% /= burning with hatred) || (%arg% /= hisses at you)
    emote stares at %actor.name% warily.
* bearhug/muss
  elseif (%arg% /= bearhug) || (%arg% /= your hair)
    emote pushes %actor.name% away.
    say Hey, back off, okay?
* beckons
  elseif (%arg% /= beckons)
    emote points to thier self questioningly.
* bite/caress/collapse/comfort/cradle
  elseif (%arg% /= bites) || (%arg% /= caresses) || (%arg% /= collapses) || (%arg% /= comforts) || (%arg% /= cradling)
    emote backs away from %actor.name%.
    say Keep back you wierdo.
* bonk/bop/fwap/noogie
  elseif (%arg% /= bonks) || (%arg% /= bops) || (%arg% /= fwaps) || (%arg% /= you a noogie)
    emote shakes their head.
    say You are starting to make me angry.
* bow
  elseif (%arg% /= bows)
    emote bows to %actor.name%.
* box/clobber
  elseif (%arg% /= boxes) || (%arg% /= clobber)
    emote doges %actor.name%.
    emote takes a few swings at %actor.name%.
* challenge
  elseif (%arg% /= challenges)å
    emote straightens their posture.
    say %actor.name%, don't try to start anything.
* charge
  elseif (%arg% /= charges)
    emote sidesteps %actor.name% advance.
    say Are you mad?
* embrace/enthuse/facegrab/fondle
  elseif (%arg% /= embraces) || (%arg% /= enthusiastically) || (%arg% /= face tightly) || (%arg% /= being a pervert)
    emote pushes %actor.name% away.
    say No!
* french/goose/grope/kiss/pinch
  elseif (%arg% /= passionate kiss) || (%arg% /= gooses your) || (%arg% /= gropes you) || (%arg% /= kisses you)  || (%arg% /= pinches your)
    emote shoves %actor.name% away.
    emote slaps %actor.name%.
* hug/huggle/lean/makeout
  elseif (%arg% /= hugs you) || (%arg% /= huggles you) || (%arg% /= leans against you)  || (%arg% /= looks desperate)
    emote backs away from %actor.name%.
    say Stay back, you!
* nibble/nuzzle/peck
  elseif (%arg% /= your ear) || (%arg% /= nuzzles your) || (%arg% /= gentle peck)
    emote pushes %actor.name% away.
    say No!
* nudge/pat/pet
  elseif (%arg% /= nudges you) || (%arg% /= your head) || (%arg% /= pets you)
    emote gives %actor.name% a puzzled look.
* peer/look
  elseif (%arg% /= peers intently at you) || (%arg% /= looks at you)
    emote looks at %actor.name%.
* poke/slap/nyuk
  elseif (%arg% /= slap) || (%arg% /= poke) || (%arg% /= pokes at your)
    emote steps back from %actor.name%.
    say What the heck?
* pounce/pound
  elseif (%arg% /= pounds you into) || (%arg% /= pounces on you)
    emote dusts themselves off.
    emote looks at %actor.name%.
    say If you want to really fight, go for it!
  else
    * Ignore things we don't recognize
  end
else
  * Do we want to do anything for other positions?
end

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

  • Banlock
  • Topic Author
  • Offline
  • Fresh Boarder
  • Fresh Boarder
More
2 weeks 1 day ago #8444 by Banlock
Hey, thanks so much for creating a character, I apologize for not noticing sooner - I was swamped at work and haven't been working on the mud.

I set your level to 33, but when I tried to: "set file fizban admlevel 4", I got a message saying "Can't set that!" - what a I doing wrong?

Thanks,

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

Time to create page: 0.234 seconds