Character Vault
Any Concept / Any System
Compendium
Your System Come To Life
Roll20 for Android
Streamlined for your Tablet
Roll20 for iPad
Streamlined for your Tablet

Personal tools

Difference between revisions of "Script:Marking Conditions"

From Roll20 Wiki

Jump to: navigation, search
Line 1: Line 1:
 +
{{script overview
 +
|name=Marking Conditions
 +
|author={{user profile|235259|Brian}}
 +
|dependencies={{api repository link|splitArgs}}
 +
|version=3.0
 +
|lastmodified=2015-01-09}}
 +
 
The following script creates the API commands <code>!mark</code>, <code>!unmark</code>, and <code>!clearmark</code>
 
The following script creates the API commands <code>!mark</code>, <code>!unmark</code>, and <code>!clearmark</code>
 +
<br clear="all">
  
 
==== Syntax ====
 
==== Syntax ====
Line 35: Line 43:
  
 
The <code>!mark</code> command will set a marker, while the <code>!unmark</code> command will clear it. <code>!clearmark</code> will clear all markers from the token.
 
The <code>!mark</code> command will set a marker, while the <code>!unmark</code> command will clear it. <code>!clearmark</code> will clear all markers from the token.
 
==== Code ====
 
<pre data-language="javascript">
 
on('chat:message', function(msg) {
 
    if(msg.type != 'api') return;
 
   
 
    var args = msg.content.split(' ');
 
    var command = args.shift().toLowerCase().substring(1);
 
   
 
    if (!(command == 'mark' || command == 'clearmark' || command == 'unmark')) return;
 
    if (args.length == 0) {
 
        sendChat('ERROR', '/w ' + msg.who + ' Please supply a token target with @{target|token_id}');
 
        return;
 
    }
 
   
 
    var mark = 'purple'; // default to defender's "mark" condition
 
    if(args[1]) {
 
        args[1] = args[1].toLowerCase();
 
        switch(args[1])
 
        {
 
            case 'blinded':
 
            case 'blind':
 
                mark = 'bleeding-eye';
 
                break;
 
            case 'dazed':
 
            case 'daze':
 
                mark = 'pummeled';
 
                break;
 
            case 'deafened':
 
            case 'deaf':
 
                mark = 'screaming';
 
                break;
 
            case 'dominated':
 
            case 'dominate':
 
                mark = 'chained-heart';
 
                break;
 
            case 'immobilized':
 
            case 'immobile':
 
            case 'immob':
 
                mark = 'fishing-net';
 
                break;
 
            case 'marked':
 
            case 'mark':
 
                mark = 'purple';
 
                break;
 
            case 'petrified':
 
            case 'petrify':
 
            case 'stone':
 
                mark = 'white-tower';
 
                break;
 
            case 'prone':
 
                mark = 'back-pain';
 
                break;
 
            case 'restrained':
 
                mark = 'aura';
 
                break;
 
            case 'slowed':
 
            case 'slow':
 
                mark = 'snail';
 
                break;
 
            case 'stunned':
 
            case 'stun':
 
                mark = 'lightning-helix';
 
                break;
 
            case 'weakened':
 
            case 'weak':
 
                mark = 'broken-heart';
 
                break;
 
            case 'ongoing':
 
            case 'damage':
 
            case 'dam':
 
                if(args[2]) {
 
                    args[2] = args[2].toLowerCase();
 
                    switch(args[2])
 
                    {
 
                        case 'acid':
 
                            mark = 'chemical-bolt';
 
                            break;
 
                        case 'cold':
 
                            mark = 'frozen-orb';
 
                            break;
 
                        case 'fire':
 
                            mark = 'half-haze';
 
                            break;
 
                        case 'force':
 
                            mark = 'blue';
 
                            break;
 
                        case 'lightning':
 
                            mark = 'edge-crack';
 
                            break;
 
                        case 'necrotic':
 
                            mark = 'death-zone';
 
                            break;
 
                        case 'poison':
 
                            mark = 'skull';
 
                            break;
 
                        case 'psychic':
 
                            mark = 'pink';
 
                            break;
 
                        case 'radiant':
 
                            mark = 'angel-outfit';
 
                            break;
 
                        case 'thunder':
 
                            mark = 'yellow';
 
                            break;
 
                        default:
 
                            sendChat('ERROR', '/w ' + msg.who + ' No damage type called ' + args[2]
 
                                    + '. If the damage has no type, do not include a type!');
 
                            return;
 
                    }
 
                }
 
                else mark = 'all-for-one'; // untyped ongoing damage
 
                break;
 
            case 'dying':
 
            case 'helpless':
 
            case 'unconscious':
 
            case 'insubstantial':
 
            case 'surprised':
 
                sendChat('ERROR', '/w ' + msg.who + ' The ' + args[1]
 
                                + ' status is not implemented for the !mark command.');
 
                return;
 
                break;
 
            default:
 
                mark = args[1]; // allows for direct status setting
 
                break;
 
        }
 
    }
 
   
 
    var target = getObj('graphic', args[0]);
 
    if (!target) {
 
        sendChat('ERROR', '/w ' + msg.who + ' Please specify a token to mark with @{target|token_id}.');
 
        return;
 
    }
 
   
 
    switch (command)
 
    {
 
        default:
 
        case 'mark':
 
            target.set('status_'+mark, true);
 
            break;
 
        case 'unmark':
 
            target.set('status_'+mark, false);
 
            break;
 
        case 'clearmark':
 
            target.set('statusmarkers', '');
 
            break;
 
    }
 
});
 
</pre>
 
  
 
==== Examples ====
 
==== Examples ====
Line 201: Line 60:
 
<blockquote>This will remove all markers from the selected token.</blockquote>
 
<blockquote>This will remove all markers from the selected token.</blockquote>
  
[[Category:User API Scripts|Marking Conditions]]
 
 
[[Category:API Commands|Marking Conditions]]
 
[[Category:API Commands|Marking Conditions]]

Revision as of 06:41, 9 January 2015

API ScriptAuthor: Brian
Version: 3.0
Last Modified: 2015-01-09
Code: Marking Conditions
Dependencies: splitArgs
Conflicts: None

The following script creates the API commands !mark, !unmark, and !clearmark

Syntax

!mark tokenid [status [type]]
!unmark tokenid [status [type]]
!clearmark tokenid
Parameter Values
tokenid The ID of the token to mark. Use @{target|token_id} or @{selected|token_id} to get this value.
status (Optional) A D&D 4e status (except for dying, helpless, unconscious, insubstantial, or surprised) or the name of a statusmarker icon. The script has several aliases for the statuses. For example, immobilized, immobile, and immob all correspond to the same marker.

If status is not specified, the purple statusmarker will be used.

type (Optional) A D&D 4e damage type. Only used if status is ongoing, damage, or dam. One of:
  • acid
  • cold
  • fire
  • force
  • lightning
  • necrotic
  • poison
  • psychic
  • radiant
  • thunder

If type is not specified, a statusmarker to represent untyped damage will be used.

The !mark command will set a marker, while the !unmark command will clear it. !clearmark will clear all markers from the token.

Examples

!mark @{target|token_id} brown

This will set the brown marker on the target token.

!mark @{target|token_id} immob

This will set the 'immobilize' icon to the target token.

!mark @{selected|token_id} ongoing fire

This will mark the selected token with ongoing fire damage.

!unmark @{selected|token_id}

This will remove the purple (default) statusmarker from the selected token.

!clearmark @{selected|token_id}

This will remove all markers from the selected token.