118 lines
4.4 KiB
Plaintext
118 lines
4.4 KiB
Plaintext
//Script Name: do_partyroll
|
||
//////////////////////////////////////////
|
||
//Created By: Genisys (Guile)
|
||
//Created On: 8/25/08
|
||
/////////////////////////////////////////
|
||
/*
|
||
ALL Of the functions within were taken
|
||
from the DMFI Project By FunkySwerve's
|
||
fky_chat includes, awesome stuff!
|
||
*/
|
||
//::////////////////////////////////////////////////////////////////////////:://
|
||
//:: Functions from Higher Ground's fky_chat/ dmfi Project
|
||
//:: Designed By: FunkySwerve :://
|
||
//:: Designed On: April 4 2006
|
||
/////////////////////////////////////////////////////////////////////////
|
||
|
||
const string ESCAPE_STRING = "&&";
|
||
|
||
const string COLOR_END = "</c>";
|
||
const string COLOR_GREEN = "<c þd>"; //tells - acid
|
||
const string COLOR_RED = "<cþ<<>";
|
||
const string COLOR_RED2 = "<cþ>"; //fire damage
|
||
const string COLOR_WHITE = "<cþþþ>";
|
||
const string COLOR_BLUE = "<c!}þ>"; //electrical damage
|
||
const string COLOR_PURPLE = "<c<>þ>"; //names
|
||
const string COLOR_LT_PURPLE = "<cÍþ>";
|
||
const string COLOR_LT_GREEN = "<c´þd>";
|
||
const string COLOR_ORANGE = "<cþ–2>";
|
||
const string COLOR_GOLD = "<cþïP>"; //shouts
|
||
const string COLOR_YELLOW = "<cþþ>"; //send message to pc default (server messages)
|
||
const string COLOR_LT_BLUE = "<cßþ>"; //dm channel
|
||
const string COLOR_LT_BLUE2 = "<c›þþ>"; //cold damage
|
||
const string NEWLINE = "\n";
|
||
|
||
const string ROLL1 = " rolled a [";
|
||
const string ROLL2 = "] and got a: [";
|
||
const string ROLLGOOD = "Wow! Nice roll!";
|
||
|
||
int GetHighestItemFromArray(object oPC, int nNumberInArray)
|
||
{
|
||
|
||
string sString, sInt, sAdd;
|
||
int nInt, nNum;
|
||
int nHighest = -1;
|
||
int nArrayNum = 0;
|
||
for (nInt = 1; nInt <= nNumberInArray; nInt++)
|
||
{
|
||
sInt = IntToString(nInt);
|
||
sString = GetLocalString(oPC, "PRMember"+sInt);
|
||
if (sString != "")
|
||
{
|
||
nNum = StringToInt(GetStringLeft(sString, 2));
|
||
if (nNum > nHighest)
|
||
{
|
||
nHighest = nNum;
|
||
nArrayNum = nInt;
|
||
}
|
||
}
|
||
}
|
||
return nArrayNum;
|
||
}
|
||
void DoPartyRoll(object oPlayer)
|
||
{
|
||
object oLeader = GetFactionLeader(oPlayer);
|
||
object oPartymember;
|
||
int nRoll, nInt, nNumberItemsInArray, nNumBase, nTopRoller;
|
||
int nCount = 0;
|
||
string sInt, sBase, sNumBase, sLine, sRoll, sName;
|
||
string sMessage = "";
|
||
if (oPlayer == oLeader)//only leader can roll
|
||
{
|
||
oPartymember = GetFirstFactionMember(oPlayer);
|
||
//oPartymember = GetFirstItemInInventory(oPlayer);
|
||
while (GetIsObjectValid(oPartymember))//generate the 'array'
|
||
{
|
||
nCount++;//get number in party
|
||
nRoll = Random(100);
|
||
sRoll = IntToString(nRoll);
|
||
if (GetStringLength(sRoll) == 1) sRoll = "0" + sRoll;//ensure that string length is consistent
|
||
sInt = IntToString(nCount);
|
||
SetLocalString(oPlayer, "PRMember"+sInt, sRoll+GetName(oPartymember));
|
||
oPartymember = GetNextFactionMember(oPlayer);
|
||
//oPartymember = GetNextItemInInventory(oPlayer);
|
||
}
|
||
nNumberItemsInArray = nCount;
|
||
for (nInt = 1; nInt <= nCount; nInt++) //once through for each member of the party
|
||
{
|
||
//find the highest number
|
||
nTopRoller = GetHighestItemFromArray(oPlayer, nNumberItemsInArray);
|
||
//add it to the string along with their name
|
||
sBase = GetLocalString(oPlayer, "PRMember"+IntToString(nTopRoller));
|
||
nNumBase = StringToInt(GetStringLeft(sBase, 2));
|
||
nNumBase++;//add 1 to simulate 1 to 100 roll instead of 0 to 99
|
||
sNumBase = IntToString(nNumBase);
|
||
sName = GetStringRight(sBase, (GetStringLength(sBase) - 2));
|
||
//sLine = sName + " rolled a " + sNumBase + ".\n";
|
||
sLine = COLOR_WHITE+sName+ROLL1+COLOR_END+COLOR_GREEN+"D100"+COLOR_END+COLOR_WHITE+ROLL2+COLOR_END+COLOR_GOLD+sNumBase+COLOR_END+COLOR_WHITE+"].\n";
|
||
sMessage += sLine;
|
||
//delete that array entry, no need to pack it
|
||
DeleteLocalString(oPlayer, "PRMember"+IntToString(nTopRoller));
|
||
}
|
||
//Send the final message to the party
|
||
AssignCommand(oPlayer, SpeakString(COLOR_GOLD + "Party Roll: "+ COLOR_END + sMessage));
|
||
oPartymember = GetFirstFactionMember(oPlayer);
|
||
while (GetIsObjectValid(oPartymember))
|
||
{
|
||
SendMessageToPC(oPartymember, sMessage);
|
||
oPartymember = GetNextFactionMember(oPlayer);
|
||
}
|
||
}
|
||
}
|
||
void main()
|
||
{
|
||
object oPC = GetPCSpeaker();
|
||
|
||
DoPartyRoll(oPC);
|
||
}
|