Topics in Category: Building - tbaMUD Mon, 06 Jul 2020 20:01:23 +0000 Joomla! - Open Source Content Management /media/kunena/images/icons/rss.png Topics in Category: Building - tbaMUD en-gb Trigger of the Day - by: Rumble
Again, anyone can post an example or if they have a trigger idea they want implemented they can post it for others to write a trigger for them. This is meant as a community project so the more participation we have the more ideas everyone can come up with. We still have builders on TBA dreaming up new ways to use trigedit all the time.

Some Example Requests:
I want an interactive mob/obj that does something when a player does ... (beginner)
I want a mob/obj that has a special skill/spell that does .... (intermediate)
I want a weapon that levels up as it is used, for example .... (intermediate)
I want a quest to rescue a princess. The quest should start with .... (advanced).

This will be a free for all. The first person to post for the day wins. Please create a new topic in the building category. Anyone can reply to the post with feedback and other ideas. There are numerous ways to do any one trigger and more than one solution is always desirable.

The hardest part of making a trigger is the initial planning. If you fail to give a good description of exactly what you want it to do you will get various interpretations from different people. Which isn't a bad thing, but it may not be what you want.]]>
Building Sun, 10 Jun 2012 21:56:10 +0000
can an object in a container get the - by: Parnassus
It may be possible to simplify. You probably want this mask to do something until a certain time and after that time to do something else. As a mask, you probably want this to happen while it is being worn. Why not put a timer on it to set a variable after whatever time. Then check to see if it is being worn. If it is being worn, hmm, I dunno if you could silently switch it.

Okay, I tested this and, yes, it will transform silently. It amused me to use a food item as the transformation and to see my test character was wearing a chestnut on her head. However, the trigger will exist on the new object. You can get around that with a vnum ifcheck. The trigger did not work if the item was in a container.

If the item is not being worn, run the trigger when someone puts the mask on since you probably didn't want to do anything with your mask until then. Check for the timer variable and switch or don't switch, depending.

Your trigger is probably totally different than what I'm thinking and this has nothing to do with the question but this may provide a jumping off place for you.]]>
Building Sat, 04 Jul 2020 01:16:04 +0000
Trigger of the Day - Advanced - by: Parnassus
But, yes, this is one that catches me every time! I love what I call "Fizban's Fix" especially since I've been in a room with a mob looking for /=king. If you tried talking in this room, the mob would talk about the king if you mentioned asking, talking, walking, killing or many other things.

However, as Rhade says, when you change "look {noarg}" to "look '{noarg}", you've now changed that noarg to an arg that matches your criteria since "look ' " is part of "look 'compass".

For more info on this matter:
Trigger of the Day - Mob Command Example
and /= .]]>
Building Sat, 20 Jun 2020 15:32:35 +0000
re: echoing object variables - by: Parnassus
It's hard to see exactly what's going on with your trigger since the clip is so short. You used "say" to see the outcome of the variables and that's really good! You may find it easier to use %echo% since some trigger types don't recognize "say". It would be helpful to see what was returned (what was said).]]>
Building Sun, 07 Jun 2020 18:40:17 +0000
re: %at% to a variable? - by: thomas Building Thu, 14 May 2020 20:43:39 +0000 example quests ? - by: humbletang
Yea I was looking for inspiration, and a set of them to see what was possible in general. I wouldn't ask you to dump time into this for me just yet =D, its not clear how much time I'll be spending either with all the craziness going on.

I'll check out qedit though!]]>
Building Sun, 10 May 2020 18:57:34 +0000
Faking a 2D array and % symbols on output - by: Parnassus Building Wed, 22 Apr 2020 14:38:22 +0000 Mob Hurls Actor (Check for Closed Doors) - by: Ether
Building Wed, 18 Mar 2020 04:08:14 +0000
Mobs reacting to socials, not set in act triggers? - by: thomas

The var dg_victim is usually only set if $N, $M or $S appears in the message. In this case, we send the specific text "you", so this won't trigger. However, when we know we're sending to the victim, we can set it right away.]]>
Building Sun, 19 Jan 2020 14:34:57 +0000
Checking character has high enough skill level: %actor.skill(backstab)% ? - by: lacrc

I haven't tested this but I think the skill() function should be used as %actor.skill(skillname)% and then it will return the amount of practice a player has in the skill passed along in parenthesis.

In your case I think the mud is looking for the "backstab > 60" skill, returning "unknown skill", and not working as expected.

For testing sake you can try:

And see what it'll print out.

Hope it helps!]]>
Building Mon, 18 Feb 2019 14:54:34 +0000
setting room flags via triggers - by: Parnassus
My tarot deck uses 78 cards and the shuffle checks each random card to see if it's already in use. The main difference is that each player uses a different set of cards so the vars just attach themselves to each virtual deck. The problem is going to be finding where to attach your vars.

I think it should be possible to do this using a room trigger in some sort of waiting room or a mob trigger on a receptionist in the waiting room. Place a var of the room number on the trigger and have the trigger go though all available rooms and check for a var.

Actually, even easier would probably be treating it more like the maze. When the player starts, attach the rooms with exits. When the player has finished, remove all exits in that players set of rooms. This can be done using the 'key' to hold the room number vars. When a new player enters, check each random room for an exit. If an exit exists, check the next random room until you find one with no exits. This would cut down the list of vars in one place since you'd only have a limited set on each key rather than one set trying to keep track of the whole zone.

