Guest User

Untitled

a guest
Aug 12th, 2020
587
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Checkout the repo examples to get an idea of other ways you can use scripting
  2. // https://github.com/AIDungeon/Scripting/blob/master/examples
  3.  
  4. members = ['Frodo', 'Sam', 'Merry', 'Pippin', 'Gandalf', 'Aragorn', 'Legolas', 'Gimli', 'Boromir']
  5.  
  6. const modifier = (text) => {
  7.   splitText = text.split('[/]')
  8.   inputText = splitText[0]
  9.   memText = memory
  10.   if (splitText.length > 1) {
  11.     inputArray = splitText[1].split(',')
  12.     numToGen = parseInt(inputArray[0])
  13.     selectionArray = []
  14.     if (inputArray.length > 1) {
  15.       exclusions = inputArray.slice(1)
  16.       for (i = 0; i < members.length; i++) {
  17.         member = members[i]
  18.         if (!exclusions.includes(member)) {
  19.           selectionArray.push(member)
  20.         }
  21.       }
  22.     } else {
  23.       selectionArray = members.slice()
  24.     }
  25.     state.message = 'Selection:'
  26.     for (i = 0; i < numToGen; i++) {
  27.       memberIndex = Math.floor(Math.random() * selectionArray.length)
  28.       member = selectionArray[memberIndex]
  29.       state.message += ' ' + member + ','
  30.       memberPlaceholder = '[member' + i.toString() + ']'
  31.       while (inputText.includes(memberPlaceholder)) {
  32.         inputText = inputText.replace(memberPlaceholder, member)
  33.       }
  34.       while (memText.includes(memberPlaceholder)) {
  35.         memText = splitMem[1].replace(memberPlaceholder, member)
  36.       }
  37.       selectionArray.splice(memberIndex, 1)
  38.     }
  39.   } else {
  40.     state.message = ''
  41.   }
  42.  
  43.   splitMem = memText.split('[/]')
  44.   state.memory.context = splitMem[0]
  45.   if (splitMem.length > 1) {
  46.     if (state.message != '') {
  47.       state.message += '\n'
  48.     }
  49.     trimmedText = inputText.trim()
  50.     lastChars = trimmedText.slice(-2)
  51.     if (lastChars.match(/.[.!?]|[.!?]['"]?/i)) {
  52.       state.memory.frontMemory = splitMem[1]
  53.       state.message += 'frontMemory: '
  54.     } else {
  55.       state.memory.context += ' ' + splitMem[1]
  56.       state.message += 'context: '
  57.     }
  58.     state.message += splitMem[1]
  59.   }
  60.  
  61.   return {text: inputText}
  62. }
  63.  
  64. // Don't modify this part
  65. modifier(text)
Add Comment
Please, Sign In to add comment