User Tools

Site Tools



tensorreactions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tensorreactions [2020/01/20 05:42] rikudoutensorreactions [2021/04/18 17:24] (current) anyone
Line 11: Line 11:
 </WRAP> </WRAP>
 <WRAP center round tip 60%> <WRAP center round tip 60%>
-Join https://discord.gg/bVABzBA for support and reactions.+Join https://discord.gg/bVABzBA for support and reactions. Check the #files channel for profiles that have been shared publicly.
  
-We also have file sharing drive: https://drive.google.com/drive/u/0/folders/1555e-dLqVPViuq1bAcn6D7DwdmQuQvSm+**If you are new user, please watch this video first:** https://www.youtube.com/watch?v=iyo0hs5_-dA
 </WRAP> </WRAP>
  
Line 75: Line 75:
 would add a 500ms delay to this reaction. would add a 500ms delay to this reaction.
  
-**You cannot invoke the action override from here! You must use lua action if you wish to do that manually.** +You can also invoke the ACR override by returning the following from your lua code: 
 + 
 +**''//table// action, //number// targetID, //bool// __ignoreWeaveRules__, //bool// __allowInterrupt__''** 
 + 
 +Argument //action// must be valid action from the ActionList. **If you choose to return an action from lua, make sure the "Lua Returns Action" box is checked!**
  
 ===== Condition UI ===== ===== Condition UI =====