The keeping track of the whole zone thing is a whole different problem. The thing that comes to my mind is work out how many people can use the zone and keep track of the used rooms in the first section. When that section is used up, any other players would get the message that they can't enter. You might be able to save some room vnums by making a few halls that any player can enter but with exits that only the player with the matching 'key' can enter. Or, hey, how about a trigger that teleports the player from the hall to the next room vnum var on the 'key'. This can look a bit messy because they enter one room to find themselves in another room but that can be cut down by making a throw-away room that looks exactly like the one they entered except the exit will lead somewhere else.

After this example of how my brain works, aren't you glad you don't do DG anymore? :)]]>
Building Fri, 15 Feb 2019 04:03:03 +0000
Mobs using skills - by: Sascha Building Mon, 11 Feb 2019 21:09:04 +0000 DG-script last end tank - by: Parnassus
We'll still need that loop although things just got a little harder. Now you're going to need some variables which attach to the mob. For each player he checks, he's going to need a variable for name for the hp (or attack power or whatever you decide to look at). Next you need to compare the hp you've just checked to the one that you checked previously. If %hp.next_in_room% < %hp.lowest% then it becomes %hp.lowest% and the player becomes %name.hp.lowest%. These are examples and are not the best way to do things. This is also not guaranteed to work.

When the loop is done, the lowest hp has now been noted, along with the name of the player.

Mob say Put 'em up, put 'em up! Which one of you first?
wait 1 second
Mob say I’ll fight you with one paw tied behind my back. I’ll fight you standing on one foot.
wait 1 second
Mob say I’ll fight you with my eyes closed...oh, sneaking up on me, eh, %name.hp.lowest%?
wait 1 second
mkill %name.hp.lowest%

Remember that this person may be the strongest in the room who has just tanked for everybody and hasn't recovered from the damage yet.

I'd also recommend a room trigger which shows Mob blocking anyone who tries to leave. If the trigger is on the mob, it won't run because the other mob is running. If you don't block exits, your mob may be doing all this work only to find that %name.hp.lowest% has already left. I think it will still work but hitting the player in another room won't look as good. Also, once the player has left, the chance of finding a mob with the player's name now pops up.]]>
Building Wed, 23 Jan 2019 23:02:44 +0000
Detaching triggers - by: WhiskyTest Building Wed, 19 Dec 2018 08:40:24 +0000 determining the value of a flag - by: WhiskyTest
To have a trigger recognize race flags would require extending the trigger code to be able to reference them.
You'd be looking at dg_variables.c in void find_replacement() to get started. It's probably a bit more involved than adding a new race though!

A final approach occurs as I'm writing this: make undead an AFF flag. That is super quick to add, and the trigger code already allows checks to see if these are set. You'd do it the same as checking for if a mob was affected with FLY for example.]]>
Building Sun, 25 Nov 2018 10:52:46 +0000
Zone Building Scripts - by: Nero
I want to be able to run the script and it auto translates the text file into olc and builds the rooms/zones fast and efficiently.]]>
Building Mon, 12 Nov 2018 04:44:50 +0000
qedit - give item to questmaster - by: JTP
Did you set load time to be depended on the privious statement in zedit ?]]>
Building Sat, 27 Oct 2018 21:53:48 +0000
Problems with a Mob Command trigger - by: Parnassus
Create trigger:
Name: Command trial
Intended for: Mobiles
Numeric arg: 100
Arguments: *
if %cmd% == greetings
say Hello,
elseif %cmd% == goodbye
say Goodbye,

Get my test character (level 7) to greetings. (Greetings rather than greet because I had an idea somehow that emotes wouldn't work so I used goodbye which is an emote and greetings which isn't).

> greetings
> goodbye
You wave goodbye to everyone.

Various changes tried one by one in no particular order and in various combinations:
Changed numeric arg to 0
changed argument to greetings
changed argument to g
changed %cmd% to %cmd.mudcommand%

