User Tools

Site Tools


mr:shopkeeper_mob

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
mr:shopkeeper_mob [2025/12/25 18:23] – auto lint fix Mikhaelmr:shopkeeper_mob [2026/03/10 12:46] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== Shopkeeper Mob - Code References ======
 +
 +{{ rpd:images:shopkeeper_mob.png|Shopkeeper }}
 +
 +===== Java Classes =====
 +  * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/actors/mobs/npcs/Shopkeeper.java|Shopkeeper.java]] - Main Shopkeeper class implementation
 +  * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/nyrds/pixeldungeon/mobs/npc/TownShopkeeper.java|TownShopkeeper.java]] - Town variant of Shopkeeper
 +  * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/actors/mobs/npcs/ImpShopkeeper.java|ImpShopkeeper.java]] - Imp variant for Last Shop Level
 +  * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/nyrds/pixeldungeon/mobs/npc/AzuterronNPC.java|AzuterronNPC.java]] - Special NPC extending Shopkeeper
 +  * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/actors/mobs/npcs/NPC.java|NPC.java]] - Base NPC class
 +  * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/actors/mobs/Mob.java|Mob.java]] - Base Mob class
 +
 +===== Java Class Content =====
 +<code java>
 +package com.watabou.pixeldungeon.actors.mobs.npcs;
 +
 +import com.nyrds.Packable;
 +import com.nyrds.pixeldungeon.game.GameLoop;
 +import com.nyrds.pixeldungeon.items.Treasury;
 +import com.nyrds.pixeldungeon.mechanics.NamedEntityKind;
 +import com.nyrds.pixeldungeon.windows.WndShopOptions;
 +import com.nyrds.util.ModdingBase;
 +import com.watabou.pixeldungeon.Badges;
 +import com.watabou.pixeldungeon.Dungeon;
 +import com.watabou.pixeldungeon.actors.Char;
 +import com.watabou.pixeldungeon.actors.CharUtils;
 +import com.watabou.pixeldungeon.actors.buffs.Regeneration;
 +import com.watabou.pixeldungeon.effects.CellEmitter;
 +import com.watabou.pixeldungeon.effects.particles.ElmoParticle;
 +import com.watabou.pixeldungeon.items.Item;
 +import com.watabou.pixeldungeon.items.bags.Bag;
 +import com.watabou.pixeldungeon.items.food.Food;
 +import com.watabou.pixeldungeon.items.food.OverpricedRation;
 +import com.watabou.pixeldungeon.scenes.GameScene;
 +import com.watabou.pixeldungeon.windows.WndBag;
 +import org.jetbrains.annotations.NotNull;
 +
 +public class Shopkeeper extends NPC {
 + {
 + spriteClass = "spritesDesc/Shopkeeper.json";
 + movable = false;
 + addImmunity(Regeneration.class);
 + }
 +
 + @Packable
 + public String bagSold = "";
 +
 + @Override
 + public void damage(int dmg, @NotNull NamedEntityKind src ) {
 + destroy();
 + getSprite().killAndErase();
 + CellEmitter.get( getPos() ).burst( ElmoParticle.FACTORY, 6 );
 + }
 +
 + @Override
 + public boolean reset() {
 + return true;
 + }
 +
 + @Override
 + public boolean interact(final Char hero) {
 + // Shop interaction logic
 + }
 +}
 +</code>
 +
 +===== JSON Configuration =====
 +  * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/assets/spritesDesc/Shopkeeper.json|Shopkeeper.json]] - Sprite configuration
 +
 +===== String Resources =====
 +<code xml>
 +<string name="Shopkeeper_Name">shopkeeper</string>
 +<string name="Shopkeeper_Desc">This stout guy looks more appropriate for a trade district in some large city than for a dungeon. His prices explain why he prefers to do business here.</string>
 +<string name="Shopkeeper_text">Welcome to the local Pixel-Mart branch.\nHow can I help you?</string>
 +<string name="Shopkeeper_Buy">Select item to buy</string>
 +<string name="Shopkeeper_Sell">Select an item to sell</string>
 +<string name="Shopkeeper_SellPrompt">I have stuff to sell</string>
 +<string name="Shopkeeper_BuyPrompt">Let see your inventory</string>
 +<string name="Shopkeeper_title">Shop</string>
 +</code>
 +
 +===== Lua Scripts =====
 +This entity is implemented in Java, no Lua script exists
 +
 +===== Usage in Code =====
 +  * Shop painter creates Shopkeeper in shops: [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/levels/painters/ShopPainter.java#L66|ShopPainter.java#L66]]
 +  * Registered in MobFactory: [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/nyrds/pixeldungeon/mobs/common/MobFactory.java#L262|MobFactory.java#L262]]
 +  * Used in WndDontLikeAds: [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/windows/WndDontLikeAds.java#L15|WndDontLikeAds.java#L15]]
 +  * TownShopLevel creates TownShopkeeper variant: [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/nyrds/pixeldungeon/levels/TownShopLevel.java#L94|TownShopLevel.java#L94]]
 +
 +===== Related mr Entities =====
 +  * [[mr:npc|NPC]]
 +  * [[mr:imp_shopkeeper_mob|Imp Shopkeeper (Mob)]]
 +  * [[mr:azuterron_npc|Azuterron NPC]]