diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml
index 4f35fd474..bfdf00892 100644
--- a/Habitica/AndroidManifest.xml
+++ b/Habitica/AndroidManifest.xml
@@ -46,6 +46,13 @@
android:screenOrientation="portrait"
tools:ignore="UnusedAttribute">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index 3924dfa79..76c03a70c 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -665,4 +665,10 @@
I want to Subscribe
The Grand Galas happen close to the solstices and equinoxes, so check back then to find a fun assortment of special seasonal items!
Come back soon!
+ Level
+ 21-Day Streaks
+ Stats
+ If you\'ve encountered a bug or made a mistake that unfairly changed your character (damage you shouldn\'t have taken, Gold you didn\'t really earn, etc.), you can manually correct your numbers here. Yes, this makes it possible to cheat: use this feature wisely, or you\'ll sabotage your own habit-building!
+ Fix Character Values
+ Saving
diff --git a/Habitica/res/values/styles.xml b/Habitica/res/values/styles.xml
index 93a391838..19ddbca72 100644
--- a/Habitica/res/values/styles.xml
+++ b/Habitica/res/values/styles.xml
@@ -405,4 +405,8 @@
- 12dip
- 12dip
+
+
\ No newline at end of file
diff --git a/Habitica/res/xml/preferences_fragment.xml b/Habitica/res/xml/preferences_fragment.xml
index 83071bbf0..c417dfd00 100644
--- a/Habitica/res/xml/preferences_fragment.xml
+++ b/Habitica/res/xml/preferences_fragment.xml
@@ -1,6 +1,7 @@
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:title="@string/PS_contact_title">
+
()
+ userInfo["stats.hp"] = healthEditText.getDoubleValue()
+ userInfo["stats.exp"] = experienceEditText.getDoubleValue()
+ userInfo["stats.gp"] = goldEditText.getDoubleValue()
+ userInfo["stats.mp"] = manaEditText.getDoubleValue()
+ userInfo["stats.lvl"] = levelEditText.getDoubleValue().toInt()
+ userInfo["achievements.streak"] = streakEditText.getDoubleValue().toInt()
+ repository.updateUser(user, userInfo).subscribe(Action1 {}, RxErrorHandler.handleEmptyError(), Action0 {
+ progressDialog.dismiss()
+ finish()
+ })
+ return true
+ }
+
+ return super.onOptionsItemSelected(item)
+ }
+
+ private var user: User? = null
+ set(value) {
+ if (value != null) {
+ updateFields(value)
+ }
+ }
+
+ private fun updateFields(user: User) {
+ healthEditText.setText(user.stats?.hp.toString())
+ experienceEditText.setText(user.stats?.exp.toString())
+ goldEditText.setText(user.stats?.gp.toString())
+ manaEditText.setText(user.stats?.mp.toString())
+ levelEditText.setText(user.stats?.lvl.toString())
+ streakEditText.setText(user.streakCount.toString())
+ }
+
+ fun EditText.getDoubleValue(): Double {
+ val stringValue = this.text.toString()
+ return stringValue.toDouble()
+ }
+
+}
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupFormActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupFormActivity.java
index 8e61cfc8c..6b311c32b 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupFormActivity.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupFormActivity.java
@@ -137,7 +137,7 @@ public class GroupFormActivity extends BaseActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.menu_task_form, menu);
+ getMenuInflater().inflate(R.menu.menu_save, menu);
return true;
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java
index 123c46b8e..d03336d0b 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java
@@ -57,7 +57,6 @@ import com.habitrpg.android.habitica.modules.AppModule;
import com.habitrpg.android.habitica.ui.WrapContentRecyclerViewLayoutManager;
import com.habitrpg.android.habitica.ui.adapter.tasks.CheckListAdapter;
import com.habitrpg.android.habitica.ui.adapter.tasks.RemindersAdapter;
-import com.habitrpg.android.habitica.ui.fragments.social.party.PartyDetailFragment;
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
import com.habitrpg.android.habitica.ui.helpers.SimpleItemTouchHelperCallback;
import com.habitrpg.android.habitica.ui.helpers.ViewHelper;
@@ -958,7 +957,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.menu_task_form, menu);
+ getMenuInflater().inflate(R.menu.menu_save, menu);
return true;
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java
index 4dbcd5dcd..229ada7a2 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java
@@ -24,6 +24,7 @@ import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManag
import com.habitrpg.android.habitica.models.user.User;
import com.habitrpg.android.habitica.prefs.TimePreference;
import com.habitrpg.android.habitica.ui.activities.ClassSelectionActivity;
+import com.habitrpg.android.habitica.ui.activities.FixCharacterValuesActivity;
import com.habitrpg.android.habitica.ui.activities.MainActivity;
import java.util.HashMap;
@@ -34,6 +35,8 @@ import javax.inject.Inject;
import rx.Subscription;
+import static com.habitrpg.android.habitica.ui.activities.MainActivity.SELECT_CLASS_RESULT;
+
public class PreferencesFragment extends BasePreferencesFragment implements
SharedPreferences.OnSharedPreferenceChangeListener {
@@ -150,6 +153,9 @@ public class PreferencesFragment extends BasePreferencesFragment implements
}
RxErrorHandler.reportError(throwable);
});
+ } else if (preference.getKey().equals("fixCharacterValues")) {
+ Intent intent = new Intent(getActivity(), FixCharacterValuesActivity.class);
+ getActivity().startActivity(intent);
}
return super.onPreferenceTreeClick(preference);
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.java b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.java
index d336b5553..3d8d74b17 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.java
@@ -129,6 +129,12 @@ public class UserDeserializer implements JsonDeserializer {
user.setNeedsCron(obj.get("needsCron").getAsBoolean());
}
+ if (obj.has("achievements")) {
+ if (obj.getAsJsonObject("achievements").has("streak")) {
+ user.setStreakCount(obj.getAsJsonObject("achievements").get("streak").getAsInt());
+ }
+ }
+
return user;
}
}
\ No newline at end of file