hobgoblin
Version:
A framework for writing roguelike games in JavaScript, implementing ROT.js
159 lines (151 loc) • 4.21 kB
JavaScript
Game.EntityRepository = new Game.Repository('entities', Game.Entity);
Game.PlayerTemplate = {
name: 'human (you)',
type: 'player',
character: '@',
foreground: 'white',
maxHp: 40,
attackValue: 10,
sightRadius: 6,
inventorySlots: 22,
mixins: [
Game.EntityMixins.Sight,
Game.EntityMixins.PlayerActor,
Game.EntityMixins.Destructible,
Game.EntityMixins.Equipper,
Game.EntityMixins.Attacker,
Game.EntityMixins.FoodConsumer,
Game.EntityMixins.InventoryHolder,
Game.EntityMixins.MessageRecipient,
Game.EntityMixins.PlayerStatGainer,
Game.EntityMixins.Thrower,
Game.EntityMixins.ExperienceGainer
]
};
Game.EntityRepository.define('fungus', {
name: 'fungus',
type: 'creature',
character: 'F',
foreground: 'green',
maxHp: 10,
speed: 250,
mixins: [
Game.EntityMixins.FungusActor,
Game.EntityMixins.Destructible,
Game.EntityMixins.ExperienceGainer,
Game.EntityMixins.RandomStatGainer
]
});
Game.EntityRepository.define('bat', {
name: 'bat',
type: 'creature',
character: 'B',
foreground: 'white',
maxHp: 5,
attackValue: 4,
speed: 2000,
mixins: [
Game.EntityMixins.AIActor,
Game.EntityMixins.Attacker,
Game.EntityMixins.CorpseDropper,
Game.EntityMixins.Destructible,
Game.EntityMixins.ExperienceGainer,
Game.EntityMixins.RandomStatGainer
]
});
Game.EntityRepository.define('newt', {
name: 'newt',
type: 'creature',
character: ':',
foreground: 'yellow',
maxHp: 3,
attackValue: 2,
mixins: [
Game.EntityMixins.AIActor,
Game.EntityMixins.Attacker,
Game.EntityMixins.CorpseDropper,
Game.EntityMixins.Destructible,
Game.EntityMixins.ExperienceGainer,
Game.EntityMixins.RandomStatGainer
]
});
Game.EntityRepository.define('kobold', {
name: 'kobold',
type: 'monster',
character: 'k',
foreground: 'white',
maxHp: 6,
attackValue: 4,
sightRadius: 5,
ai: ['hunt', 'wander'],
mixins: [
Game.EntityMixins.AIActor,
Game.EntityMixins.Sight,
Game.EntityMixins.Equipper,
Game.EntityMixins.Attacker,
Game.EntityMixins.Destructible,
Game.EntityMixins.CorpseDropper,
Game.EntityMixins.ExperienceGainer,
Game.EntityMixins.RandomStatGainer
]
});
Game.EntityRepository.define('goblin', {
name: 'goblin',
type: 'monster',
character: 'g',
foreground: 'limegreen',
maxHp: 10,
attackValue: 6,
sightRadius: 8,
ai: ['hunt', 'wander'],
mixins: [
Game.EntityMixins.AIActor,
Game.EntityMixins.Sight,
Game.EntityMixins.Equipper,
Game.EntityMixins.Attacker,
Game.EntityMixins.Destructible,
Game.EntityMixins.CorpseDropper,
Game.EntityMixins.ExperienceGainer,
Game.EntityMixins.RandomStatGainer
]
});
Game.EntityRepository.define('giant zombie', {
name: 'giant zombie',
type: 'monster',
character: 'Z',
foreground: 'teal',
maxHp: 30,
attackValue: 8,
defenseValue: 5,
level: 5,
sightRadius: 6,
mixins: [
Game.EntityMixins.GiantZombieActor,
Game.EntityMixins.Sight,
Game.EntityMixins.Attacker,
Game.EntityMixins.Destructible,
Game.EntityMixins.CorpseDropper,
Game.EntityMixins.ExperienceGainer
]
}, {
disableRandomCreation: true
});
Game.EntityRepository.define('slime', {
name: 'slime',
type: 'monster',
character: 's',
foreground: 'lightGreen',
maxHp: 10,
attackValue: 5,
sightRadius: 3,
ai: ['hunt', 'wander'],
mixins: [
Game.EntityMixins.AIActor,
Game.EntityMixins.Sight,
Game.EntityMixins.Attacker,
Game.EntityMixins.Destructible,
Game.EntityMixins.CorpseDropper,
Game.EntityMixins.ExperienceGainer,
Game.EntityMixins.RandomStatGainer
]
});