% File: rpgicons-l3.sty
% Copyright 2024-2026 Jasper Habicht (mail(at)jasperhabicht.de).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
% available at http://www.latex-project.org/lppl/.
%
% This file is part of the `rpgicons'  package (The Work in LPPL)
% and all files in that bundle must be distributed together.
%
% This work has the LPPL maintenance status `maintained'.
%
\ProvidesExplPackage {rpgicons-l3} {2026-01-27} {2.5.0}
    {RPG Icons Package (l3 Variant)}

\bool_new:N \l__rpgicons_unicode_mode_bool
\sys_if_engine_luatex:T {
    \bool_set_true:N \l__rpgicons_unicode_mode_bool
}
\sys_if_engine_xetex:T {
    \bool_set_true:N \l__rpgicons_unicode_mode_bool
}

\msg_new:nnn { rpgicons } { old-kernel } {
    LaTeX ~ kernel ~ too ~ old. \iow_newline:
    The ~ rpgicons ~ package ~ does ~ not ~ support ~ this ~ LaTeX ~ version. \iow_newline:
    Please ~ update ~ to ~ a ~ newer ~ version.
}
\msg_new:nnn { rpgicons } { option-deprecated } {
    The ~ option ~ `#1` ~ has ~ been ~ deprecated ~ and ~ will ~ be ~ ignored.
}
\msg_new:nnn { rpgicons } { documentmetadata-missing } {
    In ~ order ~ to ~ use ~ opacity, ~
    \token_to_str:N \DocumentMetadata \c_space_tl must ~ be ~ set.
}
\msg_new:nnn { rpgicons } { shape-undefined } {
    The ~ shape ~ `#1` ~ is ~ undefined.
}
\msg_new:nnn { rpgicons } { frame-undefined } {
    The ~ frame ~ `#1` ~ is ~ undefined.
}
\msg_new:nnn { rpgicons } { style-undefined } {
    The ~ style ~ `#1` ~ is ~ undefined.
}
\msg_if_exist:nnF { rpgicons } { tagging-unsupported } {
    \msg_new:nnn { rpgicons } { tagging-unsupported } {
        This ~ LaTeX ~ version ~ does ~ not ~ support ~ tagging.
    }
}

\keys_define:nn { rpgicons / global } {
    compat   .code:n  = {
        \msg_warning:nnn { rpgicons } { option-deprecated } { compat }
    } ,
    opacity  .code:n  = {
        \msg_warning:nnn { rpgicons } { option-deprecated } { opacity }
    }
}
\ProcessKeyOptions [ rpgicons / global ]

\RequirePackage { l3draw }

\cs_if_exist:NF \IfExplAtLeastTF {
    \msg_critical:nn { rpgicons } { old-kernel }
}

\IfExplAtLeastTF { 2025-04-14 } { } {
    \RequirePackage { l3opacity }
}

% backward compatibility
\cs_if_exist:NF \draw_set_linewidth:n {
    \cs_set_eq:NN \draw_set_linewidth:n \draw_linewidth:n
}
\cs_if_exist:NF \draw_set_baseline:n {
    \cs_set_eq:NN \draw_set_baseline:n \draw_baseline:n
}
\cs_if_exist:NF \draw_set_cap_round: {
    \cs_set_eq:NN \draw_set_cap_round: \draw_cap_round:
}
\cs_if_exist:NF \draw_set_join_round: {
    \cs_set_eq:NN \draw_set_join_round: \draw_join_round:
}
% ===

% DICE

