====== 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