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 ));
}
{
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 ));
}