Looked up various triggers and decided on 62 which is the trigger about 'look orb'.
Cut and pasted the commands over my commands. Still nothing.
Checked that the trigger was actually attached to the mob! (Yes, I've had problems with getting unattached triggers to work before...)
Checked that the room was actually inside and flagged indoors so that it wouldn't be a no-light type situation.
Checked to make sure that, yes, it was my low level character and not my high level character.
Checked to make sure that the parameters were the same as trigger 62.
Still nothing.

Checkload t 62 to see that it's loaded onto a magi guard.
Where magi to see that the guard is in room 134
Took the test character to room 134 to look orb which worked.

Went back to my mob's room.
trigedit 40301
W: copy trigger
62 (as far as I could see it was already the same but then why wasn't it working?)

Tested the trigger again and still nothing.

attach mob 62 quesnel
This worked!
detach quesnel 62 (This left only my 40301 on Quesnel although it thinks it's 62)
Again look orb works and now when I changed everything it all worked. So now I figured everything is good, right? Because it all works! So I brought in another mob, Brianne, who has the same trigger. My thinking is that my test character will do greet (by this time I've changed from greetings) and both of them will react. Nope, only Quesnel reacted. It was a bit confusing because Brianne actually had on another trigger (so two triggers) which was reacting to Quesnel's reaction so I put Quesnel to sleep. Brianne now refused to do anything at all.

attach mob 62 brianne
Look orb worked.
detach brianne 62
Now greet worked.

Woke up Quesnel and did greet.
Quesnel reacted to greet.
Brianne reacted to Quesnel. (other trigger)
Brianne reacted to greet.

So it was perfect! Well, except for the whole attach and detach thing which I totally don't understand.

Yeah, it's a lot of trials but that's how frankentriggering works. I don't worry about this because it's only cosmetic and it reacts as trigger 40301. The trigger still thinks it's trigger 62 and not 40301 but I think it stays like this until I reboot the mud. But I've done lots of triggers and never seen anything like this ignoring the trigger thing except when there's a problem with the trigger itself. I can see it's not the trigger because it worked on one mob but not the other until after the attach/detach at which time the trigger worked with no modification to the trigger itself. It was kind of like the mob didn't know what to do with the trigger until I gave it an example and then it was "Oh, okay, now I understand what you want." and off the trigger goes!]]>
Building Sat, 22 Sep 2018 15:27:07 +0000
Help with trigger - by: thomas
Next, add a trigger to the object. It should fire if it's picked up.
the object trigger should check if the hunting mob is already loaded, or load it otherwise. Then it should force the hunter to "mhunt" the one who picked it up. It may be useful to remote an identifier to the mob as well, for use in its own scripts.
Similarily, if dropped, it should either purge the hunting mob or at least make it stop hunting (I think it's mforget you use for this)

Next, it's just a question of adding a trigger to the mob so it picks up the object from any corpses it happens across.]]>
Building Sat, 22 Sep 2018 11:37:03 +0000
Ascii in triggers - by: Parnassus

thomas wrote:

In my weird non-coder way, I'm seeing: if there's a token, substitute someone and if there isn't, substitute you. And maybe: if there isn't a token and there isn't not a token don't do anything? Um, what's a token, please?]]>
Building Mon, 17 Sep 2018 22:32:41 +0000
Weapon that casts spell. - by: Parnassus
I especially recommend this one:

Yes, I realize that isn't a spell but the thing about the triggers that he's chosen is they're usually flexible and can be modified to do different things. In fact, modifying them is a good thing since it's good practice in finding out how triggers work. Some of my best triggers have been modified from other triggers.]]>
Building Tue, 24 Jul 2018 00:56:48 +0000
First Trigger - by: Banlock
Does that help?]]>
Building Sat, 07 Jul 2018 17:12:22 +0000
Zone Proposal - by: Jester Jester's Zone Proposal
Builder : Jester
Zone : The Library of Xehas
Began : June 18th 2018.
Player Level : All
Rooms : 50
Mobs : 30
Objects : 100
Triggers : 60
Theme : The Library of Xehas serves as a repository of knowledge. NPCs from around the world walk its halls in search of knowledge. The Library provides a depth to the history of the setting as well as plot hooks for quests and hints to secrets around the world, including within the library itself. Ultimately a player can gain entrance to the forbidden section of the library and fight the posessed Codex of the Infinite on the final floor of the library. If the codex is defeated the book can be used as a gate to another area.
Completion : September 2018.
Notes : Nuetral, a mix of all alignments. Many secrets are within the library. A shop that sells writing materials. The area is filled with shelves, books, treatises and tomes galore. I plan to include an area where players can write down their backstories or write their own tales. The library is divided by subject matter and floor, it is also part museum containing both artifacts and maps from the surrounding lands. The Library of Xehas fits in any large city area.]]>
Building Tue, 19 Jun 2018 07:25:30 +0000
Mob cast - by: JTP
That gives the player a chance to rush in and attack.

Idearly i would like the mob to have the spell/spells in even if no player is in the room.]]>
Building Mon, 28 May 2018 14:32:28 +0000
Teleport trigger - need advice - by: JTP Building Sat, 12 May 2018 17:45:01 +0000 stop kill trigger - by: Parnassus
Personal story here: when I was working on a Smaug mud, a friend asked, "Why do paladins get disarm? How honourable is it to knock away someone's weapon and fight an unarmed person?" That led me to write a trigger. The paladin-type king would take all and then try to disarm the player. If successful, the king would teleport out to a dump room, drop all, wait (I think it was 2 sec), heal himself, teleport back and take all again. The pause would be enough to stop the fight without actually being visible to the player if there's no teleport message. I didn't like the message about fighting someone who wasn't there but the rest worked well. The king would have the weapon because of that second take all, give it back to the player and suggest they stop fighting.

If it's not the fighting so much as the killing that you want to stop, have the mob keep repairing any damage and you can add the message you want to the trigger.]]>
Building Sat, 12 May 2018 17:25:53 +0000
Spells on mobs dont show message when they end - by: WhiskyTest Building Thu, 10 May 2018 06:58:59 +0000 Could use some trigger help - by: Krell net effect of two. The side effect is that it complicates your script somewhat.]]> Building Tue, 01 May 2018 14:35:47 +0000 Saving object timer values to pfile with remote - by: hurin
So until he actually makes some changes I am stuck with doing it this way. My problem (I think?) was in the evaluation of the variables. I think it was how I was doing it in the if statement? I moved the evaluation outside of the if and it pulled the value perfectly.

This of course works because as clarified above the uniqueid is truly unique to that object from the moment of creation.

