Item Ideas - thatlonelybugbear/FoundryMacros GitHub Wiki
MidiQOL and DAE are meant to be prerequisites for these.
Pack Tactics.
This will give advantage to all attacks when there is an ally of the attacker within 5ft of the target.
- Create an Item (feature).
- Create a DAE on it, with:
Transfer to actor on item equip
checked in the Details tab of the DAE.- Effect with:
key
:flags.midi-qol.advantage.attack.all
mode
:Custom
value
:(computeDistance(token, target) <=5 && findNearbyCount(-1, targetUuid, 5) > 1) || (computeDistance(token,target) > 5 && !!findNearbyCount(-1, targetUuid, 5))
Advantage on Attacks against Fire Elementals and they have disadvantage to hit you.
Checks if the opponent creature is set as a Type: Elemental, Subtype: Fire and applies advantage/disadvantage when needed.
- Create an Item (feature).
- Create a DAE on it, with:
Transfer to actor on item equip
checked in the Details tab of the DAE.- and two Effects entries:
key
:flags.midi-qol.advantage.attack.all
mode
:Custom
value
:target.details.type?.value?.toLocaleLowerCase().includes("elemental") && target.details.type?.subtype?.toLocaleLowerCase().includes("fire")
andkey
:flags.midi-qol.grants.disadvantage.attack.all
mode
:Custom
value
:target.details.type?.value?.toLocaleLowerCase().includes("elemental") && target.details.type?.subtype?.toLocaleLowerCase().includes("fire")
Sunlight Sensitivity attacking disadvantage.
Conditional disadvantage on skill checks not yet implemented in MidiQOL- Create an Item (feature).
- Create a DAE on it, with:
Transfer to actor on item equip
checked in the Details tab of the DAE.- and an Effect entry:
key
:flags.midi-qol.disadvantage.attack.all
mode
:Custom
value
:findNearby(null,tokenUuid,200).some((t) => t.document.light.animation.type=="sunburst" && getDistance(t,fromUuidSync(tokenUuid).object) <= t.document.light.dim)
*use a big enough distance in the findNearby function to try to catch all relevant lights on tokens. Some more checks needed for lights on scene, which cannot be done currently.
Checks if the sunlight sensitive creature is inside the dim radius of a creature emitting light which has the Sunburst
animation type.
Gavel of the Venn Rune - Arbiters Shield.
Opponents roll attacks against you with disadvantage until your first turn in combat.
- Create an Item (feature).
- Create a DAE on it, with:
Transfer to actor on item equip
checked in the Details tab of the DAE.- and an Effect entry:
key
:flags.midi-qol.grants.disadvantage.attack.all
mode
:Custom
value
:target?.token?.combatant?.combat?.round === 1 && target.token.combatant.combat.turn < target.token.combatant.combat.turns.findIndex(i=>i.tokenId === target.tokenId)
Rogue's Assassinate.
Attack with advantage against targets that haven't acted yet, during the first turn in combat.(update from Michael)
- Create an Item (feature).
- Create a DAE on it, with:
Transfer to actor on item equip
checked in the Details tab of the DAE.- and an Effect entry:
key
:flags.midi-qol.advantage.attack.all
mode
:Custom
value
:target?.token?.combatant?.combat?.round === 1 && target.token.combatant.combat.turn < target.token.combatant.combat.turns.findIndex(i=>i.tokenId === target.tokenId)
- and another:
key
:flags.midi-qol.critical.all
mode
:Custom
value
:target?.effects?.some(eff=>eff.name === 'Surprised')
Invisibility condition vs See invisibility.
These conditionals on the DAE Midi-QOL flags should correctly identify if the actor on which the Invisible condition is applied, is in range of another actor with the See Invisible sight detection Mode and correctly apply relevant (dis/)advantage to attacks.
- On the DFreds or otherwise provided Invisible condition alter the relevant MidiQOL flags as shown.
key
:flags.midi-qol.advantage.attack.all
mode
:Custom
value
:workflow.targets?.first().detectionModes?.find(d=>d.id === "seeInvisibility") ? computeDistance(workflow.token,workflow.targets.first(),true) > workflow.targets.first().detectionModes.find(d=>d.id === "seeInvisibility").range : true
andkey
:flags.midi-qol.grants.disadvantage.attack.all
mode
:Custom
value
:workflow.token?.document.detectionModes?.find(d=>d.id === "seeInvisibility") ? computeDistance(workflow.token,workflow.targets.first(),true) > workflow.token.document.detectionModes.find(d=>d.id === "seeInvisibility").range : true;