You can modify field descriptions and red warning messages on-the-fly, possibly to reflect changes in requiredness. Example, on changing the priority to Blocker (or Highest in newer JIRA versions), the Description help text changes:

high pri

To do this you put a validator on for example, "Priority", with the following code:

def formField = getFieldById(getFieldChanged())
def descField = getFieldById("description")

def priority = formField.getValue()?.name
if (priority == "Highest") { // choose priority by name
    descField.setHelpText("Please explain why priority is Highest.")
    descField.setRequired(true)
}
else {
    descField.clearHelpText()
    descField.setRequired(false)
}

For how-to questions please ask on Atlassian Answers where there is a very active community. Adaptavist staff are also likely to respond there.

Ask a question about ScriptRunner for JIRA, for for Bitbucket Server, or for Confluence.