eval tempid %self.Uniqueid%
eval temptimer %%actor.%temp%%% ***** this now pulls the timer value, before in the IF it wouldnot
if %actor.varexists(%tempid%)%
if %self.timer% > %temptimer%
%echo% I will be updating my timer from %self.timer% to %temptimer%
otimer %temptimer%
elseif %self.timer% < %temptimer%
%echo% updating player global from %temptimer% to %self.timer%
eval %self.Uniqueid% %self.timer%
remote %self.Uniqueid%
%echo% player had no oven timer variable stored - creating
eval %self.Uniqueid% %self.timer%
global %self.Uniqueid%
remote %self.Uniqueid%

So far its working pretty good.
Thanks for the time and help Thomas!]]>
Building Sat, 24 Mar 2018 20:34:05 +0000
Creating a New Bulletin Board - by: Rumble HELP SPECIAL


Special procedures are used to allow certain complex functions to rooms,
mobs, and objects. They are written by coders and are normally not created
by builders. If you have something you wish to assign a special procedure to
talk it over with a coder. The most common special procedures include:
Postmasters, banks, guildmasters, pet shops, and boards. If your zone requires
any of the above mudmail your coder after your zone is complete.
Most of the things possible through special procedures can now be done
through trigedit.

To create a postmaster make a mob, set one of the keywords as "postmaster," set
the NPC flag SPEC, and load it to the room via zedit. Then have your coder add
to spec_assign.c:110: ASSIGNMOB(#, postmaster); NOTE: # = the mob/obj vnum.

To create a guildmaster make a mob, set one of the keywords as "guildmaster,"
set the NPC flag SPEC, and load it to the room via zedit. Then have your coder
add to spec_assign.c:69: ASSIGNMOB(#, guild); A player can practice at any
guildmaster, it is the guildguards that usually limit who can access what
guildmaster. TSTAT 133

To create a bank make an object, set it to type OTHER, add keyword "bank" and
load it to the room via zedit. Then have your coder add to spec_assign.c:
138: ASSIGNOBJ(#, bank);

To create a board make an object, set it to type OTHER, add keyword "board" and
load it to the room via zedit. Then have your coder reference boards.c for the
remaining instructions.

To create a petshop see: HELP PETSHOP.

In all cases special procedures need to be added in by a coder. Once your zone
is complete mudmail your coder for the additions you want including type and
mob or object vnum.

Building Tue, 20 Mar 2018 16:15:05 +0000
Trigger of The Day %recho% - by: Sascha Building Fri, 02 Mar 2018 13:28:35 +0000 NPC flags - request for new Questmaster flag - by: Fizban Building Thu, 08 Feb 2018 15:10:24 +0000 Block exits If char is below level 40 - by: JTP
Thanks alot]]>
Building Tue, 06 Feb 2018 21:33:11 +0000
Triggers as spec-functions - by: Parnassus
It's one of the interesting things about TBA though. You can find all sorts of things here!]]>
Building Sun, 04 Feb 2018 05:06:00 +0000
Hidden doors - by: Sascha Building Wed, 31 Jan 2018 23:35:06 +0000 Trigger(s) Of The Day - by: Fizban
You can find the original here , it is called BerserkerAxe in that file.

To recreate it in trigedit is must be written as two separate scripts, one of type command, the other of type random.

Building Sun, 21 Jan 2018 06:07:07 +0000
Argh! Why doesn't this trigger fire? - by: Sascha Building Sun, 07 Jan 2018 21:40:04 +0000 Feedback Request - Simple Morale Check Script - by: Banlock
If I can figure it out, I might make my first real contribution a way to push stuff to the log instead of having to %echo% things out. It might help the trigger editing/debugging process. I know dg* has a way to write to the log, but I'm not seeing (maybe missing?) a way to do that from a trigger. Or maybe someone has already done that?]]>
Building Sun, 19 Nov 2017 23:29:39 +0000
Need assistance with script - by: Fizban
I know this is quite a late response, but if you have any further questions or need further help with anything relating to trigedit I'd be more than happy to help.]]>
Building Tue, 07 Nov 2017 13:22:54 +0000
greet trigger in dark room - by: WhiskyTest You can switch into the mob to confirm this.

Other things that will prevent a greet trigger are:
The mob is not awake, mob is fighting, mob is charmed.

If that is all fine, then it comes down to the CAN_SEE macro, this is the only difference between greet and greet-all.
o char invis level is below the mob (mortals should be invis 0)
o mob is not blind
o there is a light in the room OR mob has infravision (stat the mob to confirm)
o character isn't invisible OR mob has detect invis,
o char is not hidden OR mob has sense life..]]>
Building Tue, 19 Sep 2017 23:28:45 +0000
teleport trigger help - by: JTP That worked.]]> Building Tue, 19 Sep 2017 07:01:44 +0000 Is char.race depreciated? And other questions related to the char variable. - by: Aalan

Thanks all!]]>
Building Thu, 20 Jul 2017 16:18:16 +0000
Assistance/or pointers with a few projects requested - by: thomas
I think the comma in that arg list is what messes it up. It seems the is_substring() function is particular about punctuation (ie. does not want it in the string to check).]]>
Building Sun, 21 May 2017 21:52:25 +0000
Combat Triggers Sample 3 and my mhunt trigger, feedback welcome - by: thomas ]]> Building Sat, 20 May 2017 23:48:16 +0000 Combat Triggers Sample 1, requesting some feedback - by: thomas

