<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://opensimulator.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://opensimulator.org/index.php?action=history&amp;feed=atom&amp;title=User%3AAllen_Kerensky%2FMyriad_Lite_Preview_5%2FCreator_Random</id>
		<title>User:Allen Kerensky/Myriad Lite Preview 5/Creator Random - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://opensimulator.org/index.php?action=history&amp;feed=atom&amp;title=User%3AAllen_Kerensky%2FMyriad_Lite_Preview_5%2FCreator_Random"/>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=User:Allen_Kerensky/Myriad_Lite_Preview_5/Creator_Random&amp;action=history"/>
		<updated>2026-05-15T11:39:35Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.9</generator>

	<entry>
		<id>http://opensimulator.org/index.php?title=User:Allen_Kerensky/Myriad_Lite_Preview_5/Creator_Random&amp;diff=27355&amp;oldid=prev</id>
		<title>Allen Kerensky: moved User:Allen Kerensky:Myriad Lite Preview 5:Creator Random to User:Allen Kerensky/Myriad Lite Preview 5/Creator Random: move into subsite</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=User:Allen_Kerensky/Myriad_Lite_Preview_5/Creator_Random&amp;diff=27355&amp;oldid=prev"/>
				<updated>2012-02-06T22:44:23Z</updated>
		
		<summary type="html">&lt;p&gt;moved &lt;a href=&quot;/wiki/User:Allen_Kerensky:Myriad_Lite_Preview_5:Creator_Random&quot; class=&quot;mw-redirect&quot; title=&quot;User:Allen Kerensky:Myriad Lite Preview 5:Creator Random&quot;&gt;User:Allen Kerensky:Myriad Lite Preview 5:Creator Random&lt;/a&gt; to &lt;a href=&quot;/wiki/User:Allen_Kerensky/Myriad_Lite_Preview_5/Creator_Random&quot; title=&quot;User:Allen Kerensky/Myriad Lite Preview 5/Creator Random&quot;&gt;User:Allen Kerensky/Myriad Lite Preview 5/Creator Random&lt;/a&gt;: move into subsite&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 22:44, 6 February 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Allen Kerensky</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/index.php?title=User:Allen_Kerensky/Myriad_Lite_Preview_5/Creator_Random&amp;diff=27250&amp;oldid=prev</id>
		<title>Allen Kerensky: created</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/index.php?title=User:Allen_Kerensky/Myriad_Lite_Preview_5/Creator_Random&amp;diff=27250&amp;oldid=prev"/>
				<updated>2012-02-06T19:54:07Z</updated>
		
		<summary type="html">&lt;p&gt;created&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Myriad Lite Creator Random =&lt;br /&gt;
