View Full Version : changing leaders macro
MGFLA2
01-29-2009, 09:35 PM
Ok so here is my problem...
I run 5 instances of wow and use a main and 4 slaves. Currently when my main dies i have nothing set up to have 1 of the slaves take his place....
Sooo here is what i use to accomplish what i do currently. I use HKN.
This is the macro in WoW...
I have this bound to the 1 key for all instances.
/target focus
/follow
/assist
/stopcasting
What could i set this to so that no matter what window becomes active it switches the slaves to follow and focus/target the new active window?
Sajuuk
01-29-2009, 09:58 PM
Five macros.
/target <Character>
/focus
Set each macro to be the PiP-swap key corresponding to the character your switching to.
Hope this helps a little bit.
Or you could probably find it in the wiki.
MGFLA2
01-29-2009, 10:30 PM
Yea i kinda figured i would have to set more than one...
I was actually trying to see if it was possible to set the same macro across all instances to the 1 key and make it so when i switched to a particular active window pressing the 1 again would make it so that character was now the main.
I appreciate the help and am setting up the 5 macros as we speak...
Sajuuk
01-29-2009, 10:59 PM
You could always switch to a Focusless/targetless/leaderless setup.
But that's a lot more work than a couple focus macros.
whats HKN? ok got it hotkeynet
Vmpwraith
01-30-2009, 12:32 AM
If you only want to change leader if the main dies you could bind something like this to the pip of your alternative tank on your followers. This uses assist rather than focus to leave that for CC if you need it in a fight.
Tank2
/assist [target=CharTank2, nodead, help, exists]; [target=CharTank2, exists]
/petattack
/script SetView(2);
Tank3 etc.....
/assist [target=Chartank3, nodead, help, exists]; [target=CharTank3, exists]
/petattack
/script SetView(2);
Main Assist macro on all but your main lead character
/assist [target=ChatTank1, nodead, help, exists]; [target=CharTank2, nodead, help, exists]; [target=CharTank3, nodead, help, exists]; [target=CharTank4, nodead, help, exists]; [target=Chartank1, exists]
/petattack
/script SetView(2);
This swaps assist / main window and will send your pets to attack if you have any ( you can leave that out if don't have any etc).
If you just want them to follow the new main just bind pip to
/follow CharTankNameHere
MGFLA2
01-30-2009, 01:05 AM
If you only want to change leader if the main dies you could bind something like this to the pip of your alternative tank on your followers. This uses assist rather than focus to leave that for CC if you need it in a fight.
Tank2
/assist [target=CharTank2, nodead, help, exists]; [target=CharTank2, exists]
/petattack
/script SetView(2);
Tank3 etc.....
/assist [target=Chartank3, nodead, help, exists]; [target=CharTank3, exists]
/petattack
/script SetView(2);
Main Assist macro on all but your main lead character
/assist [target=ChatTank1, nodead, help, exists]; [target=CharTank2, nodead, help, exists]; [target=CharTank3, nodead, help, exists]; [target=CharTank4, nodead, help, exists]; [target=Chartank1, exists]
/petattack
/script SetView(2);
This swaps assist / main window and will send your pets to attack if you have any ( you can leave that out if don't have any etc).
If you just want them to follow the new main just bind pip to
/follow CharTankNameHere
Ohh this will work just fine !
Thank you kindly :)
olipcs
01-30-2009, 06:06 AM
If you still are looking fpr a system and you like to 'play-arriund' a little bit my personal favourite would be the ftl (focusless, targetless, leaderless) and as you are using HKN, the setup part for the keybindings is realy easy.
For Information about using HKN to setup an ftl see: [HotKeyNet] Implementing an FTL quite simple with templates ('http://www.dual-boxing.com/forums/index.php?page=Thread&threadID=18139')
For ftl in general you might wnt to have a look in the wiki: http://www.dual-boxing.com/wiki/index.php/Focusless_Targetless_Leaderless_Setup
If you would need any help therefor simple let me know.
MGFLA2
02-01-2009, 07:40 PM
If you still are looking fpr a system and you like to 'play-arriund' a little bit my personal favourite would be the ftl (focusless, targetless, leaderless) and as you are using HKN, the setup part for the keybindings is realy easy.
For Information about using HKN to setup an ftl see: [HotKeyNet] Implementing an FTL quite simple with templates ('http://www.dual-boxing.com/forums/index.php?page=Thread&threadID=18139')
For ftl in general you might wnt to have a look in the wiki: http://www.dual-boxing.com/wiki/index.php/Focusless_Targetless_Leaderless_Setup
If you would need any help therefor simple let me know.
I sent you a PM on this Olipcs..
And thank you for this...i do believe this would be the best for what i'm doing...gonna give it a whirl :)
olipcs
02-02-2009, 10:39 AM
...gonna answer this in detail, when I find some time for it (time is currently a little bit limited), hope it is ok, if i post your PM, to answer the question in detail here, becasue I like to do this in the public part of the forum rather than in PMs because someone other might also find it handy, and an concret example is always good to refer to...
..so stay tuned, I hope i find some time tonight...
olipcs
02-02-2009, 02:58 PM
Ok, here I will try to talk you through setting up an ftl using HKN in different steps:
1. FTL Modifierorder for the Toons
I don't know the names of your toons, so I will use ToonA ..ToonE instead. In the following macros you will have to change them to the matching names.
First thing with the FTL is to specify which modifier-combination stands for which char on which WoW-Window.
Because I think you have no prefferences therfore, I will use the one I myself are using.
Which is:
ToonA = rctrl+rshift = Toon on WoW1
ToonB = rctrl + ralt = Toon on WoW2
ToonC = ralt + rshift = Toon on WoW3
ToonD = rctrl + ralt + rshift = Toon on WoW4
ToonE = rctrl = Toon on WoW5
this order will be used in all macros and in all keybindings :)
2. Describing what you want to do
Well I want to show you the basic principals of the ftl, and therfore I will implement the following:
- Create an FTL-follow (this will I bind to the key '1')
- Create an FTL-assist key, which is used to shorten the ftl-dps-macros (this I will bind to 0)
- Create an FTL-dps-key (this will be bind to '2')
3. Setup keybindings in the HKN file
To implement an ftl with HKN you could simply copy the following in your HKN file:
//%1% : Master Key
// %2% : Slave Key
// %3% : Modifier
// %4% : SlavesToSend
<Template SendMasterAndSlave>
<SendFocusWin>
<Key %1%>
<Sendlabel %4%>
<Key %3% %2%>
<EndTemplate>
// %1% : master key
// %2% : slave key
// %3% : modifier
// %4% : Active window
// %5% : Slave Windows
<Template SendLeaderless>
<If ActiveWinIs %4%>
<ApplyTemplate SendMasterAndSlave "%1%" "%2%" "%3%" "%5%">
<EndTemplate>
// %1% : master-key
// %2% : slave-key
<Template FTL>
<Hotkey %1%>
<ApplyTemplate SendLeaderless "%1%" "%2%" "rctrl rshift" WoW1 "w2,w3,w4,w5">
<ApplyTemplate SendLeaderless "%1%" "%2%" "rctrl ralt" WoW2 "w1,w3,w4,w5">
<ApplyTemplate SendLeaderless "%1%" "%2%" "ralt rshift" WoW3 "w1,w2,w4,w5">
<ApplyTemplate SendLeaderless "%1%" "%2%" "rctrl ralt rshift" WoW4 "w1,w2,w3,w5">
<ApplyTemplate SendLeaderless "%1%" "%2%" "rctrl" WoW5 "w1,w2,w3,w4">
<EndTemplate>
this code represents the modifier order defined in 1. (in the <Template FTL>;) and matches your definition of labels and windownames of your HKN-script which you PMed me.)
Now to simply add an FTL-Keymapping for '1' (the followkey), '2' (the dps-key) and '0' (the assist key) you could add simply the following three lines to your HKN script:
<ApplyTemplate FTL "1" "1">
<ApplyTemplate FTL "2" "2">
<ApplyTemplate FTL "0" "0">
(I use here 0,1 and 2 as the master- and slavekey for both ftl-keys, for simpler setup)
..remeber that you now have to make sure, that 0,1 and 2 are not in your standard Broadcast-definition, because then you would try to define them 2 times.
So change your standard broadcast definition to:
<Hotkey ScrollLockOn Shift 3-9, space; ScrollLockOn Ctrl 3-9; ScrollLockOn A-Z, 3-9, Minus, Plus, F1-F12 except W, A, S, D, Q, E>
<SendLabel w1, w2, w3, w4, w5>
<Key %Trigger%>
..this is all you have to do in the hkn-file.
If you want to add aditional ftl-keys, like for example '3' simply add a line like:
<ApplyTemplate FTL "3" "3">
and remove 3 from your standard broadcast definition, so that it is not twice defined.
4. Keybinding Setup in WoW
You now have to bind the keys you want to use in your ftl-setup to a button in WoW.
Scince we use 1,2 and 0 they normaly are bound to the first ActionBar of WoW to the first, second and tenth button, and we will leave it at this.
More important as to which button you bind the keys is the following:
-Make sure that every modifier combination of your ftl-keys (like ctrl+1, alt+0, shift+2 ...) is NOT bound to an action in WoW.
This is normaly the case (for example ctrl+1 is normaly bound to 'petattack'), so go to the keybinding-menu of WoW and remove all of those keybindings on all of your 5 WoWs.
This is realy important and in most cases the reason why it doesn't work. The reason why all modifier-combinations must be 'unbound' is, that WoW if it hasn't an specific action bound to something like f.e. 'Ctrl + 1' falls through to the action bound to '1' and activates the spell/macro there and this behaviour do we need for out ftl.
5. Macro-Setup in WoW
To get our FTL-working we need to define some Macros:
5.1 Follow Macro
To get your chars follow each other simply create this macro on all your chars (and sub in the names of your chars) and 'drag' it to the Button '1' is bound to (first button of the normal ActionBar).
/stopmacro [nomod]
/target [mod:rctrl,mod:rshift,nomod:ralt,target=ToonA][mod:ralt,nomod:rshift,mod:rctrl,target=ToonB][mod:ralt,mod:rshift,nomod:rctrl,target=ToonC][mod:rctrl,mod:ralt,mod:rshift,target=ToonD][mod:rctrl,nomod:ralt,nomod:rshift,target=ToonE]
/f
/targetlasttarget
5.2 Assist Macro
Create the following macro and drag it to the Button '0' is bound.
/assist [mod:rctrl,mod:rshift,nomod:ralt]ToonA;[mod:rctrl,mod:ralt,nomod:rshift]ToonB;[mod:ralt,mod:rshift,nomod:rctrl]ToonC;[mod:rctrl,mod:ralt,mod:rshift]ToonD;[mod:rctrl,nomod:ralt,nomod:rshift]ToonE
Now by pressing '0' you get all the Toons to assist your leader.
Of course we don't want to do this manualy for all our leaderbased spell, but want to call the assist MAcro via a /click-Command in all our leaderbased-macros.
For this we must know, what the name of the Button is, we bound '0' to.
For the general WoW-Ui this should be ActionButton10 but if this doesen't work, you need to find the name.
This can be done by binding:
/run local f = GetMouseFocus(); if f then DEFAULT_CHAT_FRAME:AddMessage(f:GetName()) end
as a macro to a key, and activating it, while the mouse is over the button you want to know the name of.
5.3 DPS-Macro
For a simple DPS-Macro simply create a normal dps macro and add a:
/click ActionButton10
at the beginning (ActionButton10 should be the Button you bound the assistmacro to)
and a
/targetlasttarget
at the end (to get it 'targetfree' if you need), and drag it to where '2' is bound.
So for example for a Mage this could look like this:
/click ActionButton10
/cast Fireball
/targetlasttarget
Well know your basic ftl macros should be working, and you can play arround/ get comfortable with them.
I hope the above is not as hard to understand, I tryed to reduce it to the necessary steps as much as i could.
IF you can get the above running, and have more advanced questions about, for exmaple, /castsequences or using modifiers in the macros, feel free to ask, but I thought I keep it 'simple' in the beginning and not to 'throw all in your face' at the first time....
Edit: corrected some errors
MGFLA2
02-02-2009, 07:58 PM
Olipcs
Thank you very very much...this is exactly what i needed to to understand this....
Quick check on something i see so i don't make any mistakes....this line:
<Hotkey ScrollLockOn Shift 2-9, space; ScrollLockOn Ctrl 2-9; ScrollLockOn A-Z, 2-9, Minus, Plus, F1-F12 except W, A, S, D, Q, E>
<SendLabel w1, w2, w3, w4, w5>
<Key %Trigger%>
Should the 2-9 actually be 3-9 ? Since were using the 2 right? Not sure on the Shift and Ctrl if that needs to be 3-9 too...just getting it straight before i input it and try it out...
And again thank you..i will definitely have more questions...
MGFLA2
02-02-2009, 08:44 PM
Ok seems we have a problem....
The macro for following is over the 255 character limit...with my characters names its over by 43..what to do now? The names alone take up 45 characters so using shorter names won't work :)
The assist macro works cause its only 226 characters...
Ok so i've tried out the assist button and it worls flawlessly when i'm on the main window BUT if the main dies and i switch to another window nothing happens when i hit the 0 key...
EDIT :
Well it works PERFECTLY! In every sense of the word...i figured out the 255 character limit thing and also why the assist wasn't working...
Seems i added my toons names in a random order instead of doing it the right way and putting the names in the order the instances are brought up ie...toon1- wow1,toon2 - wow2 etc...
MGFLA2
02-02-2009, 10:31 PM
Little thing here no biggie....
It seems though when i target something and i use the dps macro the target keeps getting selected then deselected then selected again over and over when i spam it like with Lightning Bolt...is there a way to keep the target selected untill dead?
BTW this is the best thing since sliced bread... again thank you VERY much for explaining it so beautifully and in the simplest form for me to understand it..
elsegundo
02-02-2009, 10:47 PM
for your 255 character limit, use Bindpad for your macros. its an addon.
MGFLA2
02-02-2009, 11:11 PM
for your 255 character limit, use Bindpad for your macros. its an addon.
Yup way ahead of you on that one..did a search and found what i needed...
Thank you :)
Vmpwraith
02-02-2009, 11:57 PM
Do you have any experience setting this up with keyclone? I would love to give it a try.
olipcs
02-03-2009, 04:31 AM
Hi, sorry I wasn'T arround so this answers may come a little bit late...
First of all, I'm glad you got it working and liked it :)
Should the 2-9 actually be 3-9 ? - jep, sorry this was a typo on my site :(
The macro for following is over the 255 character limit... jeah it gets quite long, I personal use macaroon for this, but bindpad as you figured out also works :)
Seems i added my toons names in a random order instead of doing it the right way and putting the names in the order the instances are brought up - Sorry I should have mentioned, that the order in the macros should be the same as the Windows.
..is there a way to keep the target selected untill dead? - Yes there is, but only with loosing the 'targetless' option.
The simplest solution is to simply not put the '/targetlasttarget' as the last statement in your dps-makro
-Another thing you can do is additional to the above is to implement a 'target-and-hold' functionality, where the 'Slaves' only acquire a new target from the leader if their current one is dead, or you trigger the assist manual (this is handy in PVE-Setups, because with a tank you don't always want your DPS-Toons to make every tagerchange your tank makes.)
The 'target-and-hold'-system can be achived by creating a second 'Assist-Button' (I will use 9 as an Example).
(So add a <ApplyTemplate FTL "9" "9"> to the HKN file and change 3-9 to 3-8 in the broadcast-definition)
And bind the following macro to the new Assist-Button (9):
/stopmacro [harm,nodead]
/assist [mod:rctrl,mod:rshift,nomod:ralt]ToonA;[mod:rctrl,mod:ralt,nomod:rshift]ToonB;[mod:ralt,mod:rshift,nomod:rctrl]ToonC;[mod:rctrl,mod:ralt,mod:rshift]ToonD;[mod:rctrl,nomod:ralt,nomod:rshift]ToonE
and then use a /click-Command to this new Assist-Button to your dps-macros (/click ActionButton9) instead of the old assist.
olipcs
02-03-2009, 04:39 AM
Do you have any experience setting this up with keyclone? I would love to give it a try. Well basicly you do the hole WoW-based setup like above.
Only thing to change is, that keyclone can't differentiate correctly between left and right ctrl/alt/shift, so you have to use simple 'Ctrl' 'alt' and 'Shift' like:
/assist [mod:ctrl,mod:shift,nomod:alt]ToonA;[mod:ctrl,mod:alt,nomod:shift]ToonB;[mod:alt,mod:shift,nomod:ctrl]ToonC;[mod:ctrl,mod:alt,mod:shift]ToonD;[mod:ctrl,nomod:alt,nomod:shift]ToonE
The harder part to do in keyclone is setting up the keybindings/hotstrings to use.
For this I like to point you to the Wiki-Entry of the FTL ('http://www.dual-boxing.com/wiki/index.php/Focusless_Targetless_Leaderless_Setup') and especialy to the Examples in the Wiki-Entry ('http://www.dual-boxing.com/wiki/index.php/Focusless_Targetless_Leaderless_Setup#Examples_.2F _Other_sources') , as this would take a little bit long to explain and was explained quite often in the hole FTL-Thread ('http://www.dual-boxing.com/forums/index.php?page=Thread&threadID=11459') .
MGFLA2
02-03-2009, 09:10 AM
..is there a way to keep the target selected untill dead? - Yes there is, but only with loosing the 'targetless' option.
The simplest solution is to simply not put the '/targetlasttarget' as the last statement in your dps-makro
-Another thing you can do is additional to the above is to implement a 'target-and-hold' functionality, where the 'Slaves' only acquire a new target from the leader if their current one is dead, or you trigger the assist manual (this is handy in PVE-Setups, because with a tank you don't always want your DPS-Toons to make every tagerchange your tank makes.)
The 'target-and-hold'-system can be achived by creating a second 'Assist-Button' (I will use 9 as an Example).
(So add a <ApplyTemplate FTL "9" "9"> to the HKN file and change 3-9 to 3-8 in the broadcast-definition)
And bind the following macro to the new Assist-Button (9):
/stopmacro [harm,nodead]
/assist [mod:rctrl,mod:rshift,nomod:ralt]ToonA;[mod:rctrl,mod:ralt,nomod:rshift]ToonB;[mod:ralt,mod:rshift,nomod:rctrl]ToonC;[mod:rctrl,mod:ralt,mod:rshift]ToonD;[mod:rctrl,nomod:ralt,nomod:rshift]ToonE
and then use a /click-Command to this new Assist-Button to your dps-macros (/click ActionButton9) instead of the old assist.
Actually on the slave screens there not targetting and detargetting over and over just the active screen does it...so for now i just removed the /targetlasttarget for the main guy and left the others alone..if i switch because of a death its not so irritating on the tiny screen :)
And i believe i'm ready for some more advanced macros now ... what would you suggest ... i'm using 5 shamans currently...
I am not using the /castsequence since i believe the debate has been made for /castrandom instead for faster server response times.....
What i'm trying to figure out now is how do i set up a healing wave macro that has the followers heal the active window but not the have the active window heal himself. But if the active window selects another toon then he would heal them and the slaves would follow. This one may be too complicated come to think of it and may require more than 1 macro.
olipcs
02-03-2009, 11:19 AM
What i'm trying to figure out now is how do i set up a healing wave macro that has the followers heal the active window but not the have the active window heal himself. But if the active window selects another toon then he would heal them and the slaves would follow. Well good question, honestly I don't know exactly if this is possible, but I will try to get it working:
1. to do this the first thing we have to do this: first target the main/leader with all chars but the leader.
-For this we can easily use the /target-line from the follow-macro
(/target [mod:rctrl,mod:rshift,nomod:ralt,target=ToonA][mod:ralt,nomod:rshift,mod:rctrl,target=ToonB][mod:ralt,mod:rshift,nomod:rctrl,target=ToonC][mod:rctrl,mod:ralt,mod:rshift,target=ToonD][mod:rctrl,nomod:ralt,nomod:rshift,target=ToonE])
2. If we are the leader try to cast a heal to our target
- This could be done by checking if no ralt/rshift/rctrl is send and casting a heal on out target
so:
/cast [nomod:ralt,nomod:rctrl,nomod:rshift,help,nodead] Lesser Healing Wave
could work
3. We want that the leader doesn't do something
-This could be done by:
/stopmacro [nomod:ralt,nomod:rctrl,nomod:rshift]
4. We are not the leader and want to cast a heal to the target of the leader (if he has one), or the leader itself (which is our taget becasue of 1):
-This could be done with:
/cast [target=targettarget,help,nodead][help,nodead] Lesser Healing Wave
5. We want to switch back to our former Target (optional)
- add a /targetlasttarget at the end.
so combined the macro would look like this:
/target [mod:rctrl,mod:rshift,nomod:ralt,target=ToonA][mod:ralt,nomod:rshift,mod:rctrl,target=ToonB][mod:ralt,mod:rshift,nomod:rctrl,target=ToonC][mod:rctrl,mod:ralt,mod:rshift,target=ToonD][mod:rctrl,nomod:ralt,nomod:rshift,target=ToonE]
/cast [nomod:ralt,nomod:rctrl,nomod:rshift,help,nodead] Lesser Healing Wave
/stopmacro [nomod:ralt,nomod:rctrl,nomod:rshift]
/cast [target=targettarget,help,nodead][help,nodead] Lesser Healing Wave
/targetlasttarget
WoW, what a big boy ;) ...remember: all from scratch, so no idea if it actualy works, but maybe you simply try it...
MGFLA2
02-03-2009, 03:03 PM
What i'm trying to figure out now is how do i set up a healing wave macro that has the followers heal the active window but not the have the active window heal himself. But if the active window selects another toon then he would heal them and the slaves would follow. Well good question, honestly I don't know exactly if this is possible, but I will try to get it working:
1. to do this the first thing we have to do this: first target the main/leader with all chars but the leader.
-For this we can easily use the /target-line from the follow-macro
(/target [mod:rctrl,mod:rshift,nomod:ralt,target=ToonA][mod:ralt,nomod:rshift,mod:rctrl,target=ToonB][mod:ralt,mod:rshift,nomod:rctrl,target=ToonC][mod:rctrl,mod:ralt,mod:rshift,target=ToonD][mod:rctrl,nomod:ralt,nomod:rshift,target=ToonE])
2. If we are the leader try to cast a heal to our target
- This could be done by checking if no ralt/rshift/rctrl is send and casting a heal on out target
so:
/cast [nomod:ralt,nomod:rctrl,nomod:rshift,help,nodead] Lesser Healing Wave
could work
3. We want that the leader doesn't do something
-This could be done by:
/stopmacro [nomod:ralt,nomod:rctrl,nomod:rshift]
4. We are not the leader and want to cast a heal to the target of the leader (if he has one), or the leader itself (which is our taget becasue of 1):
-This could be done with:
/cast [target=targettarget,help,nodead][help,nodead] Lesser Healing Wave
5. We want to switch back to our former Target (optional)
- add a /targetlasttarget at the end.
so combined the macro would look like this:
/target [mod:rctrl,mod:rshift,nomod:ralt,target=ToonA][mod:ralt,nomod:rshift,mod:rctrl,target=ToonB][mod:ralt,mod:rshift,nomod:rctrl,target=ToonC][mod:rctrl,mod:ralt,mod:rshift,target=ToonD][mod:rctrl,nomod:ralt,nomod:rshift,target=ToonE]
/cast [nomod:ralt,nomod:rctrl,nomod:rshift,help,nodead] Lesser Healing Wave
/stopmacro [nomod:ralt,nomod:rctrl,nomod:rshift]
/cast [target=targettarget,help,nodead][help,nodead] Lesser Healing Wave
/targetlasttarget
WoW, what a big boy ;) ...remember: all from scratch, so no idea if it actualy works, but maybe you simply try it...
Amazing...simply amazing...let me play with it and i'll let ya know...i really didn't think it could be done with just 1 macro...<crosses fingers>
EDIT: Drum roll please .............. YAY it works !! You know your stuff thats a fact... Again thank you for the help...
Its simply a work of art...with no target selected by the main all slaves heal me...with an enemy targetted by the main all slaves heal main but main does not heal himself.. when main targets any slave we ALL heal the target...
Looks like i have to come up with another tough one to try and stump you on lol
Bettysue
05-03-2009, 03:12 AM
Since I already have a separate button for targetting rather than assisting bound to actionbutton1 to make my macros a bit smaller could I use:
/clickactionbutton1
/cast [nomod,help,nodead] Lesser Healing Wave
/stopmacro [nomod]
/cast [target=targettarget,help,nodead][help,nodead] Lesser Healing Wave
/targetlasttarget
to keep everything within the 255 char limit? I don't use any sort of macro length modifying addons after the whole 1.11 fiasco. My targetting macro is pretty much identical to what the first line of your macro was. Btw thanks for your great writeups on HKN I have a feeling I'll be switching from keyclone soon so i can take advantage of the mouse click passing abilities of HKN.
vBulletin® v4.2.2, Copyright ©2000-2025, Jelsoft Enterprises Ltd.