Kastil wrote:

The line

could probably be refined a bit:

This should filter out those not currently fighting the mob.]]>
Building Sat, 20 May 2017 23:45:26 +0000
Combat Triggers Sample 1, requesting some feedback - by: thomas
[ code]
code here.
Note that the space between "[" and "code" means you can see the tag but it doesn't really work.
[ /code]

Building Sat, 20 May 2017 23:38:58 +0000
Tab spaces and wrapping in dg_script output - by: Krell
Thanks WhiskyTest.]]>
Building Thu, 04 May 2017 03:40:23 +0000
Loading objects or mobs to another room - by: Parnassus Building Tue, 02 May 2017 21:45:46 +0000 Shops - Zedit having issues with inventory - by: Parnassus

Sascha wrote: [Command list]
0 - Load Zachary Linatt [710], Max : 1
1 - Give it a longsword [781], Max : 99
2 - Give it a plain shortsword [782], Max : 99
3 - Give it a longsword [783], Max : 99
4 - Give it a broadsword [784], Max : 99
5 - Give it a stout quarterstaff [785], Max : 99
6 - Give it a sharp dagger [786], Max : 99
7 - Give it a heavy club [787], Max : 99
8 - Give it a battle axe [788], Max : 99

Question: Did the Builder do something wrong, or is there a phantom bug that I need to address?

If you look at this logically, each command is its own entity. This changed when you made the load dependent on the first command. So let's look at it without that first command.
1 - Give it a longsword [781], Max : 99

Remember, you're looking at this as a COMPLETE entity, independent of any previous commands.

So, logically, what is IT? The trigger tries to give it a longsword but can find no "it" to give the longsword to. It could have been worse though. The trigger might have given it to anything that started with an IT, such as Italian.]]>
Building Sat, 29 Apr 2017 23:43:07 +0000
Question about using char.varexists - by: thomas

Tratillo wrote: Not quite what I am trying to do. I am trying to have one trigger check to see if a variable exists with the value of 1, if so then change it to the value of 2. Then have a different trigger that only fires if the variable has a value of 2, not if it just exists.

Exactly. If you remote the var X to the player, you can read the value with %actor.X%]]>
Building Fri, 28 Apr 2017 16:15:16 +0000
Trigger of the Day - Following Mob Assist - by: Sascha Building Fri, 21 Apr 2017 00:05:31 +0000 How Would You Create This Room? - by: Parnassus
I hadn't thought how it would look to have someone jump north if they just came through the north door. However, it would amuse me to force a north with echos about the player jumping through the door and looking silly or embarrassed.

For the fall, I was expecting a down exit leading to the same room. However, I think a teleport back into the same room with a series of echos to show that the person is falling would work. However, as I write this I realize that the teleport isn't necessary. Only the echos are necessary.

I think in triggers rather than code. This is probably because I don't code, I only build. However, if you were to code in the gravity flag, would it be possible to change the title of the person to something like < falls slowly through the air> and to save the original title for when the person leaves the gravity room? Hmm, I could probably do this through triggers too though. If you're planning to use this in various places, coding is probably more efficient.

I've just realized. The purpose of the second trigger was to fake a skill which doesn't actually exist in the code. If your mud has no jump skill, you'd need to rely on luck or to fake a jump skill. Then you would make a player variable such as jump_skill. If the player has no jump_skill then jump_skill = 50. If the player has <100 he player jumps, oops, missed (you might want to use the random numbers anyways, just count in the skill) jump_skill = jump_skill + 1. The player succeeds, jump_skill = jump_skill + 2. This way, the more often you go through the room, the better you get at it until you're basically merrily whistling as you hop over that gap that used to seem so wide. Of course, since it's attached to the players profile, it can be used in different triggers in different zones.

The part that you called the second trigger was actually the second half of the first trigger but you're right there. It needs it's own trigger or else it will be eating at the room and preventing anything else happening. I had this problem where I couldn't see how to trigger the fall from the jump but I'm sure there would be ways of doing it like having the fall trigger triggered by movement downwards and dealing with any failed jumps by forcing the player to walk down.]]>
Building Tue, 31 Jan 2017 14:19:48 +0000
trigger question -- alarm if fighting - by: Parnassus
A zone that I wrote for Smaug has a pacifist mob that tries to disarm anyone that picks a fight with him. If he manages to disarm, he grabs the weapon and teleports out for a second or so, just to break up the fight. He then heals back to 100% and teleports back before the player can see that he's gone (although the player's screen says something about the target being missing). The mob then gives the weapon back to the player and suggests he leave. This was in response to someone who asked why the Paladin class in Smaug had access to disarm which doesn't sound like honorable behavior for a Paladin.]]>
Building Sun, 18 Dec 2016 20:38:49 +0000
trigger question "something" - by: thomas Building Sun, 23 Oct 2016 10:54:40 +0000 [Request] Activate Room trigger with specific OBJ - by: Kay

thomas wrote: Try this:

Note that it's almost the same as the second try - we just look up on the character actually performing the action (the %actor% variable).
%char% in the examples just means "substitute char with the name of your variable, be it actor, victim or foo".

Thank you very much. I always assumed that %char% was for the PC(player character)