&lt;br /&gt;
== Myriad_Lite_Creator_Random-v0.0.1-20120203.lsl ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
// Myriad_Lite_Character_Creator-v0.0.1-20120203.lsl&lt;br /&gt;
// Copyright (c) 2012 By Allen Kerensky (OSG/SL)&lt;br /&gt;
// The Myriad RPG System was designed, written, and illustrated by Ashok Desai&lt;br /&gt;
// Myriad RPG licensed under the Creative Commons Attribution 2.0 UK: England and Wales&lt;br /&gt;
// http://creativecommons.org/licenses/by/2.0/uk/&lt;br /&gt;
// Myriad Lite software Copyright (c) 2011-2012 by Allen Kerensky (OSG/SL)&lt;br /&gt;
// Baroun's Adventure Machine Copyright (c) 2008-2011 by Baroun Tardis (SL)&lt;br /&gt;
// Myriad Lite and Baroun's Adventure Machine licensed under the&lt;br /&gt;
// Creative Commons Attribution-Share Alike-Non-Commercial 3.0 Unported&lt;br /&gt;
// http://creativecommons.org/licenses/by-nc-sa/3.0/&lt;br /&gt;
// You must agree to the terms of this license before making any use of this software.&lt;br /&gt;
// If you do not agree to this license, simply delete these materials.&lt;br /&gt;
// There is no warranty, express or implied, for your use of these materials.&lt;br /&gt;
&lt;br /&gt;
integer CHANOBJECT;&lt;br /&gt;
integer HANDOBJECT;&lt;br /&gt;
integer CHANMYRIAD = -999;&lt;br /&gt;
integer HANDMYRIAD;&lt;br /&gt;
integer CHANCOMMAND = 5;&lt;br /&gt;
integer HANDCOMMAND;&lt;br /&gt;
&lt;br /&gt;
list REGION_GENERATORS;&lt;br /&gt;
list REGION_POINT_POOLS;&lt;br /&gt;
list REGION_GENRES;&lt;br /&gt;
list REGION_SPECIES;&lt;br /&gt;
list REGION_BACKGROUNDS;&lt;br /&gt;
list REGION_CAREERS;&lt;br /&gt;
list REGION_EQUIPMENT;&lt;br /&gt;
&lt;br /&gt;
list AV_STATISTICS;&lt;br /&gt;
list AV_RESILIENCES;&lt;br /&gt;
list AV_SKILLS;&lt;br /&gt;
list AV_BOONS;&lt;br /&gt;
list AV_FLAWS;&lt;br /&gt;
list AV_MORTAL_EFFECTS;&lt;br /&gt;
list AV_SOCIAL_EFFECTS;&lt;br /&gt;
list AV_MAGIC_EFFECTS;&lt;br /&gt;
list AV_VEHICLE_EFFECTS;&lt;br /&gt;
list AV_SPECIES;&lt;br /&gt;
list AV_BACKGROUNDS;&lt;br /&gt;
list AV_CAREERS;&lt;br /&gt;
list AV_EQUIPMENT;&lt;br /&gt;
&lt;br /&gt;
key POSER; // who is sitting here&lt;br /&gt;
&lt;br /&gt;
integer PN_SHOWCAT = 0;&lt;br /&gt;
integer PN_SHOWITEM = 0;&lt;br /&gt;
integer PN_SHOWPOOL = 0;&lt;br /&gt;
&lt;br /&gt;
list RES_STATS = [];&lt;br /&gt;
list RES_TYPES = [];&lt;br /&gt;
&lt;br /&gt;
SETUP() {&lt;br /&gt;
    // calculate listener channel&lt;br /&gt;
    CHANOBJECT = (integer)(&amp;quot;0x&amp;quot;+llGetSubString((string)llGetKey(),0,6));&lt;br /&gt;
    // release previous object channel&lt;br /&gt;
    if ( HANDOBJECT != 0 ) llListenRemove(HANDOBJECT);&lt;br /&gt;
    // start object-specific listener&lt;br /&gt;
    HANDOBJECT = llListen(CHANOBJECT,&amp;quot;&amp;quot;,NULL_KEY,&amp;quot;&amp;quot;);&lt;br /&gt;
    // release previous Myriad channel&lt;br /&gt;
    if ( HANDMYRIAD != 0 ) llListenRemove(HANDMYRIAD);    &lt;br /&gt;
    // listen on Myriad region event channel&lt;br /&gt;
    HANDMYRIAD = llListen(CHANMYRIAD,&amp;quot;&amp;quot;,NULL_KEY,&amp;quot;&amp;quot;);    &lt;br /&gt;
    // release previous command channel&lt;br /&gt;
    if ( HANDCOMMAND != 0 ) llListenRemove(CHANCOMMAND);&lt;br /&gt;
    // listen on command channel&lt;br /&gt;
    HANDCOMMAND = llListen(CHANCOMMAND,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);&lt;br /&gt;
    // search all prims for prims to show output on, by name&lt;br /&gt;
    integer numprims = llGetNumberOfPrims();&lt;br /&gt;
    integer i;&lt;br /&gt;
    for ( i=2; i &amp;lt;= numprims; i++) {&lt;br /&gt;
        llSetLinkPrimitiveParamsFast(i,[PRIM_TEXT,&amp;quot;&amp;quot;,&amp;lt;0,0,0&amp;gt;,0]);&lt;br /&gt;
        string primname = llGetLinkName(i);&lt;br /&gt;
        if ( primname == &amp;quot;SHOW ITEM&amp;quot; ) { PN_SHOWITEM = i; }&lt;br /&gt;
        if ( primname == &amp;quot;SHOW CATEGORY&amp;quot; ) { PN_SHOWCAT = i; }&lt;br /&gt;
        if ( primname == &amp;quot;SHOW POINTPOOL&amp;quot; ) { PN_SHOWPOOL = i; }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SAVE() {&lt;br /&gt;
    string tempname = llGetObjectName();&lt;br /&gt;
    llSetObjectName(&amp;quot;&amp;quot;);&lt;br /&gt;
    llSay(PUBLIC_CHANNEL,&amp;quot;VERSION=0.0.3&amp;quot;);&lt;br /&gt;
    llSay(PUBLIC_CHANNEL,&amp;quot;NAME=&amp;quot;+llKey2Name(POSER));&lt;br /&gt;
    // Species&lt;br /&gt;
    llSay(PUBLIC_CHANNEL,&amp;quot;SPECIES=Unknown&amp;quot;);&lt;br /&gt;
    // Backgrounds&lt;br /&gt;
    llSay(PUBLIC_CHANNEL,&amp;quot;BACKGROUNDS=Unknown&amp;quot;);&lt;br /&gt;
    // Careers&lt;br /&gt;
    llSay(PUBLIC_CHANNEL,&amp;quot;CAREERS=Unknown&amp;quot;);&lt;br /&gt;
    llSay(PUBLIC_CHANNEL,&amp;quot;XP=0&amp;quot;);&lt;br /&gt;
    llSay(PUBLIC_CHANNEL,&amp;quot;XPLEVEL=1&amp;quot;);&lt;br /&gt;
    // Statistics&lt;br /&gt;
    integer numstats = llGetListLength(AV_STATISTICS);&lt;br /&gt;
    integer count;&lt;br /&gt;
    for ( count = 0; count &amp;lt; numstats; count++) {&lt;br /&gt;
        string name = llList2String(AV_STATISTICS,count++);&lt;br /&gt;
        integer amount = llList2Integer(AV_STATISTICS,count);&lt;br /&gt;
        if ( amount &amp;gt; 0 ) llSay(PUBLIC_CHANNEL,&amp;quot;STATISTIC=&amp;quot;+name+&amp;quot;,&amp;quot;+(string)amount);&lt;br /&gt;
    }&lt;br /&gt;
    // Resiliences&lt;br /&gt;
    numstats = llGetListLength(AV_RESILIENCES);&lt;br /&gt;
    for ( count = 0; count &amp;lt; numstats; count++) {&lt;br /&gt;
        string name = llList2String(AV_RESILIENCES,count++);&lt;br /&gt;
        integer amount = llList2Integer(AV_RESILIENCES,count);&lt;br /&gt;
        string base = llList2String(RES_STATS,llListFindList(RES_STATS,[name]) + 1);&lt;br /&gt;
        integer baseamt;&lt;br /&gt;
            if ( llList2String(RES_TYPES,llListFindList(RES_TYPES,[name]) + 1 ) == &amp;quot;Critical&amp;quot; ) {&lt;br /&gt;
                baseamt = llCeil( llList2Float(AV_STATISTICS,llListFindList(AV_STATISTICS,[base]) + 1) / 2 );&lt;br /&gt;
            } else {&lt;br /&gt;
                baseamt = llList2Integer(AV_STATISTICS,llListFindList(AV_STATISTICS,[base]) + 1);&lt;br /&gt;
            }&lt;br /&gt;
        if ( (baseamt + amount ) &amp;gt; 0 ) llSay(PUBLIC_CHANNEL,&amp;quot;RESILIENCE=&amp;quot;+name+&amp;quot;,&amp;quot;+(string)(baseamt+amount));&lt;br /&gt;
    }&lt;br /&gt;
    // Boons&lt;br /&gt;
    numstats = llGetListLength(AV_BOONS);&lt;br /&gt;
    for ( count = 0; count &amp;lt; numstats; count++) {&lt;br /&gt;
        string name = llList2String(AV_BOONS,count++);&lt;br /&gt;
        integer amount = llList2Integer(AV_BOONS,count);&lt;br /&gt;
        if ( amount &amp;gt; 0 ) llSay(PUBLIC_CHANNEL,&amp;quot;BOON=&amp;quot;+name+&amp;quot;,&amp;quot;+(string)amount);&lt;br /&gt;
    }&lt;br /&gt;
    // Flaws&lt;br /&gt;
    numstats = llGetListLength(AV_FLAWS);&lt;br /&gt;
    for ( count = 0; count &amp;lt; numstats; count++) {&lt;br /&gt;
        string name = llList2String(AV_FLAWS,count++);&lt;br /&gt;
        integer amount = llList2Integer(AV_FLAWS,count);&lt;br /&gt;
        if ( amount &amp;gt; 0 ) llSay(PUBLIC_CHANNEL,&amp;quot;FLAW=&amp;quot;+name+&amp;quot;,&amp;quot;+(string)amount);&lt;br /&gt;
    }&lt;br /&gt;
    // Skills&lt;br /&gt;
    numstats = llGetListLength(AV_SKILLS);&lt;br /&gt;
    for ( count = 0; count &amp;lt; numstats; count++) {&lt;br /&gt;
        string name = llList2String(AV_SKILLS,count++);&lt;br /&gt;
        integer amount = llList2Integer(AV_SKILLS,count);&lt;br /&gt;
        if ( amount &amp;gt; 0 ) llSay(PUBLIC_CHANNEL,&amp;quot;SKILL=&amp;quot;+name+&amp;quot;,&amp;quot;+(string)amount);&lt;br /&gt;
    }&lt;br /&gt;
    // Mortal Combat SFX    &lt;br /&gt;
    numstats = llGetListLength(AV_MORTAL_EFFECTS);&lt;br /&gt;
    for ( count = 0; count &amp;lt; numstats; count++) {&lt;br /&gt;
        string name = llList2String(AV_MORTAL_EFFECTS,count++);&lt;br /&gt;
        integer amount = llList2Integer(AV_MORTAL_EFFECTS,count);&lt;br /&gt;
        if ( amount &amp;gt; 0 ) llSay(PUBLIC_CHANNEL,&amp;quot;EFFECT=&amp;quot;+name+&amp;quot;,&amp;quot;+(string)amount);&lt;br /&gt;
    }&lt;br /&gt;
    // Social Combat SFX    &lt;br /&gt;
    numstats = llGetListLength(AV_SOCIAL_EFFECTS);&lt;br /&gt;
    for ( count = 0; count &amp;lt; numstats; count++) {&lt;br /&gt;
        string name = llList2String(AV_SOCIAL_EFFECTS,count++);&lt;br /&gt;
        integer amount = llList2Integer(AV_SOCIAL_EFFECTS,count);&lt;br /&gt;
        if ( amount &amp;gt; 0 ) llSay(PUBLIC_CHANNEL,&amp;quot;EFFECT=&amp;quot;+name+&amp;quot;,&amp;quot;+(string)amount);&lt;br /&gt;
    }    &lt;br /&gt;
    // Magic SFX&lt;br /&gt;
    numstats = llGetListLength(AV_MAGIC_EFFECTS);&lt;br /&gt;
    for ( count = 0; count &amp;lt; numstats; count++) {&lt;br /&gt;
        string name = llList2String(AV_MAGIC_EFFECTS,count++);&lt;br /&gt;
        integer amount = llList2Integer(AV_MAGIC_EFFECTS,count);&lt;br /&gt;
        if ( amount &amp;gt; 0 ) llSay(PUBLIC_CHANNEL,&amp;quot;EFFECT=&amp;quot;+name+&amp;quot;,&amp;quot;+(string)amount);&lt;br /&gt;
    }    &lt;br /&gt;
    // Vehicle SFX&lt;br /&gt;
    numstats = llGetListLength(AV_VEHICLE_EFFECTS);&lt;br /&gt;
    for ( count = 0; count &amp;lt; numstats; count++) {&lt;br /&gt;
        string name = llList2String(AV_VEHICLE_EFFECTS,count++);&lt;br /&gt;
        integer amount = llList2Integer(AV_VEHICLE_EFFECTS,count);&lt;br /&gt;
        if ( amount &amp;gt; 0 ) llSay(PUBLIC_CHANNEL,&amp;quot;EFFECT=&amp;quot;+name+&amp;quot;,&amp;quot;+(string)amount);&lt;br /&gt;
    }&lt;br /&gt;
    // Stunts    &lt;br /&gt;
    llSay(PUBLIC_CHANNEL,&amp;quot;STUNTS=&amp;quot;);&lt;br /&gt;
    // Quotes&lt;br /&gt;
    llSay(PUBLIC_CHANNEL,&amp;quot;QUOTE=&amp;quot;);&lt;br /&gt;
    // Equipment&lt;br /&gt;
    numstats = llGetListLength(AV_EQUIPMENT);&lt;br /&gt;
    for ( count = 0; count &amp;lt; numstats; count++) {&lt;br /&gt;
        string name = llList2String(AV_EQUIPMENT,count++);&lt;br /&gt;
        integer amount = llList2Integer(AV_EQUIPMENT,count);&lt;br /&gt;
        if ( amount &amp;gt; 0 ) llSay(PUBLIC_CHANNEL,&amp;quot;EQUIPMENT=&amp;quot;+name+&amp;quot;,&amp;quot;+(string)amount);&lt;br /&gt;
    }   &lt;br /&gt;
    llSetObjectName(tempname); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
RESET() {&lt;br /&gt;
    key who = llAvatarOnSitTarget();&lt;br /&gt;
    if ( who != NULL_KEY ) { llUnSit(who); }&lt;br /&gt;
    llResetScript();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ROLLUP() {&lt;br /&gt;
    // Stats: Mundane: d3, Heroic: d5, Godlike: d7&lt;br /&gt;
    integer numstats = llGetListLength(AV_STATISTICS);&lt;br /&gt;
    integer count;&lt;br /&gt;
    for ( count = 0; count &amp;lt; numstats; count++) {&lt;br /&gt;
        integer amount;&lt;br /&gt;
        if ( llList2String(REGION_GENERATORS,0) == &amp;quot;Mundane&amp;quot; ) {&lt;br /&gt;
            amount = ((integer)llFrand(3.0)) + 1;&lt;br /&gt;
        } else if ( llList2String(REGION_GENERATORS,0) == &amp;quot;Heroic&amp;quot; ) {&lt;br /&gt;
            amount = ((integer)llFrand(5.0)) + 1;&lt;br /&gt;
        } else if ( llList2String(REGION_GENERATORS,0) == &amp;quot;Godlike&amp;quot; ) {&lt;br /&gt;
            amount = ((integer)llFrand(7.0)) + 1;&lt;br /&gt;
        }&lt;br /&gt;
        AV_STATISTICS = llListReplaceList(AV_STATISTICS,[amount],count,count);&lt;br /&gt;
    }&lt;br /&gt;
    // Skills: 7 skills and levels: Mundane=1d4-1, Heroic=1d4, Godlike=1d4+1&lt;br /&gt;
    numstats = llGetListLength(AV_SKILLS) / 2;&lt;br /&gt;
    for ( count = 0; count &amp;lt; 7; count++) {&lt;br /&gt;
        integer skillnum = ((integer)llFrand(numstats) * 2 );&lt;br /&gt;
        integer amount;&lt;br /&gt;
        if ( llList2String(REGION_GENERATORS,0) == &amp;quot;Mundane&amp;quot; ) {&lt;br /&gt;
            amount = (integer)llFrand(4.0);        &lt;br /&gt;
        } else if ( llList2String(REGION_GENERATORS,0) == &amp;quot;Heroic&amp;quot; ) {&lt;br /&gt;
            amount = ((integer)llFrand(4.0)) + 1;&lt;br /&gt;
        } else if ( llList2String(REGION_GENERATORS,0) == &amp;quot;Godlike&amp;quot; ) {&lt;br /&gt;
            amount = ((integer)llFrand(4.0)) + 2;&lt;br /&gt;
        }&lt;br /&gt;
        AV_SKILLS = llListReplaceList(AV_SKILLS,[amount],skillnum + 1, skillnum + 1);&lt;br /&gt;
    }&lt;br /&gt;
    // SFX: Mundane = 3 SFX, Heroic = 5 SFX, Godlike = 7 SFX&lt;br /&gt;
    // Roll once for each Resilience: Mundane: d4, Heroic: d6, Godlike: d8&lt;br /&gt;
    numstats = llGetListLength(AV_RESILIENCES);&lt;br /&gt;
    for ( count = 0; count &amp;lt; numstats; count++) {&lt;br /&gt;
        string name = llList2String(AV_RESILIENCES,count++);&lt;br /&gt;
        string base = llList2String(RES_STATS,llListFindList(RES_STATS,[name]) + 1);&lt;br /&gt;
        integer baseamt;&lt;br /&gt;
            if ( llList2String(RES_TYPES,llListFindList(RES_TYPES,[name]) + 1 ) == &amp;quot;Critical&amp;quot; ) {&lt;br /&gt;
                baseamt = llCeil( llList2Float(AV_STATISTICS,llListFindList(AV_STATISTICS,[base]) + 1) / 2 );&lt;br /&gt;
            } else {&lt;br /&gt;
                baseamt = llList2Integer(AV_STATISTICS,llListFindList(AV_STATISTICS,[base]) + 1);&lt;br /&gt;
            }&lt;br /&gt;
        integer amount;&lt;br /&gt;
        if ( llList2String(REGION_GENERATORS,0) == &amp;quot;Mundane&amp;quot; ) {&lt;br /&gt;
            amount = ((integer)llFrand(4.0)) + 1;&lt;br /&gt;
        } else if ( llList2String(REGION_GENERATORS,0) == &amp;quot;Heroic&amp;quot; ) {&lt;br /&gt;
            amount = ((integer)llFrand(6.0)) + 1;&lt;br /&gt;
        } else if ( llList2String(REGION_GENERATORS,0) == &amp;quot;Godlike&amp;quot; ) {&lt;br /&gt;
            amount = ((integer)llFrand(8.0)) + 1;&lt;br /&gt;
        }&lt;br /&gt;
        AV_RESILIENCES = llListReplaceList(AV_RESILIENCES,[baseamt + amount],count,count);&lt;br /&gt;
    }&lt;br /&gt;
    // Boons: d4-2 boons&lt;br /&gt;
    // Flaws: d4-2 flaws&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default {&lt;br /&gt;
    state_entry() {&lt;br /&gt;
        SETUP();        &lt;br /&gt;
        llRegionSay(CHANMYRIAD,&amp;quot;LIST_REGION_SETTINGS&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    listen(integer channel,string name,key id,string message) {&lt;br /&gt;
        name = &amp;quot;&amp;quot;; // LSLINT&lt;br /&gt;
        id = NULL_KEY; // LSLINT&lt;br /&gt;
        if ( channel == CHANOBJECT ) {&lt;br /&gt;
            if ( llSubStringIndex(message,&amp;quot;REGION_SETTING&amp;quot;) == 0 ) {&lt;br /&gt;
                // Parse non-comment lines in keyword = value[,value,...] format&lt;br /&gt;
                list FIELDS = llParseString2List(message,[&amp;quot;|&amp;quot;],[]); // break line of text into = delimited fields&lt;br /&gt;
                string SUBFIELD = llStringTrim(llList2String(FIELDS,1),STRING_TRIM); // field one is the data&lt;br /&gt;
                list SUBFIELDS = llParseString2List(SUBFIELD,[&amp;quot;=&amp;quot;],[]);&lt;br /&gt;
                string CMD = llList2String(SUBFIELDS,0);&lt;br /&gt;
                string DATA = llList2String(SUBFIELDS,1); // break data field into comma-delimited subfields if needed&lt;br /&gt;
                if ( CMD == &amp;quot;GENERATORS&amp;quot; ) {&lt;br /&gt;
                    REGION_GENERATORS = llCSV2List(DATA);&lt;br /&gt;
                    llOwnerSay(&amp;quot;REGION_GENERATORS = &amp;quot;+(string)REGION_GENERATORS);&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;POINT_POOLS&amp;quot;) {&lt;br /&gt;
                    REGION_POINT_POOLS = llCSV2List(DATA);&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;STATISTICS&amp;quot;) {&lt;br /&gt;
                    list stats = llCSV2List(DATA);&lt;br /&gt;
                    integer num_stats = llGetListLength(stats);&lt;br /&gt;
                    integer count;&lt;br /&gt;
                    AV_STATISTICS = [];&lt;br /&gt;
                    for ( count = 0; count &amp;lt; num_stats; count++) {&lt;br /&gt;
                        AV_STATISTICS = AV_STATISTICS + [llList2String(stats,count),0];&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;RESILIENCES&amp;quot; ) {&lt;br /&gt;
                    list res = llCSV2List(DATA);&lt;br /&gt;
                    integer num_res = llGetListLength(res);&lt;br /&gt;
                    integer count;&lt;br /&gt;
                    AV_RESILIENCES = [];&lt;br /&gt;
                    for ( count = 0; count &amp;lt; num_res; count++) {&lt;br /&gt;
                        AV_RESILIENCES = AV_RESILIENCES + [llList2String(res,count),0];&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;SKILLS&amp;quot; ) {&lt;br /&gt;
                    list skills = llCSV2List(DATA);&lt;br /&gt;
                    integer num_skills = llGetListLength(skills);&lt;br /&gt;
                    integer count;&lt;br /&gt;
                    AV_SKILLS = [];&lt;br /&gt;
                    for ( count = 0; count &amp;lt; num_skills; count++) {&lt;br /&gt;
                        AV_SKILLS = AV_SKILLS + [llList2String(skills,count),0];&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;GENRES&amp;quot; ) {&lt;br /&gt;
                    REGION_GENRES = llCSV2List(DATA);&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;BOONS&amp;quot; ) {&lt;br /&gt;
                    list boons = llCSV2List(DATA);&lt;br /&gt;
                    integer num_boons = llGetListLength(boons);&lt;br /&gt;
                    integer count;&lt;br /&gt;
                    AV_BOONS = [];&lt;br /&gt;
                    for ( count = 0; count &amp;lt; num_boons; count++) {&lt;br /&gt;
                        AV_BOONS = AV_BOONS + [llList2String(boons,count),0];&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;FLAWS&amp;quot; ) {&lt;br /&gt;
                    list flaws = llCSV2List(DATA);&lt;br /&gt;
                    integer num_flaws = llGetListLength(flaws);&lt;br /&gt;
                    integer count;&lt;br /&gt;
                    AV_FLAWS = [];&lt;br /&gt;
                    for ( count = 0; count &amp;lt; num_flaws; count++) {&lt;br /&gt;
                        AV_FLAWS = AV_FLAWS + [llList2String(flaws,count),0];&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;MORTAL_EFFECTS&amp;quot; ) {&lt;br /&gt;
                    list meffects = llCSV2List(DATA);&lt;br /&gt;
                    integer num_meffects = llGetListLength(meffects);&lt;br /&gt;
                    integer count;&lt;br /&gt;
                    AV_MORTAL_EFFECTS = [];&lt;br /&gt;
                    for ( count = 0; count &amp;lt; num_meffects; count++) {&lt;br /&gt;
                        AV_MORTAL_EFFECTS = AV_MORTAL_EFFECTS + [llList2String(meffects,count),0];&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;SOCIAL_EFFECTS&amp;quot; ) {&lt;br /&gt;
                    list seffects = llCSV2List(DATA);&lt;br /&gt;
                    integer num_seffects = llGetListLength(seffects);&lt;br /&gt;
                    integer count;&lt;br /&gt;
                    AV_SOCIAL_EFFECTS = [];&lt;br /&gt;
                    for ( count = 0; count &amp;lt; num_seffects; count++) {&lt;br /&gt;
                        AV_SOCIAL_EFFECTS = AV_SOCIAL_EFFECTS + [llList2String(seffects,count),0];&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;MAGIC_EFFECTS&amp;quot; ) {&lt;br /&gt;
                    list mageffects = llCSV2List(DATA);&lt;br /&gt;
                    integer num_mageffects = llGetListLength(mageffects);&lt;br /&gt;
                    integer count;&lt;br /&gt;
                    AV_MAGIC_EFFECTS = [];&lt;br /&gt;
                    for ( count = 0; count &amp;lt; num_mageffects; count++) {&lt;br /&gt;
                        AV_MAGIC_EFFECTS = AV_MAGIC_EFFECTS + [llList2String(mageffects,count),0];&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;VEHICLE_EFFECTS&amp;quot; ) {&lt;br /&gt;
                    list veffects = llCSV2List(DATA);&lt;br /&gt;
                    integer num_veffects = llGetListLength(veffects);&lt;br /&gt;
                    integer count;&lt;br /&gt;
                    AV_VEHICLE_EFFECTS = [];&lt;br /&gt;
                    for ( count = 0; count &amp;lt; num_veffects; count++) {&lt;br /&gt;
                        AV_VEHICLE_EFFECTS = AV_VEHICLE_EFFECTS + [llList2String(veffects,count),0];&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;SPECIES&amp;quot; ) {&lt;br /&gt;
                    REGION_SPECIES = llCSV2List(DATA);&lt;br /&gt;
                    integer num_ts = llGetListLength(REGION_SPECIES);&lt;br /&gt;
                    integer count;&lt;br /&gt;
                    AV_SPECIES = [];&lt;br /&gt;
                    for ( count = 0; count &amp;lt; num_ts; count++) {&lt;br /&gt;
                        AV_SPECIES = AV_SPECIES + [llList2String(REGION_SPECIES,count),0];&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;BACKGROUNDS&amp;quot; ) {&lt;br /&gt;
                    REGION_BACKGROUNDS = llCSV2List(DATA);&lt;br /&gt;
                    integer num_tb = llGetListLength(REGION_BACKGROUNDS);&lt;br /&gt;
                    integer count;&lt;br /&gt;
                    AV_BACKGROUNDS = [];&lt;br /&gt;
                    for ( count = 0; count &amp;lt; num_tb; count++) {&lt;br /&gt;
                        AV_BACKGROUNDS = AV_BACKGROUNDS + [llList2String(REGION_BACKGROUNDS,count),0];&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;CAREERS&amp;quot; ) {&lt;br /&gt;
                    REGION_CAREERS = llCSV2List(DATA);&lt;br /&gt;
                    integer num_tc = llGetListLength(REGION_CAREERS);&lt;br /&gt;
                    integer count;&lt;br /&gt;
                    AV_CAREERS = [];&lt;br /&gt;
                    for ( count = 0; count &amp;lt; num_tc; count++) {&lt;br /&gt;
                        AV_CAREERS = AV_CAREERS + [llList2String(REGION_CAREERS,count),0];&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;EQUIPMENT&amp;quot; ) {&lt;br /&gt;
                    REGION_EQUIPMENT = llCSV2List(DATA);&lt;br /&gt;
                    integer numeq = llGetListLength(REGION_EQUIPMENT);&lt;br /&gt;
                    integer count;&lt;br /&gt;
                    AV_EQUIPMENT = [];&lt;br /&gt;
                    for ( count = 0; count &amp;lt; numeq; count++) {&lt;br /&gt;
                        AV_EQUIPMENT = AV_EQUIPMENT + [llList2String(REGION_EQUIPMENT,count),0];&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
                if ( CMD == &amp;quot;LIST_COMPLETE&amp;quot; ) {&lt;br /&gt;
                    state GetRes;&lt;br /&gt;
                }&lt;br /&gt;
            return;&lt;br /&gt;
            }&lt;br /&gt;
        return;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer touches) {&lt;br /&gt;
        touches = 0; // LSLINT&lt;br /&gt;
        llResetScript(); &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
state GetRes { // get resilience base stats&lt;br /&gt;
    state_entry() {&lt;br /&gt;
        SETUP();&lt;br /&gt;
        integer reslen = llGetListLength(AV_RESILIENCES);&lt;br /&gt;
        integer count;&lt;br /&gt;
        for ( count = 0; count &amp;lt; reslen; count += 2) {&lt;br /&gt;
            string resname = llList2String(AV_RESILIENCES,count);&lt;br /&gt;
            llRegionSay(CHANMYRIAD,&amp;quot;GET_RESILIENCE|&amp;quot;+resname);&lt;br /&gt;
        }&lt;br /&gt;
        llSleep(1.0); // this delay is weak coding - need more reliable fix&lt;br /&gt;
        state Random;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel,string name,key id,string message) {&lt;br /&gt;
        channel = 0; // LSLINT&lt;br /&gt;
        name = &amp;quot;&amp;quot;; // LSLINT&lt;br /&gt;
        id = NULL_KEY; // LSLINT&lt;br /&gt;
        if ( llGetSubString(message,0,10) == &amp;quot;RESILIENCE|&amp;quot; ) {&lt;br /&gt;
            // RESILIENCE|RESILIENCE=Wounds|BASE_STAT=Power|TYPE=Critical|ACTION=Death|DESCRIPTION=how damaged the players body is&lt;br /&gt;
            list tokens = llParseString2List(message,[&amp;quot;|&amp;quot;],[]);&lt;br /&gt;
            integer tokencount = llGetListLength(tokens);&lt;br /&gt;
            integer i;&lt;br /&gt;
            string resname = &amp;quot;&amp;quot;;&lt;br /&gt;
            string resstat = &amp;quot;&amp;quot;;&lt;br /&gt;
            string restype = &amp;quot;&amp;quot;;&lt;br /&gt;
            for ( i = 1; i &amp;lt; tokencount; i++) {&lt;br /&gt;
                string attrib = llList2String(llParseString2List(llList2String(tokens,i),[&amp;quot;=&amp;quot;],[]),0);&lt;br /&gt;
                string value = llList2String(llParseString2List(llList2String(tokens,i),[&amp;quot;=&amp;quot;],[]),1);&lt;br /&gt;
                if ( attrib == &amp;quot;RESILIENCE&amp;quot; ) resname = value;&lt;br /&gt;
                if ( attrib == &amp;quot;BASE_STAT&amp;quot; ) resstat = value;&lt;br /&gt;
                if ( attrib == &amp;quot;TYPE&amp;quot; ) restype = value;&lt;br /&gt;
            }&lt;br /&gt;
            RES_STATS += [resname,resstat];&lt;br /&gt;
            RES_TYPES += [resname,restype];&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
state Random {&lt;br /&gt;
    state_entry() {&lt;br /&gt;
        llOwnerSay(&amp;quot;State: Random&amp;quot;);&lt;br /&gt;
        SETUP();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    changed(integer change) {&lt;br /&gt;
        if ( change &amp;amp; CHANGED_LINK ) {&lt;br /&gt;
            POSER = llAvatarOnSitTarget();&lt;br /&gt;
            ROLLUP();&lt;br /&gt;
            SAVE();&lt;br /&gt;
            RESET();&lt;br /&gt;
        }&lt;br /&gt;
    }        &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Allen Kerensky</name></author>	</entry>

	</feed>