Initial commit — WyntrWear v1.2.2 WotLK tabard reminder addon (2009)
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
*.DS_Store
|
||||
Thumbs.db
|
||||
71
README.md
Normal file
71
README.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# WyntrWear
|
||||
|
||||
A World of Warcraft addon for Wrath of the Lich King (WotLK, patch 3.2). Written in Lua, June 2009.
|
||||
|
||||
**Author:** Wyntrfylth of Skywall, `<Vendor Trash>`
|
||||
|
||||
---
|
||||
|
||||
## What It Does
|
||||
|
||||
WyntrWear reminds level 80 characters to equip a tabard when entering a 5-man instance, so you
|
||||
don't waste a full run accumulating rep with the wrong faction.
|
||||
|
||||
On entering an instance it displays in the default chat frame either the name of the tabard you are
|
||||
wearing, or a warning that you have no tabard equipped. If no tabard is equipped, a UI frame appears
|
||||
with a checkbox to disable future checks for that character (useful for mains who are already exalted
|
||||
with everything).
|
||||
|
||||
It also tracks reputation earned during the run and reports it when you swap or unequip your tabard.
|
||||
|
||||
---
|
||||
|
||||
## Commands
|
||||
|
||||
| Command | Effect |
|
||||
|---|---|
|
||||
| `/ww status` | Reports current tabard and standing with its faction |
|
||||
| `/ww check` | Re-enables the instance-entry check if you previously disabled it |
|
||||
| `/wyntrwear` | Same as `/ww` |
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
Drop the `WyntrWear/` folder into your `Interface/AddOns/` directory and reload your UI.
|
||||
|
||||
**Interface version:** 3.2.0 (30200) — Wrath of the Lich King
|
||||
|
||||
---
|
||||
|
||||
## Supported Factions
|
||||
|
||||
WyntrWear tracks reputation for the five WotLK instance tabard factions:
|
||||
|
||||
- Argent Crusade
|
||||
- Knights of the Ebon Blade
|
||||
- Kirin Tor
|
||||
- The Wyrmrest Accord
|
||||
- Horde Expedition
|
||||
|
||||
---
|
||||
|
||||
## Files
|
||||
|
||||
| File | Purpose |
|
||||
|---|---|
|
||||
| `WyntrWear.lua` | All addon logic — event handling, rep tracking, slash commands |
|
||||
| `WyntrWear.xml` | UI frame definition — the checkbox panel shown on instance entry |
|
||||
| `WyntrWear.toc` | WoW addon manifest — interface version, metadata, load order |
|
||||
| `wyntrwear.JPG` | Screenshot — addon UI in-game |
|
||||
| `ww2.JPG` | Screenshot — rep tracking output in chat frame |
|
||||
|
||||
---
|
||||
|
||||
## Background
|
||||
|
||||
Six level-80 toons. A lot of instancing. A persistent habit of forgetting to swap tabards before
|
||||
the first pull, then noticing mid-run that Horde Expedition rep had been accumulating instead of
|
||||
Argent Crusade. WyntrWear was the fix.
|
||||
|
||||
Version 1.2.2 archived from the original distribution package.
|
||||
251
WyntrWear.lua
Normal file
251
WyntrWear.lua
Normal file
@@ -0,0 +1,251 @@
|
||||
function WyntrWear_OnLoad(frame)
|
||||
SlashCmdList["WYNTRWEAR"] = WyntrWear_CmdHandler;
|
||||
SLASH_WYNTRWEAR1 = "/wyntrwear";
|
||||
SLASH_WYNTRWEAR2 = "/ww";
|
||||
NEUTRAL_MIN = 0;
|
||||
NEUTRAL_MAX = 3000;
|
||||
FRIENDLY_MIN = 3001;
|
||||
FRIENDLY_MAX = 9000;
|
||||
HONORED_MIN = 9001;
|
||||
HONORED_MAX = 21000;
|
||||
REVERED_MIN = 21001;
|
||||
REVERED_MAX = 42000;
|
||||
EXALTED_MIN = 42001;
|
||||
EXALTED_MAX = 43000;
|
||||
HORDE_EXPEDITION = "Horde Expedition";
|
||||
startRep = nil;
|
||||
totalEarned = nil;
|
||||
oldTabard = nil;
|
||||
atExalted = false;
|
||||
wrathNames = {"Argent Crusade", "Knights of the Ebon Blade", "Kirin Tor", "The Wyrmrest Accord", "Horde Expedition"};
|
||||
|
||||
if (IsEquippedItemType("Tabard")) then
|
||||
tabardName = GetInventoryItemLink("player", GetInventorySlotInfo("TabardSlot"));
|
||||
else
|
||||
tabardName = HORDE_EXPEDITION;
|
||||
end
|
||||
oldTabard = tabardName;
|
||||
startRep = getRepData(tabardName, false);
|
||||
|
||||
frame:Hide();
|
||||
frame:RegisterForDrag("leftButton");
|
||||
frame:RegisterEvent("ADDON_LOADED");
|
||||
frame:RegisterEvent("PLAYER_ENTERING_WORLD");
|
||||
frame:RegisterEvent("UNIT_INVENTORY_CHANGED");
|
||||
DEFAULT_CHAT_FRAME:AddMessage("WyntrWear: wyntrwear loaded...");
|
||||
end
|
||||
|
||||
function processTabardName(tabardName)
|
||||
local found, _, itemString = string.find(tabardName, "^|c%x+|H(.+)|h%[.*%]");
|
||||
if (found) then
|
||||
local linkType, itemID = strsplit(":", itemString);
|
||||
local itemName = GetItemInfo(itemID);
|
||||
itemName = string.gsub(itemName, "Tabard", "");
|
||||
itemName = string.gsub(itemName, "of", "");
|
||||
itemName = string.gsub(itemName, "the", "");
|
||||
itemName = string.gsub(itemName, "^%s*(.-)%s*$", "%1"); -- trim()
|
||||
itemName = string.gsub(itemName, " ", " "); -- eliminate x2 spaces
|
||||
return itemName;
|
||||
else
|
||||
return tabardName;
|
||||
end
|
||||
end
|
||||
|
||||
function getRepData(tabardName, printRep)
|
||||
local itemName = tabardName;
|
||||
local factionIndex = 1;
|
||||
local lastFactionName = nil;
|
||||
local repString;
|
||||
local basePoints;
|
||||
local demoninator;
|
||||
local repLevel;
|
||||
local foundName = false;
|
||||
local oldTabardIsWrath = false;
|
||||
local factionColor;
|
||||
local colorTemplate = "|cff%02x%02x%02x";
|
||||
local r, g, b;
|
||||
if (printRep == nil) then printRep = true; end
|
||||
--DEFAULT_CHAT_FRAME:AddMessage("WWDB: getRepData(" .. tabardName .. ")");
|
||||
if (tabardName ~= HORDE_EXPEDITION) then
|
||||
itemName = processTabardName(tabardName);
|
||||
end
|
||||
if (oldTabard ~= HORDE_EXPEDITION) then
|
||||
oldTabard = processTabardName(oldTabard);
|
||||
end
|
||||
--DEFAULT_CHAT_FRAME:AddMessage("WWDB: Processed itemName = " .. itemName);
|
||||
repeat
|
||||
local name, description, standingId, bottomValue, topValue, earnedValue, atWarWith,
|
||||
canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild = GetFactionInfo(factionIndex);
|
||||
if (name == lastFactionName) then
|
||||
break;
|
||||
elseif (name == nil) then
|
||||
break;
|
||||
else
|
||||
lastFactionName = name;
|
||||
for i = 1, #wrathNames do
|
||||
if (name == wrathNames[i]) then
|
||||
foundName = true; -- is this a wotlk faction name?
|
||||
end
|
||||
oVal = string.find(wrathNames[i], oldTabard);
|
||||
if (oVal ~= nil) then
|
||||
oldTabardIsWrath = true;
|
||||
end
|
||||
end
|
||||
oVal = string.find(name, oldTabard);
|
||||
if (oVal ~= nil and startRep ~= nil and oldTabardIsWrath) then
|
||||
totalEarned = earnedValue - startRep;
|
||||
if (totalEarned ~= nil and totalEarned > 0) then
|
||||
DEFAULT_CHAT_FRAME:AddMessage("WyntrWear: You earned " .. totalEarned .. " reputation with " .. oldTabard ..".");
|
||||
end
|
||||
--DEFAULT_CHAT_FRAME:AddMessage("WWDB: start rep: " .. startRep ..", earnedValue: " .. earnedValue);
|
||||
else
|
||||
totalEarned = 0;
|
||||
end
|
||||
if (itemName ~= nil and name ~= nil) then
|
||||
tVal = string.find(name, itemName);
|
||||
if (tVal ~= nil and foundName) then
|
||||
--DEFAULT_CHAT_FRAME:AddMessage("earnedValue = " .. earnedValue);
|
||||
if (earnedValue > EXALTED_MIN) then
|
||||
repLevel = "exalted";
|
||||
atExalted = true;
|
||||
basePoints = earnedValue - REVERED_MAX;
|
||||
denominator = EXALTED_MAX - EXALTED_MIN;
|
||||
r = 0.6;
|
||||
g = 0.2;
|
||||
b = 0.8;
|
||||
elseif (earnedValue > REVERED_MIN) then
|
||||
repLevel = "revered";
|
||||
basePoints = earnedValue - HONORED_MAX;
|
||||
denominator = REVERED_MAX - REVERED_MIN;
|
||||
r = 0.25;
|
||||
g = 0.4;
|
||||
b = 0.9;
|
||||
elseif (earnedValue > HONORED_MIN) then
|
||||
repLevel = "honored";
|
||||
basePoints = earnedValue - FRIENDLY_MAX;
|
||||
denominator = HONORED_MAX - HONORED_MIN
|
||||
r = 0;
|
||||
g = 1;
|
||||
b = 0;
|
||||
elseif (earnedValue > FRIENDLY_MIN) then
|
||||
repLevel = "friendly";
|
||||
basePoints = earnedValue - NEUTRAL_MAX;
|
||||
denominator = FRIENDLY_MAX - FRIENDLY_MIN;
|
||||
r = 1;
|
||||
g = 1;
|
||||
b = 1;
|
||||
elseif (earnedValue > NEUTRAL_MIN) then
|
||||
repLevel = "neutral";
|
||||
basePoints = earnedValue;
|
||||
denominator = topvalue;
|
||||
r = 0.75;
|
||||
g = 0.75;
|
||||
b = 0.75;
|
||||
else
|
||||
repLevel = "bad";
|
||||
end
|
||||
if (repLevel ~= "bad") then
|
||||
if (printRep) then
|
||||
repString = string.format("%.2f", tostring((basePoints/denominator)*100));
|
||||
colorString = format(colorTemplate, r * 255, g * 255, b * 255);
|
||||
DEFAULT_CHAT_FRAME:AddMessage("WyntrWear: Currently at " .. repString .. "% of " .. colorString .. repLevel .. "|r reputation with " .. name .. ".");
|
||||
end
|
||||
return earnedValue, totalEarned;
|
||||
end
|
||||
end
|
||||
else
|
||||
return; -- error trap: for some reason itemName got zapped to nil...fuggit - return
|
||||
end
|
||||
end
|
||||
factionIndex = factionIndex + 1;
|
||||
until (factionIndex > 200)
|
||||
end
|
||||
|
||||
function checkRep()
|
||||
if (startRep == nil) then
|
||||
startRep = getRepData(tabardName, true);
|
||||
oldTabard = tabardName;
|
||||
else
|
||||
startRep = getRepData(tabardName, true);
|
||||
oldTabard = tabardName;
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function WyntrWear_OnEvent(frame, event, ...)
|
||||
if (event == "PLAYER_ENTERING_WORLD") then
|
||||
if ((UnitLevel("player") > 79) and not wynWearLoad) then
|
||||
inInstance, instanceType = IsInInstance();
|
||||
if (instanceType == "party") then
|
||||
if (not IsEquippedItemType("Tabard")) then
|
||||
frame:Show();
|
||||
else -- check to see which tabard is being worn and if it generates rep
|
||||
tabardName = GetInventoryItemLink("player", GetInventorySlotInfo("TabardSlot"));
|
||||
local found, _, itemString = string.find(tabardName, "^|c%x+|H(.+)|h%[.*%]");
|
||||
tabardFaction = strsub(itemString, 15);
|
||||
end
|
||||
end
|
||||
end
|
||||
if (IsEquippedItemType("Tabard")) then
|
||||
tabardName = GetInventoryItemLink("player", GetInventorySlotInfo("TabardSlot"));
|
||||
DEFAULT_CHAT_FRAME:AddMessage("WyntrWear: Wearing: " .. tabardName .. ".");
|
||||
if (atExalted) then
|
||||
DEFAULT_CHAT_FRAME:AddMessage("|cffff0000WyntrWear: You are at exalted with this faction and should consider using a different tabard.");
|
||||
end
|
||||
else
|
||||
tabardName = HORDE_EXPEDITION;
|
||||
DEFAULT_CHAT_FRAME:AddMessage("WyntrWear: Not wearing a tabard.");
|
||||
end
|
||||
elseif (event == "ADDON_LOADED") then
|
||||
if (wynWearLoad == nil) then
|
||||
wynWearLoad = false;
|
||||
end
|
||||
elseif (event == "UNIT_INVENTORY_CHANGED") then
|
||||
local repEarnedThisTabard = 0;
|
||||
local newTabard = GetInventoryItemLink("player", GetInventorySlotInfo("TabardSlot"));
|
||||
if (newTabard ~= tabardName) then -- if this evaluates true - the tabard change triggered the event
|
||||
atExalted = false;
|
||||
if (IsEquippedItemType("Tabard")) then
|
||||
tabardName = newTabard;
|
||||
DEFAULT_CHAT_FRAME:AddMessage("WyntrWear: Tabard equipped: " .. tabardName);
|
||||
checkRep();
|
||||
elseif (UnitLevel("player") > 67 and oldTabard ~= HORDE_EXPEDITION) then
|
||||
DEFAULT_CHAT_FRAME:AddMessage("WyntrWear: Tabard unequipped.");
|
||||
tabardName = HORDE_EXPEDITION;
|
||||
checkRep();
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function wynCheckBoxFunction()
|
||||
wynWearLoad = wynCheckBox1:GetChecked();
|
||||
end
|
||||
|
||||
function WyntrWear_CmdHandler(str)
|
||||
frame = getglobal("wynFrame1");
|
||||
|
||||
if (frame) then
|
||||
if (frame:IsVisible()) then
|
||||
frame:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
if (str == "status") then
|
||||
if (IsEquippedItemType("Tabard")) then
|
||||
tabardName = GetInventoryItemLink("player", GetInventorySlotInfo("TabardSlot"));
|
||||
DEFAULT_CHAT_FRAME:AddMessage("WyntrWear: You are wearing " .. tabardName .. ".");
|
||||
getRepData(tabardName, true);
|
||||
else
|
||||
if (UnitLevel("player") > 67) then
|
||||
DEFAULT_CHAT_FRAME:AddMessage("WyntrWear: You are not wearing a tabard.");
|
||||
getRepData(HORDE_EXPEDITION, true);
|
||||
end
|
||||
end
|
||||
elseif (str == "check") then
|
||||
DEFAULT_CHAT_FRAME:AddMessage("WyntrWear check forced for next time you enter an instance.");
|
||||
wynWearLoad = false;
|
||||
else
|
||||
DEFAULT_CHAT_FRAME:AddMessage("WyntrWear: Usage: /{ww}|{wyntrwear} {status}|{check}\nstatus: tells if you are currently wearing a tabard.\ncheck - forces check to be performed upon entering instance.");
|
||||
end
|
||||
end
|
||||
10
WyntrWear.toc
Normal file
10
WyntrWear.toc
Normal file
@@ -0,0 +1,10 @@
|
||||
## Interface: 30200
|
||||
## Title: WyntrWear
|
||||
## Author: Wyntrfylth of Skywall
|
||||
## Version: 1.0
|
||||
## Notes: Reminds you, upon entering instance, to equip a tabard.
|
||||
## eMail: wyntrfylth@me.com
|
||||
## DefaultState: Disabled
|
||||
## LoadOnDemand: 0
|
||||
## SavedVariablesPerCharacter: wynWearLoad
|
||||
WyntrWear.xml
|
||||
140
WyntrWear.xml
Normal file
140
WyntrWear.xml
Normal file
@@ -0,0 +1,140 @@
|
||||
<Ui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.blizzard.com/wow/ui/">
|
||||
<Script file="WyntrWear.lua" />
|
||||
<Frame name="wynFrame1" parent="UIParent" visible="false" toplevel="true" movable="true" enableMouse="true">
|
||||
<Size>
|
||||
<AbsDimension x="296" y="173" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset x="0" y="0" />
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Backdrop bgFile="Interface\DressUpFrame\DressUpBackground-Scourge1" edgeFile="Interface\DialogFrame\UI-DialogBox-Border">
|
||||
<BackgroundInsets>
|
||||
<AbsInset left="11" right="12" top="12" bottom="11" />
|
||||
</BackgroundInsets>
|
||||
<TileSize>
|
||||
<AbsValue val="32" />
|
||||
</TileSize>
|
||||
<EdgeSize>
|
||||
<AbsValue val="32" />
|
||||
</EdgeSize>
|
||||
</Backdrop>
|
||||
<Frames>
|
||||
<Button name="ButtonClose" inherits="UIPanelButtonTemplate" text="Thanks, Wyn!">
|
||||
<Size>
|
||||
<AbsDimension x="98" y="30" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset x="104" y="-88" />
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>wynFrame1:Hide();</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<Button name="$parent_Button1" inherits="UIPanelCloseButton">
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-3" y="-3"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<CheckButton name="wynCheckBox1" inherits="UICheckButtonTemplate" text="CheckButton1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset x="49" y="-123" />
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString name="FontString3" inherits="GameFontNormal" text="Skip tabard checks for this toon">
|
||||
<Size>
|
||||
<AbsDimension x="215" y="20" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset x="15" y="-7" />
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Color r="0" g="0.5" b="0" />
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
wynCheckBoxFunction();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
</Frames>
|
||||
<Layers>
|
||||
<Layer level="FANCYHEADER">
|
||||
<Texture name="wynHeader" file="Interface\DialogFrame\UI-DialogBox-Header">
|
||||
<Size>
|
||||
<AbsDimension x="356" y="64"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="12"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
<FontString inherits="GameFontNormalLarge" text="WyntrWear 1.0">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="wynHeader">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-14"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString name="FontString1" inherits="GameFontNormal" text="Wyntr sez...">
|
||||
<Size>
|
||||
<AbsDimension x="79" y="20" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset x="19" y="-27" />
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Color r="0" g="1" b="0" />
|
||||
</FontString>
|
||||
<FontString name="FontString2" inherits="GameFontNormal" text="Put Your Tabard On!">
|
||||
<Size>
|
||||
<AbsDimension x="137" y="20" />
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset x="80" y="-53" />
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Color r="1" g="0" b="0" />
|
||||
<Shadow>
|
||||
<Offset>
|
||||
<AbsDimension x="1" y="-1" />
|
||||
</Offset>
|
||||
<Color r="0" g="0.25" b="0" />
|
||||
</Shadow>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
WyntrWear_OnLoad(self);
|
||||
</OnLoad>
|
||||
<OnEvent>
|
||||
WyntrWear_OnEvent(self, event, ...)
|
||||
</OnEvent>
|
||||
<OnDragStart>self:StartMoving();</OnDragStart>
|
||||
<OnDragStop>self:StopMovingOrSizing();</OnDragStop>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
</Ui>
|
||||
49
readme.txt
Normal file
49
readme.txt
Normal file
@@ -0,0 +1,49 @@
|
||||
WyntrWear 1.0
|
||||
|
||||
I have, as of this writing, six level-80 toons, all of which are active. With the exception of my
|
||||
main, Wyntrfylth, all need to gain reputation with the various WotLK factions.
|
||||
|
||||
I do a lot of instancing.
|
||||
|
||||
I seem to have problems remembering to equip a tabard so as to maximize my reputation farming. At some
|
||||
point, while progressing through the instance, I'll glance down at the message window and see that I've
|
||||
been accumulating rep with Horde Expedition.
|
||||
|
||||
Joy.
|
||||
|
||||
So, I have to wait until I'm out-of-combat and equip the tabard of my factional choice.
|
||||
|
||||
Thus, this mod: WyntrWear.
|
||||
|
||||
WyntrWear simply checks to see if you have a tabard equipped when you enter an instance, and only checks
|
||||
for a tabard if your current character is higher than level 79. (80+)
|
||||
|
||||
There is a single option presented in the UI as a checkbox which allows you to disable all future tabard
|
||||
checks for the current toon. (I needed this on my main as he's full of rep.)
|
||||
|
||||
If you accidently disable future checks for your toon and you wish to re-enable checks, type:
|
||||
|
||||
/ww check
|
||||
|
||||
And WyntrWear will resume checking to see if you're wearing a tabard whenever you enter an instance.
|
||||
|
||||
Upon entering an instance, WyntWear will display, in the default chat frame, a message consisting of
|
||||
either the name of the tabard you are wearing, or that you're not wearing a tabard.
|
||||
|
||||
------------------------
|
||||
command line options:
|
||||
|
||||
/ww or /wyntrwear
|
||||
|
||||
status - if tabard is equipped, display tabard name, otherwise inform that no tabard is equipped.
|
||||
check - forces frame-ui to be displayed the next time this toon enters an instance.
|
||||
------------------------
|
||||
|
||||
|
||||
That's it!
|
||||
|
||||
Happy Rep Farming!
|
||||
|
||||
Wyntrfylth of Skywall
|
||||
<Vendor Trash>
|
||||
June 15, 2009
|
||||
BIN
wyntrwear.JPG
Normal file
BIN
wyntrwear.JPG
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
Reference in New Issue
Block a user