English | 繁體中文
If you don't want to use module to do it
// get a actor called test
let test =game.actors.getName("test");
// get item id called XD3kQ0JxvPDamH2m
let testitem=game.items.get("XD3kQ0JxvPDamH2m");
// add item to actor
test.createEmbeddedDocuments("Item", [testitem.toObject()])// get item in actor
let item;
// using delete function to removed item from actor
item.delete();// id format: Compendium.dnd5e_classpack.itempack.Item.A8FA9E9D797EC9FB
// removed Compendium
// dnd5e_classpack.itempack is pack id
// A8FA9E9D797EC9FB is item id
// first get pack
let testPack = game.packs.get("dnd5e_classpack.itempack");
// then use id to find item
let testItem = await testPack.getDocument("A8FA9E9D797EC9FB");- Create item
- Click "scriptable item" button on top
- It will open a edit page
- add triggers with button
- add script
// get actor
let cActor = actor;
// item you wanna transform
let giveItem=game.items.get("B1QGodNijs2Ro5Ie");
// add item to actor
cActor.createEmbeddedDocuments("Item", [giveItem.toObject()])
// delete chat room button message generated from this script
optional.message.delete();
// remove original item
item.delete();Using "Scriptable Items" setup.
Change the script;
new Dialog({
// put menu title here
title: "Transform select menu",
// put instruction in here
content: "This is transfrom instructions",
// setting buttons also selection in below
buttons: {
button1: {
// this is button called "A"
label: "A",
callback: () => {
// put code give item, select item and delete message in here
// here is how button work so just put code in here area
)},
// setting icon here
icon: `<i class="fas fa-check"></i>`
},
button2: {
label: "B",
callback: () => {
},
icon: `<i class="fas fa-times"></i>`
}
}
}).render(true);Dynamic Active Effects Instruction
- Create item
- Click "active effect" button on top
- setting effect pause and transfer effect to actor, and your effect name
- setting effect attribute to
macro.itemMacro - add script
// when effect turn on it trigger
if(args[0]=="on"){
// get last args-> last args contains multiple args we need
let cArgs = args[args.length-1];
// get actor equipped or held item
let cActor = fromUuidSync(cArgs.actorUuid);
// get item triggered effect
let cItem = cArgs.item;
// get effect name
let cEfName = cArgs.efData.name;
let giveItemId = "";
// if effect name called "A"
// then item will be transform into itemA
if(cEfName==="A"){
// get itemA id and replace it
giveItemId="itemAid";
}
if(cEfName==="B"){
giveItemId="itemBid";
}
// if get right effect name then give player item and delete triggered item
if(giveItemId!==""){
// get transfromed item
let giveItem=game.items.get(giveItemId);
// add item to actor
cActor.createEmbeddedDocuments("Item", [giveItem.toObject()])
// removed original item
cItem .delete();
}
}











