diff --git a/Habitica/res/drawable-hdpi/sub_benefits_armoire.png b/Habitica/res/drawable-hdpi/sub_benefits_armoire.png
new file mode 100644
index 0000000000..2b990ebc0b
Binary files /dev/null and b/Habitica/res/drawable-hdpi/sub_benefits_armoire.png differ
diff --git a/Habitica/res/drawable-mdpi/sub_benefits_armoire.png b/Habitica/res/drawable-mdpi/sub_benefits_armoire.png
new file mode 100644
index 0000000000..fbb5705bfd
Binary files /dev/null and b/Habitica/res/drawable-mdpi/sub_benefits_armoire.png differ
diff --git a/Habitica/res/drawable-xhdpi/sub_benefits_armoire.png b/Habitica/res/drawable-xhdpi/sub_benefits_armoire.png
new file mode 100644
index 0000000000..d54695a623
Binary files /dev/null and b/Habitica/res/drawable-xhdpi/sub_benefits_armoire.png differ
diff --git a/Habitica/res/drawable-xxhdpi/sub_benefits_armoire.png b/Habitica/res/drawable-xxhdpi/sub_benefits_armoire.png
new file mode 100644
index 0000000000..eeabbecfb7
Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/sub_benefits_armoire.png differ
diff --git a/Habitica/res/drawable/ad_button_background.xml b/Habitica/res/drawable/ad_button_background.xml
index 87c8b59d10..5186b00329 100644
--- a/Habitica/res/drawable/ad_button_background.xml
+++ b/Habitica/res/drawable/ad_button_background.xml
@@ -7,7 +7,7 @@
android:angle="0"
android:startColor="@color/green_100"
android:endColor="@color/green_500" />
-
+
-
+
diff --git a/Habitica/res/drawable/ad_button_background_content.xml b/Habitica/res/drawable/ad_button_background_content.xml
index a53d99acac..ab553aad05 100644
--- a/Habitica/res/drawable/ad_button_background_content.xml
+++ b/Habitica/res/drawable/ad_button_background_content.xml
@@ -7,7 +7,7 @@
android:angle="0"
android:startColor="@color/green_100"
android:endColor="@color/green_500" />
-
+
-
+
diff --git a/Habitica/res/drawable/armoire_background_full.xml b/Habitica/res/drawable/armoire_background_full.xml
new file mode 100644
index 0000000000..bb9de1b2f0
--- /dev/null
+++ b/Habitica/res/drawable/armoire_background_full.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Habitica/res/drawable/sub_perk_bg.xml b/Habitica/res/drawable/sub_perk_bg.xml
new file mode 100644
index 0000000000..a62e9ef6f5
--- /dev/null
+++ b/Habitica/res/drawable/sub_perk_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/Habitica/res/drawable/subscribe_incentive_bg.xml b/Habitica/res/drawable/subscribe_incentive_bg.xml
new file mode 100644
index 0000000000..7fc46c5f00
--- /dev/null
+++ b/Habitica/res/drawable/subscribe_incentive_bg.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Habitica/res/drawable/subscribe_incentive_bg_topround.xml b/Habitica/res/drawable/subscribe_incentive_bg_topround.xml
new file mode 100644
index 0000000000..281d577109
--- /dev/null
+++ b/Habitica/res/drawable/subscribe_incentive_bg_topround.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/Habitica/res/drawable/subscriber_benefit_button_bg.xml b/Habitica/res/drawable/subscriber_benefit_button_bg.xml
new file mode 100644
index 0000000000..76e4c55b5a
--- /dev/null
+++ b/Habitica/res/drawable/subscriber_benefit_button_bg.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Habitica/res/layout/activity_armoire.xml b/Habitica/res/layout/activity_armoire.xml
index dc99484960..805ef4eaa4 100644
--- a/Habitica/res/layout/activity_armoire.xml
+++ b/Habitica/res/layout/activity_armoire.xml
@@ -107,10 +107,9 @@
+ android:layout_marginTop="8dp"
+ android:paddingHorizontal="24dp">
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/Habitica/res/layout/activity_death.xml b/Habitica/res/layout/activity_death.xml
index c7d3fcfc7d..d9b3ebb4f7 100644
--- a/Habitica/res/layout/activity_death.xml
+++ b/Habitica/res/layout/activity_death.xml
@@ -2,7 +2,8 @@
+ android:layout_height="match_parent"
+ xmlns:tools="http://schemas.android.com/tools">
+ android:orientation="vertical">
+ android:textStyle="bold"
+ android:paddingHorizontal="24dp" />
+ android:textSize="20sp"
+ android:paddingHorizontal="12dp" />
+ android:text="@string/faint_broken_equipment"
+ android:textColor="@color/text_quad" />
+ android:textStyle="bold"
+ android:layout_marginHorizontal="24dp" />
+ app:text="@string/watch_ad_to_hang_on"
+ app:textColor="@color/text_primary"
+ android:layout_marginHorizontal="24dp" />
+
+
+
+
+
+
+ android:gravity="center_horizontal"
+ android:textColor="@color/text_teal"
+ android:layout_marginHorizontal="42dp"
+ tools:text="@string/subscriber_benefit_used_faint"
+ style="@style/Body1"
+ android:layout_marginBottom="@dimen/spacing_large"
+ android:layout_marginTop="8dp"/>
+
+
+
+
+
diff --git a/Habitica/res/layout/fragment_items_dialog.xml b/Habitica/res/layout/fragment_items_dialog.xml
index 5a3d0c5f83..9b40f37c1c 100644
--- a/Habitica/res/layout/fragment_items_dialog.xml
+++ b/Habitica/res/layout/fragment_items_dialog.xml
@@ -24,20 +24,5 @@
android:scrollbarThumbVertical="@color/scrollbarThumb"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:scrollbars="vertical" />
-
-
diff --git a/Habitica/res/layout/fragment_party_detail.xml b/Habitica/res/layout/fragment_party_detail.xml
index b908fdf46a..9a1646c504 100644
--- a/Habitica/res/layout/fragment_party_detail.xml
+++ b/Habitica/res/layout/fragment_party_detail.xml
@@ -90,26 +90,64 @@
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_keyboard_arrow_right_gray_24dp"/>
-
+ android:layout_marginBottom="@dimen/spacing_medium"
+ android:clipToPadding="true"
+ android:clipChildren="true"
+ android:clipToOutline="true"
+ android:orientation="vertical">
-
-
+
+
+
+
+
+ android:layout_height="wrap_content"
+ style="@style/Widget.Material3.Button.TextButton"
+ android:text="@string/quest_mechanics"
+ android:textColor="?colorAccent" />
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="match_parent"
+ android:scrollbarSize="3dp"
+ android:scrollbarThumbVertical="@color/scrollbarThumb"
+ android:scrollbars="vertical">
+ android:orientation="vertical">
-
+ android:visibility="gone" />
-
+ android:layout_height="80dp"
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp"
+ android:layout_marginBottom="8dp"
+ android:background="@drawable/g1g1_box"
+ android:clickable="true"
+ android:clipChildren="true"
+ android:clipToOutline="true"
+ android:clipToPadding="true"
+ android:visibility="gone"
+ tools:visibility="visible">
-
-
-
+
-
+ android:id="@+id/promo_banner_right_image"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_alignParentTop="true"
+ android:layout_alignParentEnd="true"
+ android:scaleType="center" />
+
-
+
+
+ android:layout_marginBottom="6dp" />
+
+ android:layout_marginStart="84dp"
+ android:layout_marginEnd="84dp"
+ android:layout_marginBottom="6dp"
+ android:gravity="center"
+ android:textColor="@color/white"
+ android:visibility="gone" />
+
+
-
+
+
+
+
+ android:orientation="vertical"
+ android:padding="20dp">
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="12dp"
+ android:orientation="vertical">
+
+
+
+
+
-
-
-
+
-
-
+
+
+
+
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="12dp"
+ android:orientation="vertical">
+
+
+
+
+
-
-
-
+
-
-
+
+
+
+
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="12dp"
+ android:orientation="vertical">
+
+
+
+
+
-
-
-
+
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="12dp"
+ android:orientation="vertical">
+
+
+
+
+
-
-
-
+
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="12dp"
+ android:orientation="vertical">
+
-
+
+
+
-
+
-
-
+
-
+ android:paddingTop="50dp"
+ android:paddingBottom="10dp"
+ android:text="@string/no_billing_subscriptions"
+ android:visibility="gone" />
-
+ android:layout_gravity="center"
+ android:layout_marginBottom="50dp"
+ android:text="@string/visit_habitica_website"
+ android:visibility="gone" />
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+ android:layout_marginStart="@dimen/spacing_large"
+ android:layout_marginEnd="@dimen/spacing_large"
+ android:gravity="center_horizontal"
+ android:text="@string/subscribe_gift_description"
+ android:textColor="@color/text_quad" />
+ android:textColor="@color/text_brand_neon" />
-
-
-
-
-
-
+ android:background="?attr/colorWindowBackground">
+
+
+
-
-
\ No newline at end of file
+
+
diff --git a/Habitica/res/layout/quest_mechanics_dialog.xml b/Habitica/res/layout/quest_mechanics_dialog.xml
new file mode 100644
index 0000000000..a2f272fde5
--- /dev/null
+++ b/Habitica/res/layout/quest_mechanics_dialog.xml
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Habitica/res/layout/shop_ad.xml b/Habitica/res/layout/shop_ad.xml
index b7ac0cf29d..cd01641944 100644
--- a/Habitica/res/layout/shop_ad.xml
+++ b/Habitica/res/layout/shop_ad.xml
@@ -6,7 +6,8 @@
android:orientation="vertical"
android:gravity="center_horizontal"
android:paddingHorizontal="50dp"
- android:layout_marginVertical="30dp">
+ android:layout_marginTop="70dp"
+ android:layout_marginBottom="30dp">
\ No newline at end of file
+
diff --git a/Habitica/res/menu/menu_share_avatar.xml b/Habitica/res/menu/menu_share_avatar.xml
new file mode 100644
index 0000000000..55e6e5aaf0
--- /dev/null
+++ b/Habitica/res/menu/menu_share_avatar.xml
@@ -0,0 +1,7 @@
+
+
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index 97ce0b174a..5b17f4a0ff 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -1163,7 +1163,7 @@
You completed all your tasks. Well done!Privacy PolicyTerms of Service
- %.01f dmg pending
+ %.01f damage pending%s remainingSale ends in %sMy Account
@@ -1236,7 +1236,7 @@
You ran out of Health!But you can get them all back with hard work! Good luck—you’ll do great.Broken equipment can be repurchased from Rewards
- %d, lose %d Gold, and break a piece of gear…]]>
+ %d, lose %d Gold, and break a piece of gear… You can earn them all back with hard work!]]>Account ResetAvatar Skin CustomizationAvatar Shirt Customization
@@ -1398,7 +1398,8 @@
Get Quests from leveling up, log in bonuses, or the [Quest Shop](/shops/quests)!Get transformation items during Seasonal Galas and mystery boxes of subscriber gear are delivered at the start of each month!Complete tasks, buy an Armoire, or head over to the [Market](/shops/market) to stock up!
- Complete tasks, Potion Quests, or head over to the [Market](/shops/market) to stock up!
+ Complete tasks, Potion Quests, or head over to the [Market](/shops/market) to stock up!
+ Complete tasks, Egg Quests, or head over to the [Market](/shops/market) to stock up!Not getting the right %s from tasks?Check out the [Market](/shops/market) to buy just the things you need!Check out the [Quest Shop](/shops/quests) to see what’s available!
@@ -1410,6 +1411,27 @@
Open ProfileCustomize AvatarShare Avatar
+ Extra Armoire chances
+ Get two chances at new equipment from the Armoire for the price of one
+ Subscribe to open again for free!
+ Get an extra chance at the Armoire each time you buy it with a subscription
+ Open again for free!
+ Second chance: Hold on with 1HP!
+ SUB PERK
+ Get a second chance each day to avoid running out of HP with a subscription
+ You already used your second chance today. It’s available again in %s
+ Watch ad to hold on with 1HP!
+ Quest Mechanics
+ Damaging a Boss
+ Complete any type of task or use skills to rack up pending damage! Damage will be applied on your next day reset. Strength affects how much damage you do.
+ Collecting Quest items
+ When on a Collection Quest, complete your tasks for a random chance to find a Quest item. Pending items will be applied on your next day reset. Perception boosts item rates.
+ Bosses lash out for missed Dailies
+ Boss damage is calculated each time a Party member checks in throughout the day. This damage is applied the next time you perform an action that syncs with the server. Boss damage is recorded in your Party’s chat.
+ Pausing damage
+ "If you’re struggling to complete your Dailies, you can pause damage from Settings for a break. This will prevent the Boss from hurting you or others, but also pause your own damage. Other members missed Dailies will still cause damage, so be careful out there! "
+ Rage meters
+ Some difficult bosses have an orange Rage meter under their HP. This meter fills up when participants miss Dailies. When it fills completely, the boss will let out a fearsome attack that does extra damage!You
@@ -1440,4 +1462,9 @@
every other yearevery %d years
+
+ No items pending
+ %d item pending
+ %d items pending
+
diff --git a/Habitica/res/values/styles.habitica.xml b/Habitica/res/values/styles.habitica.xml
index 1c2d437e7c..48c466319d 100644
--- a/Habitica/res/values/styles.habitica.xml
+++ b/Habitica/res/values/styles.habitica.xml
@@ -60,8 +60,8 @@