Compare commits
No commits in common. '0e24db11537f422c72813f92d120e88ef07a0d8b' and '472f8d2be6166d56320af7e86abe1c87a09998b0' have entirely different histories.
0e24db1153
...
472f8d2be6
3 changed files with 5 additions and 134 deletions
@ -1,132 +1,3 @@ |
|||||||
# TradeSkillMaster (Ascension.gg) |
# TradeSkillMaster |
||||||
|
|
||||||
TradeSkillMaster (TSM) is a World of Warcraft addon suite. This fork is tailored for Ascension.gg and includes the core addon plus feature modules. |
This is the repository for Trade Skill Master (TSM). Modified for Ascension.gg. |
||||||
|
|
||||||
## Modules |
|
||||||
Each module lives in its own top-level folder and is loaded by its `.toc` manifest: |
|
||||||
- `TradeSkillMaster` (core) |
|
||||||
- `TradeSkillMaster_Accounting` |
|
||||||
- `TradeSkillMaster_AuctionDB` |
|
||||||
- `TradeSkillMaster_Auctioning` |
|
||||||
- `TradeSkillMaster_Crafting` |
|
||||||
- `TradeSkillMaster_Destroying` |
|
||||||
- `TradeSkillMaster_ItemTracker` |
|
||||||
- `TradeSkillMaster_Mailing` |
|
||||||
- `TradeSkillMaster_Shopping` |
|
||||||
- `TradeSkillMaster_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 `.toc` and primary `.lua` filenames aligned with the module name. |
|
||||||
- If adding files, list them in the module `.toc`. |
|
||||||
- Versions are tracked in `TradeSkillMaster/TradeSkillMaster.toc` and `TradeSkillMaster_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 combined `12g 34s 56c` |
|
||||||
- Convert another item: `convert(priceSource, itemLink)` or `convert(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 `DBMarket` for stable pricing and `DBMinBuyout` for recent lows. |
|
||||||
|
|
||||||
## Testing |
|
||||||
There is no automated test framework. Validate changes in-game by: |
|
||||||
1. Logging in / reloading to verify module initialization. |
|
||||||
2. Exercising the relevant UI workflows. |
|
||||||
Loading…
Reference in new issue