dungeon-sdk-drikkx
Version:
Shared types and entities for the Dungeon game
368 lines • 13.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DUNGEON_DEFAULTS = void 0;
const dungeon_types_1 = require("../types/dungeon.types");
const character_types_1 = require("../types/character.types");
// Fonction helper pour créer un ennemi basé sur un template de personnage
const createEnemy = (baseType, level = 1) => {
const base = character_types_1.CHARACTER_DEFAULTS[baseType];
return {
...base,
level,
id: undefined,
experience: 0
};
};
// Items de récompense communs
const commonRewards = [
{
id: '1',
name: 'Health Potion',
description: 'Restore 50 vitality',
type: 'consumable',
rarity: 'common',
level: 1,
effects: [{
trigger: 'onUse',
effect: {
type: 'hot',
stat: 'vitality',
value: 50,
duration: 1,
source: 'item'
}
}],
price: 100,
stackable: true,
maxStack: 10
},
{
id: '2',
name: 'Mana Potion',
description: 'Restaure une partie des points de mana',
type: 'consumable',
rarity: 'common',
level: 1,
effects: [{
trigger: 'onUse',
effect: {
type: 'hot',
stat: 'intelligence',
value: 50,
duration: 1,
source: 'item'
}
}],
price: 100,
stackable: true,
maxStack: 10
}
];
// Fonction helper pour créer un item d'équipement
const createEquipment = (id, name, type, rarity, effects) => ({
id,
name,
description: `${name} - ${rarity} ${type}`,
type,
rarity,
level: 1,
effects: effects.map(effect => ({
trigger: 'onEquip',
effect
})),
price: rarity === 'epic' ? 1000 : rarity === 'rare' ? 500 : 200,
stackable: false
});
exports.DUNGEON_DEFAULTS = {
// Donjon de la Grotte des Débutants
cave: {
id: '',
theme: dungeon_types_1.DungeonTheme.CAVE,
difficulty: dungeon_types_1.DungeonDifficulty.EASY,
status: dungeon_types_1.DungeonStatus.WAITING,
currentRoom: 0,
currentWave: 0,
totalRooms: 3,
totalWaves: 3,
party: [],
combatHistory: [],
completed: false,
createdAt: new Date(),
startedAt: new Date(),
createdById: '',
rooms: [
{
id: 'room1',
dungeonId: '',
type: dungeon_types_1.RoomType.COMBAT,
roomNumber: 1,
status: dungeon_types_1.RoomStatus.PENDING,
completed: false,
description: 'Une petite grotte faiblement éclairée',
createdAt: new Date(),
waves: [
{
id: 'wave1',
roomId: 'room1',
waveNumber: 1,
status: dungeon_types_1.WaveStatus.PENDING,
enemies: [createEnemy('skeleton', 1)],
rewards: commonRewards,
completed: false,
createdAt: new Date()
}
]
},
{
id: 'room2',
dungeonId: '',
type: dungeon_types_1.RoomType.COMBAT,
roomNumber: 2,
status: dungeon_types_1.RoomStatus.PENDING,
completed: false,
description: 'Une caverne avec des cristaux lumineux',
createdAt: new Date(),
waves: [
{
id: 'wave2',
roomId: 'room2',
waveNumber: 1,
status: dungeon_types_1.WaveStatus.PENDING,
enemies: [
createEnemy('skeleton', 1),
createEnemy('skeleton_archer', 1)
],
rewards: [
...commonRewards,
createEquipment('3', 'Crystal Shard', 'material', 'uncommon', [])
],
completed: false,
createdAt: new Date()
}
]
},
{
id: 'room3',
dungeonId: 'cave',
type: dungeon_types_1.RoomType.BOSS,
roomNumber: 3,
status: dungeon_types_1.RoomStatus.PENDING,
completed: false,
description: 'La chambre du boss, un grand espace avec un trône de pierre',
createdAt: new Date(),
waves: [
{
id: 'wave3',
roomId: 'room3',
waveNumber: 1,
status: dungeon_types_1.WaveStatus.PENDING,
enemies: [
createEnemy('skeleton', 1),
createEnemy('armored_skeleton', 1),
createEnemy('skeleton_archer', 1)
],
rewards: [
...commonRewards,
createEquipment('4', 'Knight\'s Shield', 'armor', 'rare', [{
type: 'buff',
stat: 'vitality',
value: 10,
duration: -1,
source: 'equipment'
}])
],
completed: false,
createdAt: new Date()
}
]
}
]
},
// Forêt Mystique
forest: {
id: '',
theme: dungeon_types_1.DungeonTheme.FOREST,
difficulty: dungeon_types_1.DungeonDifficulty.MEDIUM,
status: dungeon_types_1.DungeonStatus.WAITING,
currentRoom: 0,
currentWave: 0,
totalRooms: 4,
totalWaves: 5,
party: [],
combatHistory: [],
completed: false,
createdAt: new Date(),
startedAt: new Date(),
createdById: '',
rooms: [
{
id: 'room1',
dungeonId: 'forest',
type: dungeon_types_1.RoomType.COMBAT,
roomNumber: 1,
status: dungeon_types_1.RoomStatus.PENDING,
completed: false,
description: 'Une clairière brumeuse',
createdAt: new Date(),
waves: [
{
id: 'wave1',
roomId: 'room1',
waveNumber: 1,
status: dungeon_types_1.WaveStatus.PENDING,
enemies: [
createEnemy('archer', 2),
createEnemy('archer', 2)
],
rewards: commonRewards,
completed: false,
createdAt: new Date()
}
]
},
{
id: 'room2',
dungeonId: 'forest',
type: dungeon_types_1.RoomType.COMBAT,
roomNumber: 2,
status: dungeon_types_1.RoomStatus.PENDING,
completed: false,
description: 'Un bosquet enchanté',
createdAt: new Date(),
waves: [
{
id: 'wave2',
roomId: 'room2',
waveNumber: 1,
status: dungeon_types_1.WaveStatus.PENDING,
enemies: [
createEnemy('priest', 2),
createEnemy('swordsman', 2)
],
rewards: commonRewards,
completed: false,
createdAt: new Date()
},
{
id: 'wave3',
roomId: 'room2',
waveNumber: 2,
status: dungeon_types_1.WaveStatus.PENDING,
enemies: [
createEnemy('archer', 2),
createEnemy('priest', 2)
],
rewards: [
...commonRewards,
createEquipment('5', 'Enchanted Bow', 'weapon', 'rare', [{
type: 'buff',
stat: 'strength',
value: 5,
duration: -1,
source: 'equipment'
}])
],
completed: false,
createdAt: new Date()
}
]
},
{
id: 'room3',
dungeonId: 'forest',
type: dungeon_types_1.RoomType.ELITE,
roomNumber: 3,
status: dungeon_types_1.RoomStatus.PENDING,
completed: false,
description: 'Le sanctuaire des gardiens',
createdAt: new Date(),
waves: [
{
id: 'wave4',
roomId: 'room3',
waveNumber: 1,
status: dungeon_types_1.WaveStatus.PENDING,
enemies: [
createEnemy('knight', 3),
createEnemy('priest', 3)
],
rewards: [
...commonRewards,
createEquipment('6', 'Guardian\'s Amulet', 'armor', 'rare', [
{
type: 'buff',
stat: 'strength',
value: 3,
duration: -1,
source: 'equipment'
},
{
type: 'buff',
stat: 'agility',
value: 3,
duration: -1,
source: 'equipment'
},
{
type: 'buff',
stat: 'intelligence',
value: 3,
duration: -1,
source: 'equipment'
}
])
],
completed: false,
createdAt: new Date()
}
]
},
{
id: 'room4',
dungeonId: 'forest',
type: dungeon_types_1.RoomType.BOSS,
roomNumber: 4,
status: dungeon_types_1.RoomStatus.PENDING,
completed: false,
description: 'L\'arbre ancestral',
createdAt: new Date(),
waves: [
{
id: 'wave5',
roomId: 'room4',
waveNumber: 1,
status: dungeon_types_1.WaveStatus.PENDING,
enemies: [
createEnemy('knight', 4),
createEnemy('priest', 4),
createEnemy('archer', 4)
],
rewards: [
...commonRewards,
createEquipment('7', 'Ancient Tree Core', 'material', 'epic', []),
createEquipment('8', 'Forest Guardian\'s Blade', 'weapon', 'epic', [
{
type: 'buff',
stat: 'strength',
value: 10,
duration: -1,
source: 'equipment'
},
{
type: 'buff',
stat: 'agility',
value: 5,
duration: -1,
source: 'equipment'
}
])
],
completed: false,
createdAt: new Date()
}
]
}
]
}
};
//# sourceMappingURL=dungeon.defaults.js.map