diff --git a/website/assets/img/project_files/npcs/march/npc_bailey.png b/website/assets/img/project_files/npcs/march/npc_bailey.png
deleted file mode 100644
index 79bf7d85ee..0000000000
Binary files a/website/assets/img/project_files/npcs/march/npc_bailey.png and /dev/null differ
diff --git a/website/assets/img/project_files/npcs/march/npc_matt.png b/website/assets/img/project_files/npcs/march/npc_matt.png
deleted file mode 100644
index bd53997b3c..0000000000
Binary files a/website/assets/img/project_files/npcs/march/npc_matt.png and /dev/null differ
diff --git a/website/assets/img/project_files/npcs/march/npc_alex.png b/website/assets/img/project_files/npcs/spring/npc_alex.png
similarity index 100%
rename from website/assets/img/project_files/npcs/march/npc_alex.png
rename to website/assets/img/project_files/npcs/spring/npc_alex.png
diff --git a/website/assets/img/project_files/npcs/spring/npc_bailey.png b/website/assets/img/project_files/npcs/spring/npc_bailey.png
new file mode 100644
index 0000000000..0fe6763311
Binary files /dev/null and b/website/assets/img/project_files/npcs/spring/npc_bailey.png differ
diff --git a/website/assets/img/project_files/npcs/march/npc_ian.png b/website/assets/img/project_files/npcs/spring/npc_ian.png
similarity index 100%
rename from website/assets/img/project_files/npcs/march/npc_ian.png
rename to website/assets/img/project_files/npcs/spring/npc_ian.png
diff --git a/website/assets/img/project_files/npcs/spring/npc_matt.png b/website/assets/img/project_files/npcs/spring/npc_matt.png
new file mode 100644
index 0000000000..e129d6e43e
Binary files /dev/null and b/website/assets/img/project_files/npcs/spring/npc_matt.png differ
diff --git a/website/assets/img/project_files/npcs/spring/npc_timetravelers_active.png b/website/assets/img/project_files/npcs/spring/npc_timetravelers_active.png
new file mode 100644
index 0000000000..1847fd8337
Binary files /dev/null and b/website/assets/img/project_files/npcs/spring/npc_timetravelers_active.png differ
diff --git a/website/assets/sprites/css/index.css b/website/assets/sprites/css/index.css
index d85a66e838..3c1c4ec371 100644
--- a/website/assets/sprites/css/index.css
+++ b/website/assets/sprites/css/index.css
@@ -1,9 +1,9 @@
/* Comment out for holiday events */
-.npc_ian {
+/* .npc_ian {
background: url("/npc_ian.gif") no-repeat;
width: 78px;
height: 135px;
-}
+} */
.quest_burnout {
background: url("/quest_burnout.gif") no-repeat;
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/broad_armor_special_spring2017Healer.png b/website/assets/sprites/spritesmith/gear/events/spring/broad_armor_special_spring2017Healer.png
new file mode 100644
index 0000000000..f83f072439
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/broad_armor_special_spring2017Healer.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/broad_armor_special_spring2017Mage.png b/website/assets/sprites/spritesmith/gear/events/spring/broad_armor_special_spring2017Mage.png
new file mode 100644
index 0000000000..bd94580360
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/broad_armor_special_spring2017Mage.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/broad_armor_special_spring2017Rogue.png b/website/assets/sprites/spritesmith/gear/events/spring/broad_armor_special_spring2017Rogue.png
new file mode 100644
index 0000000000..13fd2dd63c
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/broad_armor_special_spring2017Rogue.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/broad_armor_special_spring2017Warrior.png b/website/assets/sprites/spritesmith/gear/events/spring/broad_armor_special_spring2017Warrior.png
new file mode 100644
index 0000000000..e87e2f3700
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/broad_armor_special_spring2017Warrior.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/headAccessory_special_spring2017Healer.png b/website/assets/sprites/spritesmith/gear/events/spring/headAccessory_special_spring2017Healer.png
new file mode 100644
index 0000000000..8060e37ad0
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/headAccessory_special_spring2017Healer.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/headAccessory_special_spring2017Mage.png b/website/assets/sprites/spritesmith/gear/events/spring/headAccessory_special_spring2017Mage.png
new file mode 100644
index 0000000000..c6960183c6
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/headAccessory_special_spring2017Mage.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/headAccessory_special_spring2017Rogue.png b/website/assets/sprites/spritesmith/gear/events/spring/headAccessory_special_spring2017Rogue.png
new file mode 100644
index 0000000000..6e89ebd1e1
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/headAccessory_special_spring2017Rogue.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/headAccessory_special_spring2017Warrior.png b/website/assets/sprites/spritesmith/gear/events/spring/headAccessory_special_spring2017Warrior.png
new file mode 100644
index 0000000000..ab73dbba01
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/headAccessory_special_spring2017Warrior.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/head_special_spring2017Healer.png b/website/assets/sprites/spritesmith/gear/events/spring/head_special_spring2017Healer.png
new file mode 100644
index 0000000000..f5654de2bb
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/head_special_spring2017Healer.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/head_special_spring2017Mage.png b/website/assets/sprites/spritesmith/gear/events/spring/head_special_spring2017Mage.png
new file mode 100644
index 0000000000..4c678c9d98
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/head_special_spring2017Mage.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/head_special_spring2017Rogue.png b/website/assets/sprites/spritesmith/gear/events/spring/head_special_spring2017Rogue.png
new file mode 100644
index 0000000000..b1f20c484b
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/head_special_spring2017Rogue.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/head_special_spring2017Warrior.png b/website/assets/sprites/spritesmith/gear/events/spring/head_special_spring2017Warrior.png
new file mode 100644
index 0000000000..7c71cdf537
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/head_special_spring2017Warrior.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shield_special_spring2017Healer.png b/website/assets/sprites/spritesmith/gear/events/spring/shield_special_spring2017Healer.png
new file mode 100644
index 0000000000..d0b72a26ad
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shield_special_spring2017Healer.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shield_special_spring2017Rogue.png b/website/assets/sprites/spritesmith/gear/events/spring/shield_special_spring2017Rogue.png
new file mode 100644
index 0000000000..b6ce7dfd4d
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shield_special_spring2017Rogue.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shield_special_spring2017Warrior.png b/website/assets/sprites/spritesmith/gear/events/spring/shield_special_spring2017Warrior.png
new file mode 100644
index 0000000000..19db69f536
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shield_special_spring2017Warrior.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_armor_special_spring2017Healer.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_armor_special_spring2017Healer.png
new file mode 100644
index 0000000000..a8e1863db0
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_armor_special_spring2017Healer.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_armor_special_spring2017Mage.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_armor_special_spring2017Mage.png
new file mode 100644
index 0000000000..f3f4723515
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_armor_special_spring2017Mage.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_armor_special_spring2017Rogue.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_armor_special_spring2017Rogue.png
new file mode 100644
index 0000000000..2d78d3631f
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_armor_special_spring2017Rogue.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_armor_special_spring2017Warrior.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_armor_special_spring2017Warrior.png
new file mode 100644
index 0000000000..c3fc46f093
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_armor_special_spring2017Warrior.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_headAccessory_special_spring2017Healer.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_headAccessory_special_spring2017Healer.png
new file mode 100644
index 0000000000..7f55be42b4
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_headAccessory_special_spring2017Healer.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_headAccessory_special_spring2017Mage.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_headAccessory_special_spring2017Mage.png
new file mode 100644
index 0000000000..ec922606f5
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_headAccessory_special_spring2017Mage.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_headAccessory_special_spring2017Rogue.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_headAccessory_special_spring2017Rogue.png
new file mode 100644
index 0000000000..6eb3e07b73
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_headAccessory_special_spring2017Rogue.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_headAccessory_special_spring2017Warrior.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_headAccessory_special_spring2017Warrior.png
new file mode 100644
index 0000000000..54e329daeb
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_headAccessory_special_spring2017Warrior.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_head_special_spring2017Healer.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_head_special_spring2017Healer.png
new file mode 100644
index 0000000000..def9d19e67
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_head_special_spring2017Healer.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_head_special_spring2017Mage.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_head_special_spring2017Mage.png
new file mode 100644
index 0000000000..aaf01c9dbd
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_head_special_spring2017Mage.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_head_special_spring2017Rogue.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_head_special_spring2017Rogue.png
new file mode 100644
index 0000000000..7ce0997aa9
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_head_special_spring2017Rogue.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_head_special_spring2017Warrior.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_head_special_spring2017Warrior.png
new file mode 100644
index 0000000000..9ffc434813
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_head_special_spring2017Warrior.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_shield_special_spring2017Healer.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_shield_special_spring2017Healer.png
new file mode 100644
index 0000000000..2692353786
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_shield_special_spring2017Healer.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_shield_special_spring2017Rogue.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_shield_special_spring2017Rogue.png
new file mode 100644
index 0000000000..784b3178a4
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_shield_special_spring2017Rogue.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_shield_special_spring2017Warrior.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_shield_special_spring2017Warrior.png
new file mode 100644
index 0000000000..dfcfba2ebf
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_shield_special_spring2017Warrior.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_weapon_special_spring2017Healer.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_weapon_special_spring2017Healer.png
new file mode 100644
index 0000000000..d53c74587b
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_weapon_special_spring2017Healer.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_weapon_special_spring2017Mage.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_weapon_special_spring2017Mage.png
new file mode 100644
index 0000000000..678be1c688
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_weapon_special_spring2017Mage.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_weapon_special_spring2017Rogue.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_weapon_special_spring2017Rogue.png
new file mode 100644
index 0000000000..f3f1f99d9d
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_weapon_special_spring2017Rogue.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_weapon_special_spring2017Warrior.png b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_weapon_special_spring2017Warrior.png
new file mode 100644
index 0000000000..56fee68a71
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/shop/shop_weapon_special_spring2017Warrior.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/slim_armor_special_spring2017Healer.png b/website/assets/sprites/spritesmith/gear/events/spring/slim_armor_special_spring2017Healer.png
new file mode 100644
index 0000000000..17bf69f58b
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/slim_armor_special_spring2017Healer.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/slim_armor_special_spring2017Mage.png b/website/assets/sprites/spritesmith/gear/events/spring/slim_armor_special_spring2017Mage.png
new file mode 100644
index 0000000000..97c1d24f57
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/slim_armor_special_spring2017Mage.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/slim_armor_special_spring2017Rogue.png b/website/assets/sprites/spritesmith/gear/events/spring/slim_armor_special_spring2017Rogue.png
new file mode 100644
index 0000000000..c193c1ef00
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/slim_armor_special_spring2017Rogue.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/slim_armor_special_spring2017Warrior.png b/website/assets/sprites/spritesmith/gear/events/spring/slim_armor_special_spring2017Warrior.png
new file mode 100644
index 0000000000..60d5022a19
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/slim_armor_special_spring2017Warrior.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/weapon_special_spring2017Healer.png b/website/assets/sprites/spritesmith/gear/events/spring/weapon_special_spring2017Healer.png
new file mode 100644
index 0000000000..777eeb57c4
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/weapon_special_spring2017Healer.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/weapon_special_spring2017Mage.png b/website/assets/sprites/spritesmith/gear/events/spring/weapon_special_spring2017Mage.png
new file mode 100644
index 0000000000..3cf3b5f949
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/weapon_special_spring2017Mage.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/weapon_special_spring2017Rogue.png b/website/assets/sprites/spritesmith/gear/events/spring/weapon_special_spring2017Rogue.png
new file mode 100644
index 0000000000..218b3ae974
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/weapon_special_spring2017Rogue.png differ
diff --git a/website/assets/sprites/spritesmith/gear/events/spring/weapon_special_spring2017Warrior.png b/website/assets/sprites/spritesmith/gear/events/spring/weapon_special_spring2017Warrior.png
new file mode 100644
index 0000000000..6eb6a040d2
Binary files /dev/null and b/website/assets/sprites/spritesmith/gear/events/spring/weapon_special_spring2017Warrior.png differ
diff --git a/website/assets/sprites/spritesmith/npcs/npc_alex.png b/website/assets/sprites/spritesmith/npcs/npc_alex.png
index 67b7476d33..8982854041 100644
Binary files a/website/assets/sprites/spritesmith/npcs/npc_alex.png and b/website/assets/sprites/spritesmith/npcs/npc_alex.png differ
diff --git a/website/assets/sprites/spritesmith/npcs/npc_bailey.png b/website/assets/sprites/spritesmith/npcs/npc_bailey.png
index d5940b986b..0fe6763311 100644
Binary files a/website/assets/sprites/spritesmith/npcs/npc_bailey.png and b/website/assets/sprites/spritesmith/npcs/npc_bailey.png differ
diff --git a/website/assets/sprites/spritesmith/npcs/npc_ian.png b/website/assets/sprites/spritesmith/npcs/npc_ian.png
new file mode 100644
index 0000000000..86860dfa1b
Binary files /dev/null and b/website/assets/sprites/spritesmith/npcs/npc_ian.png differ
diff --git a/website/assets/sprites/spritesmith/npcs/npc_matt.png b/website/assets/sprites/spritesmith/npcs/npc_matt.png
index 2531f1084b..e129d6e43e 100644
Binary files a/website/assets/sprites/spritesmith/npcs/npc_matt.png and b/website/assets/sprites/spritesmith/npcs/npc_matt.png differ
diff --git a/website/assets/sprites/spritesmith/npcs/npc_timetravelers_active.png b/website/assets/sprites/spritesmith/npcs/npc_timetravelers_active.png
index f84a5ba2e0..1847fd8337 100644
Binary files a/website/assets/sprites/spritesmith/npcs/npc_timetravelers_active.png and b/website/assets/sprites/spritesmith/npcs/npc_timetravelers_active.png differ
diff --git a/website/assets/sprites/spritesmith/npcs/seasonalshop_open.png b/website/assets/sprites/spritesmith/npcs/seasonalshop_open.png
index bf18da469c..e1f811893e 100644
Binary files a/website/assets/sprites/spritesmith/npcs/seasonalshop_open.png and b/website/assets/sprites/spritesmith/npcs/seasonalshop_open.png differ
diff --git a/website/assets/sprites/spritesmith_large/promo/promo_pastel_skin_hair.png b/website/assets/sprites/spritesmith_large/promo/promo_pastel_skin_hair.png
new file mode 100644
index 0000000000..64328e7824
Binary files /dev/null and b/website/assets/sprites/spritesmith_large/promo/promo_pastel_skin_hair.png differ
diff --git a/website/assets/sprites/spritesmith_large/promo/promo_spring_classes_2017.png b/website/assets/sprites/spritesmith_large/promo/promo_spring_classes_2017.png
new file mode 100644
index 0000000000..983667dbaa
Binary files /dev/null and b/website/assets/sprites/spritesmith_large/promo/promo_spring_classes_2017.png differ
diff --git a/website/common/locales/en/gear.json b/website/common/locales/en/gear.json
index 8cd02b851e..25810399ac 100644
--- a/website/common/locales/en/gear.json
+++ b/website/common/locales/en/gear.json
@@ -213,6 +213,15 @@
"weaponSpecialWinter2017HealerText": "Sugar-Spun Wand",
"weaponSpecialWinter2017HealerNotes": "This wand can reach into your dreams and bring you visions of dancing sugarplums. Increases Intelligence by <%= int %>. Limited Edition 2016-2017 Winter Gear.",
+ "weaponSpecialSpring2017RogueText": "Karrotana",
+ "weaponSpecialSpring2017RogueNotes": "These blades will make quick work of tasks, but also are handy for slicing vegetables! Yum! Increases Strength by <%= str %>. Limited Edition 2017 Spring Gear.",
+ "weaponSpecialSpring2017WarriorText": "Feathery Whip",
+ "weaponSpecialSpring2017WarriorNotes": "This mighty whip will tame the unruliest task. But.. It's also… So FUN AND DISTRACTING!! Increases Strength by <%= str %>. Limited Edition 2017 Spring Gear.",
+ "weaponSpecialSpring2017MageText": "Magic Fetching Stick",
+ "weaponSpecialSpring2017MageNotes": "When you're not crafting spells with it, you can throw it and then bring it back! What fun!! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017 Spring Gear.",
+ "weaponSpecialSpring2017HealerText": "Egg Wand",
+ "weaponSpecialSpring2017HealerNotes": "The true magic of this wand is the secret of new life inside the colorful shell. Increases Intelligence by <%= int %>. Limited Edition 2017 Spring Gear.",
+
"weaponMystery201411Text": "Pitchfork of Feasting",
"weaponMystery201411Notes": "Stab your enemies or dig in to your favorite foods - this versatile pitchfork does it all! Confers no benefit. November 2014 Subscriber Item.",
"weaponMystery201502Text": "Shimmery Winged Staff of Love and Also Truth",
@@ -470,6 +479,15 @@
"armorSpecialWinter2017HealerText": "Shimmer Petal Armor",
"armorSpecialWinter2017HealerNotes": "Though soft, this armor of petals has fantastic protective power. Increases Constitution by <%= con %>. Limited Edition 2016-2017 Winter Gear.",
+ "armorSpecialSpring2017RogueText": "Sneaky Bunny Suit",
+ "armorSpecialSpring2017RogueNotes": "Soft but strong, this suit helps you move through gardens with extra stealth. Increases Perception by <%= per %>. Limited Edition 2017 Spring Gear.",
+ "armorSpecialSpring2017WarriorText": "Pawsome Armor",
+ "armorSpecialSpring2017WarriorNotes": "This fancy armor is as shiny as your finely groomed coat, but with added resistance to attack. Increases Constitution by <%= con %>. Limited Edition 2017 Spring Gear.",
+ "armorSpecialSpring2017MageText": "Canine Conjuror Robes",
+ "armorSpecialSpring2017MageNotes": "Magical by design, fluffy by choice. Increases Intelligence by <%= int %>. Limited Edition 2017 Spring Gear.",
+ "armorSpecialSpring2017HealerText": "Robes of Repose",
+ "armorSpecialSpring2017HealerNotes": "The softness of these robes comforts you as well as any who need your healing help! Increases Constitution by <%= con %>. Limited Edition 2017 Spring Gear.",
+
"armorMystery201402Text": "Messenger Robes",
"armorMystery201402Notes": "Shimmering and strong, these robes have many pockets to carry letters. Confers no benefit. February 2014 Subscriber Item.",
"armorMystery201403Text": "Forest Walker Armor",
@@ -776,6 +794,15 @@
"headSpecialWinter2017HealerText": "Sparkling Blossom Helm",
"headSpecialWinter2017HealerNotes": "These glittering petals focus brainpower! Increases Intelligence by <%= int %>. Limited Edition 2016-2017 Winter Gear.",
+ "headSpecialSpring2017RogueText": "Sneaky Bunny Helm",
+ "headSpecialSpring2017RogueNotes": "This mask will prevent your cuteness from giving you away as you sneak up on Dailies (or clovers)! Increases Perception by <%= per %>. Limited Edition 2017 Spring Gear.",
+ "headSpecialSpring2017WarriorText": "Feline Helm",
+ "headSpecialSpring2017WarriorNotes": "Protect your adorable, fuzzy noggin with this finely decorated helm. Increases Strength by <%= str %>. Limited Edition 2017 Spring Gear.",
+ "headSpecialSpring2017MageText": "Canine Conjuror Hat",
+ "headSpecialSpring2017MageNotes": "This hat can help you cast mighty spells… Or you can just use it to summon tennis balls. Your choice. Increases Perception by <%= per %>. Limited Edition 2017 Spring Gear.",
+ "headSpecialSpring2017HealerText": "Petal Circlet",
+ "headSpecialSpring2017HealerNotes": "This delicate crown emits the comforting scent of new Spring blooms. Increases Intelligence by <%= int %>. Limited Edition 2017 Spring Gear.",
+
"headSpecialGaymerxText": "Rainbow Warrior Helm",
"headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.",
@@ -1040,6 +1067,13 @@
"shieldSpecialWinter2017HealerText": "Sugarplum Shield",
"shieldSpecialWinter2017HealerNotes": "This fibrous armament will help protect you from even the sourest of tasks! Increases Constitution by <%= con %>. Limited Edition 2016-2017 Winter Gear.",
+ "shieldSpecialSpring2017RogueText": "Karrotana",
+ "shieldSpecialSpring2017RogueNotes": "These blades will make quick work of tasks, but also are handy for slicing vegetables! Yum! Increases Strength by <%= str %>. Limited Edition 2017 Spring Gear.",
+ "shieldSpecialSpring2017WarriorText": "Yarn Shield",
+ "shieldSpecialSpring2017WarriorNotes": "Every fiber of this shield is woven with protective spells! Try not to play with it (too much). Increases Constitution by <%= con %>. Limited Edition 2017 Spring Gear.",
+ "shieldSpecialSpring2017HealerText": "Basket Shield",
+ "shieldSpecialSpring2017HealerNotes": "Protective and also handy for holding your many healing herbs and accoutrements. Increases Constitution by <%= con %>. Limited Edition 2017 Spring Gear.",
+
"shieldMystery201601Text": "Resolution Slayer",
"shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.",
"shieldMystery201701Text": "Time-Freezer Shield",
@@ -1164,6 +1198,15 @@
"headAccessorySpecialSpring2016HealerText": "Purple Bunny Ears",
"headAccessorySpecialSpring2016HealerNotes": "They stand like flags above the fray, letting others know where to run for help. Confers no benefit. Limited Edition 2016 Spring Gear.",
+ "headAccessorySpecialSpring2017RogueText": "Red Bunny Ears",
+ "headAccessorySpecialSpring2017RogueNotes": "No sounds will escape you thanks to these ears. Confers no benefit. Limited Edition 2017 Spring Gear.",
+ "headAccessorySpecialSpring2017WarriorText": "Blue Kitty Ears",
+ "headAccessorySpecialSpring2017WarriorNotes": "These ears can hear a bag of kitty treats open even in the din of battle! Confers no benefit. Limited Edition 2017 Spring Gear.",
+ "headAccessorySpecialSpring2017MageText": "Teal Dog Ears",
+ "headAccessorySpecialSpring2017MageNotes": "You can hear the magic in the air! Confers no benefit. Limited Edition 2017 Spring Gear.",
+ "headAccessorySpecialSpring2017HealerText": "Purple Mouse Ears",
+ "headAccessorySpecialSpring2017HealerNotes": "These ears will help you hear healing secrets. Confers no benefit. Limited Edition 2017 Spring Gear.",
+
"headAccessoryBearEarsText": "Bear Ears",
"headAccessoryBearEarsNotes": "These ears make you look like a brave bear! Confers no benefit.",
"headAccessoryCactusEarsText": "Cactus Ears",
diff --git a/website/common/locales/en/limited.json b/website/common/locales/en/limited.json
index f9c3092079..babeb0cd10 100644
--- a/website/common/locales/en/limited.json
+++ b/website/common/locales/en/limited.json
@@ -84,6 +84,10 @@
"stitchWitchSet": "Stitch Witch (Mage)",
"potionerSet": "Potioner (Healer)",
"battleRogueSet": "Bat-tle Rogue (Rogue)",
+ "springingBunnySet": "Springing Bunny (Healer)",
+ "grandMalkinSet": "Grand Malkin (Mage)",
+ "cleverDogSet": "Clever Dog (Rogue)",
+ "braveMouseSet": "Brave Mouse (Warrior)",
"fallEventAvailability": "Available for purchase until October 31.",
"winterEventAvailability": "Available for purchase until January 31.",
"springEventAvailability": "Available for purchase until May 31.",
diff --git a/website/common/script/content/constants.js b/website/common/script/content/constants.js
index fe4634ab94..119de75666 100644
--- a/website/common/script/content/constants.js
+++ b/website/common/script/content/constants.js
@@ -27,6 +27,7 @@ export const EVENTS = {
summer2016: { start: '2016-06-21', end: '2016-08-02' },
fall2016: { start: '2016-09-20', end: '2016-11-02' },
winter2017: { start: '2016-12-16', end: '2017-02-02' },
+ spring2017: { start: '2017-03-21', end: '2017-05-02' },
};
export const GEAR_TYPES = [
diff --git a/website/common/script/content/gear/sets/special/index.js b/website/common/script/content/gear/sets/special/index.js
index aa51be7ddf..df11e959cc 100644
--- a/website/common/script/content/gear/sets/special/index.js
+++ b/website/common/script/content/gear/sets/special/index.js
@@ -63,9 +63,6 @@ let armor = {
notes: t('armorSpecialYetiNotes', { con: 9 }),
con: 9,
value: 90,
- canBuy: () => {
- return true;
- },
},
ski: {
event: EVENTS.winter,
@@ -74,9 +71,6 @@ let armor = {
notes: t('armorSpecialSkiNotes', { per: 15 }),
per: 15,
value: 90,
- canBuy: () => {
- return true;
- },
},
candycane: {
event: EVENTS.winter,
@@ -85,9 +79,6 @@ let armor = {
notes: t('armorSpecialCandycaneNotes', { int: 9 }),
int: 9,
value: 90,
- canBuy: () => {
- return true;
- },
},
snowflake: {
event: EVENTS.winter,
@@ -96,9 +87,6 @@ let armor = {
notes: t('armorSpecialSnowflakeNotes', { con: 15 }),
con: 15,
value: 90,
- canBuy: () => {
- return true;
- },
},
birthday: {
event: EVENTS.birthday,
@@ -112,6 +100,9 @@ let armor = {
notes: t('armorSpecialSpringRogueNotes', { per: 15 }),
value: 90,
per: 15,
+ canBuy: () => {
+ return true;
+ },
},
springWarrior: {
event: EVENTS.spring,
@@ -120,6 +111,9 @@ let armor = {
notes: t('armorSpecialSpringWarriorNotes', { con: 9 }),
value: 90,
con: 9,
+ canBuy: () => {
+ return true;
+ },
},
springMage: {
event: EVENTS.spring,
@@ -128,6 +122,9 @@ let armor = {
notes: t('armorSpecialSpringMageNotes', { int: 9 }),
value: 90,
int: 9,
+ canBuy: () => {
+ return true;
+ },
},
springHealer: {
event: EVENTS.spring,
@@ -136,6 +133,9 @@ let armor = {
notes: t('armorSpecialSpringHealerNotes', { con: 15 }),
value: 90,
con: 15,
+ canBuy: () => {
+ return true;
+ },
},
summerRogue: {
event: EVENTS.summer,
@@ -208,9 +208,6 @@ let armor = {
notes: t('armorSpecialWinter2015RogueNotes', { per: 15 }),
value: 90,
per: 15,
- canBuy: () => {
- return true;
- },
},
winter2015Warrior: {
event: EVENTS.winter2015,
@@ -219,9 +216,6 @@ let armor = {
notes: t('armorSpecialWinter2015WarriorNotes', { con: 9 }),
value: 90,
con: 9,
- canBuy: () => {
- return true;
- },
},
winter2015Mage: {
event: EVENTS.winter2015,
@@ -230,9 +224,6 @@ let armor = {
notes: t('armorSpecialWinter2015MageNotes', { int: 9 }),
value: 90,
int: 9,
- canBuy: () => {
- return true;
- },
},
winter2015Healer: {
event: EVENTS.winter2015,
@@ -241,9 +232,6 @@ let armor = {
notes: t('armorSpecialWinter2015HealerNotes', { con: 15 }),
value: 90,
con: 15,
- canBuy: () => {
- return true;
- },
},
birthday2015: {
text: t('armorSpecialBirthday2015Text'),
@@ -258,6 +246,9 @@ let armor = {
notes: t('armorSpecialSpring2015RogueNotes', { per: 15 }),
value: 90,
per: 15,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Warrior: {
event: EVENTS.spring2015,
@@ -266,6 +257,9 @@ let armor = {
notes: t('armorSpecialSpring2015WarriorNotes', { con: 9 }),
value: 90,
con: 9,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Mage: {
event: EVENTS.spring2015,
@@ -274,6 +268,9 @@ let armor = {
notes: t('armorSpecialSpring2015MageNotes', { int: 9 }),
value: 90,
int: 9,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Healer: {
event: EVENTS.spring2015,
@@ -282,6 +279,9 @@ let armor = {
notes: t('armorSpecialSpring2015HealerNotes', { con: 15 }),
value: 90,
con: 15,
+ canBuy: () => {
+ return true;
+ },
},
summer2015Rogue: {
event: EVENTS.summer2015,
@@ -360,9 +360,6 @@ let armor = {
notes: t('armorSpecialWinter2016RogueNotes', { per: 15 }),
value: 90,
per: 15,
- canBuy: () => {
- return true;
- },
},
winter2016Warrior: {
event: EVENTS.winter2016,
@@ -371,9 +368,6 @@ let armor = {
notes: t('armorSpecialWinter2016WarriorNotes', { con: 9 }),
value: 90,
con: 9,
- canBuy: () => {
- return true;
- },
},
winter2016Mage: {
event: EVENTS.winter2016,
@@ -382,9 +376,6 @@ let armor = {
notes: t('armorSpecialWinter2016MageNotes', { int: 9 }),
value: 90,
int: 9,
- canBuy: () => {
- return true;
- },
},
winter2016Healer: {
event: EVENTS.winter2016,
@@ -393,9 +384,6 @@ let armor = {
notes: t('armorSpecialWinter2016HealerNotes', { con: 15 }),
value: 90,
con: 15,
- canBuy: () => {
- return true;
- },
},
birthday2016: {
text: t('armorSpecialBirthday2016Text'),
@@ -410,6 +398,9 @@ let armor = {
notes: t('armorSpecialSpring2016RogueNotes', { per: 15 }),
value: 90,
per: 15,
+ canBuy: () => {
+ return true;
+ },
},
spring2016Warrior: {
event: EVENTS.spring2016,
@@ -418,6 +409,9 @@ let armor = {
notes: t('armorSpecialSpring2016WarriorNotes', { con: 9 }),
value: 90,
con: 9,
+ canBuy: () => {
+ return true;
+ },
},
spring2016Mage: {
event: EVENTS.spring2016,
@@ -426,6 +420,9 @@ let armor = {
notes: t('armorSpecialSpring2016MageNotes', { int: 9 }),
value: 90,
int: 9,
+ canBuy: () => {
+ return true;
+ },
},
spring2016Healer: {
event: EVENTS.spring2016,
@@ -434,6 +431,9 @@ let armor = {
notes: t('armorSpecialSpring2016HealerNotes', { con: 15 }),
value: 90,
con: 15,
+ canBuy: () => {
+ return true;
+ },
},
summer2016Rogue: {
event: EVENTS.summer2016,
@@ -537,6 +537,38 @@ let armor = {
value: 0,
canOwn: ownsItem('armor_special_birthday2017'),
},
+ spring2017Rogue: {
+ event: EVENTS.spring2017,
+ specialClass: 'rogue',
+ text: t('armorSpecialSpring2017RogueText'),
+ notes: t('armorSpecialSpring2017RogueNotes', { per: 15 }),
+ value: 90,
+ per: 15,
+ },
+ spring2017Warrior: {
+ event: EVENTS.spring2017,
+ specialClass: 'warrior',
+ text: t('armorSpecialSpring2017WarriorText'),
+ notes: t('armorSpecialSpring2017WarriorNotes', { con: 9 }),
+ value: 90,
+ con: 9,
+ },
+ spring2017Mage: {
+ event: EVENTS.spring2017,
+ specialClass: 'wizard',
+ text: t('armorSpecialSpring2017MageText'),
+ notes: t('armorSpecialSpring2017MageNotes', { int: 9 }),
+ value: 90,
+ int: 9,
+ },
+ spring2017Healer: {
+ event: EVENTS.spring2017,
+ specialClass: 'healer',
+ text: t('armorSpecialSpring2017HealerText'),
+ notes: t('armorSpecialSpring2017HealerNotes', { con: 15 }),
+ value: 90,
+ con: 15,
+ },
};
let back = {
@@ -724,9 +756,6 @@ let head = {
notes: t('headSpecialYetiNotes', { str: 9 }),
str: 9,
value: 60,
- canBuy: () => {
- return true;
- },
},
ski: {
event: EVENTS.winter,
@@ -735,9 +764,6 @@ let head = {
notes: t('headSpecialSkiNotes', { per: 9 }),
per: 9,
value: 60,
- canBuy: () => {
- return true;
- },
},
candycane: {
event: EVENTS.winter,
@@ -746,9 +772,6 @@ let head = {
notes: t('headSpecialCandycaneNotes', { per: 7 }),
per: 7,
value: 60,
- canBuy: () => {
- return true;
- },
},
snowflake: {
event: EVENTS.winter,
@@ -757,9 +780,6 @@ let head = {
notes: t('headSpecialSnowflakeNotes', { int: 7 }),
int: 7,
value: 60,
- canBuy: () => {
- return true;
- },
},
springRogue: {
event: EVENTS.spring,
@@ -768,6 +788,9 @@ let head = {
notes: t('headSpecialSpringRogueNotes', { per: 9 }),
value: 60,
per: 9,
+ canBuy: () => {
+ return true;
+ },
},
springWarrior: {
event: EVENTS.spring,
@@ -776,6 +799,9 @@ let head = {
notes: t('headSpecialSpringWarriorNotes', { str: 9 }),
value: 60,
str: 9,
+ canBuy: () => {
+ return true;
+ },
},
springMage: {
event: EVENTS.spring,
@@ -784,6 +810,9 @@ let head = {
notes: t('headSpecialSpringMageNotes', { per: 7 }),
value: 60,
per: 7,
+ canBuy: () => {
+ return true;
+ },
},
springHealer: {
event: EVENTS.spring,
@@ -792,6 +821,9 @@ let head = {
notes: t('headSpecialSpringHealerNotes', { int: 7 }),
value: 60,
int: 7,
+ canBuy: () => {
+ return true;
+ },
},
summerRogue: {
event: EVENTS.summer,
@@ -864,9 +896,6 @@ let head = {
notes: t('headSpecialWinter2015RogueNotes', { per: 9 }),
value: 60,
per: 9,
- canBuy: () => {
- return true;
- },
},
winter2015Warrior: {
event: EVENTS.winter2015,
@@ -875,9 +904,6 @@ let head = {
notes: t('headSpecialWinter2015WarriorNotes', { str: 9 }),
value: 60,
str: 9,
- canBuy: () => {
- return true;
- },
},
winter2015Mage: {
event: EVENTS.winter2015,
@@ -886,9 +912,6 @@ let head = {
notes: t('headSpecialWinter2015MageNotes', { per: 7 }),
value: 60,
per: 7,
- canBuy: () => {
- return true;
- },
},
winter2015Healer: {
event: EVENTS.winter2015,
@@ -897,9 +920,6 @@ let head = {
notes: t('headSpecialWinter2015HealerNotes', { int: 7 }),
value: 60,
int: 7,
- canBuy: () => {
- return true;
- },
},
nye2014: {
text: t('headSpecialNye2014Text'),
@@ -914,6 +934,9 @@ let head = {
notes: t('headSpecialSpring2015RogueNotes', { per: 9 }),
value: 60,
per: 9,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Warrior: {
event: EVENTS.spring2015,
@@ -922,6 +945,9 @@ let head = {
notes: t('headSpecialSpring2015WarriorNotes', { str: 9 }),
value: 60,
str: 9,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Mage: {
event: EVENTS.spring2015,
@@ -930,6 +956,9 @@ let head = {
notes: t('headSpecialSpring2015MageNotes', { per: 7 }),
value: 60,
per: 7,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Healer: {
event: EVENTS.spring2015,
@@ -938,6 +967,9 @@ let head = {
notes: t('headSpecialSpring2015HealerNotes', { int: 7 }),
value: 60,
int: 7,
+ canBuy: () => {
+ return true;
+ },
},
summer2015Rogue: {
event: EVENTS.summer2015,
@@ -1016,9 +1048,6 @@ let head = {
notes: t('headSpecialWinter2016RogueNotes', { per: 9 }),
value: 60,
per: 9,
- canBuy: () => {
- return true;
- },
},
winter2016Warrior: {
event: EVENTS.winter2016,
@@ -1027,9 +1056,6 @@ let head = {
notes: t('headSpecialWinter2016WarriorNotes', { str: 9 }),
value: 60,
str: 9,
- canBuy: () => {
- return true;
- },
},
winter2016Mage: {
event: EVENTS.winter2016,
@@ -1038,9 +1064,6 @@ let head = {
notes: t('headSpecialWinter2016MageNotes', { per: 7 }),
value: 60,
per: 7,
- canBuy: () => {
- return true;
- },
},
winter2016Healer: {
event: EVENTS.winter2016,
@@ -1049,9 +1072,6 @@ let head = {
notes: t('headSpecialWinter2016HealerNotes', { int: 7 }),
value: 60,
int: 7,
- canBuy: () => {
- return true;
- },
},
nye2015: {
text: t('headSpecialNye2015Text'),
@@ -1066,6 +1086,9 @@ let head = {
notes: t('headSpecialSpring2016RogueNotes', { per: 9 }),
value: 60,
per: 9,
+ canBuy: () => {
+ return true;
+ },
},
spring2016Warrior: {
event: EVENTS.spring2016,
@@ -1074,6 +1097,9 @@ let head = {
notes: t('headSpecialSpring2016WarriorNotes', { str: 9 }),
value: 60,
str: 9,
+ canBuy: () => {
+ return true;
+ },
},
spring2016Mage: {
event: EVENTS.spring2016,
@@ -1082,6 +1108,9 @@ let head = {
notes: t('headSpecialSpring2016MageNotes', { per: 7 }),
value: 60,
per: 7,
+ canBuy: () => {
+ return true;
+ },
},
spring2016Healer: {
event: EVENTS.spring2016,
@@ -1090,6 +1119,9 @@ let head = {
notes: t('headSpecialSpring2016HealerNotes', { int: 7 }),
value: 60,
int: 7,
+ canBuy: () => {
+ return true;
+ },
},
summer2016Rogue: {
event: EVENTS.summer2016,
@@ -1193,6 +1225,38 @@ let head = {
value: 0,
canOwn: ownsItem('head_special_nye2016'),
},
+ spring2017Rogue: {
+ event: EVENTS.spring2017,
+ specialClass: 'rogue',
+ text: t('headSpecialSpring2017RogueText'),
+ notes: t('headSpecialSpring2017RogueNotes', { per: 9 }),
+ value: 60,
+ per: 9,
+ },
+ spring2017Warrior: {
+ event: EVENTS.spring2017,
+ specialClass: 'warrior',
+ text: t('headSpecialSpring2017WarriorText'),
+ notes: t('headSpecialSpring2017WarriorNotes', { str: 9 }),
+ value: 60,
+ str: 9,
+ },
+ spring2017Mage: {
+ event: EVENTS.spring2017,
+ specialClass: 'wizard',
+ text: t('headSpecialSpring2017MageText'),
+ notes: t('headSpecialSpring2017MageNotes', { per: 7 }),
+ value: 60,
+ per: 7,
+ },
+ spring2017Healer: {
+ event: EVENTS.spring2017,
+ specialClass: 'healer',
+ text: t('headSpecialSpring2017HealerText'),
+ notes: t('headSpecialSpring2017HealerNotes', { int: 7 }),
+ value: 60,
+ int: 7,
+ },
};
let headAccessory = {
@@ -1202,6 +1266,9 @@ let headAccessory = {
text: t('headAccessorySpecialSpringRogueText'),
notes: t('headAccessorySpecialSpringRogueNotes'),
value: 20,
+ canBuy: () => {
+ return true;
+ },
},
springWarrior: {
event: EVENTS.spring,
@@ -1209,6 +1276,9 @@ let headAccessory = {
text: t('headAccessorySpecialSpringWarriorText'),
notes: t('headAccessorySpecialSpringWarriorNotes'),
value: 20,
+ canBuy: () => {
+ return true;
+ },
},
springMage: {
event: EVENTS.spring,
@@ -1216,6 +1286,9 @@ let headAccessory = {
text: t('headAccessorySpecialSpringMageText'),
notes: t('headAccessorySpecialSpringMageNotes'),
value: 20,
+ canBuy: () => {
+ return true;
+ },
},
springHealer: {
event: EVENTS.spring,
@@ -1223,6 +1296,9 @@ let headAccessory = {
text: t('headAccessorySpecialSpringHealerText'),
notes: t('headAccessorySpecialSpringHealerNotes'),
value: 20,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Rogue: {
event: EVENTS.spring2015,
@@ -1230,6 +1306,9 @@ let headAccessory = {
text: t('headAccessorySpecialSpring2015RogueText'),
notes: t('headAccessorySpecialSpring2015RogueNotes'),
value: 20,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Warrior: {
event: EVENTS.spring2015,
@@ -1237,6 +1316,9 @@ let headAccessory = {
text: t('headAccessorySpecialSpring2015WarriorText'),
notes: t('headAccessorySpecialSpring2015WarriorNotes'),
value: 20,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Mage: {
event: EVENTS.spring2015,
@@ -1244,6 +1326,9 @@ let headAccessory = {
text: t('headAccessorySpecialSpring2015MageText'),
notes: t('headAccessorySpecialSpring2015MageNotes'),
value: 20,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Healer: {
event: EVENTS.spring2015,
@@ -1251,6 +1336,9 @@ let headAccessory = {
text: t('headAccessorySpecialSpring2015HealerText'),
notes: t('headAccessorySpecialSpring2015HealerNotes'),
value: 20,
+ canBuy: () => {
+ return true;
+ },
},
bearEars: {
gearSet: 'animal',
@@ -1338,6 +1426,9 @@ let headAccessory = {
text: t('headAccessorySpecialSpring2016RogueText'),
notes: t('headAccessorySpecialSpring2016RogueNotes'),
value: 20,
+ canBuy: () => {
+ return true;
+ },
},
spring2016Warrior: {
event: EVENTS.spring2016,
@@ -1345,6 +1436,9 @@ let headAccessory = {
text: t('headAccessorySpecialSpring2016WarriorText'),
notes: t('headAccessorySpecialSpring2016WarriorNotes'),
value: 20,
+ canBuy: () => {
+ return true;
+ },
},
spring2016Mage: {
event: EVENTS.spring2016,
@@ -1352,6 +1446,9 @@ let headAccessory = {
text: t('headAccessorySpecialSpring2016MageText'),
notes: t('headAccessorySpecialSpring2016MageNotes'),
value: 20,
+ canBuy: () => {
+ return true;
+ },
},
spring2016Healer: {
event: EVENTS.spring2016,
@@ -1359,6 +1456,37 @@ let headAccessory = {
text: t('headAccessorySpecialSpring2016HealerText'),
notes: t('headAccessorySpecialSpring2016HealerNotes'),
value: 20,
+ canBuy: () => {
+ return true;
+ },
+ },
+ spring2017Rogue: {
+ event: EVENTS.spring2017,
+ specialClass: 'rogue',
+ text: t('headAccessorySpecialSpring2017RogueText'),
+ notes: t('headAccessorySpecialSpring2017RogueNotes'),
+ value: 20,
+ },
+ spring2017Warrior: {
+ event: EVENTS.spring2017,
+ specialClass: 'warrior',
+ text: t('headAccessorySpecialSpring2017WarriorText'),
+ notes: t('headAccessorySpecialSpring2017WarriorNotes'),
+ value: 20,
+ },
+ spring2017Mage: {
+ event: EVENTS.spring2017,
+ specialClass: 'wizard',
+ text: t('headAccessorySpecialSpring2017MageText'),
+ notes: t('headAccessorySpecialSpring2017MageNotes'),
+ value: 20,
+ },
+ spring2017Healer: {
+ event: EVENTS.spring2017,
+ specialClass: 'healer',
+ text: t('headAccessorySpecialSpring2017HealerText'),
+ notes: t('headAccessorySpecialSpring2017HealerNotes'),
+ value: 20,
},
};
@@ -1402,9 +1530,6 @@ let shield = {
notes: t('shieldSpecialYetiNotes', { con: 7 }),
con: 7,
value: 70,
- canBuy: () => {
- return true;
- },
},
ski: {
event: EVENTS.winter,
@@ -1413,9 +1538,6 @@ let shield = {
notes: t('weaponSpecialSkiNotes', { str: 8 }),
str: 8,
value: 90,
- canBuy: () => {
- return true;
- },
},
snowflake: {
event: EVENTS.winter,
@@ -1424,9 +1546,6 @@ let shield = {
notes: t('shieldSpecialSnowflakeNotes', { con: 9 }),
con: 9,
value: 70,
- canBuy: () => {
- return true;
- },
},
springRogue: {
event: EVENTS.spring,
@@ -1435,6 +1554,9 @@ let shield = {
notes: t('shieldSpecialSpringRogueNotes', { str: 8 }),
value: 80,
str: 8,
+ canBuy: () => {
+ return true;
+ },
},
springWarrior: {
event: EVENTS.spring,
@@ -1443,6 +1565,9 @@ let shield = {
notes: t('shieldSpecialSpringWarriorNotes', { con: 7 }),
value: 70,
con: 7,
+ canBuy: () => {
+ return true;
+ },
},
springHealer: {
event: EVENTS.spring,
@@ -1451,6 +1576,9 @@ let shield = {
notes: t('shieldSpecialSpringHealerNotes', { con: 9 }),
value: 70,
con: 9,
+ canBuy: () => {
+ return true;
+ },
},
summerRogue: {
event: EVENTS.summer,
@@ -1507,9 +1635,6 @@ let shield = {
notes: t('shieldSpecialWinter2015RogueNotes', { str: 8 }),
value: 80,
str: 8,
- canBuy: () => {
- return true;
- },
},
winter2015Warrior: {
event: EVENTS.winter2015,
@@ -1518,9 +1643,6 @@ let shield = {
notes: t('shieldSpecialWinter2015WarriorNotes', { con: 7 }),
value: 70,
con: 7,
- canBuy: () => {
- return true;
- },
},
winter2015Healer: {
event: EVENTS.winter2015,
@@ -1529,9 +1651,6 @@ let shield = {
notes: t('shieldSpecialWinter2015HealerNotes', { con: 9 }),
value: 70,
con: 9,
- canBuy: () => {
- return true;
- },
},
spring2015Rogue: {
event: EVENTS.spring2015,
@@ -1540,6 +1659,9 @@ let shield = {
notes: t('shieldSpecialSpring2015RogueNotes', { str: 8 }),
value: 80,
str: 8,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Warrior: {
event: EVENTS.spring2015,
@@ -1548,6 +1670,9 @@ let shield = {
notes: t('shieldSpecialSpring2015WarriorNotes', { con: 7 }),
value: 70,
con: 7,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Healer: {
event: EVENTS.spring2015,
@@ -1556,6 +1681,9 @@ let shield = {
notes: t('shieldSpecialSpring2015HealerNotes', { con: 9 }),
value: 70,
con: 9,
+ canBuy: () => {
+ return true;
+ },
},
summer2015Rogue: {
event: EVENTS.summer2015,
@@ -1612,9 +1740,6 @@ let shield = {
notes: t('shieldSpecialWinter2016RogueNotes', { str: 8 }),
value: 80,
str: 8,
- canBuy: () => {
- return true;
- },
},
winter2016Warrior: {
event: EVENTS.winter2016,
@@ -1623,9 +1748,6 @@ let shield = {
notes: t('shieldSpecialWinter2016WarriorNotes', { con: 7 }),
value: 70,
con: 7,
- canBuy: () => {
- return true;
- },
},
winter2016Healer: {
event: EVENTS.winter2016,
@@ -1634,9 +1756,6 @@ let shield = {
notes: t('shieldSpecialWinter2016HealerNotes', { con: 9 }),
value: 70,
con: 9,
- canBuy: () => {
- return true;
- },
},
spring2016Rogue: {
event: EVENTS.spring2016,
@@ -1645,6 +1764,9 @@ let shield = {
notes: t('shieldSpecialSpring2016RogueNotes', { str: 8 }),
value: 80,
str: 8,
+ canBuy: () => {
+ return true;
+ },
},
spring2016Warrior: {
event: EVENTS.spring2016,
@@ -1653,6 +1775,9 @@ let shield = {
notes: t('shieldSpecialSpring2016WarriorNotes', { con: 7 }),
value: 70,
con: 7,
+ canBuy: () => {
+ return true;
+ },
},
spring2016Healer: {
event: EVENTS.spring2016,
@@ -1661,6 +1786,9 @@ let shield = {
notes: t('shieldSpecialSpring2016HealerNotes', { con: 9 }),
value: 70,
con: 9,
+ canBuy: () => {
+ return true;
+ },
},
summer2016Rogue: {
event: EVENTS.summer2016,
@@ -1734,6 +1862,30 @@ let shield = {
value: 70,
con: 9,
},
+ spring2017Rogue: {
+ event: EVENTS.spring2017,
+ specialClass: 'rogue',
+ text: t('shieldSpecialSpring2017RogueText'),
+ notes: t('shieldSpecialSpring2017RogueNotes', { str: 8 }),
+ value: 80,
+ str: 8,
+ },
+ spring2017Warrior: {
+ event: EVENTS.spring2017,
+ specialClass: 'warrior',
+ text: t('shieldSpecialSpring2017WarriorText'),
+ notes: t('shieldSpecialSpring2017WarriorNotes', { con: 7 }),
+ value: 70,
+ con: 7,
+ },
+ spring2017Healer: {
+ event: EVENTS.spring2017,
+ specialClass: 'healer',
+ text: t('shieldSpecialSpring2017HealerText'),
+ notes: t('shieldSpecialSpring2017HealerNotes', { con: 9 }),
+ value: 70,
+ con: 9,
+ },
};
let weapon = {
@@ -1798,9 +1950,6 @@ let weapon = {
notes: t('weaponSpecialYetiNotes', { str: 15 }),
str: 15,
value: 90,
- canBuy: () => {
- return true;
- },
},
ski: {
event: EVENTS.winter,
@@ -1809,9 +1958,6 @@ let weapon = {
notes: t('weaponSpecialSkiNotes', { str: 8 }),
str: 8,
value: 90,
- canBuy: () => {
- return true;
- },
},
candycane: {
event: EVENTS.winter,
@@ -1822,9 +1968,6 @@ let weapon = {
int: 15,
per: 7,
value: 160,
- canBuy: () => {
- return true;
- },
},
snowflake: {
event: EVENTS.winter,
@@ -1833,9 +1976,6 @@ let weapon = {
notes: t('weaponSpecialSnowflakeNotes', { int: 9 }),
int: 9,
value: 90,
- canBuy: () => {
- return true;
- },
},
springRogue: {
event: EVENTS.spring,
@@ -1844,6 +1984,9 @@ let weapon = {
notes: t('weaponSpecialSpringRogueNotes', { str: 8 }),
value: 80,
str: 8,
+ canBuy: () => {
+ return true;
+ },
},
springWarrior: {
event: EVENTS.spring,
@@ -1852,6 +1995,9 @@ let weapon = {
notes: t('weaponSpecialSpringWarriorNotes', { str: 15 }),
value: 90,
str: 15,
+ canBuy: () => {
+ return true;
+ },
},
springMage: {
event: EVENTS.spring,
@@ -1862,6 +2008,9 @@ let weapon = {
value: 160,
int: 15,
per: 7,
+ canBuy: () => {
+ return true;
+ },
},
springHealer: {
event: EVENTS.spring,
@@ -1870,6 +2019,9 @@ let weapon = {
notes: t('weaponSpecialSpringHealerNotes', { int: 9 }),
value: 90,
int: 9,
+ canBuy: () => {
+ return true;
+ },
},
summerRogue: {
event: EVENTS.summer,
@@ -1946,9 +2098,6 @@ let weapon = {
notes: t('weaponSpecialWinter2015RogueNotes', { str: 8 }),
value: 80,
str: 8,
- canBuy: () => {
- return true;
- },
},
winter2015Warrior: {
event: EVENTS.winter2015,
@@ -1957,9 +2106,6 @@ let weapon = {
notes: t('weaponSpecialWinter2015WarriorNotes', { str: 15 }),
value: 90,
str: 15,
- canBuy: () => {
- return true;
- },
},
winter2015Mage: {
event: EVENTS.winter2015,
@@ -1970,9 +2116,6 @@ let weapon = {
value: 160,
int: 15,
per: 7,
- canBuy: () => {
- return true;
- },
},
winter2015Healer: {
event: EVENTS.winter2015,
@@ -1981,9 +2124,6 @@ let weapon = {
notes: t('weaponSpecialWinter2015HealerNotes', { int: 9 }),
value: 90,
int: 9,
- canBuy: () => {
- return true;
- },
},
spring2015Rogue: {
event: EVENTS.spring2015,
@@ -1992,6 +2132,9 @@ let weapon = {
notes: t('weaponSpecialSpring2015RogueNotes', { str: 8 }),
value: 80,
str: 8,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Warrior: {
event: EVENTS.spring2015,
@@ -2000,6 +2143,9 @@ let weapon = {
notes: t('weaponSpecialSpring2015WarriorNotes', { str: 15 }),
value: 90,
str: 15,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Mage: {
event: EVENTS.spring2015,
@@ -2010,6 +2156,9 @@ let weapon = {
value: 160,
int: 15,
per: 7,
+ canBuy: () => {
+ return true;
+ },
},
spring2015Healer: {
event: EVENTS.spring2015,
@@ -2018,6 +2167,9 @@ let weapon = {
notes: t('weaponSpecialSpring2015HealerNotes', { int: 9 }),
value: 90,
int: 9,
+ canBuy: () => {
+ return true;
+ },
},
summer2015Rogue: {
event: EVENTS.summer2015,
@@ -2094,9 +2246,6 @@ let weapon = {
notes: t('weaponSpecialWinter2016RogueNotes', { str: 8 }),
value: 80,
str: 8,
- canBuy: () => {
- return true;
- },
},
winter2016Warrior: {
event: EVENTS.winter2016,
@@ -2105,9 +2254,6 @@ let weapon = {
notes: t('weaponSpecialWinter2016WarriorNotes', { str: 15 }),
value: 90,
str: 15,
- canBuy: () => {
- return true;
- },
},
winter2016Mage: {
event: EVENTS.winter2016,
@@ -2118,9 +2264,6 @@ let weapon = {
value: 160,
int: 15,
per: 7,
- canBuy: () => {
- return true;
- },
},
winter2016Healer: {
event: EVENTS.winter2016,
@@ -2129,9 +2272,6 @@ let weapon = {
notes: t('weaponSpecialWinter2016HealerNotes', { int: 9 }),
value: 90,
int: 9,
- canBuy: () => {
- return true;
- },
},
spring2016Rogue: {
event: EVENTS.spring2016,
@@ -2140,6 +2280,9 @@ let weapon = {
notes: t('weaponSpecialSpring2016RogueNotes', { str: 8 }),
value: 80,
str: 8,
+ canBuy: () => {
+ return true;
+ },
},
spring2016Warrior: {
event: EVENTS.spring2016,
@@ -2148,6 +2291,9 @@ let weapon = {
notes: t('weaponSpecialSpring2016WarriorNotes', { str: 15 }),
value: 90,
str: 15,
+ canBuy: () => {
+ return true;
+ },
},
spring2016Mage: {
event: EVENTS.spring2016,
@@ -2158,6 +2304,9 @@ let weapon = {
value: 160,
int: 15,
per: 7,
+ canBuy: () => {
+ return true;
+ },
},
spring2016Healer: {
event: EVENTS.spring2016,
@@ -2166,6 +2315,9 @@ let weapon = {
notes: t('weaponSpecialSpring2016HealerNotes', { int: 9 }),
value: 90,
int: 9,
+ canBuy: () => {
+ return true;
+ },
},
summer2016Rogue: {
event: EVENTS.summer2016,
@@ -2269,6 +2421,40 @@ let weapon = {
value: 90,
int: 9,
},
+ spring2017Rogue: {
+ event: EVENTS.spring2017,
+ specialClass: 'rogue',
+ text: t('weaponSpecialSpring2017RogueText'),
+ notes: t('weaponSpecialSpring2017RogueNotes', { str: 8 }),
+ value: 80,
+ str: 8,
+ },
+ spring2017Warrior: {
+ event: EVENTS.spring2017,
+ specialClass: 'warrior',
+ text: t('weaponSpecialSpring2017WarriorText'),
+ notes: t('weaponSpecialSpring2017WarriorNotes', { str: 15 }),
+ value: 90,
+ str: 15,
+ },
+ spring2017Mage: {
+ event: EVENTS.spring2017,
+ specialClass: 'wizard',
+ twoHanded: true,
+ text: t('weaponSpecialSpring2017MageText'),
+ notes: t('weaponSpecialSpring2017MageNotes', { int: 15, per: 7 }),
+ value: 160,
+ int: 15,
+ per: 7,
+ },
+ spring2017Healer: {
+ event: EVENTS.spring2017,
+ specialClass: 'healer',
+ text: t('weaponSpecialSpring2017HealerText'),
+ notes: t('weaponSpecialSpring2017HealerNotes', { int: 9 }),
+ value: 90,
+ int: 9,
+ },
};
let specialSet = {
diff --git a/website/common/script/libs/shops.js b/website/common/script/libs/shops.js
index 776775e1c4..5ffb4fc732 100644
--- a/website/common/script/libs/shops.js
+++ b/website/common/script/libs/shops.js
@@ -220,6 +220,18 @@ shops.getTimeTravelersCategories = function getTimeTravelersCategories (user, la
// };
shops.getSeasonalShopCategories = function getSeasonalShopCategories (user, language) {
const AVAILABLE_SETS = {
+ springHealer: i18n.t('lovingPupSet', language),
+ springMage: i18n.t('magicMouseSet', language),
+ springRogue: i18n.t('stealthyKittySet', language),
+ springWarrior: i18n.t('mightyBunnySet', language),
+ spring2015Healer: i18n.t('comfortingKittySet', language),
+ spring2015Mage: i18n.t('magicianBunnySet', language),
+ spring2015Rogue: i18n.t('sneakySqueakerSet', language),
+ spring2015Warrior: i18n.t('bewareDogSet', language),
+ spring2016Healer: i18n.t('springingBunnySet', language),
+ spring2016Mage: i18n.t('grandMalkinSet', language),
+ spring2016Rogue: i18n.t('cleverDogSet', language),
+ spring2016Warrior: i18n.t('braveMouseSet', language),
};
const AVAILABLE_SPELLS = [
diff --git a/website/server/controllers/api-v3/shops.js b/website/server/controllers/api-v3/shops.js
index 4eded39970..7a356e9ace 100644
--- a/website/server/controllers/api-v3/shops.js
+++ b/website/server/controllers/api-v3/shops.js
@@ -107,8 +107,8 @@ api.getSeasonalShopItems = {
let resObject = {
identifier: 'seasonalShop',
text: res.t('seasonalShop'),
- notes: res.t('seasonalShopClosedText'),
- imageName: 'seasonalshop_closed',
+ notes: res.t('seasonalShopText'),
+ imageName: 'seasonalshop_open',
categories: shops.getSeasonalShopCategories(user, req.language),
};
diff --git a/website/views/options/inventory/seasonal-shop.jade b/website/views/options/inventory/seasonal-shop.jade
index 83823f4f47..509cdaa9e7 100644
--- a/website/views/options/inventory/seasonal-shop.jade
+++ b/website/views/options/inventory/seasonal-shop.jade
@@ -1,12 +1,12 @@
.container-fluid
.stable.row: .col-xs-12
- div(class="#{env.worldDmg.seasonalShop ? 'seasonalshop_broken' : 'seasonalshop_closed'}").pull-left-sm.col-centered
+ div(class="#{env.worldDmg.seasonalShop ? 'seasonalshop_broken' : 'seasonalshop_open'}").pull-left-sm.col-centered
.popover.static-popover.fade.right.in.pull-left-sm.col-centered
.arrow.hidden-xs
- h3.popover-title!=env.t('seasonalShopClosedTitle', {linkStart:"", linkEnd: ""})
+ h3.popover-title!=env.t('seasonalShopTitle', {linkStart:"", linkEnd: ""})
.popover-content
- p(ng-if='!env.worldDmg.seasonalShop')!=env.t('seasonalShopClosedText')
- p(ng-if='env.worldDmg.seasonalShop')!=env.t('seasonalShopClosedText')
+ p(ng-if='!env.worldDmg.seasonalShop')!=env.t('seasonalShopText')
+ p(ng-if='env.worldDmg.seasonalShop')!=env.t('seasonalShopText')
li.customize-menu.inventory-gear
menu.pets-menu(label='{{category.text}}', ng-repeat='category in seasonalShopCategories')
diff --git a/website/views/options/profile/index.jade b/website/views/options/profile/index.jade
index d8b2fdd21f..5719048da5 100644
--- a/website/views/options/profile/index.jade
+++ b/website/views/options/profile/index.jade
@@ -99,7 +99,7 @@ mixin customizeProfile(mobile)
each color in ['pblue','pgreen','porange','ppink','ppurple','pyellow']
button(type='button', ng-if='user.purchased.hair.color.#{color}', class='customize-option hair hair_bangs_1_#{color}', ng-click='unlock("hair.color.#{color}")', ng-class='{selectableInventory: user.preferences.hair.color == "#{color}"}')
+buyPref('hair.color', ['rainbow','yellow','green','purple','blue','TRUred'], 'rainbowColors')
- +buyPref('hair.color', ['pblue2','pgreen2','porange2','ppink2','ppurple2','pyellow2'], 'shimmerColors', 'disabled')
+ +buyPref('hair.color', ['pblue2','pgreen2','porange2','ppink2','ppurple2','pyellow2'], 'shimmerColors')
+buyPref('hair.color', ['candycorn','ghostwhite','halloween','midnight','pumpkin','zombie'], 'hauntedColors', 'disabled')
+buyPref('hair.color', ['aurora','festive','hollygreen','peppermint','snowy','winterstar'], 'winteryColors', 'disabled')
@@ -173,7 +173,7 @@ mixin customizeProfile(mobile)
+buyPref('skin', ['bear','cactus','fox','lion','panda','pig','tiger','wolf'], 'animalSkins')
// Seasonal event skins. Note that Spooky Skins are a legacy set and should always be disabled for purchase
- +buyPref('skin', ['pastelPink','pastelOrange','pastelYellow','pastelGreen','pastelBlue','pastelPurple','pastelRainbowChevron','pastelRainbowDiagonal'], 'pastelSkins', 'disabled')
+ +buyPref('skin', ['pastelPink','pastelOrange','pastelYellow','pastelGreen','pastelBlue','pastelPurple','pastelRainbowChevron','pastelRainbowDiagonal'], 'pastelSkins')
+buyPref('skin', ['monster','pumpkin','skeleton','zombie','ghost','shadow'], 'spookySkins', 'disabled')
+buyPref('skin', ['candycorn','ogre','pumpkin2','reptile','shadow2','skeleton2','transparent','zombie2'], 'supernaturalSkins', 'disabled')
+buyPref('skin', ['clownfish','deepocean','merblue','mergold','mergreen','merruby','shark','tropicalwater'], 'splashySkins', 'disabled')
@@ -205,4 +205,4 @@ script(id='partials/options.profile.html', type="text/ng-template")
.tab-content
.tab-pane.active
- div(ui-view)
\ No newline at end of file
+ div(ui-view)
diff --git a/website/views/shared/modals/classes.jade b/website/views/shared/modals/classes.jade
index 754d6f31f0..cab3645448 100644
--- a/website/views/shared/modals/classes.jade
+++ b/website/views/shared/modals/classes.jade
@@ -9,57 +9,61 @@ script(type='text/ng-template', id='modals/chooseClass.html')
figure.herobox(ng-class='{"selected-class": selectedClass=="warrior"}')
.character-sprites
span(class='skin_{{user.preferences.skin}}')
- span(class='{{user.preferences.size}}_armor_warrior_5')
+ span(class='{{user.preferences.size}}_armor_special_spring2017Warrior')
span(class='head_0')
span(class='hair_base_{{user.preferences.hair.base}}_{{user.preferences.hair.color}}')
span(class='hair_bangs_{{user.preferences.hair.bangs}}_{{user.preferences.hair.color}}')
span(class='hair_beard_{{user.preferences.hair.beard}}_{{user.preferences.hair.color}}')
span(class='hair_mustache_{{user.preferences.hair.mustache}}_{{user.preferences.hair.color}}')
- span(class='head_warrior_5')
- span(class='shield_warrior_5')
- span(class='weapon_warrior_6')
+ span(class='head_special_spring2017Warrior')
+ span(class='headAccessory_special_spring2017Warrior')
+ span(class='shield_special_spring2017Warrior')
+ span(class='weapon_special_spring2017Warrior')
.col-md-3(ng-click='selectedClass = "wizard"')
h5!=env.t('mageWiki')
figure.herobox(ng-class='{"selected-class": selectedClass=="wizard"}')
.character-sprites
span(class='skin_{{user.preferences.skin}}')
- span(class='{{user.preferences.size}}_armor_wizard_5')
+ span(class='{{user.preferences.size}}_armor_special_spring2017Mage')
span(class='head_0')
span(class='hair_base_{{user.preferences.hair.base}}_{{user.preferences.hair.color}}')
span(class='hair_bangs_{{user.preferences.hair.bangs}}_{{user.preferences.hair.color}}')
span(class='hair_beard_{{user.preferences.hair.beard}}_{{user.preferences.hair.color}}')
span(class='hair_mustache_{{user.preferences.hair.mustache}}_{{user.preferences.hair.color}}')
- span(class='head_wizard_5')
- span(class='shield_wizard_5')
- span(class='weapon_wizard_6')
+ span(class='head_special_spring2017Mage')
+ span(class='headAccessory_special_spring2017Mage')
+ span(class='shield_special_spring2017Mage')
+ span(class='weapon_special_spring2017Mage')
.col-md-3(ng-click='selectedClass = "rogue"')
h5!=env.t('rogueWiki')
figure.herobox(ng-class='{"selected-class": selectedClass=="rogue"}')
.character-sprites
span(class='skin_{{user.preferences.skin}}')
- span(class='{{user.preferences.size}}_armor_rogue_5')
+ span(class='{{user.preferences.size}}_armor_special_spring2017Rogue')
span(class='head_0')
span(class='hair_base_{{user.preferences.hair.base}}_{{user.preferences.hair.color}}')
span(class='hair_bangs_{{user.preferences.hair.bangs}}_{{user.preferences.hair.color}}')
span(class='hair_beard_{{user.preferences.hair.beard}}_{{user.preferences.hair.color}}')
span(class='hair_mustache_{{user.preferences.hair.mustache}}_{{user.preferences.hair.color}}')
- span(class='head_rogue_5')
- span(class='shield_rogue_6')
- span(class='weapon_rogue_6')
+ span(class='head_special_spring2017Rogue')
+ span(class='headAccessory_special_spring2017Rogue')
+ span(class='shield_special_spring2017Rogue')
+ span(class='weapon_special_spring2017Rogue')
.col-md-3(ng-click='selectedClass = "healer"')
h5!=env.t('healerWiki')
figure.herobox(ng-class='{"selected-class": selectedClass=="healer"}')
.character-sprites
span(class='skin_{{user.preferences.skin}}')
- span(class='{{user.preferences.size}}_armor_healer_5')
+ span(class='{{user.preferences.size}}_armor_special_spring2017Healer')
span(class='head_0')
span(class='hair_base_{{user.preferences.hair.base}}_{{user.preferences.hair.color}}')
span(class='hair_bangs_{{user.preferences.hair.bangs}}_{{user.preferences.hair.color}}')
span(class='hair_beard_{{user.preferences.hair.beard}}_{{user.preferences.hair.color}}')
span(class='hair_mustache_{{user.preferences.hair.mustache}}_{{user.preferences.hair.color}}')
- span(class='head_healer_5')
- span(class='shield_healer_5')
- span(class='weapon_healer_6')
+ span(class='head_special_spring2017Healer')
+ span(class='headAccessory_special_spring2017Healer')
+ span(class='shield_special_spring2017Healer')
+ span(class='weapon_special_spring2017Healer')
br
.well(ng-show='selectedClass=="warrior"')=env.t('warriorText')
.well(ng-show='selectedClass=="wizard"')=env.t('mageText')