Monday, 13 November 2017

Life in a Roman World.

OMG I haven't written anything this year, where on earth has the time gone.

Its not like I am doing nothing, but it has been a poor year work wise for RPGs and games.

I sought of lost interest (for now) on Samarkand and Fallen Cities, which are my biggest projects. This was partly due to other projects being fresher, and a lack of money to pursue the other items (sort of upto artwork and maps stage to a degree).

What I have been working on mostly, at least lately, has been my current RPGs that I am running, and future RPGs that those games will lead into. BY this I mean my Rippers game, which I am really enjoying, and the Weird Wars Rome game that that will lead into (the players will be portal-ed from the Rippers end game to the WWR start game). I have been developing a quite extensive story board for the WWR, reading up on Roman history etc, finding dates and names. The result will be a very interesting game from 73AD to 98AD, using many historical events and people.

Which leads to the question of rail-roading! Theoretically having a developed storyboard game linked to specific events is effectively rail-roading. The players will be forced to follow events, they will need to be a certain places at certain times because History requires it. For eg the Emperor Vespasian dies in 79AD, Vesuvius erupts a few months later, Titus is made the new Emperor only to die two years later historically.  In my game these are pivotal events that start the game off, except Titus is assassinated at his coronation and his death is linked to the Vesuvian eruption. This is really the only major change to the historical time line. The story-board goes from there to 98AD when the players have to ensure that Trajan remains alive and is crowned Emperor. If they don't do this the time line breaks and things go badly.

So is this rail-roading due to the constraints of the story and time line, or is it just limited options for the players. And is the BIG PICTURE constraints really a rail-road, or simply the choice they made at the very beginning and they are following it through. In this game the players are told what is expected of them at the start (well some of it) and they chose to do it or not... of course if they don't the game simply ends because I haven't got a story line for anything else. And if they don't make the choice of being 'Heroes', and saving the world, then there is no point in the game.

So is it rail-roading if the GM takes on the role of authority telling them what to do? The players are not god, or Emperor, or in any position of power at the start of the game, other than being heroes. In a real Roman world they are either bums or soldiers, they have a position in the roman society and they follow the laws and obey the commands they are given. Does a Roman soldier have any ability to dis-obey his Tribune and get away with it. If your players are going to play legionnaires do they have any choice when the GM, acting as a superior officer, gives them an order...?

Role playing in a real world scenario requires a certain degree of acceptance of the constraints placed on them to conform to the norms of that world. In a fantasy world the players are anarchists and can go and do what they like, but in a real Rome they conform or they suffer. 

I hope this is not rail-roading, it is simply good role playing.

Thursday, 8 December 2016

Character Pooling

TEAM PLAY (Optional)

Extract from Fallen Cities game (in development).

Team play is an option where a small group of players run and control a larger group of characters. There are several ways this can be handled.

Classically every player runs one character in a role playing game, but this is convention only. There is nothing that says you can’t run one, two or a bunch of characters at the same time. It isn’t really all that much harder to run two characters than it is to run one.

In several games I have played we had two or more characters available to us, but we only used one of them at a time, during a single adventure/session. This can be useful with games that have mortality rates, you just swap to your alternate character. This is better than fudging the arrival of a complete stranger.

Running multiple characters also works well when you have only 2 or 3 players, it gives them a much more viable group and prevents the GM having to scale down everything to suit the numbers they have playing.

In a game like Fallen Cities, where there are 8 different character archetypes, but you only have 4 players, you can allow them to run 2 characters each.  But if you have 5 players that doesn’t work as well, and you are still short of the 8 that would be ideal.

There are two options I am suggesting to handle this:

Spare Character Pool:

Where each player has one primary character they run, and any extra characters that may be needed, or wanted, are placed in a pool and are available to any player to act with at anytime. When a player wants to act, if they want to use one of the pool characters, they just do it.

Shared Character Pool:

This is a full extension of the pool idea. Players do NOT have a fixed character, they all share all the characters. When a player wants to act they simply select a character they wish to do it with and do it. AW mechanics actually lend themselves to this style of play.

You can include some controls, such as the same player cannot control two characters in a row (although they can suggest what another does).  This can be prone to dominant players taking control, but there are some systems you can put in place to handle this, and that you would probably do anyway.

