Avatar and alternate skill pack 1.0

Got any custom JavaScript additions/tweaks you think other people would like to see? Post 'em here!
Post Reply
stranf
UOX3 Guru
Posts: 939
Joined: Wed Jan 04, 2006 3:59 pm
Has thanked: 0
Been thanked: 0

Avatar and alternate skill pack 1.0

Post by stranf »

This is a little section of GM scripts that I designed for use on my GM quests. My players are currently playing a "quest of the avatar" and it became cumbersome to keep track of stats on the spreadsheet while playing UO.

This is a computerized method to keep track of all 8 virtues as well as some "social skills" that come in handy while GMing quests that require lots of NPC interaction.

These scripts are not reccommended unless you are going to play some serious GMed quests. Try my other GM command scripts for functions that are more useful to traditional UO. Thanks.


'dm honesty ##
compassion ##
spirit ##
justice ##
valor ##
honor ##
sacrifice ##
humility ##


Add or subtracts (use 0 to view) virtue stats. stat changes and current level are viewable only by the GM using the skills. This is to allow a Gm to control the Seer Hawkwind to inform the player of his standing, a la "ultima IV"







Social Skills

'dm (a)per(s) persuade
(a)int(s) intimidate
(a)bluff(s) bluff
(a)search(s) search
(a)spot(s) spot
(a)judge(s) judge character
(a)listen(s) listen


per, int, bluff, search, spot, judge, listen, all perform checks of the required skill by rolling a d20, displaying the roll, and then the modifier stored on the character. So if a character had a judge of 5, and the gm used 'dm judge, the PC would say: "Judge: 8 + 5"

pers, ints, bluffs, searchs, spots, judges, listens, all perfrom silent checks. The GM can use the skills without the PCs knowledge. For example, if a GM wants to see if PC (with spot of 2) spots something without tipping the player off to see if there is a object he might use: 'dm spots. A system message in the lower left corner would say: "Spot 18 + 2"

aper ##, aint ##, abluff ##, asearch ##, aspot ##, ajudge ##, alisten ##, are used to "adjust" the value of the specific skill. Use this to initialize the skill and/or add or lower it.

Example, if a GM wishes to give a new PC a spot of 3, type in 'gm aspot 3. the PC will say: "Spot changed by 3" and a mesage in the lower left will inform the GM: "current spot 3"

Example b, if a GM wishes to award a PC (with judge of 4) a character judge increase of 1 (perhaphs he got a natural 19 and 20 roll consecuativley) the GM could type " 'dm ajudge 1" The PC will say, "Character Judge increase by 1", and a system message in the left will inform the GM: "Target current character judge: 5"



Script
function CommandRegistration()
{
    RegisterCommand( "dm", 0, true );

}

function command_DM( socket, cmdString )
{
    if( cmdString )
    {
        var splitString = cmdString.split( " ", 2 );
        socket.xText = cmdString;
        socket.CustomTarget( 0, "Choose target for: " + cmdString );
    }
    else
        socket.SysMessage( "No property was specified for the GM command." );
}

