//::////////////////////////////////////////////////////////////////////////::// //:: SIMTools V3.0 Speech Integration & Management Tools Version 3.0 ::// //:: Created By: FunkySwerve ::// //:: Created On: April 4 2006 ::// //:: Last Updated: March 27 2007 ::// //:: With Thanks To: ::// //:: Dumbo - for his amazing plugin ::// //:: Virusman - for Linux versions, and for the reset plugin, and for ::// //:: his excellent events plugin, without which this update would not ::// //:: be possible ::// //:: Dazzle - for his script samples ::// //:: Butch - for the emote wand scripts ::// //:: The DMFI project - for the languages conversions and many of the emotes::// //:: Lanessar and the players of the Myth Drannor PW - for the new languages::// //:: The players and DMs of Higher Ground for their input and playtesting ::// //::////////////////////////////////////////////////////////////////////////::// #include "aps_include" #include "fky_chat_const" #include "fky_chat_config" #include "fky_chat_misc" #include "fky_chat_dmfi" #include "fky_chat_fr_lang" #include "fky_chat_vfx" #include "fky_chat_newlang" const string sSpeech_SpeechList = "SpeechList_"; const string sSpeech_PlayerID = "SpeechPlayerID_"; //Shunts the player to the appropriate conversation, sending the message specified in sColor. //1 = main command //2 = character //3 = dice //4 = items //5 = language commands //6 = listing commands //7 = metachannels //8 = social //9 = languages //11 = main dm command //12 = dm player management //13 = dm player management ability and appearance //14 = dm player management alignment //15 = dm player management avatar powers //16 = dm player management banning //17 = dm player management items //18 = dm player management teleportation //19 = dm player management experience //20 = dm server management //21 = dm server management time and weather //22 = dm server management variables //23 = dm creature management //24 = dm creature management factions //25 = dm visual effects //26 = dm chat commands //27 = dm chat commands ignore //43 = dm visual effects duration type //44 = dm visual effects subtype void CommandRedirect(object oSpeaker, int nMenu, string sMessage = BADCOMMAND, string sColor = COLOR_RED); //Applys a cutscene invisible and cutscene ghost effect to the target. void DoDMInvis(object oPlayer); void SendChatLogMessage(object oRecipient, string sMessage, object oSender = OBJECT_INVALID, int nChannel = 4) { if (!GetIsObjectValid(oSender)) return; if (FindSubString(sMessage, "¬")!=-1) return; if (nChannel == 4 && !GetIsObjectValid(oRecipient)) return; SetLocalString(oSender, "NWNX!CHAT!SPEAK", ObjectToString(oSender)+"¬"+ObjectToString(oRecipient)+"¬"+IntToString(nChannel)+"¬"+sMessage); } void InitSpeech() { int nCount; object oMod = GetModule(); // Allocate Memory string sMemory; for( nCount = 0; nCount < 8; nCount++ ) // Reserve 8*128 bytes sMemory += "................................................................................................................................"; SetLocalString(oMod, "NWNX!CHAT!SPACER", sMemory); if (PROCESS_NPC_SPEECH) SetLocalString(oMod, "NWNX!CHAT!LOGNPC", "1"); if (PROCESS_NPC_SPEECH && IGNORE_SILENT_CHANNELS) SetLocalString(oMod,"NWNX!CHAT!IGNORESILENT","1"); if (SEND_CHANNELS_TO_CHAT_LOG) { location lSpawn = GetStartingLocation(); object oMessenger = CreateObject(OBJECT_TYPE_CREATURE, "fky_chat_sender", lSpawn); SetLocalObject(oMod, "FKY_CHT_MESSENGER", oMessenger); DoDMInvis(oMessenger); } SetCustomToken(1701, COLOR_END); SetCustomToken(1702, COLOR_GREEN); SetCustomToken(1703, COLOR_RED); SetCustomToken(1704, COLOR_RED2); SetCustomToken(1705, COLOR_WHITE); SetCustomToken(1706, COLOR_BLUE); SetCustomToken(1707, COLOR_PURPLE); SetCustomToken(1708, COLOR_LT_PURPLE); SetCustomToken(1709, COLOR_LT_GREEN); SetCustomToken(1710, COLOR_ORANGE); SetCustomToken(1711, COLOR_GOLD); SetCustomToken(1712, COLOR_YELLOW); SetCustomToken(1713, COLOR_LT_BLUE); SetCustomToken(1714, COLOR_LT_BLUE2); SetCustomToken(1715, EMOTE_SYMBOL); SetCustomToken(1716, COMMAND_SYMBOL); } string Speech_GetSpacer() { return GetLocalString(GetModule(), "NWNX!CHAT!SPACER"); } void Speech_OnClientEnter(object oPlayer) { if( !GetIsObjectValid(oPlayer) ) return; object oMod = GetModule(); SetLocalString(oPlayer, "NWNX!CHAT!GETID", ObjectToString(oPlayer) + " "); string sID = GetLocalString(oPlayer, "NWNX!CHAT!GETID"); int nID = StringToInt(sID); if( nID != -1) { SetLocalObject(oMod, sSpeech_SpeechList + sID, oPlayer); SetLocalInt(oPlayer, sSpeech_PlayerID, nID); } DeleteLocalString(oPlayer, "NWNX!CHAT!GETID"); } void Speech_OnClientExit(object oPlayer) { if( !GetIsObjectValid(oPlayer) ) return; int nID = GetLocalInt(oPlayer, sSpeech_PlayerID); DeleteLocalInt(oPlayer, sSpeech_PlayerID); DeleteLocalObject(GetModule(), sSpeech_SpeechList + IntToString(nID)); } object Speech_GetPlayer(int nID) { return GetLocalObject(GetModule(), sSpeech_SpeechList + IntToString(nID)); } string Speech_GetChannel(int nChannel) { string sChannel; switch(nChannel) { case 1: sChannel = TALK; break; case 2: sChannel = SHOUT; break; case 3: sChannel = WHISPER; break; case 4: sChannel = TELL; break; case 5: sChannel = SERVER; break; case 6: sChannel = PARTY; break; case 14: sChannel = DM; break; case 17: sChannel = TALK; break; case 18: sChannel = SHOUT; break; case 19: sChannel = WHISPER; break; case 20: sChannel = TELL; break; case 21: sChannel = SERVER; break; case 22: sChannel = PARTY; break; case 30: sChannel = DM; break; default: sChannel = UNKNOWN; break; } return sChannel; } object GetMessenger() { return GetLocalObject(GetModule(), "FKY_CHT_MESSENGER"); } void DoLogging(object oSender, string sTarget, int nChan, string sLogText) { string sLogMessage = GetName(oSender) + "(" + GetPCPlayerName(oSender) + ")" + sTarget + "[" + Speech_GetChannel(nChan) + "] " + sLogText + "\n"; SetLocalString(oSender, "NWNX!CHAT!LOG", sLogMessage); } void DoCleanup(object oSender) { DeleteLocalString(oSender, "NWNX!CHAT!TEXT"); DeleteLocalString(oSender, "NWNX!CHAT!SUPRESS"); DeleteLocalString(oSender, "NWNX!CHAT!LOG"); } string GetSkillName(int nSkill) { string sSkill; switch (nSkill) { case 0: sSkill = SKILL0; break; case 1: sSkill = SKILL1; break; case 2: sSkill = SKILL2; break; case 3: sSkill = SKILL3; break; case 4: sSkill = SKILL4; break; case 5: sSkill = SKILL5; break; case 6: sSkill = SKILL6; break; case 7: sSkill = SKILL7; break; case 8: sSkill = SKILL8; break; case 9: sSkill = SKILL9; break; case 10: sSkill = SKILL10; break; case 11: sSkill = SKILL11; break; case 12: sSkill = SKILL12; break; case 13: sSkill = SKILL13; break; case 14: sSkill = SKILL14; break; case 15: sSkill = SKILL15; break; case 16: sSkill = SKILL16; break; case 17: sSkill = SKILL17; break; case 18: sSkill = SKILL18; break; case 19: sSkill = SKILL19; break; case 20: sSkill = SKILL20; break; case 21: sSkill = SKILL21; break; case 22: sSkill = SKILL22; break; case 23: sSkill = SKILL23; break; case 24: sSkill = SKILL24; break; case 25: sSkill = SKILL25; break; case 26: sSkill = SKILL26; break; default: sSkill = ""; break; } return sSkill; } string GetClassName(int nClass) { string sClass; switch (nClass) { case 0: sClass = CLASS0; break; case 1: sClass = CLASS1; break; case 2: sClass = CLASS2; break; case 3: sClass = CLASS3; break; case 4: sClass = CLASS4; break; case 5: sClass = CLASS5; break; case 6: sClass = CLASS6; break; case 7: sClass = CLASS7; break; case 8: sClass = CLASS8; break; case 9: sClass = CLASS9; break; case 10: sClass = CLASS10; break; case 27: sClass = CLASS27; break; case 28: sClass = CLASS28; break; case 29: sClass = CLASS29; break; case 30: sClass = CLASS30; break; case 31: sClass = CLASS31; break; case 32: sClass = CLASS32; break; case 33: sClass = CLASS33; break; case 34: sClass = CLASS34; break; case 35: sClass = CLASS35; break; case 36: sClass = CLASS36; break; case 37: sClass = CLASS37; break; default: sClass = ""; break; } return sClass; } int ModifiedGetIsSkillSuccessful(object oPC, int nSkill, int nDC) { int nReturn; int nRank = GetSkillRank(nSkill, oPC); int nRoll = d20(); if (SILENT_LORE_CHECKS) { if ((nRank + nRoll) < nDC) return FALSE; else return TRUE; } else { string sSign; if (nRank >= 0) sSign = "+"; else sSign = "-"; string sSuccess; if ((nRank + 20)< nDC) { sSuccess = IMPOSSIBLE; nReturn = FALSE; } else if ((nRank + nRoll) < nDC) { sSuccess = FAILED; nReturn = FALSE; } else { sSuccess = SUCCESS; nReturn = TRUE; } FloatingTextStringOnCreature(COLOR_PURPLE+GetName(oPC)+COLOR_END+" : "+GetSkillName(nSkill)+" : "+sSuccess+" : ("+IntToString(nRoll)+sSign+IntToString(abs(nRank))+" = "+IntToString(nRoll+nRank)+VERSUS+IntToString(nDC)+")", oPC, FALSE); return nReturn; } } void DoSkillCheck(object oPC, int nSkill, int nDC) { int nRank = GetSkillRank(nSkill, oPC); int nRoll = d20(); string sSign; if (nRank >= 0) sSign = "+"; else sSign = "-"; string sSuccess; if ((nRank + 20) < nDC) sSuccess = COLOR_RED+IMPOSSIBLE+COLOR_END; else if ((nRank + nRoll) < nDC) sSuccess = COLOR_RED+FAILED+COLOR_END; else sSuccess = COLOR_GREEN+SUCCESS+COLOR_END; AssignCommand(oPC, SpeakString(ESCAPE_STRING+COLOR_PURPLE+GetName(oPC)+COLOR_END+" : "+GetSkillName(nSkill)+" : "+sSuccess+" : ("+IntToString(nRoll)+sSign+IntToString(abs(nRank))+" = "+IntToString(nRoll+nRank)+VERSUS+IntToString(nDC)+")")); } void ListEmotes(object oPlayer) { string sMessage; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"agree "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"ag"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"bark "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"bk"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"beg "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"bg"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"belch "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"bh"+COLOR_END+COLOR_WHITE+") (male only)"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"bend "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"bn"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"bored "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"bo"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"bow "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"bw"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"burp "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"bp"+COLOR_END+COLOR_WHITE+") (male only)"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"bye "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"cantrip "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"ca"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"cast "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"cs"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"celebrate "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"cl"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"chat "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"ct"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"chant "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"cn"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"cheer "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"ch"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"choke "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"chortle "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"cr"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"chuckle "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"ck"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"collapse "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"co"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"cough "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"cg"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"cry "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"curtsy "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"cy"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"dance "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"da"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"dead "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"dd"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"demand "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"dm"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"die "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"di"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"dodge "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"dg"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"drink "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"dr"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"drunk "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"dn"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"duck "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"dk"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"exhausted "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"ex"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"fall "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"fl"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"fatigue "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"fa"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"fiddle "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"fi"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"fidget "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"fg"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"flop "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"fp"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"giggle "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"gi"+COLOR_END+COLOR_WHITE+") (female only)"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"goodbye "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"gb"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"goodnight "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"gt"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"greet "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"gr"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"groan "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"gn"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"guffaw "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"gw"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"hello "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"hl"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"hiccup "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"hp"+COLOR_END+COLOR_WHITE+") (male only)"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"hooray "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"hy"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"hoot "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"ht"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"howl "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"hw"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"hum "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"hm"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"kneel "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"kn"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"laugh "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"la"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"lie "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"look "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"lk"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"meditate "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"md"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"meow "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"mw"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"moan "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"mn"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"mock "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"mk"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"moo "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"mo"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"nap "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"np"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"no "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"nod "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"nd"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"nope "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"ouch "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"ow"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"peer "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"pe"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"plead "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"pl"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"pray "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"pr"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"prone "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"pn"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"puke "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"pu"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"read "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"re"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"rest "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"rt"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"roar "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"rr"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"salute "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"sa"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"scan "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"sn"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"scratch "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"sc"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"scream "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"sm"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"screech "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"shift "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"sh"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"sing "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"sg"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"sip "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"sit "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"si"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"sleep "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"sl"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"smoke "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"sk"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"snarl "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"sneeze "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"sz"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"snore "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"sob "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"sb"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"spasm "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"sp"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"spit "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"steal "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"st"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"stoop "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"so"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"stretch "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"sr"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"sway "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"sy"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"swipe "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"sw"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"talk "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"tl"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"taunt "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"ta"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"threaten "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"th"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"tired "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"ti"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"toast "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"tt"+COLOR_END+COLOR_WHITE+") (male only)"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"trip "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"tp"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"vomit "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"vm"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"wail "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"wl"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"wave "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"wa"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"weep "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"wp"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"whistle "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"wh"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"woozy "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"wz"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"worship "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"wo"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+EMOTE_SYMBOL+"yawn "+COLOR_END+COLOR_WHITE+"("+COLOR_END+COLOR_PURPLE+EMOTE_SYMBOL+"yw"+COLOR_END+COLOR_WHITE+")"+COLOR_END+NEWLINE; SendMessageToPC(oPlayer, sMessage); } void ListCommands(object oPlayer) { string sMessage; sMessage = COLOR_PURPLE+COMMAND1+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+COMMAND2+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "d4 "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "d6 "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "d8 "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "d10 "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "d12 "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "d20 "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "d100 "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "partyroll "+COLOR_END+NEWLINE; if (VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer)) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "playerinfo "+COLOR_END+NEWLINE; else sMessage += COLOR_GREEN + COMMAND_SYMBOL + "playerinfo "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "anon "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "unanon "+COLOR_END+NEWLINE; if (ENABLE_WEAPON_VISUALS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "wpac "+COLOR_END+NEWLINE; if (ENABLE_WEAPON_VISUALS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "wpco "+COLOR_END+NEWLINE; if (ENABLE_WEAPON_VISUALS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "wpel "+COLOR_END+NEWLINE; if (ENABLE_WEAPON_VISUALS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "wpev "+COLOR_END+NEWLINE; if (ENABLE_WEAPON_VISUALS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "wpfi "+COLOR_END+NEWLINE; if (ENABLE_WEAPON_VISUALS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "wpho "+COLOR_END+NEWLINE; if (ENABLE_WEAPON_VISUALS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "wpnone "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "help "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "list emotes "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "list commands "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "list ignored "+COLOR_END+NEWLINE; if (ENABLE_LANGUAGES) sMessage += COLOR_PURPLE + "/l "+COLOR_END+NEWLINE; if (ENABLE_LANGUAGES) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "speak "+COLOR_END+NEWLINE; if (ENABLE_LANGUAGES) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "list languages "+COLOR_END+NEWLINE; if (ENABLE_LANGUAGES && (ENABLE_FULL_LANGUAGE_LIST_FOR_PLAYERS || VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer))) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "list alllanguages "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "lfg "+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "metaaccept "+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "metadecline "+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "metadisband "+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "metainvite "+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "metakick "+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "metaleave "+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "metalist "+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_PURPLE + "/m "+COLOR_END+NEWLINE; if (ENABLE_PLAYER_SETNAME || VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer)) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "setname "+COLOR_END+NEWLINE; if (ENABLE_PLAYER_SETNAME || VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer)) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "setnameall "+COLOR_END+NEWLINE; if (ENABLE_PLAYER_SETTAILWINGS || VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer)) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "settail "+COLOR_END+NEWLINE; if (ENABLE_PLAYER_SETTAILWINGS || VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer)) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "setwings "+COLOR_END+NEWLINE; if (PLAYERS_CAN_DELETE || (VerifyDMKey(oPlayer) && DMS_CAN_DELETE) || VerifyAdminKey(oPlayer)) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "delete "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "skillcheck "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "skillslist "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN + COMMAND_SYMBOL + "ignore "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN + COMMAND_SYMBOL + "unignore "+COLOR_END+NEWLINE; SendMessageToPC(oPlayer, sMessage); } void ListHelp(object oPlayer) { string sMessage; sMessage = COLOR_PURPLE+COMMAND1+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+COMMAND2+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "d4 "+COLOR_END+COLOR_WHITE+COMMAND2_1+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "d6 "+COLOR_END+COLOR_WHITE+COMMAND3+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "d8 "+COLOR_END+COLOR_WHITE+COMMAND4+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "d10 "+COLOR_END+COLOR_WHITE+COMMAND4_1+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "d12 "+COLOR_END+COLOR_WHITE+COMMAND5+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "d20 "+COLOR_END+COLOR_WHITE+COMMAND6+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "d100 "+COLOR_END+COLOR_WHITE+COMMAND7+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "partyroll "+COLOR_END+COLOR_WHITE+COMMAND8+COLOR_END+NEWLINE; if (VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer)) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "playerinfo "+COLOR_END+COLOR_WHITE+COMMAND9+COLOR_END+NEWLINE; else sMessage += COLOR_GREEN + COMMAND_SYMBOL + "playerinfo "+COLOR_END+COLOR_WHITE+COMMAND10+COLOR_END+COLOR_LT_PURPLE+COMMAND_SYMBOL+"anon "+COLOR_END+COLOR_WHITE+COMMAND10b+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "anon "+COLOR_END+COLOR_WHITE+COMMAND10_1+COLOR_END+COLOR_LT_GREEN+COMMAND_SYMBOL+"playerinfo "+COLOR_END+COLOR_WHITE+COMMAND10b+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "unanon "+COLOR_END+COLOR_WHITE+COMMAND10_2+COLOR_END+NEWLINE; if (ENABLE_WEAPON_VISUALS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "wpac "+COLOR_END+COLOR_WHITE+COMMAND11+COLOR_END+NEWLINE; if (ENABLE_WEAPON_VISUALS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "wpco "+COLOR_END+COLOR_WHITE+COMMAND12+COLOR_END+NEWLINE; if (ENABLE_WEAPON_VISUALS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "wpel "+COLOR_END+COLOR_WHITE+COMMAND13+COLOR_END+NEWLINE; if (ENABLE_WEAPON_VISUALS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "wpev "+COLOR_END+COLOR_WHITE+COMMAND14+COLOR_END+NEWLINE; if (ENABLE_WEAPON_VISUALS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "wpfi "+COLOR_END+COLOR_WHITE+COMMAND15+COLOR_END+NEWLINE; if (ENABLE_WEAPON_VISUALS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "wpho "+COLOR_END+COLOR_WHITE+COMMAND16+COLOR_END+NEWLINE; if (ENABLE_WEAPON_VISUALS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "wpnone "+COLOR_END+COLOR_WHITE+COMMAND50+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "help "+COLOR_END+COLOR_WHITE+COMMAND40+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "list emotes "+COLOR_END+COLOR_WHITE+COMMAND17+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "list commands "+COLOR_END+COLOR_WHITE+COMMAND18+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "list ignored "+COLOR_END+COLOR_WHITE+COMMAND19+COLOR_END+NEWLINE; if (ENABLE_LANGUAGES) sMessage += COLOR_PURPLE + "/l "+COLOR_END+COLOR_WHITE+COMMAND41+COLOR_LT_PURPLE+"/l"+COMMAND42+COLOR_END+COLOR_WHITE+COMMAND43+COLOR_LT_PURPLE+COMMAND_SYMBOL+"list languages"+COLOR_END+COLOR_WHITE+COMMAND44+NEWLINE; if (ENABLE_LANGUAGES) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "speak "+COLOR_END+COLOR_WHITE+COMMAND45+COLOR_LT_PURPLE+COMMAND_SYMBOL+"speak"+COLOR_END+COLOR_WHITE+COMMAND46+COLOR_LT_PURPLE+COMMAND_SYMBOL+"speak common"+COLOR_END+COLOR_WHITE+COMMAND47+COLOR_LT_PURPLE+COMMAND_SYMBOL+"list languages"+COLOR_END+COLOR_WHITE+COMMAND48+NEWLINE; if (ENABLE_LANGUAGES) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "list languages "+COLOR_END+COLOR_WHITE+COMMAND20+COLOR_LT_PURPLE+"/l"+COLOR_END+COLOR_WHITE+COMMAND20b+COLOR_LT_PURPLE+COMMAND_SYMBOL+"speak"+COLOR_END+COLOR_WHITE+COMMAND20c+COLOR_END+NEWLINE; if (ENABLE_LANGUAGES && (ENABLE_FULL_LANGUAGE_LIST_FOR_PLAYERS || VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer))) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "list alllanguages "+COLOR_END+COLOR_WHITE+COMMAND21+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "lfg "+COLOR_END+COLOR_WHITE+COMMAND22+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "metaaccept "+COLOR_END+COLOR_WHITE+COMMAND23+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "metadecline "+COLOR_END+COLOR_WHITE+COMMAND24+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "metadisband "+COLOR_END+COLOR_WHITE+COMMAND25+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "metainvite "+COLOR_END+COLOR_WHITE+COMMAND26+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "metakick "+COLOR_END+COLOR_WHITE+COMMAND27+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "metaleave "+COLOR_END+COLOR_WHITE+COMMAND28+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "metalist "+COLOR_END+COLOR_WHITE+COMMAND29+COLOR_END+NEWLINE; if (ENABLE_METACHANNELS) sMessage += COLOR_PURPLE + "/m "+COLOR_END+COLOR_WHITE+COMMAND30+COLOR_END+NEWLINE; if (ENABLE_PLAYER_SETNAME || VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer)) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "setname "+COLOR_END+COLOR_WHITE+COMMAND31+COLOR_LT_GREEN+COMMAND_SYMBOL+"setname ("+COMMAND31c+")"+COLOR_END+COLOR_WHITE+COMMAND31d+COLOR_LT_GREEN+COMMAND_SYMBOL+"setname "+COMMAND31f+COLOR_END+COLOR_WHITE+COMMAND31g+COLOR_END+NEWLINE; if (ENABLE_PLAYER_SETNAME || VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer)) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "setnameall "+COLOR_END+COLOR_WHITE+COMMAND32a+COLOR_END+COLOR_LT_GREEN+COMMAND_SYMBOL+"setname"+COLOR_END+COLOR_WHITE+COMMAND32b+COLOR_END+NEWLINE; if (ENABLE_PLAYER_SETTAILWINGS || VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer)) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "settail "+COLOR_END+COLOR_WHITE+COMMAND37+COLOR_END+COLOR_LT_GREEN + COMMAND_SYMBOL+"settail (tail number)"+COLOR_END+COLOR_WHITE+COMMAND38 + COLOR_END+NEWLINE; if (ENABLE_PLAYER_SETTAILWINGS || VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer)) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "setwings "+COLOR_END+COLOR_WHITE+COMMAND39+COLOR_END+COLOR_LT_GREEN + COMMAND_SYMBOL+"setwing (wing number)"+COLOR_END+COLOR_WHITE+COMMAND38 + COLOR_END+NEWLINE; if (PLAYERS_CAN_DELETE || (VerifyDMKey(oPlayer) && DMS_CAN_DELETE) || VerifyAdminKey(oPlayer)) sMessage += COLOR_GREEN + COMMAND_SYMBOL + "delete "+COLOR_END+COLOR_WHITE+COMMAND49+COLOR_LT_GREEN + COMMAND_SYMBOL+"playerinfo"+COLOR_END+COLOR_WHITE+COMMAND48+ COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "skillcheck "+COLOR_END+COLOR_WHITE+COMMAND33+COLOR_LT_PURPLE+COMMAND_SYMBOL+"skillcheck "+COMMAND33b+COLOR_END+COLOR_WHITE+COMMAND33c+COLOR_LT_PURPLE+COMMAND_SYMBOL+"skillcheck 3 20"+COLOR_END+COLOR_WHITE+COMMAND33d+COLOR_LT_PURPLE+COMMAND_SYMBOL+"skillslist"+COLOR_END+COLOR_WHITE+COMMAND33e+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE + COMMAND_SYMBOL + "skillslist "+COLOR_END+COLOR_WHITE+COMMAND34+COLOR_LT_PURPLE+COMMAND_SYMBOL+"skillcheck"+COLOR_END+COLOR_WHITE+COMMAND34b+COLOR_END+NEWLINE; sMessage += COLOR_GREEN + COMMAND_SYMBOL + "ignore "+COLOR_END+COLOR_WHITE+COMMAND35+COLOR_END+NEWLINE; sMessage += COLOR_GREEN + COMMAND_SYMBOL + "unignore "+COLOR_END+COLOR_WHITE+COMMAND36+COLOR_END+NEWLINE; SendMessageToPC(oPlayer, sMessage); } void ListDMCommands(object oPlayer) { string sMessage; sMessage = COLOR_PURPLE+DMCOMMAND1+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+COMMAND2+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_align_chaos "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_align_evil "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_align_good "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_align_law "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_bandm "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_banplayer_perm "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_banplayer_temp "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_banshout_temp "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_banshout_perm "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_boot "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_change_appear "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_change_appear base "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_create (resref) "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_a_allally "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_a_allfoe "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_a_peace "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_a_reset "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_c_allally "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_c_allfoe "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_c_peace "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_c_reset "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_m_allally "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_m_allfoe "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_m_peace "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_m_reset "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_p_allally "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_p_allfoe "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_p_peace "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_p_reset "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_freeze "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fx "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_fx_list_* "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fx_loc "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fx_rem "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_getbanlist "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_getbanreason "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_givexp "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_givelevel "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_takexp "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_takelevel "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_givepartyxp "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_givepartylevel "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_takepartyxp "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_takepartylevel "+COLOR_END+NEWLINE; if ((DM_PLAYERS_HEAR_DM && VerifyDMKey(oPlayer) && (!GetIsDM(oPlayer))) || (ADMIN_PLAYERS_HEAR_DM && VerifyAdminKey(oPlayer) && (!GetIsDM(oPlayer)))) sMessage += COLOR_PURPLE+"dm_ignoredm "+COLOR_END+NEWLINE; if ((DMS_HEAR_META && VerifyDMKey(oPlayer) && GetIsDM(oPlayer)) || (DM_PLAYERS_HEAR_META && VerifyDMKey(oPlayer) && (!GetIsDM(oPlayer))) || (ADMIN_DMS_HEAR_META && VerifyAdminKey(oPlayer) && GetIsDM(oPlayer)) || (ADMIN_PLAYERS_HEAR_META && VerifyAdminKey(oPlayer) && (!GetIsDM(oPlayer)))) sMessage += COLOR_PURPLE+"dm_ignoremeta "+COLOR_END+NEWLINE; if ((DMS_HEAR_TELLS && VerifyDMKey(oPlayer) && GetIsDM(oPlayer)) || (DM_PLAYERS_HEAR_TELLS && VerifyDMKey(oPlayer) && (!GetIsDM(oPlayer))) || (ADMIN_DMS_HEAR_TELLS && VerifyAdminKey(oPlayer) && GetIsDM(oPlayer)) || (ADMIN_PLAYERS_HEAR_TELLS && VerifyAdminKey(oPlayer) && (!GetIsDM(oPlayer)))) sMessage += COLOR_PURPLE+"dm_ignoretells "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_stealth "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_invis "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_invuln "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_item_id "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_item_destroy_all "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_item_destroy_equip "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_item_destroy_inv "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_help "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_kill "+COLOR_END+NEWLINE; if (ENABLE_LANGUAGES) sMessage += COLOR_GREEN+"dm_learn "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_listcommands "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_jump "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_porthere "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_porthell "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portjail "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portleader "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portthere "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_porttown "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portway "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portpartyhere "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portpartyhell "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portpartyjail "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portpartyleader "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portpartythere "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portpartytown "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portpartyway "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_rez "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_reset_mod "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_rest "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_reveal "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_hide "+COLOR_END+NEWLINE; if ((!LETO_FOR_ADMINS_ONLY) || VerifyAdminKey(oPlayer)) { sMessage += COLOR_GREEN+"dm_setcha "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setcon "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setdex "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setint "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setstr "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setwis "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setfort "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setreflex "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setwill "+COLOR_END+NEWLINE; } sMessage += COLOR_PURPLE+"dm_settime "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setvarint "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setvarfloat "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setvarstring "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_setvarmodint "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_setvarmodfloat "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_setvarmodstring "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_getvarint "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_getvarfloat "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_getvarstring "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_getvarmodint "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_getvarmodfloat "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_getvarmodstring "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setweather_a_clear "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setweather_a_rain "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setweather_a_reset "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setweather_a_snow "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_setweather_m_clear "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_setweather_m_rain "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_setweather_m_reset "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_setweather_m_snow "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_spawn "+COLOR_END+NEWLINE; if (VerifyAdminKey(oPlayer)) sMessage += COLOR_PURPLE+"dm_sql "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_unbandm "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_unbanshout "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_unfreeze "+COLOR_END+NEWLINE; if ((DM_PLAYERS_HEAR_DM && VerifyDMKey(oPlayer) && (!GetIsDM(oPlayer))) || (ADMIN_PLAYERS_HEAR_DM && VerifyAdminKey(oPlayer) && (!GetIsDM(oPlayer)))) sMessage += COLOR_PURPLE+"dm_unignoredm "+COLOR_END+NEWLINE; if ((DMS_HEAR_META && VerifyDMKey(oPlayer) && GetIsDM(oPlayer)) || (DM_PLAYERS_HEAR_META && VerifyDMKey(oPlayer) && (!GetIsDM(oPlayer))) || (ADMIN_DMS_HEAR_META && VerifyAdminKey(oPlayer) && GetIsDM(oPlayer)) || (ADMIN_PLAYERS_HEAR_META && VerifyAdminKey(oPlayer) && (!GetIsDM(oPlayer)))) sMessage += COLOR_PURPLE+"dm_unignoremeta "+COLOR_END+NEWLINE; if ((DMS_HEAR_TELLS && VerifyDMKey(oPlayer) && GetIsDM(oPlayer)) || (DM_PLAYERS_HEAR_TELLS && VerifyDMKey(oPlayer) && (!GetIsDM(oPlayer))) || (ADMIN_DMS_HEAR_TELLS && VerifyAdminKey(oPlayer) && GetIsDM(oPlayer)) || (ADMIN_PLAYERS_HEAR_TELLS && VerifyAdminKey(oPlayer) && (!GetIsDM(oPlayer)))) sMessage += COLOR_PURPLE+"dm_unignoretells "+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_uninvis "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_uninvuln "+COLOR_END+NEWLINE; if (ENABLE_LANGUAGES) sMessage += COLOR_GREEN+"dm_unlearn "+COLOR_END+NEWLINE; sMessage += ""+COLOR_PURPLE+"/v "+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_vent "+COLOR_END+NEWLINE; SendMessageToPC(oPlayer, sMessage); } void ListDMHelp(object oPlayer) { string sMessage; sMessage = COLOR_PURPLE+DMCOMMAND1+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+COMMAND2+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_align_chaos "+COLOR_END+COLOR_WHITE+DMCOMMAND43+COLOR_LT_GREEN+"dm_align_chaos "+DMCOMMAND44+COLOR_END+COLOR_WHITE+DMCOMMAND45+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_align_evil "+COLOR_END+COLOR_WHITE+DMCOMMAND46+COLOR_LT_GREEN+"dm_align_evil "+DMCOMMAND44+COLOR_END+COLOR_WHITE+DMCOMMAND45+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_align_good "+COLOR_END+COLOR_WHITE+DMCOMMAND47+COLOR_LT_GREEN+"dm_align_good "+DMCOMMAND44+COLOR_END+COLOR_WHITE+DMCOMMAND45+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_align_law "+COLOR_END+COLOR_WHITE+DMCOMMAND48+COLOR_LT_GREEN+"dm_align_law "+DMCOMMAND44+COLOR_END+COLOR_WHITE+DMCOMMAND45+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_bandm "+COLOR_END+COLOR_WHITE+DMCOMMAND2+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_banplayer_perm "+COLOR_END+COLOR_WHITE+DMCOMMAND3+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_banplayer_temp "+COLOR_END+COLOR_WHITE+DMCOMMAND4+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_banshout_temp "+COLOR_END+COLOR_WHITE+DMCOMMAND5+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_banshout_perm "+COLOR_END+COLOR_WHITE+DMCOMMAND6+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_boot "+COLOR_END+COLOR_WHITE+DMCOMMAND79+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_change_appear "+COLOR_END+COLOR_WHITE+DMCOMMAND7+COLOR_LT_GREEN+"dm_change_appear ("+DMCOMMAND7b+")"+COLOR_END+COLOR_WHITE+DMCOMMAND7c+COLOR_LT_GREEN+"dm_change_appear 8"+COLOR_END+COLOR_WHITE+DMCOMMAND7d+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_change_appear base "+COLOR_END+COLOR_WHITE+DMCOMMAND8+COLOR_LT_GREEN+"dm_change_appear"+COLOR_END+COLOR_WHITE+DMCOMMAND8b+COLOR_LT_GREEN+"dm_change_appear"+COLOR_END+COLOR_WHITE+DMCOMMAND8c+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_create (resref) "+COLOR_END+COLOR_WHITE+DMCOMMAND9+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_a_allally "+COLOR_END+COLOR_WHITE+DMCOMMAND49+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_a_allfoe "+COLOR_END+COLOR_WHITE+DMCOMMAND50+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_a_peace "+COLOR_END+COLOR_WHITE+DMCOMMAND51+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_a_reset "+COLOR_END+COLOR_WHITE+DMCOMMAND52+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_c_allally "+COLOR_END+COLOR_WHITE+DMCOMMAND53+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_c_allfoe "+COLOR_END+COLOR_WHITE+DMCOMMAND54+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_c_peace "+COLOR_END+COLOR_WHITE+DMCOMMAND55+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_c_reset "+COLOR_END+COLOR_WHITE+DMCOMMAND56+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_m_allally "+COLOR_END+COLOR_WHITE+DMCOMMAND57+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_m_allfoe "+COLOR_END+COLOR_WHITE+DMCOMMAND58+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_m_peace "+COLOR_END+COLOR_WHITE+DMCOMMAND59+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_m_reset "+COLOR_END+COLOR_WHITE+DMCOMMAND60+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_p_allally "+COLOR_END+COLOR_WHITE+DMCOMMAND61+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_p_allfoe "+COLOR_END+COLOR_WHITE+DMCOMMAND62+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_p_peace "+COLOR_END+COLOR_WHITE+DMCOMMAND63+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fac_p_reset "+COLOR_END+COLOR_WHITE+DMCOMMAND64+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_freeze "+COLOR_END+COLOR_WHITE+DMCOMMAND10+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fx "+COLOR_END+COLOR_WHITE+DMCOMMAND11+COLOR_LT_GREEN+"dm_fx ("+DMCOMMAND11b+") 0 0"+COLOR_END+COLOR_WHITE+DMCOMMAND11c+COLOR_LT_GREEN+"dm_vfx 28 0 0"+COLOR_END+COLOR_WHITE+" ."+COLOR_END+NEWLINE; sMessage += COLOR_WHITE+DMCOMMAND11d+COLOR_LT_GREEN+"dm_fx ("+DMCOMMAND11b+") ("+DMCOMMAND11e+") ("+DMCOMMAND11f+") (E/S/SE)"+COLOR_END+COLOR_WHITE+DMCOMMAND11g+COLOR_LT_GREEN+"dm_vfx 209 1 300 ."+COLOR_END+NEWLINE; sMessage += COLOR_WHITE+DMCOMMAND11h+COLOR_LT_GREEN+"dm_vfx 209 1 300 E"+COLOR_END+COLOR_WHITE+DMCOMMAND11i+COLOR_LT_GREEN+"dm_vfx 209 2 0"+COLOR_END+COLOR_WHITE+DMCOMMAND11j+COLOR_LT_GREEN+"dm_fx_list_*"+COLOR_END+COLOR_WHITE+DMCOMMAND11k+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_fx_list_* "+COLOR_END+COLOR_WHITE+DMCOMMAND12+COLOR_LT_PURPLE+"dur, bea, eye, imp, com, fnf"+COLOR_END+COLOR_WHITE+DMCOMMAND12b+COLOR_LT_PURPLE+"dm_fx_list_fnf"+COLOR_END+COLOR_WHITE+DMCOMMAND12c+COLOR_LT_PURPLE+"dm_fx_list_dur"+COLOR_END+COLOR_WHITE+DMCOMMAND12d+COLOR_LT_PURPLE+"dm_fx_list_bea"+COLOR_END+COLOR_WHITE+DMCOMMAND12e+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fx_loc "+COLOR_END+COLOR_WHITE+DMCOMMAND13+COLOR_LT_GREEN+"dm_fx"+COLOR_END+COLOR_WHITE+DMCOMMAND13b+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_fx_rem "+COLOR_END+COLOR_WHITE+DMCOMMAND14+COLOR_LT_GREEN+"dm_fx command."+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_getbanlist "+COLOR_END+COLOR_WHITE+DMCOMMAND15+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_getbanreason "+COLOR_END+COLOR_WHITE+DMCOMMAND16+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_givexp "+COLOR_END+COLOR_WHITE+DMCOMMAND16_1+COLOR_LT_GREEN+"dm_givexp ("+DMCOMMAND16_1b+")"+COLOR_END+COLOR_WHITE+DMCOMMAND16_1c+COLOR_LT_GREEN+"dm_givexp 500"+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_givelevel "+COLOR_END+COLOR_WHITE+DMCOMMAND16_2+COLOR_LT_GREEN+"dm_givelevel ("+DMCOMMAND16_2b+")"+COLOR_END+COLOR_WHITE+DMCOMMAND16_2c+COLOR_LT_GREEN+"dm_givelevel 2"+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_takexp "+COLOR_END+COLOR_WHITE+DMCOMMAND16_3+COLOR_LT_GREEN+"dm_takexp ("+DMCOMMAND16_3b+")"+COLOR_END+COLOR_WHITE+DMCOMMAND16_3c+COLOR_LT_GREEN+"dm_takexp 500"+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_takelevel "+COLOR_END+COLOR_WHITE+DMCOMMAND16_4+COLOR_LT_GREEN+"dm_takelevel ("+DMCOMMAND16_4b+")"+COLOR_END+COLOR_WHITE+DMCOMMAND16_4c+COLOR_LT_GREEN+"dm_takelevel 2"+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_givepartyxp "+COLOR_END+COLOR_WHITE+DMCOMMAND65+COLOR_LT_GREEN+"dm_givepartyxp "+DMCOMMAND69+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_givepartylevel "+COLOR_END+COLOR_WHITE+DMCOMMAND66+COLOR_LT_GREEN+"dm_givepartylevel "+DMCOMMAND70+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_takepartyxp "+COLOR_END+COLOR_WHITE+DMCOMMAND67+COLOR_LT_GREEN+"dm_takepartyxp "+DMCOMMAND71+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_takepartylevel "+COLOR_END+COLOR_WHITE+DMCOMMAND68+COLOR_LT_GREEN+"dm_takepartylevel "+DMCOMMAND72+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; if ((DM_PLAYERS_HEAR_DM && VerifyDMKey(oPlayer) && (!GetIsDM(oPlayer))) || (ADMIN_PLAYERS_HEAR_DM && VerifyAdminKey(oPlayer) && (!GetIsDM(oPlayer)))) sMessage += COLOR_PURPLE+"dm_ignoredm "+COLOR_END+COLOR_WHITE+DMCOMMAND17+COLOR_END+NEWLINE; if ((DMS_HEAR_META && VerifyDMKey(oPlayer) && GetIsDM(oPlayer)) || (DM_PLAYERS_HEAR_META && VerifyDMKey(oPlayer) && (!GetIsDM(oPlayer))) || (ADMIN_DMS_HEAR_META && VerifyAdminKey(oPlayer) && GetIsDM(oPlayer)) || (ADMIN_PLAYERS_HEAR_META && VerifyAdminKey(oPlayer) && (!GetIsDM(oPlayer)))) sMessage += COLOR_PURPLE+"dm_ignoremeta "+COLOR_END+COLOR_WHITE+DMCOMMAND18+COLOR_END+NEWLINE; if ((DMS_HEAR_TELLS && VerifyDMKey(oPlayer) && GetIsDM(oPlayer)) || (DM_PLAYERS_HEAR_TELLS && VerifyDMKey(oPlayer) && (!GetIsDM(oPlayer))) || (ADMIN_DMS_HEAR_TELLS && VerifyAdminKey(oPlayer) && GetIsDM(oPlayer)) || (ADMIN_PLAYERS_HEAR_TELLS && VerifyAdminKey(oPlayer) && (!GetIsDM(oPlayer)))) sMessage += COLOR_PURPLE+"dm_ignoretells "+COLOR_END+COLOR_WHITE+DMCOMMAND19+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_stealth "+COLOR_END+COLOR_WHITE+DMCOMMAND132+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_invis "+COLOR_END+COLOR_WHITE+DMCOMMAND20+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_invuln "+COLOR_END+COLOR_WHITE+DMCOMMAND21+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_item_id "+COLOR_END+COLOR_WHITE+DMCOMMAND73+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_item_destroy_all "+COLOR_END+COLOR_WHITE+DMCOMMAND74+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_item_destroy_equip "+COLOR_END+COLOR_WHITE+DMCOMMAND75+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_item_destroy_inv "+COLOR_END+COLOR_WHITE+DMCOMMAND76+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_help "+COLOR_END+COLOR_WHITE+DMCOMMAND78+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_kill "+COLOR_END+COLOR_WHITE+DMCOMMAND22+COLOR_END+NEWLINE; if (ENABLE_LANGUAGES) sMessage += COLOR_GREEN+"dm_learn "+COLOR_END+COLOR_WHITE+DMCOMMAND23+COLOR_END+COLOR_LT_GREEN+"dm_learn sylvan"+COLOR_END+COLOR_WHITE+DMCOMMAND23b+COLOR_END+COLOR_LT_PURPLE+"!list alllanguages"+COLOR_END+COLOR_WHITE+DMCOMMAND23c+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_listcommands "+COLOR_END+COLOR_WHITE+DMCOMMAND24+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_jump "+COLOR_END+COLOR_WHITE+DMCOMMAND86+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_porthere "+COLOR_END+COLOR_WHITE+DMCOMMAND25+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_porthell "+COLOR_END+COLOR_WHITE+DMCOMMAND26+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portjail "+COLOR_END+COLOR_WHITE+DMCOMMAND27+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portleader "+COLOR_END+COLOR_WHITE+DMCOMMAND28+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portthere "+COLOR_END+COLOR_WHITE+DMCOMMAND29+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_porttown "+COLOR_END+COLOR_WHITE+DMCOMMAND30+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portway "+COLOR_END+COLOR_WHITE+DMCOMMAND130+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portpartyhere "+COLOR_END+COLOR_WHITE+DMCOMMAND87+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portpartyhell "+COLOR_END+COLOR_WHITE+DMCOMMAND88+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portpartyjail "+COLOR_END+COLOR_WHITE+DMCOMMAND89+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portpartyleader "+COLOR_END+COLOR_WHITE+DMCOMMAND90+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portpartythere "+COLOR_END+COLOR_WHITE+DMCOMMAND91+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portpartytown "+COLOR_END+COLOR_WHITE+DMCOMMAND92+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_portpartyway "+COLOR_END+COLOR_WHITE+DMCOMMAND131+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_rez "+COLOR_END+COLOR_WHITE+DMCOMMAND31+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_reset_mod "+COLOR_END+COLOR_WHITE+DMCOMMAND32+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_rest "+COLOR_END+COLOR_WHITE+DMCOMMAND83+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_reveal "+COLOR_END+COLOR_WHITE+DMCOMMAND84+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_hide "+COLOR_END+COLOR_WHITE+DMCOMMAND85+COLOR_END+NEWLINE; if ((!LETO_FOR_ADMINS_ONLY) || VerifyAdminKey(oPlayer)) { sMessage += COLOR_GREEN+"dm_setcha "+COLOR_END+COLOR_WHITE+DMCOMMAND95+COLOR_END+COLOR_LT_GREEN+"dm_setcha "+COLOR_END+COLOR_WHITE+COMMAND38+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setcon "+COLOR_END+COLOR_WHITE+DMCOMMAND96+COLOR_END+COLOR_LT_GREEN+"dm_setcon "+COLOR_END+COLOR_WHITE+COMMAND38+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setdex "+COLOR_END+COLOR_WHITE+DMCOMMAND97+COLOR_END+COLOR_LT_GREEN+"dm_setcha "+COLOR_END+COLOR_WHITE+COMMAND38+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setint "+COLOR_END+COLOR_WHITE+DMCOMMAND98+COLOR_END+COLOR_LT_GREEN+"dm_setint "+COLOR_END+COLOR_WHITE+COMMAND38+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setstr "+COLOR_END+COLOR_WHITE+DMCOMMAND99+COLOR_END+COLOR_LT_GREEN+"dm_setstr "+COLOR_END+COLOR_WHITE+COMMAND38+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setwis "+COLOR_END+COLOR_WHITE+DMCOMMAND100+COLOR_END+COLOR_LT_GREEN+"dm_setwis "+COLOR_END+COLOR_WHITE+COMMAND38+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setfort "+COLOR_END+COLOR_WHITE+DMCOMMAND101+COLOR_END+COLOR_LT_GREEN+"dm_setfort "+DMCOMMAND94+COLOR_END+COLOR_WHITE+COMMAND38+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setreflex "+COLOR_END+COLOR_WHITE+DMCOMMAND102+COLOR_END+COLOR_LT_GREEN+"dm_setreflex "+DMCOMMAND94+COLOR_END+COLOR_WHITE+COMMAND38+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setwill "+COLOR_END+COLOR_WHITE+DMCOMMAND103+COLOR_END+COLOR_LT_GREEN+"dm_setwill "+DMCOMMAND94+COLOR_END+COLOR_WHITE+COMMAND38+COLOR_END+NEWLINE; } sMessage += COLOR_PURPLE+"dm_settime "+COLOR_END+COLOR_WHITE+DMCOMMAND116+COLOR_END+COLOR_LT_PURPLE+"dm_settime "+DMCOMMAND125+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setvarint "+COLOR_END+COLOR_WHITE+DMCOMMAND109+DMCOMMAND111+DMCOMMAND114+COLOR_END+COLOR_LT_GREEN+"dm_setvarint "+DMCOMMAND104+DMCOMMAND105+COLOR_END+COLOR_WHITE+DMCOMMAND108+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setvarfloat "+COLOR_END+COLOR_WHITE+DMCOMMAND109+DMCOMMAND112+DMCOMMAND114+COLOR_END+COLOR_LT_GREEN+"dm_setvarfloat "+DMCOMMAND104+DMCOMMAND106+COLOR_END+COLOR_WHITE+DMCOMMAND108+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setvarstring "+COLOR_END+COLOR_WHITE+DMCOMMAND109+DMCOMMAND113+DMCOMMAND114+COLOR_END+COLOR_LT_GREEN+"dm_setvarstring "+DMCOMMAND104+DMCOMMAND107+COLOR_END+COLOR_WHITE+DMCOMMAND108+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_setvarmodint "+COLOR_END+COLOR_WHITE+DMCOMMAND109+DMCOMMAND111+DMCOMMAND115+COLOR_END+COLOR_LT_PURPLE+"dm_setvarmodint "+DMCOMMAND104+DMCOMMAND105+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_setvarmodfloat "+COLOR_END+COLOR_WHITE+DMCOMMAND109+DMCOMMAND112+DMCOMMAND115+COLOR_END+COLOR_LT_PURPLE+"dm_setvarmodfloat "+DMCOMMAND104+DMCOMMAND106+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_setvarmodstring "+COLOR_END+COLOR_WHITE+DMCOMMAND109+DMCOMMAND113+DMCOMMAND115+COLOR_END+COLOR_LT_PURPLE+"dm_setvarmodstring "+DMCOMMAND104+DMCOMMAND107+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_getvarint "+COLOR_END+COLOR_WHITE+DMCOMMAND110+DMCOMMAND111+DMCOMMAND114+COLOR_END+COLOR_LT_GREEN+"dm_getvarint "+DMCOMMAND104+COLOR_END+COLOR_WHITE+DMCOMMAND108+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_getvarfloat "+COLOR_END+COLOR_WHITE+DMCOMMAND110+DMCOMMAND112+DMCOMMAND114+COLOR_END+COLOR_LT_GREEN+"dm_getvarfloat "+DMCOMMAND104+COLOR_END+COLOR_WHITE+DMCOMMAND108+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_getvarstring "+COLOR_END+COLOR_WHITE+DMCOMMAND110+DMCOMMAND113+DMCOMMAND114+COLOR_END+COLOR_LT_GREEN+"dm_getvarstring "+DMCOMMAND104+COLOR_END+COLOR_WHITE+DMCOMMAND108+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_getvarmodint "+COLOR_END+COLOR_WHITE+DMCOMMAND110+DMCOMMAND111+DMCOMMAND115+COLOR_END+COLOR_LT_PURPLE+"dm_getvarmodint "+DMCOMMAND104+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_getvarmodfloat "+COLOR_END+COLOR_WHITE+DMCOMMAND110+DMCOMMAND112+DMCOMMAND115+COLOR_END+COLOR_LT_PURPLE+"dm_getvarmodfloat "+DMCOMMAND104+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_getvarmodstring "+COLOR_END+COLOR_WHITE+DMCOMMAND110+DMCOMMAND113+DMCOMMAND115+COLOR_END+COLOR_LT_PURPLE+"dm_getvarmodstring "+DMCOMMAND104+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setweather_a_clear "+COLOR_END+COLOR_WHITE+DMCOMMAND117+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setweather_a_rain "+COLOR_END+COLOR_WHITE+DMCOMMAND118+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setweather_a_reset "+COLOR_END+COLOR_WHITE+DMCOMMAND119+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_setweather_a_snow "+COLOR_END+COLOR_WHITE+DMCOMMAND120+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_setweather_m_clear "+COLOR_END+COLOR_WHITE+DMCOMMAND121+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_setweather_m_rain "+COLOR_END+COLOR_WHITE+DMCOMMAND122+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_setweather_m_reset "+COLOR_END+COLOR_WHITE+DMCOMMAND123+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_setweather_m_snow "+COLOR_END+COLOR_WHITE+DMCOMMAND124+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_spawn "+COLOR_END+COLOR_WHITE+DMCOMMAND126+COLOR_END+COLOR_LT_GREEN+"dm_spawn "+DMCOMMAND127+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; if (VerifyAdminKey(oPlayer)) sMessage += COLOR_PURPLE+"dm_sql "+COLOR_END+COLOR_WHITE+DMCOMMAND80+COLOR_END+COLOR_LT_PURPLE+"dm_sql"+DMCOMMAND81+COLOR_END+COLOR_WHITE+DMCOMMAND82+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_unbandm "+COLOR_END+COLOR_WHITE+DMCOMMAND33+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_unbanshout "+COLOR_END+COLOR_WHITE+DMCOMMAND34+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_unfreeze "+COLOR_END+COLOR_WHITE+DMCOMMAND35+COLOR_END+NEWLINE; if ((DM_PLAYERS_HEAR_DM && VerifyDMKey(oPlayer) && (!GetIsDM(oPlayer))) || (ADMIN_PLAYERS_HEAR_DM && VerifyAdminKey(oPlayer) && (!GetIsDM(oPlayer)))) sMessage += COLOR_PURPLE+"dm_unignoredm "+COLOR_END+COLOR_WHITE+DMCOMMAND36+COLOR_END+NEWLINE; if ((DMS_HEAR_META && VerifyDMKey(oPlayer) && GetIsDM(oPlayer)) || (DM_PLAYERS_HEAR_META && VerifyDMKey(oPlayer) && (!GetIsDM(oPlayer))) || (ADMIN_DMS_HEAR_META && VerifyAdminKey(oPlayer) && GetIsDM(oPlayer)) || (ADMIN_PLAYERS_HEAR_META && VerifyAdminKey(oPlayer) && (!GetIsDM(oPlayer)))) sMessage += COLOR_PURPLE+"dm_unignoremeta "+COLOR_END+COLOR_WHITE+DMCOMMAND37+COLOR_END+NEWLINE; if ((DMS_HEAR_TELLS && VerifyDMKey(oPlayer) && GetIsDM(oPlayer)) || (DM_PLAYERS_HEAR_TELLS && VerifyDMKey(oPlayer) && (!GetIsDM(oPlayer))) || (ADMIN_DMS_HEAR_TELLS && VerifyAdminKey(oPlayer) && GetIsDM(oPlayer)) || (ADMIN_PLAYERS_HEAR_TELLS && VerifyAdminKey(oPlayer) && (!GetIsDM(oPlayer)))) sMessage += COLOR_PURPLE+"dm_unignoretells "+COLOR_END+COLOR_WHITE+DMCOMMAND38+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+"dm_uninvis "+COLOR_END+COLOR_WHITE+DMCOMMAND39+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_uninvuln "+COLOR_END+COLOR_WHITE+DMCOMMAND40+COLOR_END+NEWLINE; if (ENABLE_LANGUAGES) sMessage += COLOR_GREEN+"dm_unlearn "+COLOR_END+COLOR_WHITE+DMCOMMAND41+COLOR_LT_GREEN+"dm_learn"+COLOR_END+COLOR_WHITE+": "+COLOR_LT_GREEN+"dm_unlearn sylvan"+COLOR_END+COLOR_WHITE+DMCOMMAND41b+COLOR_LT_PURPLE+"!list alllanguages"+COLOR_END+COLOR_WHITE+DMCOMMAND41c+COLOR_END+NEWLINE; sMessage += ""+COLOR_PURPLE+"/v "+COLOR_END+COLOR_WHITE+DMCOMMAND42+COLOR_END+NEWLINE; sMessage += COLOR_GREEN+"dm_vent "+COLOR_END+COLOR_WHITE+DMCOMMAND128+COLOR_END+COLOR_LT_PURPLE+"/v"+COLOR_END+COLOR_WHITE+DMCOMMAND129+COLOR_END+NEWLINE; SendMessageToPC(oPlayer, sMessage); } int GetSpeaksAToDRacialPlanarLanguages(object oPC) { if (GetLocalInt(oPC, "FKY_CHAT_LANG81")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG37")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG4")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG6")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG78")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG65")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG89")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG63")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG32")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG13")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG64")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG1")) return TRUE; return FALSE; } int GetSpeaksEToHRacialPlanarLanguages(object oPC) { if (GetLocalInt(oPC, "FKY_CHAT_LANG9")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG17")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG66")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG18")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG15")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG49")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG52")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG23")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG53")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG74")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG62")) return TRUE; return FALSE; } int GetSpeaksIToORacialPlanarLanguages(object oPC) { if (GetLocalInt(oPC, "FKY_CHAT_LANG21")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG61")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG72")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG79")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG67")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG54")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG55")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG99")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG60")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG57")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG82")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG56")) return TRUE; return FALSE; } int GetSpeaksPToZRacialPlanarLanguages(object oPC) { if (GetLocalInt(oPC, "FKY_CHAT_LANG70")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG58")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG68")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG73")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG59")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG75")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG36")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG40")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG51")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG41")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG50")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG46")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG69")) return TRUE; return FALSE; } int GetSpeaksAnyRacialPlanarLanguages(object oPC) { if (GetLocalInt(oPC, "FKY_CHAT_LANG81")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG37")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG4")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG6")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG78")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG65")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG89")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG63")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG32")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG13")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG64")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG1")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG9")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG17")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG66")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG18")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG15")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG49")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG52")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG23")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG53")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG74")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG62")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG21")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG61")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG72")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG79")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG67")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG54")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG55")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG99")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG60")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG57")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG82")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG56")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG70")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG58")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG68")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG73")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG59")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG75")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG36")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG40")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG51")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG41")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG50")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG46")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG69")) return TRUE; return FALSE; } int GetSpeaksAToHRegionalLanguages(object oPC) { if (GetLocalInt(oPC, "FKY_CHAT_LANG2")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG3")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG7")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG8")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG10")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG11")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG12")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG16")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG19")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG20")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG76")) return TRUE; return FALSE; } int GetSpeaksIToRRegionalLanguages(object oPC) { if (GetLocalInt(oPC, "FKY_CHAT_LANG22")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG24")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG25")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG26")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG27")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG28")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG29")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG30")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG31")) return TRUE; return FALSE; } int GetSpeaksSToZRegionalLanguages(object oPC) { if (GetLocalInt(oPC, "FKY_CHAT_LANG33")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG34")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG35")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG38")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG39")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG42")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG43")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG45")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG47")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG48")) return TRUE; return FALSE; } int GetSpeaksAnyRegionalLanguages(object oPC) { if (GetLocalInt(oPC, "FKY_CHAT_LANG2")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG3")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG7")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG8")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG10")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG11")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG12")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG16")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG19")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG20")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG76")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG22")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG24")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG25")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG26")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG27")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG28")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG29")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG30")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG31")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG33")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG34")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG35")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG38")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG39")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG42")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG43")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG45")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG47")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG48")) return TRUE; return FALSE; } int GetSpeaksAnyClassLanguages(object oPC) { if (GetLocalInt(oPC, "FKY_CHAT_LANG5")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG14")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG71")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG80")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG77")) return TRUE; if (GetLocalInt(oPC, "FKY_CHAT_LANG44")) return TRUE; return FALSE; } int GetLanguageNumber(string sName) { int nText = FindSubString(" dwarven elven gnomish halfling drow animal cant goblin orcish draconic infernal abyssal celestial leetspeak common", sName); //1 9 15 23 32 37 44 49 56 63 72 81 89 99 109 if (nText == -1) { //second set of languages courtesy of Lanessar and the Myth Drannor PW nText = FindSubString("abc d g h ikl m n opr s t u v y", GetStringLeft(sName, 1)); switch (nText) //012 4 6 8 1012141618202224262830 { // 11 19 case 0: if (sName == "algarondan") nText = 2; else if (sName == "alzhedo") nText = 3; else if (sName == "aquan") nText = 4; else if (sName == "assassin") nText = 5; else if (sName == "auran") nText = 6; else if (sName == "averial") nText = 78; else nText = -1; break; case 1: if (sName == "bugbear") nText = 75; else nText = -1; break; case 2: if (sName == "chessentan") nText = 7; else if (sName == "chondathan") nText = 8; else if (sName == "chultan") nText = 10; else nText = -1; break; case 4: if (sName == "damaran") nText = 11; else if (sName == "dambrathan") nText = 12; else if (sName == "drowsign") nText = 13; else if (sName == "druidic") nText = 14; else if (sName == "duergar") nText = 64; else if (sName == "durpari") nText = 16; else nText = -1; break; case 6: if (sName == "giant") nText = 17; else if (sName == "githzerai") nText = 66; else if (sName == "gnoll") nText = 18; else if (sName == "grimlock") nText = 52; else nText = -1; break; case 8: if (sName == "halardrim") nText = 19; else if (sName == "halruaan") nText = 20; else if (sName == "half-orc") nText = 53; else if (sName == "hengeyokai") nText = 74; else if (sName == "highshou") nText = 76; else if (sName == "hobgoblin") nText = 62; else nText = -1; break; case 10: if (sName == "ignan") nText = 21; if (sName == "illithid") nText = 61; else if (sName == "illuskan") nText = 22; else if (sName == "imaskar") nText = 24; else nText = -1; break; case 11: if (sName == "kenderspeak") nText = 55; else if (sName == "kobold") nText = 79; else if (sName == "korred") nText = 67; else if (sName == "kuo-toan") nText = 54; else nText = -1; break; case 12: if (sName == "lantanese") nText = 25; else if (sName == "lizardman") nText = 60; else nText = -1; break; case 14: if (sName == "magic") nText = 71; else if (sName == "midani") nText = 26; else if (sName == "minotaur") nText = 57; else if (sName == "mulhorandi") nText = 27; else nText = -1; break; case 16: if (sName == "nexalan") nText = 28; else if (sName == "necromantic") nText = 80; else nText = -1; break; case 18: if (sName == "oillusk") nText = 29; else if (sName == "ogre") nText = 82; else nText = -1; break; case 19: if (sName == "pixie") nText = 70; else if (sName == "psionic") nText = 77; else nText = -1; break; case 20: if (sName == "rakshasa") nText = 58; else if (sName == "rashemi") nText = 30; else if (sName == "raumvira") nText = 31; else nText = -1; break; case 22: if (sName == "sahaguin") nText = 68; else if (sName == "serusan") nText = 33; else if (sName == "shaaran") nText = 34; else if (sName == "sirensong") nText = 73; else if (sName == "shou") nText = 35; else if (sName == "stinger") nText = 59; else if (sName == "svirfneblin") nText = 75; else if (sName == "sylvan") nText = 36; else nText = -1; break; case 24: if (sName == "talfiric") nText = 38; else if (sName == "tashalan") nText = 39; else if (sName == "terran") nText = 40; else if (sName == "thri-kreen") nText = 51; else if (sName == "treant") nText = 41; else if (sName == "troll") nText = 50; else if (sName == "tuigan") nText = 42; else if (sName == "turmic") nText = 43; else nText = -1; break; case 26: if (sName == "uluik") nText = 45; else if (sName == "undercommon") nText = 46; else if (sName == "untheric") nText = 47; else nText = -1; break; case 28: if (sName == "vaasan") nText = 48; else nText = -1; case 30: if (sName == "yuan-ti") nText = 69; else nText = -1; break; } } return nText; } string GetNameOfLanguage(int nLang) { string sReturn = ""; switch(nLang/10) { case 0: switch(nLang) { case 0: sReturn = "Common"; break; case 1: sReturn = "Dwarven"; break; case 2: sReturn = "Algarondan"; break; case 3: sReturn = "Alzhedo"; break; case 4: sReturn = "Aquan"; break; case 5: sReturn = "Assassin"; break; case 6: sReturn = "Auran"; break; case 7: sReturn = "Chessentan"; break; case 8: sReturn = "Chondathan"; break; case 9: sReturn = "Elven"; break; } break; case 1: switch(nLang) { case 10: sReturn = "Chultan"; break; case 11: sReturn = "Damaran"; break; case 12: sReturn = "Dambrathan"; break; case 13: sReturn = "DrowSign"; break; case 14: sReturn = "Druidic"; break; case 15: sReturn = "Gnomish"; break; case 16: sReturn = "Durpari"; break; case 17: sReturn = "Giant"; break; case 18: sReturn = "Gnoll"; break; case 19: sReturn = "Halardrim"; break; } break; case 2: switch(nLang) { case 20: sReturn = "Halruaan"; break; case 21: sReturn = "Ignan"; break; case 22: sReturn = "Illuskan"; break; case 23: sReturn = "Halfling"; break; case 24: sReturn = "Imaskar"; break; case 25: sReturn = "Lantanese"; break; case 26: sReturn = "Midani"; break; case 27: sReturn = "Mulhorandi"; break; case 28: sReturn = "Nexalan"; break; case 29: sReturn = "Oillusk"; break; } break; case 3: switch(nLang) { case 30: sReturn = "Rashemi"; break; case 31: sReturn = "Raumvira"; break; case 32: sReturn = "Drow"; break; case 33: sReturn = "Serusan"; break; case 34: sReturn = "Shaaran"; break; case 35: sReturn = "Shou"; break; case 36: sReturn = "Sylvan"; break; case 37: sReturn = "Animal"; break; case 38: sReturn = "Talfiric"; break; case 39: sReturn = "Tashalan"; break; } break; case 4: switch(nLang) { case 40: sReturn = "Terran"; break; case 41: sReturn = "Treant"; break; case 42: sReturn = "Tuigan"; break; case 43: sReturn = "Turmic"; break; case 44: sReturn = "Cant"; break; case 45: sReturn = "Uluik"; break; case 46: sReturn = "Undercommon"; break; case 47: sReturn = "Untheric"; break; case 48: sReturn = "Vaasan"; break; case 49: sReturn = "Goblin"; break; } break; case 5: switch(nLang) { case 50: sReturn = "Troll"; break; case 51: sReturn = "Thri-kreen"; break; case 52: sReturn = "Grimlock"; break; case 53: sReturn = "Half-Orc"; break; case 54: sReturn = "Kuo-Toan"; break; case 55: sReturn = "Kenderspeak"; break; case 56: sReturn = "Orcish"; break; case 57: sReturn = "Minotaur"; break; case 58: sReturn = "Rakshasa"; break; case 59: sReturn = "Stinger"; break; } break; case 6: switch(nLang) { case 60: sReturn = "Lizardman"; break; case 61: sReturn = "Illithid"; break; case 62: sReturn = "Hobgoblin"; break; case 63: sReturn = "Draconic"; break; case 64: sReturn = "Duergar"; break; case 65: sReturn = "Bugbear"; break; case 66: sReturn = "Githzerai"; break; case 67: sReturn = "Korred"; break; case 68: sReturn = "Sahaguin"; break; case 69: sReturn = "Yuan-ti"; break; } break; case 7: switch(nLang) { case 70: sReturn = "Pixie"; break; case 71: sReturn = "Magic"; break; case 72: sReturn = "Infernal"; break; case 73: sReturn = "Sirensong"; break; case 74: sReturn = "Hengeyokai"; break; case 75: sReturn = "Svirfneblin"; break; case 76: sReturn = "HighShou"; break; case 77: sReturn = "Psionic"; break; case 78: sReturn = "Averial"; break; case 79: sReturn = "Kobold"; break; } break; case 8: switch(nLang) { case 80: sReturn = "Necromantic"; break; case 81: sReturn = "Abyssal"; break; case 82: sReturn = "Ogre"; break; case 89: sReturn = "Celestial"; break; } break; case 9: switch(nLang) { case 99: sReturn = "Leetspeak"; break; } break; case 10: switch(nLang) { case 109: sReturn = "Common"; break; } } return sReturn; } void ListLanguages(object oPC) { int nX; string sIntro = COLOR_WHITE+LANGLIST1+COLOR_PURPLE+"/l "+COLOR_END+COLOR_WHITE+LANGLIST2+COLOR_PURPLE+COMMAND_SYMBOL+"speak "+COLOR_END+COLOR_WHITE+LANGLIST3+COLOR_PURPLE+COMMAND_SYMBOL+"speak common"+COLOR_END+COLOR_WHITE+"."+COLOR_END+NEWLINE; string sMessage = ""; for(nX = 0; nX < 100; nX++) { if (GetLocalInt(oPC, "FKY_CHAT_LANG" + IntToString(nX))) { sMessage += COLOR_PURPLE + GetStringLowerCase(GetNameOfLanguage(nX)) + COLOR_END+NEWLINE; } } if (sMessage == "") { sIntro += COLOR_WHITE+LANGLIST4+COLOR_END+NEWLINE; } else { sIntro += COLOR_WHITE+LANGLIST5+COLOR_END+NEWLINE; sMessage += COLOR_WHITE+LANGLIST6+COLOR_END+COLOR_PURPLE + COMMAND_SYMBOL + "speak common"+COLOR_END+COLOR_WHITE+LANGLIST7+COLOR_END+NEWLINE; } string sFinal = sIntro + sMessage; SendMessageToPC(oPC, sFinal); } void ListAllLanguages(object oPC) { int nX; string sIntro = COLOR_WHITE+LANGLIST8+COLOR_END+NEWLINE; string sMessage; for(nX = 0; nX < 100; nX++) { sMessage = GetNameOfLanguage(nX); if (sMessage != "") { sIntro += COLOR_PURPLE + GetStringLowerCase(sMessage) + COLOR_END+NEWLINE; } } SendMessageToPC(oPC, sIntro); } void ListIgnored(object oPlayer) { string sPlayername; string sMessage = ""; object oPC = GetFirstPC(); while (GetIsObjectValid(oPC)) { sPlayername = GetPCPlayerName(oPC); if (GetLocalInt(oPlayer, "CHT_IGNORE" + sPlayername) == TRUE) { sMessage += COLOR_RED+IGNORE1+sPlayername+"."+COLOR_END+NEWLINE; } oPC = GetNextPC(); } if (sMessage != "") SendMessageToPC(oPlayer, sMessage); else SendMessageToPC(oPlayer, COLOR_RED+IGNORE2+COLOR_END); } int GetIsSpam(string sText) { if(TestStringAgainstPattern("**http:**|**www.**|**.*a.**|*n.*n.*n.*n", sText)) return TRUE; return FALSE; } int GetIsChannelSuppressed(int nChannel) { int nReturn; switch(nChannel) { case 1: nReturn = DISABLE_TALK_CHANNEL; break; case 2: nReturn = DISABLE_SHOUT_CHANNEL; break; case 3: nReturn = DISABLE_WHISPER_CHANNEL; break; case 4: nReturn = DISABLE_TELL_CHANNEL; break; case 6: nReturn = DISABLE_PARTY_CHANNEL; break; case 14: nReturn = DISABLE_DM_CHANNEL; break; default: nReturn = FALSE; break; } return nReturn; } int GetIsChannelDeadSuppressed(int nChannel) { int nReturn; switch(nChannel) { case 1: nReturn = DISABLE_DEAD_TALK; break; case 2: nReturn = DISABLE_DEAD_SHOUT; break; case 3: nReturn = DISABLE_DEAD_WHISPER; break; case 4: nReturn = DISABLE_DEAD_TELL; break; case 6: nReturn = DISABLE_DEAD_PARTY; break; case 14: nReturn = DISABLE_DEAD_DM; break; default: nReturn = FALSE; break; } return nReturn; } int GetIsChannelSilencedSuppressed(int nChannel) { int nReturn; switch(nChannel) { case 1: nReturn = DISABLE_SILENCED_TALK; break; case 2: nReturn = DISABLE_SILENCED_SHOUT; break; case 3: nReturn = DISABLE_SILENCED_WHISPER; break; case 4: nReturn = DISABLE_SILENCED_TELL; break; case 6: nReturn = DISABLE_SILENCED_PARTY; break; case 14: nReturn = DISABLE_SILENCED_DM; break; default: nReturn = FALSE; break; } return nReturn; } int GetIsSilenced(object oPC) { effect eEffect = GetFirstEffect(oPC); while (GetIsEffectValid(eEffect)) { if (GetEffectType(eEffect) == EFFECT_TYPE_SILENCE) return TRUE; eEffect = GetNextEffect(oPC); } return FALSE; } void SendMessageToPCDMs(string sMessage) { object oPC = GetFirstPC(); while (GetIsObjectValid(oPC)) {//check to see if they've chosen to ignore if (VerifyDMKey(oPC) && (!GetIsDM(oPC)) && (!GetLocalInt(oPC, "FKY_CHT_IGNORETELLS"))) { if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oPC, sMessage, GetMessenger()); else SendMessageToPC(oPC, sMessage); } oPC = GetNextPC(); } } void SendMessageToPCAdmins(string sMessage) { object oPC = GetFirstPC(); while (GetIsObjectValid(oPC)) {//check to see if they've chosen to ignore if (VerifyAdminKey(oPC) && (!GetIsDM(oPC)) && (!GetLocalInt(oPC, "FKY_CHT_IGNORETELLS"))) { if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oPC, sMessage, GetMessenger()); else SendMessageToPC(oPC, sMessage); } oPC = GetNextPC(); } } void SendMessageToDMDMs(string sMessage) { object oPC = GetFirstPC(); while (GetIsObjectValid(oPC)) {//check to see if they've chosen to ignore if (VerifyDMKey(oPC) && GetIsDM(oPC) && (!GetLocalInt(oPC, "FKY_CHT_IGNORETELLS"))) { if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oPC, sMessage, GetMessenger()); else SendMessageToPC(oPC, sMessage); } oPC = GetNextPC(); } } void SendMessageToDMAdmins(string sMessage) { object oPC = GetFirstPC(); while (GetIsObjectValid(oPC)) {//check to see if they've chosen to ignore if (VerifyAdminKey(oPC) && GetIsDM(oPC) && (!GetLocalInt(oPC, "FKY_CHT_IGNORETELLS"))) { if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oPC, sMessage, GetMessenger()); else SendMessageToPC(oPC, sMessage); } oPC = GetNextPC(); } } void GetBanList(object oPlayer) { string sString = ""; string sList = ""; object oPC = GetFirstPC(); while (GetIsObjectValid(oPC)) { if (GetLocalInt(oPC, "FKY_CHT_BANSHOUT") == TRUE) { sString = COLOR_RED+GetName(oPC)+BAN1+COLOR_END+NEWLINE; sList += sString; } if (GetLocalInt(oPC, "FKY_CHT_BANDM") == TRUE) { sString = COLOR_RED+GetName(oPC)+BAN2+COLOR_END+NEWLINE; sList += sString; } oPC = GetNextPC(); } if (sList != "") SendMessageToPC(oPlayer, sList); else SendMessageToPC(oPlayer, COLOR_RED+BAN3+COLOR_END); } void DMTellForwarding(object oPlayer, string sTarget, string sMessage, int nChannel) { string sSend = COLOR_PURPLE + GetName(oPlayer) + "(" + GetPCPlayerName(oPlayer) + ")" + sTarget + COLOR_END+COLOR_GREEN+"["+TELL+"] " + sMessage + COLOR_END+NEWLINE; if ((nChannel == 4) || (ENABLE_DM_TELL_ROUTING && (nChannel == 20))) { if (DMS_HEAR_TELLS) SendMessageToDMDMs(sSend); if (DM_PLAYERS_HEAR_TELLS) SendMessageToPCDMs(sSend); if (ADMIN_DMS_HEAR_TELLS) SendMessageToDMAdmins(sSend); if (ADMIN_PLAYERS_HEAR_TELLS) SendMessageToPCAdmins(sSend); } else if ((nChannel == 20) && DM_TELLS_ROUTED_ONLY_TO_ADMINS) { if (ADMIN_DMS_HEAR_TELLS) SendMessageToDMAdmins(sSend); if (ADMIN_PLAYERS_HEAR_TELLS) SendMessageToPCAdmins(sSend); } } void DMChannelForwardToDMs(object oPlayer, string sMessage) { string sSend = COLOR_PURPLE + GetName(oPlayer) + "(" + GetPCPlayerName(oPlayer) + ")" + ": "+COLOR_END+COLOR_LT_BLUE+"["+DM+"] " + sMessage + COLOR_END+NEWLINE; object oPC = GetFirstPC(); while (GetIsObjectValid(oPC)) { if (VerifyDMKey(oPC) && (!GetIsDM(oPC)) && (!GetLocalInt(oPC, "FKY_CHT_IGNOREDM"))) { if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oPC, sSend, GetMessenger()); else SendMessageToPC(oPC, sSend); } oPC = GetNextPC(); } } void DMChannelForwardToAdmins(object oPlayer, string sMessage) { string sSend = COLOR_PURPLE + GetName(oPlayer) + "(" + GetPCPlayerName(oPlayer) + ")" + ":"+COLOR_END+COLOR_LT_BLUE+"[DM] " + sMessage + COLOR_END+NEWLINE; object oPC = GetFirstPC(); while (GetIsObjectValid(oPC)) { if (VerifyAdminKey(oPC) && (!GetIsDM(oPC)) && (!GetLocalInt(oPC, "FKY_CHT_IGNOREDM"))) { if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oPC, sSend, GetMessenger()); else SendMessageToPC(oPC, sSend); } oPC = GetNextPC(); } } void DoDMInvis(object oPlayer) { effect eEffect = EffectCutsceneGhost(); effect eEffect2 = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY); effect eLink = SupernaturalEffect(EffectLinkEffects(eEffect, eEffect2)); ApplyEffectToObject(2, eLink, oPlayer); } void DoDMUninvis(object oPlayer) { effect eEffect = GetFirstEffect(oPlayer); while (GetIsEffectValid(eEffect)) { if (GetEffectCreator(eEffect) == GetModule()) DelayCommand(0.1, RemoveEffect(oPlayer, eEffect)); eEffect = GetNextEffect(oPlayer); } } void ShowInfo(object oPlayer, object oGetInfoFrom) { //collect info string sName = GetName(oGetInfoFrom); string sPlayername = GetPCPlayerName(oGetInfoFrom); string sKey = GetPCPublicCDKey(oGetInfoFrom); string sIP = GetPCIPAddress(oGetInfoFrom); int nClass1 = GetClassByPosition(1, oGetInfoFrom); int nClass2 = GetClassByPosition(2, oGetInfoFrom); int nClass3 = GetClassByPosition(3, oGetInfoFrom); int nClassLevel1 = GetLevelByClass(nClass1, oGetInfoFrom); int nClassLevel2 = GetLevelByClass(nClass2, oGetInfoFrom); int nClassLevel3 = GetLevelByClass(nClass3, oGetInfoFrom); int nControlClass = nClass1; if ((nClassLevel1 > nClassLevel2) && (nClassLevel1 > nClassLevel3)) nControlClass = nClass1; else if ((nClassLevel2 > nClassLevel1) && (nClassLevel2 > nClassLevel3)) nControlClass = nClass2; else if ((nClassLevel3 > nClassLevel1) && (nClassLevel3 > nClassLevel2)) nControlClass = nClass3; else if (nClassLevel1 == nClassLevel2) nControlClass = nClass1; else if (nClassLevel1 == nClassLevel3) nControlClass = nClass1; else if (nClassLevel2 == nClassLevel3) nControlClass = nClass2; int nLevel = GetHitDice(oGetInfoFrom); int nLL = GetNumberOfLegendaryLevels(oGetInfoFrom); int nTotal = nLevel + nLL; string sClasses = COLOR_LT_BLUE2+GetClassName(nClass1)+COLOR_END+COLOR_WHITE+": "+IntToString(nClassLevel1)+COLOR_END; if (nClass2 != CLASS_TYPE_INVALID) sClasses += COLOR_WHITE+", "+COLOR_END+COLOR_LT_BLUE2+GetClassName(nClass2)+COLOR_END+COLOR_WHITE+": "+IntToString(nClassLevel2)+COLOR_END; if (nClass3 != CLASS_TYPE_INVALID) sClasses += COLOR_WHITE+", "+COLOR_END+COLOR_LT_BLUE2+GetClassName(nClass3)+COLOR_END+COLOR_WHITE+": "+IntToString(nClassLevel3)+COLOR_END; if (nLL) sClasses += COLOR_WHITE+", "+COLOR_END+COLOR_LT_BLUE2+LEGLEVEL+COLOR_END+COLOR_LT_BLUE+"["+GetClassName(nControlClass)+"]"+COLOR_END+COLOR_WHITE+": "+IntToString(nLL)+COLOR_END; if ((nClass2 != CLASS_TYPE_INVALID) || (nLL)) sClasses += COLOR_WHITE+", "+COLOR_END+COLOR_BLUE+NFOHD+COLOR_END+COLOR_WHITE+": "+IntToString(nTotal)+COLOR_END; string sDeity = GetDeity(oGetInfoFrom); if (sDeity == "") sDeity = NONE; int nGold = GetGold(oGetInfoFrom); int nGoldTotal, nValue, nX; object oItem = GetFirstItemInInventory(oGetInfoFrom); while (GetIsObjectValid(oItem)) { nValue = GetGoldPieceValue(oItem); nGoldTotal += nValue; oItem = GetNextItemInInventory(oGetInfoFrom); } for (nX = 0; nX < 14; nX++) { oItem = GetItemInSlot(nX, oGetInfoFrom); nValue = GetGoldPieceValue(oItem); nGoldTotal += nValue; } nGoldTotal += nGold; string sSubrace = GetSubRace(oGetInfoFrom); if (sSubrace == "") sSubrace = NONE; int nXP = GetXP(oGetInfoFrom); int nNextXP = (( nLevel * ( nLevel + 1 )) / 2 * 1000 ); int nXPForNextLevel = nNextXP - nXP; if (nLevel == 40) nXPForNextLevel = 0; string sArea = GetName(GetArea(oGetInfoFrom)); string sFactionMembers = ""; object oLeader = GetFactionLeader(oGetInfoFrom); object oMember = GetFirstFactionMember(oGetInfoFrom); while (GetIsObjectValid(oMember)) { if (oMember == oLeader) sFactionMembers = COLOR_WHITE+GetName(oMember)+COLOR_END+COLOR_BLUE+" ["+LFG1+IntToString(GetNumberOfLegendaryLevels(oMember) + GetHitDice(oMember))+"] "+COLOR_END+COLOR_ORANGE+LEADER+COLOR_END+NEWLINE+sFactionMembers; else sFactionMembers = sFactionMembers+COLOR_WHITE+GetName(oMember)+COLOR_END+COLOR_BLUE+" ["+LFG1+IntToString(GetNumberOfLegendaryLevels(oMember) + GetHitDice(oMember))+"] "+COLOR_END+NEWLINE; oMember = GetNextFactionMember(oGetInfoFrom); } //combine string sMessage = COLOR_PURPLE+NFOHEADER+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+NFO1+COLOR_END+COLOR_WHITE+sName+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+NFO2+COLOR_END+COLOR_WHITE+sPlayername+COLOR_END+NEWLINE; sMessage += COLOR_PURPLE+NFO3+COLOR_END+COLOR_WHITE+sKey+COLOR_END+NEWLINE; if (VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer) || (oPlayer == oGetInfoFrom)) sMessage += COLOR_PURPLE+NFO4+COLOR_END+COLOR_WHITE+sIP+COLOR_END+NEWLINE; if (VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer) || (oPlayer == oGetInfoFrom) || (!GetLocalInt(oGetInfoFrom, "FKY_CHAT_ANON"))) sMessage += COLOR_PURPLE+NFO5+COLOR_END+sClasses+NEWLINE; if (VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer) || (oPlayer == oGetInfoFrom) || (!GetLocalInt(oGetInfoFrom, "FKY_CHAT_ANON"))) sMessage += COLOR_PURPLE+NFO6+COLOR_END+COLOR_YELLOW+IntToString(nXP)+COLOR_END+NEWLINE; if (VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer) || (oPlayer == oGetInfoFrom) || (!GetLocalInt(oGetInfoFrom, "FKY_CHAT_ANON"))) sMessage += COLOR_PURPLE+NFO7+COLOR_END+COLOR_RED+IntToString(nXPForNextLevel)+COLOR_END+NEWLINE; if (VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer) || (oPlayer == oGetInfoFrom) || (!GetLocalInt(oGetInfoFrom, "FKY_CHAT_ANON"))) sMessage += COLOR_PURPLE+NFO8+COLOR_END+COLOR_GREEN+sArea+COLOR_END+NEWLINE; if (VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer) || (oPlayer == oGetInfoFrom) || (!GetLocalInt(oGetInfoFrom, "FKY_CHAT_ANON"))) sMessage += COLOR_PURPLE+NFO9+COLOR_END+sFactionMembers; if (VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer) || (oPlayer == oGetInfoFrom)) sMessage += COLOR_PURPLE+NFO10+COLOR_END+COLOR_LT_BLUE+sDeity+COLOR_END+NEWLINE; if (VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer) || (oPlayer == oGetInfoFrom)) sMessage += COLOR_PURPLE+NFO11+COLOR_END+COLOR_LT_BLUE+sSubrace+COLOR_END+NEWLINE; if (VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer) || (oPlayer == oGetInfoFrom)) sMessage += COLOR_PURPLE+NFO12+COLOR_END+COLOR_GOLD+IntToString(nGold)+COLOR_END+NEWLINE; if (VerifyDMKey(oPlayer) || VerifyAdminKey(oPlayer) || (oPlayer == oGetInfoFrom)) sMessage += COLOR_PURPLE+NFO13+COLOR_END+COLOR_GOLD+IntToString(nGoldTotal)+COLOR_END+NEWLINE; SendMessageToPC(oPlayer, sMessage); } void GiveLevel(object oReceiver, object oDM, int nLevels, int nMessage = TRUE) { int nHD = GetHitDice(oReceiver); if (nHD < 40) { int nTargetLevel = nHD+nLevels; if (nTargetLevel > 40) nTargetLevel = 40; int nTargetXP = (( nTargetLevel * ( nTargetLevel - 1 )) / 2 * 1000 ); SetXP(oReceiver, nTargetXP); string sLevel = XP4; if (nLevels == 1) sLevel = XP5; if (nMessage) SendMessageToPC(oDM, COLOR_RED+XP6+IntToString(nLevels)+sLevel+XP7+GetName(oReceiver) + "."+COLOR_END); } else if (nMessage) SendMessageToPC(oDM, COLOR_RED+GetName(oReceiver)+XP3+COLOR_END); } void TakeLevel(object oLoser, object oDM, int nLevels, int nMessage = TRUE) { int nHD = GetHitDice(oLoser); int nTargetLevel = nHD-nLevels; if (nTargetLevel < 1) nTargetLevel = 1; int nTargetXP = (( nTargetLevel * ( nTargetLevel - 1 )) / 2 * 1000 ); SetXP(oLoser, nTargetXP); string sLevel = XP4; if (nLevels == 1) sLevel = XP5; if (nMessage) SendMessageToPC(oDM, COLOR_RED+XP8+IntToString(nLevels)+sLevel+XP10+GetName(oLoser) + "."+COLOR_END); } string GetColorStringForColumn(int nNum) { string sReturn; switch(nNum) { case 1: sReturn = COLOR_RED; break; case 2: sReturn = COLOR_ORANGE; break; case 3: sReturn = COLOR_YELLOW; break; case 4: sReturn = COLOR_GREEN; break; case 5: sReturn = COLOR_BLUE; break; case 6: sReturn = COLOR_PURPLE; break; } return sReturn; } location VerifyLocation(object oPC, string sVLNormalCase) { location lReturn = GetLocalLocation(oPC, "FKY_CHAT_LOCATION"); //have they already used the targeter? if (!GetIsObjectValid(GetAreaFromLocation(lReturn))) { FloatingTextStringOnCreature(COLOR_GOLD+REQUIRES_TARGET+COLOR_END, oPC, FALSE);//tell them SetLocalString(oPC, "FKY_CHAT_COMMAND", LOCATION_TARGET+"dm_" + sVLNormalCase);//mark them for the targeter if (!GetIsObjectValid(GetItemPossessedBy(oPC, "fky_chat_target"))) CreateItemOnObject("fky_chat_target", oPC);//give them a targeter if they need one } //else DeleteLocalLocation(oPC, "FKY_CHAT_LOCATION");//variable cleanup - done in individual commands return lReturn; } //return the target object, if invaild a validity check will return out of the chat script object VerifyTarget(object oTarget, object oPC, string sVTNormalCase, string sCommandType = OBJECT_TARGET, int nPCOnly = TRUE, int nCreatureOnly = TRUE)//defaults to OBJECT_TARGET for object - no area object allowed; other option is AREA_TARGET_OK for area object allowed { object oReturn = oTarget; if (!GetIsObjectValid(oReturn))//target verification - do they need to use the command targeter? { oReturn = GetLocalObject(oPC, "FKY_CHAT_TARGET"); //have they already used the targeter? if (!GetIsObjectValid(oReturn)) { FloatingTextStringOnCreature(COLOR_GOLD+REQUIRES_TARGET+COLOR_END, oPC, FALSE);//tell them SetLocalString(oPC, "FKY_CHAT_COMMAND", sCommandType+"dm_" + sVTNormalCase);//mark them for the targeter if (!GetIsObjectValid(GetItemPossessedBy(oPC, "fky_chat_target"))) CreateItemOnObject("fky_chat_target", oPC);//give them a targeter if they need one return OBJECT_INVALID; } else DeleteLocalObject(oPC, "FKY_CHAT_TARGET");//variable cleanup } if (sCommandType == AREA_TARGET_OK)//failsafe check to ensure that if the command allows area targets it wiil ignore PCOnly and Creature only settings { nPCOnly = FALSE; nCreatureOnly = FALSE; } if (nPCOnly && (!GetIsPC(oReturn))) { FloatingTextStringOnCreature(COLOR_RED+PC_ONLY+COLOR_END, oPC, FALSE); return OBJECT_INVALID; } if (nCreatureOnly && (GetObjectType(oReturn) != OBJECT_TYPE_CREATURE)) { FloatingTextStringOnCreature(COLOR_RED+CREATURE_ONLY+COLOR_END, oPC, FALSE); return OBJECT_INVALID; } return oReturn; } void SendMetaNotice(string sChannelName, string sMessage) { string sText = COLOR_RED + sMessage + COLOR_END;//red object oPC = GetFirstPC(); while (GetIsObjectValid(oPC)) { if (GetLocalString(oPC, "FKY_CHT_META_GRP") == sChannelName) { if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oPC, sText, GetMessenger()); else SendMessageToPC(oPC, sText); } oPC = GetNextPC(); } } void SendMetaMessage(object oPlayer, string sChannelName, string sMessage) { string sText = COLOR_PURPLE + GetName(oPlayer) + "(" + GetPCPlayerName(oPlayer) + "):"+COLOR_END+COLOR_ORANGE+"["+CHAN1+"] " + sMessage + COLOR_END; string sDMText = sText + COLOR_RED+" ("+CHAN2+": " + sChannelName + ")"+COLOR_END; object oPC = GetFirstPC(); while (GetIsObjectValid(oPC)) { if (GetLocalString(oPC, "FKY_CHT_META_GRP") == sChannelName) { if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oPC, sText, GetMessenger()); else SendMessageToPC(oPC, sText); } if (DM_PLAYERS_HEAR_META) { if (VerifyDMKey(oPC) && (!GetIsDM(oPC)) && (GetLocalString(oPC, "FKY_CHT_META_GRP") != sChannelName) && (!GetLocalInt(oPC, "FKY_CHT_IGNOREMETA"))) { if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oPC, sDMText, GetMessenger()); else SendMessageToPC(oPC, sDMText); } } if (DMS_HEAR_META) { if (VerifyDMKey(oPC) && GetIsDM(oPC) && (GetLocalString(oPC, "FKY_CHT_META_GRP") != sChannelName) && (!GetLocalInt(oPC, "FKY_CHT_IGNOREMETA"))) { if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oPC, sDMText, GetMessenger()); else SendMessageToPC(oPC, sDMText); } } if (ADMIN_PLAYERS_HEAR_META) { if (VerifyAdminKey(oPC) && (!GetIsDM(oPC)) && (GetLocalString(oPC, "FKY_CHT_META_GRP") != sChannelName) && (!GetLocalInt(oPC, "FKY_CHT_IGNOREMETA"))) { if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oPC, sDMText, GetMessenger()); else SendMessageToPC(oPC, sDMText); } } if (ADMIN_DMS_HEAR_META) { if (VerifyAdminKey(oPC) && GetIsDM(oPC) && (GetLocalString(oPC, "FKY_CHT_META_GRP") != sChannelName) && (!GetLocalInt(oPC, "FKY_CHT_IGNOREMETA"))) { if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oPC, sDMText, GetMessenger()); else SendMessageToPC(oPC, sDMText); } } oPC = GetNextPC(); } } void DisbandMetaChannel(object oPlayer) { string sText = COLOR_RED + GetName(oPlayer) +METADBND+COLOR_END;//red string sChannelName = GetPCPlayerName(oPlayer); object oPC = GetFirstPC(); while (GetIsObjectValid(oPC)) { if (GetLocalString(oPC, "FKY_CHT_META_GRP") == sChannelName) { SendMessageToPC(oPC, sText);//tell them DeleteLocalString(oPC, "FKY_CHT_META_GRP");//remove them } oPC = GetNextPC(); } } void ListMetaMembers(object oPlayer) { string sText = COLOR_RED+METAMEMB+COLOR_END+NEWLINE;//red string sAdd; string sChannelName = GetLocalString(oPlayer, "FKY_CHT_META_GRP"); if (sChannelName != "") { object oPC = GetFirstPC(); while (GetIsObjectValid(oPC)) { if (GetLocalString(oPC, "FKY_CHT_META_GRP") == sChannelName) { sAdd = COLOR_RED + GetName(oPC) + "(" + GetPCPlayerName(oPC) + ")"+COLOR_END+NEWLINE; sText += sAdd; } oPC = GetNextPC(); } SendMessageToPC(oPlayer, sText); } else SendMessageToPC(oPlayer, COLOR_RED+METABAD+COLOR_END); } void CheckIfNewChannel(string sChannel) { object oPC = GetFirstPC(); while (GetIsObjectValid(oPC)) { if (GetPCPlayerName(oPC) == sChannel)//if the channel is named after them { if (GetLocalString(oPC, "FKY_CHT_META_GRP") == "")//and they are not in it { SetLocalString(oPC, "FKY_CHT_META_GRP", sChannel);//then its a new channel, add them to the channel } break; } oPC = GetNextPC(); } } void CommandRedirect(object oSpeaker, int nMenu, string sMessage = BADCOMMAND, string sColor = COLOR_RED) { if (sMessage != "") FloatingTextStringOnCreature(sColor+sMessage+COLOR_END, oSpeaker, FALSE); if (!USING_LINUX) return;//command redirect only works for Linux users string sMenu; switch (nMenu) { case -1: sMenu = "chat_com"; break; case 1: sMenu = "chat_com"; break; case 2: sMenu = "chat_com_char"; break; case 3: sMenu = "chat_com_dice"; break; case 4: sMenu = "chat_com_item"; break; case 5: sMenu = "chat_com_lang"; break; case 6: sMenu = "chat_com_list"; break; case 7: sMenu = "chat_com_meta"; break; case 8: sMenu = "chat_com_social"; break; case 9: sMenu = "chat_lang"; break; case 11: sMenu = "chat_dm"; break; case 12: sMenu = "chat_dm_play"; break; case 13: sMenu = "chat_dm_play_aaa"; break; case 14: sMenu = "chat_dm_play_ali"; break; case 15: sMenu = "chat_dm_play_ava"; break; case 16: sMenu = "chat_dm_play_ban"; break; case 17: sMenu = "chat_dm_play_ite"; break; case 18: sMenu = "chat_dm_play_tel"; break; case 19: sMenu = "chat_dm_play_xp"; break; case 20: sMenu = "chat_dm_serv"; break; case 21: sMenu = "chat_dm_serv_tim"; break; case 22: sMenu = "chat_dm_serv_var"; break; case 23: sMenu = "chat_dm_creat"; break; case 24: sMenu = "chat_dm_creat_fa"; break; case 25: sMenu = "chat_dm_fx"; break; case 26: sMenu = "chat_dm_chat"; break; case 27: sMenu = "chat_dm_chat_ign"; break; case 43: sMenu = "chat_dm_fx_dur"; break; case 44: sMenu = "chat_dm_fx_es"; break; } SetLocalInt(oSpeaker, "FKY_CHAT_CONVONUMBER", nMenu); AssignCommand(oSpeaker, ClearAllActions(TRUE)); AssignCommand(oSpeaker, ActionStartConversation(oSpeaker, sMenu, TRUE, FALSE)); } // oPC oTarget sText nChannel void HandleCommands(object oCPC, object oCTarget, string sCText, int nCChannel) { string sSort, sTarget, sPlayer, sInvite, sKey, sNormalCase; int nText, nCount, nPos, nLang, nCheck; object oItem; location lLoc; SetLocalString(oCPC, "NWNX!CHAT!SUPRESS", "1");//suppress command speech no matter what, helps avoid circumvention of shout ban if (!GetIsDead(oCPC)) { sNormalCase = GetStringRight(sCText, GetStringLength(sCText) - 1); //preserve caps for setname command sCText = GetStringLowerCase(sNormalCase); //case insensitive WriteTimestampedLogEntry(sCText); sSort = GetStringLeft(sCText, 1); nText = FindSubString("a d h i l m p s t u w", sSort); switch (nText) //0 2 4 6 8 101214161820 { case -1: CommandRedirect(oCPC, 1); break; /*a*/ case 0: if (sCText == "anon") { SetLocalInt(oCPC, "FKY_CHAT_ANON", 1); SendMessageToPC(oCPC, COLOR_RED+ANON+COLOR_END); } else if (GetStringLeft(sCText, 2) == "an") CommandRedirect(oCPC, 2); else CommandRedirect(oCPC, 1); break; /*d*/ case 2: if (GetStringLeft(sCText, 6) == "delete") { if (!GetIsObjectValid(oCTarget))//target verification - do they need to use the command targeter? { oCTarget = GetLocalObject(oCPC, "FKY_CHAT_TARGET"); //have they already used the targeter? if (!GetIsObjectValid(oCTarget)) { FloatingTextStringOnCreature(COLOR_GOLD+REQUIRES_TARGET+COLOR_END, oCPC, FALSE);//tell them SetLocalString(oCPC, "FKY_CHAT_COMMAND", OBJECT_TARGET+COMMAND_SYMBOL + sNormalCase);//mark them for the targeter if (!GetIsObjectValid(GetItemPossessedBy(oCPC, "fky_chat_target"))) CreateItemOnObject("fky_chat_target", oCPC);//give them a targeter if they need one return; } else DeleteLocalObject(oCPC, "FKY_CHAT_TARGET");//variable cleanup } nCount = GetLocalInt(oCTarget, "FKY_CHAT_DELETE_CONFIRM"); if (nCount == 1) { if (GetIsPC(oCTarget)) { if (GetStringRight(sCText, 8) == GetStringLowerCase(GetPCPublicCDKey(oCTarget))) { ExportSingleCharacter(oCTarget);//export needed to ensure this .bic is the most recently edited if (SAFE_DELETE) DelayCommand(4.0, SafeDeleteBic(oCTarget)); else DelayCommand(4.0, AssignCommand(GetModule(), DeleteBic(oCTarget))); FloatingTextStringOnCreature(COLOR_RED+LETO_DELETE+COLOR_END, oCPC, FALSE); } else FloatingTextStringOnCreature(COLOR_RED+DISCONFIRM+COLOR_END, oCPC, FALSE); } else FloatingTextStringOnCreature(COLOR_RED+PC_ONLY+COLOR_END, oCPC, FALSE); } else if (sCText == "delete") { if (VAULTPATH_CHAT != "")//check if vault specified, command error otherwise { //check permission nPos = (oCPC == oCTarget);//self-targeted? if ((PLAYERS_CAN_DELETE && nPos) || (DMS_CAN_DELETE && VerifyDMKey(oCPC)) || VerifyAdminKey(oCPC)) { if (GetIsPC(oCTarget)) { if ((VerifyDMKey(oCTarget) || VerifyAdminKey(oCTarget)) && (!nPos)) FloatingTextStringOnCreature(COLOR_RED+NO_OTHER_DM_TARGET+COLOR_END, oCPC, FALSE); else { SetLocalInt(oCTarget, "FKY_CHAT_DELETE_CONFIRM", 1); FloatingTextStringOnCreature(COLOR_RED+CONFIRM_DELETE+COMMAND_SYMBOL+CONFIRM_DELETE2+COLOR_END, oCPC, FALSE); } } else FloatingTextStringOnCreature(COLOR_RED+PC_ONLY+COLOR_END, oCPC, FALSE); } else CommandRedirect(oCPC, 1); //check process } else CommandRedirect(oCPC, 1); } else CommandRedirect(oCPC, 1); } else if (GetStringLeft(sCText, 2) == "de") CommandRedirect(oCPC, 2); else { nText = FindSubString("d4 d6 d8 d10 d12 d20 d100", sCText); switch (nText) //0 3 6 9 13 17 21 { case -1: if (TestStringAgainstPattern("*n", GetSubString(sCText, 1, 1))) CommandRedirect(oCPC, 3); else CommandRedirect(oCPC, 1); break; case 0: RollDie(oCPC, 4); break; case 3: RollDie(oCPC, 6); break; case 6: RollDie(oCPC, 8); break; case 9: RollDie(oCPC, 10); break; case 13: RollDie(oCPC, 12); break; case 17: RollDie(oCPC, 20); break; case 21: RollDie(oCPC, 100); break; } } break; /*h*/ case 4: if (sCText == "help") ListHelp(oCPC); else CommandRedirect(oCPC, 6); break; /*i*/ case 6: if (sCText == "ignore") { if (!GetIsObjectValid(oCTarget))//target verification - do they need to use the command targeter? { oCTarget = GetLocalObject(oCPC, "FKY_CHAT_TARGET"); //have they already used the targeter? if (!GetIsObjectValid(oCTarget)) { FloatingTextStringOnCreature(COLOR_GOLD+REQUIRES_TARGET+COLOR_END, oCPC, FALSE);//tell them SetLocalString(oCPC, "FKY_CHAT_COMMAND", OBJECT_TARGET+COMMAND_SYMBOL + sNormalCase);//mark them for the targeter if (!GetIsObjectValid(GetItemPossessedBy(oCPC, "fky_chat_target"))) CreateItemOnObject("fky_chat_target", oCPC);//give them a targeter if they need one return; } else DeleteLocalObject(oCPC, "FKY_CHAT_TARGET");//variable cleanup } //if (((nCChannel == 4) ||(nCChannel == 20)) && GetIsObjectValid(oCTarget))//can now target with command targeter if (GetIsPC(oCTarget)) { if ((!VerifyDMKey(oCTarget)) && (!VerifyAdminKey(oCTarget)))//can't ignore DMs or Admins { if (oCPC != oCTarget) { sTarget = GetPCPlayerName(oCTarget); if (GetLocalInt(oCPC, "FKY_CHT_IGNORE" + sTarget) == FALSE) { sPlayer = GetPCPlayerName(oCPC); SetLocalInt(oCPC, "FKY_CHT_IGNORE" + sTarget, TRUE);//ignore list stored on PC ignoring SendMessageToPC(oCPC, COLOR_RED+IGNORE3+ sTarget + "."+COLOR_END); SendMessageToPC(oCTarget, COLOR_RED + sPlayer +IGNORE4+COLOR_END); } else FloatingTextStringOnCreature(COLOR_RED+IGNORE5+ sTarget + "!"+COLOR_END, oCPC, FALSE); } else FloatingTextStringOnCreature(COLOR_RED+IGNORE6+COLOR_END, oCPC, FALSE); } else FloatingTextStringOnCreature(COLOR_RED+IGNORE7+COLOR_END, oCPC, FALSE); } else FloatingTextStringOnCreature(COLOR_RED+PC_ONLY+COLOR_END, oCPC, FALSE); //else FloatingTextStringOnCreature(COLOR_RED+IGNORE8+COLOR_END, oCPC, FALSE); } else if (GetStringLeft(sCText, 2) == "ig") CommandRedirect(oCPC, 8); else CommandRedirect(oCPC, 1); break; /*l*/ case 8: if (sCText == "lfg") { if (GetLocalInt(oCPC, "FKY_CHT_BANSHOUT") || GetLocalInt(oCPC, "FKY_CHT_BANDM"))//if they've been muted from either channel they can only use this 3 times, to avoid circumventing { nCount = GetLocalInt(oCPC, "FKY_CHT_LFG"); if (nCount > 2) { SendMessageToPC(oCPC, COLOR_RED+USES_3+COLOR_END); } else { nCount++; SetLocalInt(oCPC, "FKY_CHT_LFG", nCount); SpeakString(LFG1+ IntToString(GetNumberOfLegendaryLevels(OBJECT_SELF)+ GetHitDice(OBJECT_SELF))+LFG2, TALKVOLUME_SHOUT); } } else { SpeakString(LFG1+ IntToString(GetNumberOfLegendaryLevels(OBJECT_SELF)+ GetHitDice(OBJECT_SELF))+LFG2, TALKVOLUME_SHOUT); } } else if (GetStringLeft(sCText, 2) == "lf") CommandRedirect(oCPC, 8); else if (GetStringLeft(sCText, 4) == "list") { if (sCText == "list emotes") ListEmotes(oCPC); else if (sCText == "list commands") ListCommands(oCPC); else if (sCText == "list ignored") ListIgnored(oCPC); else if (sCText == "list languages") { if (ENABLE_LANGUAGES) ListLanguages(oCPC); else CommandRedirect(oCPC, 1); } else if (sCText == "list alllanguages") { if (ENABLE_LANGUAGES && (ENABLE_FULL_LANGUAGE_LIST_FOR_PLAYERS || VerifyDMKey(oCPC) || VerifyAdminKey(oCPC))) ListAllLanguages(oCPC); else CommandRedirect(oCPC, 1); } else CommandRedirect(oCPC, 6); } else if (GetStringLeft(sCText, 2) == "li") CommandRedirect(oCPC, 6); else CommandRedirect(oCPC, 1); break; /*m*/ case 10://metachannels if ((GetStringLeft(sCText, 4) == "meta") && ENABLE_METACHANNELS) { sCText = GetStringRight(sCText, GetStringLength(sCText) - 4); nText = FindSubString("accept decline disband invite kick leave list", sCText); switch (nText) //0 7 15 23 30 35 41 { // (tell) (tell) case -1: CommandRedirect(oCPC, 7); break; case 0://accept if (GetLocalString(oCPC, "FKY_CHT_META_GRP") == "")//They are not in a metagroup { sInvite = GetLocalString(oCPC, "FKY_CHT_META_INV"); if (sInvite != "") { CheckIfNewChannel(sInvite);//if it's a new channel this adds the inviter SetLocalString(oCPC, "FKY_CHT_META_GRP", sInvite);//add them to the channel sKey = COLOR_ORANGE+META1+COLOR_END; FloatingTextStringOnCreature(sInvite, oCPC, FALSE); SendMetaNotice(sInvite, GetName(oCPC)+META2); } else SendMessageToPC(oCPC, COLOR_RED+META3+COLOR_END); } else SendMessageToPC(oCPC, COLOR_RED+META4+COLOR_END); break; case 7://decline sInvite = GetLocalString(oCPC, "FKY_CHT_META_INV"); if (sInvite != "") { DeleteLocalString(oCPC, "FKY_CHT_META_INV");//clear the invite sKey = COLOR_ORANGE+META5+COLOR_END; SendMetaNotice(sInvite, GetName(oCPC)+META6); FloatingTextStringOnCreature(sInvite, oCPC, FALSE); } else SendMessageToPC(oCPC, COLOR_RED+META3+COLOR_END); break; case 15://disband if (GetLocalString(oCPC, "FKY_CHT_META_GRP") == GetPCPlayerName(oCPC)) DisbandMetaChannel(oCPC); break;//only the leader can disband case 23://invite //if ((nCChannel == 4) || (nCChannel == 20))//must invite in tell channel//can now invite with command targeter //{ sKey = GetLocalString(oCPC, "FKY_CHT_META_GRP"); if (sKey == "") sKey = GetPCPlayerName(oCPC);//they are not in a metagroup and are attempting to start one as the leader if (!GetIsObjectValid(oCTarget))//target verification - do they need to use the command targeter? { oCTarget = GetLocalObject(oCPC, "FKY_CHAT_TARGET"); //have they already used the targeter? if (!GetIsObjectValid(oCTarget)) { FloatingTextStringOnCreature(COLOR_GOLD+REQUIRES_TARGET+COLOR_END, oCPC, FALSE);//tell them SetLocalString(oCPC, "FKY_CHAT_COMMAND", OBJECT_TARGET+COMMAND_SYMBOL + sNormalCase);//mark them for the targeter if (!GetIsObjectValid(GetItemPossessedBy(oCPC, "fky_chat_target"))) CreateItemOnObject("fky_chat_target", oCPC);//give them a targeter if they need one return; } else DeleteLocalObject(oCPC, "FKY_CHAT_TARGET");//variable cleanup } if (GetIsPC(oCTarget)) { if (GetLocalString(oCTarget, "FKY_CHT_META_GRP") == "")//They are not in a metagroup { sInvite = COLOR_ORANGE+META7+ GetPCPlayerName(oCPC) + "!"+COLOR_END; FloatingTextStringOnCreature(sInvite, oCTarget, FALSE); SetLocalString(oCTarget, "FKY_CHT_META_INV", sKey);//will overwrite last invite sInvite = COLOR_ORANGE+META8+COLOR_END; FloatingTextStringOnCreature(sInvite, oCPC, FALSE); } else //they are already in a Metagroup { sInvite = COLOR_ORANGE + GetName(oCTarget) +META9+COLOR_END; FloatingTextStringOnCreature(sInvite, oCPC, FALSE); } } else FloatingTextStringOnCreature(COLOR_RED+PC_ONLY+COLOR_END, oCPC, FALSE); //} //else FloatingTextStringOnCreature(COLOR_RED+META10+COLOR_END, oCPC, FALSE); break; case 30://kick //if ((nCChannel == 4) || (nCChannel == 20))//must kick in tell channel//can now target with command targeter //{ sKey = GetPCPlayerName(oCPC); if (GetLocalString(oCPC, "FKY_CHT_META_GRP") == sKey)//only leader can kick { if (!GetIsObjectValid(oCTarget))//target verification - do they need to use the command targeter? { oCTarget = GetLocalObject(oCPC, "FKY_CHAT_TARGET"); //have they already used the targeter? if (!GetIsObjectValid(oCTarget)) { FloatingTextStringOnCreature(COLOR_GOLD+REQUIRES_TARGET+COLOR_END, oCPC, FALSE);//tell them SetLocalString(oCPC, "FKY_CHAT_COMMAND", OBJECT_TARGET+COMMAND_SYMBOL + sNormalCase);//mark them for the targeter if (!GetIsObjectValid(GetItemPossessedBy(oCPC, "fky_chat_target"))) CreateItemOnObject("fky_chat_target", oCPC);//give them a targeter if they need one return; } else DeleteLocalObject(oCPC, "FKY_CHAT_TARGET");//variable cleanup } if (GetIsPC(oCTarget)) { if (GetLocalString(oCTarget, "FKY_CHT_META_GRP") == sKey) { DeleteLocalString(oCTarget, "FKY_CHT_META_GRP");//kick them sInvite = COLOR_ORANGE+META11+COLOR_END; FloatingTextStringOnCreature(sInvite, oCTarget, FALSE); SendMetaNotice(sKey, GetName(oCTarget)+META12); } else FloatingTextStringOnCreature(COLOR_RED+META13+ GetName(oCTarget) +META14+COLOR_END, oCPC, FALSE); } else FloatingTextStringOnCreature(COLOR_RED+PC_ONLY+COLOR_END, oCPC, FALSE); } else FloatingTextStringOnCreature(COLOR_RED+META15+COLOR_END, oCPC, FALSE); //} //else FloatingTextStringOnCreature(COLOR_RED+META16+COLOR_END, oCPC, FALSE); break; case 35://leave sKey = GetLocalString(oCPC, "FKY_CHT_META_GRP"); if (sKey != "") { DeleteLocalString(oCPC, "FKY_CHT_META_GRP");//leave group sInvite = COLOR_ORANGE+META17+COLOR_END; FloatingTextStringOnCreature(sInvite, oCPC, FALSE); SendMetaNotice(sKey, GetName(oCPC)+META18); } else SendMessageToPC(oCPC, COLOR_RED+METABAD+COLOR_END); break; case 41: ListMetaMembers(oCPC); break;//list } } else if (GetStringLeft(sCText, 2) == "me") CommandRedirect(oCPC, 7); else CommandRedirect(oCPC, 1); break; /*p*/ case 12: if (sCText == "partyroll") DoPartyRoll(oCPC); else if (GetStringLeft(sCText, 2) == "pa") CommandRedirect(oCPC, 3); else if (sCText == "playerinfo") { if (!GetIsObjectValid(oCTarget))//target verification - do they need to use the command targeter? { oCTarget = GetLocalObject(oCPC, "FKY_CHAT_TARGET"); //have they already used the targeter? if (!GetIsObjectValid(oCTarget)) { FloatingTextStringOnCreature(COLOR_GOLD+REQUIRES_TARGET+COLOR_END, oCPC, FALSE);//tell them SetLocalString(oCPC, "FKY_CHAT_COMMAND", OBJECT_TARGET+COMMAND_SYMBOL + sNormalCase);//mark them for the targeter if (!GetIsObjectValid(GetItemPossessedBy(oCPC, "fky_chat_target"))) CreateItemOnObject("fky_chat_target", oCPC);//give them a targeter if they need one return; } else DeleteLocalObject(oCPC, "FKY_CHAT_TARGET");//variable cleanup } //if ((nCChannel == 4) || (nCChannel == 20))//can now target with the command targeter if (GetIsPC(oCTarget)) { ShowInfo(oCPC, oCTarget); } else FloatingTextStringOnCreature(COLOR_RED+PC_ONLY+COLOR_END, oCPC, FALSE); //else FloatingTextStringOnCreature(COLOR_RED+NFO14+COLOR_END, oCPC, FALSE); } else if (GetStringLeft(sCText, 2) == "pl") CommandRedirect(oCPC, 2); else CommandRedirect(oCPC, 1); break; /*s*/ case 14: if (ENABLE_LANGUAGES && (GetStringLeft(sCText, 6) == "speak ")) { sCText = GetStringRight(sCText, GetStringLength(sCText) - 6); nText = GetLanguageNumber(sCText); if (nText == -1) FloatingTextStringOnCreature(COLOR_RED+LANG1+COLOR_END, oCPC, FALSE); else if (nText == 109)//revert to speaking common { nLang = GetLocalInt(oCPC, "FKY_CHT_SPEAKING");//what they were speaking if (nLang) { DeleteLocalInt(oCPC, "FKY_CHT_SPEAKING"); SendMessageToPC(oCPC, COLOR_RED+SPEAK1+ GetNameOfLanguage(nLang) + "."+COLOR_END); } else SendMessageToPC(oCPC, COLOR_RED+SPEAK2+COLOR_END); } else //set them to speak the language from that point on if they are able to { nLang = GetLocalInt(oCPC, "FKY_CHT_SPEAKING");//what they were speaking if (nLang == nText) SendMessageToPC(oCPC, COLOR_RED+SPEAK3+ GetNameOfLanguage(nLang) + "!"+COLOR_END); else if (GetLocalInt(oCPC, "FKY_CHAT_LANG" + IntToString(nText)))//can they speak it? { SetLocalInt(oCPC, "FKY_CHT_SPEAKING", nText); SendMessageToPC(oCPC, COLOR_RED+SPEAK4+ GetNameOfLanguage(nText)+SPEAK5+GetNameOfLanguage(nLang) + "."+COLOR_END); } else SendMessageToPC(oCPC, COLOR_RED+SPEAK6+ GetNameOfLanguage(nText) + "!"+COLOR_END); } } else if (ENABLE_LANGUAGES && (GetStringLeft(sCText, 2) == "sp")) CommandRedirect(oCPC, 5); else if ((ENABLE_PLAYER_SETNAME || VerifyDMKey(oCPC) || VerifyAdminKey(oCPC))&& (GetStringLeft(sCText, 8) == "setname ")) { oCTarget = GetLocalObject(oCPC, "FKY_CHAT_TARGET"); //have they already used the targeter? if (!GetIsObjectValid(oCTarget)) { FloatingTextStringOnCreature(COLOR_GOLD+REQUIRES_TARGET2+COLOR_END, oCPC, FALSE);//tell them SetLocalString(oCPC, "FKY_CHAT_COMMAND", ITEM_TARGET+COMMAND_SYMBOL + sNormalCase);//mark them for the targeter if (!GetIsObjectValid(GetItemPossessedBy(oCPC, "fky_chat_target"))) CreateItemOnObject("fky_chat_target", oCPC);//give them a targeter if they need one return; } else DeleteLocalObject(oCPC, "FKY_CHAT_TARGET");//variable cleanup sCText = GetStringRight(sNormalCase, GetStringLength(sCText) - 8);//switch in the normal case - they are the same length atm //nPos = FindSubString(sCText, "@"); //sSort = GetStringLeft(sCText, nPos); //sCText = GetStringRight(sCText, GetStringLength(sCText) - (nPos+1)); //oItem = GetFirstItemInInventory(oCPC); //while (GetIsObjectValid(oItem) && (nCheck != 1)) //{ // if (GetName(oItem) == sSort) // { /*DelayCommand(0.1, */SetName(oCTarget, sCText);//); // nCheck = 1; // } // oItem = GetNextItemInInventory(oCPC); //} } else if ((ENABLE_PLAYER_SETNAME || VerifyDMKey(oCPC) || VerifyAdminKey(oCPC))&& (GetStringLeft(sCText, 11) == "setnameall ")) { oCTarget = GetLocalObject(oCPC, "FKY_CHAT_TARGET"); //have they already used the targeter? if (!GetIsObjectValid(oCTarget)) { FloatingTextStringOnCreature(COLOR_GOLD+REQUIRES_TARGET2+COLOR_END, oCPC, FALSE);//tell them SetLocalString(oCPC, "FKY_CHAT_COMMAND", ITEM_TARGET+COMMAND_SYMBOL + sNormalCase);//mark them for the targeter if (!GetIsObjectValid(GetItemPossessedBy(oCPC, "fky_chat_target"))) CreateItemOnObject("fky_chat_target", oCPC);//give them a targeter if they need one return; } else DeleteLocalObject(oCPC, "FKY_CHAT_TARGET");//variable cleanup sCText = GetStringRight(sNormalCase, GetStringLength(sCText) - 11); //nPos = FindSubString(sCText, "@"); sSort = GetName(oCTarget); //sCText = GetStringRight(sCText, GetStringLength(sCText) - (nPos+1)); oItem = GetFirstItemInInventory(oCPC); while (GetIsObjectValid(oItem)) { if (GetName(oItem) == sSort) { DelayCommand(0.1, SetName(oItem, sCText)); } oItem = GetNextItemInInventory(oCPC); } } else if ((ENABLE_PLAYER_SETNAME || VerifyDMKey(oCPC) || VerifyAdminKey(oCPC))&& (GetStringLeft(sCText, 4) == "setn")) CommandRedirect(oCPC, 4); else if ((ENABLE_PLAYER_SETTAILWINGS || VerifyDMKey(oCPC) || VerifyAdminKey(oCPC))&& (GetStringLeft(sCText, 8) == "settail ")) { sCText = GetStringRight(sCText, GetStringLength(sCText) - 8); nPos = StringToInt(sCText); if (TestStringAgainstPattern("*n", sCText)) { if (!GetIsObjectValid(oCTarget))//target verification - do they need to use the command targeter? { oCTarget = GetLocalObject(oCPC, "FKY_CHAT_TARGET"); //have they already used the targeter? if (!GetIsObjectValid(oCTarget)) { FloatingTextStringOnCreature(COLOR_GOLD+REQUIRES_TARGET+COLOR_END, oCPC, FALSE);//tell them SetLocalString(oCPC, "FKY_CHAT_COMMAND", OBJECT_TARGET+COMMAND_SYMBOL + sNormalCase);//mark them for the targeter if (!GetIsObjectValid(GetItemPossessedBy(oCPC, "fky_chat_target"))) CreateItemOnObject("fky_chat_target", oCPC);//give them a targeter if they need one return; } else DeleteLocalObject(oCPC, "FKY_CHAT_TARGET");//variable cleanup } if (GetIsPC(oCTarget)) { if ((!VerifyDMKey(oCTarget)) && (!VerifyAdminKey(oCTarget)) || (oCTarget == oCPC)) SetCreatureTailType(nPos, oCTarget); else FloatingTextStringOnCreature(COLOR_RED+NO_OTHER_DM_TARGET+COLOR_END, oCPC, FALSE); } else FloatingTextStringOnCreature(COLOR_RED+PC_ONLY+COLOR_END, oCPC, FALSE); } else FloatingTextStringOnCreature(COLOR_RED+REQUIRES_NUMBER+COLOR_END, oCPC); } else if ((ENABLE_PLAYER_SETTAILWINGS || VerifyDMKey(oCPC) || VerifyAdminKey(oCPC))&& (GetStringLeft(sCText, 9) == "setwings ")) { sCText = GetStringRight(sCText, GetStringLength(sCText) - 9); nPos = StringToInt(sCText); if (TestStringAgainstPattern("*n", sCText)) { if (!GetIsObjectValid(oCTarget))//target verification - do they need to use the command targeter? { oCTarget = GetLocalObject(oCPC, "FKY_CHAT_TARGET"); //have they already used the targeter? if (!GetIsObjectValid(oCTarget)) { FloatingTextStringOnCreature(COLOR_GOLD+REQUIRES_TARGET+COLOR_END, oCPC, FALSE);//tell them SetLocalString(oCPC, "FKY_CHAT_COMMAND", OBJECT_TARGET+COMMAND_SYMBOL + sNormalCase);//mark them for the targeter if (!GetIsObjectValid(GetItemPossessedBy(oCPC, "fky_chat_target"))) CreateItemOnObject("fky_chat_target", oCPC);//give them a targeter if they need one return; } else DeleteLocalObject(oCPC, "FKY_CHAT_TARGET");//variable cleanup } if (GetIsPC(oCTarget)) { if ((!VerifyDMKey(oCTarget)) && (!VerifyAdminKey(oCTarget)) || (oCTarget == oCPC)) SetCreatureWingType(nPos, oCTarget); else FloatingTextStringOnCreature(COLOR_RED+NO_OTHER_DM_TARGET+COLOR_END, oCPC, FALSE); } else FloatingTextStringOnCreature(COLOR_RED+PC_ONLY+COLOR_END, oCPC, FALSE); } else FloatingTextStringOnCreature(COLOR_RED+REQUIRES_NUMBER+COLOR_END, oCPC); } else if ((ENABLE_PLAYER_SETTAILWINGS || VerifyDMKey(oCPC) || VerifyAdminKey(oCPC))&& (GetStringLeft(sCText, 3) == "set")) CommandRedirect(oCPC, 2); else if (GetStringLeft(sCText, 11) == "skillcheck ")//!skillcheck 5 50 { sCText = GetStringRight(sCText, GetStringLength(sCText) - 11); nPos = FindSubString(sCText, " "); sSort = GetStringLeft(sCText, nPos); sCText = GetStringRight(sCText, GetStringLength(sCText) - (nPos+1)); if ((!TestStringAgainstPattern("*n", sSort)) || (!TestStringAgainstPattern("*n", sCText))) FloatingTextStringOnCreature(COLOR_RED+REQUIRES_NUMBER+COLOR_END, oCPC, FALSE); else DoSkillCheck(oCPC, StringToInt(sSort), StringToInt(sCText)); } else if (sCText == "skillslist") { sCText = ""; for (nPos = 0; nPos < 27; nPos++) { sCText += IntToString(nPos) + ": " + GetSkillName(nPos) + NEWLINE; } SendMessageToPC(oCPC, sCText); } else if (GetStringLeft(sCText, 2) == "sk") CommandRedirect(oCPC, 3); else CommandRedirect(oCPC, 1); break; /*t*/ case 16: if (sCText == "target") { sSort = GetLocalString(oCPC, "FKY_CHAT_COMMAND"); if (sSort != "") { if (nCChannel == 4 || nCChannel == 20) //must be sent in tell { if (GetIsObjectValid(oCTarget)) { sKey = GetStringLeft(sSort, 1); sSort = GetStringRight(sSort, GetStringLength(sSort) - 1); if (sKey == AREA_TARGET_OK || sKey == OBJECT_TARGET) { SetLocalObject(oCPC, "FKY_CHAT_TARGET", oCTarget); DeleteLocalString(oCPC, "FKY_CHAT_COMMAND"); SetLocalString(oCPC, "FKY_CHAT_COMMAND_EXE", sSort);//set the command to speak on them DelayCommand(0.1, ExecuteScript("fky_chat_command", oCPC));//this ensures the spoken string fires the chat script again } else if (sKey == LOCATION_TARGET) { lLoc = GetLocation(oCTarget); if (GetIsObjectValid(GetAreaFromLocation(lLoc))) { SetLocalLocation(oCPC, "FKY_CHAT_LOCATION", lLoc); DeleteLocalString(oCPC, "FKY_CHAT_COMMAND");//here we only delete if they selected a valid location - otherwise propmpt for retry SetLocalString(oCPC, "FKY_CHAT_COMMAND_EXE", sSort);//set the command to speak on them DelayCommand(0.1, ExecuteScript("fky_chat_command", oCPC));//this ensures the spoken string fires the chat script again } else FloatingTextStringOnCreature(COLOR_RED+TARGETER_ERROR3+COLOR_END, oCPC, FALSE); } else if (sKey == ITEM_TARGET) { DeleteLocalString(oCPC, "FKY_CHAT_COMMAND"); FloatingTextStringOnCreature(COLOR_RED + TARGETER_ERROR5 + COLOR_END, oCPC, FALSE); } else { DeleteLocalString(oCPC, "FKY_CHAT_COMMAND"); FloatingTextStringOnCreature(COLOR_RED + TARGETER_ERROR5 + COLOR_END, oCPC, FALSE); } } else FloatingTextStringOnCreature(COLOR_RED + TARGET_ON_SERV + COLOR_END, oCPC, FALSE); } else { DeleteLocalString(oCPC, "FKY_CHAT_COMMAND"); FloatingTextStringOnCreature(COLOR_RED + TARGET_REQ_TELL1 + COLOR_END + COLOR_GREEN + COMMAND_SYMBOL+"target "+ COLOR_END + COLOR_RED + TARGET_REQ_TELL2 + COLOR_END, oCPC, FALSE); } } else FloatingTextStringOnCreature(COLOR_RED + TARGET_NO_COMM + COLOR_END, oCPC, FALSE); } break; /*u*/ case 18: if (sCText == "unignore") { //if (((nCChannel == 4) ||(nCChannel == 20)) && GetIsObjectValid(oCTarget))//can now be targeted with the command targeter //{ if (!GetIsObjectValid(oCTarget))//target verification - do they need to use the command targeter? { oCTarget = GetLocalObject(oCPC, "FKY_CHAT_TARGET"); //have they already used the targeter? if (!GetIsObjectValid(oCTarget)) { FloatingTextStringOnCreature(COLOR_GOLD+REQUIRES_TARGET+COLOR_END, oCPC, FALSE);//tell them SetLocalString(oCPC, "FKY_CHAT_COMMAND", OBJECT_TARGET+COMMAND_SYMBOL + sNormalCase);//mark them for the targeter if (!GetIsObjectValid(GetItemPossessedBy(oCPC, "fky_chat_target"))) CreateItemOnObject("fky_chat_target", oCPC);//give them a targeter if they need one return; } else DeleteLocalObject(oCPC, "FKY_CHAT_TARGET");//variable cleanup } if (GetIsPC(oCTarget)) { sTarget = GetPCPlayerName(oCTarget); if (GetLocalInt(oCPC, "FKY_CHT_IGNORE" + sTarget) == TRUE) { sPlayer = GetPCPlayerName(oCPC); DeleteLocalInt(oCPC, "FKY_CHT_IGNORE" + sTarget);//ignore list stored on PC ignoring SendMessageToPC(oCPC, COLOR_RED+UNIGNORE1+ sTarget + "."+COLOR_END); SendMessageToPC(oCTarget, COLOR_RED + sPlayer+UNIGNORE2+COLOR_END); } else FloatingTextStringOnCreature(COLOR_RED+UNIGNORE3+ sTarget + "!"+COLOR_END, oCPC, FALSE); } else FloatingTextStringOnCreature(COLOR_RED+PC_ONLY+COLOR_END, oCPC, FALSE); //} //else FloatingTextStringOnCreature(COLOR_RED+UNIGNORE4+COLOR_END, oCPC, FALSE); } else if (GetStringLeft(sCText, 3) == "uni") CommandRedirect(oCPC, 8); else if (sCText == "unanon") { DeleteLocalInt(oCPC, "FKY_CHAT_ANON"); SendMessageToPC(oCPC, COLOR_RED+UNANON+COLOR_END); } else if (GetStringLeft(sCText, 3) == "una") CommandRedirect(oCPC, 2); else CommandRedirect(oCPC, 1); break; /*w*/ case 20: if ((GetStringLeft(sCText, 2) == "wp") && ENABLE_WEAPON_VISUALS)//weapon visuals { sCText = GetStringRight(sCText, GetStringLength(sCText) - 2); nText = FindSubString("ac co el ev fi ho none", sCText); switch (nText) //0 3 6 9 12 15 18 { case -1: CommandRedirect(oCPC, 4); break; case 0: AddItemPropertyVisualEffect(oCPC,ITEM_VISUAL_ACID); break; case 3: AddItemPropertyVisualEffect(oCPC,ITEM_VISUAL_COLD); break; case 6: AddItemPropertyVisualEffect(oCPC,ITEM_VISUAL_ELECTRICAL); break; case 9: AddItemPropertyVisualEffect(oCPC,ITEM_VISUAL_EVIL); break; case 12: AddItemPropertyVisualEffect(oCPC,ITEM_VISUAL_FIRE); break; case 15: AddItemPropertyVisualEffect(oCPC,ITEM_VISUAL_HOLY); break; case 18: RemoveItemPropertyVisualEffect(oCPC); break; } } else CommandRedirect(oCPC, 1); break; } } else FloatingTextStringOnCreature(COLOR_RED+NOT_DEAD+COLOR_END, oCPC, FALSE);//no match } void ShoutBlock(object oSBPC, int nSBChannel) { if (nSBChannel == 2) SetLocalString(oSBPC, "NWNX!CHAT!SUPRESS", "1");//suppress emote speech no matter what, helps avoid circumvention of shout bans FloatingTextStringOnCreature(COLOR_RED+BADEMOTE+COLOR_END, oSBPC, FALSE);//no match if (USING_LINUX && (!GetLocalInt(oSBPC, "FKY_CHAT_EMOTETOGGLE"))) { SetLocalInt(oSBPC, "FKY_CHAT_CONVONUMBER", 80); AssignCommand(oSBPC, ClearAllActions(TRUE)); AssignCommand(oSBPC, ActionStartConversation(oSBPC, "chat_emote", TRUE, FALSE)); } } // oPC sText void HandleEmotes(object oEPC, string sEText, int nEChannel) { int nText, nSort2; string sSort; if (!GetIsDead(oEPC)) { sEText = GetStringLowerCase(GetStringRight(sEText, GetStringLength(sEText) - 1)); //23 commands, case insensitive sSort = GetStringLeft(sEText, 1); nText = FindSubString("abcdefghijklmnopqrstuvwxyz", sSort); nSort2 = nText < 0 ? -1 : nText / 5; switch (nSort2) { case -1: if (USING_LINUX && (sEText == EMOTE_SYMBOL))//double emote symbol toggles emote popup window on and off { if (GetLocalInt(oEPC, "FKY_CHAT_EMOTETOGGLE")) DeleteLocalInt(oEPC, "FKY_CHAT_EMOTETOGGLE"); else SetLocalInt(oEPC, "FKY_CHAT_EMOTETOGGLE", 1); } else ShoutBlock(oEPC, nEChannel); break; case 0: switch(nText) { case 0:/*a*/ if (sEText == "ag" || sEText == "agree") DoLoopAnimation(oEPC, ANIMATION_LOOPING_LISTEN); else ShoutBlock(oEPC, nEChannel); break; case 1:/*b*/ if (sEText =="bg" || sEText == "beg") DoLoopAnimation(oEPC, ANIMATION_LOOPING_TALK_PLEADING); else if (sEText == "bn" || sEText == "bend") DoLoopAnimation(oEPC, ANIMATION_LOOPING_GET_LOW); else if (sEText == "bw" || sEText == "bow") DoFireForgetAnimation(oEPC, ANIMATION_FIREFORGET_BOW); else if (sEText == "bo" || sEText == "bored") DoFireForgetAnimation(oEPC, ANIMATION_FIREFORGET_PAUSE_BORED); else if (sEText == "bk" || sEText == "bark") DoBark(oEPC); else if (sEText == "bh" || sEText == "belch") DoBelch(oEPC); else if (sEText == "bp" || sEText == "burp") DoBurp(oEPC); else if (sEText == "bye") DoGoodbye(oEPC); else ShoutBlock(oEPC, nEChannel); break; case 2:/*c*/ if (sEText == "cl" || sEText == "celebrate") DoCheer3(oEPC); else if (sEText == "ca" || sEText == "cantrip") DoLoopAnimation(oEPC, ANIMATION_LOOPING_CONJURE1); else if (sEText == "ch" || sEText == "cheer") DoCheer(oEPC); else if (sEText == "ck" || sEText == "chuckle") DoLaugh(oEPC); else if (sEText == "ct" || sEText == "chat") DoLoopAnimation(oEPC, ANIMATION_LOOPING_TALK_NORMAL); else if (sEText == "cs" || sEText == "cast") DoLoopAnimation(oEPC, ANIMATION_LOOPING_CONJURE2); else if (sEText == "cy" || sEText == "curtsy") DoFireForgetAnimation(oEPC, ANIMATION_FIREFORGET_BOW); else if (sEText == "co" || sEText == "collapse") DoLoopAnimation(oEPC, ANIMATION_LOOPING_DEAD_FRONT); else if (sEText == "cn" || sEText == "chant") DoChant(oEPC); else if (sEText == "cr" || sEText == "chortle") DoLaugh2(oEPC); else if (sEText == "cg" || sEText == "cough" || sEText == "choke") DoCough(oEPC); else if (sEText == "cry") DoCry(oEPC); else ShoutBlock(oEPC, nEChannel); break; case 3:/*d*/ if (sEText == "da" || sEText == "dance") DoDance(oEPC); else if (sEText == "dd" || sEText == "dead") DoLoopAnimation(oEPC, ANIMATION_LOOPING_DEAD_BACK); else if (sEText == "dk" || sEText == "duck") DoFireForgetAnimation(oEPC, ANIMATION_FIREFORGET_DODGE_DUCK); else if (sEText == "di" || sEText == "die") DoLoopAnimation(oEPC, ANIMATION_LOOPING_DEAD_FRONT); else if (sEText == "dr" || sEText == "drink") DoDrink(oEPC); else if (sEText == "dm" || sEText == "demand") DoLoopAnimation(oEPC, ANIMATION_LOOPING_TALK_FORCEFUL); else if (sEText == "dg" || sEText == "dodge") DoFireForgetAnimation(oEPC, ANIMATION_FIREFORGET_DODGE_SIDE); else if (sEText == "dn" || sEText == "drunk") DoDrunk(oEPC); else ShoutBlock(oEPC, nEChannel); break; case 4:/*e*/ if (sEText == "ex" || sEText == "exhausted") DoTired(oEPC); else ShoutBlock(oEPC, nEChannel); break; default: ShoutBlock(oEPC, nEChannel); break; } break; case 1: switch(nText) { case 5:/*f*/ if (sEText == "fa" || sEText== "fatigue") DoTired(oEPC); else if (sEText == "fd" || sEText == "fakedead") DoFakeDeath(oEPC); else if (sEText == "fg" || sEText == "fidget") DoLoopAnimation(oEPC, ANIMATION_LOOPING_PAUSE2); else if (sEText == "fi" || sEText == "fiddle") DoLoopAnimation(oEPC, ANIMATION_LOOPING_GET_MID); else if (sEText == "fl" || sEText == "fall") DoLoopAnimation(oEPC, ANIMATION_LOOPING_DEAD_FRONT); else if (sEText == "fp" || sEText == "flop") DoLoopAnimation(oEPC, ANIMATION_LOOPING_DEAD_FRONT); else ShoutBlock(oEPC, nEChannel); break; case 6:/*g*/ if ((sEText == "gi" || sEText == "giggle") && (GetGender(oEPC) == GENDER_FEMALE)) DoGiggle(oEPC); else if (sEText == "gr" || sEText == "greet") DoFireForgetAnimation(oEPC, ANIMATION_FIREFORGET_GREETING); else if (sEText == "gn" || sEText == "groan") DoGroan(oEPC); else if (sEText == "gw" || sEText == "guffaw") DoLaugh2(oEPC); else if (sEText == "gb" || sEText == "gt" || sEText == "goodnight" || sEText == "goodbye") DoGoodbye(oEPC); else ShoutBlock(oEPC, nEChannel); break; case 7:/*h*/ if (sEText == "hm" || sEText == "hum") DoSong(oEPC); else if (sEText == "hy" || sEText == "hooray") DoCheer2(oEPC); else if (sEText == "hl" || sEText == "hello") DoFireForgetAnimation(oEPC, ANIMATION_FIREFORGET_GREETING); else if (sEText == "hw" || sEText == "howl") DoHowl(oEPC); else if (sEText == "ht" || sEText == "hoot") DoHoot(oEPC); else if (sEText == "hp" || sEText == "hiccup") DoHiccup(oEPC); else ShoutBlock(oEPC, nEChannel); break; //case 8:/*i*/ //break; //case 9:/*j*/ //break; default: ShoutBlock(oEPC, nEChannel); break; } break; case 2: switch(nText) { case 10:/*k*/ if (sEText == "kn" || sEText == "kneel") DoLoopAnimation(oEPC, ANIMATION_LOOPING_MEDITATE); else ShoutBlock(oEPC, nEChannel); break; case 11:/*l*/ if (sEText == "la" || sEText == "laugh") DoLaugh(oEPC); else if (sEText == "lie") DoLoopAnimation(oEPC, ANIMATION_LOOPING_DEAD_BACK); else if (sEText == "lk" || sEText == "look") DoLoopAnimation(oEPC, ANIMATION_LOOPING_LOOK_FAR); else ShoutBlock(oEPC, nEChannel); break; case 12:/*m*/ if (sEText == "md" || sEText == "meditate") DoLoopAnimation(oEPC, ANIMATION_LOOPING_MEDITATE); else if (sEText == "mk" || sEText == "mock") DoTaunt(oEPC); else if (sEText == "mn" || sEText == "moan") DoMoan(oEPC); else if (sEText == "mw" || sEText == "meow") DoMeow(oEPC); else if (sEText == "mo" || sEText == "moo") DoMoo(oEPC); else ShoutBlock(oEPC, nEChannel); break; case 13:/*n*/ if (sEText == "nd" || sEText == "nod") DoLoopAnimation(oEPC, ANIMATION_LOOPING_LISTEN); else if (sEText == "no") DoHeadShake(oEPC); else if (sEText == "np" || sEText == "nap") DoSleep(oEPC); else ShoutBlock(oEPC, nEChannel); break; case 14:/*o*/ if (sEText == "ow" || sEText == "ouch") DoOuch(oEPC); else ShoutBlock(oEPC, nEChannel); break; default: ShoutBlock(oEPC, nEChannel); break; } break; case 3: switch(nText) { case 15:/*p*/ if (sEText == "pe" || sEText == "peer") DoLoopAnimation(oEPC, ANIMATION_LOOPING_LOOK_FAR); else if (sEText == "pl" || sEText == "plead") DoLoopAnimation(oEPC, ANIMATION_LOOPING_TALK_PLEADING); else if (sEText == "pr" || sEText == "pray") DoLoopAnimation(oEPC, ANIMATION_LOOPING_MEDITATE); else if (sEText == "pn" || sEText == "prone") DoLoopAnimation(oEPC, ANIMATION_LOOPING_DEAD_FRONT); else if (sEText == "pu" || sEText == "puke") DoPuke(oEPC); else ShoutBlock(oEPC, nEChannel); break; //case 16:/*q*/ //break; case 17:/*r*/ if (sEText == "re" || sEText == "read") DoFireForgetAnimation(oEPC, ANIMATION_FIREFORGET_READ); else if (sEText == "rt" || sEText == "rest") DoLoopAnimation(oEPC, ANIMATION_LOOPING_DEAD_BACK); else if (sEText == "rr" || sEText == "roar") DoRoar(oEPC); else ShoutBlock(oEPC, nEChannel); break; case 18:/*s*/ if (sEText == "sa" || sEText == "salute") DoFireForgetAnimation(oEPC, ANIMATION_FIREFORGET_SALUTE); else if (sEText == "sn" || sEText == "scan") DoLoopAnimation(oEPC, ANIMATION_LOOPING_LOOK_FAR); else if (sEText == "sc" || sEText == "scratch") DoFireForgetAnimation(oEPC, ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD); else if (sEText == "sg" || sEText == "sing") DoSong(oEPC); else if (sEText == "sh" || sEText == "shift") DoLoopAnimation(oEPC, ANIMATION_LOOPING_PAUSE2); else if (sEText == "si" || sEText == "sit") DoLoopAnimation(oEPC, ANIMATION_LOOPING_SIT_CROSS); else if (sEText == "sip") DoDrink(oEPC); else if (sEText == "sl" || sEText == "sleep") DoSleep(oEPC); else if (sEText == "snore") DoSnore(oEPC); else if (sEText == "sk" || sEText == "smoke") SmokePipe(oEPC); else if (sEText == "sp" || sEText == "spasm") DoLoopAnimation(oEPC, ANIMATION_LOOPING_SPASM); else if (sEText == "st" || sEText == "steal" || sEText == "sw" || sEText == "swipe") DoFireForgetAnimation(oEPC, ANIMATION_FIREFORGET_STEAL); else if (sEText == "so" ||sEText == "stoop") DoLoopAnimation(oEPC, ANIMATION_LOOPING_GET_LOW); else if (sEText == "sr" || sEText == "stretch") DoFireForgetAnimation(oEPC, ANIMATION_FIREFORGET_PAUSE_BORED); else if (sEText == "sy" || sEText == "sway") DoLoopAnimation(oEPC, ANIMATION_LOOPING_PAUSE_DRUNK); else if (sEText == "sm" || sEText == "scream") DoScream(oEPC); else if (sEText == "sz" || sEText == "sneeze") DoSneeze(oEPC); else if (sEText == "spit") DoSpit(oEPC); else if (sEText == "snarl") DoSnarl(oEPC); else if (sEText == "screech") DoScreech(oEPC); else if (sEText == "sb" || sEText == "sob") DoCry(oEPC); else ShoutBlock(oEPC, nEChannel); break; case 19:/*t*/ if (sEText == "ta" || sEText == "taunt") DoTaunt(oEPC); else if (sEText == "th" || sEText == "threaten") DoLoopAnimation(oEPC, ANIMATION_LOOPING_TALK_FORCEFUL); else if (sEText == "ti" || sEText == "tired") DoTired(oEPC); else if (sEText == "tl" || sEText == "talk") DoLoopAnimation(oEPC, ANIMATION_LOOPING_TALK_NORMAL); else if (sEText == "tp" || sEText == "trip") DoLoopAnimation(oEPC, ANIMATION_LOOPING_DEAD_FRONT); else if (sEText == "tt" || sEText == "toast") DoToast(oEPC); else ShoutBlock(oEPC, nEChannel); break; default: ShoutBlock(oEPC, nEChannel); break; } break; case 4: switch(nText) { //case 20:/*u*/ //break; case 21:/*v*/ if (sEText == "vm" || sEText == "vomit") DoPuke(oEPC); else ShoutBlock(oEPC, nEChannel); break; case 22:/*w*/ if (sEText == "wa" || sEText == "wave") DoFireForgetAnimation(oEPC, ANIMATION_FIREFORGET_GREETING); else if (sEText == "wh" || sEText == "whistle") DoWhistle(oEPC); else if (sEText == "wo" || sEText == "worship") DoLoopAnimation(oEPC, ANIMATION_LOOPING_WORSHIP); else if (sEText == "wz" || sEText == "woozy") DoDrunk(oEPC); else if (sEText == "wl" || sEText == "wail") DoWail(oEPC); else if (sEText == "wp" || sEText == "weep") DoCry(oEPC); else ShoutBlock(oEPC, nEChannel); break; //case 23:/*x*/ //break; case 24:/*y*/ if (sEText == "yw" || sEText == "yawn") DoYawn(oEPC); else ShoutBlock(oEPC, nEChannel); break; default: ShoutBlock(oEPC, nEChannel); break; } break; //case 5: //switch(nText) //{ // case 25:/*z*/ // break; //} break; default: ShoutBlock(oEPC, nEChannel); break; } } else { SetLocalString(oEPC, "NWNX!CHAT!SUPRESS", "1"); FloatingTextStringOnCreature(COLOR_RED+NOT_DEAD_EM+COLOR_END, oEPC, FALSE); } } // oPC sText void DoSpamBan(object oSBPC, string sSBText) { string sKey = GetPCPublicCDKey(oSBPC); SetLocalString(oSBPC, "NWNX!CHAT!SUPRESS", "1");//mute em SetLocalInt(oSBPC, "FKY_CHT_BANSHOUT", TRUE);//temp ban em if (GetLocalString(oSBPC, "FKY_CHT_BANREASON") == "") SetLocalString(oSBPC, "FKY_CHT_BANREASON", sSBText); //capture the first message that got them busted so that that can't overwrite with something //benign to show the dms to get unbanned so they can try again if (USING_NWNX_DB) SetPersistentInt(GetModule(), "FKY_CHT_BANSHOUT"+ sKey, TRUE);//permaban em else SetCampaignInt("FKY_CHT", "FKY_CHT_BANSHOUT" + sKey, TRUE); // SendMessageToPC(oSBPC, COLOR_RED+PERMBANSHT1+COLOR_END);//tell em } string TranslateCommonToLanguage(int nLang, string sText) { string sReturn = ""; switch(nLang/10) { case 0: switch(nLang) { case 1: sReturn = ProcessDwarf(sText); break; case 2: sReturn = ProcessAlgarondan(sText); break; case 3: sReturn = ProcessAlzhedo(sText); break; case 4: sReturn = ProcessAquan(sText); break; case 5: sReturn = ProcessAssassinsCant(sText); break; case 6: sReturn = ProcessAuran(sText); break; case 7: sReturn = ProcessChessentan(sText); break; case 8: sReturn = ProcessChondathan(sText); break; case 9: sReturn = ProcessElven(sText); break; } break; case 1: switch(nLang) { case 10: sReturn = ProcessChultan(sText); break; case 11: sReturn = ProcessDamaran(sText); break; case 12: sReturn = ProcessDambrathan(sText); break; case 13: sReturn = ProcessDrowSign(sText); break; case 14: sReturn = ProcessDruidic(sText); break; case 15: sReturn = ProcessGnome(sText); break; case 16: sReturn = ProcessDurpari(sText); break; case 17: sReturn = ProcessGiant(sText); break; case 18: sReturn = ProcessGnoll(sText); break; case 19: sReturn = ProcessHalardrim(sText); break; } break; case 2: switch(nLang) { case 20: sReturn = ProcessHalruaan(sText); break; case 21: sReturn = ProcessIgnan(sText); break; case 22: sReturn = ProcessIlluskan(sText); break; case 23: sReturn = ProcessHalfling(sText); break; case 24: sReturn = ProcessImaskar(sText); break; case 25: sReturn = ProcessLantanese(sText); break; case 26: sReturn = ProcessMidani(sText); break; case 27: sReturn = ProcessMulhorandi(sText); break; case 28: sReturn = ProcessNexalan(sText); break; case 29: sReturn = ProcessOillusk(sText); break; } break; case 3: switch(nLang) { case 30: sReturn = ProcessRashemi(sText); break; case 31: sReturn = ProcessRaumvira(sText); break; case 32: sReturn = ProcessDrow(sText); break; case 33: sReturn = ProcessSerusan(sText); break; case 34: sReturn = ProcessShaaran(sText); break; case 35: sReturn = ProcessShou(sText); break; case 36: sReturn = ProcessSylvan(sText); break; case 37: sReturn = ProcessAnimal(sText); break; case 38: sReturn = ProcessTalfiric(sText); break; case 39: sReturn = ProcessTashalan(sText); break; } break; case 4: switch(nLang) { case 40: sReturn = ProcessTerran(sText); break; case 41: sReturn = ProcessTreant(sText); break; case 42: sReturn = ProcessTuigan(sText); break; case 43: sReturn = ProcessTurmic(sText); break; case 44: sReturn = ProcessCant(sText); break; case 45: sReturn = ProcessUluik(sText); break; case 46: sReturn = ProcessUndercommon(sText); break; case 47: sReturn = ProcessUntheric(sText); break; case 48: sReturn = ProcessVaasan(sText); break; case 49: sReturn = ProcessGoblin(sText); break; } break; case 5: switch(nLang) { case 50: sReturn = ProcessTroll(sText); break; case 51: sReturn = ProcessThriKreen(sText); break; case 52: sReturn = ProcessGrimlock(sText); break; case 53: sReturn = ProcessHalfOrc(sText); break; case 54: sReturn = ProcessKuoToan(sText); break; case 55: sReturn = ProcessKenderspeak(sText); break; case 56: sReturn = ProcessOrc(sText); break; case 57: sReturn = ProcessMinotaur(sText); break; case 58: sReturn = ProcessRakshasa(sText); break; case 59: sReturn = ProcessStinger(sText); break; } break; case 6: switch(nLang) { case 60: sReturn = ProcessLizardMan(sText); break; case 61: sReturn = ProcessIllithid(sText); break; case 62: sReturn = ProcessHobgoblin(sText); break; case 63: sReturn = ProcessDraconic(sText); break; case 64: sReturn = ProcessDuergar(sText); break; case 65: sReturn = ProcessBugBear(sText); break; case 66: sReturn = ProcessGithzerai(sText); break; case 67: sReturn = ProcessKorred(sText); break; case 68: sReturn = ProcessSahaguin(sText); break; case 69: sReturn = ProcessYuanTi(sText); break; } break; case 7: switch(nLang) { case 70: sReturn = ProcessPixie(sText); break; case 71: sReturn = ProcessMagic(sText); break; case 72: sReturn = ProcessInfernal(sText); break; case 73: sReturn = ProcessSirenSong(sText); break; case 74: sReturn = ProcessHengeyokai(sText); break; case 75: sReturn = ProcessSvirfneblin(sText); break; case 76: sReturn = ProcessHighShou(sText); break; case 77: sReturn = ProcessPsionic(sText); break; case 78: sReturn = ProcessAverial(sText); break; case 79: sReturn = ProcessKobold(sText); break; } break; case 8: switch(nLang) { case 80: sReturn = ProcessNecromantic(sText); break; case 81: sReturn = ProcessAbyssal(sText); break; case 82: sReturn = ProcessOgre(sText); break; case 89: sReturn = ProcessCelestial(sText); break; } break; case 9: switch(nLang) { case 99: sReturn = ProcessLeetspeak(sText); break; } break; } return sReturn; } void DoLanguageSetupNWNX(object oLPC) { string sSQLName = SQLEncodeSpecialChars(GetName(oLPC)); string sSQLPlayername = SQLEncodeSpecialChars(GetPCPlayerName(oLPC)); string sSQLDB = "SELECT name, val FROM pwdata WHERE player = '"+sSQLPlayername+"' AND tag = '"+sSQLName+"' AND name LIKE 'FKY_CHAT_%';"; SQLExecDirect(sSQLDB); while(SQLFetch() != SQL_ERROR) { SetLocalInt(oLPC, SQLDecodeSpecialChars(SQLGetData(1)), StringToInt(SQLDecodeSpecialChars(SQLGetData(2)))); } if (!GetLocalInt(oLPC, "FKY_CHAT_LANGBASE"))//int that tracks whether they have been tagged //as knowing languages based on their starting characteristics (others can be gained later //via leveling, teaching, etc) - if this int is absent we'll check the characters race, class, //and subrace, and tag him permanently with the languages he can speak. { switch(GetRacialType(oLPC)) { case RACIAL_TYPE_DWARF: SetLocalInt(oLPC, "FKY_CHAT_LANG1", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG1", TRUE); break; case RACIAL_TYPE_ELF: case RACIAL_TYPE_HALFELF: SetLocalInt(oLPC, "FKY_CHAT_LANG9", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG9", TRUE); break; case RACIAL_TYPE_GNOME: SetLocalInt(oLPC, "FKY_CHAT_LANG15", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG15", TRUE); break; case RACIAL_TYPE_HALFLING: SetLocalInt(oLPC, "FKY_CHAT_LANG23", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG23", TRUE); break; case RACIAL_TYPE_HUMANOID_ORC: case RACIAL_TYPE_HALFORC: SetLocalInt(oLPC, "FKY_CHAT_LANG56", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG56", TRUE); SetLocalInt(oLPC, "FKY_CHAT_LANG53", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG53", TRUE); break; case RACIAL_TYPE_HUMANOID_GOBLINOID: SetLocalInt(oLPC, "FKY_CHAT_LANG49", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG49", TRUE); break; case RACIAL_TYPE_HUMANOID_REPTILIAN: case RACIAL_TYPE_DRAGON: SetLocalInt(oLPC, "FKY_CHAT_LANG63", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG63", TRUE); break; } if (GetLevelByClass(CLASS_TYPE_RANGER, oLPC) || GetLevelByClass(CLASS_TYPE_DRUID, oLPC)) { SetLocalInt(oLPC, "FKY_CHAT_LANG37", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG37", TRUE); } if (GetLevelByClass(CLASS_TYPE_ROGUE, oLPC)) { SetLocalInt(oLPC, "FKY_CHAT_LANG44", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG44", TRUE); } if (GetLevelByClass(CLASS_TYPE_ASSASSIN, oLPC)) { SetLocalInt(oLPC, "FKY_CHAT_LANG5", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG5", TRUE); } if (GetLevelByClass(CLASS_TYPE_DRUID, oLPC)) { SetLocalInt(oLPC, "FKY_CHAT_LANG14", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG14", TRUE); } if ((GetLevelByClass(CLASS_TYPE_WIZARD, oLPC) || GetLevelByClass(CLASS_TYPE_SORCERER, oLPC) || GetLevelByClass(CLASS_TYPE_PALEMASTER, oLPC))) { SetLocalInt(oLPC, "FKY_CHAT_LANG71", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG71", TRUE); if (GetLevelByClass(CLASS_TYPE_PALEMASTER, oLPC)) { SetLocalInt(oLPC, "FKY_CHAT_LANG80", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG80", TRUE); } } string sPCSubrace = GetSubRace(oLPC); if (SubraceSpeaksDrow(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG32", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG32", TRUE); } if (SubraceSpeaksAnimal(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG37", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG37", TRUE); } if (SubraceSpeaksGoblin(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG49", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG49", TRUE); } if (SubraceSpeaksOrcish(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG56", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG56", TRUE); } if (SubraceSpeaksDraconic(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG63", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG63", TRUE); } if (SubraceSpeaksInfernal(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG72", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG72", TRUE); } if (SubraceSpeaksAbyssal(sPCSubrace) && ((sPCSubrace != "Tiefling") || (!GetLocalInt(oLPC, "FKY_CHAT_LANG72"))))//if Tieflings speak Infernal they don't speak abyssal { SetLocalInt(oLPC, "FKY_CHAT_LANG81", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG81", TRUE); } if (SubraceSpeaksCelestial(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG89", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG89", TRUE); } if (SubraceSpeaksLeetspeak(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG99", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG99", TRUE); } if (SubraceSpeaksAquan(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG4", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG4", TRUE); } if (SubraceSpeaksAuran(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG6", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG6", TRUE); } if (SubraceSpeaksGiant(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG17", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG17", TRUE); } if (SubraceSpeaksGnoll(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG18", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG18", TRUE); } if (SubraceSpeaksIgnan(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG21", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG21", TRUE); } if (SubraceSpeaksTerran(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG40", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG40", TRUE); } if (SubraceSpeaksTreant(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG41", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG41", TRUE); } if (SubraceSpeaksSylvan(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG36", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG36", TRUE); } if (SubraceSpeaksDrowSign(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG13", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG13", TRUE); } if (SubraceSpeaksUndercommon(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG46", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG46", TRUE); } if (SubraceSpeaksTroll(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG50", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG50", TRUE); } if (SubraceSpeaksThriKreen(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG51", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG51", TRUE); } if (SubraceSpeaksGrimlock(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG52", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG52", TRUE); } if (SubraceSpeaksKuoToan(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG54", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG54", TRUE); } if (SubraceSpeaksKenderspeak(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG55", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG55", TRUE); } if (SubraceSpeaksMinotaur(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG57", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG57", TRUE); } if (SubraceSpeaksRakshasa(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG58", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG58", TRUE); } if (SubraceSpeaksStinger(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG59", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG59", TRUE); } if (SubraceSpeaksLizardMan(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG60", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG60", TRUE); } if (SubraceSpeaksIllithid(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG61", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG61", TRUE); } if (SubraceSpeaksHobgoblin(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG62", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG62", TRUE); } if (SubraceSpeaksDuergar(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG64", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG64", TRUE); } if (SubraceSpeaksBugBear(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG65", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG65", TRUE); } if (SubraceSpeaksGithzerai(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG66", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG66", TRUE); } if (SubraceSpeaksKorred(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG67", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG67", TRUE); } if (SubraceSpeaksSahaguin(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG68", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG68", TRUE); } if (SubraceSpeaksYuanTi(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG69", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG69", TRUE); } if (SubraceSpeaksPixie(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG70", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG70", TRUE); } if (SubraceSpeaksSirenSong(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG73", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG73", TRUE); } if (SubraceSpeaksHengeyokai(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG74", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG74", TRUE); } if (SubraceSpeaksSvirfneblin(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG75", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG75", TRUE); } if (SubraceSpeaksPsionic(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG77", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG77", TRUE); } if (SubraceSpeaksAverial(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG78", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG78", TRUE); } if (SubraceSpeaksKobold(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG79", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG79", TRUE); } if (SubraceSpeaksOgre(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG82", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG82", TRUE); } SetPersistentInt(oLPC, "FKY_CHAT_LANGBASE", TRUE);//mark them as having passed through the base //languages check so it will not run again in the future } } void DoLanguageSetupBio(object oLPC) { object oStorage = GetItemPossessedBy(oLPC, TAG_OF_LANGUAGE_STORAGE_OBJECT); int nX; if (!GetIsObjectValid(oStorage))//object that tracks whether they have been tagged //as knowing languages based on their starting characteristics (others can be gained later //via leveling, teaching, etc) - if this object is absent we'll check the characters race, class, //and subrace, and tag him permanently with the languages he can speak. { oStorage = CreateItemOnObject(RESREF_OF_LANGUAGE_STORAGE_OBJECT, oLPC); SetItemCursedFlag(oStorage, TRUE); switch(GetRacialType(oLPC)) { case RACIAL_TYPE_DWARF: SetLocalInt(oLPC, "FKY_CHAT_LANG1", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG1", TRUE); break; case RACIAL_TYPE_ELF: case RACIAL_TYPE_HALFELF: SetLocalInt(oLPC, "FKY_CHAT_LANG9", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG9", TRUE); break; case RACIAL_TYPE_GNOME: SetLocalInt(oLPC, "FKY_CHAT_LANG15", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG15", TRUE); break; case RACIAL_TYPE_HALFLING: SetLocalInt(oLPC, "FKY_CHAT_LANG23", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG23", TRUE); break; case RACIAL_TYPE_HUMANOID_ORC: case RACIAL_TYPE_HALFORC: SetLocalInt(oLPC, "FKY_CHAT_LANG56", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG56", TRUE); SetLocalInt(oLPC, "FKY_CHAT_LANG53", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG53", TRUE); break; case RACIAL_TYPE_HUMANOID_GOBLINOID: SetLocalInt(oLPC, "FKY_CHAT_LANG49", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG49", TRUE); break; case RACIAL_TYPE_HUMANOID_REPTILIAN: case RACIAL_TYPE_DRAGON: SetLocalInt(oLPC, "FKY_CHAT_LANG63", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG63", TRUE); break; } if (GetLevelByClass(CLASS_TYPE_RANGER, oLPC) || GetLevelByClass(CLASS_TYPE_DRUID, oLPC)) { SetLocalInt(oLPC, "FKY_CHAT_LANG37", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG37", TRUE); } if (GetLevelByClass(CLASS_TYPE_ROGUE, oLPC)) { SetLocalInt(oLPC, "FKY_CHAT_LANG44", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG44", TRUE); } if (GetLevelByClass(CLASS_TYPE_ASSASSIN, oLPC)) { SetLocalInt(oLPC, "FKY_CHAT_LANG5", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG5", TRUE); } if (GetLevelByClass(CLASS_TYPE_DRUID, oLPC)) { SetLocalInt(oLPC, "FKY_CHAT_LANG14", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG14", TRUE); } if ((GetLevelByClass(CLASS_TYPE_WIZARD, oLPC) || GetLevelByClass(CLASS_TYPE_SORCERER, oLPC) || GetLevelByClass(CLASS_TYPE_PALEMASTER, oLPC))) { SetLocalInt(oLPC, "FKY_CHAT_LANG71", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG71", TRUE); if (GetLevelByClass(CLASS_TYPE_PALEMASTER, oLPC)) { SetLocalInt(oLPC, "FKY_CHAT_LANG80", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG80", TRUE); } } string sPCSubrace = GetSubRace(oLPC); if (SubraceSpeaksDrow(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG32", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG32", TRUE); } if (SubraceSpeaksAnimal(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG37", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG37", TRUE); } if (SubraceSpeaksGoblin(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG49", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG49", TRUE); } if (SubraceSpeaksOrcish(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG56", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG56", TRUE); } if (SubraceSpeaksDraconic(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG63", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG63", TRUE); } if (SubraceSpeaksInfernal(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG72", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG72", TRUE); } if (SubraceSpeaksAbyssal(sPCSubrace) && ((sPCSubrace != "Tiefling") || (!GetLocalInt(oLPC, "FKY_CHAT_LANG72"))))//if Tieflings speak Infernal they don't speak abyssal { SetLocalInt(oLPC, "FKY_CHAT_LANG81", TRUE); SetPersistentInt(oLPC, "FKY_CHAT_LANG81", TRUE); } if (SubraceSpeaksCelestial(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG89", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG89", TRUE); } if (SubraceSpeaksLeetspeak(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG99", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG99", TRUE); } if (SubraceSpeaksAquan(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG4", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG4", TRUE); } if (SubraceSpeaksAuran(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG6", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG6", TRUE); } if (SubraceSpeaksGiant(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG17", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG17", TRUE); } if (SubraceSpeaksGnoll(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG18", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG18", TRUE); } if (SubraceSpeaksIgnan(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG21", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG21", TRUE); } if (SubraceSpeaksTerran(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG40", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG40", TRUE); } if (SubraceSpeaksTreant(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG41", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG41", TRUE); } if (SubraceSpeaksSylvan(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG36", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG36", TRUE); } if (SubraceSpeaksDrowSign(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG13", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG13", TRUE); } if (SubraceSpeaksUndercommon(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG46", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG46", TRUE); } if (SubraceSpeaksTroll(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG50", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG50", TRUE); } if (SubraceSpeaksThriKreen(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG51", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG51", TRUE); } if (SubraceSpeaksGrimlock(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG52", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG52", TRUE); } if (SubraceSpeaksKuoToan(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG54", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG54", TRUE); } if (SubraceSpeaksKenderspeak(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG55", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG55", TRUE); } if (SubraceSpeaksMinotaur(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG57", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG57", TRUE); } if (SubraceSpeaksRakshasa(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG58", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG58", TRUE); } if (SubraceSpeaksStinger(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG59", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG59", TRUE); } if (SubraceSpeaksLizardMan(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG60", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG60", TRUE); } if (SubraceSpeaksIllithid(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG61", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG61", TRUE); } if (SubraceSpeaksHobgoblin(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG62", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG62", TRUE); } if (SubraceSpeaksDuergar(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG64", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG64", TRUE); } if (SubraceSpeaksBugBear(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG65", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG65", TRUE); } if (SubraceSpeaksGithzerai(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG66", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG66", TRUE); } if (SubraceSpeaksKorred(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG67", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG67", TRUE); } if (SubraceSpeaksSahaguin(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG68", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG68", TRUE); } if (SubraceSpeaksYuanTi(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG69", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG69", TRUE); } if (SubraceSpeaksPixie(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG70", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG70", TRUE); } if (SubraceSpeaksSirenSong(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG73", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG73", TRUE); } if (SubraceSpeaksHengeyokai(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG74", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG74", TRUE); } if (SubraceSpeaksSvirfneblin(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG75", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG75", TRUE); } if (SubraceSpeaksPsionic(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG77", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG77", TRUE); } if (SubraceSpeaksAverial(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG78", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG78", TRUE); } if (SubraceSpeaksKobold(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG79", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG79", TRUE); } if (SubraceSpeaksOgre(sPCSubrace)) { SetLocalInt(oLPC, "FKY_CHAT_LANG82", TRUE); SetLocalInt(oStorage, "FKY_CHAT_LANG82", TRUE); } } else//they've already been tagged with base languages, so retrieve those tags and set them //as locals on the PC { for (nX = 1; nX < 100; nX++) { if (GetLocalInt(oStorage, "FKY_CHAT_LANG"+IntToString(nX))) SetLocalInt(oLPC, "FKY_CHAT_LANG"+IntToString(nX), TRUE); } } } void HandleOneLiners(string sOLText, object oOLPC, int nOLChannel) { string sSpeak; sOLText = GetStringRight(sOLText, GetStringLength(sOLText) - 2); int nPos = FindSubString(sOLText, " "); string sSort = GetStringLowerCase(GetStringLeft(sOLText, nPos)); sOLText = GetStringRight(sOLText, GetStringLength(sOLText) - (nPos+1)); int nText = GetLanguageNumber(sSort); if (nText == -1) FloatingTextStringOnCreature(COLOR_RED+BADLANG+COLOR_END, oOLPC, FALSE); else { if (GetLocalInt(oOLPC, "FKY_CHAT_LANG" + IntToString(nText)))//can they speak it? { string sConvert = TranslateCommonToLanguage(nText, sOLText); string sKnow = COLOR_PURPLE + GetName(oOLPC) + " "+COLOR_END+COLOR_BLUE+"[" + GetNameOfLanguage(nText) + "] " + sOLText + COLOR_END; string sLore = COLOR_PURPLE + GetName(oOLPC) + " "+COLOR_END+COLOR_BLUE+"[" + GetNameOfLanguage(nText) + "] " + sConvert + COLOR_END; string sHuh = COLOR_PURPLE + GetName(oOLPC) + " "+COLOR_END+COLOR_BLUE+"["+UNKN_LANG+"] " + sConvert + COLOR_END; if (nOLChannel == 1)//talk { SpeakString(sConvert); object oListener = GetFirstPC(); object oArea = GetArea(oOLPC); while (GetIsObjectValid(oListener)) { if (GetArea(oListener) == oArea) { if (GetDistanceBetween(oOLPC, oListener) <= 15.0) { if (GetLocalInt(oListener, "FKY_CHAT_LANG" + IntToString(nText))) sSpeak = sKnow;//can they speak it? else if (LORE_ALLOWS_LANGUAGE_COMPREHENSION && (ModifiedGetIsSkillSuccessful(oListener, SKILL_LORE, GetLoreNeededToComprehendLanguage(nText)))) sSpeak = sKnow; else if (ModifiedGetIsSkillSuccessful(oListener, SKILL_LORE, LORE_NEEDED_TO_RECOGNIZE_LANGUAGE)) sSpeak = sLore; else sSpeak = sHuh; if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oListener, sSpeak, GetMessenger()); else SendMessageToPC(oListener, sSpeak); } } oListener = GetNextPC(); } } else if (nOLChannel == 6)//party { object oParty = GetFirstFactionMember(oOLPC); while (GetIsObjectValid(oParty)) { if (GetLocalInt(oParty, "FKY_CHAT_LANG" + IntToString(nText))) sSpeak = sKnow;//can they speak it? else if (LORE_ALLOWS_LANGUAGE_COMPREHENSION && (ModifiedGetIsSkillSuccessful(oParty, SKILL_LORE, GetLoreNeededToComprehendLanguage(nText)))) sSpeak = sKnow; else if (ModifiedGetIsSkillSuccessful(oParty, SKILL_LORE, LORE_NEEDED_TO_RECOGNIZE_LANGUAGE)) sSpeak = sLore; else sSpeak = sHuh; if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oParty, sSpeak, GetMessenger()); else SendMessageToPC(oParty, sSpeak); oParty = GetNextFactionMember(oOLPC); } } else FloatingTextStringOnCreature(COLOR_RED+CHAN_LANG+COLOR_END, oOLPC, FALSE); } else if (nText == 109) FloatingTextStringOnCreature(COLOR_RED+NO_COMMON_OL+COLOR_END, oOLPC, FALSE); else FloatingTextStringOnCreature(COLOR_RED+NO_SPEAK+ GetNameOfLanguage(nText) + "!"+COLOR_END, oOLPC, FALSE); } } void HandleTalkSpeak(string sTSText, object oTSPC, int nVolume = TALKVOLUME_TALK) { string sSpeak; string sEscape = ESCAPE_STRING; int nEscapeLength = GetStringLength(sEscape); int nLang = GetLocalInt(oTSPC, "FKY_CHT_SPEAKING"); if (nLang)//if they can set this via the relevant !Speak command then we know they can speak it (checked there) { if (GetStringLeft(sTSText, nEscapeLength) == ESCAPE_STRING) { sTSText = GetStringRight(sTSText, GetStringLength(sTSText) - nEscapeLength); SpeakString(sTSText, nVolume); SetLocalString(oTSPC, "NWNX!CHAT!SUPRESS", "1"); } else { string sConvert = TranslateCommonToLanguage(nLang, sTSText); string sKnow = COLOR_PURPLE + GetName(oTSPC) + " "+COLOR_END+COLOR_BLUE+"[" + GetNameOfLanguage(nLang) + "] " + sTSText + COLOR_END; string sLore = COLOR_PURPLE + GetName(oTSPC) + " "+COLOR_END+COLOR_BLUE+"[" + GetNameOfLanguage(nLang) + "] " + sConvert + COLOR_END; string sHuh = COLOR_PURPLE + GetName(oTSPC) + " "+COLOR_END+COLOR_BLUE+"["+UNKN_LANG+"] " + sConvert + COLOR_END; SpeakString(sConvert, nVolume); SetLocalString(oTSPC, "NWNX!CHAT!SUPRESS", "1"); object oListener = GetFirstPC(); object oArea = GetArea(oTSPC); float fRange = 15.0; if (nVolume == TALKVOLUME_WHISPER) fRange = 2.5; while (GetIsObjectValid(oListener)) { if (GetArea(oListener) == oArea) { if (GetDistanceBetween(oTSPC, oListener) <= fRange) { if (GetLocalInt(oListener, "FKY_CHAT_LANG" + IntToString(nLang))) sSpeak = sKnow;//can they speak it? else if (LORE_ALLOWS_LANGUAGE_COMPREHENSION && (ModifiedGetIsSkillSuccessful(oListener, SKILL_LORE, GetLoreNeededToComprehendLanguage(nLang)))) sSpeak = sKnow; else if (ModifiedGetIsSkillSuccessful(oListener, SKILL_LORE, LORE_NEEDED_TO_RECOGNIZE_LANGUAGE)) sSpeak = sLore; else sSpeak = sHuh; if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oListener, sSpeak, GetMessenger()); else SendMessageToPC(oListener, sSpeak); } } oListener = GetNextPC(); } } } else //they are not currently speaking a language { if (GetStringLeft(sTSText, nEscapeLength) == ESCAPE_STRING) { sTSText = GetStringRight(sTSText, GetStringLength(sTSText) - nEscapeLength); SpeakString(sTSText, nVolume); SetLocalString(oTSPC, "NWNX!CHAT!SUPRESS", "1"); } } } void HandlePartySpeak(string sPSText, object oPSPC) { string sSpeak; int nLang = GetLocalInt(oPSPC, "FKY_CHT_SPEAKING"); if (nLang)//if they can set this via the relevant !Speak command then we know they can speak it (checked there) { string sConvert = TranslateCommonToLanguage(nLang, sPSText); string sKnow = COLOR_PURPLE + GetName(oPSPC) + " "+COLOR_END+COLOR_BLUE+"[" + GetNameOfLanguage(nLang) + "] " + sPSText + COLOR_END; string sLore = COLOR_PURPLE + GetName(oPSPC) + " "+COLOR_END+COLOR_BLUE+"[" + GetNameOfLanguage(nLang) + "] " + sConvert + COLOR_END; string sHuh = COLOR_PURPLE + GetName(oPSPC) + " "+COLOR_END+COLOR_BLUE+"["+UNKN_LANG+"] " + sConvert + COLOR_END; SetLocalString(oPSPC, "NWNX!CHAT!SUPRESS", "1"); object oParty = GetFirstFactionMember(oPSPC); while (GetIsObjectValid(oParty)) { if (GetLocalInt(oParty, "FKY_CHAT_LANG" + IntToString(nLang))) sSpeak = sKnow;//can they speak it? else if (LORE_ALLOWS_LANGUAGE_COMPREHENSION && (ModifiedGetIsSkillSuccessful(oParty, SKILL_LORE, GetLoreNeededToComprehendLanguage(nLang)))) sSpeak = sKnow; else if (ModifiedGetIsSkillSuccessful(oParty, SKILL_LORE, LORE_NEEDED_TO_RECOGNIZE_LANGUAGE)) sSpeak = sLore; else sSpeak = sHuh; if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oParty, sSpeak, GetMessenger()); else SendMessageToPC(oParty, sSpeak); oParty = GetNextFactionMember(oPSPC); } } } void HandleMetaMessage(string sMMText, object oMMPC) { if (DISALLOW_METASPEECH_WHILE_DEAD && GetIsDead(oMMPC)) FloatingTextStringOnCreature(COLOR_RED+NOMETA1+COLOR_END, oMMPC, FALSE); else { string sInvite = GetLocalString(oMMPC, "FKY_CHT_META_GRP"); if (sInvite != "") { SetLocalString(oMMPC, "NWNX!CHAT!SUPRESS", "1"); sMMText = GetStringRight(sMMText, GetStringLength(sMMText) - 2); SendMetaMessage(oMMPC, sInvite, sMMText); } else FloatingTextStringOnCreature(COLOR_RED+NOMETA2+COLOR_END, oMMPC, FALSE); } } void HandleVentrilo(string sVText, object oVPC) { SetLocalString(oVPC, "NWNX!CHAT!SUPRESS", "1"); sVText = GetStringRight(sVText, GetStringLength(sVText) - 2); object oTarget = GetLocalObject(oVPC, "FKY_CHT_VENTRILO"); if (GetIsObjectValid(oTarget)) AssignCommand(oTarget, SpeakString(sVText)); else FloatingTextStringOnCreature(COLOR_RED+BADVENT+COLOR_END, oVPC, FALSE); } string GetCommandString(int nCommand) { string sReturn; switch (nCommand) { case 1: sReturn = COMMAND_SYMBOL + "settail"; break; case 2: sReturn = COMMAND_SYMBOL + "setwings"; break; case 3: sReturn = COMMAND_SYMBOL + "skillcheck"; break; case 4: sReturn = "dm_align_chaos"; break; case 5: sReturn = "dm_align_evil"; break; case 6: sReturn = "dm_align_good"; break; case 7: sReturn = "dm_align_law"; break; case 8: sReturn = "dm_fx"; break; case 9: sReturn = "dm_fx_loc"; break; case 10: sReturn = "dm_setcha"; break; case 11: sReturn = "dm_setcon"; break; case 12: sReturn = "dm_setdex"; break; case 13: sReturn = "dm_setint"; break; case 14: sReturn = "dm_setstr"; break; case 15: sReturn = "dm_setwis"; break; case 16: sReturn = "dm_setfort"; break; case 17: sReturn = "dm_setreflex"; break; case 18: sReturn = "dm_setwill"; break; case 19: sReturn = "dm_change_appear"; break; case 20: sReturn = "dm_givexp"; break; case 21: sReturn = "dm_takexp"; break; case 22: sReturn = "dm_givepartyxp"; break; case 23: sReturn = "dm_takepartyxp"; break; case 24: sReturn = "dm_givelevel"; break; case 25: sReturn = "dm_takelevel"; break; case 26: sReturn = "dm_givepartylevel"; break; case 27: sReturn = "dm_takepartylevel"; break; case 28: sReturn = "/l"; break; case 29: sReturn = "/m"; break; case 30: sReturn = "/v"; break; case 31: sReturn = COMMAND_SYMBOL + "setname"; break; case 32: sReturn = COMMAND_SYMBOL + "setnameall"; break; case 33: sReturn = "dm_create"; break; case 34: sReturn = "dm_spawn"; break; case 35: sReturn = "dm_sql"; break; case 36: sReturn = "dm_getvarint"; break; case 37: sReturn = "dm_getvarfloat"; break; case 38: sReturn = "dm_getvarstring"; break; case 39: sReturn = "dm_getvarmodint"; break; case 40: sReturn = "dm_getvarmodfloat"; break; case 41: sReturn = "dm_getvarmodstring"; break; case 42: sReturn = "dm_settime"; break; case 70: sReturn = "dm_setvarint"; break; case 71: sReturn = "dm_setvarfloat"; break; case 72: sReturn = "dm_setvarstring"; break; case 73: sReturn = "dm_setvarmodint"; break; case 74: sReturn = "dm_setvarmodfloat"; break; case 75: sReturn = "dm_setvarmodstring"; break; } return sReturn; } void DoCommandCompletion(object oCCPC, string sCCText, int nCommand) { SetLocalString(oCCPC, "NWNX!CHAT!SUPRESS", "1"); FloatingTextStringOnCreature(sCCText, oCCPC, FALSE);//so they can see what they entered without evading channel blocks int nStage = GetLocalInt(oCCPC, "FKY_CHAT_COMMAND_COM_STAGE"); string sInject = GetLocalString(oCCPC, "FKY_CHAT_COMMAND_COM_TRACKING"); if (nStage == 1)//add command and text and make the pc speak it { string sCommand = GetCommandString(nCommand); if (nCommand == 8 || nCommand == 9)//vfx numbers are intered after command, followed by dur type, duration, and subtype { while (GetStringLeft(sCCText, 1) == " ") sCCText = GetStringRight(sCCText, GetStringLength(sCCText) - 1);//parse out left spaces while (GetStringRight(sCCText, 1) == " ") sCCText = GetStringLeft(sCCText, GetStringLength(sCCText) - 1);//parse out right spaces string sFXType = GetLocalString(oCCPC, "FKY_CHAT_COMMAND_COM_FX_TYPE"); string sFXSubType = GetLocalString(oCCPC, "FKY_CHAT_COMMAND_COM_FX_SUB"); if (sFXType == "1") sFXType = sFXType + " " + sInject; //other two types, instant and permanent, already have dur set to 0 - (0 0 and 2 0) if (sFXSubType != "") sFXType = sFXType + " " + sFXSubType; sCommand = sCommand + " " + sCCText + " " + sFXType; } else { while (GetStringLeft(sCCText, 1) == " ") sCCText = GetStringRight(sCCText, GetStringLength(sCCText) - 1);//parse out left spaces if (sInject != "") sCommand = sCommand + " " + sInject; sCommand = sCommand + " " + sCCText; } //variable cleanup DeleteLocalInt(oCCPC, "FKY_CHAT_COMMAND_COMPLETE"); DeleteLocalInt(oCCPC, "FKY_CHAT_COMMAND_COM_STAGE"); DeleteLocalString(oCCPC, "FKY_CHAT_COMMAND_COM_TRACKING"); DeleteLocalString(oCCPC, "FKY_CHAT_COMMAND_COM_FX_TYPE"); DeleteLocalString(oCCPC, "FKY_CHAT_COMMAND_COM_FX_SUB"); DeleteLocalInt(oCCPC, "FKY_CHAT_COMMAND_COM_FX_FUNC");//shouldn't ever still be here by now, just a failsafe DeleteLocalString(oCCPC, "FKY_CHAT_COMMAND_COM_MENU");//shouldn't ever still be here by now, just a failsafe ////////////////// SetLocalString(oCCPC, "FKY_CHAT_COMMAND_EXE", sCommand);//set the command to speak on them DelayCommand(0.1, ExecuteScript("fky_chat_command", oCCPC));//this ensures the spoken string fires the chat script again } else if (nStage == 2) { string sPrompt; while (GetStringLeft(sCCText, 1) == " ") sCCText = GetStringRight(sCCText, GetStringLength(sCCText) - 1);//parse out left spaces while (GetStringRight(sCCText, 1) == " ") sCCText = GetStringLeft(sCCText, GetStringLength(sCCText) - 1);//parse out right spaces if (nCommand > 69) sPrompt = COMCOM17; else sPrompt = COMCOM5; SetLocalString(oCCPC, "FKY_CHAT_COMMAND_COM_TRACKING", sCCText); SetLocalInt(oCCPC, "FKY_CHAT_COMMAND_COM_STAGE", 1);//signal transition to last input stage FloatingTextStringOnCreature(COLOR_GOLD+sPrompt+COLOR_END, oCCPC, FALSE); } } void DoStealth(object oSPC, object oSTarget, string sSText, int nSChannel, string sSLogMessageTarget) { SetLocalString(oSPC, "NWNX!CHAT!SUPRESS", "1"); SendMessageToPC(oSPC, DMSTEALTH1); if (SEND_CHANNELS_TO_CHAT_LOG) SendChatLogMessage(oSTarget, COLOR_PURPLE+GetName(oSPC)+COLOR_END+COLOR_WHITE+DMSTEALTH2+sSText, GetMessenger()); else SendMessageToPC(oSTarget, COLOR_PURPLE+GetName(oSPC)+COLOR_END+COLOR_WHITE+DMSTEALTH2+sSText); if (TEXT_LOGGING_ENABLED) DoLogging(oSPC, sSLogMessageTarget, nSChannel, sSText); DoCleanup(oSPC); } void HandleOtherSpeech(object oHOPC, object oHOTarget, string sHOText, int nHOChannel, string sHOLogMessageTarget) { string sHOTarget, sEscape; switch(nHOChannel)//all speech besides emotes, player commands, and metachannels - sort by channel { ////////////Player speaker channels from 1-14 /*talk*/ case 1: if (ENABLE_METALANGUAGE_CONVERSION) { if (GetStringLowerCase(sHOText) == "lol" ) { SpeakString(LOL); SetLocalString(oHOPC, "NWNX!CHAT!SUPRESS", "1"); } else if (ENABLE_LANGUAGES) HandleTalkSpeak(sHOText, oHOPC); } else if (ENABLE_LANGUAGES) HandleTalkSpeak(sHOText, oHOPC); break; /*shout*/ case 2: if (GetLocalInt(oHOPC, "FKY_CHT_BANSHOUT"))//check for shout ban { SetLocalString(oHOPC, "NWNX!CHAT!SUPRESS", "1");//mute em SendMessageToPC(oHOPC, COLOR_RED+BANNEDSHT+COLOR_END);//tell em } else if (GetIsSpam(sHOText) && SPAMBLOCK_ENABLED && (!VerifyDMKey(oHOPC)) && (!VerifyAdminKey(oHOPC))) DoSpamBan(oHOPC, sHOText);//check for advertising spam break; /*whisper*/ case 3: if (ENABLE_LANGUAGES) HandleTalkSpeak(sHOText, oHOPC, TALKVOLUME_WHISPER); break; /*tell*/ case 4: sHOTarget = GetPCPlayerName(oHOPC); if (GetLocalInt(oHOTarget, "FKY_CHT_IGNORE" + sHOTarget))//check for ignore { SetLocalString(oHOPC, "NWNX!CHAT!SUPRESS", "1");//mute em SendMessageToPC(oHOPC, COLOR_RED + GetName(oHOTarget)+ISIGNORED+COLOR_END);//tell em } //HandleDMTraffic(oHOPC, oHOTarget, sHOText, sHOLogMessageTarget, nHOChannel);//handles dm traffic and tell forwarding//now handled earlier DMTellForwarding(oHOPC, sHOLogMessageTarget, sHOText, nHOChannel); //check for tell options break; /*party*/ case 6: if (ENABLE_LANGUAGES) HandlePartySpeak(sHOText, oHOPC); break; /*dm*/ case 14: if (GetLocalInt(oHOPC, "FKY_CHT_BANDM"))//check for DM ban { SetLocalString(oHOPC, "NWNX!CHAT!SUPRESS", "1");//mute em SendMessageToPC(oHOPC, COLOR_RED+BANNEDDM+COLOR_END);//tell em } if (DM_PLAYERS_HEAR_DM) DMChannelForwardToDMs(oHOPC, sHOText);//check for dm players hearing dm if (ADMIN_PLAYERS_HEAR_DM) DMChannelForwardToAdmins(oHOPC, sHOText);//check for admin players hearing dm break; ////////////DM speaker channels from 17-30 /*talk*/ //case 17: /*shout*/ //case 18: /*whisper*/ //case 19: /*tell*/ case 20: //HandleDMTraffic(oHOPC, oHOTarget, sHOText, sHOLogMessageTarget, nHOChannel);//handles dm traffic and tell forwarding//now handled earlier DMTellForwarding(oHOPC, sHOLogMessageTarget, sHOText, nHOChannel); //check for tell options break; /*party*/ //case 22: /*dm*/ case 30: if (DM_PLAYERS_HEAR_DM) DMChannelForwardToDMs(oHOPC, sHOText); //check for dm players hearing dm if (ADMIN_PLAYERS_HEAR_DM) DMChannelForwardToAdmins(oHOPC, sHOText);//check for admin players hearing dm break; } if (ENABLE_PERMANENT_CHANNEL_MUTING && GetIsChannelSuppressed(nHOChannel) && (!VerifyDMKey(oHOPC)) && (!VerifyAdminKey(oHOPC)) && (GetIsPC(oHOPC) || (!PERMANENT_CHANNEL_MUTING_FOR_PC_ONLY))) SetLocalString(oHOPC, "NWNX!CHAT!SUPRESS", "1");//if the channel is always suppressed then suppress it else if (DISALLOW_SPEECH_WHILE_DEAD && GetIsChannelDeadSuppressed(nHOChannel) && GetIsDead(oHOPC) && (!VerifyDMKey(oHOPC)) && (!VerifyAdminKey(oHOPC))) SetLocalString(oHOPC, "NWNX!CHAT!SUPRESS", "1");//otherwise suppress it when they are dead if it is deadsuppressed else if (DISALLOW_SPEECH_WHILE_SILENCED && GetIsChannelSilencedSuppressed(nHOChannel) && GetIsSilenced(oHOPC) && (!VerifyDMKey(oHOPC)) && (!VerifyAdminKey(oHOPC))) SetLocalString(oHOPC, "NWNX!CHAT!SUPRESS", "1");//otherwise suppress it when they are silenced if it is silencedsuppressed } //void main(){}