In the first case the pool characters sheet is simply left in the centre of the table when not being used, which means the last person to use it puts it back, relinquishes the sheet to show they are finished with it. When a player wants to act, and if they wish to do so with a pool character, they simply take control of the sheet and do what they do, then return the sheet to the centre.

Another option would be to give everyone a copy of the pool characters, but then someone needs to be responsible for updating those sheets and keeping everyone uptodate.


If you find you have trouble controller who acts with pool characters, for eg one player tends to hog one of the sheets, you could bring in a rotation rule. Have a token that represents access to the pool and only the player with the token can take control of the pool character at any one time. Once they have used the token they pass it to the player on their left. Nothing stops any player from suggesting actions, but only the token controller can act in the voice of the pool character.

Friday, 2 December 2016

Using players to run NPCs


So I have been grumbling to myself for some time that running npcs is a chore, and often they lacked colour to the players who just looked at them as numbers to be overcome.  SO I sort an answer, which came to me due to a lot of reading I have been doing with games that have more narrative elements to them, freeing up the systems for all sides... I gave control to my players. GASP!

So when we have an encounter now I dole out NPC cards to the players with an outline of the creature/npc on one side and some boxes to fill out on the other, very quick fill boxes, and most of the time only one.

The players get to control the NPC almost completely, and I reward them to doing nasty things to players, being inventive and inflicting hurts. The best NPC player gets a coin they can use to cash in later for small benefits.

Turns out it worked really well, my players actually seem to like hurting the other players, and get excited and involved when given a chance to be inventive and surprising.  Who would have guessed.

So the game we are currently playing is Runequest 2.5 (the newly reprinted classic). Following is a page I give to all the players and allow them to select ONE option to apply to their NPC.  This remains a secret.

Some of them are restricted, like POW stones and magical items, they generally can only have one of these in a group.

So far it seems to be working really well.

Things you can do to the NPCs.

 Anything you  give them, you must use.
Traits:
  • STR: +1AC, ^Dam dice, Strong/Powerful    
  • CON: +6hp, +2 cols. Sturdy/Robust
  • DEX: +10% Defence+Skills+Ranged -1SR, Quick
  • INT: +2 spells, Smart/Clever
  • CHA: +10Defence, +3HP, +1col, Handsome
  • SIZ: ^Dam bonus +3HPs +1 col -1SR Large

A random RUNESPELL
CHOICE of a battle spell, free use.
Extra 2 battle spells, random
Armour values +2
Chaos feature *2
+20% ATK in MELEE
+20% ATK in Ranged
+20% ATK in Thrown
+20% DEF
+20% PARRY
^dice Damage bonus
+4HPs, +1col
HEAL 6 spell ability
Bound spirit in Fetish +6POW
Comes with a trap somewhere
Blade venom 4
Uses POISONS, str3d6-1
SR is 2 less.
+20% to a useable skill, must use it.
Starts with advantageous position, or hidden.
Charger, Move +2 ATK+10% ^Dam dice
Battle potion.
Spell matrix *1
Fetish, one use magic
RANSOM, generally CHA/2x100L. Can double this but need to take an extra bonus.
Reinforcements: +1 average guys immediate OR +2 average guys in 3 rds. +3 average guys in 5rds.
Creative inspiration by YOU! AMAZE ME!
Auto hit, once, normal, target.
Team effort, if adjacent +20% for both, melee
Target, +20% attacking a selected target.

POW crystal 1d6+2pts, gains +2 spells or +4 levels. OR With a spirit, gain 3 spells or +6 levels, 2d6+4 POW.
A Magic Item *1

Creatures given to those without tokens first, else random
Fun&Creative use will result in a token reward from the GM. These can be cashed in for ‘stuff’? Minor magical items, rerolls, extra cards etc.
*1: if you take a magic item you must USE IT! If you gain it at the end it deducts from your rewards.

*2: A Chaos feature requires a chaos creature.

Wednesday, 9 November 2016

Defeating your players.

Defeating your players is hard, especially if you want to keep them alive.

I played a Shadowrun game once where I wanted to capture the players, which would bring them into the opponents base, where they could escape and work from within... only they refused to surrender, and pretty much were going to die to the last man before I just gave up and announced they were captured. And it wasn't like I didn't make it obvious they had no hope, I kept bringing in reinforcements and kept telling them it was hopeless... so why did this happen.

