% 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-03-30} {2.7.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_new:nnn { rpgicons } { argument-count-wrong } {
    The ~ key ~ `#1` ~ expects ~ exactly ~ #2 ~ arguments.
}
\msg_new:nnn { rpgicons } { shell-escape-disabled } {
    Please ~ run ~ LaTeX ~ with ~ enabled ~ shell ~ escape.
}
\msg_new:nnn { rpgicons } { backend-unsupported } {
    Backend ~ `#1` ~ does ~ not ~ support ~ including ~ PDF.
}
\msg_new:nnn { rpgicons } { generating-external~file } {
    Generating ~ external ~ PDF ~ file ~ `#1`.
}
\msg_new:nnn { rpgicons } { loading-external~file } {
    Loading ~ external ~ PDF ~ file ~ `#1`.
}
\msg_new:nnn { rpgicons } { precomposed-missing } {
    The ~ icon ~ `#1' ~ has ~ not ~ been ~ precomposed.
}
\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_set_eq:cN { rpgicons_draw_shape_ d2 : } \rpgicons_draw_shape_twoside:

\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_set_eq:cN { rpgicons_draw_shape_ d4 : } \rpgicons_draw_shape_fourside:

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

\cs_set_eq:cN { rpgicons_draw_shape_ d6 : } \rpgicons_draw_shape_sixside:

\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_set_eq:cN { rpgicons_draw_shape_ d8 : } \rpgicons_draw_shape_eightside:

\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_set_eq:cN { rpgicons_draw_shape_ d10 : } \rpgicons_draw_shape_tenside:

\cs_new_protected:Npn \rpgicons_draw_shape_twelveside: {
    \draw_path_moveto: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_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_set_eq:cN { rpgicons_draw_shape_ d12 : } \rpgicons_draw_shape_twelveside:

\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_set_eq:cN { rpgicons_draw_shape_ d20 : } \rpgicons_draw_shape_twentyside:

\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 }
}

\cs_set_eq:cN { rpgicons_draw_shape_ d100 : } \rpgicons_draw_shape_hundredside:

\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 + .425cm + .425cm ) + ( \draw_point_polar:nn { .425cm + .425cm } { 240 } ) }
    \draw_path_arc:nnn { 240 } { 270 } { .425cm }
    \draw_path_arc:nnn { 90 } { 60 } { .425cm }
    \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 { ( 2 * sind(30) * -.3cm , -.3cm ) + ( \draw_point_polar:nnn { .1cm } { .175cm } { 120 } ) }
    \draw_path_arc:nnnn { 180 } { 240 } { .1cm } { .175cm }
    \draw_path_arc:nnnn { 120 } { 60 } { .3cm } { .5cm }
    \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_lineto:n { ( .25cm - .45cm , -.05cm ) + ( \draw_point_polar:nn { .45cm } { -40 } ) }
    \draw_path_arc:nnn { 180 } { 140 } { .45cm }
    \draw_path_lineto:n { .2cm + .175cm - .15cm , .125cm + .1cm - .2cm }
    \draw_path_arc:nnnn { -90 } { 0 } { .15cm } { .2cm }
    \draw_path_arc:nnnn { 90 } { 180 } { .175cm } { .1cm }
    \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_armour: {
    \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_set_eq:NN \rpgicons_draw_shape_armor: \rpgicons_draw_shape_armour:

\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 { .175cm , .25cm }
    \draw_path_lineto:n { .2cm , .275cm }
    \draw_path_arc:nnn { 315 } { 135 } { sqrt(2) * -.0375cm }
    \draw_path_lineto:n { .25cm , .175cm }
}

\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 { 240 } { 135 } { .45cm } { .35cm }
    \draw_path_curveto:nnn { -.15cm , .2cm } { 0cm , .25cm } { -.05cm , .425cm }
    \draw_path_curveto:nnn { .15cm , .375cm } { .375cm , .15cm } {
        ( .15cm , -.425cm ) + ( \draw_point_polar:nnn { .45cm } { .375cm } { 60 } )
    }
    \draw_path_arc:nnnn { 0 } { -60 } { .45cm } { .375cm }
    \draw_path_moveto:n { -.075cm , -.3cm }
    \draw_path_arc:nnnn { 220 } { 150 } { .35cm } { .2cm }
    \draw_path_arc:nnnn { 225 } { 360 } { .1cm } { .25cm }
    \draw_path_curveto:nnn { .2cm , -.05cm } { .2cm , -.2cm } { .075cm , -.3cm }
}

\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 } { 270 } { .075cm }
    \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 , .-.375cm }
    \draw_path_lineto:n { ( .2cm , .125cm ) + ( \draw_point_polar:nn { .2cm } { -45 } ) }
    \draw_path_arc:nnn { -45 } { 180 } { .2cm }
    \draw_path_arc:nnn { 0 } { 225 } { .2cm }
    \draw_path_close:
}

% 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 { -.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_melee_i: {
    \draw_path_moveto:n { .15cm , .2cm }
    \draw_path_lineto:n { .275cm , .325cm }
    \draw_path_arc:nnn { 180 } { -90 } { .075cm }
    \draw_path_lineto:n { .225cm , .125cm }
    \draw_path_lineto:n { .325cm , .025cm }
    \draw_path_lineto:n { .25cm , -.05cm }
    \draw_path_lineto:n { -.025cm , .225cm }
    \draw_path_lineto:n { .05cm , .3cm }
    \draw_path_close:
    \draw_path_moveto:n { .175cm , .025cm }
    \draw_path_lineto:n { -.175cm , -.325cm }
    \draw_path_arc:nnn { 315 } { 225 } { .175cm }
    \draw_path_lineto:n { .05cm , .15cm }
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_melee_alt: \rpgicons_draw_shape_melee_i:
% ===

\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 , 0cm }
    \draw_path_lineto:n { ( -.175cm + .0625cm , .15cm ) + ( \draw_point_polar:nn { .0635cm } { -45 } ) }
    \draw_path_arc:nnn { -45 } { 180 } { .0625cm }
    \draw_path_arc:nnn { 0 } { 225 } { .0625cm }
    \draw_path_close:
    \draw_path_moveto:n { .175cm , 0cm }
    \draw_path_lineto:n { ( .175cm + .0625cm , .15cm ) + ( \draw_point_polar:nn { .0635cm } { -45 } ) }
    \draw_path_arc:nnn { -45 } { 180 } { .0625cm }
    \draw_path_arc:nnn { 0 } { 225 } { .0625cm }
    \draw_path_close:
}

\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_restrained_i: {
    \draw_path_moveto:n { .35cm , -.425cm }
    \draw_path_lineto:n { .35cm , .1cm }
    \draw_path_lineto:n { -.35cm , .1cm }
    \draw_path_lineto:n { -.35cm , -.425cm }
    \draw_path_close:
    \draw_path_moveto:n { .075cm , -.325cm }
    \draw_path_lineto:n { ( 0cm , -.1cm ) + ( \draw_point_polar:nn { .075cm } { -60 } ) }
    \draw_path_arc:nnn { -60 } { 240 } { .075cm }
    \draw_path_lineto:n { -.075cm , -.325cm }
    \draw_path_close:
    \draw_path_moveto:n { .225cm , .1cm }
    \draw_path_lineto:n { .225cm , .2cm }
    \draw_path_arc:nnn { 0 } { 180 } { .225cm }
    \draw_path_lineto:n { -.225cm , .1cm }
    \draw_path_moveto:n { .125cm , .1cm }
    \draw_path_lineto:n { .125cm , .2cm }
    \draw_path_arc:nnn { 0 } { 180 } { .125cm }
    \draw_path_lineto:n { -.125cm , .1cm }
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_restrained_alt: \rpgicons_draw_shape_restrained_i:
% ===

\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 , .35cm }
    \draw_path_lineto:n { -.275cm , -.15cm }
    \draw_path_arc:nnnn { 180 } { 360 } { .275cm } { .1cm }
    \draw_path_lineto:n { .275cm , .35cm }
    \draw_path_moveto:n { -.275cm , .2cm }
    \draw_path_lineto:n { .275cm , .2cm }
    \draw_path_moveto:n { -.125cm , .3cm }
    \draw_path_lineto:n { -.125cm , sqrt( 1 - ( -.125cm / .275cm ) ^ 2 ) * -.1cm - .15cm }
    \draw_path_moveto:n { 0cm , .3cm }
    \draw_path_lineto:n { 0cm , -.225cm }
    \draw_path_moveto:n { .125cm , .3cm }
    \draw_path_lineto:n { .125cm , sqrt( 1 - ( .125cm / .275cm ) ^ 2 ) * -.1cm - .15cm }
}

\cs_new_protected:Npn \rpgicons_draw_shape_bard_i: {
    \draw_path_moveto:n { -.425cm , -.425cm }
    \draw_path_arc:nnn { 180 } { 90 } { .85cm }
    \draw_path_arc:nnn { 360 } { 270 } { .45cm }
    \draw_path_arc:nnn { 240 } { 270 } { .35cm }
    \draw_path_arc:nnn { 310 } { 280 } { .85cm }
}

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_bard_alt: \rpgicons_draw_shape_bard_i:
% ===

\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 } { .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:

\cs_new_protected:Npn \rpgicons_draw_shape_jewellery_i: {
    \draw_path_circle:nn { 0cm , -.075cm } { .225cm }
    \draw_path_moveto:n { ( 0cm , -.075cm ) + ( \draw_point_polar:nn { .35cm } { 120 } ) }
    \draw_path_arc:nnn { 120 } { 420 } { .35cm }
    \draw_path_moveto:n { 0cm , .225cm }
    \draw_path_lineto:n { .2cm , .35cm }
    \draw_path_lineto:n { .15cm , .425cm }
    \draw_path_lineto:n { -.15cm , .425cm }
    \draw_path_lineto:n { -.2cm , .35cm }
    \draw_path_close:
}

\cs_set_eq:NN \rpgicons_draw_shape_jewelry_i: \rpgicons_draw_shape_jewellery_i:

% === backward compatibility
\cs_set_eq:NN \rpgicons_draw_shape_jewelry_alt: \rpgicons_draw_shape_jewelry_i:
\cs_set_eq:NN \rpgicons_draw_shape_jewellery_alt: \rpgicons_draw_shape_jewellery_i:
% ===

% 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_aux_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

\str_new:N \l_rpgicons_icon_actualtext_str
\str_new:N \l_rpgicons_icon_precompose_ref_str
\bool_new:N \l__rpgicons_icon_precompose_bool

\str_new:N \l_rpgicons_precompose_output_str

\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 }
    }
}

\tl_new:N \l__rpgicons_shape_name_tl
\tl_new:N \l__rpgicons_shape_name_alias_tl
\cs_new_protected:Npn \rpgicons_shape_set_eq:nn #1#2 {
    \tl_set:Nn \l__rpgicons_shape_name_alias_tl {#1}
    \tl_set:Nn \l__rpgicons_shape_name_tl {#2}
    \tl_replace_all:Nnn \l__rpgicons_shape_name_alias_tl { ~ } { _ }
    \tl_replace_all:Nnn \l__rpgicons_shape_name_tl { ~ } { _ }
    \cs_set_eq:cc {
        rpgicons_draw_shape_ \l__rpgicons_shape_name_alias_tl :
    } {
        rpgicons_draw_shape_ \l__rpgicons_shape_name_tl :
    }
}
\cs_new_protected:Npn \__rpgicons_shape_set_eq:w #1#2 \q_stop: {
    \rpgicons_shape_set_eq:nn {#1} {#2}
}

\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_aux_fp \l_rpgicons_icon_transform_scale_fp
        \fp_set:Nn \l_rpgicons_icon_transform_scale_fp {
            \l__rpgicons_icon_transform_aux_fp * #1
        }
    } ,
    scale                .initial:n  = { 1.0 } ,
    scale ~ inner        .code:n     = {
        \fp_set_eq:NN \l__rpgicons_icon_transform_aux_fp \l_rpgicons_icon_transform_scale_inner_fp
        \fp_set:Nn \l_rpgicons_icon_transform_scale_inner_fp {
            \l__rpgicons_icon_transform_aux_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 } ,
    alias                .code:n     = {
        \int_compare:nNnTF { \tl_count:n {#1} } = { 2 } {
            \__rpgicons_shape_set_eq:w #1 \q_stop:
        } {
            \msg_error:nnnn { rpgicons } { argument-count-wrong } { alias } { 2 }
        }
    } ,
    precompose ~ output  .str_set:N  = \l_rpgicons_precompose_output_str ,
    precompose ~ output  .initial:e  = { \c_sys_jobname_str _rpgicons } ,
    precompose           .code:n     = {
        \bool_set_true:N \l__rpgicons_icon_precompose_bool
        \str_set:Nn \l_rpgicons_icon_precompose_ref_str {#1}
    } ,
    actualtext           .str_set:N  = \l_rpgicons_icon_actualtext_str ,
    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 ,
    d2 , d4 , d6 , d8 , d10 , d12 , d20 , d100 ,
    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 , armour , 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 , melee ~ i , ranged , magic , singlehanded , doublehanded ,
    buff , blinded , charmed , deafened , exhausted , frightened , grappled , incapacitated , invisible ,
    paralyzed , petrified , poisoned , prone , restrained , restrained ~ i , stunned , unconscious ,
    hearing , seeing ,
    artificer , artificer ~ i , barbarian , bard , bard ~ i , 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 , gem , jewellery , jewelry , jewellery ~ i , jewelry ~ i ,
    % === backward compatibility
    dexterity ~ alt , wisdom ~ alt , necrotic ~ alt , melee ~ alt , restrained ~ alt ,
    artificer ~ alt , bard ~ alt , cleric ~ alt , druid ~ alt , monk ~ alt , paladin ~ alt ,
    psion ~ alt , ranger ~ alt , rogue ~ alt , sorcerer ~ alt , wizard ~ alt ,
    jewellery ~ alt , jewelry ~ 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}
        }
    }
}

\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 { }
    }
}

% === precompose icons
\iow_new:N \l__rpgicons_precompose_document_iow
\clist_new:N \g__rpgicons_precompose_clist
\fp_new:N \l__rpgicons_precompose_scale_fp
\fp_new:N \l__rpgicons_precompose_scale_aux_fp
\str_new:N \l__rpgicons_precompose_pdf_hash_base_str
\str_new:N \g__rpgicons_precompose_pdf_hash_str
\str_new:N \l__rpgicons_precompose_ref_str
\cs_generate_variant:Nn \hbox_to_wd:nn { ee }
\cs_generate_variant:Nn \iow_open:Nn { Ne }
\cs_generate_variant:Nn \prop_to_keyval:N { c }
\cs_generate_variant:Nn \str_mdfive_hash:n { V }
\prg_generate_conditional_variant:Nnn \str_if_eq:nn { Ve } { TF }

\cs_new_protected:Npn \__rpgicons_precompose_calculate_scale_aux:Nnn #1#2#3 {
    \str_if_eq:nnT {#2} { scale } {
        \fp_set_eq:NN \l__rpgicons_precompose_scale_aux_fp #1
        \fp_set:Nn #1 {
            \l__rpgicons_precompose_scale_aux_fp * #3
        }
    }
}

\cs_new_protected:Npn \__rpgicons_precompose_calculate_scale:Nn #1#2 {
    \fp_set:Nn #1 { 1.0 }
    \keyval_parse:nnn {
        \use_none:n
    } {
        \__rpgicons_precompose_calculate_scale_aux:Nnn #1
    } {#2}
}

\cs_new_protected:Npn \__rpgicons_precompose_register:nnnn #1#2#3#4 {
    \clist_put_right:Nn \g__rpgicons_precompose_clist {#1}
    \prop_new:c { g__rpgicons_precompose_ #1 _prop }
    \prop_put:cne { g__rpgicons_precompose_ #1 _prop }
        { negative } { \bool_if:nT {#2} { * } }
    \prop_put:cnn { g__rpgicons_precompose_ #1 _prop }
        { style } {#3}
    \prop_put:cnn { g__rpgicons_precompose_ #1 _prop }
        { shape } {#4}
    \__rpgicons_precompose_calculate_scale:Nn \l__rpgicons_precompose_scale_fp {#3}
    \prop_put:cnV { g__rpgicons_precompose_ #1 _prop }
        { scale } \l__rpgicons_precompose_scale_fp
    \str_put_right:Ne \l__rpgicons_precompose_pdf_hash_base_str {
        | #1 | \prop_to_keyval:c { g__rpgicons_precompose_ #1 _prop } |
    }
}
\cs_generate_variant:Nn \__rpgicons_precompose_register:nnnn { V }

\sys_ensure_backend:
\NewDocumentCommand \RPGIconsPrecomposeIcon { s O { } o m } {
    \bool_lazy_or:nnT {
        \str_if_eq_p:Vn \c_sys_backend_str { dvips }
    } {
        \str_if_eq_p:Vn \c_sys_backend_str { dvisvgm }
    } {
        \msg_error:nnV { rpgicons } { backend-unsupported } \c_sys_backend_str
    }
    \tl_if_novalue:nTF {#3} {
        \__rpgicons_precompose_register:nnnn {#4} {#1} {#2} {#4}
    } {
        \str_set:Nn \l__rpgicons_precompose_ref_str {#3}
        \str_replace_all:Nnn \l__rpgicons_precompose_ref_str { ~ } { _ }
        \__rpgicons_precompose_register:Vnnn \l__rpgicons_precompose_ref_str {#1} {#2} {#4}
    }
}

\NewDocumentCommand \RPGIconsPDFDestination { m } {
    \pdf_destination:nn { rpgicons. #1 } { fit }
}

\NewDocumentCommand \RPGIconsPDFHash { m } {
    \str_gset:Nn \g__rpgicons_precompose_pdf_hash_str {#1}
}

\sys_if_engine_luatex:T {
    \lua_load_module:n { rpgicons }
}

\hook_gput_code:nnn { begindocument } { . } {
    \clist_if_empty:NF \g__rpgicons_precompose_clist {
        \str_if_eq:VeTF \g__rpgicons_precompose_pdf_hash_str {
            \str_mdfive_hash:V \l__rpgicons_precompose_pdf_hash_base_str
        } {
            \msg_info:nne { rpgicons } { loading-external~file } {
                \str_use:N \l_rpgicons_precompose_output_str
            }
        } {
            \sys_if_shell:TF {
                \msg_info:nne { rpgicons } { generating-external~file } {
                    \str_use:N \l_rpgicons_precompose_output_str
                }
                \iow_open:Ne \l__rpgicons_precompose_document_iow { \str_use:N \l_rpgicons_precompose_output_str .tex }
                \iow_now:Nn \l__rpgicons_precompose_document_iow { \documentclass [ multi=rpgiconsuse ] { standalone } }
                \iow_now:Nn \l__rpgicons_precompose_document_iow { \usepackage { rpgicons } }
                \iow_now:Nn \l__rpgicons_precompose_document_iow { \begin { document } }
                \clist_map_inline:Nn \g__rpgicons_precompose_clist {
                    \iow_now:Ne \l__rpgicons_precompose_document_iow {
                        \tl_to_str:n { \begin { rpgiconsuse } }
                        \str_use:N \c_percent_str
                    }
                    \iow_now:Nn \l__rpgicons_precompose_document_iow { \RPGIconsUseIcon }
                    \iow_now:Ne \l__rpgicons_precompose_document_iow {
                        \prop_item:cn { g__rpgicons_precompose_ #1 _prop } { negative }
                        [
                            \prop_item:cn { g__rpgicons_precompose_ #1 _prop } { style }
                        ]
                        \str_use:N \c_left_brace_str
                            \prop_item:cn { g__rpgicons_precompose_ #1 _prop } { shape }
                        \str_use:N \c_right_brace_str
                        \str_use:N \c_percent_str
                    }
                    \iow_now:Nn \l__rpgicons_precompose_document_iow { \RPGIconsPDFDestination }
                    \iow_now:Ne \l__rpgicons_precompose_document_iow {
                        \str_use:N \c_left_brace_str #1 \str_use:N \c_right_brace_str
                        \str_use:N \c_percent_str
                    }
                    \iow_now:Nn \l__rpgicons_precompose_document_iow { \end { rpgiconsuse } }
                }
                \iow_now:Nn \l__rpgicons_precompose_document_iow { \end { document } }
                \iow_close:N \l__rpgicons_precompose_document_iow
                \sys_shell_now:e { pdflatex ~ \str_use:N \l_rpgicons_precompose_output_str .tex }
                \iow_now:ce { @auxout } {
                    \tl_to_str:n { \RPGIconsPDFHash }
                    \str_use:N \c_left_brace_str
                    \str_mdfive_hash:V \l__rpgicons_precompose_pdf_hash_base_str
                    \str_use:N \c_right_brace_str
                }
                \sys_if_engine_luatex:T {
                    \lua_now:e {
                        rpgicons.get_dest_pages(' \lua_escape:e { \str_use:N \l_rpgicons_precompose_output_str } .pdf')
                    }
                }
            } {
                \msg_error:nn { rpgicons } { shell-escape-disabled }
            }
        }
    }
    \bool_lazy_and:nnT {
        \file_if_exist_p:n { \str_use:N \l_rpgicons_precompose_output_str .pdf }
    } {
        \sys_if_engine_luatex_p:
    } {
        \lua_now:e {
            rpgicons.get_dest_pages(' \lua_escape:e { \str_use:N \l_rpgicons_precompose_output_str } .pdf')
        }
    }
}

\cs_new_protected:Npn \__rpgicons_load_icon_aux:nn #1#2 {
    \box_move_up:nn {
        \fp_to_dim:n { \prop_item:cn { g__rpgicons_precompose_ #1 _prop } { scale } * \l_rpgicons_icon_baseline_dim }
    } {
        \hbox_to_wd:ee {
            \fp_to_dim:n { \prop_item:cn { g__rpgicons_precompose_ #1 _prop } { scale } * 1cm }
        } {
            \sys_if_output_pdf:TF {
                \sys_if_engine_luatex:TF {
                    \exp_not:N \lua_now:e {
                        rpgicons.load_icon(' rpgicons. \lua_escape:n {#1} ', ' \lua_escape:n {#2} ')
                    }
                } {
                    \prop_if_in:cnTF { g__rpgicons_precompose_ #1 _prop } { ref } {
                        \tex_pdfrefximage:D
                        \prop_item:cn { g__rpgicons_precompose_ #1 _prop } { ref }
                        \scan_stop:
                    } {
                        \tex_pdfximage:D named { rpgicons. #1 } {#2}
                        \tex_pdfrefximage:D
                        \tex_pdflastximage:D
                        \scan_stop:
                        \prop_put:cnV { g__rpgicons_precompose_ #1 _prop } { ref }
                            \tex_pdflastximage:D
                    }
                }
            } {
                \prop_if_in:cnTF { g__rpgicons_precompose_ #1 _prop } { ref } {
                    \exp_not:N \tex_special:D {
                        pdf:usexobj ~ @ \str_mdfive_hash:n { rpgicons. #1 }
                    }
                } {
                    \exp_not:N \tex_special:D {
                        pdf:image ~ @ \str_mdfive_hash:n { rpgicons. #1 } ~
                        named ~ " rpgicons. #1 " ~ ( #2 )
                    }
                    \prop_put:cne { g__rpgicons_precompose_ #1 _prop } { ref } {
                        \str_mdfive_hash:n { rpgicons. #1 }
                    }
                }
            }
            \skip_horizontal:n { 0pt plus 1fil minus 1fil }
        }
    }
}
\cs_generate_variant:Nn \__rpgicons_load_icon_aux:nn { V }

\cs_new_protected:Npn \__rpgicons_load_icon:nn #1#2 {
    \str_set:Nn \l__rpgicons_precompose_ref_str {#1}
    \str_replace_all:Nnn \l__rpgicons_precompose_ref_str { ~ } { _ }
    \prop_if_exist:cTF { g__rpgicons_precompose_ \str_use:N \l__rpgicons_precompose_ref_str _prop } {
        \__rpgicons_load_icon_aux:Vn \l__rpgicons_precompose_ref_str {#2}
    } {
        \msg_error:nnn { rpgicons } { precomposed-missing } {#1}
    }
}
\cs_generate_variant:Nn \__rpgicons_load_icon:nn { ee }
% ===

\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:
        \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 } { , }
                }
            }
        }
        \keys_set_exclude_groups:nne { rpgicons / local } { extra } {#2}
        \str_if_empty:NT \l_rpgicons_icon_actualtext_str {
            \str_set:Ne \l_rpgicons_icon_actualtext_str {
                \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} {
            \str_put_left:Nn \l_rpgicons_icon_actualtext_str { #3 ~ }
        }
        \tag_socket_use:nV { rpgicons / icon / before } \l_rpgicons_icon_actualtext_str
        \bool_if:NTF \l__rpgicons_icon_precompose_bool {
            \__rpgicons_load_icon:ee {
                \str_if_empty:NTF \l_rpgicons_icon_precompose_ref_str {
                    \str_use:N \l__rpgicons_icon_shape_name_str
                } {
                    \str_use:N \l_rpgicons_icon_precompose_ref_str
                }
            } {
                \str_use:N \l_rpgicons_precompose_output_str .pdf
            }
        } {
            \draw_begin:
                \draw_set_cap_round:
                \draw_set_join_round:
                \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