Trigger is working perfectly now]]>
Building Thu, 29 Sep 2016 23:47:48 +0000
Creating a Listen trigger - by: Rumble or if you don't have the stock help files I can cut and paste it.]]> Building Tue, 30 Aug 2016 23:13:18 +0000 Trigger of the Day - Room Variables - by: Rumble Building Sun, 07 Aug 2016 23:25:35 +0000 Trigger help needed - firing only if the mob has item in inventory? - by: Sascha
I've been able to put together a lot of triggers overall, but this one had me stumped pretty hard!]]>
Building Wed, 03 Aug 2016 15:01:34 +0000
Trigger help needed - Randomly load objects into a room? - by: Sascha
What I ended up doing with the long, unelegant version that I posted was that I expanded it to give specific echo messages when each type of flower blooms, so that PCs in the room know it's happening/which flower is blooming and also to add ambiance. It made for one long, bulky trigger but I'm kind of liking the effect.

Side note: Man, I love how this works. So much better than what I've been using for almost two decades. :) It's like a great puzzle to figure out, and the first time I got a trigger to work I was doing the happy dance in my desk chair! What a high!]]>
Building Tue, 05 Jul 2016 13:44:56 +0000
creating and editing skills and spells - by: Parnassus Building Fri, 01 Jul 2016 04:32:28 +0000 TodD - Using "ask" to build a trigger - by: nhytfahl
I've tried using a speech type trigger, but can't get it to respond to "ask", only to "say".

I've tried using a command type trigger, but can't get it to respond to "ask". %cmd.mudcommand% == ask never seems to evaluate true, nor does %cmd% == ask

I've tried using an action type trigger, but can't get it to respond to putting "asks you" in the argument, using either a 0 or a 1 numerical.

How do I get a mob to respond to the "ask" command?

e.g. I type in "ask MisterMobile goodies", which sends "NhytFahl asks you, 'goodies'" to the mob, and the mob responds by executing the command "whisper The goodies are hidden under the rock."]]>
Building Thu, 30 Jun 2016 15:29:32 +0000
redit and affection bits * - by: JTP Building Mon, 04 Apr 2016 20:10:59 +0000 Location based trigger - by: evorg Building Fri, 26 Feb 2016 15:36:28 +0000 Creating large grid zones - by: Parnassus
This gives me an output something like this:
goto areanumber04
Shiloh Road
The road stretches on to the east and the west, leaving rotting
buildings to testify that all things die in time, even towns.
More evidence of the passage of time lies to the north, in the
form of a cemetery.
dig east areanumber05

Then I take my file and globally replace areanumber for the real area number.

I then take sections of the file (from one to five room sections, depending on complexity), feed it into my client and just send it off. If anyone out there has listened to me work on TBA, it sometimes sounds like fairly regular messages saying that I've done something or other since I can copy and paste while the client is working.

Sometimes the exits are difficult to do this way so I leave them out and do them later. Using the previously made maps, it's not so hard to work out what exits I need. If I'm doing a simple zone with 4 exits, I might do the exits using a client alias such as

goto areanumber%1
dig north areanumber%2
dig east areanumber%3
dig south areanumber%4
dig west areanumber%5

with areanumber being the actual number and exits/ being the alias name. Then I input
exits/ 87 77 88 97 86
and again, off it goes.

This is probably way too weird to work with most people. Also, there may be some errors in this because I build for a few different mud types so I usually have to set a few off just to make sure it's in the right format before I add them all in.

Now here's a really long and boring example of a basic dull city street with nothing of interest on it:

But sure, buildwalk east from 01 to 20, south to 21, west to 40 and so on, then go back later and dig the others. If you're looking for an easier way, mine probably isn't it :)]]>
Building Fri, 26 Feb 2016 00:23:35 +0000
Override IG commands and don't override IG commmands - by: Parnassus

One of the best reasons I've seen for this is a trigger (not on TBA) where the trigger was /= king. Whenever anyone in the room said "king" the trigger hit. This included making, thinking, walking. And, yes, those words all contain "king" but it turns the trigger into a bit of a nuisance.

I'll also toss in this great example of what I call the "Fizban Fix" in action: ]]>
Building Sat, 15 Aug 2015 22:14:33 +0000
Bug 95: Trigger 1136 room 1114 - Resolved? - by: Rumble Building Fri, 31 Jul 2015 21:22:48 +0000 room.people and Curly Braces - by: thomas Building Mon, 27 Jul 2015 19:17:00 +0000 Trigger Timing - by: thomas
Actually all forms of "wait x y" where y != t and y != s means "wait x cycles" due to the way it is implemented.
But, let's stick with "wait x c" so we don't break it in the future ;)]]>
Building Sat, 25 Jul 2015 09:05:45 +0000
Copy Trigger - by: Parnassus Building Sun, 12 Jul 2015 17:12:42 +0000 How Random is random.#? - by: Krell
Building Tue, 07 Jul 2015 05:00:31 +0000
Teleport Certain Players in Room (Object) [Request] - by: Kay File Attachment:

The solution works and the object is working as I envisioned it. I am extremely grateful for all the help that I've recieved guys.]]>
Building Sun, 05 Jul 2015 15:58:33 +0000
random.n - by: Krell

I was just going over your findings. I think you get the same results whether you use set or eval and L_TIME still has to be a function of S_TIME. Maybe I did try eval after all and found no discernable advantage?

