Added DMFI
Added DMFI. Set Diamond Golem appearance size to large. Full compile. Updated release archive.
This commit is contained in:
334
_module/nss/dmfi_univ_dmw.nss
Normal file
334
_module/nss/dmfi_univ_dmw.nss
Normal file
@@ -0,0 +1,334 @@
|
||||
//DMFI Universal Wand scripts by hahnsoo
|
||||
int DMW_START_CUSTOM_TOKEN = 8000;
|
||||
|
||||
//Retrieve targetting information
|
||||
object oMySpeaker = GetLastSpeaker();
|
||||
object oMyTarget = GetLocalObject(oMySpeaker, "dmfi_univ_target");
|
||||
location lMyLoc = GetLocalLocation(oMySpeaker, "dmfi_univ_location");
|
||||
|
||||
int dmwand_isnearbydestroyable()
|
||||
{
|
||||
object oMyTest = GetFirstObjectInShape(SHAPE_CUBE, 0.6, lMyLoc, FALSE, OBJECT_TYPE_ALL);
|
||||
int nTargetType = GetObjectType(oMyTest);
|
||||
return (GetIsObjectValid(oMyTest) && (! GetIsPC(oMyTest)) && ((nTargetType == OBJECT_TYPE_ITEM) || (nTargetType == OBJECT_TYPE_PLACEABLE) || (nTargetType == OBJECT_TYPE_CREATURE)));
|
||||
}
|
||||
|
||||
int dmwand_istargetcreateable()
|
||||
{
|
||||
if(! GetIsObjectValid(oMyTarget)) { return FALSE; }
|
||||
|
||||
int nTargetType = GetObjectType(oMyTarget);
|
||||
return ((nTargetType == OBJECT_TYPE_ITEM) || (nTargetType == OBJECT_TYPE_PLACEABLE) || (nTargetType == OBJECT_TYPE_CREATURE));
|
||||
}
|
||||
|
||||
int dmwand_istargetdestroyable()
|
||||
{
|
||||
if(! GetIsObjectValid(oMyTarget)) { return FALSE; }
|
||||
|
||||
int nTargetType = GetObjectType(oMyTarget);
|
||||
if(! GetIsPC(oMyTarget))
|
||||
{
|
||||
return ((nTargetType == OBJECT_TYPE_ITEM) || (nTargetType == OBJECT_TYPE_PLACEABLE) || (nTargetType == OBJECT_TYPE_CREATURE));
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int dmwand_istargetinvalid()
|
||||
{
|
||||
return !GetIsObjectValid(oMyTarget);
|
||||
}
|
||||
|
||||
int dmwand_istargetinventory()
|
||||
{
|
||||
return (GetIsObjectValid(oMyTarget) && GetHasInventory(oMyTarget));
|
||||
}
|
||||
|
||||
int dmwand_istargetnotme()
|
||||
{
|
||||
return (GetIsObjectValid(oMyTarget) && (oMySpeaker != oMyTarget));
|
||||
}
|
||||
|
||||
int dmwand_istargetpcornpc()
|
||||
{
|
||||
return (GetIsObjectValid(oMyTarget) && GetAbilityScore(oMyTarget, ABILITY_CONSTITUTION));
|
||||
}
|
||||
|
||||
int dmwand_istargetnpc()
|
||||
{
|
||||
return (dmwand_istargetpcornpc() && (! GetIsPC(oMyTarget)));
|
||||
}
|
||||
|
||||
int dmwand_istargetpc()
|
||||
{
|
||||
return (GetIsObjectValid(oMyTarget) && GetIsPC(oMyTarget));
|
||||
}
|
||||
|
||||
int dmwand_istargetpcnme()
|
||||
{
|
||||
return (GetIsObjectValid(oMyTarget) && GetIsPC(oMyTarget) && (oMySpeaker != oMyTarget));
|
||||
}
|
||||
|
||||
int dmwand_istargetpcornpcnme()
|
||||
{
|
||||
return (dmwand_istargetpcornpc() && (oMySpeaker != oMyTarget));
|
||||
}
|
||||
|
||||
int dmwand_istargetplaceable()
|
||||
{
|
||||
if(! GetIsObjectValid(oMyTarget)) { return FALSE; }
|
||||
|
||||
int nTargetType = GetObjectType(oMyTarget);
|
||||
return (nTargetType == OBJECT_TYPE_PLACEABLE);
|
||||
}
|
||||
|
||||
int dmw_conv_Start(int nCurrent, int nChoice, string sParams = "")
|
||||
{
|
||||
string sText = "";
|
||||
string sCall = "";
|
||||
string sCallParams = "";
|
||||
|
||||
switch(nCurrent)
|
||||
{
|
||||
case 0:
|
||||
nCurrent = 0;
|
||||
sText = "Welcome to the Server tool: This will allow you to find any player to perform simple functions.";
|
||||
sCall = "";
|
||||
sCallParams = "";
|
||||
break;
|
||||
|
||||
case 1:
|
||||
nCurrent = 1;
|
||||
if(dmwand_istargetpcnme())
|
||||
{
|
||||
sText = "Penguin this player.";
|
||||
sCall = "func_Toad";
|
||||
sCallParams = "";
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
nCurrent = 2;
|
||||
if(dmwand_istargetpcnme())
|
||||
{
|
||||
sText = "Unpenguin this player.";
|
||||
sCall = "func_Untoad";
|
||||
sCallParams = "";
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
nCurrent = 3;
|
||||
if(dmwand_istargetpcnme())
|
||||
{
|
||||
sText = "Boot this player.";
|
||||
sCall = "func_KickPC";
|
||||
sCallParams = "";
|
||||
break;
|
||||
}
|
||||
|
||||
case 4:
|
||||
nCurrent = 4;
|
||||
if(dmwand_istargetinvalid())
|
||||
{
|
||||
sText = "List all players...";
|
||||
sCall = "conv_ListPlayers";
|
||||
sCallParams = "func_PlayerListConv";
|
||||
break;
|
||||
}
|
||||
|
||||
case 5:
|
||||
nCurrent = 5;
|
||||
if(dmwand_istargetpcnme())
|
||||
{
|
||||
sText = "Jump this player to my location.";
|
||||
sCall = "func_JumpPlayerHere";
|
||||
sCallParams = "";
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
nCurrent = 6;
|
||||
if(dmwand_istargetpcnme())
|
||||
{
|
||||
sText = "Jump me to this player's location.";
|
||||
sCall = "func_JumpToPlayer";
|
||||
sCallParams = "";
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
nCurrent = 7;
|
||||
if(dmwand_istargetpcnme())
|
||||
{
|
||||
sText = "Jump this player's party to my location.";
|
||||
sCall = "func_JumpPartyHere";
|
||||
sCallParams = "";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
nCurrent = 0;
|
||||
sText = "";
|
||||
sCall = "";
|
||||
sCallParams = "";
|
||||
break;
|
||||
}
|
||||
|
||||
SetLocalString(oMySpeaker, "dmw_dialog" + IntToString(nChoice), sText);
|
||||
SetLocalString(oMySpeaker, "dmw_function" + IntToString(nChoice), sCall);
|
||||
SetLocalString(oMySpeaker, "dmw_params" + IntToString(nChoice), sCallParams);
|
||||
|
||||
return nCurrent;
|
||||
}
|
||||
|
||||
int dmwand_BuildConversationDialog(int nCurrent, int nChoice, string sConversation, string sParams)
|
||||
{
|
||||
if(TestStringAgainstPattern(sConversation, "Start"))
|
||||
{
|
||||
return dmw_conv_Start(nCurrent, nChoice, sParams);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void dmwand_BuildConversation(string sConversation, string sParams)
|
||||
{
|
||||
int nLast;
|
||||
int nTemp;
|
||||
int nChoice = 1;
|
||||
int nCurrent = 1;
|
||||
int nMatch;
|
||||
|
||||
if(TestStringAgainstPattern(sParams, "prev"))
|
||||
{
|
||||
//Get the number choice to start with
|
||||
nCurrent = GetLocalInt(oMySpeaker, "dmw_dialogprev");
|
||||
|
||||
//Since we're going to the previous page, there will be a next
|
||||
SetLocalString(oMySpeaker, "dmw_dialog9", "Next ->");
|
||||
SetLocalString(oMySpeaker, "dmw_function9", "conv_" + sConversation);
|
||||
SetLocalString(oMySpeaker, "dmw_params9", "next");
|
||||
SetLocalInt(oMySpeaker, "dmw_dialognext", nCurrent);
|
||||
|
||||
nChoice = 8;
|
||||
for(;nChoice >= 0; nChoice--)
|
||||
{
|
||||
int nTemp1 = nCurrent;
|
||||
int nTemp2 = nCurrent;
|
||||
nMatch = nTemp2;
|
||||
while((nCurrent == nMatch) && (nTemp2 > 0))
|
||||
{
|
||||
nTemp2--;
|
||||
nMatch = dmwand_BuildConversationDialog(nTemp2, nChoice, sConversation, sParams);
|
||||
}
|
||||
|
||||
if(nTemp2 <= 0)
|
||||
{
|
||||
//we went back too far for some reason, so make this choice blank
|
||||
SetLocalString(oMySpeaker, "dmw_dialog" + IntToString(nChoice), "");
|
||||
SetLocalString(oMySpeaker, "dmw_function" + IntToString(nChoice), "");
|
||||
SetLocalString(oMySpeaker, "dmw_params" + IntToString(nChoice), "");
|
||||
}
|
||||
nLast = nTemp;
|
||||
nTemp = nTemp1;
|
||||
nTemp1 = nMatch;
|
||||
nCurrent = nMatch;
|
||||
}
|
||||
|
||||
if(nMatch > 0)
|
||||
{
|
||||
SetLocalString(oMySpeaker, "dmw_dialog1", "<- previous");
|
||||
SetLocalString(oMySpeaker, "dmw_function1", "conv_" + sConversation);
|
||||
SetLocalString(oMySpeaker, "dmw_params1", "prev");
|
||||
SetLocalInt(oMySpeaker, "dmw_dialogprev", nLast);
|
||||
}
|
||||
|
||||
//fill the NPC's dialog spot
|
||||
//(saved for last because the build process tromps on it)
|
||||
dmwand_BuildConversationDialog(0, 0, sConversation, sParams);
|
||||
}
|
||||
else
|
||||
{
|
||||
//fill the NPC's dialog spot
|
||||
dmwand_BuildConversationDialog(0, 0, sConversation, sParams);
|
||||
|
||||
//No parameters specified, start at the top of the conversation
|
||||
if(sParams == "")
|
||||
{
|
||||
nChoice = 1;
|
||||
nCurrent = 1;
|
||||
}
|
||||
|
||||
//A "next->" choice was selected
|
||||
if(TestStringAgainstPattern(sParams, "next"))
|
||||
{
|
||||
//get the number choice to start with
|
||||
nCurrent = GetLocalInt(oMySpeaker, "dmw_dialognext");
|
||||
|
||||
//set this as the number for the "previous" choice to use
|
||||
SetLocalInt(oMySpeaker, "dmw_dialogprev", nCurrent);
|
||||
|
||||
//Set the first dialog choice to be "previous"
|
||||
nChoice = 2;
|
||||
SetLocalString(oMySpeaker, "dmw_dialog1", "<- Previous");
|
||||
SetLocalString(oMySpeaker, "dmw_function1", "conv_" + sConversation);
|
||||
SetLocalString(oMySpeaker, "dmw_params1", "prev");
|
||||
}
|
||||
|
||||
//Loop through to build the dialog list
|
||||
for(;nChoice <= 10; nChoice++)
|
||||
{
|
||||
nMatch = dmwand_BuildConversationDialog(nCurrent, nChoice, sConversation, sParams);
|
||||
//nLast will be the value of the choice before the last one
|
||||
nLast = nTemp;
|
||||
nTemp = nMatch;
|
||||
if(nMatch > 0) { nCurrent = nMatch; }
|
||||
if(nMatch == 0) { nLast = 0; }
|
||||
nCurrent++;
|
||||
}
|
||||
|
||||
//If there were enough choices to fill 10 spots, make spot 9 a "next"
|
||||
if(nLast > 0)
|
||||
{
|
||||
SetLocalString(oMySpeaker, "dmw_dialog9", "Next ->");
|
||||
SetLocalString(oMySpeaker, "dmw_function9", "conv_" + sConversation);
|
||||
SetLocalString(oMySpeaker, "dmw_params9", "next");
|
||||
SetLocalInt(oMySpeaker, "dmw_dialognext", nLast);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void dmwand_StartConversation()
|
||||
{
|
||||
if(! GetIsObjectValid(oMySpeaker))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
dmwand_BuildConversation("Start", "");
|
||||
}
|
||||
|
||||
int StartingConditional()
|
||||
{
|
||||
object oPC = GetPCSpeaker();
|
||||
int nMyNum = 0;
|
||||
|
||||
DeleteLocalInt(oPC, "Tens");
|
||||
DeleteLocalInt(oPC, "dmfi_univ_offset");
|
||||
SetLocalInt(OBJECT_SELF, "dmfi_dmwOffset", 1);
|
||||
//Check whether this conversation has been started already, start it if not.
|
||||
int nStarted = GetLocalInt(oMySpeaker, "dmw_started");
|
||||
if(! nStarted)
|
||||
{
|
||||
SetLocalInt(oMySpeaker, "dmw_started", 1);
|
||||
dmwand_StartConversation();
|
||||
}
|
||||
|
||||
string sMyString = GetLocalString(oMySpeaker, "dmw_dialog" + IntToString(nMyNum));
|
||||
|
||||
if(sMyString == "")
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else if (GetLocalString(oPC, "dmfi_univ_conv") == "server")
|
||||
{
|
||||
SetCustomToken(DMW_START_CUSTOM_TOKEN + nMyNum, sMyString);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
}
|
Reference in New Issue
Block a user