\cs_new_protected:Npn \rpgicons_draw_shape_twoside: {
    \draw_path_ellipse:nnn { 0cm , 0cm } { 0cm , .25cm } { .425cm , 0cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_fourside: {
    \draw_path_moveto:n { 0cm , .35cm }
    \draw_path_lineto:n { .433cm , -.4cm }
    \draw_path_lineto:n { -.433cm , -.4cm }
    \draw_path_close:
}

\cs_new_protected:Npn \rpgicons_draw_shape_sixside: {
    \draw_path_rectangle_corners:nn { -.4cm , -.4cm } { .4cm , .4cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_eightside: {
    \draw_path_moveto:n { 0cm , .5cm }
    \draw_path_lineto:n { .433cm , .25cm }
    \draw_path_lineto:n { .433cm , -.25cm }
    \draw_path_lineto:n { 0cm , -.5cm }
    \draw_path_lineto:n { -.433cm , -.25cm }
    \draw_path_lineto:n { -.433cm , .25cm }
    \draw_path_close:
    \draw_path_lineto:n { .433cm , -.25cm }
    \draw_path_lineto:n { -.433cm , -.25cm }
    \draw_path_close:
}

\cs_new_protected:Npn \rpgicons_draw_shape_tenside: {
    \draw_path_moveto:n { 0cm , .5cm }
    \draw_path_lineto:n { .475cm , .1cm }
    \draw_path_lineto:n { .475cm , -.1cm }
    \draw_path_lineto:n { 0cm , -.5cm }
    \draw_path_lineto:n { -.475cm , -.1cm }
    \draw_path_lineto:n { -.475cm , .1cm }
    \draw_path_close:
    \draw_path_lineto:n { .294cm , -.154cm }
    \draw_path_lineto:n { 0cm , -.3cm }
    \draw_path_lineto:n { -.294cm , -.154cm }
    \draw_path_close:
    \draw_path_moveto:n { .294cm , -.154cm }
    \draw_path_lineto:n { .475cm , -.1cm }
    \draw_path_moveto:n { -.475cm , -.1cm }
    \draw_path_lineto:n { -.294cm , -.154cm }
    \draw_path_moveto:n { 0cm , -.5cm }
    \draw_path_lineto:n { 0cm , -.3cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_twelveside: {
    \draw_path_moveto:n { 0cm , .5cm }
    \draw_path_lineto:n { 0.294cm , .405cm }
    \draw_path_lineto:n { .475cm , .173cm }
    \draw_path_lineto:n { .475cm , -.173cm }
    \draw_path_lineto:n { .294cm , -.405cm }
    \draw_path_lineto:n { 0cm , -.5cm }
    \draw_path_lineto:n { -.294cm , -.405cm }
    \draw_path_lineto:n { -.475cm , -.173cm }
    \draw_path_lineto:n { -.475cm , .173cm }
    \draw_path_lineto:n { -.294cm , .405cm }
    \draw_path_close:
    \draw_path_moveto:n { 0cm , .349cm }
    \draw_path_lineto:n { .332cm , .108cm }
    \draw_path_lineto:n { .205cm , -.282cm }
    \draw_path_lineto:n { -.205cm , -.282cm }
    \draw_path_lineto:n { -.332cm , .108cm }
    \draw_path_close:
    \draw_path_lineto:n { 0cm , .5cm }
    \draw_path_moveto:n { .475cm , .173cm }
    \draw_path_lineto:n { .332cm , .108cm }
    \draw_path_moveto:n { .294cm , -.405cm }
    \draw_path_lineto:n { .205cm , -.282cm }
    \draw_path_moveto:n { -.294cm , -.405cm }
    \draw_path_lineto:n { -.205cm , -.282cm }
    \draw_path_moveto:n { -.475cm , .173cm }
    \draw_path_lineto:n { -.332cm , .108cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_twentyside: {
    \draw_path_moveto:n { 0cm , .5cm }
    \draw_path_lineto:n { .454cm , .262cm }
    \draw_path_lineto:n { .454cm , -.262cm }
    \draw_path_lineto:n { 0cm , -.5cm }
    \draw_path_lineto:n { -.454cm , -.262cm }
    \draw_path_lineto:n { -.454cm , .262cm }
    \draw_path_close:
    \draw_path_moveto:n { 0cm , .292cm }
    \draw_path_lineto:n { .253cm , -.146cm }
    \draw_path_lineto:n { -.253cm , -.146cm }
    \draw_path_close:
    \draw_path_lineto:n { .454cm , .262cm }
    \draw_path_lineto:n { .253cm , -.146cm }
    \draw_path_lineto:n { 0cm , -.5cm }
    \draw_path_lineto:n { -.253cm , -.146cm }
    \draw_path_lineto:n { -.454cm , .262cm }
    \draw_path_close:
    \draw_path_lineto:n { 0cm , .5cm }
    \draw_path_moveto:n { .454cm , -.262cm }
    \draw_path_lineto:n { .253cm , -.146cm }
    \draw_path_moveto:n { -.454cm , -.262cm }
    \draw_path_lineto:n { -.253cm , -.146cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_hundredside: {
    \draw_path_circle:nn { 0cm, 0cm } { .425cm }
    \draw_path_moveto:n { .425cm , 0cm }
    \draw_path_arc:nnnn { 180 } { 50 } { -.425cm } { -.2cm }
    \draw_path_moveto:n { 0cm , -.425cm }
    \draw_path_arc:nnnn { 270 } { 140 } { -.2cm } { .425cm }
}

\clist_new:N \l_rpgnicons_pips_clist
\fp_new:N \l_rpgnicons_pips_coordx_fp
\fp_new:N \l_rpgnicons_pips_coordy_fp
\cs_new_protected:Npn \rpgicons_draw_shape_sixside_pips:n #1 {
    \str_case:nn {#1} {
        { one } { \clist_set:Nn \l_rpgnicons_pips_clist {
            { 0cm , 0cm }
        } }
        { two } { \clist_set:Nn \l_rpgnicons_pips_clist {
            { -.2cm , .2cm } , { .2cm , -.2cm }
        } }
        { three } { \clist_set:Nn \l_rpgnicons_pips_clist {
            { -.2cm , .2cm } , { 0cm , 0cm } , { .2cm , -.2cm }
        } }
        { four } { \clist_set:Nn \l_rpgnicons_pips_clist {
            { -.2cm , .2cm } , { .2cm , .2cm } ,
            { -.2cm , -.2cm } , { .2cm , -.2cm }
        } }
        { five } { \clist_set:Nn \l_rpgnicons_pips_clist {
            { -.2cm , .2cm } , { .2cm , .2cm } ,
            { 0cm , 0cm } ,
            { -.2cm , -.2cm } , { .2cm , -.2cm }
        } }
        { six } { \clist_set:Nn \l_rpgnicons_pips_clist {
            { -.2cm , .2cm } , { .2cm , .2cm } ,
            { -.2cm , 0cm } , { .2cm , 0cm } ,
            { -.2cm , -.2cm } , { .2cm , -.2cm }
        } }
        { seven } { \clist_set:Nn \l_rpgnicons_pips_clist {
            { -.2cm , .2cm } , { .2cm , .2cm } ,
            { -.2cm , 0cm } , { 0cm , 0cm } , { .2cm , 0cm } ,
            { -.2cm , -.2cm } , { .2cm , -.2cm }
        } }
        { eight } { \clist_set:Nn \l_rpgnicons_pips_clist {
            { -.2cm , .2cm } , { 0cm , .2cm } , { .2cm , .2cm } ,
            { -.2cm , 0cm } , { .2cm , 0cm } ,
            { -.2cm , -.2cm } , { 0cm , -.2cm } , { .2cm , -.2cm }
        } }
        { nine } { \clist_set:Nn \l_rpgnicons_pips_clist {
            { -.2cm , .2cm } , { 0cm , .2cm } , { .2cm , .2cm } ,
            { -.2cm , 0cm } , { 0cm , 0cm } , { .2cm , 0cm } ,
            { -.2cm , -.2cm } , { 0cm , -.2cm } , { .2cm , -.2cm }
        } }
    }
    \clist_map_inline:Nn \l_rpgnicons_pips_clist {
        \fp_set:Nn \l_rpgnicons_pips_coordx_fp { \clist_item:nn {##1} { 1 } }
        \fp_set:Nn \l_rpgnicons_pips_coordy_fp { \clist_item:nn {##1} { 2 } }
        \draw_path_circle:nn { \l_rpgnicons_pips_coordx_fp , \l_rpgnicons_pips_coordy_fp } { 2pt }
    }
    \draw_path_use_clear:n { fill }
    \rpgicons_draw_shape_sixside:
}

\cs_new_protected:Npn \rpgicons_draw_shape_fudge: {
    \rpgicons_draw_shape_sixside:
    \draw_path_moveto:n { -.15cm , .1cm }
    \draw_path_lineto:n { .15cm , .1cm }
    \draw_path_moveto:n { 0cm , .25cm }
    \draw_path_lineto:n { 0cm , -.05cm }
    \draw_path_moveto:n { -.15cm , -.2cm }
    \draw_path_lineto:n { .15cm , -.2cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_fudge_plus: {
    \rpgicons_draw_shape_sixside:
    \draw_path_moveto:n { 0cm , .15cm }
    \draw_path_lineto:n { 0cm , -.15cm }
    \draw_path_moveto:n { -.15cm , 0cm }
    \draw_path_lineto:n { .15cm , 0cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_fudge_minus: {
    \rpgicons_draw_shape_sixside:
    \draw_path_moveto:n { -.15cm , 0cm }
    \draw_path_lineto:n { .15cm , 0cm }
}

% ABILITIES

\cs_new_protected:Npn \rpgicons_draw_shape_strength: {
    \draw_path_moveto:n { ( 0cm , -.075cm ) + ( \draw_point_polar:nn { .425cm } { 90 } ) }
    \draw_path_arc:nnn { 90 } { 60 } { .425cm }
    \draw_path_arc:nnn { 200 } { -40 } { .1cm }
    \draw_path_moveto:n { ( 0cm , -.075cm ) + ( \draw_point_polar:nn { .425cm } { 45 } ) }
    \draw_path_arc:nnn { 45 } { -20 } { .425cm }
    \draw_path_arc:nnn { -50 } { -80 } { .35cm }
    \draw_path_moveto:n { ( 0cm , -.075cm ) + ( \draw_point_polar:nn { .425cm } { 90 } ) }
    \draw_path_arc:nnn { 90 } { 120 } { .425cm }
    \draw_path_arc:nnn { -20 } { 220 } { .1cm }
    \draw_path_moveto:n { ( 0cm , -.075cm ) + ( \draw_point_polar:nn { .425cm } { 135 } ) }
    \draw_path_arc:nnn { 135 } { 200 } { .425cm }
    \draw_path_arc:nnn { 230 } { 260 } { .35cm }
    \draw_path_moveto:n { -.2cm , -.025cm }
    \draw_path_lineto:n { -.1cm , -.05cm }
    \draw_path_lineto:n { -.125cm , -.325cm }
    \draw_path_arc:nnnn { 180 } { 360 } { .125cm } { .1cm }
    \draw_path_lineto:n { .1cm , -.05cm }
    \draw_path_lineto:n { .2cm , -.025cm }
    \draw_path_moveto:n { 0cm , -.3cm }
    \draw_path_arc:nnn { 90 } { 70 } { .1cm }
    \draw_path_moveto:n { 0cm , -.3cm }
    \draw_path_arc:nnn { 90 } { 110 } { .1cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_dexterity: {
    \draw_path_moveto:n { ( 0cm , -.075cm ) + ( \draw_point_polar:nn { .425cm } { 90 } ) }
    \draw_path_arc:nnn { 90 } { 65 } { .425cm }
    \draw_path_arc:nnnn { 200 } { 90 } { .1cm } { .075cm }
    \draw_path_arc:nnnn { 90 } { -30 } { .1cm } { .075cm }
    \draw_path_moveto:n { ( 0cm , -.075cm ) + ( \draw_point_polar:nn { .425cm } { 45 } ) }
    \draw_path_arc:nnnn { 45 } { -20 } { .425cm } { .35cm }
    \draw_path_arc:nnn { 110 } { 160 } { .175cm }
    \draw_path_moveto:n { ( 0cm , -.075cm ) + ( \draw_point_polar:nn { .425cm } { 90 } ) }
    \draw_path_arc:nnn { 90 } { 115 } { .425cm }
    \draw_path_arc:nnnn { -20 } { 90 } { .1cm } { .075cm }
    \draw_path_arc:nnnn { 90 } { 220 } { .1cm } { .075cm }
    \draw_path_moveto:n { ( 0cm , -.075cm ) + ( \draw_point_polar:nn { .425cm } { 135 } ) }
    \draw_path_arc:nnnn { 135 } { 200 } { .425cm } { .35cm }
    \draw_path_arc:nnn { 70 } { 20 } { .175cm }
    \draw_path_moveto:n { -.075cm , -.175cm }
    \draw_path_arc:nnnn { 180 } { 360 } { .075cm } { .05cm }
    \draw_path_moveto:n { 0cm , -.225cm }
    \draw_path_lineto:n { 0cm , -.25cm }
    \draw_path_moveto:n { -.2cm , .025cm }
    \draw_path_lineto:n { -.075cm , 0cm }
    \draw_path_lineto:n { -.125cm , -.075cm }
    \draw_path_moveto:n { .125cm , -.075cm }
    \draw_path_lineto:n { .075cm , 0cm }
    \draw_path_lineto:n { .2cm , .025cm }
    \draw_path_moveto:n { 0cm , -.25cm }
    \draw_path_arc:nnnn { 360 } { 140 } { .1cm } { .075cm }
    \draw_path_moveto:n { 0cm , -.25cm }
    \draw_path_arc:nnnn { 180 } { 400 } { .1cm } { .075cm }
    \draw_path_moveto:n { -.1cm , -.325cm }
    \draw_path_lineto:n { -.1cm , -.375cm }
    \draw_path_arc:nnnn { 180 } { 360 } { .1cm } { .05cm }
    \draw_path_lineto:n { .1cm , -.325cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_dexterity_i: {
    \draw_path_moveto:n { ( 0cm , -.15cm ) + ( \draw_point_polar:nn { .425cm } { 90 } ) }
    \draw_path_arc:nnn { 90 } { 80 } { .425cm }
    \draw_path_moveto:n { ( 0cm , -.15cm ) + ( \draw_point_polar:nn { .425cm } { 90 } ) }
    \draw_path_arc:nnn { 90 } { 100 } { .425cm }
    \draw_path_moveto:n { .125cm , .175cm }
    \draw_path_lineto:n { .375cm , .425cm }
    \draw_path_arc:nnn { 30 } { -20 } { .25cm }
    \draw_path_lineto:n { ( 0cm , -.1cm ) + ( \draw_point_polar:nn { .425cm } { 30 } ) }
    \draw_path_arc:nnnn { 30 } { -45 } { .425cm } { .35cm }
    \draw_path_moveto:n { -.125cm , .175cm }
    \draw_path_lineto:n { -.375cm , .425cm }
    \draw_path_arc:nnn { 150 } { 200 } { .25cm }
    \draw_path_lineto:n { ( 0cm , -.1cm ) + ( \draw_point_polar:nn { .425cm } { 150 } ) }
    \draw_path_arc:nnnn { 150 } { 225 } { .425cm } { .35cm }
    \draw_path_moveto:n { .075cm , -.075cm }
    \draw_path_arc:nnnn { 170 } { 90 } { .15cm } { .05cm }
    \draw_path_moveto:n { -.075cm , -.075cm }
    \draw_path_arc:nnnn { 10 } { 90 } { .15cm } { .05cm }
    \draw_path_moveto:n { 0cm , -.275cm }
    \draw_path_arc:nnnn { 0 } { 90 } { .075cm } { .05cm }
    \draw_path_moveto:n { 0cm , -.275cm }
    \draw_path_arc:nnnn { 180 } { 90 } { .075cm } { .05cm }
    \draw_path_moveto:n { 0cm , -.275cm }
    \draw_path_arc:nnnn { 360 } { 180 } { .1cm } { .075cm }
    \draw_path_moveto:n { 0cm , -.275cm }
    \draw_path_arc:nnnn { 180 } { 360 } { .1cm } { .075cm }
    \draw_path_moveto:n { -.1cm , -.35cm }
    \draw_path_lineto:n { -.1cm , -.375cm }
    \draw_path_arc:nnnn { 180 } { 360 } { .1cm } { .05cm }
    \draw_path_lineto:n { .1cm , -.35cm }
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_dexterity_alt: \rpgicons_draw_shape_dexterity_i:
% ===

\cs_new_protected:Npn \rpgicons_draw_shape_constitution: {
    \draw_path_moveto:n { 0cm , .25cm }
    \draw_path_lineto:n { .125cm , .25cm }
    \draw_path_arc:nnn { -90 } { -30 } { .325cm }
    \draw_path_arc:nnn { 0 } { -80 } { .3cm }
    \draw_path_moveto:n { 0cm , .25cm }
    \draw_path_lineto:n { -.125cm , .25cm }
    \draw_path_arc:nnn { 270 } { 210 } { .325cm }
    \draw_path_arc:nnn { 180 } { 260 } { .3cm }
    \draw_path_moveto:n { .325cm , .1cm }
    \draw_path_lineto:n { .425cm , .075cm }
    \draw_path_arc:nnnn { 0 } { -90 } { .175cm } { .1cm }
    \draw_path_lineto:n { .2cm , -.15cm }
    \draw_path_moveto:n { -.325cm , .1cm }
    \draw_path_lineto:n { -.425cm , .075cm }
    \draw_path_arc:nnnn { 180 } { 270 } { .175cm } { .1cm }
    \draw_path_lineto:n { -.2cm , -.15cm }
    \draw_path_moveto:n { -.15cm , -.225cm }
    \draw_path_arc:nnn { 90 } { 270 } { .1cm }
    \draw_path_lineto:n { .15cm , -.425cm }
    \draw_path_arc:nnn { -90 } { 90 } { .1cm }
    \draw_path_moveto:n { -.125cm , -.35cm }
    \draw_path_arc:nnn { -90 } { 0 } { .05cm }
    \draw_path_moveto:n { .125cm , -.35cm }
    \draw_path_arc:nnn { 90 } { 0 } { -.05cm }
    \draw_path_moveto:n { -.125cm , -.025cm }
    \draw_path_lineto:n { -.075cm , -.05cm }
    \draw_path_lineto:n { -.075cm , -.1cm }
    \draw_path_moveto:n { .125cm , -.025cm }
    \draw_path_lineto:n { .075cm , -.05cm }
    \draw_path_lineto:n { .075cm , -.1cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_intelligence: {
    \draw_path_moveto:n { ( 0cm , -.2cm ) + ( \draw_point_polar:nn { .425cm } { 90 } ) }
    \draw_path_arc:nnn { 90 } { 60 } { .25cm }
    \draw_path_lineto:n { ( 0cm , -.1cm ) + ( \draw_point_polar:nn { .6cm } { 60 } ) }
    \draw_path_arc:nnn { 40 } { -2.5 } { .425cm }
    \draw_path_moveto:n { ( 0cm , -.2cm ) + ( \draw_point_polar:nn { .425cm } { 90 } ) }
    \draw_path_arc:nnn { 90 } { 120 } { .25cm }
    \draw_path_lineto:n { ( 0cm , -.1cm ) + ( \draw_point_polar:nn { .6cm } { 120 } ) }
    \draw_path_arc:nnn { 140 } { 182.5 } { .425cm }
    \draw_path_moveto:n { ( 0cm , -.2cm ) + ( \draw_point_polar:nn { .425cm } { 45 } ) }
    \draw_path_arc:nnn { 45 } { 0 } { .425cm }
    \draw_path_lineto:n { .2cm , -.275cm }
    \draw_path_moveto:n { ( 0cm , -.2cm ) + ( \draw_point_polar:nn { .425cm } { 135 } ) }
    \draw_path_arc:nnn { 135 } { 180 } { .425cm }
    \draw_path_lineto:n { -.2cm , -.275cm }
    \draw_path_moveto:n { -.2cm , -.075cm }
    \draw_path_lineto:n { -.1cm , -.1cm }
    \draw_path_lineto:n { -.075cm , -.375cm }
    \draw_path_arc:nnnn { 180 } { 360 } { .075cm } { .05cm }
    \draw_path_lineto:n { .1cm , -.1cm }
    \draw_path_lineto:n { .2cm , -.075cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_wisdom: {
    \draw_path_moveto:n { 0cm , .175cm }
    \draw_path_arc:nnn { 60 } { 90 } { .425cm }
    \draw_path_arc:nnn { 270 } { 240 } { .425cm }
    \draw_path_moveto:n { 0cm , .175cm }
    \draw_path_arc:nnn { 120 } { 90 } { .425cm }
    \draw_path_arc:nnn { 270 } { 300 } { .425cm }
    \draw_path_circle:nn { -.175cm , 0cm } { .075cm }
    \draw_path_circle:nn { .175cm , 0cm } { .075cm }
    \draw_path_moveto:n { .075cm , -.125cm }
    \draw_path_lineto:n { 0cm , -.325cm }
    \draw_path_lineto:n { -.075cm , -.125cm }
    \draw_path_moveto:n { -.375cm , .125cm }
    \draw_path_arc:nnn { 150 } { 270 } { .25cm }
    \draw_path_moveto:n { .375cm , .125cm }
    \draw_path_arc:nnn { 30 } { -90 } { .25cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_wisdom_i: {
    \draw_path_moveto:n { ( 0cm , -.125cm ) + ( \draw_point_polar:nn { .55cm } { 110 } ) }
    \draw_path_arc:nnn { 110 } { 70 } { .55cm }
    \draw_path_moveto:n { -.425cm , .125cm }
    \draw_path_arc:nnnn { 180 } { 270 } { .1cm } { .175cm }
    \draw_path_arc:nnnn { 330 } { 420 } { .1cm } { .2cm }
    \draw_path_moveto:n { .425cm , .125cm }
    \draw_path_arc:nnnn { 360 } { 270 } { .1cm } { .175cm }
    \draw_path_arc:nnnn { 210 } { 120 } { .1cm } { .2cm }
    \draw_path_moveto:n { -.3cm , .3cm }
    \draw_path_arc:nnnn { 110 } { 30 } { .1cm } { .25cm }
    \draw_path_moveto:n {.3cm , .3cm }
    \draw_path_arc:nnnn { 70 } { 150 } { .1cm } { .25cm }
    \draw_path_moveto:n { -.075cm , .05cm }
    \draw_path_lineto:n { -.1cm , -.05cm }
    \draw_path_moveto:n { .075cm , .05cm }
    \draw_path_lineto:n { .1cm , -.05cm }
    \draw_path_moveto:n { 0cm , -.3cm }
    \draw_path_arc:nnnn { 60 } { 120 } { .3cm } { .5cm }
    \draw_path_arc:nnnn { 240 } { 180 } { .1cm } { .175cm }
    \draw_path_moveto:n { 0cm , -.3cm }
    \draw_path_arc:nnnn { 120 } { 60 } { .3cm } { .5cm }
    \draw_path_arc:nnnn { 300 } { 360 } { .1cm } { .175cm }
    \draw_path_moveto:n { ( 0cm , .125cm ) + ( \draw_point_polar:nn { .55cm } { 245 } ) }
    \draw_path_arc:nnn { 245 } { 295 } { .55cm }
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_wisdom_alt: \rpgicons_draw_shape_wisdom_i:
% ===

\cs_new_protected:Npn \rpgicons_draw_shape_charisma: {
    \draw_path_moveto:n { 0cm , .15cm }
    \draw_path_arc:nnnn { 270 } { 190 } { .15cm } { .1cm }
    \draw_path_arc:nnnn { 10 } { 90 } { .175cm } { .225cm }
    \draw_path_arc:nnnn { 40 } { 0 } { .125cm } { .175cm }
    \draw_path_moveto:n { 0cm , .15cm }
    \draw_path_arc:nnnn { 270 } { 350 } { .15cm } { .1cm }
    \draw_path_arc:nnnn { 170 } { 90 } { .175cm } { .225cm }
    \draw_path_arc:nnnn { 140 } { 180 } { .125cm } { .175cm }
    \draw_path_moveto:n { -.2cm , .125cm }
    \draw_path_arc:nnnn { 0 } { 90 } { .175cm } { .1cm }
    \draw_path_arc:nnnn { 180 } { 270 } { .15cm } { .2cm }
    \draw_path_lineto:n { -.25cm , -.05cm }
    \draw_path_arc:nnn { 40 } { 0 } { .45cm }
    \draw_path_lineto:n { 0cm , -.425cm }
    \draw_path_moveto:n { .2cm , .125cm }
    \draw_path_arc:nnnn { 180 } { 90 } { .175cm } { .1cm }
    \draw_path_arc:nnnn { 0 } { -90 } { .15cm } { .2cm }
    \draw_path_lineto:n { .25cm , -.05cm }
    \draw_path_arc:nnn { 140 } { 180 } { .45cm }
    \draw_path_lineto:n { 0cm , -.425cm }
    \draw_path_moveto:n { -.05cm , -.275cm }
    \draw_path_arc:nnn { -30 } { 60 } { .05cm }
    \draw_path_moveto:n { .05cm , -.275cm }
    \draw_path_arc:nnn { 210 } { 120 } { .05cm }
    \draw_path_moveto:n { -.125cm , -.05cm }
    \draw_path_lineto:n { -.05cm , -.075cm }
    \draw_path_moveto:n { .125cm , -.05cm }
    \draw_path_lineto:n { .05cm , -.075cm }
    \draw_path_moveto:n { -.35cm , -.05cm }
    \draw_path_lineto:n { -.425cm , -.05cm }
    \draw_path_arc:nnn { 30 } { -30 } { .15cm }
    \draw_path_arc:nnn { 80 } { 10 } { .15cm }
    \draw_path_lineto:n { -.25cm , -.275cm }
    \draw_path_moveto:n { .35cm , -.05cm }
    \draw_path_lineto:n { .425cm , -.05cm }
    \draw_path_arc:nnn { 150 } { 210 } { .15cm }
    \draw_path_arc:nnn { 100 } { 170 } { .15cm }
    \draw_path_lineto:n { .25cm , -.275cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_resilience: {
    \draw_path_moveto:n { ( -.425cm , -.475cm ) + ( \draw_point_polar:nn { .5cm } { 65 } ) }
    \draw_path_arc:nnn { 65 } { 90 } { .5cm }
    \draw_path_lineto:n { ( 0cm , -.075cm ) + ( \draw_point_polar:nn { .55cm } { 135 } ) }
    \draw_path_arc:nnn { 135 } { 45 } { .55cm }
    \draw_path_lineto:n { .425cm , .025cm }
    \draw_path_arc:nnn { 90 } { 115 } { .5cm }
    \draw_path_moveto:n { .2cm , .3cm }
    \draw_path_lineto:n { .125cm , .275cm }
    \draw_path_lineto:n { .2cm , .15cm }
    \draw_path_moveto:n { .125cm , .075cm }
    \draw_path_lineto:n { .05cm , .05cm }
    \draw_path_moveto:n { .15cm , -.1cm }
    \draw_path_arc:nnn { 200 } { 230 } { .4cm }
    \draw_path_moveto:n { -.2cm , .3cm }
    \draw_path_lineto:n { -.125cm , .275cm }
    \draw_path_lineto:n { -.2cm , .15cm }
    \draw_path_moveto:n { -.125cm , .075cm }
    \draw_path_lineto:n { -.05cm , .05cm }
    \draw_path_moveto:n { -.15cm , -.1cm }
    \draw_path_arc:nnn { 340 } { 310 } { .4cm }
    \draw_path_moveto:n { -.065cm , -.075cm }
    \draw_path_lineto:n { -.045cm , -.425cm }
    \draw_path_lineto:n { .045cm , -.425cm }
    \draw_path_lineto:n { .065cm , -.075cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_sanity: {
    \draw_path_moveto:n { ( -.125cm + .175cm * sind(30) , .425cm - .175cm * cosd(30) ) +
        ( \draw_point_polar:nn { .175cm } { 210 } ) }
    \draw_path_arc:nnn { 210 } { 120 } { .175cm }
    \draw_path_lineto:n { \draw_point_polar:nn { .25cm } { 110 } }
    \draw_path_arc:nnn { 110 } { 70 } { .25cm }
    \draw_path_lineto:n { .125cm , .425cm }
    \draw_path_arc:nnn { 420 } { 330 } { .175cm }
    \draw_path_moveto:n { .25cm , .1cm }
    \draw_path_arc:nnn { 390 } { 305 } { .15cm }
    \draw_path_moveto:n { -.25cm , .1cm }
    \draw_path_arc:nnn { 150 } { 235 } { .15cm }
    \draw_path_moveto:n { -.15cm , .075cm }
    \draw_path_lineto:n { -.1cm , .05cm }
    \draw_path_lineto:n { -.1cm , .025cm }
    \draw_path_moveto:n { .15cm , .075cm }
    \draw_path_lineto:n { .1cm , .05cm }
    \draw_path_lineto:n { .1cm , .025cm }
    \draw_path_moveto:n { ( -.55cm , -.35cm ) + ( \draw_point_polar:nnn { .125cm } { .075cm} { 135 } ) +
        ( \draw_point_polar:nn { .55cm } { 20 } ) }
    \draw_path_arc:nnn { 380 } { 360 } { .55cm }
    \draw_path_arc:nnnn { 135 } { 405 } { .125cm } { .075cm }
    \draw_path_arc:nnn { 180 } { 160 } { .55cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_perception: {
    \draw_path_moveto:n { ( 0cm , .35cm ) + ( \draw_point_polar:nn { .125cm } { 150 } ) }
    \draw_path_arc:nnn { 150 } { 390 } { .125cm }
    \draw_path_moveto:n { -.3cm , .425cm }
    \draw_path_arc:nnnn { 180 } { 360 } { .3cm } { .2cm }
    \draw_path_moveto:n { ( 0cm , .425cm ) + ( \draw_point_polar:nnn { .3cm } { .2cm } { 330 } ) }
    \draw_path_arc:nnnn { 270 } { 350 } { .15cm } { .1cm }
    \draw_path_moveto:n { ( 0cm , .425cm ) + ( \draw_point_polar:nnn { .3cm } { .2cm } { 210 } ) }
    \draw_path_arc:nnnn { 270 } { 190 } { .15cm } { .1cm }
    \draw_path_moveto:n { -.2cm , .15cm }
    \draw_path_lineto:n { -.375cm , .125cm }
    \draw_path_arc:nnn { 210 } { 250 } { .225cm }
    \draw_path_moveto:n { .2cm , .15cm }
    \draw_path_lineto:n { .375cm , .125cm }
    \draw_path_arc:nnn { 330 } { 290 } { .225cm }
    \draw_path_moveto:n { -.15cm , 0cm }
    \draw_path_lineto:n { -.075cm , -.025cm }
    \draw_path_lineto:n { -.075cm , -.05cm }
    \draw_path_moveto:n { .15cm , 0cm }
    \draw_path_lineto:n { .075cm , -.025cm }
    \draw_path_lineto:n { .075cm , -.05cm }
    \draw_path_moveto:n { ( -.075cm , ( -.35cm + .075cm * ( 2 + sqrt(3) ) ) ) +
        ( \draw_point_polar:nnn { .1cm } { .075cm } { 195 } ) }
    \draw_path_lineto:n { ( 0cm , -.35cm ) + ( \draw_point_polar:nnn { .1cm } { .075cm } { 195 } ) }
    \draw_path_arc:nnnn { 195 } { 345 } { .1cm } { .075cm }
    \draw_path_lineto:n { ( .075cm , ( -.35cm + .075cm * ( 2 + sqrt(3) ) ) ) +
        ( \draw_point_polar:nnn { .1cm } { .075cm } { 345 } ) }
    \draw_path_moveto:n { .025cm , -.325cm }
    \draw_path_arc:nnn { 0 } { 180 } { .025cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_luck: {
    \draw_path_moveto:n { .1cm , .15cm }
    \draw_path_lineto:n { .1cm , -.05cm }
    \draw_path_arc:nnn { -75 } { -15 } { .425cm }
    \draw_path_arc:nnn { 40 } { 85 } { .425cm }
    \draw_path_moveto:n { -.1cm , .15cm }
    \draw_path_lineto:n { -.1cm , -.05cm }
    \draw_path_arc:nnn { -105 } { -165 } { .425cm }
    \draw_path_arc:nnn { 140 } { 95 } { .425cm }
    \draw_path_moveto:n { ( 0cm , -.05cm ) + ( \draw_point_polar:nn { .425cm } { 15 } ) }
    \draw_path_arc:nnnn { 15 } { -55 } { .425cm } { .3cm }
    \draw_path_moveto:n { ( 0cm , -.05cm ) + ( \draw_point_polar:nn { .425cm } { 165 } ) }
    \draw_path_arc:nnnn { 165 } { 235 } { .425cm } { .3cm }
    \draw_path_moveto:n { 0cm , -.175cm }
    \draw_path_arc:nnnn { 90 } { 250 } { .175cm } { .125cm }
    \draw_path_lineto:n { -.05cm , -.325cm }
    \draw_path_moveto:n { 0cm , -.175cm }
    \draw_path_arc:nnnn { 90 } { -70 } { .175cm } { .125cm }
    \draw_path_lineto:n { .05cm , -.325cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_armor: {
    \draw_path_moveto:n { -.25cm , -.425cm }
    \draw_path_lineto:n { .25cm , -.425cm }
    \draw_path_lineto:n { .2cm , -.225cm }
    \draw_path_lineto:n { .25cm , .125cm }
    \draw_path_lineto:n { .425cm , .125cm }
    \draw_path_arc:nnn { 0 } { 90 } { .3cm }
    \draw_path_lineto:n { .125cm , .35cm }
    \draw_path_arc:nnn { 360 } { 180 } { .125cm }
    \draw_path_lineto:n { -.125cm , .425cm }
    \draw_path_arc:nnn { 90 } { 180 } { .3cm }
    \draw_path_lineto:n { -.25cm , .125cm }
    \draw_path_lineto:n { -.2cm , -.225cm }
    \draw_path_close:
    \draw_path_moveto:n { .125cm , .425cm }
    \draw_path_lineto:n { .125cm , .25cm }
    \draw_path_arc:nnn { 180 } { 270 } { .125cm }
    \draw_path_moveto:n { -.125cm , .425cm }
    \draw_path_lineto:n { -.125cm , .25cm }
    \draw_path_arc:nnn { 360 } { 270 } { .125cm }
    \draw_path_moveto:n { 0cm , .225cm }
    \draw_path_lineto:n { 0cm , -.275cm }
    \draw_path_moveto:n { -.2cm , -.225cm }
    \draw_path_lineto:n { 0cm , -.275cm }
    \draw_path_lineto:n { .2cm , -.225cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_proficiency: {
    \draw_path_moveto:n { \draw_point_polar:nn { .35cm} { 90 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 126 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 162 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 198 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 234 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 270 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 306 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 342 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 18 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 54 } }
    \draw_path_close:
    \draw_path_moveto:n { \draw_point_polar:nn { .35cm} { 270 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 270 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .35cm} { 342 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 342 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .35cm} { 54 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 54 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .35cm } { 126 }}
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 126 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .35cm} { 198 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 198 } }
}

\cs_new_protected:Npn \rpgicons_draw_shape_linear: {
    \draw_path_circle:nn { -.4cm , 0cm } { 2pt }
    \draw_path_use_clear:n { fill }
    \draw_path_moveto:n { -.4cm , 0cm }
    \draw_path_lineto:n { .4cm , 0cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_conic: {
    \draw_path_circle:nn { -.425cm , 0cm } { 2pt }
    \draw_path_use_clear:n { fill }
    \draw_path_ellipse:nnn { .2125cm , 0cm } { .2cm , 0cm } { 0cm , .425cm }
    \draw_path_moveto:n { .2125cm - .2cm * sin( asin( .2cm / .6375cm ) ) ,
        -.425cm * cos( asin( .2cm / ( .6375cm ) ) ) }
    \draw_path_lineto:n { -.425cm , 0cm }
    \draw_path_lineto:n { .2125cm - .2cm * sin( asin( .2cm / .6375cm ) ) ,
        .425cm * cos( asin( .2cm / ( .6375cm ) ) ) }
}

\cs_new_protected:Npn \rpgicons_draw_shape_quadratic: {
    \draw_path_circle:nn { 0cm , 0cm } { 2pt }
    \draw_path_use_clear:n { fill }
    \draw_path_rectangle_corners:nn { -.4cm , -.4cm } { .4cm , .4cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_cubic: {
    \draw_path_circle:nn { .1125cm , -.1125cm } { 2pt }
    \draw_path_use_clear:n { fill }
    \draw_path_moveto:n { -.425cm , .425cm }
    \draw_path_lineto:n { -.425cm , -.2cm }
    \draw_path_lineto:n { -.2cm , -.425cm }
    \draw_path_lineto:n { .425cm , -.425cm }
    \draw_path_lineto:n { .425cm , .2cm }
    \draw_path_lineto:n { .2cm , .425cm }
    \draw_path_close:
    \draw_path_lineto:n { -.2cm , .2cm }
    \draw_path_lineto:n { -.2cm , -.425cm }
    \draw_path_moveto:n { -.2cm , .2cm }
    \draw_path_lineto:n { .425cm , .2cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_spheric: {
    \draw_path_circle:nn { 0cm , 0cm } { 2pt }
    \draw_path_use_clear:n { fill }
    \draw_path_circle:nn { 0cm , 0cm } { .425cm }
    \draw_path_moveto:n { .425cm , 0cm }
    \draw_path_arc:nnnn { 180 } { 50 } { -.425cm } { -.2cm }
    \draw_path_moveto:n { 0cm , -.425cm }
    \draw_path_arc:nnnn { 270 } { 140 } { -.2cm } { .425cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_cylindric: {
    \draw_path_circle:nn { 0cm , -.2125cm } { 2pt }
    \draw_path_use_clear:n { fill }
    \draw_path_ellipse:nnn { 0cm , .2125cm } { 0cm , .2cm } { .425cm , 0cm }
    \draw_path_moveto:n { -.425cm , .2125cm }
    \draw_path_lineto:n { -.425cm , -.2125cm }
    \draw_path_arc:nnnn { 0 } { 180 } { -.425cm } { -.2cm }
    \draw_path_lineto:n { .425cm , .2125cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_emanation: {
    \draw_path_circle:nn { 0cm , .1cm } { .075cm }
    \draw_path_moveto:n { -.15cm , -.15cm }
    \draw_path_arc:nnn { 180 } { 90 } { .075cm }
    \draw_path_lineto:n { .075cm , -.075cm }
    \draw_path_arc:nnn { 90 } { 0 } { .075cm }
    \draw_path_circle:nn { 0cm , 0cm } { .425cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_verbal: {
    \draw_path_moveto:n { -.35cm , 0cm }
    \draw_path_arc:nnn { 180 } { -115 } { .35cm }
    \draw_path_lineto:n { -.4cm , -.4cm }
    \draw_path_lineto:n { \draw_point_polar:nn { .35cm } { 215 } }
}

\cs_new_protected:Npn \rpgicons_draw_shape_somatic: {
    \draw_path_moveto:n { -.425cm , 0cm }
    \draw_path_arc:nnnn { 0 } { 270 } { -.425cm } { -.2cm }
    \draw_path_moveto:n { 0cm , -.425cm }
    \draw_path_arc:nnnn { 90 } { 360 } { -.2cm } { -.425cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_material: {
    \draw_path_moveto:n { -.4cm , .2cm }
    \draw_path_lineto:n { -.4cm , -.2cm }
    \draw_path_lineto:n { 0cm , -.4cm }
    \draw_path_lineto:n { .4cm , -.2cm }
    \draw_path_lineto:n { .4cm , .2cm }
    \draw_path_lineto:n { 0cm , .4cm }
    \draw_path_close:
    \draw_path_lineto:n { 0cm , 0cm }
    \draw_path_lineto:n { .4cm , .2cm }
    \draw_path_moveto:n { 0cm , 0cm }
    \draw_path_lineto:n { 0cm , -.4cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_ritual: {
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm } { 90 } }
    \draw_path_arc:nnn { 90 } { -198 } { .425cm }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm } { 306 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm } { 90 } }
    \draw_path_close:
    \draw_path_moveto:n { ( \draw_point_polar:nn { .425cm } { 90 } ) + ( \draw_point_polar:nn { -.225cm } { 72 } ) }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm } { 234 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm } { 378 } }
    \draw_path_lineto:n { ( \draw_point_polar:nn { .425cm } { 162 } ) + ( \draw_point_polar:nn { -.225cm } { 180 } ) }
}

\cs_new_protected:Npn \rpgicons_draw_shape_focus: {
    \draw_path_circle:nn { 0cm , 0cm } { .35cm }
    \draw_path_moveto:n { -.15cm , 0 }
    \draw_path_lineto:n { -.425cm , 0 }
    \draw_path_moveto:n { .15cm , 0 }
    \draw_path_lineto:n { .425cm , 0 }
    \draw_path_moveto:n { 0cm , -.15cm }
    \draw_path_lineto:n { 0cm , -.425cm }
    \draw_path_moveto:n { 0cm , .15cm }
    \draw_path_lineto:n { 0cm , .425cm }
}

% SPELLSCHOOLS

\cs_new_protected:Npn \rpgicons_draw_shape_abjuration: {
    \draw_path_moveto:n { 0cm , .025cm }
    \draw_path_arc:nnnn { 270 } { 390 } { .275cm } { .175cm }
    \draw_path_arc:nnn { 210 } { 120 } { .095cm }
    \draw_path_moveto:n { 0cm , .025cm }
    \draw_path_arc:nnnn { 270 } { 150 } { .275cm } { .175cm }
    \draw_path_arc:nnn { -30 } { 60 } { .095cm }
    \draw_path_moveto:n { 0cm , .25cm }
    \draw_path_lineto:n { 0cm , -.425cm }
    \draw_path_moveto:n { -.25cm , -.125cm }
    \draw_path_lineto:n { .25cm , -.125cm }
    \draw_path_moveto:n { -.25cm , -.3cm }
    \draw_path_lineto:n { .25cm , -.3cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_conjuration: {
    \draw_path_moveto:n { -.425cm , .425cm }
    \draw_path_lineto:n { 0cm , -.425cm }
    \draw_path_lineto:n { .425cm , .425cm }
    \draw_path_moveto:n { -.225cm , .05cm }
    \draw_path_lineto:n { .225cm , .05cm }
    \draw_path_moveto:n { 0cm , -.15cm }
    \draw_path_arc:nnn { 110 } { 70 } { .5cm }
    \draw_path_moveto:n { 0cm , -.15cm }
    \draw_path_arc:nnn { 110 } { 70 } { -.5cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_divination: {
    \draw_path_moveto:n { -.35cm , -.175cm }
    \draw_path_arc:nnnn { 180 } { 0 } { .15cm } { -.25cm }
    \draw_path_arc:nnn { 180 } { 90 } { .4cm }
    \draw_path_moveto:n { -.05cm , -.175cm }
    \draw_path_lineto:n { -.05cm , 0cm }
    \draw_path_arc:nnn { 180 } { 90 } { .4cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_enchantment: {
    \draw_path_moveto:n { -.2cm , -.425cm }
    \draw_path_lineto:n { -.2cm , .425cm }
    \draw_path_moveto:n { -.425cm , .175cm }
    \draw_path_lineto:n { .025cm , .175cm }
    \draw_path_moveto:n { -.2cm , -.225cm }
    \draw_path_arc:nnnn { 180 } { 0 } { .1cm } { .2cm }
    \draw_path_arc:nnnn { 180 } { 0 } { .1cm } { .2cm }
    \draw_path_arc:nnnn { 180 } { 0 } { .1cm } { -.2cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_evocation: {
    \draw_path_ellipse:nnn { 0cm , 0cm } { .325cm , 0cm } { 0cm , .225cm }
    \draw_path_moveto:n { 0cm , .425cm }
    \draw_path_lineto:n { 0cm , -.425cm }
    \draw_path_moveto:n { -.425cm , 0cm }
    \draw_path_lineto:n { .425cm , 0cm }
    \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 30 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 30 } }
    \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 60 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 60 } }
    \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 120 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 120 } }
    \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 150 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 150 } }
    \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 210 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 210 } }
    \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 240 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 240 } }
    \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 300 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 300 } }
    \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 330 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 330 } }
}

\cs_new_protected:Npn \rpgicons_draw_shape_illusion: {
    \draw_path_moveto:n { 0cm , .225cm }
    \draw_path_arc:nnn { 90 } { 30 } { .45cm }
    \draw_path_arc:nnn { 330 } { 210 } { .45cm }
    \draw_path_arc:nnn { 150 } { 90 } { .45cm }
    \draw_path_moveto:n { ( 0cm , .225cm ) + ( \draw_point_polar:nn { .45cm } { 270 } ) }
    \draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 270 } }
    \draw_path_moveto:n { ( 0cm , .225cm ) + ( \draw_point_polar:nn { .45cm } { 240 } ) }
    \draw_path_lineto:n { \draw_point_polar:nn { .4cm} { 225 } }
    \draw_path_moveto:n { ( 0cm , .225cm ) + ( \draw_point_polar:nn { .45cm } { 300 } ) }
    \draw_path_lineto:n { \draw_point_polar:nn { .4cm} { 315 } }
    \draw_path_circle:nn { 0cm , .075cm } { .15cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_necromancy: {
    \draw_path_moveto:n { \draw_point_polar:nn { .25cm} { 210 } }
    \draw_path_arc:nnn { 210 } { -30 } { .25cm }
    \draw_path_arc:nnn { 150 } { 390 } { .1cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .25cm} { 210 } }
    \draw_path_arc:nnn { 390 } { 150 } { .1cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_transmutation: {
    \draw_path_moveto:n { -.25cm , .35cm }
    \draw_path_lineto:n { -.25cm , -.35cm }
    \draw_path_moveto:n { 0cm , .35cm }
    \draw_path_lineto:n { 0cm , -.35cm }
    \draw_path_moveto:n { -.425cm , .35cm }
    \draw_path_lineto:n { .15cm , .35cm }
    \draw_path_arc:nnn { 90 } { -45 } { .1cm }
    \draw_path_arc:nnn { 135 } { 360 } { .1cm }
}

% DAMAGES

\cs_new_protected:Npn \rpgicons_draw_shape_acid: {
    \draw_path_moveto:n { ( -.175cm , .05cm ) + ( \draw_point_polar:nn { .175 } { -20 } ) }
    \draw_path_arc:nnn { -20 } { 200 } { -.175cm }
    \draw_path_lineto:n { 0cm , .425cm }
    \draw_path_close:
    \draw_path_moveto:n {
      \draw_point_intersect_lines:nnnn
        { ( 0cm , -.175cm ) + ( \draw_point_polar:nn { -.25cm } { 20 } ) }
        { ( 0cm , -.175cm ) + ( \draw_point_polar:nn { -.25cm } { 160 } ) }
        { -.425cm , -.425cm } { -.425cm , .425cm }
    }
    \draw_path_lineto:n { ( 0cm , -.175cm ) + ( \draw_point_polar:nn { -.25cm } { 20 } ) }
    \draw_path_arc:nnn { 20 } { 160 } { -.25cm }
    \draw_path_lineto:n {
      \draw_point_intersect_lines:nnnn
        { ( 0cm , -.175cm ) + ( \draw_point_polar:nn { -.25cm } { 20 } ) }
        { ( 0cm , -.175cm ) + ( \draw_point_polar:nn { -.25cm } { 160 } ) }
        { .425cm , -.425cm } { .425cm , .425cm }
    }
}

\cs_new_protected:Npn \rpgicons_draw_shape_bludgeoning: {
    \draw_path_moveto:n { -.2cm , .225cm }
    \draw_path_lineto:n { 0cm , .425cm }
    \draw_path_lineto:n { .425cm , 0cm }
    \draw_path_lineto:n { .225cm , -.2cm }
    \draw_path_close:
    \draw_path_moveto:n { .05cm , -.025cm }
    \draw_path_lineto:n { -.35cm , -.425cm }
    \draw_path_lineto:n { -.425cm , -.35cm }
    \draw_path_lineto:n { -.025cm , .05cm }
    \draw_path_moveto:n { .2375cm , .1875cm }
    \draw_path_arc:nnn { 135 } { 315 } { -.05cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_cold: {
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 90 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 270 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .35cm} { 110 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .25cm} { 90 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 70 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .35cm} { 250 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .25cm} { 270 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 290 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 30 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 210 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .35cm} { 50 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .25cm} { 30 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 10 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .35cm} { 190 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .25cm} { 210 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 230 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 150 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 330 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .35cm} { 130 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .25cm} { 150 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 170 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .35cm} { 310 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .25cm} { 330 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 350 } }
}

\cs_new_protected:Npn \rpgicons_draw_shape_fire: {
    \draw_path_moveto:n { .15cm , -.425cm }
    \draw_path_arc:nnnn { -60 } { 0 } { .45cm } { .375cm }
    \draw_path_curveto:nnn { .375cm , .15cm } { .15cm , .375cm } { -.05cm , .425cm }
    \draw_path_moveto:n { -.15cm , -.425cm }
    \draw_path_arc:nnnn { 240 } { 135 } { .45cm } { .35cm }
    \draw_path_curveto:nnn { -.15cm , .2cm } { 0cm , .25cm } { -.05cm , .425cm }
    \draw_path_moveto:n { .075cm , -.3cm }
    \draw_path_curveto:nnn { .2cm , -.2cm } { .2cm , -.05cm } { .05cm , .1cm }
    \draw_path_moveto:n { -.075cm , -.3cm }
    \draw_path_arc:nnnn { 220 } { 150 } { .35cm } { .2cm }
    \draw_path_curveto:nnn { 0cm , -.2cm } { .05cm , -.1cm } { .05cm , .1cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_force: {
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 90 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 120 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 150 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 180 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 210 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 240 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 270 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 300 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 330 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 0 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 30 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 60 } }
    \draw_path_close:
}

\cs_new_protected:Npn \rpgicons_draw_shape_lightning: {
    \draw_path_moveto:n { 0cm , .425cm }
    \draw_path_lineto:n { -.25cm , -.15cm }
    \draw_path_lineto:n { .25cm , .15cm }
    \draw_path_lineto:n { 0cm , -.425cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_necrotic: {
    \draw_path_moveto:n { -.35cm , -.425cm }
    \draw_path_lineto:n { -.35cm , .075cm }
    \draw_path_arc:nnn { 180 } { 0 } { .35cm }
    \draw_path_lineto:n { .35cm , -.425cm }
    \draw_path_close:
    \draw_path_moveto:n { 0cm , -.2cm }
    \draw_path_lineto:n { 0cm , .25cm }
    \draw_path_moveto:n { -.15cm , .1cm }
    \draw_path_lineto:n { .15cm , .1cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_necrotic_i: {
    \draw_path_moveto:n { -.35cm , -.425cm }
    \draw_path_lineto:n { -.35cm , .075cm }
    \draw_path_arc:nnn { 180 } { 0 } { .35cm }
    \draw_path_lineto:n { .35cm , -.425cm }
    \draw_path_close:
    \draw_path_moveto:n { -.1cm , -.075cm }
    \draw_path_lineto:n { .1cm , -.075cm }
    \draw_path_moveto:n { -.15cm , .125cm }
    \draw_path_lineto:n { .15cm , .125cm }
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_necrotic_alt: \rpgicons_draw_shape_necrotic_i:
% ===

\cs_new_protected:Npn \rpgicons_draw_shape_piercing: {
    \draw_path_moveto:n { -.425cm , .075cm }
    \draw_path_lineto:n { .3cm , .075cm }
    \draw_path_lineto:n { .425cm , 0cm }
    \draw_path_lineto:n { .3cm , -.075cm }
    \draw_path_lineto:n { -.425cm , -.075cm }
    \draw_path_moveto:n { .25cm , .2cm }
    \draw_path_lineto:n { -.05cm , .35cm }
    \draw_path_moveto:n { .25cm , -.2cm }
    \draw_path_lineto:n { -.05cm , -.35cm }
    \draw_path_moveto:n { .425cm , .15cm }
    \draw_path_lineto:n { .25cm , .425cm }
    \draw_path_moveto:n { .425cm , -.15cm }
    \draw_path_lineto:n { .25cm , -.425cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_poison: {
    \draw_path_moveto:n { ( 0cm , .175cm ) + ( \draw_point_polar:nn { .25cm } { -40 } ) }
    \draw_path_arc:nnn { -40 } { 220 } { .25cm }
    \draw_path_lineto:n { -.15cm , -.1cm }
    \draw_path_lineto:n { .15cm , -.1cm }
    \draw_path_close:
    \draw_path_circle:nn { -.1cm , .15cm } { .05cm }
    \draw_path_circle:nn { .1cm , .15cm } { .05cm }
    \draw_path_moveto:n { .425cm , -.2cm }
    \draw_path_lineto:n { -.425cm , -.425cm }
    \draw_path_moveto:n { -.425cm , -.2cm }
    \draw_path_lineto:n { .425cm , -.425cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_psychic: {
    \draw_path_moveto:n { .075cm , .4cm }
    \draw_path_arc:nnn { 90 } { 180 } { .425cm }
    \draw_path_arc:nnn { 180 } { 270 } { .375cm }
    \draw_path_arc:nnn { 270 } { 360 } { .325cm }
    \draw_path_arc:nnn { 0 } { 90 } { .275cm }
    \draw_path_arc:nnn { 90 } { 180 } { .225cm }
    \draw_path_arc:nnn { 180 } { 270 } { .175cm }
    \draw_path_arc:nnn { 270 } { 360 } { .125cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_radiant: {
    \draw_path_circle:nn { 0cm , 0cm } { .225cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 15 } }
    \draw_path_arc:nnn { 15 } { 45 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 75 } }
    \draw_path_arc:nnn { 75 } { 105 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 135 } }
    \draw_path_arc:nnn { 135 } { 165 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 195 } }
    \draw_path_arc:nnn { 195 } { 225 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 255 } }
    \draw_path_arc:nnn { 255 } { 285 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 315 } }
    \draw_path_arc:nnn { 315 } { 345 } { .425cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_slashing: {
    \draw_path_moveto:n { -.15cm , .225cm }
    \draw_path_lineto:n { -.275cm , .35cm }
    \draw_path_arc:nnn { 0 } { 240 } { .075cm }
    \draw_path_lineto:n { -.35cm , .275cm }
    \draw_path_lineto:n { -.225cm , .15cm }
    \draw_path_lineto:n { -.425cm , -.05cm }
    \draw_path_lineto:n { -.35cm , -.125cm }
    \draw_path_lineto:n { .125cm , .35cm }
    \draw_path_lineto:n { .05cm , .425cm }
    \draw_path_close:
    \draw_path_moveto:n { -.2cm , .025cm }
    \draw_path_lineto:n { .225cm , -.425cm }
    \draw_path_lineto:n { .425cm , -.425cm }
    \draw_path_lineto:n { .425cm , -.225cm }
    \draw_path_lineto:n { -.025cm , .2cm }
    \draw_path_moveto:n { .325cm , -.325cm }
    \draw_path_lineto:n { 0cm , 0cm }
    \draw_path_moveto:n { .425cm , .3cm }
    \draw_path_lineto:n { .425cm , 0cm }
    \draw_path_moveto:n { .275cm , .425cm }
    \draw_path_lineto:n { .275cm , .1cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_thunder: {
    \draw_path_moveto:n { .225cm , -.075cm }
    \draw_path_arc:nnn { -90 } { 120 } { .2cm }
    \draw_path_arc:nnn { 30 } { 180 } { .225cm }
    \draw_path_lineto:n { -.3cm , .125cm + cosd( 30 ) * .2cm - sind( 30 ) * .225cm }
    \draw_path_arc:nnn { 90 } { 180 } { .125cm }
    \draw_path_lineto:n { -.425cm , .05cm }
    \draw_path_arc:nnn { 180 } { 270 } { .125cm }
    \draw_path_close:
    \draw_path_moveto:n { -.1cm , -.225cm }
    \draw_path_arc:nnn { 240 } { 300 } { .3cm }
    \draw_path_moveto:n { -.2cm , -.35cm }
    \draw_path_arc:nnn { 240 } { 300 } { .5cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_healing: {
     \draw_path_moveto:n { 0cm , .125cm }
    \draw_path_arc:nnn { 0 } { 225 } { .2cm }
    \draw_path_lineto:n { 0cm , -.375cm }
    \draw_path_moveto:n { 0cm , .125cm }
    \draw_path_arc:nnn { 180 } { -45 } { .2cm }
    \draw_path_lineto:n { 0cm , -.375cm }
}

% ATTACKS

\cs_new_protected:Npn \rpgicons_draw_shape_melee: {
    \draw_path_moveto:n { -.15cm , -.225cm }
    \draw_path_lineto:n { -.275cm , -.35cm }
    \draw_path_arc:nnn { 360 } { 90 } { .075cm }
    \draw_path_lineto:n { -.35cm , -.275cm }
    \draw_path_lineto:n { -.225cm , -.15cm }
    \draw_path_lineto:n { -.425cm , .05cm }
    \draw_path_lineto:n { -.35cm , .125cm }
    \draw_path_lineto:n { .125cm , -.35cm }
    \draw_path_lineto:n { .05cm , -.425cm }
    \draw_path_close:
    \draw_path_moveto:n { -.2cm , -.025cm }
    \draw_path_lineto:n { .225cm , .425cm }
    \draw_path_lineto:n { .425cm , .425cm }
    \draw_path_lineto:n { .425cm , .225cm }
    \draw_path_lineto:n { -.025cm , -.2cm }
    \draw_path_moveto:n { .325cm , .325cm }
    \draw_path_lineto:n { 0cm , 0cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_ranged: {
    \draw_path_moveto:n { 0cm , 0cm }
    \draw_path_lineto:n { 0cm , -.225cm }
    \draw_path_arc:nnn { 0 } { -30 } { .4cm }
    \draw_path_arc:nnn { -45 } { 0 } { .6cm }
    \draw_path_moveto:n { 0cm , 0cm }
    \draw_path_lineto:n { 0cm , .225cm }
    \draw_path_arc:nnn { 0 } { 30 } { .4cm }
    \draw_path_arc:nnn { 45 } { 0 } { .6cm }
    \draw_path_moveto:n { -.425cm , 0cm }
    \draw_path_lineto:n { .425cm , 0cm }
    \draw_path_moveto:n { .275cm , .1cm }
    \draw_path_lineto:n { .425cm , 0cm }
    \draw_path_lineto:n { .275cm , -.1cm }
    \draw_path_moveto:n { ( -.4cm , -.225cm ) + ( \draw_point_polar:nn { .4cm } { -20 } ) }
    \draw_path_lineto:n { -.425cm , 0cm }
    \draw_path_lineto:n { ( -.4cm , .225cm ) + ( \draw_point_polar:nn { .4cm } { 20 } ) }
}

\cs_new_protected:Npn \rpgicons_draw_shape_magic: {
    \draw_path_moveto:n { -.225cm , -.425cm }
    \draw_path_lineto:n { -.425cm , -.225cm }
    \draw_path_lineto:n { -.3cm , -.1cm }
    \draw_path_lineto:n { -.3cm , .125cm }
    \draw_path_lineto:n { 0cm , .425cm }
    \draw_path_arc:nnn { 405 } { 315 } { .1cm }
    \draw_path_lineto:n { -.15cm , .1cm }
    \draw_path_lineto:n { -.15cm , -.05cm }
    \draw_path_arc:nnn { 180 } { 360 } { .05cm }
    \draw_path_lineto:n { -.05cm , 0cm }
    \draw_path_arc:nnn { 180 } { 90 } { .1cm }
    \draw_path_lineto:n { .05cm , -.1cm }
    \draw_path_arc:nnn { 360 } { 315 } { .125cm }
    \draw_path_close:
    \draw_path_moveto:n { -.225cm , -.25cm }
    \draw_path_lineto:n { -.325cm , -.15cm }
    \draw_path_moveto:n { .2cm , .2cm }
    \draw_path_arc:nnn { 180 } { 360 } { .1cm }
    \draw_path_arc:nnn { 0 } { 45 } { .1cm }
    \draw_path_arc:nnn { 225 } { 180 } { .2cm }
    \draw_path_circle:nn { .3cm , -.075cm } { .075cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_singlehanded: {
    \draw_path_moveto:n { -.25cm , -.425cm }
    \draw_path_lineto:n { .025cm , -.425cm }
    \draw_path_lineto:n { .325cm , -.125cm }
    \draw_path_arc:nnn { 45 } { 135 } { .1cm }
    \draw_path_lineto:n { 0cm , -.275cm }
    \draw_path_lineto:n { -.15cm , -.275cm }
    \draw_path_arc:nnn { 270 } { 90 } { .05cm }
    \draw_path_lineto:n { -.1cm , -.175cm }
    \draw_path_arc:nnn { 270 } { 360 } { .1cm }
    \draw_path_lineto:n { -.2cm , -.075cm }
    \draw_path_arc:nnn { 90 } { 135 } { .125cm }
    \draw_path_lineto:n { -.425cm , -.25cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_doublehanded: {
    \draw_path_moveto:n { -.25cm , -.425cm }
    \draw_path_lineto:n { .025cm , -.425cm }
    \draw_path_lineto:n { .325cm , -.125cm }
    \draw_path_arc:nnn { 45 } { 135 } { .1cm }
    \draw_path_lineto:n { 0cm , -.275cm }
    \draw_path_lineto:n { -.15cm , -.275cm }
    \draw_path_arc:nnn { 270 } { 90 } { .05cm }
    \draw_path_lineto:n { -.1cm , -.175cm }
    \draw_path_arc:nnn { 270 } { 360 } { .1cm }
    \draw_path_lineto:n { -.2cm , -.075cm }
    \draw_path_arc:nnn { 90 } { 135 } { .125cm }
    \draw_path_lineto:n { -.425cm , -.25cm }
    \draw_path_moveto:n { .25cm , .425cm }
    \draw_path_lineto:n { -.025cm , .425cm }
    \draw_path_lineto:n { -.325cm , .125cm }
    \draw_path_arc:nnn { 225 } { 315 } { .1cm }
    \draw_path_lineto:n { 0cm , .275cm }
    \draw_path_lineto:n { .15cm , .275cm }
    \draw_path_arc:nnn { 450 } { 270 } { .05cm }
    \draw_path_lineto:n { .1cm , .175cm }
    \draw_path_arc:nnn { 90 } { 180 } { .1cm }
    \draw_path_lineto:n { .2cm , .075cm }
    \draw_path_arc:nnn { 270 } { 315 } { .125cm }
    \draw_path_lineto:n { .425cm , .25cm }
}

% CONDITIONS

\cs_new_protected:Npn \rpgicons_draw_shape_buff: {
    \draw_path_moveto:n { -.425cm , -.225cm }
    \draw_path_lineto:n { -.225cm , -.425cm }
    \draw_path_lineto:n { -.1cm , -.3cm }
    \draw_path_lineto:n { .125cm , -.3cm }
    \draw_path_lineto:n { .425cm , 0cm }
    \draw_path_arc:nnn { 45 } { 135 } { .1cm }
    \draw_path_lineto:n { .1cm , -.15cm }
    \draw_path_lineto:n { -.05cm , -.15cm }
    \draw_path_arc:nnn { 270 } { 90 } { .05cm }
    \draw_path_lineto:n { 0cm , -.05cm }
    \draw_path_arc:nnn { 270 } { 360 } { .1cm }
    \draw_path_lineto:n { -.1cm , .05cm }
    \draw_path_arc:nnn { 90 } { 135 } { .125cm }
    \draw_path_close:
    \draw_path_moveto:n { -.25cm , -.225cm }
    \draw_path_lineto:n { -.15cm , -.325cm }
    \draw_path_moveto:n { 0cm , .425cm }
    \draw_path_lineto:n { .25cm , .425cm }
    \draw_path_lineto:n { .25cm , .275cm }
    \draw_path_arc:nnn { 360 } { 180 } { .125cm }
    \draw_path_close:
}

\cs_new_protected:Npn \rpgicons_draw_shape_blinded: {
    \draw_path_moveto:n { 0cm , .225cm }
    \draw_path_arc:nnn { 90 } { 30 } { .45cm }
    \draw_path_arc:nnn { 330 } { 210 } { .45cm }
    \draw_path_arc:nnn { 150 } { 90 } { .45cm }
    \draw_path_circle:nn { 0cm , 0cm } { .15cm }
    \draw_path_moveto:n { -.425cm , -.425cm }
    \draw_path_lineto:n { -.25cm , -.25cm }
    \draw_path_moveto:n { 0cm , 0cm }
    \draw_path_lineto:n { .425cm , .425cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_charmed: {
    \draw_path_circle:nn { 0cm , 0cm } { .425cm }
    \draw_path_moveto:n { -.175cm , -.1cm }
    \draw_path_arc:nnn { 180 } { 360 } { .175cm }
    \draw_path_close:
    \draw_path_moveto:n { -.175cm , .15cm }
    \draw_path_arc:nnn { 0 } { 225 } { .0625cm }
    \draw_path_lineto:n { -.175cm , 0cm }
    \draw_path_moveto:n { -.175cm , .15cm }
    \draw_path_arc:nnn { 180 } { -45 } { .0625cm }
    \draw_path_lineto:n { -.175cm , 0cm }
    \draw_path_moveto:n { .175cm , .15cm }
    \draw_path_arc:nnn { 0 } { 225 } { .0625cm }
    \draw_path_lineto:n { .175cm , 0cm }
    \draw_path_moveto:n { .175cm , .15cm }
    \draw_path_arc:nnn { 180 } { -45 } { .0625cm }
    \draw_path_lineto:n { .175cm , 0cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_deafened: {
    \draw_path_moveto:n { -.175cm , -.275cm }
    \draw_path_arc:nnn { 180 } { 360 } { .15cm }
    \draw_path_lineto:n { .125cm , -.225cm }
    \draw_path_arc:nnn { 180 } { 135 } { .25cm }
    \draw_path_arc:nnn { 315 } { 360 } { .25cm }
    \draw_path_arc:nnn { 0 } { 180 } { .275cm }
    \draw_path_moveto:n { -.15cm , -.1cm }
    \draw_path_arc:nnn { -90 } { 90 } { .075cm }
    \draw_path_lineto:n { -.15cm , .125cm }
    \draw_path_arc:nnn { 180 } { 45 } { .15cm }
    \draw_path_moveto:n { -.425cm , -.425cm }
    \draw_path_lineto:n { -.2cm , -.2cm }
    \draw_path_moveto:n { 0cm , 0cm }
    \draw_path_lineto:n { .425cm , .425cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_exhausted: {
    \draw_path_circle:nn { 0cm , 0cm } { .425cm }
    \draw_path_moveto:n { -.175cm , -.225cm }
    \draw_path_arc:nnn { 180 } { 0 } { .175cm }
    \draw_path_close:
    \draw_path_moveto:n { .275cm , .15cm }
    \draw_path_arc:nnn { 180 } { 0 } { -.1cm }
    \draw_path_moveto:n { -.075cm , .15cm }
    \draw_path_arc:nnn { 180 } { 0 } { -.1cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_frightened: {
    \draw_path_circle:nn { 0cm , 0cm } { .425cm }
    \draw_path_moveto:n { -.175cm , -.225cm }
    \draw_path_arc:nnn { 180 } { 0 } { .175cm }
    \draw_path_close:
    \draw_path_circle:nn { -.175cm , .125cm } { .075cm }
    \draw_path_circle:nn { .175cm , .125cm } { .075cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_grappled: {
    \draw_path_moveto:n { -.25cm , .3cm }
    \draw_path_arc:nnn { 90 } { -90 } { .075cm }
    \draw_path_lineto:n { -.35cm , .15cm }
    \draw_path_arc:nnn { 270 } { 90 } { .075cm }
    \draw_path_close:
    \draw_path_moveto:n { -.2cm , .15cm }
    \draw_path_arc:nnn { 90 } { -90 } { .075cm }
    \draw_path_lineto:n { -.35cm , 0cm }
    \draw_path_arc:nnn { 270 } { 90 } { .075cm }
    \draw_path_close:
    \draw_path_moveto:n { -.2cm , 0cm }
    \draw_path_arc:nnn { 90 } { -90 } { .075cm }
    \draw_path_lineto:n { -.35cm , -.15cm }
    \draw_path_arc:nnn { 270 } { 90 } { .075cm }
    \draw_path_close:
    \draw_path_moveto:n { -.2cm , -.15cm }
    \draw_path_arc:nnn { 90 } { -90 } { .075cm }
    \draw_path_lineto:n { -.3cm , -.3cm }
    \draw_path_arc:nnn { 270 } { 90 } { .075cm }
    \draw_path_close:
    \draw_path_moveto:n { .425cm , .05cm }
    \draw_path_arc:nnn { 0 } { 90 } { .25cm }
    \draw_path_lineto:n { -.05cm , .3cm }
    \draw_path_arc:nnn { 180 } { 270 } { .15cm }
    \draw_path_lineto:n { .175cm , .15cm }
    \draw_path_lineto:n { .175cm , -.425cm }
    \draw_path_moveto:n { .175cm , -.275cm }
    \draw_path_lineto:n { .425cm , -.275cm }
    \draw_path_moveto:n { .175cm , .3cm }
    \draw_path_lineto:n { .175cm , .425cm }
    \draw_path_moveto:n { -.3cm , .3cm }
    \draw_path_lineto:n { -.3cm , .425cm }
    \draw_path_moveto:n { -.3cm , -.3cm }
    \draw_path_lineto:n { -.3cm , -.425cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_incapacitated: {
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 30 } }
    \draw_path_arc:nnn { 270 } { 210 } { .425cm }
    \draw_path_lineto:n { \draw_point_polar:nn { -.425cm} { 90 } }
    \draw_path_arc:nnn { 30 } { 90 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 90 } }
    \draw_path_arc:nnn { 330 } { 270 } { .425cm }
    \draw_path_lineto:n { \draw_point_polar:nn { -.425cm} { 150 } }
    \draw_path_arc:nnn { 90 } { 150 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 150 } }
    \draw_path_arc:nnn { 30 } { -30 } { .425cm }
    \draw_path_lineto:n { \draw_point_polar:nn { -.425cm} { 210 } }
    \draw_path_arc:nnn { 150 } { 210 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .25cm} { 30 } }
    \draw_path_arc:nnn { 270 } { 210 } { .25cm }
    \draw_path_arc:nnn { 330 } { 270 } { .25cm }
    \draw_path_arc:nnn { 30 } { -30 } { .25cm }
    \draw_path_arc:nnn { 90 } { 30 } { .25cm }
    \draw_path_arc:nnn { 150 } { 90 } { .25cm }
    \draw_path_arc:nnn { 210 } { 150 } { .25cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_invisible: {
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { -15 } }
    \draw_path_arc:nnn { -15 } { 15 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 30 } }
    \draw_path_arc:nnn { 30 } { 60 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 75 } }
    \draw_path_arc:nnn { 75 } { 105 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 120 } }
    \draw_path_arc:nnn { 120 } { 150 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 165 } }
    \draw_path_arc:nnn { 165 } { 195 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 210 } }
    \draw_path_arc:nnn { 210 } { 240 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 255 } }
    \draw_path_arc:nnn { 255 } { 285 } { .425cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 300 } }
    \draw_path_arc:nnn { 300 } { 330 } { .425cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_paralyzed: {
    \draw_path_circle:nn { 0cm , 0cm } { .425cm }
    \draw_path_moveto:n { -.175cm , -.225cm }
    \draw_path_arc:nnn { 180 } { 0 } { .175cm }
    \draw_path_close:
    \draw_path_moveto:n { .25cm , .2cm }
    \draw_path_lineto:n { .1cm , .05cm }
    \draw_path_moveto:n { .25cm , .05cm }
    \draw_path_lineto:n { .1cm , .2cm }
    \draw_path_moveto:n { -.25cm , .2cm }
    \draw_path_lineto:n { -.1cm , .05cm }
    \draw_path_moveto:n { -.25cm , .05cm }
    \draw_path_lineto:n { -.1cm , .2cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_petrified: {
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 45 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 100 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 135 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 190 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 230 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 250 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 300 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 350 } }
    \draw_path_close:
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 135 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 130 } }
    \draw_path_lineto:n { -.25cm , .075cm }
    \draw_path_lineto:n { \draw_point_polar:nn { .2cm} { 220 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .325cm} { 240 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 300 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .3cm} { 330 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .225cm} { 350 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 45 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .3cm} { 60 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 130 } }
    \draw_path_moveto:n { -.15cm , -.175cm }
    \draw_path_lineto:n { .075cm , -.15cm }
    \draw_path_lineto:n { .125cm , -.2cm }
    \draw_path_moveto:n { -.25cm , .075cm }
    \draw_path_lineto:n { -.1cm , .1cm }
    \draw_path_moveto:n { .25cm , .075cm }
    \draw_path_lineto:n { .1cm , .1cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_poisoned: {
    \draw_path_circle:nn { 0cm , 0cm } { .425cm }
    \draw_path_moveto:n { -.15cm , -.2cm }
    \draw_path_lineto:n { -.075cm , -.125cm }
    \draw_path_lineto:n { 0cm , -.2cm }
    \draw_path_lineto:n { .075cm , -.125cm }
    \draw_path_lineto:n { .15cm , -.2cm }
    \draw_path_moveto:n { .25cm , .175cm }
    \draw_path_lineto:n { .1cm , .1cm }
    \draw_path_lineto:n { .25cm , .025cm }
    \draw_path_moveto:n { -.25cm , .175cm }
    \draw_path_lineto:n { -.1cm , .1cm }
    \draw_path_lineto:n { -.25cm , .025cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_prone: {
    \draw_path_circle:nn { .2cm , -.125cm } { .125cm }
    \draw_path_moveto:n { -.425cm , 0cm }
    \draw_path_lineto:n { -.15cm , 0cm }
    \draw_path_arc:nnn { 90 } { -90 } { .125cm }
    \draw_path_lineto:n { -.425cm , -.25cm }
    \draw_path_moveto:n { .225cm , .15cm }
    \draw_path_arc:nnn { 270 } { 360 } { .1cm }
    \draw_path_arc:nnn { 180 } { 270 } { .1cm }
    \draw_path_arc:nnn { 90 } { 180 } { .1cm }
    \draw_path_arc:nnn { 0 } { 90 } { .1cm }
    \draw_path_moveto:n { 0cm , .25cm }
    \draw_path_arc:nnn { 270 } { 360 } { .1cm }
    \draw_path_arc:nnn { 180 } { 270 } { .1cm }
    \draw_path_arc:nnn { 90 } { 180 } { .1cm }
    \draw_path_arc:nnn { 0 } { 90 } { .1cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_restrained: {
    \draw_path_moveto:n { -.075cm , -.225cm }
    \draw_path_lineto:n { -.075cm , .225cm }
    \draw_path_arc:nnn { 90 } { 180 } { .125cm }
    \draw_path_lineto:n { -.2cm , 0cm }
    \draw_path_arc:nnn { 270 } { 180 } { .1cm }
    \draw_path_lineto:n { -.3cm , .3cm }
    \draw_path_arc:nnn { 0 } { 90 } { .125cm }
    \draw_path_lineto:n { -.425cm , -.075cm }
    \draw_path_arc:nnn { 180 } { 235 } { .1cm }
    \draw_path_lineto:n { -.3cm , -.225cm }
    \draw_path_moveto:n { .075cm , -.225cm }
    \draw_path_lineto:n { .075cm , .225cm }
    \draw_path_arc:nnn { 90 } { 0 } { .125cm }
    \draw_path_lineto:n { .2cm , 0cm }
    \draw_path_arc:nnn { -90 } { 0 } { .1cm }
    \draw_path_lineto:n { .3cm , .3cm }
    \draw_path_arc:nnn { 180 } { 90 } { .125cm }
    \draw_path_lineto:n { .425cm , -.075cm }
    \draw_path_arc:nnn { 360 } { 330 } { .1cm }
    \draw_path_lineto:n { .3cm , -.225cm }
    \draw_path_moveto:n { .35cm , -.225cm }
    \draw_path_arc:nnn { 90 } { -90 } { .05cm }
    \draw_path_lineto:n { -.35cm , -.325cm }
    \draw_path_arc:nnn { 270 } { 90 } { .05cm }
    \draw_path_close:
    \draw_path_moveto:n { .35cm , -.325cm }
    \draw_path_arc:nnn { 90 } { -90 } { .05cm }
    \draw_path_lineto:n { -.35cm , -.425cm }
    \draw_path_arc:nnn { 270 } { 90 } { .05cm }
    \draw_path_close:
}

\cs_new_protected:Npn \rpgicons_draw_shape_stunned: {
    \draw_path_circle:nn { 0cm , 0cm } { .425cm }
    \draw_path_ellipse:nnn { 0cm , -.175cm } { 0cm , .1cm } { .175cm , 0cm }
    \draw_path_moveto:n { ( -.175cm , .125cm ) + ( \draw_point_polar:nn { .125cm } { 90 } ) }
    \draw_path_lineto:n { ( -.175cm , .125cm ) + ( \draw_point_polar:nn { .05cm } { 126 } ) }
    \draw_path_lineto:n { ( -.175cm , .125cm ) + ( \draw_point_polar:nn { .125cm } { 162 } ) }
    \draw_path_lineto:n { ( -.175cm , .125cm ) + ( \draw_point_polar:nn { .05cm } { 198 } ) }
    \draw_path_lineto:n { ( -.175cm , .125cm ) + ( \draw_point_polar:nn { .125cm } { 234 } ) }
    \draw_path_lineto:n { ( -.175cm , .125cm ) + ( \draw_point_polar:nn { .05cm } { 270 } ) }
    \draw_path_lineto:n { ( -.175cm , .125cm ) + ( \draw_point_polar:nn { .125cm } { 306 } ) }
    \draw_path_lineto:n { ( -.175cm , .125cm ) + ( \draw_point_polar:nn { .05cm } { 342 } ) }
    \draw_path_lineto:n { ( -.175cm , .125cm ) + ( \draw_point_polar:nn { .125cm } { 18 } ) }
    \draw_path_lineto:n { ( -.175cm , .125cm ) + ( \draw_point_polar:nn { .05cm } { 54 } ) }
    \draw_path_close:
    \draw_path_moveto:n { ( .175cm , .125cm ) + ( \draw_point_polar:nn { .125cm } { 90 } ) }
    \draw_path_lineto:n { ( .175cm , .125cm ) + ( \draw_point_polar:nn { .05cm } { 126 } ) }
    \draw_path_lineto:n { ( .175cm , .125cm ) + ( \draw_point_polar:nn { .125cm } { 162 } ) }
    \draw_path_lineto:n { ( .175cm , .125cm ) + ( \draw_point_polar:nn { .05cm } { 198 } ) }
    \draw_path_lineto:n { ( .175cm , .125cm ) + ( \draw_point_polar:nn { .125cm } { 234 } ) }
    \draw_path_lineto:n { ( .175cm , .125cm ) + ( \draw_point_polar:nn { .05cm } { 270 } ) }
    \draw_path_lineto:n { ( .175cm , .125cm ) + ( \draw_point_polar:nn { .125cm } { 306 } ) }
    \draw_path_lineto:n { ( .175cm , .125cm ) + ( \draw_point_polar:nn { .05cm } { 342 } ) }
    \draw_path_lineto:n { ( .175cm , .125cm ) + ( \draw_point_polar:nn { .125cm } { 18 } ) }
    \draw_path_lineto:n { ( .175cm , .125cm ) + ( \draw_point_polar:nn { .05cm } { 54 } ) }
    \draw_path_close:
}

\cs_new_protected:Npn \rpgicons_draw_shape_unconscious: {
    \draw_path_moveto:n { 0cm , .15cm }
    \draw_path_arc:nnnn { 90 } { -30 } { .425cm } { .15cm }
    \draw_path_moveto:n { 0cm , -.15cm }
    \draw_path_arc:nnnn { 270 } { 150 } { .425cm } { .15cm }
    \draw_path_moveto:n { -.35cm , .15cm }
    \draw_path_arc:nnn { 270 } { 360 } { .125cm }
    \draw_path_arc:nnn { 180 } { 270 } { .125cm }
    \draw_path_arc:nnn { 90 } { 180 } { .125cm }
    \draw_path_arc:nnn { 0 } { 90 } { .125cm }
    \draw_path_moveto:n { .1cm , -.15cm }
    \draw_path_arc:nnn { 270 } { 360 } { .125cm }
    \draw_path_arc:nnn { 180 } { 270 } { .125cm }
    \draw_path_arc:nnn { 90 } { 180 } { .125cm }
    \draw_path_arc:nnn { 0 } { 90 } { .125cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_hearing: {
    \draw_path_moveto:n { -.175cm , -.275cm }
    \draw_path_arc:nnn { 180 } { 360 } { .15cm }
    \draw_path_lineto:n { .125cm , -.225cm }
    \draw_path_arc:nnn { 180 } { 135 } { .25cm }
    \draw_path_arc:nnn { 315 } { 360 } { .25cm }
    \draw_path_arc:nnn { 0 } { 180 } { .275cm }
    \draw_path_moveto:n { -.15cm , -.1cm }
    \draw_path_arc:nnn { -90 } { 90 } { .075cm }
    \draw_path_lineto:n { -.15cm , .125cm }
    \draw_path_arc:nnn { 180 } { 45 } { .15cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_seeing: {
    \draw_path_moveto:n { 0cm , .225cm }
    \draw_path_arc:nnn { 90 } { 30 } { .45cm }
    \draw_path_arc:nnn { 330 } { 210 } { .45cm }
    \draw_path_arc:nnn { 150 } { 90 } { .45cm }
    \draw_path_circle:nn { 0cm , 0cm } { .15cm }
}

% CLASS

\cs_new_protected:Npn \rpgicons_draw_shape_artificer: {
    \draw_path_moveto:n { -.05cm , .3cm }
    \draw_path_lineto:n { -.1cm , .425cm }
    \draw_path_lineto:n { .1cm , .425cm }
    \draw_path_lineto:n { .05cm , .3cm }
    \draw_path_moveto:n { -.15cm , .3cm }
    \draw_path_lineto:n { .15cm , .3cm }
    \draw_path_moveto:n { -.1cm , .3cm }
    \draw_path_lineto:n { -.1cm , .15cm }
    \draw_path_corner_arc:nn { .05cm } { .05cm }
    \draw_path_lineto:n { -.425cm , -.425cm }
    \draw_path_lineto:n { .425cm , -.425cm }
    \draw_path_corner_arc:nn { 0cm } { 0cm }
    \draw_path_lineto:n { .1cm , .15cm }
    \draw_path_lineto:n { .1cm , .3cm }
    \draw_path_moveto:n { -.125cm , -.1cm }
    \draw_path_lineto:n { .125cm , -.1cm }
    \draw_path_lineto:n { .1cm , -.25cm }
    \draw_path_lineto:n { -.1cm , -.25cm }
    \draw_path_close:
}

\cs_new_protected:Npn \rpgicons_draw_shape_artificer_i: {
    \draw_path_moveto:n { ( -.075cm , .15cm ) + ( \draw_point_polar:nn { .275cm } { 350 } ) }
    \draw_path_arc:nnn { 350 } { acosd ( .275cm / .5cm ) } { .275cm }
    \draw_path_lineto:n { .425cm , .15cm }
    \draw_path_lineto:n { .375cm , .05cm }
    \draw_path_close:
    \draw_path_moveto:n { -.075cm , -.125cm }
    \draw_path_lineto:n { -.075cm , -.425cm }
    \draw_path_moveto:n { .275cm , -.425cm }
    \draw_path_lineto:n { ( -.075cm , .15cm ) + ( \draw_point_polar:nn { .275cm } { 330 } ) }
    \draw_path_lineto:n { ( -.075cm , .15cm ) + ( \draw_point_polar:nn { .275cm } { 210 } ) }
    \draw_path_lineto:n { -.425cm , -.425cm }
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_artificer_alt: \rpgicons_draw_shape_artificer_i:
% ===

\cs_new_protected:Npn \rpgicons_draw_shape_barbarian: {
    \draw_path_moveto:n { .05cm , -.375cm }
    \draw_path_arc:nnn { 360 } { 180 } { .05cm }
    \draw_path_lineto:n { -.05cm , .375cm }
    \draw_path_arc:nnn { 180 } { 0 } { .05cm }
    \draw_path_close:
    \draw_path_moveto:n { -.05cm , .25cm }
    \draw_path_lineto:n { .05cm , .15cm }
    \draw_path_moveto:n { -.05cm , .1cm }
    \draw_path_lineto:n { .05cm , 0cm }
    \draw_path_moveto:n { .05cm , .2cm }
    \draw_path_arc:nnn { 270 } { 360 } { .15cm }
    \draw_path_arc:nnn { 90 } { -90 } { .225cm }
    \draw_path_arc:nnn { 0 } { 90 } { .15cm }
    \draw_path_moveto:n { -.05cm , .2cm }
    \draw_path_arc:nnn { 270 } { 180 } { .15cm }
    \draw_path_arc:nnn { 90 } { 270 } { .225cm }
    \draw_path_arc:nnn { 180 } { 90 } { .15cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_bard: {
    \draw_path_circle:nn { -.35cm , .35cm } { .075cm }
    \draw_path_moveto:n { -.275cm , .35cm }
    \draw_path_arc:nnnn { 0 } { -45 } { sind(45)*.3cm } { sind(45)*.45cm }
    \draw_path_arc:nnnn { 135 } { 180 } { sind(45)*.3cm } { sind(45)*.45cm }
    \draw_path_lineto:n { -.4cm , -.2cm }
    \draw_path_arc:nnnn { 180 } { 360 } { .4cm } { .225cm }
    \draw_path_lineto:n { .4cm , -.1cm }
    \draw_path_arc:nnnn { 0 } { 45 } { sind(45)*.3cm } { sind(45)*.45cm }
    \draw_path_arc:nnnn { 225 } { 180 } { sind(45)*.3cm } { sind(45)*.45cm }
    \draw_path_circle:nn { .35cm , .35cm } { .075cm }
    \draw_path_moveto:n { -.275cm , .3cm }
    \draw_path_lineto:n { -.275cm , -.15cm }
    \draw_path_arc:nnnn { 180 } { 360 } { .275cm } { .1cm }
    \draw_path_lineto:n { .275cm , .3cm }
    \draw_path_moveto:n { -.275cm , .2cm }
    \draw_path_lineto:n { .275cm , .2cm }
    \draw_path_moveto:n { -.125cm , .3cm }
    \draw_path_lineto:n { -.125cm , -.225cm }
    \draw_path_moveto:n { 0cm , .3cm }
    \draw_path_lineto:n { 0cm , -.225cm }
    \draw_path_moveto:n { .125cm , .3cm }
    \draw_path_lineto:n { .125cm , -.225cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_cleric: {
    \draw_path_moveto:n { -.075cm , -.425cm }
    \draw_path_lineto:n { -.05cm , -.1cm }
    \draw_path_lineto:n { -.35cm , -.15cm }
    \draw_path_lineto:n { -.35cm , 0cm }
    \draw_path_lineto:n { -.1cm , 0cm }
    \draw_path_arc:nnnn { 240 } { -60 } { .2cm } { .225cm }
    \draw_path_lineto:n { .35cm , 0cm }
    \draw_path_lineto:n { .35cm , -.15cm }
    \draw_path_lineto:n { .05cm , -.1cm }
    \draw_path_lineto:n { .075cm , -.425cm }
    \draw_path_close:
    \draw_path_ellipse:nnn { 0cm , .2cm } { -.075cm , 0cm } { 0cm , -.125cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_cleric_i: {
    \int_step_inline:nnn { -1 } { 1 } {
        \draw_path_moveto:n { ##1 * .325cm - .05cm , -.05cm }
        \draw_path_lineto:n { ##1 * .325cm - .05cm , .175cm }
        \draw_path_lineto:n { ##1 * .325cm + .05cm , .175cm }
        \draw_path_lineto:n { ##1 * .325cm + .05cm , -.05cm }
        \draw_path_moveto:n { ##1 * .325cm - .05cm , .3cm }
        \draw_path_arc:nnn { 180 } { 405 } { .05cm }
        \draw_path_arc:nnn { 215 } { 180 } { .15cm }
        \draw_path_moveto:n { ##1 * .325cm - .1cm , -.05cm }
        \draw_path_lineto:n { ##1 * .325cm + .1cm , -.05cm }
        \draw_path_arc:nnn { 360 } { 180 } { .1cm }
    }
    \draw_path_moveto:n { -.325cm , -.15cm }
    \draw_path_arc:nnnn { 180 } { 360 } { .15cm } { .1cm }
    \draw_path_moveto:n { .325cm , -.15cm }
    \draw_path_arc:nnnn { 360 } { 180 } { .15cm } { .1cm }
    \draw_path_moveto:n { 0cm , -.15cm }
    \draw_path_arc:nnn { 0 } { -90 } { .225cm }
    \draw_path_lineto:n { -.225cm , -.425cm }
    \draw_path_lineto:n { .225cm , -.425cm }
    \draw_path_lineto:n { .225cm , -.375cm }
    \draw_path_arc:nnn { 270 } { 180 } { .225cm }
    \draw_path_close:
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_cleric_alt: \rpgicons_draw_shape_cleric_i:
% ===

\cs_new_protected:Npn \rpgicons_draw_shape_cleric_ii: {
    \draw_path_moveto:n { -.15cm , -.325cm }
    \draw_path_lineto:n { -.15cm , .075cm }
    \draw_path_lineto:n { 0cm , .075cm }
    \draw_path_lineto:n { 0cm , -.325cm }
    \draw_path_moveto:n { -.15cm , .25cm }
    \draw_path_arc:nnn { 180 } { 405 } { .075cm }
    \draw_path_arc:nnn { 215 } { 180 } { .225cm }
    \draw_path_moveto:n { .225cm , -.325cm }
    \draw_path_lineto:n { -.375cm , -.325cm }
    \draw_path_arc:nnn { 180 } { 270 } { .1cm }
    \draw_path_lineto:n { .125cm , -.425cm }
    \draw_path_arc:nnn { 270 } { 360 } { .1cm }
    \draw_path_arc:nnn { 180 } { -90 } { .1cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_druid: {
    \draw_path_moveto:n { ( .1cm , -.1cm ) + ( \draw_point_polar:nn { .05cm } { 45 } ) }
    \draw_path_lineto:n { ( .35cm , -.35cm ) + ( \draw_point_polar:nn { .05cm } { 45 } ) }
    \draw_path_arc:nnn { 45 } { -135 } { .05cm }
    \draw_path_lineto:n { ( .1cm , -.1cm ) + ( \draw_point_polar:nn { .05cm } { -135 } ) }
    \draw_path_moveto:n { ( .125cm , -.075cm ) + ( \draw_point_polar:nn { .05cm } { -135 } ) }
    \draw_path_arc:nnn { 315 } { 80 } { .3cm }
    \draw_path_lineto:n { ( -.075cm , .125cm ) + ( \draw_point_polar:nn { .05cm } { 45 } ) + ( \draw_point_polar:nn { .2cm } { 90 } ) }
    \draw_path_arc:nnn { 90 } { 315 } { .2cm }
    \draw_path_lineto:n { ( .125cm , -.075cm ) + ( \draw_point_polar:nn { .05cm } { 45 } ) }
    \draw_path_close:
}

\cs_new_protected:Npn \rpgicons_draw_shape_druid_i: {
    \draw_path_moveto:n { -.375cm , 0cm }
    \draw_path_lineto:n { -.375cm , -.1cm }
    \draw_path_arc:nnn { 180 } { 270 } { .225cm }
    \draw_path_lineto:n { -.175cm , -.425cm }
    \draw_path_lineto:n { .175cm , -.425cm }
    \draw_path_lineto:n { .15cm , -.325cm }
    \draw_path_arc:nnn { 270 } { 360 } { .225cm }
    \draw_path_lineto:n { .375cm , 0cm }
    \draw_path_moveto:n { .375cm , .1cm }
    \draw_path_arc:nnn { 90 } { -90 } { .05cm }
    \draw_path_lineto:n { -.375cm , 0cm }
    \draw_path_arc:nnn { 270 } { 90 } { .05cm }
    \draw_path_close:
    \draw_path_moveto:n { .225cm , .1cm }
    \draw_path_lineto:n { .425cm , .325cm }
    \draw_path_lineto:n { .325cm , .425cm }
    \draw_path_lineto:n { -.025cm , .1cm }
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_druid_alt: \rpgicons_draw_shape_druid_i:
% ===

\cs_new_protected:Npn \rpgicons_draw_shape_druid_ii: {
    \draw_path_moveto:n { -.425cm , -.425cm }
    \draw_path_arc:nnnn { 180 } { 120 } { 1cm } { 0.75cm }
    \draw_path_moveto:n { .425cm , .425cm }
    \draw_path_lineto:n { -.075cm , .425cm }
    \draw_path_arc:nnn { 90 } { 330 } { .5cm * tand(30) }
    \draw_path_close:
}

\cs_new_protected:Npn \rpgicons_draw_shape_fighter: {
    \draw_path_moveto:n { -.05cm , .425cm }
    \draw_path_lineto:n { .05cm , .425cm }
    \draw_path_lineto:n { .05cm , .2cm }
    \draw_path_lineto:n { -.05cm , .2cm }
    \draw_path_close:
    \draw_path_moveto:n { .05cm , .375cm }
    \draw_path_arc:nnn { 90 } { 0 } { .275cm }
    \draw_path_lineto:n { .325cm , -.25cm }
    \draw_path_lineto:n { .15cm , -.425cm }
    \draw_path_lineto:n { .15cm , -.15cm }
    \draw_path_arc:nnn { 180 } { 145 } { .35cm }
    \draw_path_lineto:n { .2cm , .1cm }
    \draw_path_lineto:n { .05cm , .05cm }
    \draw_path_lineto:n { .025cm , -.2cm }
    \draw_path_lineto:n { -.025cm , -.2cm }
    \draw_path_lineto:n { -.05cm , .05cm }
    \draw_path_lineto:n { -.2cm , .1cm }
    \draw_path_lineto:n { ( -.5cm , -.15cm ) + ( \draw_point_polar:nn { .35cm } { 35 } ) }
    \draw_path_arc:nnn { 35 } { 0 } { .35cm }
    \draw_path_lineto:n { -.15cm , -.425cm }
    \draw_path_lineto:n { -.325cm , -.25cm }
    \draw_path_lineto:n { -.325cm , .1cm }
    \draw_path_arc:nnn { 180 } { 90 } { .275cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_gunslinger: {
    \draw_path_moveto:n { -.125cm , -.125cm }
    \draw_path_arc:nnn { 90 } { 180 } { .075cm }
    \draw_path_lineto:n { -.2cm , -.325cm }
    \draw_path_lineto:n { -.425cm , -.325cm }
    \draw_path_lineto:n { -.425cm , -.225cm }
    \draw_path_arc:nnn { 180 } { 90 } { .3cm }
    \draw_path_lineto:n { -.125cm , .075cm }
    \draw_path_moveto:n { -.125cm , .225cm }
    \draw_path_lineto:n { .125cm , .225cm }
    \draw_path_lineto:n { .125cm , -.025cm }
    \draw_path_arc:nnn { 360 } { 270 } { .125cm }
    \draw_path_lineto:n { -.125cm , -.15cm }
    \draw_path_close:
    \draw_path_moveto:n { -.125cm , .175cm }
    \draw_path_lineto:n { -.175cm , .175cm }
    \draw_path_arc:nnn { 270 } { 180 } { .075cm }
    \draw_path_moveto:n { .125cm , .175cm }
    \draw_path_lineto:n { .425cm , .175cm }
    \draw_path_lineto:n { .425cm , .05cm }
    \draw_path_lineto:n { .125cm , .05cm }
    \draw_path_moveto:n { .425cm , .175cm }
    \draw_path_lineto:n { .425cm , .25cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_monk: {
    \draw_path_moveto:n { -.425cm , -.15cm }
    \draw_path_lineto:n { -.425cm , .125cm }
    \draw_path_lineto:n { -.125cm , .425cm }
    \draw_path_arc:nnn { 45 } { -45 } { .1cm }
    \draw_path_lineto:n { -.275cm , .1cm }
    \draw_path_lineto:n { -.275cm , -.05cm }
    \draw_path_arc:nnn { 180 } { 360 } { .05cm }
    \draw_path_lineto:n { -.175cm , 0cm }
    \draw_path_arc:nnn { 180 } { 90 } { .1cm }
    \draw_path_lineto:n { -.075cm , -.1cm }
    \draw_path_arc:nnn { 0 } { -45 } { .125cm }
    \draw_path_lineto:n { -.35cm , -.425cm }
    \draw_path_moveto:n { .425cm , -.15cm }
    \draw_path_lineto:n { .425cm , .125cm }
    \draw_path_lineto:n { .125cm , .425cm }
    \draw_path_arc:nnn { 135 } { 215 } { .1cm }
    \draw_path_lineto:n { .275cm , .1cm }
    \draw_path_lineto:n { .275cm , -.05cm }
    \draw_path_arc:nnn { 360 } { 180 } { .05cm }
    \draw_path_lineto:n { .175cm , 0cm }
    \draw_path_arc:nnn { 0 } { 90 } { .1cm }
    \draw_path_lineto:n { .075cm , -.1cm }
    \draw_path_arc:nnn { 180 } { 215 } { .125cm }
    \draw_path_lineto:n { .35cm , -.425cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_monk_i: {
    \draw_path_circle:nn { 0cm , 0cm } { .35cm }
    \draw_transform_rotate:n { 45 }
    \draw_path_moveto:n {
        \draw_point_polar:nn { .35cm } {
            180 - acosd (
                sqrt (
                    .330625 * ( .0225 / .1225 - 1 ) /
                    ( .0225 - .330625 )
                )
            )
        }
    }
    \draw_path_arc:nnnn {
        180 - acosd (
            sqrt (
                .330625 * ( .0225 / .1225 - 1 ) /
                ( .0225 - .330625 )
            ) * .35cm / .575cm
        )
    } {
        360 + acosd (
            sqrt (
                .330625 * ( .0225 / .1225 - 1 ) /
                ( .0225 - .330625 )
            ) * .35cm / .575cm
        )
    } { .575cm } { .15cm }
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_monk_alt: \rpgicons_draw_shape_monk_i:
% ===

\cs_new_protected:Npn \rpgicons_draw_shape_paladin: {
    \draw_path_circle:nn { 0cm , -.15cm } { .275cm }
    \draw_path_moveto:n { ( 0cm , -.15cm ) + ( \draw_point_polar:nn { .275cm } { 60 }) }
    \draw_path_lineto:n { .05cm , 0cm }
    \draw_path_lineto:n { .05cm , -.1cm }
    \draw_path_lineto:n { .15cm , -.1cm }
    \draw_path_lineto:n { ( 0cm , -.15cm ) + ( \draw_point_polar:nn { .275cm } { 30 }) }
    \draw_path_moveto:n { ( 0cm , -.15cm ) + ( \draw_point_polar:nn { .275cm } { -30 }) }
    \draw_path_lineto:n { .15cm , -.2cm }
    \draw_path_lineto:n { .05cm , -.2cm }
    \draw_path_lineto:n { .05cm , -.3cm }
    \draw_path_lineto:n { ( 0cm , -.15cm ) + ( \draw_point_polar:nn { .275cm } { -60 }) }
    \draw_path_moveto:n { ( 0cm , -.15cm ) + ( \draw_point_polar:nn { .275cm } { 120 }) }
    \draw_path_lineto:n { -.05cm , 0cm }
    \draw_path_lineto:n { -.05cm , -.1cm }
    \draw_path_lineto:n { -.15cm , -.1cm }
    \draw_path_lineto:n { ( 0cm , -.15cm ) + ( \draw_point_polar:nn { .275cm } { 150 }) }
    \draw_path_moveto:n { ( 0cm , -.15cm ) + ( \draw_point_polar:nn { .275cm } { 210 }) }
    \draw_path_lineto:n { -.15cm , -.2cm }
    \draw_path_lineto:n { -.05cm , -.2cm }
    \draw_path_lineto:n { -.05cm , -.3cm }
    \draw_path_lineto:n { ( 0cm , -.15cm ) + ( \draw_point_polar:nn { .275cm } { 240 }) }
    \draw_path_circle:nn { 0cm , .2cm } { .075cm }
    \draw_path_moveto:n { \draw_point_intersect_circles:nnnnn
        { 0cm , .2cm } { .075cm } { 0cm , .7cm } { .5cm } { 1 }
    }
    \draw_path_arc:nnn { 280 } { 325 } { .5cm }
    \draw_path_moveto:n { \draw_point_intersect_circles:nnnnn
        { 0cm , .2cm } { .075cm } { 0cm , .7cm } { .5cm } { 2 }
    }
    \draw_path_arc:nnn { 260 } { 215 } { .5cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_paladin_i: {
    \draw_path_moveto:n { -.25cm , .425cm }
    \draw_path_lineto:n { -.25cm , .2cm }
    \draw_path_arc:nnn { 180 } { 360 } { .25cm }
    \draw_path_lineto:n { .25cm , .425cm }
    \draw_path_close:
    \draw_path_moveto:n { -.25cm , .325cm }
    \draw_path_lineto:n { .25cm , .325cm }
    \draw_path_moveto:n { -.05cm , -.05cm }
    \draw_path_lineto:n { -.05cm , -.325cm }
    \draw_path_moveto:n { .05cm , -.05cm }
    \draw_path_lineto:n{ .05cm , -.325cm }
    \draw_path_moveto:n { -.2cm , -.425cm }
    \draw_path_arc:nnn { 180 } { 90 } { .1cm }
    \draw_path_lineto:n { .125cm , -.325cm }
    \draw_path_arc:nnn { 90 } { 0 } { .1cm }
    \draw_path_close:
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_paladin_alt: \rpgicons_draw_shape_paladin_i:
% ===

\cs_new_protected:Npn \rpgicons_draw_shape_psion: {
    \draw_path_moveto:n { -.425cm , -.425cm }
    \draw_path_arc:nnn { 180 } { 90 } { .15cm }
    \draw_path_lineto:n { .275cm , -.275cm }
    \draw_path_arc:nnn { 90 } { 0 } { .15cm }
    \draw_path_close:
    \draw_path_moveto:n { ( 0cm , .025cm ) + ( \draw_point_polar:nn { .4cm } { 270 - acosd ( .3cm / .4cm ) }) }
    \draw_path_arc:nnn { 270 - acosd ( .3cm / .4cm ) } { acosd ( .3cm / .4cm ) - 90 } { .4cm }
    \draw_path_moveto:n { ( 0cm , .025cm ) + ( \draw_point_polar:nn { .25cm } { 95 }) }
    \draw_path_arc:nnn { 95 } { 175 } { .25cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_psion_i: {
    \draw_path_moveto:n { 0cm , .025cm }
    \draw_path_arc:nnn { 90 } { 30 } { .45cm }
    \draw_path_arc:nnn { 330 } { 210 } { .45cm }
    \draw_path_arc:nnn { 150 } { 90 } { .45cm }
    \draw_path_moveto:n { -.15cm , -.175cm }
    \draw_path_arc:nnn { 180 } { 270 } { .15cm }
    \draw_path_arc:nnn { 270 } { 360 } { .125cm }
    \draw_path_arc:nnn { 0 } { 90 } { .1cm }
    \draw_path_arc:nnn { 90 } { 180 } { .075cm }
    \draw_path_arc:nnn { 180 } { 270 } { .05cm }
    \draw_path_arc:nnn { 270 } { 360 } { .025cm }
    \draw_path_moveto:n { 0cm , .175cm }
    \draw_path_lineto:n { 0cm , .425cm }
    \draw_path_moveto:n { .275cm , .125cm }
    \draw_path_lineto:n { .425cm , .325cm }
    \draw_path_moveto:n { -.275cm , .125cm }
    \draw_path_lineto:n { -.425cm , .325cm }
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_psion_alt: \rpgicons_draw_shape_psion_i:
% ===

\cs_new_protected:Npn \rpgicons_draw_shape_ranger: {
    \draw_path_circle:nn { 0cm , 0cm } { .425cm }
    \draw_path_circle:nn { 0cm , 0cm } { .325cm }
    \draw_path_moveto:n { \draw_point_polar:nn { .325cm } { 0 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .225cm } { 0 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .325cm } { 90 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .225cm } { 90 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .325cm } { 180 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .225cm } { 180 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .325cm } { 270 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .225cm } { 270 } }
    \draw_path_moveto:n { \draw_point_polar:nn { .225cm } { 45 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .1cm } { 135 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .225cm } { 225 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .1cm } { 315 } }
    \draw_path_close:
    \draw_path_moveto:n { \draw_point_polar:nn { .1cm } { 135 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .1cm } { 315 } }
}

\cs_new_protected:Npn \rpgicons_draw_shape_ranger_i: {
    \draw_path_moveto:n { -.425cm , .325cm }
    \draw_path_lineto:n { -.275cm , .425cm }
    \draw_path_lineto:n { .15cm , .425cm }
    \draw_path_lineto:n { .2cm , .3cm }
    \draw_path_lineto:n { .25cm , .425cm }
    \draw_path_lineto:n { .425cm , .425cm }
    \draw_path_lineto:n { .425cm , -.425cm }
    \draw_path_lineto:n { 0cm , -.425cm }
    \draw_path_lineto:n { -.05cm , -.175cm }
    \draw_path_lineto:n { -.1cm , -.425cm }
    \draw_path_lineto:n { -.425cm , -.425cm }
    \draw_path_close:
    \draw_path_moveto:n { .2cm , -.2cm }
    \draw_path_lineto:n { .3cm , -.3cm }
    \draw_path_moveto:n { .2cm , -.3cm }
    \draw_path_lineto:n { .3cm , -.2cm }
    \draw_path_moveto:n { .125cm , -.125cm }
    \draw_path_arc:nnn { 45 } { 90 } { .325cm }
    \draw_path_arc:nnn { 270 } { 150 } { .2cm }
    \draw_path_moveto:n { -.1cm , .15cm }
    \draw_path_lineto:n { 0cm , .25cm }
    \draw_path_lineto:n { .1cm , .15cm }
    \draw_path_moveto:n { .05cm , .1cm }
    \draw_path_lineto:n { .15cm , .2cm }
    \draw_path_lineto:n { .25cm , .1cm }
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_ranger_alt: \rpgicons_draw_shape_ranger_i:
% ===

\cs_new_protected:Npn \rpgicons_draw_shape_rogue: {
    \draw_path_moveto:n { ( .15cm , .15cm ) + ( \draw_point_polar:nn { .05cm } { -45 } ) }
    \draw_path_arc:nnn { 135 } { 405 } { .125cm }
    \draw_path_arc:nnn { -45 } { 135 } { .175cm }
    \draw_path_arc:nnn { 45 } { 315 } { .125cm }
    \draw_path_moveto:n { ( -.275cm , -.275cm ) + ( \draw_point_polar:nn { .05cm } { 315 } ) }
    \draw_path_lineto:n { ( -.175cm , -.375cm ) + ( \draw_point_polar:nn { .05cm } { 315 } ) }
    \draw_path_lineto:n { ( 0cm , -.2cm ) + ( \draw_point_polar:nn { .05cm } { 315 } ) }
    \draw_path_lineto:n { ( -.1cm , -.1cm ) + ( \draw_point_polar:nn { .05cm } { 315 } ) }
    \draw_path_moveto:n { ( .2cm , .2cm ) + ( \draw_point_polar:nn { .05cm } { 135 } ) }
    \draw_path_lineto:n { ( -.325cm , -.325cm ) + ( \draw_point_polar:nn { .05cm } { 135 } ) }
    \draw_path_arc:nnn { 135 } { 315 } { .05cm }
    \draw_path_lineto:n { ( .2cm , .2cm ) + ( \draw_point_polar:nn { .05cm } { 315 } ) }
}

\cs_new_protected:Npn \rpgicons_draw_shape_rogue_i: {
    \draw_path_moveto:n { .225cm , .425cm }
    \draw_path_lineto:n { .425cm , .025cm }
    \draw_path_lineto:n { .325cm , -.025cm }
    \draw_path_lineto:n { .125cm , .375cm }
    \draw_path_close:
    \draw_path_moveto:n { .3cm , .025cm }
    \draw_path_lineto:n { -.05cm , -.15cm }
    \draw_path_lineto:n { -.2cm , .15cm }
    \draw_path_lineto:n { .15cm , .325cm }
    \draw_path_moveto:n { -.075cm , -.1cm }
    \draw_path_lineto:n { -.325cm , -.225cm }
    \draw_path_lineto:n { -.425cm , -.025cm }
    \draw_path_lineto:n { -.175cm , .1cm }
    \draw_path_moveto:n { 0cm , -.125cm }
    \draw_path_lineto:n { 0cm , -.425cm }
    \draw_path_moveto:n { -.225cm , -.425cm }
    \draw_path_lineto:n { 0cm , -.25cm }
    \draw_path_lineto:n { .225cm , -.425cm }
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_rogue_alt: \rpgicons_draw_shape_rogue_i:
% ===

\cs_new_protected:Npn \rpgicons_draw_shape_sorcerer: {
    \draw_path_moveto:n { -.25cm , -.425cm }
    \draw_path_lineto:n { .025cm , -.425cm }
    \draw_path_lineto:n { .325cm , -.125cm }
    \draw_path_arc:nnn { 45 } { 135 } { .1cm }
    \draw_path_lineto:n { 0cm , -.275cm }
    \draw_path_lineto:n { -.15cm , -.275cm }
    \draw_path_arc:nnn { 270 } { 90 } { .05cm }
    \draw_path_lineto:n { -.1cm , -.175cm }
    \draw_path_arc:nnn { 270 } { 360 } { .1cm }
    \draw_path_lineto:n { -.2cm , -.075cm }
    \draw_path_arc:nnn { 90 } { 135 } { .125cm }
    \draw_path_lineto:n { -.425cm , -.25cm }
    \draw_path_moveto:n { -.125cm , .175cm }
    \draw_path_arc:nnn { 180 } { 360 } { .125cm }
    \draw_path_arc:nnn { 0 } { 45 } { .125cm }
    \draw_path_arc:nnn { 225 } { 180 } { .225cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_sorcerer_i: {
    \draw_path_moveto:n { -.325cm , .4cm }
    \draw_path_lineto:n { -.375cm , .4cm }
    \draw_path_arc:nnn { 90 } { 270 } { .05cm }
    \draw_path_lineto:n { -.325cm , .3cm }
    \draw_path_moveto:n { .3cm , .4cm }
    \draw_path_lineto:n { .35cm , .4cm }
    \draw_path_arc:nnn { 90 } { -90 } { .05cm }
    \draw_path_lineto:n { .3cm , .3cm }
    \draw_path_rectangle_corners:nn { -.325cm , .425cm } { .3cm , .275cm }
    \draw_path_moveto:n { .275cm , .275cm }
    \draw_path_lineto:n { .275cm , -.325cm }
    \draw_path_lineto:n { -.1cm , -.325cm }
    \draw_path_arc:nnn { 360 } { 180 } { .1cm }
    \draw_path_lineto:n { -.3cm , .275cm }
    \draw_path_moveto:n { -.2cm , -.425cm }
    \draw_path_lineto:n { .325cm , -.425cm }
    \draw_path_arc:nnn { 270 } { 360 } { .1cm }
    \draw_path_lineto:n { .275cm , -.325cm }
    \draw_path_moveto:n { -.15cm , .125cm }
    \draw_path_lineto:n { .125cm , .125cm }
    \draw_path_moveto:n { -.15cm , 0cm }
    \draw_path_lineto:n { 0cm , 0cm }
    \draw_path_moveto:n { -.15cm , -.125cm }
    \draw_path_lineto:n { .125cm , -.125cm }
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_sorcerer_alt: \rpgicons_draw_shape_sorcerer_i:
% ===

\cs_new_protected:Npn \rpgicons_draw_shape_warlock: {
    \draw_path_moveto:n { \draw_point_polar:nn { .4cm } { 150 } }
    \draw_path_arc:nnn { 150 } { 30 } { .4cm }
    \draw_path_arc:nnn { -30 } { -150 } { .4cm }
    \draw_path_close:
    \draw_path_circle:nn { 0cm , .2cm } { .1cm }
    \draw_path_moveto:n { -.425cm , -.425cm }
    \draw_path_arc:nnn { 180 } { 150 } { .75cm }
    \draw_path_moveto:n { .425cm , -.425cm }
    \draw_path_arc:nnn { 0 } { 30 } { .75cm }
    \draw_path_circle:nn { 0cm , -.175cm } { .075cm }
    \draw_path_moveto:n { -.15cm , -.425cm }
    \draw_path_arc:nnn { 180 } { 90 } { .075cm }
    \draw_path_lineto:n { .075cm , -.35cm }
    \draw_path_arc:nnn { 90 } { 0 } { .075cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_wizard: {
    \draw_path_moveto:n { .4cm , -.425cm }
    \draw_path_lineto:n { -.3cm , -.425cm }
    \draw_path_arc:nnn { 270 } { 90 } { .1cm }
    \draw_path_lineto:n { .4cm , -.225cm }
    \draw_path_lineto:n { .4cm , .425cm }
    \draw_path_lineto:n { -.3cm , .425cm }
    \draw_path_arc:nnn { 90 } { 180 } { .1cm }
    \draw_path_lineto:n { -.4cm , -.325cm }
    \draw_path_moveto:n { -.25cm , -.325cm }
    \draw_path_lineto:n { .35cm , -.325cm }
    \draw_path_moveto:n { -.2cm , .325cm }
    \draw_path_lineto:n { -.2cm , -.125cm }
    \draw_path_moveto:n { .2cm , .425cm }
    \draw_path_lineto:n { .4cm , .225cm }
    \draw_path_moveto:n { .2cm , -.225cm }
    \draw_path_lineto:n { .4cm , -.025cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_wizard_i: {
    \draw_path_moveto:n { -.425cm , -.375cm }
    \draw_path_lineto:n { -.375cm , -.425cm }
    \draw_path_lineto:n {
        ( .125cm , .125cm ) +
        ( \draw_point_polar:nn { .1cm } { - atand ( sqrt ( .25cm + .3025cm ) , .1cm ) } )
    }
    \draw_path_arc:nnn {
        - atand ( sqrt ( .25cm + .3025cm ) , .1cm )
    } {
        90 + atand ( sqrt ( .3025cm + .25cm ) , .1cm )
    } { .1cm }
    \draw_path_close:
    \int_step_inline:nnnn { -65 } { 45 } { 180 } {
      \draw_path_moveto:n { ( .125cm , .125cm ) + ( \draw_point_polar:nn { .225cm } {##1} ) }
      \draw_path_lineto:n { ( .125cm , .125cm ) + ( \draw_point_polar:nn { .3cm } {##1} ) }
    }
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_wizard_alt: \rpgicons_draw_shape_wizard_i:
% ===

% ALIGNMENT

\cs_new_protected:Npn \rpgicons_draw_shape_lawful_good: {
    \draw_path_moveto:n { .4cm , -.1cm }
    \draw_path_lineto:n { -.4cm , -.1cm }
    \draw_path_moveto:n { .4cm , .15cm }
    \draw_path_lineto:n { 0cm , .4cm }
    \draw_path_lineto:n { -.4cm , .15cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_neutral_good: {
    \draw_path_circle:nn { 0cm , -.1cm } { .2cm }
    \draw_path_moveto:n { .4cm , .15cm }
    \draw_path_lineto:n { 0cm , .4cm }
    \draw_path_lineto:n { -.4cm , .15cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_chaotic_good: {
    \draw_path_moveto:n { 0cm , .4cm }
    \draw_path_lineto:n { 0cm , -.4cm }
    \draw_path_moveto:n { .4cm , .15cm }
    \draw_path_lineto:n { 0cm , .4cm }
    \draw_path_lineto:n { -.4cm , .15cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_lawful_neutral: {
    \draw_path_circle:nn { 0cm , 0cm } { .2cm }
    \draw_path_moveto:n { .4cm , 0cm }
    \draw_path_lineto:n { -.4cm , 0cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_true_neutral: {
    \draw_path_circle:nn { 0cm , 0cm } { .2cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_chaotic_neutral: {
    \draw_path_circle:nn { 0cm , 0cm } { .2cm }
    \draw_path_moveto:n { 0cm , .4cm }
    \draw_path_lineto:n { 0cm , -.4cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_lawful_evil: {
    \draw_path_moveto:n { .4cm , .1cm }
    \draw_path_lineto:n { -.4cm , .1cm }
    \draw_path_moveto:n { .4cm , -.15cm }
    \draw_path_lineto:n { 0cm , -.4cm }
    \draw_path_lineto:n { -.4cm , -.15cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_neutral_evil: {
    \draw_path_circle:nn { 0cm , .1cm } { .2cm }
    \draw_path_moveto:n { .4cm , -.15cm }
    \draw_path_lineto:n { 0cm , -.4cm }
    \draw_path_lineto:n { -.4cm , -.15cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_chaotic_evil: {
    \draw_path_moveto:n { 0cm , .4cm }
    \draw_path_lineto:n { 0cm , -.4cm }
    \draw_path_moveto:n { .4cm , -.15cm }
    \draw_path_lineto:n { 0cm , -.4cm }
    \draw_path_lineto:n { -.4cm , -.15cm }
}

% CURRENCY

\cs_new_protected:Npn \rpgicons_draw_shape_copper: {
    \draw_path_moveto:n { -.375cm , -.225cm }
    \draw_path_lineto:n { -.375cm , .225cm }
    \draw_path_lineto:n { -.225cm , .375cm }
    \draw_path_lineto:n { .225cm , .375cm }
    \draw_path_lineto:n { .375cm , .225cm }
    \draw_path_lineto:n { .375cm , -.225cm }
    \draw_path_lineto:n { .225cm , -.375cm }
    \draw_path_lineto:n { -.225cm , -.375cm }
    \draw_path_close:
    \draw_path_circle:nn { 0cm , 0cm } { .075cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_silver: {
    \draw_path_moveto:n { 0cm , .35cm }
    \draw_path_lineto:n { .433cm , -.4cm }
    \draw_path_lineto:n { -.433cm , -.4cm }
    \draw_path_close:
    \draw_path_circle:nn { 0cm , -.15cm } { .075cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_gold: {
    \draw_path_moveto:n { -.375cm , -.375cm }
    \draw_path_lineto:n { ( -.5375cm , 0cm ) + ( \draw_point_polar:nn { .325cm } { -60 } ) }
    \draw_path_arc:nnn { -60 } { 60 } { .325cm }
    \draw_path_lineto:n { -.375cm , .375cm }
    \draw_path_lineto:n { .375cm , .375cm }
    \draw_path_lineto:n { ( .5375cm , 0cm ) + ( \draw_point_polar:nn { .325cm } { 120 } ) }
    \draw_path_arc:nnn { 120 } { 240 } { .325cm }
    \draw_path_lineto:n { .375cm , -.375cm }
    \draw_path_close:
}

\cs_new_protected:Npn \rpgicons_draw_shape_electrum: {
    \draw_path_moveto:n { -.225cm , -.325cm }
    \draw_path_arc:nnn { 240 } { 120 } { .375cm }
    \draw_path_lineto:n { .225cm , .325cm }
    \draw_path_arc:nnn { 60 } { -60 } { .375cm }
    \draw_path_close:
    \draw_path_circle:nn { 0cm , -.125cm } { .075cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_platinum: {
    \draw_path_moveto:n { .075cm , .4cm }
    \draw_path_lineto:n { .35cm , .075cm }
    \draw_path_lineto:n { .35cm , -.075cm }
    \draw_path_lineto:n { .075cm , -.4cm }
    \draw_path_lineto:n { -.075cm , -.4cm }
    \draw_path_lineto:n { -.35cm , -.075cm }
    \draw_path_lineto:n { -.35cm , .075cm }
    \draw_path_lineto:n { -.075cm , .4cm }
    \draw_path_close:
}

\cs_new_protected:Npn \rpgicons_draw_shape_gem: {
    \draw_path_moveto:n { -.25cm , .425cm }
    \draw_path_lineto:n { .25cm , .425cm }
    \draw_path_lineto:n { .425cm , .15cm }
    \draw_path_lineto:n { 0cm , -.425cm }
    \draw_path_lineto:n { -.425cm , .15cm }
    \draw_path_close:
    \draw_path_moveto:n { -.425cm , .15cm }
    \draw_path_lineto:n { .425cm , .15cm }
    \draw_path_moveto:n { -.25cm , .425cm }
    \draw_path_lineto:n { -.2cm , .15cm }
    \draw_path_lineto:n { 0cm , .425cm }
    \draw_path_lineto:n { .2cm , .15cm }
    \draw_path_lineto:n { .25cm , .425cm }
    \draw_path_moveto:n { -.2cm , .15cm }
    \draw_path_lineto:n { 0cm , -.425cm }
    \draw_path_lineto:n { .2cm , .15cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_jewellery: {
    \draw_path_ellipse:nnn { 0cm , -.15cm } { .175cm , 0cm } { 0cm , .275cm }
    \draw_path_moveto:n { ( 0cm , -.15cm ) + ( \draw_point_polar:nnn { .075cm } { .175cm } { 0 } ) }
    \draw_path_arc:nnnn { 0 } { -60 } { .075cm } { .175cm }
    \draw_path_circle:nn { 0cm , .2cm } { .075cm }
    \draw_path_moveto:n { \draw_point_intersect_circles:nnnnn
        { 0cm , .2cm } { .075cm } { 0cm , .7cm } { .5cm } { 1 }
    }
    \draw_path_arc:nnn { 280 } { 325 } { .5cm }
    \draw_path_moveto:n { \draw_point_intersect_circles:nnnnn
        { 0cm , .2cm } { .075cm } { 0cm , .7cm } { .5cm } { 2 }
    }
    \draw_path_arc:nnn { 260 } { 215 } { .5cm }
}

\cs_set_eq:NN \rpgicons_draw_shape_jewelry: \rpgicons_draw_shape_jewellery:

% FRAMES

\cs_new_protected:Npn \rpgicons_draw_frame_ability: {
    \draw_path_circle:nn { 0cm , 0cm } { .45cm }
}

\cs_new_protected:Npn \rpgicons_draw_frame_saving: {
    \draw_path_moveto:n { -.45cm, . 45cm }
    \draw_path_lineto:n { .45cm , .45cm }
    \draw_path_lineto:n { .45cm , -.05cm }
    \draw_path_arc:nnn { 360 } { 180 } { .45cm }
    \draw_path_close:
}

\cs_new_protected:Npn \rpgicons_draw_frame_spellschool: {
    \draw_path_moveto:n { -.475cm, . 35cm }
    \draw_path_lineto:n { -.35cm , .475cm }
    \draw_path_lineto:n { .35cm , .475cm }
    \draw_path_lineto:n { .475cm , .35cm }
    \draw_path_lineto:n { .425cm , -.375cm }
    \draw_path_lineto:n { 0cm , -.475cm }
    \draw_path_lineto:n { -.425cm , -.375cm }
    \draw_path_close:
}

\cs_new_protected:Npn \rpgicons_draw_frame_damage: {
    \draw_path_circle:nn { 0cm , 0cm } { .5cm }
}

\cs_new_protected:Npn \rpgicons_draw_frame_class: {
    \draw_path_rectangle_corners:nn { -.45cm , -.45cm } { .45cm , .45cm }
}

\cs_new_protected:Npn \rpgicons_draw_frame_alignment: {
    \draw_path_moveto:n { \draw_point_polar:nn { .525cm } { 30 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .525cm } { 90 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .525cm } { 150 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .525cm } { 210 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .525cm } { 270 } }
    \draw_path_lineto:n { \draw_point_polar:nn { .525cm } { 330 } }
    \draw_path_close:
}

% USER COMMANDS

\NewDocumentCommand { \rpgiconsset } { m } {
    \keys_set:nn { rpgicons / local } {#1}
}

\dim_new:N \l_rpgicons_icon_before_sep_dim
\dim_new:N \l_rpgicons_icon_after_sep_dim
\dim_new:N \l_rpgicons_icon_baseline_dim
\dim_new:N \l_rpgicons_icon_linewidth_dim

\tl_new:N \l_rpgicons_icon_frame_tl
\tl_new:N \l_rpgicons_icon_color_stroke_tl
\tl_new:N \l_rpgicons_icon_color_fill_tl
\tl_new:N \l_rpgicons_icon_color_text_tl
\tl_new:N \l_rpgicons_icon_color_background_tl

\int_new:N \l_rpgicons_icon_variant_int

\fp_new:N \l_rpgicons_icon_opacity_stroke_fp
\fp_set:Nn \l_rpgicons_icon_opacity_stroke_fp { 1.0 }
\fp_new:N \l_rpgicons_icon_opacity_fill_fp
\fp_set:Nn \l_rpgicons_icon_opacity_fill_fp { 1.0 }
\fp_new:N \l_rpgicons_icon_opacity_text_fp
\fp_set:Nn \l_rpgicons_icon_opacity_text_fp { 1.0 }
\fp_new:N \l_rpgicons_icon_opacity_background_fp
\fp_set:Nn \l_rpgicons_icon_opacity_background_fp { 1.0 }

\fp_new:N \l__rpgicons_icon_transform_temp_fp
\fp_new:N \l_rpgicons_icon_transform_scale_fp
\fp_set:Nn \l_rpgicons_icon_transform_scale_fp { 1.0 }
\fp_new:N \l_rpgicons_icon_transform_scale_inner_fp
\fp_set:Nn \l_rpgicons_icon_transform_scale_inner_fp { 1.0 }
\fp_new:N \l_rpgicons_icon_transform_rotate_fp

\cs_generate_variant:Nn \color_select:n { V }
\cs_generate_variant:Nn \color_stroke:n { V }
\cs_generate_variant:Nn \color_fill:n { V }

\cs_new_protected:Npn \__rpgicons_opacity_check: {
    \IfPDFManagementActiveTF { } {
        \msg_warning:nn { rpgicons } { documentmetadata-missing }
    }
}

\cs_generate_variant:Nn \bool_set:Nn { Ne }
\keys_define:nn { rpgicons / local } {
    before ~ sep         .groups:n   = { extra } ,
    before ~ sep         .dim_set:N  = \l_rpgicons_icon_before_sep_dim ,
    before ~ sep         .initial:n  = { 0.05em } ,
    after ~ sep          .groups:n   = { extra } ,
    after ~ sep          .dim_set:N  = \l_rpgicons_icon_after_sep_dim ,
    after ~ sep          .initial:n  = { 0.05em } ,
    baseline             .dim_set:N  = \l_rpgicons_icon_baseline_dim ,
    baseline             .initial:n  = { -3.5pt } ,
    frame                .tl_set:N   = \l_rpgicons_icon_frame_tl ,
    frame                .initial:n  = { } ,
    variant              .int_set:N  = \l_rpgicons_icon_variant_int ,
    variant              .default:n  = { 1 } ,
    variant              .initial:n  = { 0 } ,
    stroke               .tl_set:N   = \l_rpgicons_icon_color_stroke_tl ,
    stroke               .initial:n  = { . } ,
    fill                 .tl_set:N   = \l_rpgicons_icon_color_fill_tl ,
    fill                 .initial:n  = { . } ,
    text                 .tl_set:N   = \l_rpgicons_icon_color_text_tl ,
    text                 .initial:n  = { . } ,
    color                .code:n     = {
        \tl_set:Nn \l_rpgicons_icon_color_stroke_tl {#1}
        \tl_set:Nn \l_rpgicons_icon_color_fill_tl {#1}
        \tl_set:Nn \l_rpgicons_icon_color_text_tl {#1}
    } ,
    background           .tl_set:N   = \l_rpgicons_icon_color_background_tl ,
    background           .initial:n  = { white } ,
    stroke ~ opacity     .code:n     = {
        \__rpgicons_opacity_check:
        \fp_set:Nn \l_rpgicons_icon_opacity_stroke_fp {#1}
    } ,
    fill ~ opacity       .code:n     = {
        \__rpgicons_opacity_check:
        \fp_set:Nn \l_rpgicons_icon_opacity_fill_fp {#1}
    } ,
    text ~ opacity       .code:n     = {
        \__rpgicons_opacity_check:
        \fp_set:Nn \l_rpgicons_icon_opacity_text_fp {#1}
    } ,
    opacity              .code:n     = {
        \__rpgicons_opacity_check:
        \fp_set:Nn \l_rpgicons_icon_opacity_stroke_fp {#1}
        \fp_set:Nn \l_rpgicons_icon_opacity_fill_fp {#1}
        \fp_set:Nn \l_rpgicons_icon_opacity_text_fp {#1}
    } ,
    background ~ opacity .code:n     = {
        \__rpgicons_opacity_check:
        \fp_set:Nn \l_rpgicons_icon_opacity_background_fp {#1}
    } ,
    line ~ width         .dim_set:N  = \l_rpgicons_icon_linewidth_dim ,
    line ~ width         .initial:n  = { \l_draw_default_linewidth_dim } ,
    scale                .code:n     = {
        \fp_set_eq:NN \l__rpgicons_icon_transform_temp_fp \l_rpgicons_icon_transform_scale_fp
        \fp_set:Nn \l_rpgicons_icon_transform_scale_fp {
            \l__rpgicons_icon_transform_temp_fp * #1
        }
    } ,
    scale                .initial:n  = { 1.0 } ,
    scale ~ inner        .code:n     = {
        \fp_set_eq:NN \l__rpgicons_icon_transform_temp_fp \l_rpgicons_icon_transform_scale_inner_fp
        \fp_set:Nn \l_rpgicons_icon_transform_scale_inner_fp {
            \l__rpgicons_icon_transform_temp_fp * #1
        }
    } ,
    scale ~ inner        .initial:n  = { 0.675 } ,
    rotate               .code:n     = {
        \fp_add:Nn \l_rpgicons_icon_transform_rotate_fp {#1}
    } ,
    rotate               .initial:n  = { 0.0 } ,
    accessible           .code:n     = {
        \msg_warning:nnn { rpgicons } { option-deprecated } { accessible }
    }
}

\cs_new:Npn \__rpgicons_style_set:nn #1#2 {
    \clist_if_exist:cF { l__rpgicons_style_ #1 _value_clist } {
        \clist_new:c { l__rpgicons_style_ #1 _value_clist }
    }
    \clist_put_right:cn { l__rpgicons_style_ #1 _value_clist } {#2}
    \keys_define:ne { rpgicons / local } {
        #1               .meta:n     = {
            \clist_use:c { l__rpgicons_style_ #1 _value_clist }
        }
    }
}
\cs_new:Npn \__rpgicons_style_put_right:nn #1#2 {
    \clist_if_exist:cTF { l__rpgicons_style_ #1 _value_clist } {
        \clist_put_right:cn { l__rpgicons_style_ #1 _value_clist } {#2}
        \keys_define:ne { rpgicons / local } {
            #1           .meta:n     = {
                \clist_use:c { l__rpgicons_style_ #1 _value_clist }
            }
        }
    } {
        \msg_error:nnn { rpgicons } { style-undefined } {#1}
    }
}
\keys_define:nn { rpgicons / local } {
    style ~ set          .code:n     = {
        \keyval_parse:NNn \use:n \__rpgicons_style_set:nn {#1}
    } ,
    style ~ add          .code:n     = {
        \keyval_parse:NNn \use:n \__rpgicons_style_put_right:nn {#1}
    }
}

% === backward compatibility
\keys_define:nn { rpgicons / local } {
    style ~ append       .meta:n     = { style ~ add = {#1} }
}
% ===

\clist_const:Nn \c__rpgicons_types_clist {
    die , ability , saving , spell , spellschool , damage , attack , condition , class , alignment , currency
}

\str_new:N \l__rpgicons_icon_type_name_str
\clist_map_inline:Nn \c__rpgicons_types_clist {
    \str_set:Nn \l__rpgicons_icon_type_name_str {#1}
    \str_replace_all:Nnn \l__rpgicons_icon_type_name_str { ~ } { _ }
    \clist_new:c { l_rpgicons_types_every_ \l__rpgicons_icon_type_name_str _style_clist }
    \keys_define:ne { rpgicons / local } {
        every ~ #1       .code:n     = {
            \exp_not:N \clist_set:cn {
                l_rpgicons_types_every_ \l__rpgicons_icon_type_name_str _style_clist
            } {##1}
        } ,
        every ~ #1 ~ add .code:n     = {
            \exp_not:N \clist_put_right:cn {
                l_rpgicons_types_every_ \l__rpgicons_icon_type_name_str _style_clist
            } {##1}
        }
    }
}

\clist_const:Nn \c__rpgicons_shapes_clist {
    twoside , fourside , sixside , eightside , tenside , twelveside , twentyside , hundredside ,
    fudge , sixside ~ one , sixside ~ two , sixside ~ three, sixside ~ four, sixside ~ five ,
    sixside ~ six , sixside ~ seven, sixside ~ eight, sixside ~ nine, fudge ~ plus, fudge ~ minus ,
    strength , dexterity , dexterity ~ i , constitution , intelligence , wisdom , wisdom ~ i , charisma ,
    resilience , sanity , perception , luck , armor , proficiency ,
    linear , conic , quadratic , cubic , spheric , cylindric , emanation ,
    verbal , somatic , material , ritual , focus ,
    abjuration , conjuration , divination , enchantment , evocation , illusion , necromancy , transmutation ,
    acid , bludgeoning , cold , fire , force , lightning , necrotic , necrotic ~ i , piercing , poison , psychic ,
    radiant , slashing , thunder , healing ,
    melee , ranged , magic , singlehanded , doublehanded ,
    buff , blinded , charmed , deafened , exhausted , frightened , grappled , incapacitated , invisible ,
    paralyzed , petrified , poisoned , prone , restrained , stunned , unconscious , hearing , seeing ,
    artificer , artificer ~ i , barbarian , bard , cleric , cleric ~ i , cleric ~ ii , druid , druid ~ i , druid ~ ii ,
    fighter , gunslinger , monk , monk ~ i , paladin , paladin ~ i , psion , psion ~ i , ranger , ranger ~ i ,
    rogue , rogue ~ i , sorcerer , sorcerer ~ i , warlock , wizard , wizard ~ i ,
    lawful ~ good , neutral ~ good , chaotic ~ good , lawful ~ neutral , true ~ neutral ,
    chaotic ~ neutral , lawful ~ evil , neutral ~ evil , chaotic ~ evil ,
    copper , silver , gold , electrum , platinum ,
    % === backward compatibility
    dexterity ~ alt , wisdom ~ alt , necrotic ~ alt , artificer ~ alt , cleric ~ alt , druid ~ alt ,
    monk ~ alt , paladin ~ alt , psion ~ alt , ranger ~ alt , rogue ~ alt , sorcerer ~ alt , wizard ~ alt
    % ===
}

\str_new:N \l__rpgicons_icon_shape_name_str
\clist_map_inline:Nn \c__rpgicons_shapes_clist {
    \str_set:Nn \l__rpgicons_icon_shape_name_str {#1}
    \str_replace_all:Nnn \l__rpgicons_icon_shape_name_str { ~ } { _ }
    \clist_new:c { l_rpgicons_shapes_every_ \l__rpgicons_icon_shape_name_str _style_clist }
    \keys_define:ne { rpgicons / local } {
        every ~ #1       .code:n     = {
            \exp_not:N \clist_set:cn {
                l_rpgicons_shapes_every_ \l__rpgicons_icon_shape_name_str _style_clist
            } {##1}
        } ,
        every ~ #1 ~ add .code:n     = {
            \exp_not:N \clist_put_right:cn {
                l_rpgicons_shapes_every_ \l__rpgicons_icon_shape_name_str _style_clist
            } {##1}
        }
    }
}

\tl_new:N \l__rpgicons_icon_actualtext_tl
\prop_new:N \g__rpgicons_icon_actualtext_prop
\cs_new_protected:Npn \__rpgicons_icon_actualtext_set:n #1 {
    \prop_gset_from_keyval:Nn \g__rpgicons_icon_actualtext_prop {#1}
}

\keys_define:nn { rpgicons / local } {
    actualtext           .code:n     = { \__rpgicons_icon_actualtext_set:n {#1} }
}

\cs_if_exist:NTF \NewTaggingSocket {
    \cs_generate_variant:Nn \tag_socket_use:nn { nV }

    \NewTaggingSocket { rpgicons / icon / before } { 1 }
    \NewTaggingSocketPlug { rpgicons / icon / before } { actualtext } {
        \tag_mc_end_push:
        \tag_struct_begin:n {
            tag = Span ,
            actualtext = { ~ #1 ~ }
        }
        \tag_mc_begin:n { }
    }
    \AssignTaggingSocketPlug { rpgicons / icon / before } { actualtext }

    \NewTaggingSocket { rpgicons / icon / after } { 0 }
    \NewTaggingSocketPlug { rpgicons / icon / after } { actualtext } {
        \tag_mc_end:
        \tag_struct_end:
        \tag_mc_begin_pop:n { }
    }
    \AssignTaggingSocketPlug { rpgicons / icon / after } { actualtext }

    \IfSocketExistsF { tagsupport / rpgicons / roll / before } {
        \NewTaggingSocket { rpgicons / roll / before } { 1 }
        \NewTaggingSocketPlug { rpgicons / roll / before } { actualtext } {
            \tag_mc_end_push:
            \tag_struct_begin:n {
                tag = Span ,
                actualtext = { ~ #1 ~ }
            }
            \tag_mc_begin:n { }
        }
        \AssignTaggingSocketPlug { rpgicons / roll / before } { actualtext }
    }

    \IfSocketExistsF { tagsupport / rpgicons / roll / after } {
        \NewTaggingSocket { rpgicons / roll / after } { 0 }
        \NewTaggingSocketPlug { rpgicons / roll / after } { actualtext } {
            \tag_mc_end:
            \tag_struct_end:
            \tag_mc_begin_pop:n { }
        }
        \AssignTaggingSocketPlug { rpgicons / roll / after } { actualtext }
    }
} {
    \msg_warning:nn { rpgicons } { tagging-unsupported }
    \cs_if_exist:NF \tag_socket_use:n {
        \cs_new:Npn \tag_socket_use:n #1 { }
    }
    \cs_if_exist:NF \tag_socket_use:nn {
        \cs_new:Npn \tag_socket_use:nn #1#2 { }
        \cs_new:Npn \tag_socket_use:nV #1#2 { }
    }
    \cs_if_exist:NF \tag_suspend:n {
        \cs_new:Npn \tag_suspend:n #1 { }
    }
    \cs_if_exist:NF \tag_resume:n {
        \cs_new:Npn \tag_resume:n #1 { }
    }
}

\tl_const:Nn \c__rpgicons_icon_frame_saving_tl { saving }
\seq_new:N \l__rpgicons_icon_shape_name_parts_seq
\coffin_new:N \l__rpgicons_icon_label_coffin
\prg_generate_conditional_variant:Nnn \clist_if_in:nn { ne } { T , TF }
\cs_generate_variant:Nn \hcoffin_set:Nn { Ne }
\cs_generate_variant:Nn \keys_set_groups:nnn { nne }
\cs_generate_variant:Nn \keys_set_exclude_groups:nnn { nne }
\NewDocumentCommand \RPGIconsUseIcon { s O{} o m } {
    \mode_leave_vertical:
    \group_begin:
        \keys_set_exclude_groups:nne { rpgicons / local } { extra } {#2}
        \prop_get:NeNF \g__rpgicons_icon_actualtext_prop {
            \bool_lazy_and:nnTF {
                \tl_if_blank_p:n {#4}
            } {
                \tl_if_eq_p:NN \l_rpgicons_icon_frame_tl \c__rpgicons_icon_frame_saving_tl
            } { saving } {#4}
        } \l__rpgicons_icon_actualtext_tl {
            \tl_set:Ne \l__rpgicons_icon_actualtext_tl {
                \bool_lazy_and:nnTF {
                    \tl_if_blank_p:n {#4}
                } {
                    \tl_if_eq_p:NN \l_rpgicons_icon_frame_tl \c__rpgicons_icon_frame_saving_tl
                } { saving } {#4}
            }
        }
        \tl_if_novalue:nF {#3} {
            \tl_put_left:Nn \l__rpgicons_icon_actualtext_tl { #3 ~ }
        }
        \tag_socket_use:nV { rpgicons / icon / before } \l__rpgicons_icon_actualtext_tl
        \draw_begin:
            \draw_set_cap_round:
            \draw_set_join_round:
            \str_set:Ne \l__rpgicons_icon_shape_name_str {#4}
            \str_replace_all:Nnn \l__rpgicons_icon_shape_name_str { ~ } { _ }
            \str_if_empty:NF \l__rpgicons_icon_shape_name_str {
                \clist_if_exist:cT { l_rpgicons_shapes_every_ \l__rpgicons_icon_shape_name_str _style_clist } {
                    \keys_set:ne { rpgicons / local } {
                        \clist_use:cn { l_rpgicons_shapes_every_ \l__rpgicons_icon_shape_name_str _style_clist } { , }
                    }
                }
            }
            \color_stroke:V \l_rpgicons_icon_color_stroke_tl
            \color_fill:V \l_rpgicons_icon_color_fill_tl
            \opacity_stroke:n { \l_rpgicons_icon_opacity_stroke_fp }
            \opacity_fill:n { \l_rpgicons_icon_opacity_fill_fp }
            \draw_set_linewidth:n { \l_rpgicons_icon_linewidth_dim }
            \draw_transform_scale:n { \l_rpgicons_icon_transform_scale_fp }
            \draw_transform_rotate:n { \l_rpgicons_icon_transform_rotate_fp }
            \draw_set_baseline:n { \l_rpgicons_icon_baseline_dim }
            \draw_path_rectangle_corners:nn
                { -.5cm , -.5cm - \l_rpgicons_icon_linewidth_dim / 2 }
                { .5cm , .5cm + \l_rpgicons_icon_linewidth_dim / 2 }
            \draw_path_replace_bb:
            \bool_set_false:N \l_draw_bb_update_bool
            \draw_scope_begin:
                \clist_if_in:nVT { ability , saving , spellschool , damage , class , alignment } \l_rpgicons_icon_frame_tl {
                    \cs_if_exist_use:cF { rpgicons_draw_frame_ \l_rpgicons_icon_frame_tl : } {
                        \msg_warning:nnV { rpgicons } { frame-undefined } \l_rpgicons_icon_frame_tl
                    }
                    \bool_if:nTF {#1} {
                        \draw_path_use_clear:n { fill }
                        \color_select:V \l_rpgicons_icon_color_background_tl
                        \opacity_select:n { \l_rpgicons_icon_opacity_background_fp }
                    } {
                        \draw_path_use_clear:n { stroke }
                    }
                    \draw_transform_scale:n { \l_rpgicons_icon_transform_scale_inner_fp }
                }
                \clist_if_in:neTF { sixside ~ one , sixside ~ two , sixside ~ three , sixside ~ four ,
                    sixside ~ five , sixside ~ six , sixside ~ seven , sixside ~ eight , sixside ~ nine } {#4} {
                    \seq_set_split:NVV \l__rpgicons_icon_shape_name_parts_seq
                        \c_underscore_str \l__rpgicons_icon_shape_name_str
                    \exp_args:Ne \rpgicons_draw_shape_sixside_pips:n {
                        \seq_item:Nn \l__rpgicons_icon_shape_name_parts_seq { 2 }
                    }
                    \draw_path_use_clear:n { stroke }
                } {
                    \str_if_empty:NF \l__rpgicons_icon_shape_name_str {
                        \cs_if_exist:cTF {
                            rpgicons_draw_shape_ \l__rpgicons_icon_shape_name_str _ \int_to_roman:n {
                                \l_rpgicons_icon_variant_int
                            } :
                        } {
                            \str_set:Ne \l__rpgicons_icon_shape_name_variant_str {
                                \l__rpgicons_icon_shape_name_str _ \int_to_roman:n {
                                    \l_rpgicons_icon_variant_int
                                }
                            }
                        } {
                            \str_set_eq:NN \l__rpgicons_icon_shape_name_variant_str \l__rpgicons_icon_shape_name_str
                        }
                        \cs_if_exist_use:cF { rpgicons_draw_shape_ \l__rpgicons_icon_shape_name_variant_str : } {
                            \tl_if_blank:VF \l__rpgicons_icon_shape_name_str {
                                \msg_warning:nnV { rpgicons } { shape-undefined } \l__rpgicons_icon_shape_name_str
                            }
                        }
                        \draw_path_use_clear:n { stroke }
                    }
                }
                \tl_if_novalue:nF {#3} {
                    \draw_scope_begin:
                        \color_select:V \l_rpgicons_icon_color_text_tl
                        \opacity_select:n { \l_rpgicons_icon_opacity_text_fp }
                        \hcoffin_set:Nn \l__rpgicons_icon_label_coffin {#3}
                        \draw_coffin_use:Nnn \l__rpgicons_icon_label_coffin { hc } { vc }
                    \draw_scope_end:
                }
            \draw_scope_end:
        \draw_end:
        \tag_socket_use:n { rpgicons / icon / after }
    \group_end:
}

\str_new:N \l__rpgicons_icon_integer_str
\cs_generate_variant:Nn \str_if_eq:nnTF { ne }
\NewDocumentCommand { \RPGIconsDie } { O{normal} m O{} m } {
    \group_begin:
        \keys_set_groups:nne { rpgicons / local } { extra } {#3}
        \keys_set:ne { rpgicons / local } { \clist_use:Nn \l_rpgicons_types_every_die_style_clist { , } }
        \str_set:Ne \l__rpgicons_icon_integer_str {#4}
        \skip_horizontal:n { \l_rpgicons_icon_before_sep_dim }
        \str_if_eq:neTF { large } {#1} {
            \RPGIconsUseIcon[scale=.675, #3][#4]{#2}
        } {
            \str_if_empty:NF \l__rpgicons_icon_integer_str { \str_use:N \l__rpgicons_icon_integer_str \, }
            \RPGIconsUseIcon[scale=.333, #3]{#2}
        }
        \skip_horizontal:n { \l_rpgicons_icon_after_sep_dim }
    \group_end:
}
\cs_if_exist:NF \die { \cs_new_eq:NN \die \RPGIconsDie }

\NewDocumentCommand { \RPGIconsAbility } { O{positive} m O{} } {
    \group_begin:
        \keys_set_groups:nne { rpgicons / local } { extra } {#3}
        \keys_set:ne { rpgicons / local } { \clist_use:Nn \l_rpgicons_types_every_ability_style_clist { , } }
        \skip_horizontal:n { \l_rpgicons_icon_before_sep_dim }
        \str_if_eq:neTF { negative } {#1} {
            \RPGIconsUseIcon*[frame=ability, scale=.333, #3]{#2}
        } {
            \RPGIconsUseIcon[scale=.333, #3]{#2}
        }
        \skip_horizontal:n { \l_rpgicons_icon_after_sep_dim }
    \group_end:
}
\cs_if_exist:NF \ability { \cs_new_eq:NN \ability \RPGIconsAbility }

\NewDocumentCommand { \RPGIconsSaving } { O{} m O{} } {
    \group_begin:
        \keys_set_groups:nne { rpgicons / local } { extra } {#3}
        \keys_set:ne { rpgicons / local } { \clist_use:Nn \l_rpgicons_types_every_saving_style_clist { , } }
        \skip_horizontal:n { \l_rpgicons_icon_before_sep_dim }
        \str_if_eq:neTF { empty } {#1} {
            \RPGIconsUseIcon[frame=saving, scale=.333, #3]{}
        } {
            \RPGIconsUseIcon[frame=saving, scale=.333, #3]{#2}
        }
        \skip_horizontal:n { \l_rpgicons_icon_after_sep_dim }
    \group_end:
}
\cs_if_exist:NF \saving { \cs_new_eq:NN \saving \RPGIconsSaving }

\NewDocumentCommand { \RPGIconsSpell } { m O{} } {
    \group_begin:
        \keys_set_groups:nne { rpgicons / local } { extra } {#2}
        \keys_set:ne { rpgicons / local } { \clist_use:Nn \l_rpgicons_types_every_spell_style_clist { , } }
        \skip_horizontal:n { \l_rpgicons_icon_before_sep_dim }
        \RPGIconsUseIcon[scale=.333, #2]{#1}
        \skip_horizontal:n { \l_rpgicons_icon_after_sep_dim }
    \group_end:
}
\cs_if_exist:NF \spell { \cs_new_eq:NN \spell \RPGIconsSpell }

\NewDocumentCommand { \RPGIconsSpellschool } { O{negative} m O{} } {
    \group_begin:
        \keys_set_groups:nne { rpgicons / local } { extra } {#3}
        \keys_set:ne { rpgicons / local } { \clist_use:Nn \l_rpgicons_types_every_spellschool_style_clist { , } }
        \skip_horizontal:n { \l_rpgicons_icon_before_sep_dim }
        \str_if_eq:neTF { negative } {#1} {
            \RPGIconsUseIcon*[frame=spellschool, scale=.333, #3]{#2}
        } {
            \RPGIconsUseIcon[frame=spellschool, scale=.333, #3]{#2}
        }
        \skip_horizontal:n { \l_rpgicons_icon_after_sep_dim }
    \group_end:
}
\cs_if_exist:NF \spellschool { \cs_new_eq:NN \spellschool \RPGIconsSpellschool }

\NewDocumentCommand { \RPGIconsDamage } { m O{} } {
    \group_begin:
        \keys_set_groups:nne { rpgicons / local } { extra } {#2}
        \keys_set:ne { rpgicons / local } { \clist_use:Nn \l_rpgicons_types_every_damage_style_clist { , } }
        \skip_horizontal:n { \l_rpgicons_icon_before_sep_dim }
        \RPGIconsUseIcon[frame=damage, scale=.333, #2]{#1}
        \skip_horizontal:n { \l_rpgicons_icon_after_sep_dim }
    \group_end:
}
\cs_if_exist:NF \damage { \cs_new_eq:NN \damage \RPGIconsDamage }

\NewDocumentCommand { \RPGIconsAttack } { m O{} } {
    \group_begin:
        \keys_set_groups:nne { rpgicons / local } { extra } {#2}
        \keys_set:ne { rpgicons / local } { \clist_use:Nn \l_rpgicons_types_every_attack_style_clist { , } }
        \skip_horizontal:n { \l_rpgicons_icon_before_sep_dim }
        \RPGIconsUseIcon[scale=.333, #2]{#1}
        \skip_horizontal:n { \l_rpgicons_icon_after_sep_dim }
    \group_end:
}
\cs_if_exist:NF \attack { \cs_new_eq:NN \attack \RPGIconsAttack }

\NewDocumentCommand { \RPGIconsCondition } { m O{} } {
    \group_begin:
        \keys_set_groups:nne { rpgicons / local } { extra } {#2}
        \keys_set:ne { rpgicons / local } { \clist_use:Nn \l_rpgicons_types_every_condition_style_clist { , } }
        \skip_horizontal:n { \l_rpgicons_icon_before_sep_dim }
        \RPGIconsUseIcon[scale=.333, #2]{#1}
        \skip_horizontal:n { \l_rpgicons_icon_after_sep_dim }
    \group_end:
}
\cs_if_exist:NF \condition { \cs_new_eq:NN \condition \RPGIconsCondition }

\NewDocumentCommand { \RPGIconsClass } { O{positive} m O{} } {
    \group_begin:
        \keys_set_groups:nne { rpgicons / local } { extra } {#2}
        \keys_set:ne { rpgicons / local } { \clist_use:Nn \l_rpgicons_types_every_class_style_clist { , } }
        \skip_horizontal:n { \l_rpgicons_icon_before_sep_dim }
        \str_if_eq:neTF { negative } {#1} {
            \RPGIconsUseIcon*[frame=class, scale=.333, #3]{#2}
        } {
            \RPGIconsUseIcon[frame=class, scale=.333, #3]{#2}
        }
        \skip_horizontal:n { \l_rpgicons_icon_after_sep_dim }
    \group_end:
}
\cs_if_exist:NF \class { \cs_new_eq:NN \class \RPGIconsClass }

\NewDocumentCommand { \RPGIconsAlignment } { O{positive} m O{} } {
    \group_begin:
        \keys_set_groups:nne { rpgicons / local } { extra } {#2}
        \keys_set:ne { rpgicons / local } { \clist_use:Nn \l_rpgicons_types_every_alignment_style_clist { , } }
        \skip_horizontal:n { \l_rpgicons_icon_before_sep_dim }
        \str_if_eq:neTF { negative } {#1} {
            \RPGIconsUseIcon*[frame=alignment, scale=.333, #3]{#2}
        } {
            \RPGIconsUseIcon[frame=alignment, scale=.333, #3]{#2}
        }
        \skip_horizontal:n { \l_rpgicons_icon_after_sep_dim }
    \group_end:
}
\cs_if_exist:NF \alignment { \cs_new_eq:NN \alignment \RPGIconsAlignment }

\NewDocumentCommand { \RPGIconsCurrency } { m O{} m } {
    \group_begin:
        \keys_set_groups:nne { rpgicons / local } { extra } {#2}
        \keys_set:ne { rpgicons / local } { \clist_use:Nn \l_rpgicons_types_every_currency_style_clist { , } }
        \str_set:Ne \l__rpgicons_icon_integer_str {#3}
        \skip_horizontal:n { \l_rpgicons_icon_before_sep_dim }
        \str_if_empty:NF \l__rpgicons_icon_integer_str { \str_use:N \l__rpgicons_icon_integer_str \, }
        \RPGIconsUseIcon[scale=.333, #2]{#1}
        \skip_horizontal:n { \l_rpgicons_icon_after_sep_dim }
    \group_end:
}
\cs_if_exist:NF \currency { \cs_new_eq:NN \currency \RPGIconsCurrency }

% ROLL SYNTAX

\regex_new:N \l__rpgicons_roll_syntax_die_regex
\cs_generate_variant:Nn \regex_set:Nn { Ne }
\cs_new_protected:Npn \__rpgicons_roll_syntax_die_set:n #1 {
    \regex_set:Ne \l__rpgicons_roll_syntax_die_regex { [ \clist_use:nn {#1} { } ] }
}

\keys_define:nn { rpgicons / local } {
    roll ~ syntax        .code:n     = { \__rpgicons_roll_syntax_die_set:n {#1} } ,
    roll ~ syntax        .initial:n  = { d , D }
}

\cs_new:Npn \__rpgicons_roll_syntax_convert:n #1 {
    \str_case:nnF {#1} {
        { 2 } { twoside }
        { 4 } { fourside }
        { 6 } { sixside }
        { 8 } { eightside }
        { 10 } { tenside }
        { 12 } { twelveside }
        { 20 } { twentyside }
        { 100 } { hundredside }
        { F } { fudge }
    }
    {#1}
}

\seq_new:N \l__rpgicons_roll_syntax_seq
\tl_new:N \l__rpgicons_roll_syntax_part_tl
\regex_new:N \l__rpgicons_roll_syntax_split_regex
\regex_new:N \l__rpgicons_roll_syntax_plusminus_regex
\regex_new:N \l__rpgicons_roll_syntax_times_regex
\bool_if:NTF \l__rpgicons_unicode_mode_bool {
    \regex_set:Nn \l__rpgicons_roll_syntax_split_regex { \s*([\+\-\x{2212}x\*\x{00D7}])\s* }
    \regex_set:Nn \l__rpgicons_roll_syntax_plusminus_regex { \A([\+\-\x{2212}])\Z }
    \regex_set:Nn \l__rpgicons_roll_syntax_times_regex { \A([x\*\x{00D7}])\Z }
} {
    \regex_set:Nn \l__rpgicons_roll_syntax_split_regex { \s*([\+\-x\*\x{00D7}])\s* }
    \regex_set:Nn \l__rpgicons_roll_syntax_plusminus_regex { \A([\+\-])\Z }
    \regex_set:Nn \l__rpgicons_roll_syntax_times_regex { \A([x\*\x{00D7}])\Z }
}
\regex_new:N \l__rpgicons_roll_syntax_dice_regex
\cs_new_protected:Npn \__rpgicons_roll_syntax_parse:n #1 {
    \regex_set:Nn \l__rpgicons_roll_syntax_dice_regex { \A(\d*)\ur{l__rpgicons_roll_syntax_die_regex}([F\d]+)\Z }
    \regex_split:NnN \l__rpgicons_roll_syntax_split_regex {#1} \l__rpgicons_roll_syntax_seq
    \seq_map_inline:Nn \l__rpgicons_roll_syntax_seq {
        \tl_set:Ne \l__rpgicons_roll_syntax_part_tl {##1}
        \regex_replace_case_once:nNTF {
            { \l__rpgicons_roll_syntax_plusminus_regex } { \c{,} $\1$ \c{,} }
            { \l__rpgicons_roll_syntax_times_regex } { \c{,} $\c{times}$ \c{,} }
            { \l__rpgicons_roll_syntax_dice_regex }
                { \c{ RPGIconsDie } { \c{ __rpgicons_roll_syntax_convert:n } { \2 } } { \1 } }
        } \l__rpgicons_roll_syntax_part_tl
        { \tl_use:N \l__rpgicons_roll_syntax_part_tl }
        { \tl_use:N \l__rpgicons_roll_syntax_part_tl }
    }
}
\cs_generate_variant:Nn \__rpgicons_roll_syntax_parse:n { e }

\tl_if_exist:NF \l__rpgicons_roll_actualtext_tl {
    \tl_new:N \l__rpgicons_roll_actualtext_tl
}
\cs_if_exist:NF \__rpgicons_roll_prepare_actualtext:Nn {
    \cs_new_protected:Npn \__rpgicons_roll_prepare_actualtext:Nn #1#2 {
        \tl_set:Nn #1 {#2}
        \tl_replace_all:Nne #1 { - } { \codepoint_generate:nn { "2212 } { 12 } }
        \tl_replace_all:Nne #1 { * } { \codepoint_generate:nn { "00D7 } { 12 } }
        \tl_replace_all:Nne #1 { x } { \codepoint_generate:nn { "00D7 } { 12 } }
    }
}

\NewDocumentCommand { \RPGIconsRoll } { m } {
    \mode_leave_vertical:
    \__rpgicons_roll_prepare_actualtext:Nn \l__rpgicons_roll_actualtext_tl {#1}
    \tag_socket_use:nV { rpgicons / roll / before } \l__rpgicons_roll_actualtext_tl
    \tag_suspend:n { \RPGIconsRoll }
    \__rpgicons_roll_syntax_parse:e {#1}
    \tag_resume:n { \RPGIconsRoll }
    \tag_socket_use:n { rpgicons / roll / after }
}
\cs_if_exist:NF \roll { \cs_new_eq:NN \roll \RPGIconsRoll }

% EOF
