Jump to content

MindScape

Game Masters
  • Content Count

    275
  • Joined

  • Last visited

  • Days Won

    5

Posts posted by MindScape


  1. Making an item capable of sending an addon message on right click, for addon integrations. I assume this can come along with spell support on Item Forge later, and then just have a specific spell maybe that when that spell is called, don't cast it but instead check the items set addon message and send it?

    i.e., ".forge item set addonmessage <arcanum_cast>"

    Yes, I am selfishly including an example that would directly benefit Arcanum lol

    Yes, I don't know how to directly hook item right clicks so this is my proposed solution ?


  2. 21 minutes ago, Dove said:

    you could probably add the speed at which people post as 'bloated' too. personally I often feel like I lose track in discord and by the time I catch up things already shifted. information just gets lost in the chatter. naturally it feels like people take their time to write something on the forums, so a new post is more nuanced as opposed to someone just saying "fr" in a quick discord message (now pair that with 50+ active people partaking in a conversation).

    discord servers are known to be biased and cliquey, even when it comes to serious suggestion responses - and epsilon is definitely not an exception. the slight anonymity provided by the forums can feel nice. i know you are advocating for accessibility first and foremost which is ?but i think erkor also makes a good point by saying separate long-form discussion from short-form conversation to decrease chit chatter naturally

    but yeah I'm also personally not into moving the entire thing there. coexisting is a fair compromise. 

    You make good points. I figured people would treat Discord forums similar to web-forums and not 'chitchat' in the threads, hopefully. I am now advocating for a sync'd discord forum <-> web forum for suggestions ?


  3. 26 minutes ago, Ouroboros said:

    Essentially the question is; why is this the way it is? If the limitation of adding spaces invalidates the use of blueprint names is intentional, why is it so? Or is this a case of the code behind calling blueprint names breaks if you use a space and it's not worth the effort to try and remedy that?

    I am not Raz, who wrote blueprints, but I assume it's along the lines of, say, you try and use ".go blue share $name $player - Well both name & player can have a space. Commands by default separate the text by a space, so you can't do a space in $name otherwise it thinks the 2nd part of the name (i.e., "Test" in "Ouro Test") is the players name. A fix for this would be using " " around blueprint name there I suppose but that takes much more effort & parsing the line then (i.e., if this arg starts with a ", then continue until we find the next arg that ends in a ", and combine them all into one, then do again for player name). It's way less efficient than just saying "Use the ID or chat link (which extracts the ID)". 

    Less applicable to the commands that ends in just the BP name, but for consistency I believe it's better to not support spaced names. Why are they allowed to be set tho with a spaced name? Probably because Raz expected people to try that by default and didn't want someone to have "The Shop" and then also try and save "The Castle" and have both as just "The".. lol..  (Again tho, I am not Raz, so this is all speculation..)


  4. 13 minutes ago, Ouroboros said:

    It says it's required, but it's not. You can still spawn blueprints by their name; hence the above issue. If it's permissible to spawn blueprints via name entry, it should also have standards across the board such as either permitting or denying spaced names. If it's unintended that you be able to spawn blueprints via name entry, then that itself is the bug.

    It says what is required? And you said in your original post that you're unable to spawn them with a spaced name, and showed an example? Now you're contradicting yourself and I am confused. 


    To be clear, it says If you use a spaced name, then you CANNOT use the spaced name for any other blueprint commands, you need to use the ID or chatlink. That said, the inverse is true: If you DIDN'T use a spaced name, you CAN use the name. No bug spotted. 

    Basically: Your choice to use spaced names or not, and it gives you a warning if you do only use their ID or link.

     


  5. I am confused still - is it just the actual 'click' that stays - or does the text stay also, and you have to close it and re-open for the text to change even?

     

    I.e., if your first NPC has an option for "Take the torch <arcanum_cast:torch>", and the 2nd NPC has an option for "Teleport me! <arcanum_cast:tele>", when you open the 2nd NPC, does it still say "Teleport me!" but does the torch cast? Or does it still say "Take the torch" ?

     

    EDIT: Tested, this is not an Arcanum issue directly, it's a server bug, just exasperated by Arcanum.
    For anyone using Arcanum to teleport people, please make sure you are using an Arc Gossip Tag with _hide so that it forces the Gossip window to hide before entering a loading screen, to prevent this bug. Entering a loading screen while still showing a gossip will make you show that same gossip again on the next NPC you gossip with.


  6.  


     

    Image

    Introducing: Arcanum - Spell Forge! A new addon designed to bring a user-friendly UI to timed-macro creation.

    What is Arcanum?
    Arcanum is a UI for creating timed macros, similar to using /in, but with a UI & extra features, such as easy sharing, Gossip integration, Pop-up Buttons, and more!
    Arcanum allows you to easily create timed-sequences of 'actions'. Actions can range from casting default spells, performing animations/emotes, and even spawning game objects - technically speaking, there's almost no limit to what actions can be!

    Please note, this guide is still a WIP and will be updated as features are rolled out & I have more time to write out documentation.
    --------

    Table of Contents:

    • Terminology
    • Using the Forge UI (Creating a Spell!)
    • Sharing & Vaults (Personal / Phase)
    • Sparks!
    • Gossip Integration
    • Item Integration
    • QuickCast
    • ARC:API (Scripting Helpers)

    ---------

    Terminology:
    It is important to understand what each label & name of things in the Addon means.

    General

    • ArcSpell: The custom sequence of events, combined into a spell using Arcanum. ArcSpell will be used as the term to differentiate from standard WoW Spells.
    • Personal Vault: Where all of your personal saved ArcSpells are stored.
    • Phase Vault: A phase-based storage system to store & share ArcSpells with anyone in the phase, and used in Gossip integrations.
    • Spell Command / commID: The custom 'command' you give to your spell. This is what will be used to cast the spell via '/arcanum commID', or other commands asking for the commID.
    • Sparks: Location-based ArcSpell prompts. See the Sparks section below for more details!

    The Forge Interface

    • Spell Info (Attic): The area at the top of the Forge that allows you to set the following:
      • Spell Name: The full name used to identify the spell. These are not unique, but how annoying would it be to have two spells named the same, so you should probably give it a good name.
      • Spell Command (commID): As above in the General terminology, this is the 'command' for your spell, which is also used as the unique identifier in other parts of the addon when needed.
      • Spell Description: An optional description for the spell. You can put anything here, this is just for flavor!
      • Icon: The icon of the spell. This will be used anywhere a spell makes a visual appearance, including Quickcast & Sparks.
      • Cast/Channel Checkbox: Toggle the spell between using a standard Castbar, a Channeling styled bar, or disable the castbar entirely. Note: spells under 0.25 seconds long will never show a castbar. 
      • Cooldown: How long (in seconds) before the spell can be cast again. You may leave it at 0 or blank to have no cooldown. 
      • Profile: The profile that the spell is saved under. By default, they get saved under your current character. Profiles are just for organization, you can always access other profiles in the vault as well to access, cast, and edit those spells. You can always change a spell's profile later in the vault as well.
         
    • Action Rows: The rows in the UI, denoted with a gem on the left. Each row is used for defining an action, based on the following criteria:
      • Delay: The time between when you 'cast' your ArcSpell, and the action takes place. Delays do NOT stack. (I.e., Two actions with a delay of '2' will both occur at the same time, 2 seconds after the ArcSpell is cast).
      • Action: What you want to actually happen. (I.e., cast a spell, do an animation, morph yourself, equip an item, etc...)
      • Self: This is a toggle modifier to change some actions to use the 'self' flag in their command (i.e., using ".aura #id self" instead, so it auras yourself and not a target). 
      • Input: Any additional input required for the action - i.e., for a "Emote" action, this would be the ID of the anim you wish to use.
      • Revert: If the action should be undone after another delay, given in seconds. Not everything can be undone, but most common/simple actions can be. Revert occurs that many seconds after the action it is tied to, NOT from the time the spell was cast.
         
    • Bottom Buttons (Basement):
      • Create / Save: Creates a new spell, prompting to overwrite if another spell with the same name is already in your vault, or if editing a spell, saves your changes.
      • Vault: Opens the vault menu, where you can access your Personal & Phase Vaults.
      • Cast: This button will cast the current actions in the Forge. This is useful for testing your actions before saving.
      • Clear & Reset Icon: This will reset the forge interface, prompting if there's any unsaved changes first, allowing you to reset it and start a new spell.

    ---------

    Using the Forge

    You can summon the forge at any time using the mini-map button, or by typing '/arcanum' (or '/sf' as a short-hand) in chat.

    Once open, the first thing to using the Forge & making a new ArcSpell is understanding what everything means - please be sure to read the terminology above.

    Note: Arcanum implements Tooltip-help-prompts if you mouse-over any of the UI elements for around a second. These Tooltips adapt based on what you're currently working on as well. Not sure what the Cast Spell action is looking for in the Input? Mouse over Input and it will give you a quick hint on what you need to type there. What's that arrow button? Mouse over it for a description.

    Creating a Spell
    To create a spell, you need to define what actions are going to occur when the spell is cast. 

    1. Start by supplying the Delay, or - how long after 'casting' the ArcSpell to perform this action.
    2. Choose the Action, or - what you want to happen after the delay.
    3. Type in the 'Input' information, if needed for that command. Mouse over the input box for a moment to see help text related to what input the action needs, if any.
    4. Enable the 'Self'' checkbox if you want to use the self flag on any Cast or Aura actions,
    5. If you want the action be to undone, supply a number in the 'Revert' column.
      • Reminder: Revert is how long after that actions delay, not how long after casting.
    6. Repeat with more rows as needed to get your desired outcome. 
      • If you need more or less rows, you can use the + / - buttons in the Forge UI to add or remove more action rows. Mouse over a row to show the button.
        Note: Empty rows will be ignored, so technically no need to remove empty ones if you added too many.
    7. Supply a Name and Command (aka spellCommand / commID), and Description if desired, at the top to make your spell unique & easy to remember.
      • Reminder: Command, or commID, is what you'll use in the slash command (/arcanum or /sf) to cast the spell.
    8. Click 'Create'! Your spell has now been saved & is stored in your Vault!
    9. To cast the spell, you can use '/sf commID' in chat and it will perform the actions from that spell! You can add this command to a macro if you want it on your hotbar, or create custom items using one of the RP item addons like TRPe.

    Example of a completed ArcSpell: 

    Spoiler

    image.png.67a8f4ac1b6e27f533f0b58cbcea2e2f.png
    (note that this is from an older version of Arcanum prior to spells having icons, however the interface is very similar & actions are the same)

    ---------------

    Sharing & Vaults (Personal / Phase)

    Personal Vault:

    • This is where all of your saved ArcSpells are stored. Your personal vault is only accessible by you, and is shared between all of your characters, but broken down into Profiles for organization.
    • Spells stored in your Personal Vault are assigned to a profile - new spells you make are auto-assigned to your current character's profile.
    • To change an ArcSpell's assigned profile, right-click the spell in the Vault and use the 'Profile' sub-menu. 
    • You can filter your personal vault to show only certain profiles by left-clicking the image.png.37c9997e69d1b56f63ad90575cf01378.png icon in the top right of your Personal Vault, and you can change the default filter set when you login using right-click on the icon.
    • You can also use the search bar at the top to search your ArcSpells by name.

    Phase Vault:

    • The Phase vault is a space to collectively save & share ArcSpells with a phase. Only Officer+ can transfer a spell into the Phase Vault.
    • Spells uploaded to the Phase Vault can be uploaded as either Public (Default), or Private.
      • You can click the image.png.36c9b6f2550a8c08bdb5a833d7012d23.png / image.png.8af17ff791efc34715197fec211c2a56.png icons next to the "<-> Phase Vault" button to switch between uploading as Public or Private, respectively.   
      • Private spells are only visible to Officer+ in the Phase Vault. However, private spells linked via an integration, like a Gossip Menu, can still be used. Private only hides them from showing in the actual vault UI.
      • To change a spell's privacy, you can click it's privacy icon in the vault to switch it.
    • Phase Vault spells can be used in Gossip Integration (below).
    • You can cast spells directly from the Phase Vault using the Right-Click context menu or clicking their icon.

    Sharing ArcSpells

    • In-Game:
      • Outside of the Phase Vault, you can also Shift-Click an ArcSpell into chat, from either your Personal Vault, or a Phase Vault, to share it with others.
      • Anyone receiving will be able to click the 'Request Spell' button in the tooltip to add the ArcSpell to their own vault, or be instructed to grab it from the Phase Vault.
        • Please note: The character (listed in the tooltip) must be online in order for a request to succeed, if shared from a Personal Vault. If you share it and log-off, they won't be able to request the spell.
    • Out-of-Game (Import/Export):
      • You can also Import & Export spells to save them or share them outside of the game, i.e., in Discord!
      • To Export: Right-Click the ArcSpell in the Personal Vault and select "Export".
      • To Import: Click the image.png.4ab66b2a06005733429a18b3ae32cf5e.png button in the bottom left of the Personal Vault & paste the code in. If you already have a spell with the same commID, you'll be prompted to overwrite it.

    -----------

    Sparks!

    Sparks are location-based pop-up ExtraButtons that can be used to cast ArcSpells from the Phase Vault! This brings new ways to interact with Arcanum Spells in your phase! While this is one of the most simple features to explain here, it also has the capability to be one of the most powerful. You can find a demonstration of using Sparks in the Main phase, by visiting any of the Arc Shrines scattered across Start!

    • Creating a Spark: Right-Click an ArcSpell in the Phase Vault and select 'Create Spark' (must be Officer+). This will bring up the Spark Creator menu, allowing you to customize the Spark. When done customizing the below options, click 'Create Spark' to finish!
      • Border Style: The ExtraButton border used around your ArcSpell's icon. This will give it a bit of unique flair.
      • Border Tint: You can optionally tint the border. This is best used with the 'Default' Border style which is designed to be tinted. We've also included some custom borders to match the Gems & Quickcast Book colors!
      • Radius: This is how close to the trigger point someone must be to activate it. For example, with a radius of 5, a player must be within 5 units (".gps for 5") of the trigger point for the pop-up to show.
         
    • Managing Sparks: Sparks can be managed by opening up the Spark Manager menu, via the 'Lightning Bolt' icon in the bottom right of the Phase Vault menu, or by right-clicking the spell icon when standing on a Spark (Officer+ only).
      • Sparks are organized by what map they are on. The menu will try and give a name if available for a Map ID, but some maps will have strange names if you are not loaded into that map.
      • You can edit a Spark by clicking the 'Edit' button, which will allow you to bring up the Spark Creator menu again and modify a Spark.
      • If you forgot where a Spark is, you can always use 'Go To' to teleport directly to the Spark's location.
      • You can also delete Spark's from this menu. If you accidentally delete one - you'll have to remake it.

    -----------

    Gossip Integration

    Arcanum includes NPC Gossip Forge integration. This allows you to enable gossip menus to: Show the Spell Forge Menu, or Cast Spells. These are done by adding 'tags' to your gossip text / option.

    Adding Tags: Gossip Text vs Gossip Options

    • Gossip Text (.ph forge npc gossip text add)
      • Adding Tags to the Gossip Text will cause them to be ran as soon as the gossip menu opens.
      • This can be used to over-ride a gossip into another action, i.e., instead of the gossip menu, you add an item to your inventory, like looting.
      • These can be added anywhere in the gossip text.
         
    • Gossip Option (.ph forge npc gossip option add)
      • This will make the tag's action be ran when you click that Gossip option.
      • You can use this to tie spells, or other actions (like teleporting) to an option.
      • Tags can be added anywhere in an option.

    Available Tags:

    • <arc_show> -- Opens the Spell Forge UI
    • <arc_cast:commID> -- Casts the (commID) from the Phase Vault
    • <arc_save:commID> -- Saves the (commID) from the Phase Vault to the player's Personal Vault
    • <arc_cmd:server command-- Executes the server command given
      • Example: .ph forge npc gossip option add Let me fly! <arc_cmd:cheat fly on>
    • <arc_copy:url/link/text-- Shows a pop-up to copy the given URL/Link/Text
    • <arc_macro:/slash command> -- Executes the macro-script given
      • Example: .ph forge npc gossip option add We won! <arc_macro:/cheer>
      • Macro Script can be used in combination with ARC:API as well - See below.

    Replace the green text with the commID, or commands/scripts you'd like to process.

    You can add _hide to the end of a Cast Tag to also auto-hide the gossip menu after casting.
    Example: <arcanum_cast_hide:spellCommand>, <arcanum_save_hide:spellCommand>, <arc_cmd_hide:tele start>
    NOTE: You should always use _hide when performing any spells or commands that teleport the player, to avoid a bug in the Gossip system.

    Confused yet? That's why we've also included a handy UI to automate the spell portion of this for you:
    The Add to Gossip UI!

    • To start, open up the Gossip you want to add an ArcSpell to, and click the image.png.004fa17ef45728769d5557868277704e.png icon in the Phase Vault on the spell you want to add.
    • The UI will then give you options on Cast vs Save, as well as the choice between adding as an On-Click (Option), or On-Show (Text), and if it should Hide the Gossip menu after.
      • If adding to On Click, you need to add at least some text first so the button has a label. You do not need any text for On-Show.

    Seeing & Editing Gossip Options: Enabling Phase DM will disable any Automatic gossip options for yourself, and keeps the tags shown, so you can easily manage the Gossip menu.

    -----------

    Item Integration

    ArcSpells & ArcTags can be attached to items, allowing you to make items with entirely custom Use effects.

    ArcSpell <-> Item Connections

    • You can connect ArcSpells with items for a quick and easy way to make your items interactive. 
      • ArcSpells can be linked to any item (i.e., Forged Items, Items with a Use effect already (stacks), and items that did not have a Use effect originally).
      • You can connect multiple ArcSpells to one item, or one ArcSpell to multiple items. There's really no limit here.
      • Connected items will have a custom 'Use:' text added to their tooltip, based on the ArcSpell's description, if it has one.
    • To start, simply right click an ArcSpell in your Personal or Phase Vault, select Assign Item, and then Connect Item. You can then type in an Item ID, or shift-click in a link to an item. (Phase Vault linking is only available to Officer+)

    ArcTag -> Item Forge Descriptions

    • Forged items can have ArcTags set in their description in order to trigger custom Use actions.
    • Unlike ArcSpell Item connections, these do NOT generate automatic Use: text for the tooltip, and you should do your best to describe it in the item description directly.
      • Items will however have an indicator (ArcCast) added to their tooltip to let you know that it has an ArcTag attached. Holding SHIFT or CTRL when the tooltip is visible will allow you to preview the script attached to the item.
    • Available ArcTags for Items: (format: <arc_tag:command/text>)
      • cmd -> Runs the server command given (Example command/text: gps for 5)
      • macro -> Runs the macroscript given (Example command/text: print("Hello, I'm a talking item!") )
      • cast -> Casts an ArcSpell from your Personal Vault by the commID given
      • pcast -> Casts an ArcSpell from the Phase Vault by the commID given
      • save -> Saves the ArcSpell from the Phae Vault to your Personal Vault, by the commID given
      • copy -> Shows a pop-up dialog to copy the text given
    • You may also specify an extension tag to trigger specific extra effects if the action succeeds. These are added as additional _xtag's after the main ArcTag.
      • Currently, there's only one supported xtag: 
      • _del -> delete that item on successful use. This mimics the idea of making an item consumable. See the examples below for one potential use!
    • ArcTag Examples:
      • .forge item set desc 14017550 This stone glimmers like the night sky. Right-Click to Toggle it's Effects! <arc_macro:ARC.TOGAURA(291362)>
        • On use, this will toggle aura 291362 on your character. Note this is using the ARC.API as well to easily implement toggling the aura without scripting it yourself.
      • .forge item set desc 14017550 Right-Click to crush the stone and absorb the power inside. <arc_cmd_del:cast 277098>
        • This will cast the spell 277098, then delete the item from your inventory.

    -----------

    Quickcast

    Quickcast is our way of bringing ArcSpells conveniently onto your screen to use quickly, without needing to open the main Forge / Vault UI. Quickcast contains the following components:

    • Books: Quickcast books are the first and top-most component to the Quickcast system. All books are shared & accessible between all your characters, but can be hidden/shown per character if desired (i.e., one book per character with different ArcSpells assigned).
      • Pages: Each Quickcast Book contains 'Pages', which control which spells are shown on that book. You can create multiple pages on a Book and flip thru them by scrolling on the Book's icon. You'll see a counter with the page number you are on, and total page count in the book. Further more, there are 2 types of Pages:
        • Standard Pages: These are, when created, blank pages. You can then assign any ArcSpell to the page as you wish.
        • Dynamic Pages: These are automated, dynamic pages based on Profiles. When you create a Dynamic page, you must select which profile it is connected to, and it will always contain all spells that are in this profile. For example, if you create a profile called 'Fire Spells', and create a Dynamic Page for this profile, any spells assigned to the Fire Spells profile will show up in that page automatically. 

     

    • Managing Books & Pages: You can manage Quickcast books & pages by right-clicking a Book and either using some of the quick-actions there, or selecting 'Quickcast Manager' and using the Quickcast Manager menu, or using the Quickcast Manager button in the Arcanum AddOn Settings menu (Cog/Settings button at the top-right of the Forge UI).
      • You can create new books by using the 'Add New Book' on the list of books in the left column.
      • Select a book from the left column to show it's information on the right column, allowing you to change it's Style, rename it, or add / re-arrange pages.
      • Deleting a book will also delete all of the pages contained within it.  
      • Deleted your last book? You can open the Quickcast Manager in the Arcanum AddOn Settings menu (Cog/Settings button at the top-right of the Forge UI).

    -----------

    ARC.API

    A pseudo API to make scripting in ArcSpells easier.
    You can use these functions in slash commands & macro scripts.

    Macro Script Functions:
    These functions are meant to be ran directly in macro scripts, using the /run command.

    • Functions:
      • ARC:CMD("command")
        • Sends a server command.
        • Example: /run ARC:CMD("cheat fly")
      • ARC:COPY("text / link")     
        • Open a Dialog box to Copy the text/link
        • Example: /run ARC:COPY("https://discord.gg/epsilon")
        • NOTE: Using this for inappropriate links will result in the NPC being deleted without warning & potential moderative action by the server staff.
      • ARC:CAST("commID")         
        • Casts an ArcSpell from your Personal Vault
      • ARC:GETNAME()     
        • Returns the Target's name into chat.
        • If the Target's name is a MogIt link, it will give you the link in your chat box.
      • ARC:RAND(var1,var2, ...)
        • Returns a random argument (var) from those given. This replaces Blizzards' GetRandomArgument() function, which is removed in 9.0+.
      • ARC:STOPSPELLS()
        • Stops currently running ArcSpells. Can be used in coordination with ArcVars to terminate a spell early.
      • ARC:STOP("commID")
        • Stops all currently running instances of the spell specified by CommID.
    • Personal ArcVars - Generic, non-global variables system you can safely use to help script more complex actions. ArcVars are accessible globally via the ARC.VAR table, and are non-persistent, meaning they do NOT save between sessions.
      • ARC:TOG("ArcVar")           
        • Toggles an ArcVar between True & False.
      • ARC:SET("ArcVar", "value") 
        • Sets an ArcVar to the specificed "value".
      • ARC:GET("ArcVar")         
        • Returns the value of an ArcVar. You will need to embed this into a more thorough script to use it to it's full potential.
        • You can do the same using ARC.VAR["ArcVar"] also.
      • ARC:IF("ArcVar", [trueCommand, [falseCommand]], [var1])
        • Checks if the ArcVar is true. If true & false command provided, runs the command depending on the ArcVar.
          • You may provide only a trueCommand and it will run the command if true, or do nothing if not.
          • If no commands provided, returns true if the ArcVar is true, or false if not, to use in more complex scripts.
          • If Var1 provided, it will append the Var1 to the true & false command, allowing shorter written functions.
        • Example: /run ARC:IF("Toggle Torch", "aura", "unaura", "95957")
      • ARC:IFS("ArcVar", "value", [trueCommand, [falseCommand]], [var1])
        • Works similar to ARC:IF but checks if the ArcVar matches the "value".
        • Example: /run ARC:IFS("WhatFruit","Apple") -- checks if WhatFruit = Apple.
           
    • ARC.PHASE - These are similar to above but applicable to the Phase you are in. For ArcVars, the system has one major difference from above: Phase ArcVars are saved between sessions & linked to the phase number you are currently in. Note that Phase ArcVars are considered insecure and can be manipulated by players directly as well. All Phase ArcVars can be accessed directly using the ARC.PHASEVAR table.
      • ARC.PHASE:CAST("commID")       
        • Casts an ArcSpell from the Phase Vault
      • ARC.PHASE:SAVE("commID", sendMessage)       
        • Saves an ArcSpell from the Phase Vault to your Personal Vault. If sendMessage is "true", then it will print a nice "You've learned [Your Spell]" in chat for them.
      • ARC.PHASE:TOG("ArcVar")           
        • Toggles a Phase ArcVar between True & False.
      • ARC.PHASE:SET("ArcVar", "value") 
        • Sets a Phase ArcVarto the specificed "value".
      • ARC.PHASE:GET("ArcVar")         
        • Returns the value of a Phase ArcVar. You will need to embed this into a more thorough script to use it to it's full potential.
        • You can do the same using ARC.PHASEVAR["ArcVar"] also.
      • ARC.PHASE:IF("ArcVar", [trueCommand, [falseCommand]], [var1])
        • Checks if the Phase ArcVar is true. If true & false command provided, runs the command depending on the ArcVar.
          • You may provide only a trueCommand and it will run the command if true, or do nothing if not.
          • If no commands provided, returns true if the Phase ArcVar is true, or false if not, to use in more complex scripts.
          • If Var1 provided, it will append the Var1 to the true & false command, allowing shorter written functions.
        • Example: /run ARC.PHASE:IF("Toggle Torch", "aura", "unaura", "95957")
      • ARC.PHASE:IFS("ArcVar", "value", [trueCommand, [falseCommand]], [var1])
        • Works similar to ARC.PHASE:IF but checks if the Phase ArcVar matches the "value".
        • Example: /run ARC.PHASE:IFS("WhatFruit","Apple") -- checks if WhatFruit = Apple.
      • Player Phase Permissions:
        • ARC.PHASE.IsMember()ARC.PHASE.IsOfficer()ARC.PHASE.IsOwner()ARC.PHASE.IsDM()ARC.PHASE.GetPhaseId()
           
    • ARC.XAPI - The ARC Extended API (XAPI) is a subset of API commands that are available, but intended mostly for power-users. These are typically internal functions used around the addon, but may be of some use to people making advance Arcanum spells that integrate back in with itself.
      • Use "/dump ARC.XAPI" or "/dump ARC.XAPI.submenu" (replacing submenu with one from below, case sensitive) in-game to see all the available functions contained within. You'll need to open the "SpellCreator/API.lua" file to really learn more however & find the syntax.
      • Sub-Menus available in the ARX.XAPI table (case sensitive):
        • sparks
        • UI
          • UI.castbar
        • Cooldowns
        • Phase
        • Items
      • Functions available directly in the ARC.XAPI table:
        • GetPosition() - returns x, y, z, mapID
        • HasAura(id) - returns true if that aura is active on you, false otherwise
        • ToggleAura(id) - toggles the aura on / off - same as ARC:TOGAURA()
        • HasItem(id) - If you have the item, returns the count you posses, or returns false if you don't have it at all. This is a wrapper for GetItemCount(id) but with a bool/false return if you do not have it instead of 0.

    Slash Commands:
    Frequent ARC.API functions can also be ran using a more friendly slash command. You can included spaces in your arguments by enclosing it in quotes, "like this".

    • /arc cast $commID
      • Cast an ArcSpell from your personal vault. Same as /arcanum or /sf
    • /arc castp $commID 
      • Cast an ArcSpell from the current phases' Phase Vault.
    • /arc cmd $serverCommand
      • Run the given server command,
      • Example: /arc cmd "cheat fly"
    • /arc getname
      • Prints your target's name in your chatbox. Less useful after integrating MogIt links in NPC name handling, but it's still here if needed for .. something?
      • Same as ARC:GETNAME() -- Try on a MogIt NPC!
    • /arc copy $text/link 
      • Open a box to copy the text/link
      • Example: /arc copy https://discord.gg/epsilon
      • NOTE: Using this for inappropriate links will result in the NPC being deleted without warning & potential moderative action by the server staff
    • /arc tog $ArcVar
      • Toggles the ArcVar specified between True & False
      • Example: /arc tog "My Key Variable"
    • /arc set $ArcVar $value
      • Sets the ArcVar to the value you specify.
    • /arc if $ArcVar $trueCommand $falseCommand $trueVar $flaseVar
      • Checks if the supplied ArcVar is true, and runs the trueCommand if so, otherwise it runs the falseCommand if given, or does nothing if not. The given true & false var can also be supplied to append to the trueCommand/falseCommand respectively. If only trueVar is given, it will be appended to both true & false commands.
      • Example: /arc if ToggleTorch aura unaura 1234 all
        • Does the "aura 1234" command if ToggleTorch is true, or "unaura all" command if false.
        • You can leave off $falseVar and $trueVar will be used for both true & false,
          • ex: /arc if ToggleTorch aura unaura 1234 will do aura 1234 if true, and unaura 1234 if false.
    • /arc ifs $ArcVar $value $trueCommand $falseCommand $trueVar $flaseVar
      • Same as '/arc if' but tests if $ArcVar == $value instead of just true.
      • Example: /arc ifs HasKey 2 "phase tele BehindTheDoor"
        • This would check if HasKey is equal to 2, and then uses the command for the phase tele, otherwise it does nothing.
        • Use /arc set to set the variable, like in another spell or gossip.

    ARC.PHASE Commands

    • /arc phase tog $ArcVar
      • Toggles the Phase ArcVar specified between True & False
      • Example: /arc phase tog "My Key Variable"
    • /arc phase set $ArcVar $value
      • Sets the Phase ArcVar to the value you specify.
    • /arc phase if $ArcVar $trueCommand $falseCommand $trueVar $flaseVar
      • Checks if the supplied Phase ArcVar is true, and runs the trueCommand if so, otherwise it runs the falseCommand if given, or does nothing if not. The given true & false var can also be supplied to append to the trueCommand/falseCommand respectively. If only trueVar is given, it will be appended to both true & false commands.
      • Example: /arc phase if ToggleTorch aura unaura 1234 all
        • Does the "aura 1234" command if ToggleTorch is true, or "unaura all" command if false.
        • You can leave off $falseVar and $trueVar will be used for both true & false,
          • ex: /arc phase if ToggleTorch aura unaura 1234 will do aura 1234 if true, and unaura 1234 if false.
    • /arc phase ifs $ArcVar $value $trueCommand $falseCommand $trueVar $flaseVar
      • Same as '/arc phase if' but tests if $ArcVar == $value instead of just true.
      • Example: /arc phase ifs SomeKey 2 "phase tele BehindTheDoor"
        • This would check if SomeKey is equal to 2, and then uses the command for the phase tele, otherwise it does nothing.
        • Use /arc set to set the variable, like in another spell or gossip.

          NOTE: Personal ArcVars exist in a global table "ARC.VAR". You can access them directly if you
                understand Lua & know what you're doing. Phase ArcVars are stored in "ARC.PHASEVAR". 

                Personal ArcVars are NOT SAVED between sessions. 
                Phase ArcVars are saved between sessions and saved per-phase. Phase ArcVars are insecure and can be modified at any time by a player.

     

    Addon Changelogs

    Spoiler

    v1.3.5 (July 19th, 2023)

    Spoiler

    ## Arcanum Update!
    ## v1.3.5 (July 19th, 2023) // Highlights:
    **Spark Requirements & Cooldowns:**
    - Sparks can now have requirements via scripts!
     - *Spark Requirement scripts must return with a true value in order for the spark to display.*
    - Sparks can have individual cooldowns, which can be broadcast/synced to other players!
     - *Spark Cooldowns will override the ArcSpells cooldown unless you also have Trigger Spell Cooldown enabled, then both cooldowns are triggered.*
    - *To add a requirement or cooldown, simply edit an existing Spark, or create a new Spark, and the options will be in the UI.*

    - QOL: Spark Creator UI's Border Preview now shows tint, and Spark Radius no longer has a limit when typed in manually.

    **Item Integration:**
    - ArcSpells can now be assigned to items! Connected items will cast that ArcSpell when used.
     - ArcSpells can be connected to any item, including: Forged Items, Items that do not have a Use, and Items that do already have a Use.
     - You can connect multiple ArcSpells to an item - or one ArcSpell to multiple items.
     - Connected items will have an Arc 'Use:' text added to their Tooltip, based on the ArcSpell's description!
     - ***To connect an Item & ArcSpell, start by Right-Clicking a Spell in your Vault or Phase Vault!***


    - Similar to Gossip, ArcTags may also be used in Forged Item descriptions to link commands to them.
     - Note that unlike ArcSpell connections, these do not auto-generate 'Use:' text, and you should describe it in the description directly.
     - *Items with an ArcTag will have an indicator (ArcCast) added to their Tooltip to let you know it has an ArcTag attached. Holding Shift or CTRL will preview the ArcTag in the item Tooltip.*

     - Available ArcTags (<arc_tag:command/text>
      - cmd -> Runs the server command given
      - macro -> Runs the macroscript given
      - cast -> Casts an ArcSpell from your Personal Vault by the commID given
      - pcast -> Casts an ArcSpell from the Phase Vault by the commID given
      - save -> Saves the ArcSpell from the Phae Vault to your Personal Vault, by the commID given
      - copy -> Shows a pop-up dialog to copy the text given

     - You may also specify an extension tag to trigger specific extra effects if the action succeeds. These are added as additional _xtag's after the main ArcTag. Currently, there's only one supported xtag: _del, which will delete that item on successful use. See example below.

    Item ArcTag Examples:
     - .forge item set desc 14017550 This stone glimmers like the night sky. Right-Click to Toggle it's Effects! <arc_macro:ARC.TOGAURA(291362)>
     - .forge item set desc 14017550 Right-Click to crush the stone and absorb the power inside. <arc_cmd_del:aura 277098>

    **New Actions:**
    - UI Fade In / Out
    - More Camera Actions
    - Teleport Actions (Mark & Recall anyone?)
    - More ARC & ARC.XAPI functions for advance scripts. Use '/dump ARC.XAPI' to see a list in-game.

    **Bug Fixes & QOL:**
    - Fixed MacroScript not accepting multi-line scripts, because Newlines were sanitized to CSV. Now you can copy-paste entire code blocks in!
    - Fixed Phase Vault trying to double-load in certain circumstances, spamming your chat with 'already loading!' messages.
    - Items/Spells/etc. can now be shift-clicked into the Forge Editor UI in place of using the ID.
    - Updating Visibility & Item connections for spells in the Phase Vault now only trigger that single spell to update for everyone, instead of a whole vault reload.
    - QC Manager now shows book controls even if there's 0 pages, so you can add a page or delete the book.
    - The 'Move' button in the QC Manager has been enabled & renamed as 'Spells', allowing you to re-arrange & remove spells from a QC Page.
    - Reorganized / Cleaned Up the Action Select Dropdown - The main list was getting too big!
    - Fixed Revert Delay not properly adjusting the length of the castbar in some cases.
    - Right-Clicking on the Mini-Map Icon now has a new context menu to quickly access things, like the Spark & Quickcast Manager menus.

    v1.3.4 (June 6th, 2023)

    Spoiler

     

    ### - Overhaul Phase Vault Saving / Loading to Remove Limits & Reduce Crashing
    ### v1.3.4 (June 20th, 2023)

    *Minor Feature Update*:
    - The Phase Vault saving/loading has been rewritten; this effectively removes the limit on how big a spell can be, along with fixing the crash if you save too many spells to the vault.
    - Added Keybinding to trigger Spark using your keyboard. Default is 'F'. Change or Unbind it in Arcanum Settings.
    - New 'Prompt' actions; There are customizable dialog pop-ups to allow user-input on spells, or to prompt for confirmation.
    - New Hide & Show UI actions. These also include a custom hook that enables the UI Message & Raid Warning Messages to still show even when UI is hidden.
    - New Stop This ArcSpell (If) & Stop Other ArcSpell actions. Allows optional Lua scripts as it's input; if a script is provided, the spell will only stop if the script returns true.
       - Example: Checking they do NOT have a key item in inventory, then stop.
    - Added a new ARC:STOP(commID) function to the ARC:API. This can be called in scripts in order to stop a running spell directly, from another spell.
    - Added a new XAPI call to check if your character has an aura by ID.
       - Example: ARC.XAPI:HasAuraID(110674) to check in a script if you have the Cosmetic - Freeze Anim spell currently on you.
    - Fixed several bugs with ARC:STOPSPELLS() involving sometimes not stopping the remaining actions, and sometimes not triggering the remaining reverts.
    - Fixed a bug where a spell with reverts would block the first time you hit Escape after it finished all reverts, because it thought you were still casting.
    - Fix Phase Vault UI randomizing the order of any spell 50 and beyond.
    - Fix deleting spell 50 and beyond in the phase vault potentially deleting the wrong spell.
    - Fix cooldown not being retained when transferring a spell from Phase Vault to Personal Vault.
    - Fixed Arcanum Cast bars not displaying the proper timing when the UI is hidden.

     

    __________________________________________________________

    v1.3.3 (May 24th, 2023)

    Spoiler

     

    ### - Minor Feature Update:

        - Added support for Cooldowns on ArcSpells!
           - Cooldowns are unique between Personal & Phase Vault spells.
           - Spells can have their cooldown set to automatically work using
              the new 'Cooldown' box in the Spell Info 'Attic' when editing or
              creating a spell.
           - You can manually trigger a cooldown using the new 'Trigger
              ArcSpell Cooldown' action. (i.e., put another spell on cooldown)
        - Added a new action for "Add Random Item", that supports item weighting as well.
        - Reduced the maximum size for Phase Vault spells before it warns it's too big.
        - Added warning messages & block when you try and save a spell to the Phase Vault,
           but the Phase Vault is not yet loaded. This usually happens when spam
           clicking the 'change visibility' icon in the vault, and could corrupt
           the vault. Hopefully this fixes that.
        - Fixed a Lua error if a spell had a Revert time left on an action
           that doesn't support revert.
        - Fixed Sparks & Vault not properly sending update messages to everyone
           else in the phase, so they see the changes, unless you /reload or cross
           a continent loading screen.
        - Exposed additional API points in the new ARC.XAPI table. Right now this includes
           access to internal Spark functions (ARC.XAPI.sparks) for use in advanced
           ArcSpell or macro scripting, along with other UI triggers & helper functions.
           - Use /dump ARC.XAPI in-game to see functions available.

     

    __________________________________________________________

    v1.3.2 (February 24th, 2023)

    Spoiler

     

    ### - Hotfix:

        - Fixed Sparks storage limitation causing crashes if too many sparks
            were saved in a phase. Now it's 'unlimited'.
        - Phase Officer+ can now export/import the entire Spark database in a phase, to
            create backups or copy to another phase. This is not individual Sparks, but ALL
            Sparks together in the phase. Importing will replace ALL other Sparks in a phase.
                - Access these tools in the Arcanum Options menu.
        - Added a warning when trying to save a spell that is too big for the
            the phase vault (encoded string of 3,500 characters or more).
        - Added a warning when a spell fails to load from the Phase Vault, and it no
            longer breaks the phase vault when it fails to load a spell.
        - Added 38 new Spark frames & 343 new ArcSpell Icons, made by 'T'!

     

    __________________________________________________________

    v1.3.1 (February 2nd, 2023)

    Spoiler

     

    ### - Changes:

        - Fixed updating Sparks for those already in the phase when a Spark is created,
              edited, or deleted. Woops!
        - Added a few more Spark border styles, thanks to skylar/sunkencastles!

     

    __________________________________________________________

    v1.3.0 (January 12th, 2022)

    Spoiler

     

        - SPARKS!  Arcanum Sparks are a new, innovative way to provide interaction between players & ArcSpells in a phase!
               - When a player walks over a Spark Trigger, they will be prompted with a non-intrusive, clickable extrabar button to cast that ArcSpell from the Phase!
               - Sparks can be placed anywhere, and have a customizable activation radius for how close a player must be to activate the trigger & show the Spark!
                     - To create a Spark, right-click a spell in your phase's Phase Vault and select Create Spark!
                     - You can manage sparks in your phase using the 'Spark' lightning bolt icon in the bottom right of your Phase Vault.

        - Quickcast Expansion!  Quickcast has been expanded to allow multiple Books, as well as multiple Pages in each book!
                - You can manage your books, and pages, by right-clicking a book.
                - Books can be styled with various skins via the Right-Click menu on them!
                - You can create Dynamic Pages based on Profiles, which will always show all the ArcSpells in that profile.
                - Accidentally closed all your Books? You can reopen them from the settings menu.
                - Books & Pages are saved across your entire account, but which Books are shown is saved per-character, so each character can have their own Book if you want!
                - A Book Manager UI is available to help manage pages & books via AddOn Settings.

        - ARC.PHASE:API - We've added support for new ARC.PHASE Vars in the ARC:API system.
                - ARC.PHASE Vars are saved between sessions, and saved per-phase!
                - These are accessed via new actions, or in Macro Scripts using ARC.PHASE functions, or directly using "/arc phase" commands.
                - You can see more info in the updated user-guide.

        - More Actions!  We've added more actions to help you accomplish tasks you may not have even thought of yet because you didn't realize you could.

        - Behind-the-scenes improvements!  Shout-out to Iyadriel for providing immense support on improving the 'behind the scenes' code, including rewriting the entire drop-down menu system - twice! You'll see this bring some UI improvements, and allows us too do cool things, like adding input boxes directly into the drop-downs! Arcanum would not be as great as it is without their amazing help ❤️

        - Bug Fixes:  We've squashed a lot of bugs.. Here's a quick list!
            Gossips only working on first click; "SpellCreator was blocked..." messages; ARC:IFS work
            properly for single-commands just like ARC:IF; URL Copy pop-up no longer extends wider
            than the screen and becomes un-usable; Escape codes now work properly in text actions;
            Stop Spells properly stops spells; Properly load the phase vault on Phase Change & Login;
            Reset Anim now .. kinda properly resets your anim, you'll need to move first before you
            can use other anims again though.. engine limitation it seems; Profiles are easier
            to navigate in the dropdown now & doesn't miss 'account' when toggling Show All.

     

    __________________________________________________________

    v1.2.0 (December 21st, 2022)

    Spoiler

    ### - Highlights:
        - ICONS!  ArcSpells can now have icons assigned, which are used in the
                vaults, Quickcast, Castbars, and Integrations when available!
        - Quickcast!  ArcSpells can be assigned to Quickcast via right-click in your personal
                vault. Quickcast is an easier way to quickly access & cast frequent spells.
                Add a spell from your vault, then mouse-over the Quickcast book to get started!
        - NEW Actions!  We've added tons of new actions to make it easier to do what you want
                without needing to figure out the scripting side or making a command. We've
                also reworked the Action Drop-down Menu, grouping actions into categories,
                to make it easier to find what you're looking for.
        - Castbar!  ArcSpells longer than 0.25 seconds now have a castbar!
                Hate it? Want it channeled? You can toggle it off or to show as channeled
                by using the Cast/Channel checkbox in the top 'Attic' area in the Forge!
        - Keybinds!  You can assign keybindings to ArcSpells via right-click in your personal
                vault. Note: Keybinds are unique, you can't have two spells on one binding.
        - OPie Integration!  ArcSpells can be added directly to OPie rings if you have OPie
                installed. You can add them just as you would any other action, using the new
                Arcanum - Spell Forge section when adding an item to a ring.

    ### - More Changes & QOL Updates:
        - Everywhere:
            - Tooltips are more consistent and easier to follow. Tip: Read the ToolTIPs for
                TIPS on how to use Arcanum & what things do!
        - Gossip:
            - Fixed a few bugs with the Add to Gossip UI.
            - Added a new <arc_copy:url> tag to make gossip options to copy a URL easier.
        - Forge UI:
            - New rows added will pre-fill with the same delay as the row you're adding from.
            - More alerts to help you know when an error occurs, like casting an ArcSpell that
                doesn't exist in your vault from another ArcSpell.
            - Editing a spell now puts the vault in Editing mode with 'Save' button instead of
                'Create', and does not make you confirm to over-write the save.
            - Trying to load another spell into the editor, or trying to reset the editor,
                with unsaved changes, will now warn you that you have unsaved changes first.
            - A new 'Profile' dropdown lives in the top of the Forge UI, to assign a spell
                directly to a profile when creating it.
        - Vaults:
            - Spell Visibility in Phase Vault's can now be directly changed using the
                private icon without having to reupload it.
            - Hotkeys, Quickcast, and Profiles can all be assigned from right-clicking a
                spell in your vault!
            - You can now search in your Personal & Phase vaults for a spell by name.
        - Chat Links:
            - Chat links have been reworked to be less reliant on your character being online.
                Links also take up much less characters in messages. All spell data is now
                sent to a client directly when shared, and has it stored in a cache so
                it can be saved if desired without having to request it from the owner again.
        - ARC:API
            - ARC:RAND() added as a replacement for GetRandomArgument() which Blizz removes
                in 9.0+ for some reason.
            - ARC:CMD has replaces the ARC:COMM function so that it matches Gossip <arc_cmd:>
                tags and the /arc cmd command. ARC:COMM will still function in the background.
            - ARC:IF & ARC:IFS now support single command specification, so you can specify
                the command to run if it passes the check, or do nothing if not.
            - /arc commands now accept spaces in arguments by using "" around them.
                - Example: /arc if HasKeys ".phase tele inside the door"

    ### - Bugs Fixed:
        - Phase Vault did not load correctly when entering a phase that required a
            loading screen.
        - Multi-Tags did not work if using the Immersion addon for gossips.
        - Profiles reset when loading & re-saving a spell. They're now remembered!
        - Phase vault could get stuck loading when changing phases under certain conditions.
        - Phase vault could occasionally show duplicated, until refreshed.
        - Personal vault is now correctly sorted in alphabetical order.

     

    __________________________________________________________

    v1.1.0 (November 7th, 2022)

    Spoiler

     

    - Spell Forge UI Updates
        - The / - buttons to add/remove rows have been moved into the UI!
              - You can now delete any row directly, and add a row above any other row, by
                  mousing over the row and using it's contextual / - buttons.

        - A new "Clear & Reset UI" button has been added! If the animation is too slow for
            you, you can toggle 'Fast Reset' in the Arcanum options menu.

        - The Revert Checkbox was killed. Now it's just Revert Delay - Simpler to use, and
            allows more room for the input box, which is also now bigger! If there is no
            revert delay, then it will not revert. Why need a checkbox?
               (BONUS: Toggle the input box EVEN BIGGER in the Arcanum Options Menu!)

    - Vault Overhaul!
        - All Vaults:
            - You can now right-click an ArcSpell in the vault to get a context menu
                to access some frequent actions, and some of the new features!

        - Personal Vault:
            - You can now assign ArcSpells to a profile, and filter to only show specific
                profiles. New ArcSpells are assigned to your character's profile.
                This should help make it easier if you have lots of ArcSpells in your vault!

                - Assign a Profile: Right-Click the ArcSpell in the Vault!
                - Change Profile Filter: Left-Click the double-head icon in the top right. 
                - Change Default Filter: Right-Click the double-head icon in the top right.

            - You can now Import & Export ArcSpells from the game, to share externally.
                - To Export: Right-Click the ArcSpell and click Export, then copy the code.
                - To Import: Click the yellow up-arrow in the bottom left of the Vault.

        - Phase Vault:
            - You can now upload ArcSpells to the Phase Vault as 'Private'.
                - Private spells will only show in the vault for Officers+. Players
                  will still be able to use private spells linked from Gossip menus.

            - Spell visibility (Private vs Public) is represented by the eye-con on 
                each spell row in the Phase Vault. Spells must be re-uploaded to change
                their visibility.

            - Transfer to Personal Vault button added. No more 'Edit -> Create' needed!

    - Gossip Integration Overhaul!
        - All Gossip Integrations have been completely rewriten / reintegrated.
              Please see below for a list of all major changes.

        - Phase Vault now has direct integration for adding an ArcSpell to a Gossip Menu!
            - With a Gossip Menu open, click on the 'head with a speech bubble' icon, or
                right-click an ArcSpell! Gossip editing requires Officer+.

    - IMPORTANT: Gossip Integration Changes
        - NEW: Add to Gossip button/UI for ArcSpells in the Phase Vault, noted above!
            - Just use that instead of learning this stuff!
        - NEW/CHANGED: You can now add Gossip tags to Gossip Text to run those actions
              automatically. This replaces '_auto' tags in gossip options.
        - CHANGED: Gossip tags can be shortened to <arc_ for text limit purposes. 
              Both "<arc_ ... >" and "<arcanum_ ... >" will work.
        - CHANGED: <arcanum_auto> & <arcanum_toggle> are now just <arcanum_show>.
              Auto vs On Click now depend on if you use it in Text or Option.
        - CHANGED: Auto tag removed as a tag extension. See above 'NEW' also.
            - Old tags will still function for legacy, but you should be
              using <arcanum_cast_(hide):spell> in '.ph fo np go text add' 
              instead now. I cannot gaurantee new tags with _auto will work..

        - VALID TAGS:
                <arc_show> -- Opens the Spell Forge UI
                <arc_cast: ..commID > -- Casts the (commID) from the Phase Vault
                <arc_save: ..commID > -- Saves the (commID) from Phase -> Personal Vault
                <arc_cmd: ..server command > -- Executes the server command given
                <arc_macro: ..slash command > -- Executes the macro-script given
                    Macro Script can be used in combination with ARC:API as well.

           - Tag Extensions: ( added to the end of a tag, before the :command )
                |cffFFA500_hide|r -- Hides the Gossip UI after executing the tag's function.
                        Example: <arc_cast_hide:teleportToStormwindSpell>
                    NOTE: You should ALWAYS use _hide for teleporting spells
                          to avoid a bug in the gossip menus if you tele before closing.

    - NEW: ARC.API - A pseudo API to make scripting in ArcSpells easier.
          Functions:
                ARC:COMM("command")    -- Sends a server command.
                ARC:COPY("text / link")      -- Open a Dialog box to Copy the text/link
                ARC:GETNAME()       -- Returns the Target's into chat. Try it on a MogIt NPC.
                ARC:CAST("commID")         -- Casts an ArcSpell from your Personal Vault
                ARC:CASTP("commID")       -- Casts an ArcSpell from the Phase Vault

                ARC:IF("ArcVar", [trueCommand, falseCommand], [var1])
                    -- Checks if the ArcVar is true. If true & false command provided, runs the
                        command depending the ArcVar. If no commands provided, returns true if
                        the ArcVar is true, or false if not. If Var1 provided, it will append the
                        var to the true & false command, allowing shorter writen functions.

                ARC:IFS("ArcVar", "value", [trueCommand, falseCommand], [var1])
                    -- Works similar to ARC:IF but checks if the ArcVar matches the "value".
                        i.e., ARC:IFS("WhatFruit","Apple") checks if WhatFruit = Apple.

                ARC:TOG("ArcVar")             -- Toggles an ArcVar between True & False.
                ARC:SET("ArcVar", "value")  -- Sets an ArcVar to the specificed "value".
                ARC:GET("ArcVar")           -- Returns the value of an ArcVar. Needs embeded.

                Please see the User Guide for more information on the ARC.API, or use `/arc`.
                Frequent ARC.API functions can also be ran using a more friendly slash command,
                but are limited in that you cannot use spaces in the vars or commands.
                    /arc cast $commID -- Cast Personal ArcSpell (accepts spaces)
                    /arc castp $commID -- Cast Phase ArcSpell (accepts spaces)
                    /arc cmd $serverCommand -- (i.e, /arc cmd cheat fly) (accepts spaces)
                    /arc getname -- Prints your taget's name in your chatbox (Try on a MogIt NPC!)
                    /arc copy $text/link -- Open a box to copy the text/link (accepts spaces)
                    /arc tog $ArcVar -- (no spaces)
                    /arc set $ArcVar $value -- (no spaces)
                    /arc if $ArcVar $trueCommand $falseCommand $trueVar $flaseVar -- (no spaces)
                      - ex: /arc if ToggleTorch aura unaura 1234 all
                      - Casts aura 1234 if ToggleTorch is true, or unaura all if false.
                      - You can leave off $falseVar and $trueVar will be used for both true & false.
                    /arc ifs $ArcVar $value $trueCommand $falseCommand $trueVar $flaseVar
                      - Same as '/arc if' but tests if $ArcVar == $value instead of just true.


          NOTE: ArcVars exist in a global table, "ARC.VAR". You can access them directly if you
                understand Lua & know what you're doing. 

                ArcVars are NOT SAVED between sessions. Persistent Vars may come in the
                future if the need is there, but they won't be secure. If you think of a good use
                for them, let me know and I can push it up higher on the to-do list.

    - Changelogs are now documented in-game in the Settings panel.
               Along with Links to the User Guide on Discord & the forums!

    - BUG FIXES:
            - Reduced the number of phase-vault hard-refreshes. Vault refreshes if needed, but
                    but you can forcefully trigger a refresh as well still.
            - Revert now properly executes the intended revert command without extra junk.
            - Slash /Command & Server .Command actions no longer break when a comma is present.
                    - That said, Slash & Server actions no longer support comma multi-actions.

     

    __________________________________________________________
    v1.0.0 (October 20th, 2022)

    - Released! 

     


  7. Your best place for support is in the Discord: https://discord.gg/epsilon

    You'll find the #tech-faq area has answers to this, and any questions you can also be helped / answered in the #tech-support channel.


    That said, to answer your question directly: It's a false-positive, there's no virus/trojan on Epsilon. It shows up because we hook into the WoW.exe to add our own functions so that you can do things like WMO rotation & scaling, etc.

    If you’re Epsilon.exe was deleted / disappeared / flagged as a virus after a Launcher update (read & try this before posting in tech-support please):
    - Restore the Epsilon.exe from your AV quarantine; or just download a new exe here (& move it to your Epsilon folder) : https://media.epsilonwow.net/files/Epsilon.exe
    - Add an exception in your AV for both the Epsilon folder and the Epsilon.exe file. (See below for a list of articles on common AV's, including Windows Defender / Security)
    - See the link below also for WHY the Launcher gets flagged if you’re curious. Specifically the last Q/A on that section: https://discord.com/channels/172452891485929472/735230259011518464/1008759015834128454
     

    How to add an exception/exclusion to your Anti-Virus (Which you should do for your Epsilon client, including the folder & Epsilon.exe):

    Windows Security/Defender
    Avast
    McAfee
    Norton ⁽ᵇᵘᵗ ᵃˡˢᵒ ʲᵘˢᵗ ᵈᵉˡᵉᵗᵉ ᵗʰⁱˢ ᵍᵃʳᵇᵃᵍᵉ⁾
    TrendMicro
    Anything else: Google "myAntiVirus add exclusion", you'll find it.


  8. Two ideas, depending on how much more work it would take to make one vs the other.

    The main idea - A new command that allows phases to create 'sequences' of prepared commands, which can then be triggered to run by teleporters or gossips, bypassing the permissions checks usually on the command. For instance, say you want an NPC gossip on-click to trigger apply a spell effect onto a group of objects, but that requires member/officer permissions. A sequence could be created using '.go group sel #id' and then '.go group spell #spell'. Preferred if they can be put on delays too per command, so that it can do something like "after 1 second, also then '.go group move down 100' to effectively hide the group."

    Command idea would be:

    phase forge sequence
    	- create $name // name may be redundant, but I thought it might be better to call things by name instead of ID if possible since if you delete a sequence and all the ID's shift, your teleporters & gossip menus all need updated (i.e., gossip uses sequence 2, but you delete sequence 1 and now sequence 2 doens't exist, or is now what sequence 3 was before, so your gossip / teleporters do the wrong thing..)
    	- delete #id
    	- info #id
    	- list // list all sequences by Name & ID
    	- run $name // runs the sequence - useful for testing or running them outside of gossip/teleporters if needed (i.e., for DM's)
    	- requireofficer #id // toggles if the sequence requires officer to run from '.phase forge sequence run' command. All sequences can be run from gossip/tele despite this.
    	- condition
    		- add $condition_type ... (specify options for that condition type)
    			- condition_type's example: [hasitem: #itemID #num !shouldRemove (bool)]
    		- remove #cond_id
    		- list
    	- step ..
    		- add #sequenceID #delay $command
    		- remove #sequenceID #stepID
    		- modify #id #delay $command // may not need this - just tell them to remove the step & re-add it

     

    Second Idea is just a much simpler version without delays & without steps, just prepared commands that can be made, and then Arcanum could be used to automate them also.. IMO tho, sequences are the more secure version, because handling the sequence on the server means it can be ran from a single gossip click, so your sequences could still be set to require officer for running, unlike thru arcanum which would have to use the 'run' command, which would require it to have open permissions. 

    .phase forge preparedcommand
    	- create $name $command
    	- delete #id
    	- list
    	- requireofficer #id
    	- run $name
    	- condition
    		- add $condition_type ... (specify options for that condition type)
    			- condition_type's example: [hasitem: #itemID #num !shouldRemove (bool)]
    		- remove #cond_id
    		- list

     

    Also adding commands for a gossip options & teleporter triggers to run a sequence/preparedcommand when clicked/activated also ?

     

     

    Basically, end goal is being able to 'script' gossip & teleporter triggers to make things happen, or make phase DM's more equipped to more quickly run some commands together.

    (i.e., imagine being able to remake this: https://youtu.be/392THJV0Lwg?t=28)


  9. On 10/13/2022 at 5:32 PM, Dove said:

    no pls discord has become so gosh darn laggy and the server itself is bloated to bits.

    and the forums are any less laggy? Plus forums are just a single 'channel' to add, and idk what 'the server itself is bloated to bits' means tbh. If you've seen any other big discord servers, ours is pretty slim..


  10. Not sure if we have Discord Forums yet on our server, but if so, it might be worth moving Suggestions to Discord in a forum section. I am in another Discord that handles them like this and it is rather clean, as the forums don't clutter the side bar, as they don't show topics/posts unless you 'follow' one. 

    Example from other discord:

    image.thumb.png.b5cf87f57f252611c7833ba88e764095.png


  11. On 7/11/2022 at 12:38 PM, Bastille said:

    Hey there, doing what the Raz suggests and dropping a thread in regards to adding line breaks in Forged Item Descriptions. I'm aware it cannot be extended beyond 255 characters (Sometimes it doesn't even allow me that: It might be due to adding colors) but if we could somehow get line breaks/spaces, that would be awesome.

    Can you use |n or |r (new line or carriage return, respectively) in the command, and what happens? May need to use \124n or \124r. Both of these are what are used to do new lines in a single string of text.


  12. Announce Ignore - A QoL Feature Addon

    The 'Problem': WoW does not check & block ignored players in System Messages, because the messages technically don't come from the player, they come from the server. Not an issue in retail, but can be annoying with .ann & .phase announce. This adds a simple filter to check the sending player of the message, and hides it if they're on your ignore list. 

     

    Options: By default, the addon's filter only checks "Announce" and "Phase Announce" messages. This means things like ".app" and such still come through. If you want to block those also, you can do "/annignore" to switch the filter's scope to block ALL System Messages 'from' that player. I only recommend this change if they are spamming you with commands that send a message, as you might want some of those messages so you can properly handle the situation (i.e., if you have this switched to ALL, and your .app is turned ON, they may Appear you and you would not get the message they appeared you..).

     

    Download: https://github.com/MindScape00/Announce_Ignore/releases/download/v1.0.0/Announce_Ignore-v100.zip

    Install: Simply extract the Announce_Ignore folder from the ZIP file into your \Epsilon\_retail_\Interface\AddOns\ folder.


  13. Hi, & Welcome to Epsilon!

    Long load times can be expected when you're new to Epsilon, as the client is download / streaming the game assets, especially if you're just starting off fresh with the launcher and not the torrent. The initial download shown when you launched was just the base assets needed to launch the game - everything else is streamed 'as needed' once in-game by WoW by default. 

    So any time you load into somewhere new, or that has objects, items, or NPCs you haven't seen yet, it will download them while you are 'loading', causing the long load times. As you play more, your load times will steadily reduce.


  14. On 5/28/2022 at 10:26 AM, Razmataz said:

    @MindScape, let me know if this is also a problem with my commands / addonmsg output.

    The slider has some hacks for switching automatically between saturation for tint vs overlay since tint used to not have saturation. With the update these hacks make it incorrectly reset saturation to 100. Pretty sure I fixed this in the OM update to support new tint systems, but that hasn’t been pushed yet. 


  15. 4 hours ago, Ethereal said:

    not exactly excited for the .app change

     

    anyone that hasn't been given the permission by epsilon administration having the ability to just app to me without asking me for permission to do so just creeps me out, that is kinda a put-off from public phases for me

    I think you’re seeing it wrong- only officers+ of a phase get this, and it’s for moderation. Someone causing trouble but their app is off so you can’t get there to see? Not a problem any more. Alternate view: imagine a phase is someone’s house & you’re visiting, now they can find you in their house.


  16. 1 minute ago, EdgelordDan said:

    oh i didnt realize there was a guide. this was made recently, not before the launcher came out, i just kinda winged it and it worked for me and a few others and ive only had an issue with one friend. idk what the issue precisely is, i edited the blp, threw it in character, and clicked "add" in the patch creator, and selected with specific file it was and uh,, it worked. thanks!

    You should release it with the actual patch.json file though to work out of the box for players.


  17. Looks like this patch is not designed to use with the Epsilon Launcher, which can cause confusion for players who install patches on the newest client using the launcher. The old method of patching is not supported for loose files - only launcher patches are actually supported, as they need to be loaded directly by the launcher for the client to recognize them.

    I'd heavily suggest revamping your patch for use in the launcher so that it's a simple install w/o confusion or errors or extra work for users to make it compatible themselves, Aigar has a guide up for how to create launcher compatible patches if needed: 

     


  18. On 9/29/2021 at 6:18 PM, CoolDude420 said:

    Well, for a newbie, there's no way to know exactly how to make an object move, unless you ask somebody.

    As well as that, the player has to fill in three separate fields that already relate to a different property (Dimensions); rather than having another number field for MoveDistance. Just seems like it'd be more intuitive to have a little text box above the movement buttons, which relates to how far the object will be moved when the buttons are pressed.

    How far the object will move IS the dimensions. The latest update also renamed the box to "Object Info" and the Length, Width, and Height, is how much the object will move - those are the numbers that are used. I am not sure on another way to rename them either that could make that clear, to be honest,

    We do not just have a single 'move distance', as that could be different depending on the axis you want to move on if being used for tiling, or refined movements that would change based on length/width/height based on how you're moving them - i.e., placing plants or something, and wanting to move by 3's in distance, but only a few 0.1's or so in height to adjust to add variety. 

    I've contemplated renaming the Object Info boxes, to like.. x,y,z? Or Horizontal (X), Vertical (Z), and ... depth (Y)? But, there's no good names for a 3D plane that is easily distinguishable outside of xyz, which can then cause confusion with the X Y Z on rotation. If we want to talk on esotericism, this right here would only complicate that further. I think leaving it as Length,Width,Height is the best decision, and new users have access to the pop-up guide / change-log also that should help clarify how to use the addon. Not to mention that Length/Width/Height can be auto-filled on selecting an object, so they don't need to do it manually. 

     

    In all honesty, the addon was designed for objects to be moved on 3 axis, and the object dimensions / info are how much to move by. Changing that would fundamentally change the addon's useage cases - and adding a "toggle" with a single "Move Distance" box in the movement section would make the object info length/width/height pointless, as it wouldn't be used for ANYTHING else... so what's the point? You can just fill in the same # for all 3 if that's what's wanted.

×