Well number one is a players sense of immortality. Players, and fictional heroes, are indoctrinated into the belief that they will overcome, survive, and triumph in the end, if only they can hold out long enough.  This is an extremely hard expectation to bypass. You can help matters by telling your players that the game will be 'dark' or 'deadly' or 'gritty' or any other euphemism for character death, but that ultimately doesn't counter the 'heroic' nature of a player character in most role playing games. Nearly all rpg's are based on heroic fiction, the very appeal of this is the heroic nature of the characters. There are games around that don't replicate this idea,but for me I have no interest in them. Most of the time they are too close to real life in style for me to want to participate, real life is bad enough already. I play games for escapism, pure and simple.

So assuming your players have this predefined expectation, how do you get them to give up?

The simplest way, one which I have been using, is GM fiat...You are all captured, you wake up in prison. etc. Even then your players won't be happy, mine will rip off a list of precautions and standards tactics that make it impossible for them to be captured, alive, and spend a good 10 mins simply rejecting the idea.  But at least no one dies.

There are different versions of this. You can get player buy-in to a capture, explain the premise of the story and how it starts that way, and get your players to agree. You can actually design the story around the concept that the only way they can proceed is to be captured, planting the seed and then allowing them to work it out, although this becomes very linear and obvious usually.

So what other ways are there? And while we are thinking about player surrender, what about npc surrender, how do you convince players to take prisoners?  My players have no problem 'eliminating' prisoners who they can't reasonably dispose of, especially if the adventure requires them to move ever forward.

In a recent Runequest game I had to explain the concept of 'ransom' to some of my players. IN RQ ransom is an honour bound tradition (for everyone except the truly chaotic evil folks), written into the description of the world story, supported by the Cults and Gods of the world. As incentive to use it, players are offered financial or material rewards, and a character who offers ransom is honour bound to obey the lores and traditions applicable.. and players don't have to worry about npc's suddenly stabbing them in the back.  In that RQ game, once I had pointed out the option, things very suddenly changed, players started accepting offers of surrender rather than fighting to a death. In the immediately following scene they negotiated a deal rather than storm the barricades. It was a surprisingly refreshing change of play style.

Thinking back on it, as GM, half of the problem is my own. I too expect players to be heroes, but on occassion I find myself expecting my NPCs to be heroes also. I unconsciously start 'playing' the game and turning it into an 'us vs them' scenario, which finds me being reluctant to surrender also. When both sides are thinking that way then the situation quickly becomes a 100% casualty result, which is ridiculous.

People do NOT want to die, players and npcs want to live, but in a game we don't really have to worry about that. Morale and fear of death rarely enter into the game play, especially once 'monsters' enter the combat. Most monsters are essentially psychopathic suicidal nutters.

The experience I had with the RQ game above triggered me to think more about this, hence this post. It occurs to me that there must be ways to use 'defeat' and surrender as part of the gameplay, without it meaning failure... or even more to the point, what is wrong with player's failing? Is failure not a realistic outcome on occassion?

Apart from the 'ransom' tradition of RQ, there are shortcuts you can use as  GM. This is already implied in the use of 'mooks' by some game systems. Not only do 'mooks' die quickly, they vanish quickly also... ie they fail their morale test and run away. This 'run away' thing however can be near impossible in some game systems... and players can be particularly persistent in tracking every single npc down.  So one avenue is to use mooks more, and give them really low values, and have them vanish into thin air... you just have to get your players to buy into the system.

Thats a good start for NPCs. I need to think more about players... but I am pretty sure it will come down to offering them an incentive to surrender. Surrender has to be made attractive.



Sunday, 6 November 2016

A Shadowrun 5e setup for Roll20