function onCallback0( socket, ourObj )
{
    if( socket.GetWord( 1 ) )
    {
        socket.SysMessage( "'Set': Invalid target" );
        return;
    }

    var splitString = socket.xText.split( " ", 2 );
    var uKey    = splitString[0].toUpperCase();
    var nVal    = StringToNum( splitString[1] );

    //var for Dm skills

    var honesty = ourObj.GetTag( "HONESTY" );
    var compassion = ourObj.GetTag( "COMPASSION" );
    var valor = ourObj.GetTag( "VALOR" );
    var justice = ourObj.GetTag( "JUSTICE" );
    var sacrifice = ourObj.GetTag( "SACRIFICE" );
    var honor = ourObj.GetTag( "HONOR" );
    var spirit = ourObj.GetTag( "SPIRIT" );
    var humility = ourObj.GetTag( "HUMILITY" );

    var persuade = ourObj.GetTag( "PERSUADE" );
    var intimidate = ourObj.GetTag( "INTIMIDATE" );
    var bluff = ourObj.GetTag( "BLUFF" );
    var judge = ourObj.GetTag( "JUDGE" );
    var search = ourObj.GetTag( "SEARCH" );
    var listen = ourObj.GetTag( "LISTEN" );
    var spot = ourObj.GetTag( "SPOT" );
   



    switch( uKey )
    {
   

    // avatar case

    case "HONESTY":
            ourObj.SetTag("HONESTY", honesty + nVal );
        honesty = ourObj.GetTag("HONESTY");
        okMsg( socket );
            socket.SysMessage( "Honesty changed by " + nVal );
        socket.SysMessage( "Target honesty: " + honesty);
        break;

    case "COMPASSION":
            ourObj.SetTag("COMPASSION", compassion + nVal );
        compassion = ourObj.GetTag("COMPASSION");
        okMsg( socket );
            socket.SysMessage( "Compassion changed by " + nVal );
        socket.SysMessage( "Target compassion: " + compassion);
        break;


    case "VALOR":
            ourObj.SetTag("VALOR", valor + nVal );
        valor = ourObj.GetTag("VALOR");
        okMsg( socket );
            socket.SysMessage( "Valor changed by " + nVal );
        socket.SysMessage( "Target valor: " + valor);
        break;

    case "JUSTICE":
            ourObj.SetTag("JUSTICE", justice + nVal );
        justice = ourObj.GetTag("JUSTICE");
        okMsg( socket );
            socket.SysMessage( "Justice changed by " + nVal );
        socket.SysMessage( "Target justice: " + justice);
        break;

    case "SACRIFICE":
            ourObj.SetTag("SACRIFICE", sacrifice + nVal );
        sacrifice = ourObj.GetTag("SACRIFICE");
        okMsg( socket );
            socket.SysMessage( "Sacrifice changed by " + nVal );
        socket.SysMessage( "Target sacrifice: " + sacrifice);
        break;

    case "HONOR":
            ourObj.SetTag("HONOR", honor + nVal );
        honor = ourObj.GetTag("HONOR");
        okMsg( socket );
            socket.SysMessage( "Honor changed by " + nVal );
        socket.SysMessage( "Target honor: " + honor);
        break;


    case "SPIRIT":
            ourObj.SetTag("SPIRIT", spirit + nVal );
        spirit = ourObj.GetTag("SPIRIT");
        okMsg( socket );
            socket.SysMessage( "Spirituality changed by " + nVal );
        socket.SysMessage( "Target spirituality: " + spirit);
        break;

    case "HUMILITY":
            ourObj.SetTag("HUMILITY", humility + nVal );
        humility = ourObj.GetTag("HUMILITY");
        okMsg( socket );
            socket.SysMessage( "Humility changed by " + nVal );
        socket.SysMessage( "Target humility: " + humility);
        break;


    //Skill checks

    case "PER":
            var roll = RandomNumber( 0, 20 )
        ourObj.TextMessage( "Persuade: " + roll + "+" + persuade );
        break;

    case "PERS":
            var roll = RandomNumber( 0, 20 )
        socket.SysMessage( "Persuade: " + roll + "+" + persuade );
        break;


    case "INT":
            var roll = RandomNumber( 0, 20 )
        ourObj.TextMessage( "Intimidate: " + roll + "+" + intimidate );
        break;


    case "INTS":
            var roll = RandomNumber( 0, 20 )
        socket.SysMessage( "Intimidate: " + roll + "+" + intimidate );
        break;

    case "BLUFF":
            var roll = RandomNumber( 0, 20 )
        ourObj.TextMessage( "Bluff: " + roll + "+" + bluff );
        break;


    case "BLUFFS":
            var roll = RandomNumber( 0, 20 )
        socket.SysMessage( "Bluff: " + roll + "+" + bluff );
        break;



    case "JUDGE":
            var roll = RandomNumber( 0, 20 )
        ourObj.TextMessage( "Char. Judge: " + roll + "+" + judge );
        break;


    case "JUDGES":
            var roll = RandomNumber( 0, 20 )
        socket.SysMessage( "Char. Judge: " + roll + "+" + judge );
        break;


    case "SEARCHS":
            var roll = RandomNumber( 0, 20 )
        socket.SysMessage( "Search: " + roll + "+" + search );
        break;


    case "SEARCH":
            var roll = RandomNumber( 0, 20 )
        ourObj.TextMessage( "Search: " + roll + "+" + search );
        break;



    case "LISTEN":
            var roll = RandomNumber( 0, 20 )
        ourObj.TextMessage( "Listen: " + roll + "+" + listen );
        break;


    case "LISTENS":
            var roll = RandomNumber( 0, 20 )
        socket.SysMessage( "Listen: " + roll + "+" + listen );
        break;


    case "SPOTS":
            var roll = RandomNumber( 0, 20 )
        socket.SysMessage( "Spot: " + roll + "+" + spot );
        break;


   
    case "SPOT":
            var roll = RandomNumber( 0, 20 )
        ourObj.TextMessage( "Spot: " + roll + "+" + spot );
        break;


   
    case "ASPOT":
            ourObj.SetTag("SPOT", spot + nVal );
        spot = ourObj.GetTag("SPOT");
        okMsg( socket );
            socket.SysMessage( "Spot changed by " + nVal );
        ourObj.TextMessage( "Spot changed by " + nVal );       
        socket.SysMessage( "Target Spot: " + spot);
        break;

    case "ALISTEN":
            ourObj.SetTag("LISTEN", listen + nVal );
        listen = ourObj.GetTag("LISTEN");
        okMsg( socket );
            socket.SysMessage( "Listen changed by " + nVal );
            ourObj.TextMessage( "Listen changed by " + nVal );
        socket.SysMessage( "Target Listen: " + listen);
        break;

    case "ASEARCH":
            ourObj.SetTag("SEARCH", search + nVal );
        search = ourObj.GetTag("SEARCH");
        okMsg( socket );
            socket.SysMessage( "Search changed by " + nVal );
            ourObj.TextMessage( "Search changed by " + nVal );
        socket.SysMessage( "Target Search: " + search);
        break;

    case "AJUDGE":
            ourObj.SetTag("JUDGE", judge + nVal );
        judge = ourObj.GetTag("JUDGE");
        okMsg( socket );
            socket.SysMessage( "Character judge changed by " + nVal );
            ourObj.TextMessage( "Character judge changed by " + nVal );
        socket.SysMessage( "Target Character judge: " + judge);
        break;

    case "ABLUFF":
            ourObj.SetTag("BLUFF", bluff + nVal );
        bluff = ourObj.GetTag("BLUFF");
        okMsg( socket );
            socket.SysMessage( "Bluff changed by " + nVal );
            ourObj.TextMessage( "Bluff changed by " + nVal );
        socket.SysMessage( "Target Bluff: " + bluff);
        break;


    case "AINT":
            ourObj.SetTag("INTIMIDATE", intimidate + nVal );
        intimidate = ourObj.GetTag("INTIMIDATE");
        okMsg( socket );
            socket.SysMessage( "Intimidate changed by " + nVal );
            ourObj.TextMessage( "Intimidate changed by " + nVal );
        socket.SysMessage( "Target intimidate: " + intimidate);
        break;

    case "APER":
            ourObj.SetTag("PERSUADE", persuade + nVal );
        persuade = ourObj.GetTag("PERSUADE");
        okMsg( socket );
            socket.SysMessage( "Persuade changed by " + nVal );
            ourObj.TextMessage( "Persuade changed by " + nVal );
        socket.SysMessage( "Target Persuade: " + persuade);
        break;


   







    default:
        socket.SysMessage( "Invalid set command " + uKey );
        break;
    }
}

function okMsg( socket )
{ //Sends verification to the player that the specified value was successfully set.
    socket.SysMessage( GetDictionaryEntry( 1756, socket.Language ));
}
stranf
UOX3 Guru
Posts: 939
Joined: Wed Jan 04, 2006 3:59 pm
Has thanked: 0
Been thanked: 0

Post by stranf »

**12/16/06**

Here are some GM scripts that may aid those playing Roleplay-heavy shards. It allows the GM to manipulate avatar-stats stored on the PC. My players enjoy playing an Ultima IV: Quest of the Avatar type adventure where the GMs monitor and add/remove virtue points without them knowing.

I figure some of you who run roleplay-heavy shards may find these scripts useful and/or spawn ideas for your own script sets. I find this script set may be of little value to MMORPG-style large shards (like OSI), so you might want to view my basic GM toolkit at:

viewtopic.php?t=858

for more generic and useful scripts.

Enjoy!
Post Reply