This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
kitanois_dungeon_framework [2025/01/16 07:09] – kitanoi | kitanois_dungeon_framework [2025/04/07 18:22] (current) – kitanoi | ||
---|---|---|---|
Line 37: | Line 37: | ||
overflow: visible; /* Set default overflow to visible */ | overflow: visible; /* Set default overflow to visible */ | ||
} | } | ||
+ | |||
body:target { | body:target { | ||
overflow: hidden; | overflow: hidden; | ||
Line 146: | Line 147: | ||
</ | </ | ||
<li class=" | <li class=" | ||
- | <img src=" | + | <img src=" |
- | </ | + | </ |
+ | |||
+ | <li class=" | ||
+ | <img src=" | ||
+ | </ | ||
<li class=" | <li class=" | ||
<img src=" | <img src=" | ||
Line 159: | Line 164: | ||
<li class=" | <li class=" | ||
<img src=" | <img src=" | ||
- | </ | + | </ |
+ | <li class=" | ||
+ | <img src=" | ||
+ | </ | ||
<li class=" | <li class=" | ||
<img src=" | <img src=" | ||
Line 536: | Line 544: | ||
-------------------------------------------------------------- | -------------------------------------------------------------- | ||
- | |||
- | ====API==== | ||
- | |||
- | Example Profile: | ||
- | < | ||
- | local tbl = { | ||
- | name = "Stone Vigil synced no loot", | ||
- | dutyid = 168, | ||
- | objectivedestinations = { | ||
- | [1] = {objective = 1, pos = {x = 0.58, y = 0.09, z = 112.31}}, | ||
- | [2] = {objective = 2, pos = {x = 49.50, y = 4, z = -79.79}}, | ||
- | [3] = {objective = 3, pos = {x = -0.00, y = 0.01, z = -265.70}}, | ||
- | |||
- | }, | ||
- | forcemeleerange = {1677}, | ||
- | queuetype = 1, | ||
- | interactdistance = 20, | ||
- | enemytargetdistance = 15, | ||
- | tankat = { | ||
- | [1] = {contentid = 1677, frompercent = 100, topercent = 95, pos = {x = 0.05, y = 0.01, z = 107.83}, desc = "tank first boss away from party from 100-95%" | ||
- | }, | ||
- | hasbuff = { | ||
- | }, | ||
- | interacts = { | ||
- | [1] = {contentid = 2001880, priority = 1, req = {objective = 3, complete = false}, priority = 1, type = " | ||
- | }, | ||
- | avoidentity= { | ||
- | [1] = {contentid= 1678, radius = 6}, | ||
- | }, | ||
- | incombatinteract= { | ||
- | [1] = {interactid= " | ||
- | }, | ||
- | prioritytarget = { | ||
- | }, | ||
- | puddledata= { | ||
- | [1] = {castid = 1023, radius= 5, duration = 60, desc = "ice puddle left by isebind" | ||
- | [2] = {castid = 1024, radius= 6, duration = 60, desc = "ice puddle left by isebind while flying" | ||
- | }, | ||
- | advancedavoid = { | ||
- | }, | ||
- | overheadmarkers = { | ||
- | }, | ||
- | } | ||
- | return tbl | ||
- | </ | ||
- | |||
- | **dutyid** - [int][required] This is the localmapid of the dungeon you wish to run. | ||
- | < | ||
- | dutyid = 616, | ||
- | </ | ||
- | < | ||
- | d(Player.localmapid) | ||
- | </ | ||
- | * can be obtained by entering the dungeon and typing the above code snippet into the console. | ||
- | |||
- | **mesh** - [string][optional] The name of the mesh you want to use, or blank. | ||
- | < | ||
- | name = " | ||
- | </ | ||
- | |||
- | **objectivedestinations** - [table][required] - The positions of each objective. If the dungeon is linear, you can define each objective as the same position. Ensure there is an entry for the correct amount of objectives in the dungeon. | ||
- | < | ||
- | objectivedestinations = { | ||
- | [1] = {objective = 1, pos = {x = 21.91, y = 7.10, z = 27.38}}, | ||
- | [2] = {objective = 2, pos = {x = 114.30, y = -3.155, z = -24.09}}, | ||
- | [3] = {objective = 3, pos = {x = -13.54, y = 5.74, z = -91.40}}, | ||
- | [4] = {objective = 4, pos = {x = -113.26, y = -1.069, z = -53.45}}, | ||
- | [5] = {objective = 5, pos = {x= -13.3, y= 35.67, z= -237.70}}, | ||
- | }, | ||
- | </ | ||
- | * due to only using a single destination point, you must ensure the mesh you are using is correctly meshed and includes all necessary OMCs. | ||
- | |||
- | **queuetype** - [int][required] - 1: synced, 2: unsynced, 3: trusts, 4: squadron, 10: variant, 13: criterion | ||
- | < | ||
- | | ||
- | </ | ||
- | |||
- | **type** - [string][required*] * regular duty doesn' | ||
- | < | ||
- | type = " | ||
- | </ | ||
- | |||
- | **vcactions** [table][optional] - used to determine which variant dungeon actions to queue with. If nil, cure and rampart are selected. | ||
- | < | ||
- | | ||
- | </ | ||
- | |||
- | < | ||
- | [0] = " | ||
- | [1] = " | ||
- | [2] = " | ||
- | [3] = " | ||
- | [4] = " | ||
- | </ | ||
- | |||
- | **trustdata** [table][required*] * required if using type = " | ||
- | < | ||
- | trustdata = { | ||
- | mapid = 837, | ||
- | scenario = false, | ||
- | }, | ||
- | </ | ||
- | |||
- | **bossids** - [table][optional] - Expects contentid. Will force melee range above 90% HP on those targets. | ||
- | < | ||
- | bossids = {6241, | ||
- | </ | ||
- | |||
- | **interacts** - [table][required] - Field is required even if it is just an empty table. | ||
- | < | ||
- | interacts = { | ||
- | [1] = {contentid = 897, priority = 2, type = " | ||
- | [2] = {contentid = 893, priority = 2, type = " | ||
- | [3] = {contentid = 894, priority = 1, type = " | ||
- | [4] = {contentid = 898, priority = 1, type = " | ||
- | [5] = {contentid = 895, priority = 2, type = " | ||
- | [6] = {contentid = 896, priority = 3, type = " | ||
- | [7] = {contentid = 899, priority = 4, type = " | ||
- | [8] = {contentid = 1004346, priority = 1, req = {objective = 1, complete = false}, type = " | ||
- | [9] = {contentid = 2001537, priority = 9, desc = " | ||
- | [10] = {contentid = 2000180, priority = 10, desc = " | ||
- | [11] = {contentid = 1013331, priority = 11, req = {objective = 1, name = "???" | ||
- | |||
- | }, | ||
- | </ | ||
- | * contentid - contentid of the interactable object | ||
- | * priority - if you need to get a key then open a door, set the key as priority 1 and the door as priority 2. | ||
- | * type - this is just a description for your reference. | ||
- | * req [table][required] This will make it so this interact only happens if objective is met. | ||
- | Options: | ||
- | - {objective = y, complete = z}, --only do if objective x is complete or not | ||
- | - {type = " | ||
- | - {objective = 1, value = x} --used for when keys or another collectable item is in objective 1. Like keys in Copperbell mines | ||
- | |||
- | |||
- | **prioritytarget** - [table][req] | ||
- | < | ||
- | prioritytarget = { | ||
- | [1] = {contentid = 6238, priority = 1, type = "first boss scorpion" | ||
- | [2] = {contentid = 6244, priority = 2, type = "last boss sharks" | ||
- | [3] = {contentid = 6245, priority = 3, type = " | ||
- | }, | ||
- | </ | ||
- | * contentid - contentid of the priority target | ||
- | * priority - if two or more priority targets will be alive at the same time, set the priority accordingly. | ||
- | * type - this is just a description for your reference. | ||
- | |||
- | Table can be empty, but is a required to be in the profile. | ||
- | |||
- | **hasbuff** - [table][optional] - Handles specific mechanics when a buff is detected on the player. Two modes available. | ||
- | * move - As in the example above, after you get the old debuff on the second boss of Shisui, you want to move away from the chest to avoid opening it again before it is needed. | ||
- | * interact - Useful in areas such as Aurum Vale first boss where you need to interact with the fruit to remove the debuff. | ||
- | < | ||
- | hasbuff = { [1] = {type = " | ||
- | [2] = {type = " | ||
- | }, | ||
- | </ | ||
- | |||
- | **advancedavoid** - [table][optional] | ||
- | < | ||
- | advancedavoid = { | ||
- | [1] = {castingid = 545454, type = " | ||
- | [2] = {castingid = 998899, type = " | ||
- | [3] = {castingid = 12587, type = " | ||
- | [4] = {castingid = 8058, type = " | ||
- | [5] = {castingid = 5557, type = " | ||
- | [6] = {castingid = 5557, type = " | ||
- | [7] = {castingid = 20999, type = " | ||
- | [8] = {castingid = 16777, type = " | ||
- | [9] = {type = " | ||
- | [10] = {type = " | ||
- | [11] = {type = " | ||
- | [12] = {type = " | ||
- | [13] = {castingid = 16777, type = " | ||
- | }, | ||
- | </ | ||
- | |||
- | * los - Line of Sight. Provide the entity casting (entityone), | ||
- | * singlefixed - Useful for stacking or where there is no risk stacking characters together to avoid. | ||
- | * faceaway - Faceaway from the cast. | ||
- | * multifixed - Need to spread during a cast, provide the positions for each character (4 for a 4 person dungeon, and 8 for a trial / raid) | ||
- | * moveinfront - image below | ||
- | * movebehind - image below | ||
- | * moveleftofenemy - image below | ||
- | * moverightofenemy - image below | ||
- | * movefrontleftofenemy - image below | ||
- | * movefrontrightofenemy - image below | ||
- | * setdistance - moves to a set distance away from the targeted enemy when it starts casting the spell. Will clear target. | ||
- | * setdistancefrom - will move you a set distance away from the designated position when an enemy starts casting the spell. | ||
- | * castingid tends to be the channelingid seen in minions dev scanner. | ||
- | * type trust - castingid only if wanting to follow a trust during a channel / cast. | ||
- | * type trust - trusttype: entity[req] contentid, pos[req] table of position, variance[req] int max distance from specified position to search for entity. | ||
- | * type custom - customdetails: | ||
- | - function - create your own function with the function name customfunction() as shown above. | ||
- | - libraryfunction - call a function from your own addon, enclose the function name in "" | ||
- | |||
- | Custom Functions Timers: | ||
- | |||
- | < | ||
- | KitanoiSettings.DFTimer | ||
- | KitanoiSettings.DFTimer2 | ||
- | KitanoiSettings.DFTimer3 | ||
- | KitanoiSettings.DFTimer4 | ||
- | KitanoiSettings.DFTimer5 | ||
- | </ | ||
- | |||
- | These are ints. They are used as so: | ||
- | |||
- | < | ||
- | --3000 can be changed to as often as you want it to run | ||
- | if (TimeSince(KitanoiSettings.DFTimer)> | ||
- | --do something | ||
- | --set the timer as now so to delay again. | ||
- | KitanoiSettings.DFTimer = Now() | ||
- | end | ||
- | |||
- | </ | ||
- | |||
- | These two options are in advancedavoid, | ||
- | |||
- | {{: | ||
- | |||
- | Using these options, you will move to the point specified around your targeted enemy. Useful for spinning attacks. | ||
- | |||
- | **overheadmarkers** - [table][optional] Will be able to specify markers and types and whether to stack or spread. | ||
- | < | ||
- | overheadmarkers = { | ||
- | [1] = {id = 123, | ||
- | | ||
- | desc= " | ||
- | type = " | ||
- | | ||
- | pos = {[1] = {x=-9.98, | ||
- | | ||
- | | ||
- | [2] = {id = 124, | ||
- | | ||
- | desc= " | ||
- | type = " | ||
- | | ||
- | pos = {[1] = {x=-9.98, | ||
- | | ||
- | }, | ||
- | | ||
- | [3] = {id = 62, | ||
- | | ||
- | desc= " | ||
- | type = " | ||
- | | ||
- | | ||
- | | ||
- | }, | ||
- | [4] = { id = 62, | ||
- | | ||
- | desc= " | ||
- | | ||
- | type = " | ||
- | | ||
- | pos = { | ||
- | [1] = {x=20, | ||
- | [2] = {x=20, | ||
- | [3] = {x=20, | ||
- | [4] = {x=20, | ||
- | | ||
- | | ||
- | }, | ||
- | }, | ||
- | }, | ||
- | </ | ||
- | * desc: is just a description and not required | ||
- | * contentid: [string] to link the overhead marker to a boss. This is for instances where multiple bosses use the same marker ids. If using multiple ids, separate them with a semi colon. | ||
- | * type: currently just supports move, possibly in the future will add others as people tell me if any others are necessary. spread, you need to provide the positions to spread to, stack will move to the character with the stack marker. | ||
- | * detectwho: me - only detects for the individual character and handle it is the marker is on them, any will detect the marker on any player and do the mechanic whether or not they have a marker. any is designed for stacking, whereas me is for spreading. | ||
- | * pos [table] individual positions for each character as shown above, in 8 man content you'd need to provide 8 positions. | ||
- | * returnpos [table][required] individual positions for each character as shown above, in 8 man content you'd need to provide 8 positions. This is the point to return to after spreading for markers. Useful for when puddles are left. | ||
- | * timetoreturn [int][required] in seconds to wait before returning to returnpos | ||
- | * precise [bool][optional] if false, your character will only move to the specified position if the distance is > 5. Ideal to use when there is some avoidance happening at the same time as the stack marker. | ||
- | * movetoentity [bool][optional] nil if not being used. Instead of specifying specific locations, you will move to within 5 yalms of the target of the overhead marker. | ||
- | |||
- | **useactions** [table][optional] Will attempt to use duty actions. Options for target are " | ||
- | < | ||
- | useaction = { | ||
- | [1] = {actiontree = 1, actionid = 9823, target = " | ||
- | [2] = {actiontree = 1, actionid = 9824, target = " | ||
- | [3] = {actiontree = 1, actionid = 12257, target = " | ||
- | }, | ||
- | </ | ||
- | * contentid can be multiple for enemypos, use a string separated by ; - eg. " | ||
- | Can use the following in the console to find actions: | ||
- | |||
- | KitanoiFuncs.FindAction(str) | ||
- | |||
- | Replace str with the action name inside of " - case doesn' | ||
- | | ||
- | **enemytargetdistance** [int][optional] set this to the distance you wish the radius around the tank (or solo) character to be checked when trying to target enemies. If you are finding a nav issue whereas your character runs passed a boss, increase this number until you stop running past. If this option isn't used, the default distance is 30. | ||
- | < | ||
- | enemytargetdistance = 30, | ||
- | </ | ||
- | |||
- | **dontclearfriendlytargets** [table][optional] | ||
- | < | ||
- | dontclearfriendlytargets = {1234, | ||
- | </ | ||
- | By default, Dungeon Framework clears target whenever you are targeting a friendly entity. When using UseAction, you may need to be targeting the cannon or object. Put that object contentid in this table and it will not clear the target automatically. | ||
- | |||
- | **Free For All**[bool][optional] Profile level setting Free For All option. Instead of following the tank (if there is one in the party) run to each objective as if you were solo. | ||
- | < | ||
- | FFA = true, | ||
- | </ | ||
- | |||
- | **meleeavoid**[bool][optional] Profile level setting to enable or disable melee avoid (melee only). Useful to disable for large bosses like Zodiark to avoid failing to find a safe spot. | ||
- | < | ||
- | meleeavoid = true, | ||
- | meleeavoid = false, | ||
- | </ | ||
- | |||
- | |||
- | **prioritytargetdistance** [int][optional] distance to search for priority targets. If this option isn't used, the default distance is 30. | ||
- | < | ||
- | prioritytargetdistance = 30, | ||
- | </ | ||
- | |||
- | **interactdistance** [int][optional] distance to search for interacts (loot, | ||
- | < | ||
- | interactdistance = 30, | ||
- | </ | ||
- | |||
- | **requeuetimer** [int][optional] Time required after leaving a dungeon before requeuing. If this option isn't used, the default time is 15 seconds. | ||
- | < | ||
- | requeuetimer = 30, | ||
- | </ | ||
- | |||
- | **meshchange** [table][optional] Will change mesh based on below options. Will revert to default / selected mesh when a loading screen is detected. This is useful for fights such as titan where the platform shrinks at certain %. | ||
- | * percent [int/ | ||
- | * castid [int]- when an enemy is casting a certain spell (channelingid) | ||
- | * newmesh [string] - name of the mesh you wish to change to. | ||
- | * reverttimer [int][optional] - revert to original mesh after this many seconds. | ||
- | < | ||
- | meshchange = { | ||
- | [1] = {type = " | ||
- | [2] = {type = " | ||
- | }, | ||
- | </ | ||
- | |||
- | **togglewalk** [table][optional] useful when you need precise navigation such as in Dohn Mheg. When inside of the polygon and on the specified mesh, walking will be enabled. If not on the specified mesh, or outside of the polygon, normal running speed it used. | ||
- | * polygon - for a triangle, provide 3 points, square 4, complex shapes any number of points. | ||
- | * meshname - current mesh name must match this before the walk takes effect. | ||
- | < | ||
- | togglewalk = { | ||
- | [1] = {polygon= {[1] = {x = 12, z = 21}, [2] = {x = 21, z = 12}, [3] = {x = 38, z = 38}}, meshname = "The Naval - Smallest, desc = " | ||
- | }, | ||
- | </ | ||
- | |||
- | **excludeavoid** [table][optional] Way to stop my avoidance avoiding some aoes, such as those that are part of a stack marker. channelingid of each cast separated by a comma. | ||
- | < | ||
- | excludeavoid = {1,2,3,4,5} | ||
- | </ | ||
- | |||
- | **dontexcludeaoe** [table][optional] Way to ensure aoes are avoided. This was added for large aoes that are greater than the auto exclude distance shown in the avoidance tab. An example is Zodiark' | ||
- | |||
- | |||
- | < | ||
- | dontexcludeaoe = {1234, | ||
- | </ | ||
- | |||
- | Through advancedavoid, | ||
- | < | ||
- | KitanoiSettings.DFIndexedExcludeAvoid[aoeid] = true -- excludes an aoe | ||
- | KitanoiSettings.DFIndexedExcludeAvoid[aoeid] = nil -- removes an excluded aoe (that you have previously added) | ||
- | </ | ||
- | |||
- | **tankspecific** [table][optional] Used when you have 2 tanks needing to tank separate enemies at specific locations. Will auto turn on tank stance (will get turned off again on OT) get 100% aggro, then move to designated position. | ||
- | < | ||
- | tankspecific = { | ||
- | [1] = { | ||
- | who = " | ||
- | }, | ||
- | [2] = { | ||
- | who = " | ||
- | }, | ||
- | [3] = { | ||
- | who = " | ||
- | } | ||
- | [4] = { | ||
- | who = " | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | **tankbuster** [table][optional] All characters except tank or the character that is currently has 100% aggro will avoid. | ||
- | < | ||
- | tankbuster = {1,2,3,4,5} | ||
- | </ | ||
- | |||
- | **tankat** [table][optional] Allows you to specify a position, % from and % to to tank at that position. This is useful if you need to be able to move the boss at certain %. This will only work for tanks, or those who are at the top of the aggro list. | ||
- | < | ||
- | tankat= { | ||
- | [1] = {contentid = 12345, frompercent = 100, topercent = 95, pos = {x = 1, y = 2, z = 3}, desc = "tank boss 12345 at this pos from 100-95%" | ||
- | }, | ||
- | </ | ||
- | * contentid [required] contentid of the enemy | ||
- | * frompercent [required] should be the higher % | ||
- | * topercent [required] should be the lower % | ||
- | * pos [required] position to tank at | ||
- | |||
- | **puddledata** [table][optional] Specify spells that leave puddles on the floor. Provide the channelingid, | ||
- | < | ||
- | puddledata= { | ||
- | [1] = {castid = 12345, radius= 5, duration = 15, type = " | ||
- | [2] = {castid = 15545, radius= 5, duration = 15, type = " | ||
- | }, | ||
- | </ | ||
- | |||
- | **pullenemyoutofpuddle** [bool][optional] Used in combination with puddledata. Useful for the final boss of Brayflox Longstop to pull Aiatar out of the puddles. Isn't perfect, but is successful. | ||
- | < | ||
- | pullenemyoutofpuddle = true, | ||
- | </ | ||
- | |||
- | **incombatinteract** [table][optional] | ||
- | < | ||
- | incombatinteract= { | ||
- | [1] = {interactid= 12345, type= " | ||
- | [2] = {interactid= " | ||
- | [3] = {interactid= 54345, type= " | ||
- | }, | ||
- | </ | ||
- | * contentid - contentid of the entity you need to interact with | ||
- | * type - interact: just interact - move: interact and move to a point | ||
- | * who - closest: only the person closest to the interact will perform the action - all: all characters will attempt to interact | ||
- | * action - used when you need to place an item after moving. type is which tree the action is in, actionid is the actionid | ||
- | * pos - place to move to and use action (place item) | ||
- | * dist - radius around pos that you can place the item | ||
- | * buffid - this is needed to trigger the move to pos | ||
- | * desc - decription for your reference | ||
- | * req [table][optional] castingid and desc | ||
- | |||
- | **avoidentity**[table][optional] - Used to avoid moving entities, like those on the second boss in Stone Vigil. Set the radius slightly larger than where the aoe is. | ||
- | < | ||
- | avoidentity= { | ||
- | [1] = {contentid= 12345, radius = 5, type = " | ||
- | [2] = {contentid= 12345, radius = 5}, | ||
- | [3] = {contentid= 52341, type = " | ||
- | }, | ||
- | </ | ||
- | * radius is used for circle avoids | ||
- | * type: Optional - " | ||
- | |||
- | **forcemeleerange**[table][optional] | ||
- | < | ||
- | forcemeleerange= {12345, | ||
- | </ | ||
- | |||
- | * contentid separated by a comma. | ||
- | |||
- | |||
- | **faceenemyaway**[table][optional] | ||
- | < | ||
- | faceenemyaway = {12345, | ||
- | </ | ||
- | |||
- | * contentid separated by a comma. | ||
- | |||
- | Tank, when at 100% aggro will attempt to face away any enemy with a matching contentid away from the party. | ||
- | |||
- | **tethers** - handles tethers | ||
- | < | ||
- | tethers = { | ||
- | [1] = {id = 12, type = " | ||
- | [2] = {id = 12, type = " | ||
- | [3] = {id = 17, type = " | ||
- | [4] = {id = 79, type = " | ||
- | |||
- | }, | ||
- | </ | ||
- | * id: tether id | ||
- | * type: avoid: area around the entity that is tethered needs to be avoided. stack: stack with other entity | ||
- | * radius: combined with avoid - radius around entity to not avoid into. | ||
- | * who: entityone / entitytwo: one tether from, two tether to. | ||
- | * pos: table with any number of positions you want to use. It will check each position isn't in an aoe / puddle(if defined) and move to the first one it finds. Format of the table is : PosTable = { Character1 = {data}, Character2 = {}} | ||
- | |||
- | **limitbreak** | ||
- | < | ||
- | limitbreak = { | ||
- | [1] = {contentid = 9505, percent = 15, level = 1, type = " | ||
- | [2] = {contentid = 9511, percent = 15, level = 2, type = " | ||
- | [3] = {contentid = 1234, percent = 95, level = 1, type = " | ||
- | }, | ||
- | </ | ||
- | |||
- | * contentid of enemy you wish to use the LB on, must be targeting it. | ||
- | * percent - will be used when the target is equal or below this number | ||
- | * level - what level of LB should be used | ||
- | * type - melee, ranged, magic, tank, healer, dps (encompasses melee, ranged, magic), squadron | ||
- | |||
- | **dontcastwhenlb**[optional][bool] | ||
- | |||
- | will pause ACR/skill profile (doesn' | ||
- | |||
- | **tankswap** [optional][table] | ||
- | < | ||
- | tankswap = {9999, | ||
- | </ | ||
- | castid or channelingid when you wish to tank swap. Ideally you want to turn autostances off in your skill profiles / acr and use the below option as well and let the addon handle tank stances. | ||
- | |||
- | **autotankstance** [optional][bool] | ||
- | < | ||
- | autotankstance= true, | ||
- | </ | ||
- | Only useful in dungeons where multiple tanks are in use. Ensure auto tank stances are turned off in skill profiles / acrs. | ||
- | |||
- | **ignoretarget** [optional][table] | ||
- | < | ||
- | ignoretarget = {2667, | ||
- | </ | ||
- | Comma separated contentid - will exclude these contentids from being targeted. | ||
- | |||
- | **enemylos** [optional][bool] | ||
- | < | ||
- | enemylos = false, | ||
- | </ | ||
- | true or false - false allows targeting through walls. true will only target when los | ||
- | |||
- | **avoidancetype** | ||
- | < | ||
- | | ||
- | | ||
- | </ | ||
- | This code will allow you to determine which avoidance type is used for the profile. Generally speaking, only 1 should ever be used at this point as 2 is deprecated. | ||
- | |||
- | **largerpulls** [tbl][optional] | ||
- | < | ||
- | | ||
- | | ||
- | }, | ||
- | --It is only designed to work in a proper party (or a solo tank), it is no use for solo farming dungeons. | ||
- | --It will not be made available as a toggle option to be running on any dungeon. It will not be added to my trust profiles. | ||
- | | ||
- | </ | ||
- | |||
- | **dontcastwhenmoving** [bool][optional] | ||
- | < | ||
- | | ||
- | </ | ||
- | forces skillprofiles / acrs to not cast when your character is moving. Doesn' | ||
- | |||
- | **staybehindentity**[optional][table] | ||
- | < | ||
- | staybehindentity = {1234, | ||
- | </ | ||
- | Comma separated contentid. | ||
- | |||
- | Will move your character behind the boss provided the following conditions are met: | ||
- | - There are currently no AOEs | ||
- | - The character is not a tank | ||
- | - The character does not have top aggro on entity | ||
- | - The character does not have a tether | ||
- | |||
- | **mapeffects** [optional][table] | ||
- | < | ||
- | mapeffects = { | ||
- | [1] = { | ||
- | contentid = " | ||
- | a1 = 43, | ||
- | a2 = 128, | ||
- | a3 = 2, | ||
- | luacode = " | ||
- | }, | ||
- | }, | ||
- | </ | ||
- | |||
- | This data is available from the console. This will be used for things such as snakes in Zodiark, triangles in WoL etc. More details in Argus wiki. | ||
- | |||
- | This mapeffect data will also be stored to: | ||
- | |||
- | < | ||
- | local stringed = (a1 or " | ||
- | KitanoiSettings.SavedMapEffects[tostring(stringed)] = | ||
- | { | ||
- | a1 = (a1 or " | ||
- | a2 = (a2 or " | ||
- | a3 = (a3 or " | ||
- | timeadded = Now() | ||
- | } | ||
- | </ | ||
- | |||
- | < | ||
- | |||
- | if (KitanoiSettings.SavedMapEffects[" | ||
- | --do something | ||
- | end | ||
- | |||
- | if (KitanoiSettings.SavedMapEffects[" | ||
- | --do something | ||
- | end | ||
- | |||
- | </ | ||
- | |||
- | [Kitanoi Functions] - Map Effect - a1: 43 - a2: 4 - a3: 8 | ||
- | |||
- | -------------------------------------------------------------- | ||
- | |||
- | ====Additional Functions==== | ||
- | |||
- | **KitanoiFuncs.LoadDungeonTbl(tbl)** Allows you to load dungeon profiles from lua. This would allow you to set up an addon to autoload dungeon profiles based on mapid for instance. | ||
- | |||
- | **Variables to use with custom lua** | ||
- | < | ||
- | KitanoiSettings.DFTimer[int] | ||
- | KitanoiSettings.DFTimer2[int] | ||
- | KitanoiSettings.DFTimer3[int] | ||
- | KitanoiSettings.DFTimer4[int] | ||
- | KitanoiSettings.DFTimer5[int] | ||
- | |||
- | KitanoiSettings.StoreVar[tbl] | ||
- | KitanoiSettings.StoreVar2[tbl] | ||
- | KitanoiSettings.StoreVar3[tbl] | ||
- | KitanoiSettings.StoreVar4[tbl] | ||
- | KitanoiSettings.StoreVar5[tbl] | ||
- | </ | ||
- | **Adding areas to my avoidance table** | ||
- | |||
- | Circles: | ||
- | < | ||
- | if (KitanoiFuncs.puddledata[e.id] == nil) then | ||
- | KitanoiFuncs.puddledata[e.id] = {entity = entityid, pos = entity.pos, radius = 10, aoeID = 468464, name = " | ||
- | end | ||
- | </ | ||
- | Rectangles: | ||
- | < | ||
- | if (KitanoiFuncs.CurrentAOEs[entity.id] == nil) then | ||
- | KitanoiFuncs.AvoidRectangle2(entity.id, | ||
- | end | ||
- | </ | ||
- | |||
- | < | ||
- | if (KitanoiFuncs.CurrentAOEs[key] == nil) then | ||
- | KitanoiFuncs.AvoidRectangleSpecific(pos, | ||
- | end | ||
- | </ | ||
- | |||
- | key - unique identifier you want to use | ||
- | |||
- | heading - face the way you want the area to be classed as an aoe. Player.pos.h | ||
- | |||
- | width - how wide | ||
- | |||
- | length is 50 by default - no way to change it. | ||
- | |||
- | Check if there is a record before adding unless it is a moving entity and you need the points updated. | ||
- | |||
- | --------------------------------------------------------------- | ||
- | |||
- | ==== Known Map Effects ==== | ||
- | |||
- | | Boss | Mechanic | ||
- | | Magitek Core (Paglth' | ||
- | | Magitek Core (Paglth' | ||
- | | Magitek Core (Paglth' | ||
- | | Svarbhanu (Vanaspati) | ||
- | | Svarbhanu (Vanaspati) | ||
- | | Caustic Grebuloff (The Dead Ends) | Northerly Wind| 43 | 15 | 12 | | | ||
- | | Caustic Grebuloff (The Dead Ends) | Southerly Wind| 43 | 16 | 256 | | | ||
- | | Leannan Sith | *AA| 11 | 1024 | 2048 | See AA below | | ||
- | | Leannan Sith | *AB| 11 | 1 | 2 | See AB below | | ||
- | --------------------------------------------------------------- | ||
- | |||
- | Warrior of Light Extreme has 84 possible 3 MapEffect combinations. Fights like this won't be added here. | ||
- | |||
- | < | ||
- | *AB | ||
- | |||
- | OXXO | ||
- | XOOX | ||
- | XOXO | ||
- | OXOX | ||
- | |||
- | *AA | ||
- | |||
- | OXXO | ||
- | XOOX | ||
- | OXOX | ||
- | XOXO | ||
- | |||
- | X = grass | ||
- | |||
- | </ | ||
- | |||
- | --------------------------------------------------------------- | ||
====Item Purchase==== | ====Item Purchase==== | ||
Line 1242: | Line 562: | ||
--------------------------------------------------------------- | --------------------------------------------------------------- | ||
- | ====reactions for KDF==== | + | ====API==== |
- | + | ||
- | < | + | |
- | reactions = { | + | |
- | [1] = { | + | |
- | cause = " | + | |
- | effect = "if (ActionList: | + | |
- | name = "KB immunity", | + | |
- | }, | + | |
- | }, | + | |
- | </ | + | |
- | + | ||
- | Example to stop you attacking until you react a destination: | + | |
- | + | ||
- | < | + | |
- | local objpullloc = { | + | |
- | [1] = {x=1, | + | |
- | } | + | |
- | local nextobj = KitanoiFuncs.GetFirstNotCompleted() | + | |
- | if (Player.incombat and nextobj~=10 and objpullloc[nextobj] ~= nil and math.distance2d(Player.pos, | + | |
- | return true | + | |
- | end | + | |
- | </ | + | |
- | + | ||
- | Example from Sogigak on Discord to make larger pulls: | + | |
- | + | ||
- | < | + | |
- | function customfunction() | + | |
- | local DiedOrDungeonStart = math.distance2d(Player.pos, | + | |
- | if BigPull == nil or DiedOrDungeonStart then | + | |
- | BigPull = { | + | |
- | [1] = false, | + | |
- | [2] = false | + | |
- | } | + | |
- | end | + | |
- | local PullPositions = { | + | |
- | [1] = { objective = 1, pos = { x = 44.26, y = -8.58, z = 32.19 } }, | + | |
- | [2] = { objective = 2, pos = { x = -123.84, y = -30.66, z = -164.22 } } | + | |
- | } | + | |
- | if KitanoiFuncs.GetFirstNotCompleted() == 1 and Player.incombat and not BigPull[1] and KitanoiFuncs.HowManyAOES() == 0 then | + | |
- | local PullPosition = PullPositions[1].pos; | + | |
- | if math.distance2d(Player.pos, | + | |
- | Player: | + | |
- | KitanoiSettings.avoidingtime = Now() + 10000 | + | |
- | gACREnabled = false; | + | |
- | return | + | |
- | else | + | |
- | BigPull[1] = true | + | |
- | gACREnabled = true | + | |
- | return | + | |
- | end | + | |
- | end | + | |
- | if KitanoiFuncs.GetFirstNotCompleted() == 3 and Player.incombat and not BigPull[2] and KitanoiFuncs.HowManyAOES() == 0 then | + | |
- | local PullPosition = PullPositions[2].pos; | + | |
- | if math.distance2d(Player.pos, | + | |
- | Player: | + | |
- | KitanoiSettings.avoidingtime = Now() + 10000 | + | |
- | gACREnabled = false; | + | |
- | return | + | |
- | else | + | |
- | BigPull[2] = true | + | |
- | gACREnabled = true | + | |
- | return | + | |
- | end | + | |
- | end | + | |
- | end | + | |
- | </ | + | |
- | + | ||
- | This replaces advancedavoid where you need abilities to be used. For anything else, use advancedavoid. | + | |
- | + | ||
- | If scanning for a cast, please use: | + | |
- | + | ||
- | < | + | |
- | KitanoiFuncs.ScanForCaster2(ID, | + | |
- | + | ||
- | local channelexample = KitanoiFuncs.ScanForCaster2(1234) -- returns bool if any entity is currently channeling 1234 | + | |
- | local channelexample2 = KitanoiFuncs.ScanForCaster2(1234, | + | |
- | + | ||
- | + | ||
- | KitanoiFuncs.ScanForCast2(ID, | + | |
- | + | ||
- | local castexample = KitanoiFuncs.ScanForCast2(1234, | + | |
- | local castexample2 = KitanoiFuncs.ScanForCast2(1234, | + | |
- | </ | + | |
- | + | ||
- | --------------------------------------------------------------- | + | |
- | + | ||
- | ====timeline==== | + | |
- | < | + | |
- | timeline = { | + | |
- | [1] = { | + | |
- | contentids = " | + | |
- | starttime = 1000, --time in milliseconds that the code should run | + | |
- | endtime = 3000, --time in milliseconds that the code should stop running | + | |
- | luacode = " | + | |
- | }, | + | |
- | [2] = { | + | |
- | contentids = " | + | |
- | starttime = 25000, --time in milliseconds that the code should run | + | |
- | endtime = 30000, --time in milliseconds that the code should stop running | + | |
- | luacode = " | + | |
- | }, | + | |
- | }, | + | |
- | </ | + | |
- | Uses KitanoiSettings.InCombatTimer for starttime and endtime | + | |
- | + | ||
- | TimeSince(KitanoiSettings.InCombatTimer) | + | |
- | + | ||
- | --------------------------------------------------------------- | + | |
- | + | ||
- | ====syncon==== | + | |
- | < | + | |
- | syncon = { | + | |
- | [1] = { | + | |
- | details = "sync combat timer to 190 seconds on annihilation cast", | + | |
- | cause = " | + | |
- | time = 190000, | + | |
- | } | + | |
- | }, | + | |
- | </ | + | |
- | This syncs KitanoiSettings.InCombatTimer to the time specified when the cause returns true | + | |
- | + | ||
- | TimeSince(KitanoiSettings.InCombatTimer) | + | |
- | + | ||
- | --------------------------------------------------------------- | + | |
- | + | ||
- | ====Custom GUI==== | + | |
- | + | ||
- | {{: | + | |
- | < | + | |
- | customgui = [[ | + | |
- | GUI: | + | |
- | if (test1==nil) then test1 = 1 end | + | |
- | test1, | + | |
- | if (test2==nil) then test2 = 1 end | + | |
- | test2, changed = GUI: | + | |
- | GUI: | + | |
- | test2, changed = GUI: | + | |
- | if (test3==nil) then test3 = "" | + | |
- | test3, | + | |
- | if (test4i == nil) then test4i = 1 end | + | |
- | test4c = {" | + | |
- | test4i, changed = GUI: | + | |
- | GUI: | + | |
- | ]], | + | |
- | </ | + | |
- | + | ||
- | Showing dungeons from your code inside of KDF: | + | |
- | + | ||
- | [[https:// | + | |
- | + | ||
- | --------------------------------------------------------------- | + | |
- | + | ||
- | ====Requests for functions==== | + | |
- | + | ||
- | As of May 2021 - new options have been added that allow you to write your own functions in lua and call it in dungeon framework. If there are needs for general functions I will look to add them. But any bespoke functions are for the user to create. | + | |
- | + | ||
- | Any requests for functions will need at minimum the following information: | + | |
- | + | ||
- | Dungeon Name | + | |
- | + | ||
- | Boss Name | + | |
- | + | ||
- | Action Name | + | |
- | Expectations | + | https:// |
--------------------------------------------------------------- | --------------------------------------------------------------- | ||
Line 1413: | Line 570: | ||
====Support==== | ====Support==== | ||
- | https:// | + | https:// |
< | < | ||
- | <a href=" | + | <a href=" |
</ | </ | ||