I recently started a game of Shadowrun 5e on Roll20 with a group of friends. I wanted to make use of as much of my previous experience with the API and the various scripts I have learned to use. SR5e however is a difficult game to adapt to Roll20 because it has a number of major difference that vary it away from the major game systems.
Some of the major changes that required work were:
  • The initiative system – a variable value generated every turn, with variable multiple action phases during each turn. 
  • A movement rate that is expended during a turn, over one or more actions, that adjusts from walking to running to sprinting as you accumulate movement.
  • A pool based roll resolution system, with limiters and exploders.
    Initially I entered the game with a simpler ambition than what I ended up with. It got more complicated due to The Aaron (Group-Init) and DarKDinDoN (MovementTracker), who responded to my requests for help by modifying their scripts and giving me copies to test, with specific settings for Shadowrun. IE they gave me what I asked for, the bastids. Some of these changes are still working their way through the Roll20 system.
    I am truly thankful for their help, even to the point of going into my games and playing with my setup to try to iron out issues.

    The other really useful tool is the SR5 character sheet template: Authors:Gerdofal - Chad on Roll20. Based on a sheet by Neirin D. and JoeIngledew.

    It took me a while to get used to this sheet, and a bit of effort to get parts of it working (mostly my own fault for not filling ALL fields, like it tells you to). But I am now very happy with it, if only my players would fill it out correctly.

    Scripts
    So the following is a list of all the scripts I have loaded. I will group them into two groups – essential ones for SR, and others.

    @ indicates scripts available through the Library… but I may have an early release.

    Essential:
      Optionals:
        The following system scripts are also used, but should be loaded as a result on one of the above:
        • VectorMath @
        • MatrixMath @
        • PathMath @
        • TokenCollisions @
        • IsGM @
        • HTMLBuilder @

          GroupInitiative (v0.9.21) + TurnMarker.
          Essential to controlling the SR turn order. Then Aaron added a whole bunch of features to this shortly after I spoke to him about using it for SR. I’m not sure if he had them in the works already or if my questions prompted them but they are great.
          Setting it up:
          Note: this uses attributes from the Character Sheet, which must be loaded and created. Players can generate their initiative scores from the character sheet itself, but it is much easier to generate a whole bunch of player+npc scores at once using this script. Not to mention the other advantages that will be listed below.
          !group-init –add-group –bare|reaction|current –bare|intuition|current –bare|initiativemisc|current –tiebreaker|reaction|current
          !group-init –del-group 1 (remove the default group it comes set to).
          You need to set the following buttons from the menu:
          Roller = Individual-Roll
          Sort options = Descending
          Initiative Die size = 6
          Initiative Dice Count =0
          Dice count Attribute = initiativedice
          Max decimal places = 2
          Auto Open Init = On
          Replace Roll = On
          Announcer = Partial.

          Once you have set that up you can create the following buttons:

          ClearInit: 
          • !group-init –clear
          SetInit: 
          • !group-init
          Sort: 
          • !group-init –sort
          Modify5-10: 
          • [[?{SELECT TOKEN!!!|5,5|10,10} &{tracker:-}]]
          End of Action: 
          • !group-init --adjust -10
          End of Turn: 
          • !group-init --reroll
          • !group-init --sort
          • !mt reset-turn
            Most of these should be obvious, but some notes: Modify5-10 is using the Tracker option because the option in Group-Init only works on the current active token. Aaron is working on adding an option to apply it to a selected token. The mod5-10 is needed to tokens that take interrupt actions. Be careful however not to fall for the trap of re-Sorting after Modifying, you need to adjust their position manually, because a Sort will re-sort the entire list, including g those that have already acted.
            As End of Actions are performed init values will eventually drop below 0, any token with a 0 or negative score does not get a turn and is skipped. 
            End of Turn rerolls everyones init (I don’t keep the same scores, but if you wanted to you can use the ‘stack’ features), sorts them, them the MoveTracker status is reset to allow new movement, see below.

            MoveTracker v0.1.0
            Use the menu system buttons to turn Tracker ON, strict mode ON and the important one SR Mode ON. 
            The SR mode turns move tracking resets due to an “eot” event (a players eot) off and allows move tracker to reduce progressively through the actions of a turn. 
            You can set two rings for movement limits, Walking and Running. To do this click the ADD button and add a RUN option with Agility *4, with Constraint ON. Then set a WALK option with Agility*2, with Constraint OFF.
            MT will constrain movement to these limits unless you free them up by using the Move-Constraint option.
            In my game I give the players access to a Move button with !MT on it, which allows them to access the MT Menu system for players. Options include taking moves back, but in my game I verbally tell players to not drop their tokens unless they are sure, because their vision will be updated.
            For the GM I have 3 buttons:
            Move-reset:
            • !mt reset-turn
            Move-constraint:
            • !mt toggle-turn-constraints
            Move:
            • !mt
            The reset is simply there incase something unusual happens. The constraints is for tokens that wish to SPRINT, a third class of movement in SR, which requires a skill roll and is variable in its results.
            MT is a really nice tool, but it does have a few short comings:
            The area effect layer it applies can be annoying at times, covering things. It can also, at rare times, get in the way of selecting things if the layering is not quite right. This doesn’t happen very often and I have yet to pin down under what conditions it occurs. 
            The area effect layer can also be less effective if you are using dynamic lighting and you have a very tight field of view… like in a group of offices with walls everywhere.
            I would like for it to have a ring lines rather than an area of effect colour, as an optional.

            TurnMarker.
            TM tracks the current token at the top of the init order. It places a nice graphic under it and if you turn the AUTOPULL option ON it will re-center on that token. Its one failing is that it doesn’t ‘select’ that token (I believe there is an PAI issue for why that doesn’t happen).
            There are a bunch of announcement options you can use so that message appear in chat when a token has finished, or starts its turn. This connects nicely with StatusTracker, which will display Status marker messages at the same time for the new token.
            One thing you have to remember with TurnMark is that it is linked to the current Page Focus, the flag you move around on your pages that determine what players see. 
            I have had occasions where the TM icon/image gets lost or confused, especially with MT. Most of this confusion will be resolved by simply moving the current token one square. I have other occasions where the icon/image seems to vanish, or just not deploy at all. I strongly suspect that this is my problem, I forgot to do something, or I did something wrong, but I haven’t worked out what it is that I did, yet.
            The TM icon can be cleared from screen by closing the Init Tracker, or clearing all tokens from the InitTracker (using the Clear button).

            TokenNameNumber.
            The purpose of this script is simply to add a number to the end of any token you deploy from the Journal. This allows you to deploy multiple copies of a token so it appears as Token 1, Token 2, Token 3 etc. It does this automatically, and adjusts for numbers currently in use, or removed, from the table.
            There is a process to setting it up correctly however, and as I don’t like RTFM it took me a while to get it right. But it is worth doing.
            What I use it for is to create a Journal entry for a character/creature, assign values and images to it (using the SR character sheet or manually creating your own as I will describe later).
            Once you have a token for your Journal, open it and assign the Journal to it (Represents Character). Then add %%NUMBERED%% to what ever Name you assign it, so Wolf would become Wolf %%NUMBERED%%. Save the token. Open the Journal and edit it, remove the current token image (Default Token) and assign the new one. Close. Deploy a new token from the Journal to the table and it will be renumbered. You can delete the token with the %%NUMBERED%% still showing.
            The advantage of this, assuming you do NOT bind any attributes to the token, is that you can setup a single Journal for a monster and then deploy multiple copies of it. Further, if you assign values to Bar1,2,3 before you save it to the journal above, it will deploy with those values, ready to use. Alternatively you can use a macro to quickly assign values, as I will show below. For my purposes I use Bar 1=HPs (single track only for NPCs), Bar2=Ammo and Bar3=armour value. How I use these, and why, I explain below.

            TokenMod, GSAttk, ChatSetAttr, Reset.
            Each of these modify Attributes in a Journal in some way. Each of them is good for doing a few things that I wanted, but each of them seems to have a hole in some area, mainly to do with handling current vs max attribute values. It is actually very likely that I am simply missing something and I don’t really need all of them, but that’s the way it worked out, I am happy to be educated.
            Reset: is a collection of small programs that someone wrote, which I have hatcheted into various forms at times. Simple one use functions.
            The main places I use them is with four buttons used for setting up NPCs and player tokens. So I will just go through what each does.
            Template: a macro for apply attributes to an NPC token. Rather than use the full character sheet I only need a few values for NPCs, so I create them with this script, and the following ones. I probably don’t even need this many values, old habits.

            Template.
            !gsa -c @{selected|character_id} {{
            --body|?{body|3}
            --agility|?{Agility|3}
            --reaction|?{Reaction|3}
            --strength|?{strength|3}
            --willpower|?{willpower|3}
            --logic|?{logic|3}
            --intuition|?{Intuition|3}
            --charisma|?{charisma|3}
            --initiativemisc|?{initiativemisc|0}
            --initiativedice|?{initiativedice|1}
            --matrixinitiativemisc|?{matrixinitiativemisc|0}
            --matrixinitiativestat|?{matrixinitiativestat|7}
            --matrixinitiativedice|?{matrixinitiativedice|1}
            --astralinitiativemisc|?{astralinitiativemisc|0}
            --astralinitiativedice|?{astralinitiativedice|3}
            --npcphysical|?{npcphysical|10}
            --magic|?{magic|6}
            --skills|?{skills|3}
            --armour|?{armour|9}
            }}
            !setattr --sel --Ammo|10|10
            !token-mod --set bar1_link|npcphysical bar2_link|Ammo bar3_link|armour
            !setbars
            !token-mod --set bar1_link| bar2_link| bar3_link|

            QuikTemplate: (no prompting)
            !gsa -c @{selected|character_id} {{
            --body|3
            --agility|3
            --reaction|3
            --strength|3
            --willpower|3
            --logic|3
            --intuition|3
            --charisma|3
            --initiativemisc|0
            --initiativedice|1
            --matrixinitiativemisc|0
            --matrixinitiativestat|7
            --matrixinitiativedice|1
            --astralinitiativemisc|0
            --astralinitiativedice|3
            --npcphysical|10
            --magic|6
            --skills|3
            --armour|9
            }}
            !setattr --sel --Ammo|10|10
            !token-mod --set bar1_link|npcphysical bar2_link|Ammo bar3_link|armour
            !setbars
            !token-mod --set bar1_link| bar2_link| bar3_link|

            SetNPCBars (for resetting tokens quickly).

            !token-mod --set bar1_link|npcphysical bar2_link|Ammo bar3_link|armour
            !setbars
            !token-mod --set bar1_link| bar2_link| bar3_link|

            The thing that you might wonder about is the !setattr command. As far as I can tell tokenmod doesn’t set MAX values for attributes… so I use setattr to put a max value into ammo, so I can reload it if need be (see Ammo later).
            The rest of the optional scripts should be reasonably self evident, and rather than go through and explain all about them (follow the links if you want to know), I will instead go through what other buttons I have set up and what they do.

            GM Buttons.


            NPC-Attack:
            !power {{
            --format|atwill
            --name|@{selected|token_name} attacks.
            --Target:| ~R@{target|token_name}~R
            --AttackRoll:|~R[[ (@{selected|agility}+@{selected|skills} + ?{Mods|0} - [[floor(@{selected|bar1|max}-@{selected|bar1})/3) ]])d6s>5 ]] ~R
            }}
            !token-mod {{
            --set bar2_value|-1 
            --ids @{selected|token_id}
            }}

            The last bit reduces the NPCs Ammo value by 1. As a house rule we give NPCs 10 ammo and deduct 1 everytime they shoot, regardless of attack type or weapon ammo supply. Its just a simplification.

            NPCReload:

            !token-mod --set bar2_reset|

            NPC-Skill

            !power {{
            --format|atwill
            --name|@{selected|token_name}.
            --SkillRoll:|~R ?{Skill|Skill} [[( ?{Dice Pool|7} + ?{Mods|0} - [[floor(@{selected|bar1|max}-@{selected|bar1})/3]] )d6s>5]] ~R
            }}

            NPC-Avoid/Soak

            !power {{
            --format|atwill
            --name|@{selected|token_name} Avoidance roll
            --AvoidRoll:|~R[[(@{selected|reaction} + @{selected|intuition|0} + ?{ModAvoid|0} - [[floor(@{selected|bar1|max}-@{selected|bar1})/3) ]])d6s>5 ]] ~R
            }}
            !power {{
            --format|atwill
            --name|@{selected|token_name} Soak roll.
            --SoakRoll:|~R[[(@{selected|body} + @{selected|armour} +?{AP|0} - [[floor(@{selected|bar1|max}-@{selected|bar1})/3) ]])d6s>5 ]] ~R
            }}
            You have to be careful with this one, the results sometime come out not in the same order.

            Roll-Simple

            !power {{
            --format|atwill
            --name|@{selected|token_name} Simple Roll.
            --PoolRoll:|~RSuccesses:[[?{Dice Pool|0}d6s>5]]~R
            }}

            Mark-clear

            !mark-clear

            Bump and BumpCr8

            !bump-slave –push

            SFX

            /fx ?{Type|beam|bomb|breath|bubbling|burn|burst|explode|glow|missile|nova|splatter}-?{Colour|acid|blood|charm|death|fire|frost|holy|magic|slime|smoke|water} @{target|token_id}

            Fire-x

            /fx nova-fire @{target|token_id}
            Various sound effects, eg Shotgun
            !sfx song:Shotgun01 action:play unique:true volume:50
            !sfx song:Machinegun action:play unique:true volume:50

            The Player Bar.

            For players we try to track ammo…

            AdjustGunClip

            !ammo @{selected|token_id} ?{Gun name} ?{Adjust clip|0,0|-1,-1|-2,-2|-3,-3|-6,-6|-10,-10|-20,-20|1,1|5,5|10,10}

            ANewGun

            !setattr --sel --?{GunName}|?{Clip}|?{Clip}

            aReload

            !resetattr --sel --?{Gun name}
            Roll-Edge
            !power {{
            --format|atwill
            --name|@{selected|token_name} Simple Roll.
            --PoolRoll:|~RSuccesses:[[?{Dice Pool|0}d6!s>5]]~R
            }}

            SetLight

            !token-mod --set light_radius|?{light radius|20} light_dimradius|?{dim radius|5} light_angle|?{Angle|360} light_otherplayers|?{YesNo|yes}

            SetSight

            !token-mod --set light_multiplier|?{Light xMod|1} light_losangle|?{Angle|360} light_hassight|?{YesNo|yes}

            StatAdd

            !StatusAdd ?{Status name} ?{Status Duration, -1 for perm} ?{Status description} ?{Type GM for GM only} // ?{Status Indicator|Purple|Red|Blue|Green|Brown|Pink|Yellow|Skull|Broken-heart|broken-skull|death-zone }
            StatAll, StatClrAll, StatDel… should be easy to work out.

            Whisper

            /w ?{Target|gm|Storme|Jackson|Moonraker|Buzz|Brock|Bruce|Indigo|Kat|Solomon|Wolfric} ?{Message}




            MT active...



            PS If you are wondering how I have my macro bar over three lines: https://app.roll20.net/forum/post/476678/slug%7DNot perfect but simple and works.



            Reset script….no idea where I got it from sorry.
            ;on("chat:message", function(msg) {
                'use strict';
                // Exit if not an api command
                if (msg.type != "api") return;
            
            
                // Get the API Chat Command
                msg.who = msg.who.replace(" (GM)", "");
                msg.content = msg.content.replace("(GM) ", "");
                var command = msg.content.split(" ", 1);
            
            
                // Removes all status markers from selected tokens...
                // Usage: !clear
                if (command == "!clear") {
                    _.each(msg.selected, function(obj) {
                        var Token = getObj("graphic", obj._id);
                        var DefaultIcons = "";
                        if (Token.get("represents") !== "") {
                            DefaultIcons = findObjs({_type: "attribute", name: "DefaultIcons", _characterid: Token.get("represents")})[0];
                            DefaultIcons = (DefaultIcons !== undefined) ? DefaultIcons.get("current") : "";
                        }
                        Token.set("statusmarkers", DefaultIcons);
                    });
                }
            
            
                if (command == "!setbars") {
                    _.each(msg.selected, function(obj) {
                        // Get the Token and its max bar values...
                        var Token = getObj("graphic", obj._id);
                        var DefaultIcons = "";
                        var bar1value = Token.get("bar1_value")
                        var bar2value = Token.get("bar2_value")
                        var bar3value = Token.get("bar3_value")
            
            
                        // If the Token represents a character, check to see if the Token
                        // has any default icons to set. Usage should be markername@value
                        // Example: grenade@2
                        if (Token.get("represents") !== "") {
                            DefaultIcons = findObjs({_type: "attribute", name: "DefaultIcons", _characterid: Token.get("represents")})[0];
                            DefaultIcons = (DefaultIcons !== undefined) ? DefaultIcons.get("current") : "";
                        }
            
            
                        // Reset bar values and remove all status markers except those 
                        // marked as default icons...
                        //if (Bar1Max !== null) Token.set("bar1_value", Bar1Max);
                        Token.set("bar1_max", "");
                        Token.set("bar2_max", "");
                        Token.set("bar3_max", "");
                        Token.set("bar1_max", bar1value);
                        Token.set("bar2_max", bar2value);
                        Token.set("bar3_max", bar3value);
                        Token.set("statusmarkers", DefaultIcons);
                    });
                } 
            
            
            
            
                if (command == "!sort") {
                    if (msg.type !== 'api' || msg.content !== '!sort') return;
                    let order = Campaign().get('turnorder');
                    if (order.length) {
                        order = _.sortBy(JSON.parse(order), (t) => parseFloat(t.pr));
                        order.reverse();
                    }
                    Campaign().set('turnorder', JSON.stringify(order));
                } 
            
            
            });