User Tools

Site Tools


mr:spinner_mob

spinner_mob - Machine Readable Reference

Entity Kind

  • Entity Kind: Spinner
  • Used in JSON configs: mobsDesc/Spinner.json (if exists), spritesDesc/Spinner.json

Java Class

  • Full Path: com/watabou/pixeldungeon/actors/mobs/Spinner.java
  • Parent Class: Mob
  • AI States: Fleeing, Hunting

Java Class Content

package com.watabou.pixeldungeon.actors.mobs;
 
import com.nyrds.pixeldungeon.ai.Fleeing;
import com.nyrds.pixeldungeon.ai.Hunting;
import com.nyrds.pixeldungeon.ai.MobAi;
import com.watabou.pixeldungeon.actors.Char;
import com.watabou.pixeldungeon.actors.blobs.Blob;
import com.watabou.pixeldungeon.actors.blobs.Web;
import com.watabou.pixeldungeon.actors.buffs.Buff;
import com.watabou.pixeldungeon.actors.buffs.Poison;
import com.watabou.pixeldungeon.actors.buffs.Roots;
import com.watabou.pixeldungeon.actors.buffs.Terror;
import com.watabou.pixeldungeon.items.food.MysteryMeat;
import com.watabou.pixeldungeon.scenes.GameScene;
import com.watabou.utils.Random;
 
import org.jetbrains.annotations.NotNull;
 
public class Spinner extends Mob {
 
	public Spinner() {
		hp(ht(50));
		baseDefenseSkill = 14;
		baseAttackSkill  = 20;
		dmgMin = 12;
		dmgMax = 16;
		dr = 6;
 
		expForKill = 9;
		maxLvl = 16;
 
		loot(new MysteryMeat(), 0.125f);
 
		addResistance( Poison.class );
		addImmunity( Roots.class );
	}
 
	@Override
    public boolean act() {
		boolean result = super.act();
 
		if ((getState() instanceof Fleeing) && !hasBuff(Terror.class) && enemySeen && !getEnemy().hasBuff(Poison.class)) {
			setState(MobAi.getStateByClass(Hunting.class));
		}
		return result;
	}
 
	@Override
	public int attackProc(@NotNull Char enemy, int damage ) {
		if (Random.Int( 2 ) == 0) {
			Buff.affect( enemy, Poison.class,Random.Int( 7, 9 ) * Poison.durationFactor( enemy ) );
			setState(MobAi.getStateByClass(Fleeing.class));
		}
 
		return damage;
	}
 
	@Override
	public void move( int step ) {
		if (getState() instanceof Fleeing) {
			GameScene.add( Blob.seed( getPos(), Random.Int( 5, 7 ), Web.class ) );
		}
		super.move( step );
	}
 
}

Stats (from Java)

  • HP: 50
  • Base Defense Skill: 14
  • Base Attack Skill: 20
  • Damage: 12-16
  • Defense Rating: 6
  • EXP for Kill: 9
  • Max Level: 16

Resistances and Immunities

  • Resistance: Poison
  • Immunity: Roots

Drops

  • MysteryMeat (12.5% chance)

Behavior

  • Uses Fleeing AI state when poisoned enemy is present
  • On attack: 50% chance to poison enemy for 7-9 turns and enter fleeing state
  • When fleeing: leaves web blobs at position (5-7 units)

JSON Configuration

  • Sprite Configuration: Spinner.json
  • Sprite texture: spinner.png
  • Sprite dimensions: 16×16
  • Animations: idle, run, attack, die
  • Blood color: 0xFFBFE5B8 (light green)

String Resources

  • English: Spinner_Name = “cave spinner” (strings_all.xml#L1332)
  • Russian: Spinner_Name = “пещерный паук” (strings_all.xml#L2115)
  • Objective form (English): Spinner_Name_Objective = “cave spinner”
  • Objective form (Russian): Spinner_Name_Objective = “паука”

Lua Scripts

  • No Lua scripts found for this entity (implemented entirely in Java)
mr/spinner_mob.txt · Last modified: by 127.0.0.1