====== Berserker Subclass - Code References ====== ===== Java Classes ===== * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/actors/hero/HeroSubClass.java|HeroSubClass.java]] - Subclass enum definition * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/actors/buffs/Fury.java|Fury.java]] - Fury buff class * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/items/armor/BerserkArmor.java|BerserkArmor.java]] - Special subclass armor ===== Enum Definition ===== From HeroSubClass.java (line 41): BERSERKER(R.string.HeroSubClass_NameBers, R.string.HeroSubClass_DescBers, "BerserkArmor"), ===== Fury Activation Logic ===== From HeroSubClass.java (lines 198-212): @Override public int charGotDamage(int damage, NamedEntityKind src, Char target) { switch (this) { case BERSERKER: if (0 < target.hp() && target.hp() <= target.ht() * Fury.LEVEL) { if (!target.hasBuff(BuffFactory.FURY)) { Buff.affect(target, BuffFactory.FURY); } } break; } return damage; } ===== Fury Buff Class ===== From Fury.java: package com.watabou.pixeldungeon.actors.buffs; import com.nyrds.LuaInterface; import com.nyrds.pixeldungeon.ml.R; import com.nyrds.platform.util.StringsManager; import com.watabou.pixeldungeon.actors.Char; import com.watabou.pixeldungeon.actors.CharUtils; import com.watabou.pixeldungeon.sprites.CharSprite; import com.watabou.pixeldungeon.ui.BuffIndicator; import com.watabou.pixeldungeon.utils.GLog; import org.jetbrains.annotations.NotNull; @LuaInterface public class Fury extends Buff { public static final float LEVEL = 0.4f; @Override public void act() { if (target.hp() > target.ht() * LEVEL) { detach(); } spend( TICK * 10 ); } @Override public boolean attachTo(@NotNull Char target) { if (CharUtils.isVisible(target)) { GLog.w(StringsManager.getVar(R.string.Brute_Enraged), target.getName() ); target.showStatus( CharSprite.NEGATIVE, StringsManager.getVar(R.string.Brute_StaEnraged)); } return super.attachTo(target); } @Override public int attackProc(Char attacker, Char defender, int damage) { return damage * 2; } @Override public int icon() { return BuffIndicator.FURY; } } ===== Stats from code ===== * Fury Activation Threshold: 40% of max HP (Fury.LEVEL = 0.4f) * Fury Damage Bonus: 2x (damage * 2) * Fury Duration: Persistent while HP <= 40% * Associated Armor: "BerserkArmor" ===== JSON Configuration ===== This entity is implemented in Java, no JSON configuration exists ===== String Resources ===== From values/strings_all.xml: berserker When severely wounded, the _Berserker_ enters a state of wild fury significantly increasing his damage output. %s becomes enraged! enraged From values-ru/strings_all.xml: берсерк Будучи сильно раненым, _Берсерк_ впадает в состояние дикой ярости, значительно повышая свой показатель урона. %s впал в неистовство! неистовый ===== Lua Scripts ===== This entity is implemented in Java, no Lua script exists ===== Related mr Entities ===== * [[mr:warrior_class|Warrior (Class)]] - Parent class * [[mr:fury_buff|Fury (Buff)]] - Buff that powers Berserker * [[mr:berserk_armor_item|Berserker Armor (Item)]] - Special subclass armor * [[mr:gladiator_subclass|Gladiator (Subclass)]] - Alternative Warrior subclass