void dmw_CleanUp(object oMySpeaker) { int nCount; int nCache; DeleteLocalObject(oMySpeaker, "dmfi_univ_target"); DeleteLocalLocation(oMySpeaker, "dmfi_univ_location"); DeleteLocalObject(oMySpeaker, "dmw_item"); DeleteLocalString(oMySpeaker, "dmw_repamt"); DeleteLocalString(oMySpeaker, "dmw_repargs"); nCache = GetLocalInt(oMySpeaker, "dmw_playercache"); for(nCount = 1; nCount <= nCache; nCount++) { DeleteLocalObject(oMySpeaker, "dmw_playercache" + IntToString(nCount)); } DeleteLocalInt(oMySpeaker, "dmw_playercache"); nCache = GetLocalInt(oMySpeaker, "dmw_itemcache"); for(nCount = 1; nCount <= nCache; nCount++) { DeleteLocalObject(oMySpeaker, "dmw_itemcache" + IntToString(nCount)); } DeleteLocalInt(oMySpeaker, "dmw_itemcache"); for(nCount = 1; nCount <= 10; nCount++) { DeleteLocalString(oMySpeaker, "dmw_dialog" + IntToString(nCount)); DeleteLocalString(oMySpeaker, "dmw_function" + IntToString(nCount)); DeleteLocalString(oMySpeaker, "dmw_params" + IntToString(nCount)); } DeleteLocalString(oMySpeaker, "dmw_playerfunc"); DeleteLocalInt(oMySpeaker, "dmw_started"); } void main() { object oUser=OBJECT_SELF; if (!GetIsObjectValid(oUser)) oUser = GetItemActivator(); object oItem = GetLocalObject(oUser, "dmfi_item"); if (!GetIsObjectValid(oItem)) oItem=GetItemActivated(); object oOther = GetLocalObject(oUser, "dmfi_target"); if (!GetIsObjectValid(oOther)) oOther=GetItemActivatedTarget(); location lLocation=GetLocalLocation(oUser, "dmfi_location"); if (!GetIsObjectValid(GetAreaFromLocation(lLocation))) lLocation = GetItemActivatedTargetLocation(); string sItemTag=GetTag(oItem); //initialize the listening commands reminder if (GetLocalInt(GetModule(), "dmfi_voice_initial")!=1 && (GetLocalInt(oUser, "dmfi_reminded")!=1) &&(GetIsDM(oUser))) { SetLocalInt(oUser, "dmfi_reminded", 1); SendMessageToAllDMs("Target a creature with Voice Widget to initialize system."); FloatingTextStringOnCreature("Target a creature with Voice Widget to initialize system", oUser); } //*************************************INITIALIZATION CODE*************************************** //***************************************RUNS ONE TIME *************************************** //voice stuff is module wide if (GetLocalInt(GetModule(), "dmfi_initialized")!=1) { SetLocalInt(GetModule(), "dmfi_initialized", 1); int iLoop = 20610; string sText; while (iLoop<20680) { sText = GetCampaignString("dmfi", "hls" + IntToString(iLoop)); SetCustomToken(iLoop, sText); iLoop++; } SendMessageToAllDMs("Voice custom tokens initialized."); } //remainder of settings are user based if ((GetLocalInt(oUser, "dmfi_initialized")!=1) && GetIsDM(oUser)) { //if you have campaign variables set - use those settings if (GetCampaignInt("dmfi", "Settings", oUser)==1) { FloatingTextStringOnCreature("Settings Restored", oUser, FALSE); SetLocalInt(oUser, "dmfi_initialized", 1); int n = GetCampaignInt("dmfi", "dmfi_alignshift", oUser); SetCustomToken(20781, IntToString(n)); SetLocalInt(oUser, "dmfi_alignshift", n); SendMessageToPC(oUser, "Settings: Alignment shift: "+IntToString(n)); n = GetCampaignInt("dmfi", "dmfi_safe_factions", oUser); SetLocalInt(oUser, "dmfi_safe_factions", n); SendMessageToPC(oUser, "Settings: Factions (1 is DMFI Safe Faction): "+IntToString(n)); n = GetCampaignInt("dmfi", "dmfi_damagemodifier", oUser); SetLocalInt(oUser, "dmfi_damagemodifier",n); SendMessageToPC(oUser, "Settings: Damage Modifier: "+IntToString(n)); n = GetCampaignInt("dmfi","dmfi_buff_party",oUser); SetLocalInt(oUser, "dmfi_buff_party", n); if (n==1) SetCustomToken(20783, "Party"); else SetCustomToken(20783, "Single Target"); SendMessageToPC(oUser, "Settings: Buff Party (1 is Party): "+IntToString(n)); string sLevel = GetCampaignString("dmfi", "dmfi_buff_level", oUser); SetCustomToken(20782, sLevel); SetLocalString(oUser, "dmfi_buff_level", sLevel); SendMessageToPC(oUser, "Settings: Buff Level: "+ sLevel); n = GetCampaignInt("dmfi", "dmfi_dicebag", oUser); SetLocalInt(oUser, "dmfi_dicebag", n); string sText; if (n==0) {SetCustomToken(20681, "Private"); sText = "Private"; } else if (n==1) {SetCustomToken(20681, "Global"); sText = "Global"; } else if (n==2) {SetCustomToken(20681, "Local"); sText = "Local"; } else if (n==3) {SetCustomToken(20681, "DM Only"); sText = "DM Only"; } SendMessageToPC(oUser, "Settings: Dicebag Reporting: "+sText); n = GetCampaignInt("dmfi", "dmfi_dice_no_animate", oUser); SetLocalInt(oUser, "dmfi_dice_no_animate", n); SendMessageToPC(oUser, "Settings: Roll Animations (1 is OFF): "+IntToString(n)); float f = GetCampaignFloat("dmfi", "dmfi_reputaion", oUser); SetLocalFloat(oUser, "dmfi_reputation", f); SendMessageToPC(oUser, "Settings: Reputation Adjustment: "+FloatToString(f)); f = GetCampaignFloat("dmfi", "dmfi_effectduration", oUser); SetLocalFloat(oUser, "dmfi_effectduration", f); SendMessageToPC(oUser, "Settings: Effect Duration: "+FloatToString(f)); f = GetCampaignFloat("dmfi", "dmfi_sound_delay", oUser); SetLocalFloat(oUser, "dmfi_sound_delay", f); SendMessageToPC(oUser, "Settings: Sound Delay: "+FloatToString(f)); f = GetCampaignFloat("dmfi", "dmfi_beamduration", oUser); SetLocalFloat(oUser, "dmfi_beamduration", f); SendMessageToPC(oUser, "Settings: Beam Duration: "+FloatToString(f)); f = GetCampaignFloat("dmfi", "dmfi_stunduration", oUser); SetLocalFloat(oUser, "dmfi_stunduration", f); SendMessageToPC(oUser, "Settings: Stun Duration: "+FloatToString(f)); f = GetCampaignFloat("dmfi", "dmfi_saveamount", oUser); SetLocalFloat(oUser, "dmfi_saveamount", f); SendMessageToPC(oUser, "Settings: Save Adjustment: "+FloatToString(f)); f = GetCampaignFloat("dmfi", "dmfi_effectdelay", oUser); SetLocalFloat(oUser, "dmfi_effectdelay", f); SendMessageToPC(oUser, "Settings: Effect Delay: "+FloatToString(f)); } else { FloatingTextStringOnCreature("Default Settings Initialized", oUser, FALSE); //Setting FOUR campaign variables so 1st use will be slow. //Recommend initializing your preferences with no players or //while there is NO fighting. SetLocalInt(oUser, "dmfi_initialized", 1); SetCampaignInt("dmfi", "Settings", 1, oUser); SetCustomToken(20781, "5"); SetLocalInt(oUser, "dmfi_alignshift", 5); SetCampaignInt("dmfi", "dmfi_alignshift", 5, oUser); SendMessageToPC(oUser, "Settings: Alignment shift: 5"); SetCustomToken(20783, "Single Target"); SetLocalInt(oUser, "dmfi_buff_party", 0); SetCampaignInt("dmfi", "dmfi_buff_party", 0, oUser); SendMessageToPC(oUser, "Settings: Buff set to Single Target: "); SetCustomToken(20782, "Low"); SetLocalString(oUser, "dmfi_buff_level", "LOW"); SetCampaignString("dmfi", "dmfi_buff_level", "LOW", oUser); SendMessageToPC(oUser, "Settings: Buff Level set to LOW: "); SetLocalInt(oUser, "dmfi_dicebag", 0); SetCustomToken(20681, "Private"); SetCampaignInt("dmfi", "dmfi_dicebag", 0, oUser); SendMessageToPC(oUser, "Settings: Dicebag Rolls set to PRIVATE"); SetLocalInt(oUser, "", 0); SetCampaignInt("dmfi", "dmfi_safe_factions", 0, oUser); SendMessageToPC(oUser, "Settings: Factions set to BW base behavior"); SetLocalFloat(oUser, "dmfi_reputation", 5.0); SetCustomToken(20784, "5"); SetCampaignFloat("dmfi", "dmfi_reputation", 5.0, oUser); SendMessageToPC(oUser, "Settings: Reputation adjustment: 5"); SetCampaignFloat("dmfi", "dmfi_effectduration", 60.0, oUser); SetLocalFloat(oUser, "dmfi_effectduration", 60.0); SetCampaignFloat("dmfi", "dmfi_sound_delay", 0.2, oUser); SetLocalFloat(oUser, "dmfi_sound_delay", 0.2); SetCampaignFloat("dmfi", "dmfi_beamduration", 5.0, oUser); SetLocalFloat(oUser, "dmfi_beamduration", 5.0); SetCampaignFloat("dmfi", "dmfi_stunduration", 1000.0, oUser); SetLocalFloat(oUser, "dmfi_stunduration", 1000.0); SetCampaignFloat("dmfi", "dmfi_saveamount", 5.0, oUser); SetLocalFloat(oUser, "dmfi_saveamount", 5.0); SetCampaignFloat("dmfi", "dmfi_effectdelay", 1.0, oUser); SetLocalFloat(oUser, "dmfi_effectdelay", 1.0); SendMessageToPC(oUser, "Settings: Effect Duration: 60.0"); SendMessageToPC(oUser, "Settings: Effect Delay: 1.0"); SendMessageToPC(oUser, "Settings: Beam Duration: 5.0"); SendMessageToPC(oUser, "Settings: Stun Duration: 1000.0"); SendMessageToPC(oUser, "Settings: Sound Delay: 0.2"); SendMessageToPC(oUser, "Settings: Save Adjustment: 5.0"); } } //********************************END INITIALIZATION*************************** dmw_CleanUp(oUser); if (GetStringLeft(sItemTag,8) == "hlslang_") { //Destroy any existing Voice attached to the user if (GetIsObjectValid(GetLocalObject(oUser, "dmfi_MyVoice"))) { DestroyObject(GetLocalObject(oUser, "dmfi_MyVoice")); FloatingTextStringOnCreature("You have destroyed your previous Voice", oUser, FALSE); } //Set the Voice to interpret language of the appropriate widget string ssLanguage = GetStringRight(sItemTag, 2); if (GetStringLeft(ssLanguage, 1) == "_") ssLanguage = GetStringRight(sItemTag, 1); SetLocalInt(oUser, "hls_MyLanguage", StringToInt(ssLanguage)); SetLocalString(oUser, "hls_MyLanguageName", GetName(oItem)); DelayCommand(1.0f, FloatingTextStringOnCreature("You are speaking " + GetName(oItem) + ". Type /dm [(what you want to say in brackets)]", oUser, FALSE)); object oArea = GetFirstObjectInArea(GetArea(oUser)); while (GetIsObjectValid(oArea)) { if (GetObjectType(oArea) == OBJECT_TYPE_CREATURE && !GetIsDead(oArea) && GetLocalInt(oArea, "hls_Listening") && GetDistanceBetween(oUser, oArea) < 20.0f && oArea != GetLocalObject(oUser, "dmfi_MyVoice")) { DeleteLocalObject(oUser, "dmfi_MyVoice"); return; } oArea = GetNextObjectInArea(GetArea(oUser)); } //Create the Voice object oVoice = CreateObject(OBJECT_TYPE_CREATURE, "dmfi_voice", GetLocation(oUser)); //Set the Voice to Autofollow the User AssignCommand(oVoice, ActionForceFollowObject(oUser, 3.0f)); //Set Ownership of the Voice to the User SetLocalObject(oUser, "dmfi_MyVoice", oVoice); return; } if (sItemTag == "persistinfo") { SetLocalObject(oUser, "dmfi_univ_target", oUser); SetLocalLocation(oUser, "dmfi_univ_location", lLocation); SetLocalString(oUser, "dmfi_univ_conv", "pc_emote"); AssignCommand(oUser, ClearAllActions()); AssignCommand(oUser, ActionStartConversation(OBJECT_SELF, "dmfi_universal", TRUE)); return; } if (GetStringLeft(sItemTag, 8) == "dmfi_pc_") { if (sItemTag == "dmfi_pc_follow") { if (GetIsObjectValid(oOther)) { FloatingTextStringOnCreature("Now following "+ GetName(oOther),oUser, FALSE); DelayCommand(2.0f, AssignCommand(oUser, ActionForceFollowObject(oOther, 2.0f))); } return; } SetLocalObject(oUser, "dmfi_univ_target", oUser); SetLocalLocation(oUser, "dmfi_univ_location", lLocation); SetLocalString(oUser, "dmfi_univ_conv", GetStringRight(sItemTag, GetStringLength(sItemTag) - 5)); AssignCommand(oUser, ClearAllActions()); AssignCommand(oUser, ActionStartConversation(OBJECT_SELF, "dmfi_universal", TRUE)); return; } if (GetStringLeft(sItemTag, 5) == "dmfi_") { int iPass = FALSE; if (GetIsDM(oUser) || GetIsDMPossessed(oUser)) iPass = TRUE; if (!GetIsPC(oUser)) iPass = TRUE; if (!iPass) /* (!GetIsDM(oUser) && !GetLocalInt(GetModule(), "dmfi_Admin" + GetPCPublicCDKey(oUser)) && !GetLocalInt(oUser, "hls_Listening") && !GetIsDMPossessed(oUser)) */ { FloatingTextStringOnCreature("You cannot use this item." ,oUser, FALSE); SendMessageToAllDMs(GetName(oUser)+ " is attempting to use a DM item."); return; } if (sItemTag == "dmfi_exploder") { if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_afflict"))) CreateItemOnObject("dmfi_afflict", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_dicebag"))) CreateItemOnObject("dmfi_dicebag", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_pc_dicebag"))) CreateItemOnObject("dmfi_pc_dicebag", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_pc_follow"))) CreateItemOnObject("dmfi_pc_follow", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_pc_emote"))) CreateItemOnObject("dmfi_pc_emote", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_server"))) CreateItemOnObject("dmfi_server", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_emote"))) CreateItemOnObject("dmfi_emote", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_encounter"))) CreateItemOnObject("dmfi_encounte", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_faction"))) CreateItemOnObject("dmfi_faction", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_fx"))) CreateItemOnObject("dmfi_fx", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_music"))) CreateItemOnObject("dmfi_music", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_sound"))) CreateItemOnObject("dmfi_sound", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_voice"))) CreateItemOnObject("dmfi_voice", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_xp"))) CreateItemOnObject("dmfi_xp", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_500xp"))) CreateItemOnObject("dmfi_500xp", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_en_ditto"))) CreateItemOnObject("dmfi_en_ditto", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_mute"))) CreateItemOnObject("dmfi_mute", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_peace"))) CreateItemOnObject("dmfi_peace", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_voicewidget"))) CreateItemOnObject("dmfi_voicewidget", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_dmw"))) CreateItemOnObject("dmfi_dmw", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_target"))) CreateItemOnObject("dmfi_target", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_buff"))) CreateItemOnObject("dmfi_buff", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_dmbook"))) CreateItemOnObject("dmfi_dmbook", oOther); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_playerbook"))) CreateItemOnObject("dmfi_playerbook", oOther); return; } if (sItemTag == "dmfi_peace") { //This widget sets all creatures in the area to a neutral stance and clears combat. object oArea = GetFirstObjectInArea(GetArea(oUser)); object oP; while (GetIsObjectValid(oArea)) { if (GetObjectType(oArea) == OBJECT_TYPE_CREATURE && !GetIsPC(oArea)) { AssignCommand(oArea, ClearAllActions()); oP = GetFirstPC(); while (GetIsObjectValid(oP)) { if (GetArea(oP) == GetArea(oUser)) { ClearPersonalReputation(oArea, oP); SetStandardFactionReputation(STANDARD_FACTION_HOSTILE, 25, oP); SetStandardFactionReputation(STANDARD_FACTION_COMMONER, 91, oP); SetStandardFactionReputation(STANDARD_FACTION_MERCHANT, 91, oP); SetStandardFactionReputation(STANDARD_FACTION_DEFENDER, 91, oP); } oP = GetNextPC(); } AssignCommand(oArea, ClearAllActions()); } oArea = GetNextObjectInArea(GetArea(oUser)); } } if (sItemTag == "dmfi_voicewidget") { object oVoice; //Destroy any existing Voice attached to the user if (GetIsObjectValid(GetLocalObject(oUser, "dmfi_MyVoice"))) { DestroyObject(GetLocalObject(oUser, "dmfi_MyVoice")); FloatingTextStringOnCreature("You have destroyed your previous Voice", oUser, FALSE); } if (GetIsObjectValid(oOther)) { if (GetObjectSeen(oUser, oOther)!=TRUE) { FloatingTextStringOnCreature("You must be visible to target a creature with this widget.", oUser); return; } SetListening(oOther, TRUE); SetListenPattern(oOther, "**", 20600); SetLocalInt(oOther, "hls_Listening", 1); //listen to all text SetLocalObject(oUser, "dmfi_VoiceTarget", oOther); FloatingTextStringOnCreature("You have targeted " + GetName(oOther) + " with the Voice Widget", oUser, FALSE); if(!GetIsObjectValid(GetItemPossessedBy(oOther, "dmfi_voicewidget"))) CreateItemOnObject("dmfi_voicewidget", oOther); if (GetLocalInt(GetModule(), "dmfi_voice_initial")!=1) { SetLocalInt(GetModule(), "dmfi_voice_initial", 1); SendMessageToAllDMs("Listening Initialized: .commands, .skill checks, and much more now available."); DelayCommand(4.0, FloatingTextStringOnCreature("Listening Initialized: .commands, .skill checks, and more available", oUser)); } object oArea = GetFirstObjectInArea(GetArea(oUser)); while (GetIsObjectValid(oArea)) { if (GetObjectType(oArea) == OBJECT_TYPE_CREATURE && !GetIsDead(oArea) && GetLocalInt(oArea, "hls_Listening") && GetDistanceBetween(oUser, oArea) < 20.0f && oArea != GetLocalObject(oUser, "dmfi_MyVoice")) { DeleteLocalObject(oUser, "dmfi_MyVoice"); return; } oArea = GetNextObjectInArea(GetArea(oUser)); } //Create the Voice object oVoice = CreateObject(OBJECT_TYPE_CREATURE, "dmfi_voice", GetLocation(oUser)); //Set Ownership of the Voice to the User AssignCommand(oVoice, ActionForceFollowObject(oUser, 3.0f)); SetLocalObject(oUser, "dmfi_MyVoice", oVoice); return; } else { //Create the Voice oVoice = CreateObject(OBJECT_TYPE_CREATURE, "dmfi_voice", lLocation); AssignCommand(oVoice, ActionForceFollowObject(oUser, 3.0f)); SetLocalObject(oUser, "dmfi_VoiceTarget", oVoice); //Set Ownership of the Voice to the User SetLocalObject(oUser, "dmfi_MyVoice", oVoice); DelayCommand(1.0f, FloatingTextStringOnCreature("The Voice is operational", oUser, FALSE)); return; } return; } if (sItemTag == "dmfi_mute") { SetLocalObject(oUser, "dmfi_univ_target", oUser); SetLocalString(oUser, "dmfi_univ_conv", "voice"); SetLocalInt(oUser, "dmfi_univ_int", 8); ExecuteScript("dmfi_execute", oUser); return; } if (sItemTag == "dmfi_en_ditto") { SetLocalObject(oUser, "dmfi_univ_target", oOther); SetLocalLocation(oUser, "dmfi_univ_location", lLocation); SetLocalString(oUser, "dmfi_univ_conv", "encounter"); SetLocalInt(oUser, "dmfi_univ_int", GetLocalInt(oUser, "EncounterType")); ExecuteScript("dmfi_execute", oUser); return; } if (sItemTag == "dmfi_target") { SetLocalObject(oUser, "dmfi_univ_target", oOther); FloatingTextStringOnCreature("DMFI Target set to " + GetName(oOther),oUser); } if (sItemTag == "dmfi_500xp") { SetLocalObject(oUser, "dmfi_univ_target", oOther); SetLocalLocation(oUser, "dmfi_univ_location", lLocation); SetLocalString(oUser, "dmfi_univ_conv", "xp"); SetLocalInt(oUser, "dmfi_univ_int", 53); ExecuteScript("dmfi_execute", oUser); return; } if (sItemTag == "dmfi_encounter") { if (GetIsObjectValid(GetWaypointByTag("DMFI_E1"))) SetCustomToken(20771, GetName(GetWaypointByTag("DMFI_E1"))); else SetCustomToken(20771, "Encounter Invalid"); if (GetIsObjectValid(GetWaypointByTag("DMFI_E2"))) SetCustomToken(20772, GetName(GetWaypointByTag("DMFI_E2"))); else SetCustomToken(20772, "Encounter Invalid"); if (GetIsObjectValid(GetWaypointByTag("DMFI_E3"))) SetCustomToken(20773, GetName(GetWaypointByTag("DMFI_E3"))); else SetCustomToken(20773, "Encounter Invalid"); if (GetIsObjectValid(GetWaypointByTag("DMFI_E4"))) SetCustomToken(20774, GetName(GetWaypointByTag("DMFI_E4"))); else SetCustomToken(20774, "Encounter Invalid"); if (GetIsObjectValid(GetWaypointByTag("DMFI_E5"))) SetCustomToken(20775, GetName(GetWaypointByTag("DMFI_E5"))); else SetCustomToken(20775, "Encounter Invalid"); if (GetIsObjectValid(GetWaypointByTag("DMFI_E6"))) SetCustomToken(20776, GetName(GetWaypointByTag("DMFI_E6"))); else SetCustomToken(20776, "Encounter Invalid"); if (GetIsObjectValid(GetWaypointByTag("DMFI_E7"))) SetCustomToken(20777, GetName(GetWaypointByTag("DMFI_E7"))); else SetCustomToken(20777, "Encounter Invalid"); if (GetIsObjectValid(GetWaypointByTag("DMFI_E8"))) SetCustomToken(20778, GetName(GetWaypointByTag("DMFI_E8"))); else SetCustomToken(20778, "Encounter Invalid"); if (GetIsObjectValid(GetWaypointByTag("DMFI_E9"))) SetCustomToken(20779, GetName(GetWaypointByTag("DMFI_E9"))); else SetCustomToken(20779, "Encounter Invalid"); } if (sItemTag == "dmfi_afflict") { int nDNum; nDNum = GetLocalInt(oUser, "dmfi_damagemodifier"); SetCustomToken(20780, IntToString(nDNum)); } SetLocalObject(oUser, "dmfi_univ_target", oOther); SetLocalLocation(oUser, "dmfi_univ_location", lLocation); SetLocalString(oUser, "dmfi_univ_conv", GetStringRight(sItemTag, GetStringLength(sItemTag) - 5)); AssignCommand(oUser, ClearAllActions()); AssignCommand(oUser, ActionStartConversation(OBJECT_SELF, "dmfi_universal", TRUE, FALSE)); } }