CR to XP
Jump to navigation
Jump to search
This macro is a framework for calculating XP and is setup for D&D 5e. This specific implementation will search the current map for any token with in a dead state and then lookup the CR from the properties table. For JMR monster tokens, this is a variable in the json-formatted __MECHANICS_META__ property.
Example output when this macro is run:
Listing the Dead
Name: Drow XP: 700
Name: Goblin 9 XP: 50
Name: Grick 1 XP: 450
Name: Goblin 12 XP: 50
Name: Goblin 7 XP: 50
Name: Goblin 11 XP: 50
Name: Goblin 10 XP: 50
Name: Goblin 17 XP: 50
Name: Hobgoblin 4 XP: 100
Name: Wolf XP: 50
Name: Goblin 1 XP: 50
Name: Goblin 2 XP: 50
Name: Goblin 3 XP: 50
Name: Goblin 4 XP: 50
Name: Goblin 8 XP: 50
Name: Goblin 13 XP: 50
Map Total XP: 1900
Macro
[h: broadcast("<b>Listing the Dead</b> <br>", "gm")]
[h: cond = json.set("{}", "setStates", "['Dead']")]
[h: ids = getTokenNames("json", cond)]
[h: mapXP = 0]
[h, foreach(id,ids),CODE:{
[h: CR = json.get(getProperty("__MECHANICS_META__", id),"CR")]
[h, switch(CR),CODE:
case "0": {[XP = 10]};
case "1/8": {[XP = 25]};
case "1/4": {[XP = 50]};
case "1/2": {[XP = 100]};
case "1": {[XP = 200]};
case "2": {[XP = 450]};
case "3": {[XP = 700]};
case "4": {[XP = 1100]};
case "5": {[XP = 1800]};
case "6": {[XP = 2300]};
case "7": {[XP = 2900]};
case "8": {[XP = 3900]};
case "9": {[XP = 5000]};
case "10": {[XP = 5900]};
case "11": {[XP = 7200]};
case "12": {[XP = 8400]};
case "13": {[XP = 10000]};
case "14": {[XP = 11500]};
case "15": {[XP = 13000]};
case "16": {[XP = 15000]};
case "17": {[XP = 18000]};
case "18": {[XP = 20000]};
case "19": {[XP = 22000]};
case "20": {[XP = 25000]};
case "21": {[XP = 33000]};
case "22": {[XP = 41000]};
case "23": {[XP = 50000]};
case "24": {[XP = 62000]};
case "25": {[XP = 75000]};
case "26": {[XP = 90000]};
case "27": {[XP = 105000]};
case "28": {[XP = 120000]};
case "29": {[XP = 135000]};
case "30": {[XP = 155000]};]
[mapXP = mapXP + XP]
[h: broadcast("<b>Name:</b> " + id +" <b>XP: </b>" + XP + "<br>", "gm")]
}]
[h: broadcast("<b>Map Total XP: </b> " + mapXP + "<br>", "gm")]]