-{{https://i.imgur.com/potm5yy.png }} The way this list works is, you create your conditions here, and then link them to specific actions below. That way you can have multiple actions using the same condition without having to make a new condition every time. Every action will also have it's own independent list of linked conditions.+{{https://i.imgur.com/wuLbvge.png }} The way this list works is, you create your conditions here, and then link them to specific actions below. That way you can have multiple actions using the same condition without having to make a new condition every time. Every action will also have it's own independent list of linked conditions.
  
 **Category**: General category that exposes more options. **Self contains most of the important ones, such as Gauge, Map ID, Skill Cooldown checks, etc**, however I encourage you to explore the options and ask in the discord if you don't understand any of them. **Category**: General category that exposes more options. **Self contains most of the important ones, such as Gauge, Map ID, Skill Cooldown checks, etc**, however I encourage you to explore the options and ask in the discord if you don't understand any of them.
Line 85: Line 89:
  
 **Emnity**: This value is target.aggropercentage on your current target. **Emnity**: This value is target.aggropercentage on your current target.
 +
 +**Filter**: Filter condition will loop over your target list and set detection target, then run your conditions. In the linked conditions to filter, you must set detection target to be the target you are checking on (party > target: detection target), and then once it's done it will look at the list of all targets that match, pick a subtype, and then set that as detection target. Then you link your skill action and use detection target as your target, with the filter condition linked. **Tip**: You can set "min number of entities" to 0, and enable "match all", and effectively this will become an "OR" condition. Setting min entities to 0 just means reactions will ignore your target list and simply evaluate the conditions as is.
  
 **Lua**: If you make a lua reaction, **you must return a boolean, else your condition will be ignored**. Important variables that you can use: **Lua**: If you make a lua reaction, **you must return a boolean, else your condition will be ignored**. Important variables that you can use:
Line 121: Line 127:
 </code> </code>
 would invoke the hotbar method inside of TensorRequiem to use natures minne on your main tank. would invoke the hotbar method inside of TensorRequiem to use natures minne on your main tank.
 +
 +You can also invoke the ACR override by returning the following from your lua code:
 +
 +**''//table// action, //number// targetID, //bool// __ignoreWeaveRules__, //bool// __allowInterrupt__''**
 +
 +Argument //action// must be a valid action from the ActionList. **If you choose to return an action from lua, make sure the "Lua Returns Action" box is checked!**
  
 ====== General UI ====== ====== General UI ======
Line 135: Line 147:
 __data__: same as timelines, for you to use as you wish. This data variable may prove very useful in general reactions as you can set it based on certain events happening. For example: on limit cut in TEA, you get marker number 5. You can use the OnEntityMarkerAdd event and see which marker is added on you, and store that in a data.myLimitCutNumber variable. You can use that variable to use certain skills in the timeline for tea (remember that data object is **shared between everything, general timeline reactions included** __data__: same as timelines, for you to use as you wish. This data variable may prove very useful in general reactions as you can set it based on certain events happening. For example: on limit cut in TEA, you get marker number 5. You can use the OnEntityMarkerAdd event and see which marker is added on you, and store that in a data.myLimitCutNumber variable. You can use that variable to use certain skills in the timeline for tea (remember that data object is **shared between everything, general timeline reactions included**
  
-__eventArgs__: this is the new arg for general lua reactions/actions/conditions. It is different for each event (listed below).+__eventArgs__: this is the new arg for general lua reactions/actions/conditions.  It is a table, and each key is different for each event (listed below). Example usage: d(eventArgs.entityID) 
 + 
 +You can also invoke the ACR override by returning the following from your lua code: 
 + 
 +**''//table// action, //number// targetID, //bool// __ignoreWeaveRules__, //bool// __allowInterrupt__''** 
 + 
 +Argument //action// must be a valid action from the ActionList. **If you choose to return an action from lua, make sure the "Lua Returns Action" box is checked!** 
 + 
 +====== Additional Documentation ====== 
 +===== Globals ===== 
 +  * **''TensorReactions_CurrentTimer''** 
 +    * Contains a **copy** of the current internal timer that reactions uses 
 +===== Event Information ===== 
 +  * **''OnUpdate''**: no args, simply an event that runs every frame
  
-OnUpdateno args, simply an event that runs every frame+  * **''OnEntityCast''**Triggered the moment an entity casts an instant cast action, or successfully finishes a channel action 
 +    * entityID 
 +      * id of entity that is casting action 
 +    * spellID 
 +      * id of spell that entity is casting
  
-OnEntityCast: Triggered the moment an entity casts an instant cast action, or successfully finishes a channel action +  * **''OnEntityChannel''**: Triggered the moment an entity starts channeling an action 
-  * entityID +    * entityID 
-    * id of entity that is casting action +      * id of entity that's channeling the spell 
-  * spellID +    * spellID 
-    * id of spell that entity is casting+      * id of the action being channeled 
 +    * targetID 
 +      * id of target the action is being casted on 
 +    * channelTimeMax 
 +      * how long the entity needs to channel for before the cast is finished
  
-OnEntityChannel: Triggered the moment an entity starts channeling an action +  * **''OnEntityMarkerAdd''**: Triggered whenever a marker is added above an entity (stack marker etc). I recommend making a debug trigger on this one so you can find out the marker types, or ask in the discord. 
-  * entityID +    * entityID 
-    * id of entity that's channeling the spell +      * id of entity the marker is added to 
-  * channelID +    * markerID 
-    * id of the action being channeled +      marker type that is being added (this value is consistent; it will always be the same for the same mechanic)
-  targetID +
-    * id of target the action is being casted on +
-  * channelTimeMax +
-    * how long the entity needs to channel for before the cast is finished+
  
-OnEntityMarkerAdd: Triggered whenever a marker is added above an entity (stack marker etc)I recommend making a debug trigger on this one so you can find out the marker types, or ask in the discord+  * **''OnEntityAdd''**: Triggered whenever a new entity is added/loaded inUseful for detecting when add spawns happen. These will also trigger on reset so you should have a combat check on any entity add/remove reactions
-  * entityID +    * entityID 
-    * id of entity the marker is added to +      * id of entity that was added 
-  markerID +    entityName 
-    marker type that is being added (this value is consistent; it will always be the same for the same mechanic)+      name of entity that was added
  
-OnEntityAdd: Triggered whenever a new entity is added/loaded inUseful for detecting when add spawns happen. These will also trigger on reset so you should have a combat check on any entity add/remove reactions. +  * **''OnEntityRemove''**: Triggered whenever an entity is removed/unloaded**This is not the same as when an entity dies, often an entity will die but still exist for a 5-10 seconds after** These will also trigger on reset so you should have a combat check on any entity add/remove reactions. 
-  * entityID +    * entityID 
-    * id of entity that was added +      * id of entity that was removed 
-  * entityName +    * entityName 
-    * name of entity that was added+      * name of entity that was removed
  
-OnEntityRemove: Triggered whenever an entity is removed/unloaded**This is not the same as when an entity dies, often an entity will die but still exist for a 5-10 seconds after** These will also trigger on reset so you should have a combat check on any entity add/remove reactions+  * **''OnNewChatLine''**: Triggered whenever a new chat message is sent, including combat logUseful for detecting certain phase transitions and various misc reactions 
-  * entityID +    * line 
-    * id of entity that was removed +      * line **object** that was sent. Use line.line to get the actual text.
-  entityName +
-    name of entity that was removed+
  
-OnNewChatLine: Triggered whenever a new chat message is sent, including combat log. Useful for detecting certain phase transitions and various misc reactions +  * **''OnNewBuffEntry''**: Triggered whenever a buff is added to an entity 
-  line +    entityID 
-    * line **object** that was sent. Use line.line to get the actual text.+      * id of entity that buff was added to 
 +    * buffID 
 +      id of buff that was added 
 +    buffDuration 
 +      duration of buff that was added 
 +    ownerID 
 +      * owner of the buff that was added to entity
  
-OnNewBuffEntry: Triggered whenever a buff is added to an entity +  * **''OnWipe''**: no args, simply gets triggered when you go out of combat, and **only gets triggered if a valid timeline is loaded** to prevent situations like dungeons constantly triggering onwipe()
-  entityID +
-    id of entity that buff was added to +
-  buffID +
-    id of buff that was added +
-  buffDuration +
-    duration of buff that was added +
-  ownerID +
-    owner of the buff that was added to entity+
  
-OnWipe: no argssimply gets triggered when you go out of combat, and **only gets triggered if a valid timeline is loaded** to prevent situations like dungeons constantly triggering onwipe()+===== Additional Functions ===== 
 +//italics// = type__underline__ = optional
  
 +  * **''TensorCore.isAnyEntityCasting(//number// castid, //string// __elistFilters__)''**
 +    * Returns //bool// if any entity is **channeling** action ''castid'', and //table// entity that is channeling ''castid''. Optionally, elistFilters can be specified to check a more narrow list of entities.
 +  * **''TensorCore.isEntityAlive(//number// contentid, //string// __elistFilters__)''**
 +    * Returns //bool// if entity with ''contentid'' is alive, and //table// entity that is matches ''contentid'' and is alive. Optionally, elistFilters can be specified to check a more narrow list of entities.
 +  * **''TensorCore.getEntityByGroup(//string// strGroup, //string or table// subGroup, //bool// __inParty__, //number// __range__, //number// __szCluster__)''**
 +    * Returns //table// entity of specified group and subgroup. If strGroup is "Named Target" or "ContentID" then subgroup **must be a table** that contains keys "name", "subgroup", and "contentid". Example: ''{name = "Striking Dummy", subgroup = "Nearest", contentid = 541}''. Important note: you don't need contentid if strGroup is "Named Target", and you don't need name if strGroup is "ContentID". Subgroup will default to nearest in all cases.
 +    * Full list of strGroups: ''{"All", "Self", "Named Target", "ContentID", "Current Target", "Enemy", "Target of Current Target", "Target Spell of Current Target", "Most Clustered Ally", "Most Clustered Enemy", "Party", "Main Tank", "Off Tank", "Tank", "Melee DPS", "Ranged DPS", "Ranged Physical DPS", "Ranged Caster DPS", "Healer"}''
 +    * Full list of subGroups: ''{"Nearest", "Lowest HP", "Highest HP", "Number"}'' Important Note: Number will simply return the list of strGroup targets back to you.
 +    * Full list of strGroups that require a subgroup: ''{"Named Target", "Enemy", "Party", "Tank", "ContentID", "Melee DPS", "Ranged DPS", "Ranged Physical DPS", "Ranged Caster DPS", "Healer", "Target Spell of Current Target"}''
 +  * **''TensorCore.resetTTKTargets(//number// ...)''**
 +    * This function accepts a variable number of arguments. Given an id, it will reset all time to kill data on that entity. Useful for Living Liquid / Living hand split in TEA p1 that throws off TTK. Example Usage: ''TensorCore.resetTTKTargets(123, 456)''. This will reset ttk info on entities with id 123 and 456.
  
  
tensorreactions.1579498955.txt.gz · Last modified: 2020/01/20 05:42 by rikudou