====== Assasin Armor Item - Code References ====== {{ rpd:images:assasin_armor_item.png|Assasin Armor }} ===== Java Classes ===== * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/items/armor/AssasinArmor.java|AssasinArmor.java]] - Main implementation class * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/items/armor/RogueArmor.java|RogueArmor.java]] - Parent class (AssasinArmor extends RogueArmor) * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/items/armor/ClassArmor.java|ClassArmor.java]] - Grandparent (RogueArmor extends ClassArmor) * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/actors/hero/HeroSubClass.java|HeroSubClass.java]] - ASSASSIN subclass bound to "AssasinArmor" (line 47) * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/nyrds/pixeldungeon/items/common/ItemFactory.java|ItemFactory.java]] - Item registration ===== Class Implementation Details ===== package com.watabou.pixeldungeon.items.armor; import com.nyrds.pixeldungeon.ml.R; import com.nyrds.platform.util.StringsManager; import com.watabou.pixeldungeon.actors.Char; import com.watabou.pixeldungeon.actors.hero.HeroSubClass; import com.watabou.pixeldungeon.utils.GLog; import org.jetbrains.annotations.NotNull; public class AssasinArmor extends RogueArmor { { name = StringsManager.getVar(R.string.RogueArmor_Name); image = 10; } @Override public boolean doEquip(@NotNull Char hero ) { if (hero.getSubClass() == HeroSubClass.ASSASSIN) { return super.doEquip( hero ); } else { GLog.w(StringsManager.getVar(R.string.RogueArmor_NotRogue)); return false; } } } ===== Key Properties ===== * **Image ID**: 10 (sprite index in armor atlas) * **Name Source**: R.string.RogueArmor_Name (shared with parent RogueArmor) * **Warning Message**: R.string.RogueArmor_NotRogue (shown when non-Assassin tries to equip) * **Equipment Check**: doEquip() method validates HeroSubClass.ASSASSIN before equipping * **Restriction**: Can only be equipped by heroes with ASSASSIN subclass * **Inherits From**: RogueArmor → ClassArmor → Armor (gets smoke bomb special ability) * **Special Ability Source**: Inherited "RogueArmor_ACSpecial" (SMOKE BOMB) action from RogueArmor ===== JSON Configuration ===== This entity is implemented in Java, no JSON configuration exists. ===== String Resources ===== rogue garb Only rogues can use this armor! Wearing this dark garb, a rogue can perform a trick called \"smoke bomb\" (though no real explosives are used): he blinds enemies who can see him and jumps aside. SMOKE BOMB assassin When performing a surprise attack, the _Assassin_ inflicts additional damage to his target. ===== Lua Scripts ===== This entity is implemented in Java, no Lua script exists. ===== Related Entities ===== * [[mr:assassin_subclass|Assassin Subclass]] - Mastery path this armor belongs to * [[mr:rogue_class|Rogue Class]] - Base hero class for Assassin subclass * [[mr:rogue_armor_item|Rogue Armor]] - Parent armor class * [[mr:armor_kit_item|Armor Kit Item]] - Used to create Assasin Armor from regular armor ===== Usage in Code ===== * Created via Armor Kit transformation on any armor piece (ClassArmor.upgrade) * Equipment restriction enforced in doEquip() method * Inherits smoke bomb special ability from RogueArmor * Part of the Rogue class mastery system * Only equippable by heroes with HeroSubClass.ASSASSIN {{tag> rpd items armor mr}}