2899 lines
102 KiB
Plaintext
2899 lines
102 KiB
Plaintext
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");
|
|
|
|
//::///////////////////////////////////////////////
|
|
//Test functions from dmw_test_inc
|
|
|
|
// checks if a nearby object is destroyable
|
|
int dmwand_isnearbydestroyable();
|
|
// Check if the target can be created with CreateObject
|
|
int dmwand_istargetcreateable();
|
|
//Check if target is a destroyable object
|
|
int dmwand_istargetdestroyable();
|
|
// checks if the wand was NOT clicked on an object
|
|
int dmwand_istargetinvalid();
|
|
// check if the target has an inventory
|
|
int dmwand_istargetinventory();
|
|
//Check if the target is not the wand's user
|
|
int dmwand_istargetnotme();
|
|
//Check if target is an NPC or monster
|
|
int dmwand_istargetnpc();
|
|
//Check if the target is a PC
|
|
int dmwand_istargetpc();
|
|
//Check if the target is a PC and not me
|
|
int dmwand_istargetpcnme();
|
|
// Check if the target is a PC or NPC
|
|
// uses the CON score currently
|
|
int dmwand_istargetpcornpc();
|
|
//Check if the target is a PC or an npc and not me
|
|
int dmwand_istargetpcornpcnme();
|
|
// Check if target is a placeable
|
|
int dmwand_istargetplaceable();
|
|
|
|
//::///////////////////////////////////////////////
|
|
//Conversation functions from dmw_conv_inc
|
|
|
|
//Build Conversation by Dopple
|
|
//Build a conversation level, adding "next" and "previous" as needed
|
|
void dmwand_BuildConversation(string sConversation, string sParams);
|
|
//Build Conversation Dialog by Dopple
|
|
//Used by BuildConversation to translate string representation of a
|
|
// dialog name to its function
|
|
int dmwand_BuildConversationDialog(int nCurrent, int nChoice, string sConversation, string sParams);
|
|
|
|
// Chose which direction something's alignment should change
|
|
int dmw_conv_ChangeAlign(int nCurrent, int nChoice, string sParams = "");
|
|
// Chose what attributes to display about a creature
|
|
int dmw_conv_DispAttribs(int nCurrent, int nChoice, string sParams = "");
|
|
// Chose what ability or skill to do a roll with
|
|
int dmw_conv_DoRoll(int nCurrent, int nChoice, string sParams = "");
|
|
// Chose what to do with an object's inventory
|
|
int dmw_conv_Inventory(int nCurrent, int nChoice, string sParams = "");
|
|
// Diaplay an item's stats, and chose what to do with that item
|
|
int dmw_conv_ItemListConv(int nCurrent, int nChoice, string sParams = "");
|
|
// List a creature's inventory
|
|
int dmw_conv_ListInventory(int nCurrent, int nChoice, string sParams = "");
|
|
// List all players
|
|
int dmw_conv_ListPlayers(int nCurrent, int nChoice, string sParams = "");
|
|
// Chose how much to modify alignment by
|
|
int dmw_conv_ModAlign(int nCurrent, int nChoice, string sParams = "");
|
|
// Chose how much to change reputation by
|
|
int dmw_conv_ModRep(int nCurrent, int nChoice, string sParams = "");
|
|
// Chose whether a roll should be public or private
|
|
int dmw_conv_Roll(int nCurrent, int nChoice, string sParams = "");
|
|
// Starting conversation, all branches lead from here
|
|
int dmw_conv_Start(int nCurrent, int nChoice, string sParams = "");
|
|
// Chose how far to advance the time of day
|
|
int dmw_conv_TimeOfDay(int nCurrent, int nChoice, string sParams = "");
|
|
|
|
//::///////////////////////////////////////////////
|
|
//dmwand functions from dmw_func_inc
|
|
|
|
//Ability Roll Funtion by Jhenne
|
|
// - nAbility: ABILITY_*
|
|
// - nSecret: TRUE if roll should not be shown to other players
|
|
void dmwand_AbilityCheck(int nAbility, int nSecret = TRUE);
|
|
//Advance time by Dopple
|
|
// -nHours: number of hours to advance time by
|
|
void dmwand_AdvanceTime(int nHours);
|
|
//Alignment by Robert Bernavich, Jhenne, Archaego
|
|
// function returns concatenated string version of objects Alignment
|
|
string dmwand_Alignment(object oEntity);
|
|
//ClassLevel by Robert Bernavich, Jhenne, Archaego
|
|
// Returns all three classes and levels in string format of Object
|
|
string dmwand_ClassLevel(object oEntity);
|
|
//Destroy item by Dopple
|
|
//Destroys item in "dmw_item" local object on speaker, then returns to
|
|
// inventory list dialog
|
|
void dmwand_DestroyItem();
|
|
//Destroy nearby by Dopple
|
|
// Destroy the first object we find nearby the target location, then
|
|
// return to starting dialog
|
|
void dmwand_DestroyNearbyTarget();
|
|
//Destroy target by Dopple, adapted from Bioware script in World Builder Guide
|
|
// destroy target object/creature, then return to starting dialog
|
|
void dmwand_DestroyTarget();
|
|
//Export Characters suggested by a great number of people
|
|
void dmwand_ExportChars();
|
|
//Follow me by Jhenne
|
|
// force creature or player to follow user
|
|
void dmwand_FollowMe();
|
|
//Follow Target by Jhenne
|
|
// force user to follow target
|
|
void dmwand_FollowTarget();
|
|
//Gender by Robert Bernavich, Jhenne, Archaego
|
|
// function returns a string value of objects gender
|
|
string dmwand_Gender(object oEntity);
|
|
//Identify item by Dopple
|
|
// toggle identified status of item in "dmw_item" local object on user,
|
|
// then return to the ItemListConv dialog
|
|
void dmwand_IdentifyItem();
|
|
//Inventory by Robert Bernavich, Jhenne, Archaego, Dopple
|
|
// Loop through the objects inventory and return a string value of entire
|
|
// inventory
|
|
string dmwand_Inventory(object oEntity);
|
|
//Item Info by Robert Bernavich, Jhenne, Archaego, and Dopple
|
|
string dmwand_ItemInfo(object oItem, int nLongForm = 0);
|
|
//Join player's party
|
|
void dmwand_JoinParty();
|
|
//Jump player by Jhenne
|
|
void dmwand_JumpPlayerHere();
|
|
//Jump to player by Jhenne
|
|
void dmwand_JumpToPlayer();
|
|
//Kick PC by Dopple and Jhenne
|
|
// Kick out the target PC
|
|
void dmwand_KickPC();
|
|
//Kill the target, forcing it to leave a corpse behind
|
|
// taken from Bioware's KillAndReplace() in the World Builder Guide
|
|
void dmwand_KillAndReplace();
|
|
//Leave target's party
|
|
void dmwand_LeaveParty();
|
|
//Map area by Dopple
|
|
// Give the target a full map of the area
|
|
void dmwand_MapArea();
|
|
//Mod One Rep by Jhenne and Dopple
|
|
// Modify the reputations of target creature and player towards each other
|
|
void dmwand_ModOneRep(string sPlayer);
|
|
//Mod Rep by Jhenne and Dopple
|
|
// Modify the reputations of target creature and all players towards each
|
|
// other
|
|
void dmwand_ModRep(string sAmt);
|
|
//Player list conversation by Dopple
|
|
// Used to return to starting dialog after selecting a player
|
|
void dmwand_PlayerListConv(string sParams);
|
|
//Race by Robert Bernavich, Jhenne, Archaego
|
|
// Returns string version of objects race
|
|
string dmwand_Race(object oEntity);
|
|
//Reload Module by Dopple
|
|
// reload the current running module
|
|
void dmwand_ReloadModule();
|
|
//Resume default by Jhenne
|
|
// make target resume waypoints if creature, stop everything if player
|
|
void dmwand_ResumeDefault();
|
|
//Shift Alignment by Jhenne and Dopple
|
|
// Shift the alignment of object
|
|
// - sAlign: law__/chaos/good_/evil
|
|
// - nShift: amount to shift by
|
|
void dmwand_ShiftAlignment(string sAlign, int nShift);
|
|
//ShowAllAttribs by Robert Bernavich, Jhenne, Archaego
|
|
// Return formatted report of player's character information
|
|
void dmwand_ShowAllAttribs();
|
|
//ShowBasicAttribs by Robert Bernavich, Jhenne, Archaego
|
|
// Return formatted report of player's basic character information
|
|
void dmwand_ShowBasicAttribs();
|
|
//ShowInventory by RRobert Bernavich, Jhenne, Archaego
|
|
// Return formatted report of player's inventory
|
|
void dmwand_ShowInventory();
|
|
//Skill Roll Funtion by Jhenne, modified by Dopple
|
|
// - nSkill: SKILL_*
|
|
// - nSecret: TRUE if roll should not be shown to other players
|
|
void dmwand_SkillCheck(int nSkill, int nSecret = TRUE);
|
|
//Swap Day/Night by Dopple
|
|
// - nDay: 1 to make it day, 0 to make it night
|
|
void dmwand_SwapDayNight(int nDay);
|
|
//Take all by Jhenne and Dopple
|
|
// Take all items from target
|
|
void dmwand_TakeAll();
|
|
//Take all equipped by Jhenne and Dopple
|
|
// Take all equipped items off of target
|
|
void dmwand_TakeAllEquipped();
|
|
//Take all unequipped by Jhenne and Dopple
|
|
// take all unequipped items from target
|
|
void dmwand_TakeAllUnequipped();
|
|
//Take Item by Jhenne and Dopple
|
|
// take dialog-selected item from target, and return to inventory list dialog
|
|
void dmwand_TakeItem();
|
|
//Item Stripper by Jhenne - remove item from target
|
|
// - oEquip: object to remove
|
|
void dmwand_takeoneitem(object oEquip);
|
|
//Toad..err..penguin the player by Dopple
|
|
// I would rather a chicken, but it seems that's not a valid polymorph type :(
|
|
void dmwand_Toad();
|
|
//TurnNearOff by Dopple, adapted from Bioware's on/off script
|
|
// Turn a placeable near the target location off
|
|
void dmwand_TurnNearOff();
|
|
//TurnNearOn by Dopple, adapted from Bioware's on/off script
|
|
// Turn a placeable near the target location on
|
|
void dmwand_TurnNearOn();
|
|
//TurnOff by Dopple, adapted from Bioware's on/off script
|
|
// Turn a placeable off
|
|
void dmwand_TurnOff(object oMyPlaceable);
|
|
//TurnOn by Dopple, adapted from Bioware's on/off script
|
|
// Turn a placeable on
|
|
void dmwand_TurnOn(object oMyPlaceable);
|
|
//TurnTargetOff by Dopple, adapted from Bioware's on/off script
|
|
// Turn target off
|
|
void dmwand_TurnTargetOff();
|
|
//TurnTargetOn by Dopple, adapted from Bioware's on/off script
|
|
// Turn target on
|
|
void dmwand_TurnTargetOn();
|
|
//UnToad..err..penguin the player by Dopple
|
|
// reverse effects of Toad
|
|
void dmwand_Untoad();
|
|
|
|
//Do Dialog Choice by Dopple
|
|
//Dialog function in dmw_dodialog_inc, performs a function or starts
|
|
// another dialog function when a dialog choice is selected
|
|
void dmwand_DoDialogChoice(int nChoice);
|
|
|
|
//Start Conversation by Dopple
|
|
// Function to start the ball rolling, in dmw_start_inc
|
|
void dmwand_StartConversation();
|
|
|
|
//DMFI: Added by hahnsoo
|
|
// Function gets the value of all items carried by oPC
|
|
int DMFI_GetNetWorth(object oPC)
|
|
{
|
|
object oItem = GetFirstItemInInventory(oPC);
|
|
int iValue = 0;
|
|
while (GetIsObjectValid(oItem))
|
|
{
|
|
iValue = iValue + GetGoldPieceValue(oItem);
|
|
oItem = GetNextItemInInventory(oPC);
|
|
}
|
|
return iValue;
|
|
}
|
|
|
|
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_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_istargetpcornpc()
|
|
{
|
|
return (GetIsObjectValid(oMyTarget) && GetAbilityScore(oMyTarget, ABILITY_CONSTITUTION));
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
//::///////////////////////////////////////////////
|
|
//:: File: dmw_func_inc
|
|
//::
|
|
//:: Useful functions for the DM's Helper
|
|
//:://////////////////////////////////////////////
|
|
|
|
void dmwand_AbilityCheck(int nAbility, int nSecret = TRUE)
|
|
{
|
|
int nRoll=d20();
|
|
int nRank=GetAbilityModifier (nAbility, oMyTarget);
|
|
int nResult=nRoll+nRank;
|
|
string sRoll=IntToString(nRoll);
|
|
string sRank=IntToString(nRank);
|
|
string sResult=IntToString(nResult);
|
|
string sAbility;
|
|
|
|
switch(nAbility)
|
|
{
|
|
case ABILITY_CHARISMA:
|
|
sAbility = "Charisma"; break;
|
|
case ABILITY_CONSTITUTION:
|
|
sAbility = "Constitution"; break;
|
|
case ABILITY_DEXTERITY:
|
|
sAbility = "Dexterity"; break;
|
|
case ABILITY_INTELLIGENCE:
|
|
sAbility = "Intelligence"; break;
|
|
case ABILITY_STRENGTH:
|
|
sAbility = "Strength"; break;
|
|
case ABILITY_WISDOM:
|
|
sAbility = "Wisdom"; break;
|
|
}
|
|
|
|
SendMessageToPC(oMySpeaker, GetName(oMyTarget)+"'s "+sAbility+" Check, Roll: "+sRoll+" Modifier: "+sRank+" = "+sResult);
|
|
|
|
if (!nSecret)
|
|
{
|
|
AssignCommand( oMyTarget, SpeakString(sAbility+" Check, Roll: "+sRoll+" Modifier: "+sRank+" = "+sResult));
|
|
}
|
|
}
|
|
|
|
void dmwand_AdvanceTime(int nHours)
|
|
{
|
|
int nCurrentHour = GetTimeHour();
|
|
int nCurrentMinute = GetTimeMinute();
|
|
int nCurrentSecond = GetTimeSecond();
|
|
int nCurrentMilli = GetTimeMillisecond();
|
|
|
|
nCurrentHour += nHours;
|
|
SetTime(nCurrentHour, nCurrentMinute, nCurrentSecond, nCurrentMilli);
|
|
dmwand_BuildConversation("TimeOfDay", "");
|
|
}
|
|
|
|
string dmwand_Alignment(object oEntity)
|
|
{
|
|
string sReturnString;
|
|
|
|
switch (GetAlignmentLawChaos(oEntity))
|
|
{
|
|
case ALIGNMENT_LAWFUL: sReturnString = "Lawful "; break;
|
|
case ALIGNMENT_NEUTRAL: sReturnString = "Neutral "; break;
|
|
case ALIGNMENT_CHAOTIC: sReturnString = "Chaotic "; break;
|
|
}
|
|
|
|
switch (GetAlignmentGoodEvil(oEntity))
|
|
{
|
|
case ALIGNMENT_GOOD: sReturnString = sReturnString + "Good"; break;
|
|
case ALIGNMENT_NEUTRAL: sReturnString = sReturnString + "Neutral"; break;
|
|
case ALIGNMENT_EVIL: sReturnString = sReturnString + "Evil"; break;
|
|
}
|
|
|
|
if (sReturnString == "Neutral Neutral"){sReturnString = "True Neutral";}
|
|
|
|
return sReturnString;
|
|
}
|
|
|
|
string dmwand_ClassLevel(object oEntity)
|
|
{
|
|
string sReturnString;
|
|
string sClass;
|
|
string sClassOne;
|
|
string sClassTwo;
|
|
string sClassThree;
|
|
int nLevelOne;
|
|
int nLevelTwo;
|
|
int nLevelThree;
|
|
int iIndex;
|
|
|
|
// Loop through all three classes and pull out info
|
|
for(iIndex == 1;iIndex < 4;iIndex++)
|
|
{
|
|
switch (GetClassByPosition(iIndex,oEntity))
|
|
{
|
|
case CLASS_TYPE_ABERRATION: sClass ="Aberration";break;
|
|
case CLASS_TYPE_ANIMAL: sClass ="Animal"; break;
|
|
case CLASS_TYPE_BARBARIAN: sClass ="Barbarian";break;
|
|
case CLASS_TYPE_BARD: sClass ="Bard"; break;
|
|
case CLASS_TYPE_BEAST: sClass ="Beast"; break;
|
|
case CLASS_TYPE_CLERIC: sClass ="Cleric"; break;
|
|
case CLASS_TYPE_COMMONER: sClass ="Commoner";break;
|
|
case CLASS_TYPE_CONSTRUCT: sClass ="Construct"; break;
|
|
case CLASS_TYPE_DRAGON: sClass ="Dragon"; break;
|
|
case CLASS_TYPE_DRUID: sClass ="Druid";break;
|
|
case CLASS_TYPE_ELEMENTAL: sClass ="Elemental"; break;
|
|
case CLASS_TYPE_FEY: sClass ="Fey";break;
|
|
case CLASS_TYPE_FIGHTER: sClass ="Fighter"; break;
|
|
case CLASS_TYPE_GIANT: sClass ="Giant"; break;
|
|
case CLASS_TYPE_HUMANOID: sClass ="Humanoid"; break;
|
|
case CLASS_TYPE_INVALID: sClass ="";break;
|
|
case CLASS_TYPE_MAGICAL_BEAST:sClass ="Magical Beast"; break;
|
|
case CLASS_TYPE_MONK: sClass ="Monk"; break;
|
|
case CLASS_TYPE_OUTSIDER: sClass ="Outsider"; break;
|
|
case CLASS_TYPE_MONSTROUS: sClass ="Monstrous"; break;
|
|
case CLASS_TYPE_PALADIN: sClass ="Paladin";break;
|
|
case CLASS_TYPE_RANGER: sClass ="Ranger";break;
|
|
case CLASS_TYPE_ROGUE: sClass ="Rogue";break;
|
|
case CLASS_TYPE_SHAPECHANGER: sClass ="Shapechanger";break;
|
|
case CLASS_TYPE_SORCERER: sClass ="Sorcerer";break;
|
|
case CLASS_TYPE_UNDEAD: sClass ="Undead";break;
|
|
case CLASS_TYPE_VERMIN: sClass ="Vermin"; break;
|
|
case CLASS_TYPE_WIZARD: sClass ="Wizard"; break;
|
|
}
|
|
|
|
// Now depending on which iteration we just went through
|
|
// assign it to the proper class
|
|
switch (iIndex)
|
|
{
|
|
case 1: sClassOne = sClass; break;
|
|
case 2: sClassTwo = sClass; break;
|
|
case 3: sClassThree = sClass; break;
|
|
}
|
|
};
|
|
|
|
// Now get all three class levels. Wil be 0 if does class pos
|
|
//does not exists
|
|
nLevelOne = GetLevelByPosition(1,oEntity);
|
|
nLevelTwo = GetLevelByPosition(2,oEntity);
|
|
nLevelThree = GetLevelByPosition(3,oEntity);
|
|
|
|
//Start building return string
|
|
sReturnString = sClassOne + "(" + IntToString(nLevelOne) + ")" ;
|
|
|
|
//If second class exists append to return string
|
|
if(nLevelTwo > 0)
|
|
{
|
|
sReturnString =sReturnString + "/" + sClassTwo + "(" + IntToString(nLevelTwo) + ")";
|
|
}
|
|
|
|
//If third class exists append to return string
|
|
if(nLevelThree > 0)
|
|
{
|
|
sReturnString =sReturnString + "/" + sClassThree + "(" + IntToString(nLevelThree) + ")";
|
|
}
|
|
|
|
return sReturnString;
|
|
}
|
|
|
|
void dmwand_DestroyItem()
|
|
{
|
|
object oItem = GetLocalObject(oMySpeaker, "dmw_item");
|
|
|
|
if(GetIsObjectValid(oItem))
|
|
{
|
|
DestroyObject(oItem);
|
|
}
|
|
dmwand_BuildConversation("ListInventory", "");
|
|
}
|
|
|
|
void dmwand_DestroyNearbyTarget()
|
|
{
|
|
effect eDestroy = EffectVisualEffect(VFX_IMP_SUNSTRIKE);
|
|
|
|
object oMyTest = GetFirstObjectInShape(SHAPE_CUBE, 0.6, lMyLoc, FALSE, OBJECT_TYPE_ALL);
|
|
while(GetIsObjectValid(oMyTest) && GetIsPC(oMyTest))
|
|
{
|
|
object oMyTest = GetNextObjectInShape(SHAPE_CUBE, 0.6, lMyLoc, FALSE, OBJECT_TYPE_ALL);
|
|
}
|
|
|
|
if(GetIsObjectValid(oMyTest) && (! GetIsPC(oMyTest)))
|
|
{
|
|
DestroyObject(oMyTest);
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eDestroy, lMyLoc);
|
|
}
|
|
dmwand_BuildConversation("Start", "");
|
|
}
|
|
|
|
void dmwand_DestroyTarget()
|
|
{
|
|
effect eDestroy = EffectVisualEffect(VFX_IMP_SUNSTRIKE);
|
|
|
|
DestroyObject(oMyTarget);
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eDestroy, lMyLoc);
|
|
dmwand_BuildConversation("Start", "");
|
|
}
|
|
|
|
void dmwand_ExportChars()
|
|
{
|
|
ExportAllCharacters();
|
|
}
|
|
|
|
void dmwand_FollowMe()
|
|
{
|
|
AssignCommand ( oMyTarget, ActionForceFollowObject( oMySpeaker));
|
|
}
|
|
|
|
void dmwand_FollowTarget()
|
|
{
|
|
AssignCommand ( oMySpeaker, ActionForceFollowObject(oMyTarget));
|
|
}
|
|
|
|
string dmwand_Gender(object oEntity)
|
|
{
|
|
switch (GetGender(oEntity))
|
|
{
|
|
case GENDER_MALE: return "Male"; break;
|
|
case GENDER_FEMALE: return "Female"; break;
|
|
case GENDER_BOTH: return "Both"; break;
|
|
case GENDER_NONE: return "None"; break;
|
|
case GENDER_OTHER: return "Other"; break;
|
|
}
|
|
|
|
return "Weirdo";
|
|
}
|
|
|
|
void dmwand_IdentifyItem()
|
|
{
|
|
object oItem = GetLocalObject(oMySpeaker, "dmw_item");
|
|
|
|
if(GetIsObjectValid(oItem))
|
|
{
|
|
SetIdentified(oItem, (GetIdentified(oItem)?FALSE:TRUE));
|
|
}
|
|
dmwand_BuildConversation("ItemListConv", "");
|
|
}
|
|
|
|
string dmwand_Inventory(object oEntity)
|
|
{
|
|
|
|
string sBaseType;
|
|
string sReturnString;
|
|
|
|
object oItem = GetFirstItemInInventory(oEntity);
|
|
|
|
while(oItem != OBJECT_INVALID)
|
|
{
|
|
sReturnString = sReturnString + "\n" + dmwand_ItemInfo(oItem, 0);
|
|
oItem = GetNextItemInInventory(oEntity);
|
|
};
|
|
|
|
sReturnString = sReturnString + "\nEquipped:\n";
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_ARMS, oMyTarget))){ sReturnString = sReturnString + "Arms: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_ARMS, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_BELT, oMyTarget))){ sReturnString = sReturnString + "Belt: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_BELT, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_BOOTS, oMyTarget))){ sReturnString = sReturnString + "Boots: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_BOOTS, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CHEST, oMyTarget))){ sReturnString = sReturnString + "Chest: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_CHEST, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CLOAK, oMyTarget))){ sReturnString = sReturnString + "Cloak: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_CLOAK, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_HEAD, oMyTarget))){ sReturnString = sReturnString + "Head: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_HEAD, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oMyTarget))){ sReturnString = sReturnString + "Left Hand: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_LEFTRING, oMyTarget))){ sReturnString = sReturnString + "Left Ring: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_LEFTRING, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_NECK, oMyTarget))){ sReturnString = sReturnString + "Neck: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_NECK, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oMyTarget))){ sReturnString = sReturnString + "Right Hand: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oMyTarget))){ sReturnString = sReturnString + "Right Ring: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_ARROWS, oMyTarget))){ sReturnString = sReturnString + "Arrows: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_ARROWS, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_BOLTS, oMyTarget))){ sReturnString = sReturnString + "Bolts: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_BOLTS, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_BULLETS, oMyTarget))){ sReturnString = sReturnString + "Bullets: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_BULLETS, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CARMOUR, oMyTarget))){ sReturnString = sReturnString + "Creature Armor: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_CARMOUR, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oMyTarget))){ sReturnString = sReturnString + "Creature Bite: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oMyTarget))){ sReturnString = sReturnString + "Creature Left: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oMyTarget),0) + "\n"; }
|
|
if(GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oMyTarget))){ sReturnString = sReturnString + "Creature Right: " + dmwand_ItemInfo(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oMyTarget),0) + "\n"; }
|
|
|
|
return sReturnString;
|
|
}
|
|
|
|
string dmwand_ItemInfo(object oItem, int nLongForm = 0)
|
|
{
|
|
string sReturnString = "";
|
|
string sBaseType = "";
|
|
string sStacked = "";
|
|
string sIdentified = "";
|
|
string sGPValue = "";
|
|
string sACValue = "";
|
|
string sProperties = "";
|
|
|
|
switch(GetBaseItemType(oItem))
|
|
{
|
|
case BASE_ITEM_AMULET: sBaseType ="Amulet";break;
|
|
case BASE_ITEM_ARMOR: sBaseType ="Armor";break;
|
|
case BASE_ITEM_ARROW: sBaseType ="Arrow";break;
|
|
case BASE_ITEM_BASTARDSWORD: sBaseType ="Bastard Sword";break;
|
|
case BASE_ITEM_BATTLEAXE: sBaseType ="Battle Axe";break;
|
|
case BASE_ITEM_BELT: sBaseType ="Belt";break;
|
|
case BASE_ITEM_BOLT : sBaseType ="Bolt";break;
|
|
case BASE_ITEM_BOOK: sBaseType ="Book";break;
|
|
case BASE_ITEM_BOOTS: sBaseType ="Boots";break;
|
|
case BASE_ITEM_BRACER: sBaseType ="Bracer";break;
|
|
case BASE_ITEM_BULLET: sBaseType ="Bullet";break;
|
|
case BASE_ITEM_CBLUDGWEAPON: sBaseType ="Bludgeoning Weap.";break;
|
|
case BASE_ITEM_CLOAK: sBaseType ="Cloak";break;
|
|
case BASE_ITEM_CLUB: sBaseType ="Club";break;
|
|
case BASE_ITEM_CPIERCWEAPON: sBaseType ="Pierceing Weap.";break;
|
|
case BASE_ITEM_CREATUREITEM: sBaseType ="Creature Item";break;
|
|
case BASE_ITEM_CSLASHWEAPON: sBaseType ="Slash Weap.";break;
|
|
case BASE_ITEM_CSLSHPRCWEAP: sBaseType ="Slash/Pierce Weap.";break;
|
|
case BASE_ITEM_DAGGER: sBaseType ="Dagger";break;
|
|
case BASE_ITEM_DART: sBaseType ="Dart";break;
|
|
case BASE_ITEM_DIREMACE: sBaseType ="Mace";break;
|
|
case BASE_ITEM_DOUBLEAXE: sBaseType ="Double Axe";break;
|
|
case BASE_ITEM_GEM: sBaseType ="Gem";break;
|
|
case BASE_ITEM_GLOVES: sBaseType ="Gloves";break;
|
|
case BASE_ITEM_GOLD: sBaseType ="Gold";break;
|
|
case BASE_ITEM_GREATAXE: sBaseType ="Great Axe";break;
|
|
case BASE_ITEM_GREATSWORD: sBaseType ="Great Sword";break;
|
|
case BASE_ITEM_HALBERD: sBaseType ="Halberd";break;
|
|
case BASE_ITEM_HANDAXE: sBaseType ="Hand Axe";break;
|
|
case BASE_ITEM_HEALERSKIT: sBaseType ="Healers Kit";break;
|
|
case BASE_ITEM_HEAVYCROSSBOW: sBaseType ="Heavy Xbow";break;
|
|
case BASE_ITEM_HEAVYFLAIL: sBaseType ="Heavy Flail";break;
|
|
case BASE_ITEM_HELMET: sBaseType ="Helmet";break;
|
|
case BASE_ITEM_INVALID: sBaseType ="";break;
|
|
case BASE_ITEM_KAMA: sBaseType ="Kama";break;
|
|
case BASE_ITEM_KATANA: sBaseType ="Katana";break;
|
|
case BASE_ITEM_KEY: sBaseType ="Key";break;
|
|
case BASE_ITEM_KUKRI: sBaseType ="Kukri";break;
|
|
case BASE_ITEM_LARGEBOX: sBaseType ="Large Box";break;
|
|
case BASE_ITEM_LARGESHIELD: sBaseType ="Large Shield";break;
|
|
case BASE_ITEM_LIGHTCROSSBOW: sBaseType ="Light Xbow";break;
|
|
case BASE_ITEM_LIGHTFLAIL: sBaseType ="Light Flail";break;
|
|
case BASE_ITEM_LIGHTHAMMER: sBaseType ="Light Hammer";break;
|
|
case BASE_ITEM_LIGHTMACE: sBaseType ="Light Mace";break;
|
|
case BASE_ITEM_LONGBOW: sBaseType ="Long Bow";break;
|
|
case BASE_ITEM_LONGSWORD: sBaseType ="Long Sword";break;
|
|
case BASE_ITEM_MAGICROD: sBaseType ="Magic Rod";break;
|
|
case BASE_ITEM_MAGICSTAFF: sBaseType ="Magic Staff";break;
|
|
case BASE_ITEM_MAGICWAND: sBaseType ="Magic Wand";break;
|
|
case BASE_ITEM_MISCLARGE: sBaseType ="Misc. Large";break;
|
|
case BASE_ITEM_MISCMEDIUM: sBaseType ="Misc. Medium";break;
|
|
case BASE_ITEM_MISCSMALL: sBaseType ="Misc. Small";break;
|
|
case BASE_ITEM_MISCTALL: sBaseType ="Misc. Small";break;
|
|
case BASE_ITEM_MISCTHIN: sBaseType ="Misc. Thin";break;
|
|
case BASE_ITEM_MISCWIDE: sBaseType ="Misc. Wide";break;
|
|
case BASE_ITEM_MORNINGSTAR: sBaseType ="Morningstar";break;
|
|
case BASE_ITEM_POTIONS: sBaseType ="Potion";break;
|
|
case BASE_ITEM_QUARTERSTAFF: sBaseType ="Quarterstaff";break;
|
|
case BASE_ITEM_RAPIER: sBaseType ="Rapier";break;
|
|
case BASE_ITEM_RING: sBaseType ="Ring";break;
|
|
case BASE_ITEM_SCIMITAR: sBaseType ="Scimitar";break;
|
|
case BASE_ITEM_SCROLL: sBaseType ="Scroll";break;
|
|
case BASE_ITEM_SCYTHE: sBaseType ="Scythe";break;
|
|
case BASE_ITEM_SHORTBOW: sBaseType ="Shortbow";break;
|
|
case BASE_ITEM_SHORTSPEAR: sBaseType ="Short Spear";break;
|
|
case BASE_ITEM_SHORTSWORD: sBaseType ="Short Sword";break;
|
|
case BASE_ITEM_SHURIKEN: sBaseType ="Shuriken";break;
|
|
case BASE_ITEM_SICKLE: sBaseType ="Sickle";break;
|
|
case BASE_ITEM_SLING: sBaseType ="Sling";break;
|
|
case BASE_ITEM_SMALLSHIELD: sBaseType ="Small Shield";break;
|
|
case BASE_ITEM_SPELLSCROLL: sBaseType ="Spell Scroll";break;
|
|
case BASE_ITEM_THIEVESTOOLS: sBaseType ="Thieves Tools";break;
|
|
case BASE_ITEM_THROWINGAXE: sBaseType ="Throwing Axe";break;
|
|
case BASE_ITEM_TORCH: sBaseType ="Torch";break;
|
|
case BASE_ITEM_TOWERSHIELD: sBaseType ="Tower Shield";break;
|
|
case BASE_ITEM_TRAPKIT: sBaseType ="Trap Kit";break;
|
|
case BASE_ITEM_TWOBLADEDSWORD: sBaseType ="2 Bladed Sword";break;
|
|
case BASE_ITEM_WARHAMMER: sBaseType ="Warhammer";break;
|
|
}
|
|
|
|
if (sBaseType != "Gold")
|
|
{
|
|
// If more than one item (stacked)
|
|
if (GetNumStackedItems(oItem) > 1 )
|
|
{
|
|
sStacked = "(" + IntToString(GetNumStackedItems(oItem)) + ") ";
|
|
}
|
|
else
|
|
{
|
|
// Build remainder of output string
|
|
sStacked = "";
|
|
}
|
|
}
|
|
|
|
if(nLongForm)
|
|
{
|
|
sIdentified = "Identified: " + ((GetIdentified(oItem))?"Yes":"No");
|
|
sGPValue = "Gold Piece Value: " + IntToString(GetGoldPieceValue(oItem));
|
|
int nACValue = GetItemACValue(oItem);
|
|
if(nACValue) { sACValue = "AC: " + IntToString(nACValue); }
|
|
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_ABILITY_BONUS)) { sProperties = sProperties + "Ability Bonus\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS)) { sProperties = sProperties + "AC Bonus\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_ALIGNMENT_GROUP)) { sProperties = sProperties + "AC Bonus vs. Alignment Group\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_DAMAGE_TYPE)) { sProperties = sProperties + "AC Bonus vs. Damage Type\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP)) { sProperties = sProperties + "AC Bonus vs. Racial Group\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_SPECIFIC_ALIGNMENT)) { sProperties = sProperties + "AC Bonus vs. Alignment\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS)) { sProperties = sProperties + "Attack Bonus\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUP)) { sProperties = sProperties + "Attack Bonus vs. Alignment Group\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS_VS_RACIAL_GROUP)) { sProperties = sProperties + "Attack Bonusvs. Racial Group\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS_VS_SPECIFIC_ALIGNMENT)) { sProperties = sProperties + "Attack Bonus vs. Alignment\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_BASE_ITEM_WEIGHT_REDUCTION)) { sProperties = sProperties + "Weight Reduction\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_BONUS_FEAT)) { sProperties = sProperties + "Bonus Feat\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_BONUS_SPELL_SLOT_OF_LEVEL_N)) { sProperties = sProperties + "Bonus Spell Slot\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_CAST_SPELL)) { sProperties = sProperties + "Cast Spell\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS)) { sProperties = sProperties + "Damage Bonus\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP)) { sProperties = sProperties + "Damage Bonus vs. Alignment Group\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP)) { sProperties = sProperties + "Damage Bonus vs. Racial Group\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_SPECIFIC_ALIGNMENT)) { sProperties = sProperties + "Damage Bonus vs. Alignment\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_REDUCTION)) { sProperties = sProperties + "Damage Reduction\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_RESISTANCE)) { sProperties = sProperties + "Damage Resistance\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_VULNERABILITY)) { sProperties = sProperties + "Damage Vulnerability\n"; }
|
|
// if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DANCING)) { sProperties = sProperties + "Dancing\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DARKVISION)) { sProperties = sProperties + "Darkvision\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_ABILITY_SCORE)) { sProperties = sProperties + "Decreased Ability\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_AC)) { sProperties = sProperties + "Decreased AC\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_ATTACK_MODIFIER)) { sProperties = sProperties + "Decreased Attack Modifier\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_DAMAGE)) { sProperties = sProperties + "Decreased Damage\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_ENHANCEMENT_MODIFIER)) { sProperties = sProperties + "Decreased Enhancement Modifier\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_SAVING_THROWS)) { sProperties = sProperties + "Decreased Saving Throws\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_SAVING_THROWS_SPECIFIC)) { sProperties = sProperties + "Decreased Specific Saving Throw\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_SKILL_MODIFIER)) { sProperties = sProperties + "Decreased Skill Modifier\n"; }
|
|
// if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_DOUBLE_STACK)) { sProperties = sProperties + "Double Stack\n"; }
|
|
// if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCED_CONTAINER_BONUS_SLOTS)) { sProperties = sProperties + "Enhanced Container Bonus Slots\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCED_CONTAINER_REDUCED_WEIGHT)) { sProperties = sProperties + "Enhanced Container Reduced Weight\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS)) { sProperties = sProperties + "Enhancement Bonus\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_ALIGNMENT_GROUP)) { sProperties = sProperties + "Enhancement Bonus vs. Alignment Group\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP)) { sProperties = sProperties + "Enhancement Bonus vs. Racial Group\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_SPECIFIC_ALIGNEMENT)) { sProperties = sProperties + "Enhancement Bonus vs. Alignment\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_EXTRA_MELEE_DAMAGE_TYPE)) { sProperties = sProperties + "Extra Melee Damage Type\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_EXTRA_RANGED_DAMAGE_TYPE)) { sProperties = sProperties + "Extra Ranged Damage Type\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_FREEDOM_OF_MOVEMENT)) { sProperties = sProperties + "Freedom of Movement\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_HASTE)) { sProperties = sProperties + "Haste\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_HOLY_AVENGER)) { sProperties = sProperties + "Holy Avenger\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_IMMUNITY_DAMAGE_TYPE)) { sProperties = sProperties + "Immunity Damage Type\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_IMMUNITY_MISCELLANEOUS)) { sProperties = sProperties + "Immunity Miscellaneous\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_IMMUNITY_SPECIFIC_SPELL)) { sProperties = sProperties + "Immunity Specific Spell\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_IMMUNITY_SPELL_SCHOOL)) { sProperties = sProperties + "Immunity Spell School\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_IMMUNITY_SPELLS_BY_LEVEL)) { sProperties = sProperties + "Immunity Spell Level\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_IMPROVED_EVASION)) { sProperties = sProperties + "Improved Evasion\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_KEEN)) { sProperties = sProperties + "Keen\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_LIGHT)) { sProperties = sProperties + "Light\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_MASSIVE_CRITICALS)) { sProperties = sProperties + "Massive Criticals\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_MIGHTY)) { sProperties = sProperties + "Mighty\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_MIND_BLANK)) { sProperties = sProperties + "Mind Blank\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_MONSTER_DAMAGE)) { sProperties = sProperties + "Monster Damage\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_NO_DAMAGE)) { sProperties = sProperties + "No Damage\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_ON_HIT_PROPERTIES)) { sProperties = sProperties + "On Hit\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_ON_MONSTER_HIT)) { sProperties = sProperties + "On Monster Hit\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_POISON)) { sProperties = sProperties + "Poison\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_REGENERATION)) { sProperties = sProperties + "Regeneration\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_REGENERATION_VAMPIRIC)) { sProperties = sProperties + "Vampiric Regeneration\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_SAVING_THROW_BONUS)) { sProperties = sProperties + "Saving Throw Bonus\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC)) { sProperties = sProperties + "Specific Saving Throw Bonus\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_SKILL_BONUS)) { sProperties = sProperties + "Skill Bonus\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_SPELL_RESISTANCE)) { sProperties = sProperties + "Spell Resistance\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_THIEVES_TOOLS)) { sProperties = sProperties + "Thieves Tools\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_TRAP)) { sProperties = sProperties + "Trap\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_TRUE_SEEING)) { sProperties = sProperties + "True Seeing\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_TURN_RESISTANCE)) { sProperties = sProperties + "Turn Resistance\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_UNLIMITED_AMMUNITION)) { sProperties = sProperties + "Unlimited Ammo\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_USE_LIMITATION_ALIGNMENT_GROUP)) { sProperties = sProperties + "Alignment Group Use Limitation\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_USE_LIMITATION_CLASS)) { sProperties = sProperties + "Class Use Limitation\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_USE_LIMITATION_RACIAL_TYPE)) { sProperties = sProperties + "Racial Use Limitation\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_USE_LIMITATION_SPECIFIC_ALIGNMENT)) { sProperties = sProperties + "Alignment Use Limitation\n"; }
|
|
if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_USE_LIMITATION_TILESET)) { sProperties = sProperties + "Tileset Use Limitation\n"; }
|
|
// if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_VORPAL)) { sProperties = sProperties + "Vorpal\n"; }
|
|
// if(GetItemHasItemProperty(oItem, ITEM_PROPERTY_WOUNDING)) { sProperties = sProperties + "Wounding\n"; }
|
|
if(sProperties != "") { sProperties = "Properties:\n" + sProperties; }
|
|
|
|
sReturnString = sStacked + GetName(oItem) + "\n" +
|
|
"-------------------------------------------\n" +
|
|
sBaseType + "\n" +
|
|
sIdentified + "\n" +
|
|
((nACValue)?sACValue + "\n":"") +
|
|
sProperties;
|
|
}
|
|
else
|
|
{
|
|
sReturnString = sStacked + GetName(oItem) + " (" + sBaseType + ")";
|
|
}
|
|
return sReturnString;
|
|
}
|
|
|
|
void dmwand_JoinParty()
|
|
{
|
|
AssignCommand(oMySpeaker, AddToParty( oMySpeaker, GetFactionLeader(oMyTarget)));
|
|
}
|
|
|
|
void dmwand_JumpPlayerHere()
|
|
{
|
|
location lJumpLoc = GetLocation(oMySpeaker);
|
|
AssignCommand(oMyTarget, ClearAllActions());
|
|
AssignCommand(oMyTarget, ActionJumpToLocation(lJumpLoc));
|
|
}
|
|
|
|
void dmwand_JumpToPlayer()
|
|
{
|
|
location lJumpLoc = GetLocation(oMyTarget);
|
|
AssignCommand(oMySpeaker, ActionJumpToLocation(lJumpLoc));
|
|
}
|
|
|
|
void dmwand_KickPC()
|
|
{
|
|
// Create a lightning strike, thunder, scorch mark, and random small
|
|
// lightnings at target's location
|
|
AssignCommand( oMySpeaker, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), lMyLoc));
|
|
AssignCommand ( oMySpeaker, PlaySound ("as_wt_thundercl3"));
|
|
object oScorch = CreateObject ( OBJECT_TYPE_PLACEABLE, "plc_weathmark", lMyLoc, FALSE);
|
|
object oTargetArea = GetArea(oMySpeaker);
|
|
int nXPos, nYPos, nCount;
|
|
for(nCount = 0; nCount < 5; nCount++)
|
|
{
|
|
nXPos = Random(10) - 5;
|
|
nYPos = Random(10) - 5;
|
|
|
|
vector vNewVector = GetPositionFromLocation(lMyLoc);
|
|
vNewVector.x += nXPos;
|
|
vNewVector.y += nYPos;
|
|
|
|
location lNewLoc = Location(oTargetArea, vNewVector, 0.0);
|
|
AssignCommand( oMySpeaker, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_S), lNewLoc));
|
|
}
|
|
DelayCommand ( 20.0, DestroyObject ( oScorch));
|
|
|
|
// Kick the target out of the game
|
|
BootPC(oMyTarget);
|
|
}
|
|
|
|
void dmwand_KillAndReplace()
|
|
{
|
|
SetPlotFlag(oMyTarget, FALSE);
|
|
AssignCommand(oMyTarget, SetIsDestroyable(FALSE, FALSE));
|
|
AssignCommand(oMyTarget, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oMyTarget));
|
|
}
|
|
|
|
void dmwand_LeaveParty()
|
|
{
|
|
RemoveFromParty(oMySpeaker);
|
|
}
|
|
|
|
void dmwand_MapArea()
|
|
{
|
|
object omyarea = GetArea(oMySpeaker);
|
|
ExploreAreaForPlayer(omyarea, oMyTarget);
|
|
}
|
|
|
|
void dmwand_ModOneRep(string sPlayer)
|
|
{
|
|
string sAmt = GetLocalString(oMySpeaker, "dmw_repamt");
|
|
int nAmt = StringToInt(sAmt);
|
|
object oPlayer = GetLocalObject(oMySpeaker, "dmw_playercache" + sPlayer);
|
|
|
|
AdjustReputation(oPlayer, oMyTarget, nAmt);
|
|
AdjustReputation(oMyTarget, oPlayer, nAmt);
|
|
}
|
|
|
|
void dmwand_ModRep(string sAmt)
|
|
{
|
|
SetLocalString(oMySpeaker, "dmw_repamt", sAmt);
|
|
string sAllOrOne = GetLocalString(oMySpeaker, "dmw_repargs");
|
|
if(TestStringAgainstPattern(sAllOrOne, "one"))
|
|
{
|
|
dmwand_BuildConversation("ListPlayers", "func_ModOneRep");
|
|
return;
|
|
}
|
|
int nAmt = StringToInt(sAmt);
|
|
|
|
object oPlayer = GetFirstPC();
|
|
while(GetIsObjectValid(oPlayer))
|
|
{
|
|
AdjustReputation(oPlayer, oMyTarget, nAmt);
|
|
AdjustReputation(oMyTarget, oPlayer, nAmt);
|
|
oPlayer = GetNextPC();
|
|
}
|
|
}
|
|
|
|
void dmwand_PlayerListConv(string sParams)
|
|
{
|
|
int nPlayer = StringToInt(sParams);
|
|
int nCache;
|
|
int nCount;
|
|
|
|
object oPlayer = GetLocalObject(oMySpeaker, "dmw_playercache" + IntToString(nPlayer));
|
|
oMyTarget = oPlayer;
|
|
SetLocalObject(oMySpeaker, "dmfi_univ_target", oMyTarget);
|
|
|
|
//Go back to the first conversation level
|
|
dmwand_BuildConversation("Start", "");
|
|
}
|
|
|
|
string dmwand_Race(object oEntity)
|
|
{
|
|
switch (GetRacialType(oEntity))
|
|
{
|
|
case RACIAL_TYPE_ALL: return "All"; break;
|
|
case RACIAL_TYPE_ANIMAL: return "Animal"; break;
|
|
case RACIAL_TYPE_BEAST: return "Beast"; break;
|
|
case RACIAL_TYPE_CONSTRUCT: return "Construct"; break;
|
|
case RACIAL_TYPE_DRAGON: return "Dragon"; break;
|
|
case RACIAL_TYPE_DWARF: return "Dwarf"; break;
|
|
case RACIAL_TYPE_ELEMENTAL: return "Elemental"; break;
|
|
case RACIAL_TYPE_ELF: return "Elf"; break;
|
|
case RACIAL_TYPE_FEY: return "Fey"; break;
|
|
case RACIAL_TYPE_GIANT: return "Giant"; break;
|
|
case RACIAL_TYPE_GNOME: return "Gnome"; break;
|
|
case RACIAL_TYPE_HALFELF: return "Half Elf"; break;
|
|
case RACIAL_TYPE_HALFLING: return "Halfling"; break;
|
|
case RACIAL_TYPE_HALFORC: return "Half Orc"; break;
|
|
case RACIAL_TYPE_HUMAN: return "Human"; break;
|
|
case RACIAL_TYPE_HUMANOID_GOBLINOID: return "Goblinoid"; break;
|
|
case RACIAL_TYPE_HUMANOID_MONSTROUS: return "Monstrous"; break;
|
|
case RACIAL_TYPE_HUMANOID_ORC: return "Orc"; break;
|
|
case RACIAL_TYPE_HUMANOID_REPTILIAN: return "Reptillian"; break;
|
|
// case RACIAL_TYPE_INVALID: return "Unknown"; break;
|
|
case RACIAL_TYPE_MAGICAL_BEAST: return "Magical Beast"; break;
|
|
case RACIAL_TYPE_OUTSIDER: return "Outsider"; break;
|
|
case RACIAL_TYPE_SHAPECHANGER: return "Shapechanger"; break;
|
|
case RACIAL_TYPE_UNDEAD: return "Undead"; break;
|
|
case RACIAL_TYPE_VERMIN: return "Vermin"; break;
|
|
}
|
|
|
|
return "Unknown";
|
|
}
|
|
|
|
void dmwand_ReloadModule()
|
|
{
|
|
string sModuleName = GetModuleName();
|
|
// SendMessageToPC(oMySpeaker,"CRASHES MODULE-DISABLED");
|
|
StartNewModule(sModuleName);
|
|
}
|
|
|
|
void dmwand_ResumeDefault()
|
|
{
|
|
if(GetIsPC(oMyTarget))
|
|
{
|
|
AssignCommand ( oMyTarget, ClearAllActions());
|
|
}
|
|
else
|
|
{
|
|
ExecuteScript ( "nw_c2_default9", oMyTarget);
|
|
}
|
|
}
|
|
|
|
void dmwand_ShiftAlignment(string sAlign, int nShift)
|
|
{
|
|
if(TestStringAgainstPattern(sAlign, "law__"))
|
|
{
|
|
AdjustAlignment (oMyTarget, ALIGNMENT_LAWFUL, nShift);
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern(sAlign, "chaos"))
|
|
{
|
|
AdjustAlignment (oMyTarget, ALIGNMENT_CHAOTIC, nShift);
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern(sAlign, "good_"))
|
|
{
|
|
AdjustAlignment (oMyTarget, ALIGNMENT_GOOD, nShift);
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern(sAlign, "evil_"))
|
|
{
|
|
AdjustAlignment (oMyTarget, ALIGNMENT_EVIL, nShift);
|
|
return;
|
|
}
|
|
}
|
|
|
|
void dmwand_ShowAllAttribs()
|
|
{
|
|
string sSTR = IntToString(GetAbilityScore(oMyTarget,ABILITY_STRENGTH));
|
|
string sINT = IntToString(GetAbilityScore(oMyTarget,ABILITY_INTELLIGENCE));
|
|
string sDEX = IntToString(GetAbilityScore(oMyTarget,ABILITY_DEXTERITY));
|
|
string sWIS = IntToString(GetAbilityScore(oMyTarget,ABILITY_WISDOM));
|
|
string sCON = IntToString(GetAbilityScore(oMyTarget,ABILITY_CONSTITUTION));
|
|
string sCHA = IntToString(GetAbilityScore(oMyTarget,ABILITY_CHARISMA));
|
|
string sReport = "\n-------------------------------------------" +
|
|
"\nReported: " + IntToString(GetTimeHour()) + ":" + IntToString(GetTimeMinute()) +
|
|
"\nPlayer Name: " + GetPCPlayerName(oMyTarget) +
|
|
"PubCDKey: " + GetPCPublicCDKey(oMyTarget) +
|
|
"\nChar Name: " + GetName(oMyTarget) +
|
|
"\n-------------------------------------------" +
|
|
"\nRace: " + dmwand_Race(oMyTarget) +
|
|
"\nClass: " + dmwand_ClassLevel(oMyTarget) +
|
|
"\nXP: " + IntToString(GetXP(oMyTarget)) +
|
|
"\nGender: " + dmwand_Gender(oMyTarget) +
|
|
"\nAlign: " + dmwand_Alignment(oMyTarget) +
|
|
"\nDeity: " + GetDeity(oMyTarget) +
|
|
"\n" +
|
|
"\nSTR: " + sSTR +
|
|
"\nINT: " + sINT +
|
|
"\nWIS: " + sWIS +
|
|
"\nDEX: " + sDEX +
|
|
"\nCON: " + sCON +
|
|
"\nCHA: " + sCHA +
|
|
"\n" +
|
|
"\nHP: " + IntToString(GetCurrentHitPoints(oMyTarget)) +
|
|
" of " + IntToString(GetMaxHitPoints(oMyTarget)) +
|
|
"\nAC: " + IntToString(GetAC(oMyTarget)) +
|
|
"\n\nGold: " + IntToString(GetGold(oMyTarget)) +
|
|
"\n\nNet Worth: " + IntToString(DMFI_GetNetWorth(oMyTarget) + GetGold(oMyTarget)) +
|
|
"\nInventory:\n " + dmwand_Inventory(oMyTarget) +
|
|
"\n-------------------------------------------";
|
|
|
|
SetLocalString(oMySpeaker, "dmw_dialog0", sReport);
|
|
}
|
|
|
|
void dmwand_ShowBasicAttribs()
|
|
{
|
|
string sSTR = IntToString(GetAbilityScore(oMyTarget,ABILITY_STRENGTH));
|
|
string sINT = IntToString(GetAbilityScore(oMyTarget,ABILITY_INTELLIGENCE));
|
|
string sDEX = IntToString(GetAbilityScore(oMyTarget,ABILITY_DEXTERITY));
|
|
string sWIS = IntToString(GetAbilityScore(oMyTarget,ABILITY_WISDOM));
|
|
string sCON = IntToString(GetAbilityScore(oMyTarget,ABILITY_CONSTITUTION));
|
|
string sCHA = IntToString(GetAbilityScore(oMyTarget,ABILITY_CHARISMA));
|
|
string sReport = "\n-------------------------------------------" +
|
|
"\nPlayer Name: " + GetPCPlayerName(oMyTarget) +
|
|
"\nChar Name: " + GetName(oMyTarget) +
|
|
"\n-------------------------------------------" +
|
|
"\nRace: " + dmwand_Race(oMyTarget) +
|
|
"\nClass: " + dmwand_ClassLevel(oMyTarget) +
|
|
"\nXP: " + IntToString(GetXP(oMyTarget)) +
|
|
"\nGender: " + dmwand_Gender(oMyTarget) +
|
|
"\nAlign: " + dmwand_Alignment(oMyTarget) +
|
|
"\nDeity: " + GetDeity(oMyTarget) +
|
|
"\n" +
|
|
"\nSTR: " + sSTR +
|
|
"\nINT: " + sINT +
|
|
"\nWIS: " + sWIS +
|
|
"\nDEX: " + sDEX +
|
|
"\nCON: " + sCON +
|
|
"\nCHA: " + sCHA +
|
|
"\n" +
|
|
"\nHP: " + IntToString(GetCurrentHitPoints(oMyTarget)) +
|
|
" of " + IntToString(GetMaxHitPoints(oMyTarget)) +
|
|
"\nAC: " + IntToString(GetAC(oMyTarget)) +
|
|
"\n\nGold: " + IntToString(GetGold(oMyTarget)) +
|
|
"\n\nNet Worth: " + IntToString(DMFI_GetNetWorth(oMyTarget) + GetGold(oMyTarget)) +
|
|
"\n-------------------------------------------";
|
|
SetLocalString(oMySpeaker, "dmw_dialog0", sReport);
|
|
}
|
|
|
|
void dmwand_ShowInventory()
|
|
{
|
|
string sReport = "\n-------------------------------------------" +
|
|
"\nPlayer Name: " + GetPCPlayerName(oMyTarget) +
|
|
"\nChar Name: " + GetName(oMyTarget) +
|
|
"\n-------------------------------------------" +
|
|
"\nInventory:\n " + dmwand_Inventory(oMyTarget) +
|
|
"\n-------------------------------------------";
|
|
SetLocalString(oMySpeaker, "dmw_dialog0", sReport);
|
|
}
|
|
|
|
void dmwand_SkillCheck(int nSkill, int nSecret = TRUE)
|
|
{
|
|
int nRoll=d20();
|
|
int nRank=GetSkillRank (nSkill, oMyTarget);
|
|
int nResult=nRoll+nRank;
|
|
string sRoll=IntToString(nRoll);
|
|
string sRank=IntToString(nRank);
|
|
string sResult=IntToString(nResult);
|
|
string sSkill;
|
|
|
|
switch(nSkill)
|
|
{
|
|
case SKILL_ANIMAL_EMPATHY:
|
|
sSkill = "Animal Empathy"; break;
|
|
case SKILL_CONCENTRATION:
|
|
sSkill = "Concentration"; break;
|
|
case SKILL_DISABLE_TRAP:
|
|
sSkill = "Disable Trap"; break;
|
|
case SKILL_DISCIPLINE:
|
|
sSkill = "Discipline"; break;
|
|
case SKILL_HEAL:
|
|
sSkill = "Heal"; break;
|
|
case SKILL_HIDE:
|
|
sSkill = "Hide"; break;
|
|
case SKILL_LISTEN:
|
|
sSkill = "Listen"; break;
|
|
case SKILL_LORE:
|
|
sSkill = "Lore"; break;
|
|
case SKILL_MOVE_SILENTLY:
|
|
sSkill = "Move Silently"; break;
|
|
case SKILL_OPEN_LOCK:
|
|
sSkill = "Open Lock"; break;
|
|
case SKILL_PARRY:
|
|
sSkill = "Parry"; break;
|
|
case SKILL_PERFORM:
|
|
sSkill = "Perform"; break;
|
|
case SKILL_PERSUADE:
|
|
sSkill = "Persuade"; break;
|
|
case SKILL_PICK_POCKET:
|
|
sSkill = "Pick Pocket"; break;
|
|
case SKILL_SEARCH:
|
|
sSkill = "Search"; break;
|
|
case SKILL_SET_TRAP:
|
|
sSkill = "Set Trap"; break;
|
|
case SKILL_SPELLCRAFT:
|
|
sSkill = "Spellcraft"; break;
|
|
case SKILL_SPOT:
|
|
sSkill = "Spot"; break;
|
|
case SKILL_TAUNT:
|
|
sSkill = "Taunt"; break;
|
|
case SKILL_USE_MAGIC_DEVICE:
|
|
sSkill = "Use Magic Device"; break;
|
|
}
|
|
SendMessageToPC(oMySpeaker, GetName(oMyTarget)+"'s "+sSkill+" Check, Roll: "+sRoll+" Modifier: "+sRank+" = "+sResult);
|
|
|
|
if (!nSecret)
|
|
{
|
|
AssignCommand( oMyTarget, SpeakString(sSkill+" Check, Roll: "+sRoll+" Modifier: "+sRank+" = "+sResult));
|
|
}
|
|
}
|
|
|
|
void dmwand_SwapDayNight(int nDay)
|
|
{
|
|
int nCurrentHour;
|
|
int nCurrentMinute = GetTimeMinute();
|
|
int nCurrentSecond = GetTimeSecond();
|
|
int nCurrentMilli = GetTimeMillisecond();
|
|
|
|
nCurrentHour = ((nDay == 1)?7:19);
|
|
|
|
SetTime(nCurrentHour, nCurrentMinute, nCurrentSecond, nCurrentMilli);
|
|
dmwand_BuildConversation("TimeOfDay", "");
|
|
}
|
|
|
|
void dmwand_TakeAll()
|
|
{
|
|
dmwand_TakeAllEquipped();
|
|
dmwand_TakeAllUnequipped();
|
|
}
|
|
|
|
void dmwand_TakeAllEquipped()
|
|
{
|
|
dmwand_takeoneitem(GetItemInSlot(INVENTORY_SLOT_ARMS, oMyTarget));
|
|
dmwand_takeoneitem(GetItemInSlot(INVENTORY_SLOT_ARROWS, oMyTarget));
|
|
dmwand_takeoneitem(GetItemInSlot(INVENTORY_SLOT_BELT, oMyTarget));
|
|
dmwand_takeoneitem(GetItemInSlot(INVENTORY_SLOT_BOLTS, oMyTarget));
|
|
dmwand_takeoneitem(GetItemInSlot(INVENTORY_SLOT_BOOTS, oMyTarget));
|
|
dmwand_takeoneitem(GetItemInSlot(INVENTORY_SLOT_BULLETS, oMyTarget));
|
|
dmwand_takeoneitem(GetItemInSlot(INVENTORY_SLOT_CHEST, oMyTarget));
|
|
dmwand_takeoneitem(GetItemInSlot(INVENTORY_SLOT_CLOAK, oMyTarget));
|
|
dmwand_takeoneitem(GetItemInSlot(INVENTORY_SLOT_HEAD, oMyTarget));
|
|
dmwand_takeoneitem(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oMyTarget));
|
|
dmwand_takeoneitem(GetItemInSlot(INVENTORY_SLOT_LEFTRING, oMyTarget));
|
|
dmwand_takeoneitem(GetItemInSlot(INVENTORY_SLOT_NECK, oMyTarget));
|
|
dmwand_takeoneitem(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oMyTarget));
|
|
dmwand_takeoneitem(GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oMyTarget));
|
|
}
|
|
|
|
void dmwand_TakeAllUnequipped()
|
|
{
|
|
object oEquip = GetFirstItemInInventory(oMyTarget);
|
|
while(GetIsObjectValid(oEquip))
|
|
{
|
|
dmwand_takeoneitem(oEquip);
|
|
oEquip = GetNextItemInInventory(oMyTarget);
|
|
}
|
|
}
|
|
|
|
void dmwand_TakeItem()
|
|
{
|
|
object oItem = GetLocalObject(oMySpeaker, "dmw_item");
|
|
|
|
dmwand_takeoneitem(oItem);
|
|
dmwand_BuildConversation("ListInventory", "");
|
|
}
|
|
|
|
void dmwand_takeoneitem(object oEquip)
|
|
{
|
|
if (GetIsObjectValid(oEquip) != 0)
|
|
{
|
|
AssignCommand(oMySpeaker, ActionTakeItem(oEquip, oMyTarget));
|
|
}
|
|
}
|
|
|
|
void dmwand_Toad()
|
|
{
|
|
effect ePenguin = EffectPolymorph(POLYMORPH_TYPE_PENGUIN);
|
|
effect eParalyze = EffectParalyze();
|
|
SendMessageToPC(oMySpeaker, "Penguin? Don't you mean toad?");
|
|
|
|
AssignCommand(oMyTarget, ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePenguin, oMyTarget));
|
|
AssignCommand(oMyTarget, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eParalyze, oMyTarget));
|
|
SetLocalInt(oMyTarget, "toaded", 1);
|
|
}
|
|
|
|
void dmwand_TurnNearOff()
|
|
{
|
|
object oMyTest = GetFirstObjectInShape(SHAPE_CUBE, 0.6, lMyLoc, FALSE, OBJECT_TYPE_ALL);
|
|
while(GetIsObjectValid(oMyTest) && GetIsPC(oMyTest))
|
|
{
|
|
object oMyTest = GetNextObjectInShape(SHAPE_CUBE, 0.6, lMyLoc, FALSE, OBJECT_TYPE_ALL);
|
|
}
|
|
|
|
if(GetIsObjectValid(oMyTest) && (! GetIsPC(oMyTest)))
|
|
{
|
|
dmwand_TurnOff(oMyTest);
|
|
}
|
|
}
|
|
|
|
void dmwand_TurnNearOn()
|
|
{
|
|
object oMyTest = GetFirstObjectInShape(SHAPE_CUBE, 0.6, lMyLoc, FALSE, OBJECT_TYPE_ALL);
|
|
while(GetIsObjectValid(oMyTest) && GetIsPC(oMyTest))
|
|
{
|
|
object oMyTest = GetNextObjectInShape(SHAPE_CUBE, 0.6, lMyLoc, FALSE, OBJECT_TYPE_ALL);
|
|
}
|
|
|
|
if(GetIsObjectValid(oMyTest) && (! GetIsPC(oMyTest)))
|
|
{
|
|
dmwand_TurnOn(oMyTest);
|
|
}
|
|
}
|
|
|
|
void dmwand_TurnOff(object oMyPlaceable)
|
|
{
|
|
AssignCommand(oMyPlaceable, PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
|
|
DelayCommand(0.4,SetPlaceableIllumination(oMyPlaceable, FALSE));
|
|
DelayCommand(0.5,RecomputeStaticLighting(GetArea(oMyPlaceable)));
|
|
}
|
|
|
|
void dmwand_TurnOn(object oMyPlaceable)
|
|
{
|
|
AssignCommand(oMyPlaceable, PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE));
|
|
DelayCommand(0.4,SetPlaceableIllumination(oMyPlaceable, TRUE));
|
|
DelayCommand(0.5,RecomputeStaticLighting(GetArea(oMyPlaceable)));
|
|
}
|
|
|
|
void dmwand_TurnTargetOff()
|
|
{
|
|
dmwand_TurnOff(oMyTarget);
|
|
}
|
|
|
|
void dmwand_TurnTargetOn()
|
|
{
|
|
dmwand_TurnOn(oMyTarget);
|
|
}
|
|
|
|
void dmwand_Untoad()
|
|
{
|
|
effect eMyEffect = GetFirstEffect(oMyTarget);
|
|
while(GetIsEffectValid(eMyEffect))
|
|
{
|
|
if(GetEffectType(eMyEffect) == EFFECT_TYPE_POLYMORPH ||
|
|
GetEffectType(eMyEffect) == EFFECT_TYPE_PARALYZE)
|
|
{
|
|
RemoveEffect(oMyTarget, eMyEffect);
|
|
}
|
|
eMyEffect = GetNextEffect(oMyTarget);
|
|
}
|
|
}
|
|
|
|
//::///////////////////////////////////////////////
|
|
//:: File: dmw_conv_inc
|
|
//::
|
|
//:: Conversation functions for the DM's Helper
|
|
//:://////////////////////////////////////////////
|
|
|
|
int dmwand_BuildConversationDialog(int nCurrent, int nChoice, string sConversation, string sParams)
|
|
{
|
|
if(TestStringAgainstPattern(sConversation, "ChangeAlign"))
|
|
{
|
|
return dmw_conv_ChangeAlign(nCurrent, nChoice, sParams);
|
|
}
|
|
if(TestStringAgainstPattern(sConversation, "DispAttribs"))
|
|
{
|
|
return dmw_conv_DispAttribs(nCurrent, nChoice, sParams);
|
|
}
|
|
if(TestStringAgainstPattern(sConversation, "DoRoll"))
|
|
{
|
|
return dmw_conv_DoRoll(nCurrent, nChoice, sParams);
|
|
}
|
|
if(TestStringAgainstPattern(sConversation, "Inventory"))
|
|
{
|
|
return dmw_conv_Inventory(nCurrent, nChoice, sParams);
|
|
}
|
|
if(TestStringAgainstPattern(sConversation, "ItemListConv"))
|
|
{
|
|
return dmw_conv_ItemListConv(nCurrent, nChoice, sParams);
|
|
}
|
|
if(TestStringAgainstPattern(sConversation, "ListInventory"))
|
|
{
|
|
return dmw_conv_ListInventory(nCurrent, nChoice, sParams);
|
|
}
|
|
if(TestStringAgainstPattern(sConversation, "ListPlayers"))
|
|
{
|
|
return dmw_conv_ListPlayers(nCurrent, nChoice, sParams);
|
|
}
|
|
if(TestStringAgainstPattern(sConversation, "ModAlign"))
|
|
{
|
|
return dmw_conv_ModAlign(nCurrent, nChoice, sParams);
|
|
}
|
|
if(TestStringAgainstPattern(sConversation, "ModRep"))
|
|
{
|
|
return dmw_conv_ModRep(nCurrent, nChoice, sParams);
|
|
}
|
|
if(TestStringAgainstPattern(sConversation, "Roll"))
|
|
{
|
|
return dmw_conv_Roll(nCurrent, nChoice, sParams);
|
|
}
|
|
if(TestStringAgainstPattern(sConversation, "Start"))
|
|
{
|
|
return dmw_conv_Start(nCurrent, nChoice, sParams);
|
|
}
|
|
if(TestStringAgainstPattern(sConversation, "TimeOfDay"))
|
|
{
|
|
return dmw_conv_TimeOfDay(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);
|
|
}
|
|
}
|
|
}
|
|
|
|
//:://////////////////////////////////////////////
|
|
//:: Dialog functions, in alpha order
|
|
//:://////////////////////////////////////////////
|
|
//Dialog functions (in general) use the following structure:
|
|
/*
|
|
int dmw_conv_FunctName(int nCurrent, int nChoice, string sParams = "")
|
|
{
|
|
string sText = "";
|
|
string sCall = "";
|
|
string sCallParams = "";
|
|
|
|
//Build the current dialog entry
|
|
switch(nCurrent)
|
|
{
|
|
case 0:
|
|
nCurrent = 0;
|
|
sText = "Text to display in the top section.";
|
|
sCall = "";
|
|
sCallParams = "";
|
|
break;
|
|
case 1:
|
|
if(TestToDisplayOption())
|
|
{
|
|
nCurrent = 1;
|
|
sText = "Option text.";
|
|
sCall = "callthis";
|
|
sCallParams = "passthis";
|
|
break;
|
|
}
|
|
default:
|
|
nCurrent = 0;
|
|
sText = "";
|
|
sCall = "";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
|
|
//Set the local variables for this dialog entry
|
|
SetLocalString(oMySpeaker, "dmw_dialog" + IntToString(nChoice), sText);
|
|
SetLocalString(oMySpeaker, "dmw_function" + IntToString(nChoice), sCall);
|
|
SetLocalString(oMySpeaker, "dmw_params" + IntToString(nChoice), sCallParams);
|
|
|
|
//Let the caller know which choice matched
|
|
return nCurrent;
|
|
}
|
|
*/
|
|
int dmw_conv_ChangeAlign(int nCurrent, int nChoice, string sParams = "")
|
|
{
|
|
string sText = "";
|
|
string sCall = "";
|
|
string sCallParams = "";
|
|
|
|
switch(nCurrent)
|
|
{
|
|
case 0:
|
|
nCurrent = 0;
|
|
sText = "Which direction would you like to change?";
|
|
sCall = "";
|
|
sCallParams = "";
|
|
break;
|
|
case 1:
|
|
nCurrent = 1;
|
|
sText = "Law.";
|
|
sCall = "conv_ModAlign";
|
|
sCallParams = "law__";
|
|
break;
|
|
case 2:
|
|
nCurrent = 2;
|
|
sText = "Chaos.";
|
|
sCall = "conv_ModAlign";
|
|
sCallParams = "chaos";
|
|
break;
|
|
case 3:
|
|
nCurrent = 3;
|
|
sText = "Good.";
|
|
sCall = "conv_ModAlign";
|
|
sCallParams = "good_";
|
|
break;
|
|
case 4:
|
|
nCurrent = 4;
|
|
sText = "Evil.";
|
|
sCall = "conv_ModAlign";
|
|
sCallParams = "evil_";
|
|
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 dmw_conv_DispAttribs(int nCurrent, int nChoice, string sParams = "")
|
|
{
|
|
string sText = "";
|
|
string sCall = "";
|
|
string sCallParams = "";
|
|
|
|
switch(nCurrent)
|
|
{
|
|
case 0:
|
|
nCurrent = 0;
|
|
sText = "What attributes would you like to see?";
|
|
sCall = "";
|
|
sCallParams = "";
|
|
break;
|
|
case 1:
|
|
nCurrent = 1;
|
|
sText = "Everything.";
|
|
sCall = "func_ShowAllAttribs";
|
|
sCallParams = "";
|
|
break;
|
|
case 2:
|
|
nCurrent = 2;
|
|
sText = "Basic Character.";
|
|
sCall = "func_ShowBasicAttribs";
|
|
sCallParams = "";
|
|
break;
|
|
case 3:
|
|
nCurrent = 3;
|
|
sText = "Display inventory.";
|
|
sCall = "func_ShowInventory";
|
|
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 dmw_conv_DoRoll(int nCurrent, int nChoice, string sParams = "")
|
|
{
|
|
string sText = "";
|
|
string sCall = "";
|
|
string sCallParams = "";
|
|
|
|
if((! TestStringAgainstPattern(sParams, "next")) && (! TestStringAgainstPattern(sParams, "prev")))
|
|
{
|
|
SetLocalString(oMySpeaker, "dmw_rollargs", sParams);
|
|
}
|
|
|
|
string sArgs = GetLocalString(oMySpeaker, "dmw_rollargs");
|
|
string sStatOrSkill = GetStringLeft(sArgs, 7);
|
|
string sPrivate = GetStringRight(sArgs, 1);
|
|
|
|
switch(nCurrent)
|
|
{
|
|
case 0:
|
|
nCurrent = 0;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "ability"))
|
|
{
|
|
sText = "Which ability?";
|
|
}
|
|
else
|
|
{
|
|
sText = "Which skill?";
|
|
}
|
|
sCall = "";
|
|
sCallParams = "";
|
|
break;
|
|
case 1:
|
|
nCurrent = 1;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "ability"))
|
|
{
|
|
sText = "Strength.";
|
|
sCall = "func_AbilityCheck";
|
|
sCallParams = sPrivate + IntToString(ABILITY_STRENGTH);
|
|
break;
|
|
}
|
|
case 2:
|
|
nCurrent = 2;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "ability"))
|
|
{
|
|
sText = "Constitution.";
|
|
sCall = "func_AbilityCheck";
|
|
sCallParams = sPrivate + IntToString(ABILITY_CONSTITUTION);
|
|
break;
|
|
}
|
|
case 3:
|
|
nCurrent = 3;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "ability"))
|
|
{
|
|
sText = "Dexterity.";
|
|
sCall = "func_AbilityCheck";
|
|
sCallParams = sPrivate + IntToString(ABILITY_DEXTERITY);
|
|
break;
|
|
}
|
|
case 4:
|
|
nCurrent = 4;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "ability"))
|
|
{
|
|
sText = "Intelligence.";
|
|
sCall = "func_AbilityCheck";
|
|
sCallParams = sPrivate + IntToString(ABILITY_INTELLIGENCE);
|
|
break;
|
|
}
|
|
case 5:
|
|
nCurrent = 5;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "ability"))
|
|
{
|
|
sText = "Wisdom.";
|
|
sCall = "func_AbilityCheck";
|
|
sCallParams = sPrivate + IntToString(ABILITY_WISDOM);
|
|
break;
|
|
}
|
|
case 6:
|
|
nCurrent = 6;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "ability"))
|
|
{
|
|
sText = "Charisma.";
|
|
sCall = "func_AbilityCheck";
|
|
sCallParams = sPrivate + IntToString(ABILITY_CHARISMA);
|
|
break;
|
|
}
|
|
case 7:
|
|
nCurrent = 7;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Animal Empathy.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_ANIMAL_EMPATHY);
|
|
break;
|
|
}
|
|
case 8:
|
|
nCurrent = 8;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Concentration.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_CONCENTRATION);
|
|
break;
|
|
}
|
|
case 9:
|
|
nCurrent = 9;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Disable Trap.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_DISABLE_TRAP);
|
|
break;
|
|
}
|
|
case 10:
|
|
nCurrent = 10;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Discipline.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_DISCIPLINE);
|
|
break;
|
|
}
|
|
case 11:
|
|
nCurrent = 11;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Heal.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_HEAL);
|
|
break;
|
|
}
|
|
case 12:
|
|
nCurrent = 12;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Hide.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_HIDE);
|
|
break;
|
|
}
|
|
case 13:
|
|
nCurrent = 13;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Listen.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_LISTEN);
|
|
break;
|
|
}
|
|
case 14:
|
|
nCurrent = 14;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Lore.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_LORE);
|
|
break;
|
|
}
|
|
case 15:
|
|
nCurrent = 15;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Move Silently.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_MOVE_SILENTLY);
|
|
break;
|
|
}
|
|
case 16:
|
|
nCurrent = 16;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Open Lock.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_OPEN_LOCK);
|
|
break;
|
|
}
|
|
case 17:
|
|
nCurrent = 17;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Parry.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_PARRY);
|
|
break;
|
|
}
|
|
case 18:
|
|
nCurrent = 18;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Perform.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_PERFORM);
|
|
break;
|
|
}
|
|
case 19:
|
|
nCurrent = 19;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Persuade.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_PERSUADE);
|
|
break;
|
|
}
|
|
case 20:
|
|
nCurrent = 20;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Pick Pocket.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_PICK_POCKET);
|
|
break;
|
|
}
|
|
case 21:
|
|
nCurrent = 21;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Search.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_SEARCH);
|
|
break;
|
|
}
|
|
case 22:
|
|
nCurrent = 22;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Set Trap.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_SET_TRAP);
|
|
break;
|
|
}
|
|
case 23:
|
|
nCurrent = 23;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Spellcraft.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_SPELLCRAFT);
|
|
break;
|
|
}
|
|
case 24:
|
|
nCurrent = 24;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Spot.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_SPOT);
|
|
break;
|
|
}
|
|
case 25:
|
|
nCurrent = 25;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Taunt.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_TAUNT);
|
|
break;
|
|
}
|
|
case 26:
|
|
nCurrent = 26;
|
|
if(TestStringAgainstPattern(sStatOrSkill, "skill__"))
|
|
{
|
|
sText = "Use Magic Device.";
|
|
sCall = "func_SkillCheck";
|
|
sCallParams = sPrivate + IntToString(SKILL_USE_MAGIC_DEVICE);
|
|
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 dmw_conv_Inventory(int nCurrent, int nChoice, string sParams = "")
|
|
{
|
|
string sText = "";
|
|
string sCall = "";
|
|
string sCallParams = "";
|
|
|
|
switch(nCurrent)
|
|
{
|
|
case 0:
|
|
nCurrent = 0;
|
|
sText = "What would you like to do with this object's inventory?";
|
|
sCall = "";
|
|
sCallParams = "";
|
|
break;
|
|
case 1:
|
|
nCurrent = 1;
|
|
sText = "Work with individual items.";
|
|
sCall = "conv_ListInventory";
|
|
sCallParams = "";
|
|
break;
|
|
case 2:
|
|
nCurrent = 2;
|
|
sText = "Take all items.";
|
|
sCall = "func_TakeAll";
|
|
sCallParams = "";
|
|
break;
|
|
case 3:
|
|
nCurrent = 3;
|
|
sText = "Take all equipped items.";
|
|
sCall = "func_TakeAllEquipped";
|
|
sCallParams = "";
|
|
break;
|
|
case 4:
|
|
nCurrent = 4;
|
|
sText = "Take all unequipped items.";
|
|
sCall = "func_TakeAllUnequipped";
|
|
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 dmw_conv_ItemListConv(int nCurrent, int nChoice, string sParams = "")
|
|
{
|
|
string sText = "";
|
|
string sCall = "";
|
|
string sCallParams = "";
|
|
int nCache;
|
|
int nCount;
|
|
object oItem;
|
|
|
|
if((sParams != "") && (! TestStringAgainstPattern(sParams, "next")) && (! TestStringAgainstPattern(sParams, "prev")))
|
|
{
|
|
//We've been given an item to work with, save that item!
|
|
oItem = GetLocalObject(oMySpeaker, "dmw_itemcache" + sParams);
|
|
SetLocalObject(oMySpeaker, "dmw_item", oItem);
|
|
}
|
|
else
|
|
{
|
|
oItem = GetLocalObject(oMySpeaker, "dmw_item");
|
|
}
|
|
|
|
switch(nCurrent)
|
|
{
|
|
case 0:
|
|
nCurrent = 0;
|
|
sText = dmwand_ItemInfo(oItem, 1);
|
|
sCall = "";
|
|
sCallParams = "";
|
|
break;
|
|
case 1:
|
|
nCurrent = 1;
|
|
sText = "Take this item.";
|
|
sCall = "func_TakeItem";
|
|
sCallParams = "";
|
|
break;
|
|
case 2:
|
|
nCurrent = 2;
|
|
sText = "Destroy this item.";
|
|
sCall = "func_DestroyItem";
|
|
sCallParams = "";
|
|
break;
|
|
case 3:
|
|
nCurrent = 3;
|
|
if(! GetIdentified(oItem))
|
|
{
|
|
sText = "Set this item as identified.";
|
|
sCall = "func_IdentifyItem";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 4:
|
|
nCurrent = 4;
|
|
if(GetIdentified(oItem))
|
|
{
|
|
sText = "Set this item as unidentified.";
|
|
sCall = "func_IdentifyItem";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 5:
|
|
nCurrent = 5;
|
|
sText = "Go back to the inventory list.";
|
|
sCall = "conv_ListInventory";
|
|
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 dmw_conv_ListInventory(int nCurrent, int nChoice, string sParams = "")
|
|
{
|
|
string sText = "";
|
|
string sCall = "";
|
|
string sCallParams = "";
|
|
object oItem;
|
|
int nCache;
|
|
|
|
if(sParams == "")
|
|
{
|
|
//This is the first time running this function, so cache the objects
|
|
// of all items... we don't want our list swapping itself around every
|
|
// time you change a page
|
|
int nCount = 1;
|
|
oItem = GetFirstItemInInventory(oMyTarget);
|
|
while(GetIsObjectValid(oItem))
|
|
{
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount), oItem);
|
|
oItem = GetNextItemInInventory(oMyTarget);
|
|
nCount++;
|
|
}
|
|
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_ARMS, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_ARROWS, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_BELT, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_BOLTS, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_BOOTS, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_BULLETS, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_CHEST, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_CLOAK, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_HEAD, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_LEFTRING, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_NECK, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_CARMOUR, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oMyTarget));
|
|
SetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount++), GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oMyTarget));
|
|
|
|
nCount--;
|
|
SetLocalInt(oMySpeaker, "dmw_itemcache", nCount);
|
|
}
|
|
|
|
nCache = GetLocalInt(oMySpeaker, "dmw_itemcache");
|
|
|
|
switch(nCurrent)
|
|
{
|
|
case 0:
|
|
nCurrent = 0;
|
|
sText = "What item would you like to see?";
|
|
sCall = "";
|
|
sCallParams = "";
|
|
break;
|
|
default:
|
|
//Find the next item in the cache that is valid
|
|
oItem = GetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCurrent));
|
|
while((! GetIsObjectValid(oItem)) && (nCurrent <= nCache))
|
|
{
|
|
nCurrent++;
|
|
oItem = GetLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCurrent));
|
|
}
|
|
|
|
if(nCurrent > nCache)
|
|
{
|
|
//We've run out of cache, any other spots in this list should be
|
|
//skipped
|
|
nCurrent = 0;
|
|
sText = "";
|
|
sCall = "";
|
|
sCallParams = "";
|
|
}
|
|
else
|
|
{
|
|
//We found an item, set up the list entry
|
|
sText = dmwand_ItemInfo(oItem, 0);
|
|
sCall = "conv_ItemListConv";
|
|
sCallParams = IntToString(nCurrent);
|
|
}
|
|
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 dmw_conv_ListPlayers(int nCurrent, int nChoice, string sParams = "")
|
|
{
|
|
string sText = "";
|
|
string sCall = "";
|
|
string sCallParams = "";
|
|
object oPlayer;
|
|
int nCache;
|
|
|
|
if((! TestStringAgainstPattern(sParams, "next")) && (! TestStringAgainstPattern(sParams, "prev")))
|
|
{
|
|
//This is the first time running this function, so cache the objects
|
|
// of all players... we don't want our list swapping itself around every
|
|
// time you change a page
|
|
SetLocalString(oMySpeaker, "dmw_playerfunc", sParams);
|
|
int nCount = 1;
|
|
oPlayer = GetFirstPC();
|
|
while(GetIsObjectValid(oPlayer))
|
|
{
|
|
SetLocalObject(oMySpeaker, "dmw_playercache" + IntToString(nCount), oPlayer);
|
|
oPlayer = GetNextPC();
|
|
nCount++;
|
|
}
|
|
nCount--;
|
|
SetLocalInt(oMySpeaker, "dmw_playercache", nCount);
|
|
}
|
|
|
|
string sFunc = GetLocalString(oMySpeaker, "dmw_playerfunc");
|
|
nCache = GetLocalInt(oMySpeaker, "dmw_playercache");
|
|
|
|
switch(nCurrent)
|
|
{
|
|
case 0:
|
|
nCurrent = 0;
|
|
sText = "Who would you like to work on?";
|
|
sCall = "";
|
|
sCallParams = "";
|
|
break;
|
|
default:
|
|
//Find the next player in the cache who is valid
|
|
oPlayer = GetLocalObject(oMySpeaker, "dmw_playercache" + IntToString(nCurrent));
|
|
while((! GetIsObjectValid(oPlayer)) && (nCurrent <= nCache))
|
|
{
|
|
nCurrent++;
|
|
oPlayer = GetLocalObject(oMySpeaker, "dmw_playercache" + IntToString(nCurrent));
|
|
}
|
|
|
|
if(nCurrent > nCache)
|
|
{
|
|
//We've run out of cache, any other spots in this list should be
|
|
//skipped
|
|
nCurrent = 0;
|
|
sText = "";
|
|
sCall = "";
|
|
sCallParams = "";
|
|
}
|
|
else
|
|
{
|
|
//We found a player, set up the list entry
|
|
sText = GetName(oPlayer) + " (" + GetPCPlayerName(oPlayer) + ")";
|
|
sCall = sFunc;
|
|
sCallParams = IntToString(nCurrent);
|
|
}
|
|
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 dmw_conv_ModAlign(int nCurrent, int nChoice, string sParams = "")
|
|
{
|
|
string sText = "";
|
|
string sCall = "";
|
|
string sCallParams = "";
|
|
|
|
switch(nCurrent)
|
|
{
|
|
case 0:
|
|
nCurrent = 0;
|
|
sText = "Change by how much?";
|
|
sCall = "";
|
|
sCallParams = "";
|
|
break;
|
|
case 1:
|
|
nCurrent = 1;
|
|
sText = "1 point.";
|
|
sCall = "func_ShiftAlignment";
|
|
sCallParams = sParams + "1";
|
|
break;
|
|
case 2:
|
|
nCurrent = 2;
|
|
sText = "5 points.";
|
|
sCall = "func_ShiftAlignment";
|
|
sCallParams = sParams + "5";
|
|
break;
|
|
case 3:
|
|
nCurrent = 3;
|
|
sText = "10 points.";
|
|
sCall = "func_ShiftAlignment";
|
|
sCallParams = sParams + "10";
|
|
break;
|
|
case 4:
|
|
nCurrent = 4;
|
|
sText = "20 points.";
|
|
sCall = "func_ShiftAlignment";
|
|
sCallParams = sParams + "20";
|
|
break;
|
|
case 5:
|
|
nCurrent = 5;
|
|
sText = "50 points.";
|
|
sCall = "func_ShiftAlignment";
|
|
sCallParams = sParams + "50";
|
|
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 dmw_conv_ModRep(int nCurrent, int nChoice, string sParams = "")
|
|
{
|
|
string sText = "";
|
|
string sCall = "";
|
|
string sCallParams = "";
|
|
string sOneOrAll;
|
|
|
|
if((! TestStringAgainstPattern(sParams, "next")) && (! TestStringAgainstPattern(sParams, "prev")))
|
|
{
|
|
SetLocalString(oMySpeaker, "dmw_repargs", sParams);
|
|
}
|
|
sOneOrAll = GetLocalString(oMySpeaker, "dmw_repargs");
|
|
|
|
switch(nCurrent)
|
|
{
|
|
case 0:
|
|
nCurrent = 0;
|
|
sText = "Change reputation by how much?";
|
|
sCall = "";
|
|
sCallParams = "";
|
|
break;
|
|
case 1:
|
|
nCurrent = 1;
|
|
sText = "Plus 70";
|
|
sCall = "func_ModRep";
|
|
sCallParams = "+70";
|
|
break;
|
|
case 2:
|
|
nCurrent = 2;
|
|
sText = "Plus 30";
|
|
sCall = "func_ModRep";
|
|
sCallParams = "+30";
|
|
break;
|
|
case 3:
|
|
nCurrent = 3;
|
|
sText = "Plus 10";
|
|
sCall = "func_ModRep";
|
|
sCallParams = "+10";
|
|
break;
|
|
case 4:
|
|
nCurrent = 4;
|
|
sText = "Plus 5";
|
|
sCall = "func_ModRep";
|
|
sCallParams = "+05";
|
|
break;
|
|
case 5:
|
|
nCurrent = 5;
|
|
sText = "Minus 5";
|
|
sCall = "func_ModRep";
|
|
sCallParams = "-05";
|
|
break;
|
|
case 6:
|
|
nCurrent = 6;
|
|
sText = "Minus 10";
|
|
sCall = "func_ModRep";
|
|
sCallParams = "-10";
|
|
break;
|
|
case 7:
|
|
nCurrent = 7;
|
|
sText = "Minus 30";
|
|
sCall = "func_ModRep";
|
|
sCallParams = "-30";
|
|
break;
|
|
case 8:
|
|
nCurrent = 8;
|
|
sText = "Minus 70";
|
|
sCall = "func_ModRep";
|
|
sCallParams = "-70";
|
|
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 dmw_conv_Roll(int nCurrent, int nChoice, string sParams = "")
|
|
{
|
|
string sText = "";
|
|
string sCall = "";
|
|
string sCallParams = "";
|
|
|
|
switch(nCurrent)
|
|
{
|
|
case 0:
|
|
nCurrent = 0;
|
|
sText = "Should This Roll be Public or Private?";
|
|
sCall = "";
|
|
sCallParams = "";
|
|
break;
|
|
case 1:
|
|
nCurrent = 1;
|
|
sText = "Public";
|
|
sCall = "conv_DoRoll";
|
|
sCallParams = sParams + "0";
|
|
break;
|
|
case 2:
|
|
nCurrent = 2;
|
|
sText = "Private";
|
|
sCall = "conv_DoRoll";
|
|
sCallParams = sParams + "1";
|
|
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 dmw_conv_Start(int nCurrent, int nChoice, string sParams = "")
|
|
{
|
|
string sText = "";
|
|
string sCall = "";
|
|
string sCallParams = "";
|
|
|
|
switch(nCurrent)
|
|
{
|
|
case 0:
|
|
nCurrent = 0;
|
|
sText = "Hello there, DM. What can I do for you?";
|
|
sCall = "";
|
|
sCallParams = "";
|
|
break;
|
|
case 1:
|
|
nCurrent = 1;
|
|
if(dmwand_istargetpcornpc())
|
|
{
|
|
sText = "Display this creature's attributes.";
|
|
sCall = "conv_DispAttribs";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 2:
|
|
nCurrent = 2;
|
|
if(dmwand_istargetpcornpc())
|
|
{
|
|
sText = "Change this creature's alignment.";
|
|
sCall = "conv_ChangeAlign";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 3:
|
|
nCurrent = 3;
|
|
if(dmwand_istargetpcornpcnme())
|
|
{
|
|
sText = "Map area out for this player.";
|
|
sCall = "func_MapArea";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 4:
|
|
nCurrent = 4;
|
|
if(dmwand_istargetinventory())
|
|
{
|
|
sText = "Work with this object's inventory.";
|
|
sCall = "conv_Inventory";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 5:
|
|
nCurrent = 5;
|
|
if(dmwand_istargetpcornpcnme())
|
|
{
|
|
sText = "Follow this creature.";
|
|
sCall = "func_FollowTarget";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 6:
|
|
nCurrent = 6;
|
|
if(dmwand_istargetpcornpcnme())
|
|
{
|
|
sText = "Make this creature follow me.";
|
|
sCall = "func_FollowMe";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 7:
|
|
nCurrent = 7;
|
|
if(dmwand_istargetpcornpcnme())
|
|
{
|
|
sText = "Make this creature go about its business.";
|
|
sCall = "func_ResumeDefault";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 8:
|
|
nCurrent = 8;
|
|
if(dmwand_istargetpcnme())
|
|
{
|
|
sText = "Penguin this player.";
|
|
sCall = "func_Toad";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 9:
|
|
nCurrent = 9;
|
|
if(dmwand_istargetpcnme())
|
|
{
|
|
sText = "Unpenguin this player.";
|
|
sCall = "func_Untoad";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 10:
|
|
nCurrent = 10;
|
|
if(dmwand_istargetpcnme())
|
|
{
|
|
sText = "Boot this player.";
|
|
sCall = "func_KickPC";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 11:
|
|
nCurrent = 11;
|
|
if(dmwand_istargetnpc())
|
|
{
|
|
sText = "Kill this, leaving a corpse.";
|
|
sCall = "func_KillAndReplace";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 12:
|
|
nCurrent = 12;
|
|
if(dmwand_istargetinvalid())
|
|
{
|
|
sText = "List all players...";
|
|
sCall = "conv_ListPlayers";
|
|
sCallParams = "func_PlayerListConv";
|
|
break;
|
|
}
|
|
case 13:
|
|
nCurrent = 13;
|
|
if(dmwand_istargetinvalid())
|
|
{
|
|
sText = "Advance the current time of day.";
|
|
sCall = "conv_TimeOfDay";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 14:
|
|
nCurrent = 14;
|
|
if(dmwand_istargetinvalid())
|
|
{
|
|
sText = "Reload the current running module.";
|
|
sCall = "func_ReloadModule";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 15:
|
|
nCurrent = 15;
|
|
if(dmwand_istargetpcornpc())
|
|
{
|
|
sText = "Roll a skill check.";
|
|
sCall = "conv_Roll";
|
|
sCallParams = "skill__";
|
|
break;
|
|
}
|
|
case 16:
|
|
nCurrent = 16;
|
|
if(dmwand_istargetpcornpc())
|
|
{
|
|
sText = "Roll an ability check.";
|
|
sCall = "conv_Roll";
|
|
sCallParams = "ability";
|
|
break;
|
|
}
|
|
case 17:
|
|
nCurrent = 17;
|
|
if(dmwand_istargetdestroyable())
|
|
{
|
|
sText = "Destroy this object.";
|
|
sCall = "func_DestroyTarget";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 18:
|
|
nCurrent = 18;
|
|
if((!dmwand_istargetdestroyable()) && dmwand_isnearbydestroyable())
|
|
{
|
|
sText = "Destroy an object near this spot.";
|
|
sCall = "func_DestroyNearbyTarget";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 19:
|
|
nCurrent = 19;
|
|
if(dmwand_istargetdestroyable())
|
|
{
|
|
sText = "Turn this object on.";
|
|
sCall = "func_TurnTargetOn";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 20:
|
|
nCurrent = 20;
|
|
if(dmwand_istargetdestroyable())
|
|
{
|
|
sText = "Turn this object off.";
|
|
sCall = "func_TurnTargetOff";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 21:
|
|
nCurrent = 21;
|
|
if((!dmwand_istargetdestroyable()) && dmwand_isnearbydestroyable())
|
|
{
|
|
sText = "Turn on an object near this spot.";
|
|
sCall = "func_TurnNearOn";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 22:
|
|
nCurrent = 22;
|
|
if((!dmwand_istargetdestroyable()) && dmwand_isnearbydestroyable())
|
|
{
|
|
sText = "Turn off an object near this spot.";
|
|
sCall = "func_TurnNearOff";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 23:
|
|
nCurrent = 23;
|
|
if(dmwand_istargetnpc())
|
|
{
|
|
sText = "Change a player's reputation with this creature's faction.";
|
|
sCall = "conv_ModRep";
|
|
sCallParams = "one";
|
|
break;
|
|
}
|
|
case 24:
|
|
nCurrent = 24;
|
|
if(dmwand_istargetnpc())
|
|
{
|
|
sText = "Change all player reputations with this creature's faction.";
|
|
sCall = "conv_ModRep";
|
|
sCallParams = "all";
|
|
break;
|
|
}
|
|
case 25:
|
|
nCurrent = 25;
|
|
if(dmwand_istargetinvalid())
|
|
{
|
|
sText = "Export all characters.";
|
|
sCall = "func_ExportChars";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 26:
|
|
nCurrent = 26;
|
|
if(dmwand_istargetpcnme())
|
|
{
|
|
sText = "Join this player's party.";
|
|
sCall = "func_JoinParty";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 27:
|
|
nCurrent = 27;
|
|
if(dmwand_istargetinvalid())
|
|
{
|
|
sText = "Remove me from my current party.";
|
|
sCall = "func_LeaveParty";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 28:
|
|
nCurrent = 28;
|
|
if(dmwand_istargetpcnme())
|
|
{
|
|
sText = "Jump this player to my location.";
|
|
sCall = "func_JumpPlayerHere";
|
|
sCallParams = "";
|
|
break;
|
|
}
|
|
case 29:
|
|
nCurrent = 29;
|
|
if(dmwand_istargetpcnme())
|
|
{
|
|
sText = "Jump me to this player's location.";
|
|
sCall = "func_JumpToPlayer";
|
|
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 dmw_conv_TimeOfDay(int nCurrent, int nChoice, string sParams = "")
|
|
{
|
|
string sText = "";
|
|
string sCall = "";
|
|
string sCallParams = "";
|
|
|
|
switch(nCurrent)
|
|
{
|
|
case 0:
|
|
nCurrent = 0;
|
|
sText = "How far would you like to advance the time?";
|
|
sCall = "";
|
|
sCallParams = "";
|
|
break;
|
|
case 1:
|
|
nCurrent = 1;
|
|
sText = "1 hour.";
|
|
sCall = "func_AdvanceTime";
|
|
sCallParams = "1";
|
|
break;
|
|
case 2:
|
|
nCurrent = 2;
|
|
sText = "3 hours.";
|
|
sCall = "func_AdvanceTime";
|
|
sCallParams = "3";
|
|
break;
|
|
case 3:
|
|
nCurrent = 3;
|
|
sText = "7 hours.";
|
|
sCall = "func_AdvanceTime";
|
|
sCallParams = "7";
|
|
break;
|
|
case 4:
|
|
nCurrent = 4;
|
|
if((GetTimeHour() > 6) && (GetTimeHour() < 18))
|
|
{
|
|
sText = "Make it nighttime.";
|
|
sCall = "func_SwapDayNight";
|
|
sCallParams = "0";
|
|
break;
|
|
}
|
|
case 5:
|
|
nCurrent = 5;
|
|
if((GetTimeHour() < 6) || (GetTimeHour() > 18))
|
|
{
|
|
sText = "Make it daytime.";
|
|
sCall = "func_SwapDayNight";
|
|
sCallParams = "1";
|
|
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;
|
|
}
|
|
|
|
void dmwand_DoDialogChoice(int nChoice)
|
|
{
|
|
string sCallFunction = GetLocalString(oMySpeaker, "dmw_function" + IntToString(nChoice));
|
|
string sCallParams = GetLocalString(oMySpeaker, "dmw_params" + IntToString(nChoice));
|
|
string sNav = "";
|
|
|
|
string sStart = GetStringLeft(sCallFunction, 5);
|
|
int nLen = GetStringLength(sCallFunction) - 5;
|
|
string sCall = GetSubString(sCallFunction, 5, nLen);
|
|
|
|
if(TestStringAgainstPattern("conv_", sStart))
|
|
{
|
|
dmwand_BuildConversation(sCall, sCallParams);
|
|
}
|
|
else
|
|
{
|
|
if(TestStringAgainstPattern("ShowAllAttribs", sCall))
|
|
{
|
|
dmwand_ShowAllAttribs();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("ShowBasicAttribs", sCall))
|
|
{
|
|
dmwand_ShowBasicAttribs();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("ShowInventory", sCall))
|
|
{
|
|
dmwand_ShowInventory();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("PlayerListConv", sCall))
|
|
{
|
|
dmwand_PlayerListConv(sCallParams);
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("ShiftAlignment", sCall))
|
|
{
|
|
string sDir = GetStringLeft(sCallParams, 5);
|
|
int nLen = GetStringLength(sCallParams) - 5;
|
|
string sAmt = GetSubString(sCallParams, 5, nLen);
|
|
dmwand_ShiftAlignment(sDir, StringToInt(sAmt));
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("MapArea", sCall))
|
|
{
|
|
dmwand_MapArea();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("FollowTarget", sCall))
|
|
{
|
|
dmwand_FollowTarget();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("FollowMe", sCall))
|
|
{
|
|
dmwand_FollowMe();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("ResumeDefault", sCall))
|
|
{
|
|
dmwand_ResumeDefault();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("Toad", sCall))
|
|
{
|
|
dmwand_Toad();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("Untoad", sCall))
|
|
{
|
|
dmwand_Untoad();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("KickPC", sCall))
|
|
{
|
|
dmwand_KickPC();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("IdentifyItem", sCall))
|
|
{
|
|
dmwand_IdentifyItem();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("DestroyItem", sCall))
|
|
{
|
|
dmwand_DestroyItem();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("TakeItem", sCall))
|
|
{
|
|
dmwand_TakeItem();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("KillAndReplace", sCall))
|
|
{
|
|
dmwand_KillAndReplace();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("SwapDayNight", sCall))
|
|
{
|
|
dmwand_SwapDayNight(StringToInt(sCallParams));
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("AdvanceTime", sCall))
|
|
{
|
|
dmwand_AdvanceTime(StringToInt(sCallParams));
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("ReloadModule", sCall))
|
|
{
|
|
dmwand_ReloadModule();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("TakeAll", sCall))
|
|
{
|
|
dmwand_TakeAll();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("TakeAllEquipped", sCall))
|
|
{
|
|
dmwand_TakeAllEquipped();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("TakeAllUnequipped", sCall))
|
|
{
|
|
dmwand_TakeAllUnequipped();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("AbilityCheck", sCall))
|
|
{
|
|
int nPrivate = StringToInt(GetStringLeft(sCallParams, 1));
|
|
int nLen = GetStringLength(sCallParams) - 1;
|
|
int nAbility = StringToInt(GetSubString(sCallParams, 1, nLen));
|
|
dmwand_AbilityCheck(nAbility, nPrivate);
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("SkillCheck", sCall))
|
|
{
|
|
int nPrivate = StringToInt(GetStringLeft(sCallParams, 1));
|
|
int nLen = GetStringLength(sCallParams) - 1;
|
|
int nSkill = StringToInt(GetSubString(sCallParams, 1, nLen));
|
|
dmwand_SkillCheck(nSkill, nPrivate);
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("DestroyTarget", sCall))
|
|
{
|
|
dmwand_DestroyTarget();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("DestroyNearbyTarget", sCall))
|
|
{
|
|
dmwand_DestroyNearbyTarget();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("TurnTargetOn", sCall))
|
|
{
|
|
dmwand_TurnTargetOn();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("TurnTargetOff", sCall))
|
|
{
|
|
dmwand_TurnTargetOff();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("TurnNearOff", sCall))
|
|
{
|
|
dmwand_TurnNearOff();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("TurnNearOn", sCall))
|
|
{
|
|
dmwand_TurnNearOn();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("ModRep", sCall))
|
|
{
|
|
dmwand_ModRep(sCallParams);
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("ModOneRep", sCall))
|
|
{
|
|
dmwand_ModOneRep(sCallParams);
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("ExportChars", sCall))
|
|
{
|
|
dmwand_ExportChars();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("JoinParty", sCall))
|
|
{
|
|
dmwand_JoinParty();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("LeaveParty", sCall))
|
|
{
|
|
dmwand_LeaveParty();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("JumpPlayerHere", sCall))
|
|
{
|
|
dmwand_JumpPlayerHere();
|
|
return;
|
|
}
|
|
if(TestStringAgainstPattern("JumpToPlayer", sCall))
|
|
{
|
|
dmwand_JumpToPlayer();
|
|
return;
|
|
}
|
|
}
|
|
}
|