Anyhow, my trigger works as is, it would work well with how you're suggesting and I highly appreciate you looking into it. Thank you.]]>
Building Sat, 04 Jul 2015 18:16:24 +0000
Constant segfaults with db.c - by: Kyle
It crashes when it tries to calculate 'mid'.]]>
Building Wed, 01 Jul 2015 04:04:34 +0000
Materials Usable to Create a sword - by: zusuk
Yeah they are basically all the major materials you'll find in a normal pathfinder campaign, here is an extended list:

Asbestos Cloth
Black Seaweed
Brill (Psionic)
Coral, Chitin, and Seashells
Eel Hide
Iron, Primal
Mithral, Celestial
Shark Skin
Silk, Aranea
Stainless Steel
Steel, Chthonic
Vulcanized Rubber
Whale Sinew

Also here is the page I'm getting all this stuff off of: ]]>
Building Tue, 26 May 2015 06:40:08 +0000
Offline Olc? - by: Parnassus Building Mon, 04 May 2015 22:13:11 +0000 Tarot zone - by: Parnassus Building Fri, 03 Apr 2015 00:49:44 +0000 Using Variables in skillset? - by: Papaya Pete
Having to have the % around a variables and such threw me off a bit. Thanks a million!]]>
Building Tue, 10 Mar 2015 23:49:00 +0000
Anyone ever do a port of Rom's default areas? - by: Cblake Building Thu, 25 Dec 2014 04:57:03 +0000 Trigger of the Day - Parna's Elevator - by: Parnassus
At the time, I realized that multiple triggers would work better and would give a better feel but the experiment was to see what could be done with one trigger slot.

As I found then, it was possible and I still think the elevator works nicely within its limitations. The main limitation, as far as I can remember, is that you can look at the display and see where the elevator is but if you've pushed the button, the display disappears. This is because the trigger is already in use.

I was telling a friend about this and he asked why I didn't just add the trigger twice to each room. Of course I answered something like, (condescendingly) "Well, because you can't attach a trigger twice to the CAN'T you attach a trigger twice to the same room?"

After thinking about this for a while, I headed back to the zone and plugged the trigger in twice in each of the rooms and the elevator itself and guess what? It seems to work. I can now go into the elevator on the ground floor, push the 4th floor and look at the display while the elevator is on the move. Since I'd already written the message to be (if you'd looked at the display while someone else had accessed the elevator from a different room):
Numbers flash across the display. The elevator is on the move.
there are no changes to make. And it looks much better than the previous message of:
You do not see that here.

If you've put the trigger into any zones or if you're using the private apartment/condo/dorm housing zone (653) you might want to try this. If any errors pop up, I'd appreciate the info, please.]]>
Building Wed, 26 Nov 2014 01:21:57 +0000
%teleport% with entering messages - by: Rumble ]]> Building Sun, 23 Nov 2014 04:47:15 +0000 Trigger of the Day - Poofs - by: Parnassus
So, to play with this one, I've changed it so that instead of having totally random poofins and poofouts, I've linked them so your comings and goings are similar. This meant taking out or replacing some that didn't match. Some match better than others. The other change was to make it into a room trigger so that popping into the room would automatically change your poofs without the use of a mob. The trigger should only be used in a room where people would not enter in normal circumstance. One variation (11) does not work properly but I left it in as a warning. It's possible that the line is too long.

This is an example of variation 11 in action:
POOFIN: Parna parachutes into the room performing a perfect parachute landing fall, except for the facthe landed backside first. first.
POOFOUT: Parna puts on a helmet and climbs into the barrel of an ACME cannon. It explodes sending piecena off into the distancedistance.]]>
Building Tue, 22 Jul 2014 23:20:14 +0000
How would I add rats to the petshop? - by: Parnassus 24) [31523] The Pet Shop
25) [31524] PETSHOP STOREROOM]]>
Building Sat, 28 Jun 2014 01:31:46 +0000
Socials in Triggers - by: Parnassus
If I had searched for "smile %actor" instead of "smile %actor%" I'd have caught it.]]>
Building Sun, 22 Jun 2014 21:54:15 +0000
Fizban's Treasure Chest Trigger - by: Parnassus
This is the best example I've seen of Fizban's .contains format, mentioned in

It is also a great use of remotes.

As far as I can see (and as to be expected in one of Fizban's triggers) the ifs seem to hold no loopholes. If the player has previous opened the chest, don't let allow the chest to be opened. If not, let the chest be opened. Does the chest have treasure inside? If yes, attach a note to the player's file so that this player can't open the chest in the future. Don't attach the note if the treasure has already been taken by someone else.

Thanks to Liko, for posting it (wow, almost two years ago!) and to Fizban for writing it.]]>
Building Sun, 15 Jun 2014 01:47:00 +0000
Adventures in Triggering - by: Parnassus
So... okay, make sure that the time is set up right. The best way to do this is to compare it to a proven trigger. In this case, my trigger of choice is Rumble's butcher sign. I look it up by using vnum t butcher and yup, there it is. Comparison shows that I seem to be set up right.

So... next, check to see if maybe the variables or somesuch are right. The usual way to do this is to %echo% the main variables. This usually takes the form of:
%echo% Variable = %variable% Arg = %arg%
Then, if you see an echo that looks like:
Variable = Arg =
you know there's something wrong with your variables.

