|
|
4 months ago | |
|---|---|---|
| .github | 4 years ago | |
| TradeSkillMaster | 4 months ago | |
| TradeSkillMaster_Accounting | 4 months ago | |
| TradeSkillMaster_AuctionDB | 4 months ago | |
| TradeSkillMaster_Auctioning | 4 months ago | |
| TradeSkillMaster_Crafting | 4 months ago | |
| TradeSkillMaster_Destroying | 2 years ago | |
| TradeSkillMaster_ItemTracker | 2 years ago | |
| TradeSkillMaster_Mailing | 6 months ago | |
| TradeSkillMaster_Shopping | 4 months ago | |
| TradeSkillMaster_Warehousing | 2 years ago | |
| bin | 4 months ago | |
| scripts | 4 months ago | |
| .gitignore | 4 months ago | |
| AGENTS.md | 4 months ago | |
| README.md | 4 months ago | |
README.md
TradeSkillMaster (Ascension.gg)
TradeSkillMaster (TSM) is a World of Warcraft addon suite. This fork is tailored for Ascension.gg and includes the core addon plus feature modules.
Modules
Each module lives in its own top-level folder and is loaded by its .toc manifest:
TradeSkillMaster(core)TradeSkillMaster_AccountingTradeSkillMaster_AuctionDBTradeSkillMaster_AuctioningTradeSkillMaster_CraftingTradeSkillMaster_DestroyingTradeSkillMaster_ItemTrackerTradeSkillMaster_MailingTradeSkillMaster_ShoppingTradeSkillMaster_Warehousing
Install (Local)
Copy the desired module folders into your AddOns directory and reload the game:
- AddOns:
/home/zalox/Games/ascension-wow/drive_c/Program Files/Ascension Launcher/resources/client/Interface/AddOns - SavedVariables:
/home/zalox/Games/ascension-wow/drive_c/Program Files/Ascension Launcher/resources/client/WTF/Account/omanfred/SavedVariables
In-game, use /reload after changes.
Development Notes
- Lua files use tab indentation.
- Keep
.tocand primary.luafilenames aligned with the module name. - If adding files, list them in the module
.toc. - Versions are tracked in
TradeSkillMaster/TradeSkillMaster.tocandTradeSkillMaster_AuctionDB/TradeSkillMaster_AuctionDB.toc.
Custom Price Sources (Full Reference)
TSM price strings can reference built-in data sources and combine them with math. Source names are case-insensitive.
Core sources
VendorBuy: Buy from vendor.VendorSell: Sell to vendor.Disenchant: Disenchant value (if available).
AuctionDB sources
DBMarket: AuctionDB market value (scan/app historical average).DBMinBuyout: AuctionDB minimum buyout from the most recent scan data.
Accounting sources
avgSell: Average sell price.avgBuy: Average buy price.maxSell: Maximum sell price.maxBuy: Maximum buy price.minSell: Minimum sell price.minBuy: Minimum buy price.
Crafting sources
Crafting: Crafting cost.matPrice: Crafting material cost.
Optional addon sources
Available only if the addon is installed and enabled.
AucAppraiser: Auctioneer - Appraiser.AucMinBuyout: Auctioneer - Minimum Buyout.AucMarket: Auctioneer - Market Value.AtrValue: Auctionator - Auction Value.
Functions and syntax
- Math operators:
+,-,*,/,^ - Money literals:
100g,50s,25c, or combined12g 34s 56c - Convert another item:
convert(priceSource, itemLink)orconvert(priceSource, item:12345)
Function: min(...)
Returns the smallest of the provided values. Ignores invalid values.
Example: min(dbmarket, 250g)
Function: max(...)
Returns the largest of the provided values. Ignores invalid values.
Example: max(dbminbuyout, 100g)
Function: avg(...)
Returns the average (rounded) of the provided values. Ignores invalid values.
Example: avg(dbmarket, dbminbuyout)
Function: first(...)
Returns the first valid value from left to right.
Example: first(dbminbuyout, dbmarket, 100g)
Function: check(checkValue, ifValue, elseValue)
Returns ifValue when checkValue is greater than 0, otherwise elseValue.
Example: check(dbminbuyout, dbminbuyout, dbmarket)
Function: ifgt(a, b, ifValue, elseValue)
Returns ifValue when a is greater than b, otherwise elseValue.
Example: ifgt(dbminbuyout, 200g, dbminbuyout, dbmarket)
Function: ifgte(a, b, ifValue, elseValue)
Returns ifValue when a is greater than or equal to b, otherwise elseValue.
Example: ifgte(dbmarket, 500g, 500g, dbmarket)
Function: iflt(a, b, ifValue, elseValue)
Returns ifValue when a is less than b, otherwise elseValue.
Example: iflt(dbminbuyout, 50g, 50g, dbminbuyout)
Function: iflte(a, b, ifValue, elseValue)
Returns ifValue when a is less than or equal to b, otherwise elseValue.
Example: iflte(dbmarket, 20g, dbmarket, 20g)
Function: ifeq(a, b, ifValue, elseValue)
Returns ifValue when a equals b, otherwise elseValue.
Example: ifeq(dbminbuyout, dbmarket, dbminbuyout, dbmarket)
Function: round(value[, step])
Rounds to the nearest step (default 1).
Example: round(dbmarket, 1g)
Function: roundup(value[, step])
Rounds up to the nearest step (default 1).
Example: roundup(dbmarket, 5g)
Function: rounddown(value[, step])
Rounds down to the nearest step (default 1).
Example: rounddown(dbmarket, 5g)
Examples
dbmarket * 0.9(90% of market value)max(dbminbuyout, 100g)(at least 100g)min(dbmarket, 250g)(cap at 250g)ifgt(dbminbuyout, 200g, dbminbuyout, dbmarket)(prefer min buyout if above 200g)
Notes:
- Sources return values only when their module has data (for example, no AuctionDB scan means empty values).
- Use
DBMarketfor stable pricing andDBMinBuyoutfor recent lows.
Testing
There is no automated test framework. Validate changes in-game by:
- Logging in / reloading to verify module initialization.
- Exercising the relevant UI workflows.