Change the time to the next hour and wait it out. Hmm, still nothing. No echo at all. Okay, maybe there's an ifcheck that the trigger isn't passing. Check all the ifchecks, put echos in before and after each ifcheck to find out where it's failing. Change the time and try again. Still nothing! An hour of testing and I still can't find out what's wrong! Do a look, only to see that, um, well, there's no trigger info in the room...

Stat the room. Nope, no triggers attached at all. Change the time again, attach the trigger to the room and wait out the time again. Wow, watch the echos fly! And, yeah, by this time there are a LOT of echos there. And what do you know? The trigger was fine all along.

Building Tue, 10 Jun 2014 22:09:11 +0000
/= - by: Parnassus

However, there's probably not a really good reason to do this. On the upside, while I was ripping my trigger apart to see if this would make it work better, I found some of the weaknesses that were making my trigger not work the way I wanted it. So I guess the thing is, if your trigger isn't working, try changing the format to see if anything pops out. :)

In fact, it worked so well that I think Valen Park is almost ready to be asking for testers!]]>
Building Wed, 04 Jun 2014 02:33:00 +0000
Trigger of the Day - Receive Quest - by: Parnassus %echoaround% %actor% is rewarded for his valor.

I've never noticed this because I don't see it when I do the quest. However, apparently, I've been (temporarily) turned male by this trigger. There's a very nice fix to this.

%echoaround% %actor% is rewarded for %hisher% valor.

Now I can stay my usual feminine self! (Yeah, I also hate being called sir in real life.)

Also, while we're at it, how about we fix the grammar in trigger 2:
say you got the best of me But I'll be back.
say You got the best of me, But I'll be back.]]>
Building Sun, 01 Jun 2014 22:52:08 +0000
Trigger Loop Limit - by: Parnassus

For those who don't understand the code, I'll spoiler in a few comments from the readers:

Building Mon, 19 May 2014 12:47:45 +0000
Trigger of the Day - Damage Example - by: Parnassus
%damage% %actor% -10 (to restore health)

Also: note the actor variable to determine hitpoints and the use of variables and eval to work out how many hitpoints need to be taken away to achieve the objective of 1hp. Pay attention to the wait comment.

However: Three things dealing with this echo that I would change if this were my trigger rather than an example:
%echo% The Gods feel sorry for and restore him to full health.

Building Mon, 12 May 2014 01:09:12 +0000
Trigger of the Day - TBA Immortal Greeting - by: Parnassus
Remote: note how it looks for varexists. If variable exists, welcome the person back. If it does not, welcome the person and remote it to the person's file.

Ifcheck for item (also the use of ! for the negative) along with loading it into inventory.]]>
Building Fri, 18 Apr 2014 03:37:38 +0000
Trigger of the Day - Spying - by: Rumble Building Sat, 12 Apr 2014 00:30:06 +0000 Checking every time for gender in trigger - by: Fizban

is certainly not doing whatever you are intending it to do, it will only be false if their level is 0, and less than 30. 0 is always less than 30, the second check is redundant. I also doubt you intended it to only trigger for people that were level 0, I am guessing you intended that to be > 0.

Below is a script that will do what I "think" you were trying to achieve.

Building Mon, 07 Apr 2014 04:44:44 +0000
Trigger of the Day - Basic Switch - by: Parnassus
I think that Fizban's example makes this an even better lesson because it shows that things can be done in different ways and that there isn't necessarily a better or worse between them.]]>
Building Sun, 06 Apr 2014 23:11:00 +0000
Parna's Watch List - by: Parnassus
However, I have to admit, I especially like to examine the parts of the triggers to figure out if I can use them in my frankentriggering techniques. So, I've decided to work on a little addendum that I'm going to call Parna's watch list. These are sections that any beginner (or even mid-level) frankentriggerer should watch out for because you'll probably use them somewhere along the line.

I'm not trying to detract from the original trigger but to show my appreciation for the various parts that make up the whole.]]>
Building Tue, 01 Apr 2014 22:34:30 +0000
Trigger of the Day - Double Barrelled Shotgun - by: Parnassus Define the actor.
Count the shots.
Global the shots.
Detach the trigger.
Define the victim.
Send messages.
Apply damage (This, and other affects, can also be applied with nop).]]>
Building Tue, 01 Apr 2014 22:13:02 +0000
Trigger Help - OBJ checking to see if actor has a specific follower. - by: Treyorn
edit. Have some Karma and a Thank you :)]]>
Building Sun, 30 Mar 2014 14:09:23 +0000
More Trigger Help - by: Rumble

Sorry we missed this earlier.]]>
Building Sat, 29 Mar 2014 19:23:35 +0000
Trigger of the Day - Set and Eval Usage - by: Rumble This trig outputs:

You say, 'test'
Set Variable: 34 + 1
Eval Variable: 35
Level: 34

Or as Mordecai said:
When you want to preserve the layout of a string, you can use set.
When you want to evaluate a string into a result, you can use eval.
If this was helpful please vote or leave a review for TBA.]]>
Building Wed, 26 Mar 2014 12:48:53 +0000
Trigger of the Day - TBA Start - by: Rumble vote or leave a review for TBA.]]> Building Fri, 21 Mar 2014 12:35:54 +0000 Trigger of the Day - Mob Transform - by: Rumble Building Thu, 20 Mar 2014 00:20:56 +0000