Кусок кода из моего проекта!
function scr_monster_database(_monster_id) {
if (!variable_global_exists("monster_db")) {
global.monster_db = {
"imp_twitch": {
// ИДЕНТИФИКАТОР: к какой группе относится моб, какая раса и какой тир (1, 2, 3)
view_mob: { group: "Underworld", race: "Imp", tier: 1 }
// ИМЯ МОБА: считывается интерфейсом и дебаг-выводом над головой
name_mob: "Бес-прислужник",
// БАЗОВЫЕ РОЛЕВЫЕ ХАРДКОРНЫЕ РЕСУРСЫ
hp: 40, // Здоровье моба (его 40 HP)
max_mana: 50, // Максимум маны (хватит ровно на 3 дальних каста по 10 маны)
mana: 50, // Текущая стартовая мана
max_sta: 30, // Максимум стамины для замахов/ударов ближнего боя
sta: 30, // Текущая стартовая стамина
mana_cost_ranged: 8, // Сколько маны сжирает ОДИН дальний выстрел фаерболом
sta_cost_melee: 4, // Сколько стамины сжирает ОДИН физ. удар в упоре
mana_cost_buff: 15, // Сколько маны сжирает активация тактического баффа
// БАЗОВЫЙ ФИЗИЧЕСКИЙ УРОН
dmg: 6, // Обычный урон (при касте фаербола или ударе когтями)
dmg_crit: 12, // Критический урон моба при совпадении шанса
//️ БРОНЯ И РЕЗИСТЫ: 0.20 = режет 20% входящего урона магии
prt: 2, // Плоская защита (вычитается из физ. урона меча ГГ)
resist: { phys: 0, magic: 0.20 },
//ШАНСЫ И ДИНАМИКА ПЕРЕМЕЩЕНИЯ
crit_chance: 15, // Критический шанс моба в процентах
move_spd: 2, // Скорость бега по mp_grid сетке в погоне за ГГ
// ТАКТИКА ДАЛЬНЕГО БОЯ (Каст фаерболов / ледяных стрел / лазеров)
attk_skill: "ranged", // Роль моба со старта: "ranged" — маг, "norm" — чистый ближник
atk_dist: 90, // Дистанция каста магии (моб стопится далеко от игрока)
atk_frame: 4, // Кадр анимации, на котором физически спавнится снаряд в ГГ
projectile: spr_fireball, // Анимированный спрайт
bal_frame: 6,
loop_projectile: true, // Граничный кадр: полет, конец — распад!
// ТАКТИКА БЛИЖНЕГО БОЯ (Кулаки / когти / зубы, если ГГ подошёл в упор или кончилась мана)
melee_dist: 30, // Дистанция ближнего боя (срабатывает, если ГГ влетел в упор к магу)
melee_frame: 5, // Кадр анимации, на котором проходит физ. урон когтями по ГГ
// ПАССИВНЫЕ БАФФЫ И СТАРТОВЫЕ ЭФФЕКТЫ
buff: ["demonic", "unholy_heal"], // Массивы баффов, висящих на мобе со старта
// ДЕБАФФ: вешается на ГГ с определённым шансом при физическом ударе или попадании снаряда
debuff: "burn", // "burn" - поджог, "chill" - обморожение, "poison" - яд и т.д.
// ВИЗУАЛЬНЫЙ ПАКЕТ: Спрайты во все 4 стороны изометрии (0-Вправо, 1-Вверх, 2-Влево, 3-Вниз)
sprites_idle: [spr_imp_twitch_idle_right, spr_imp_twitch_idle_up, spr_imp_twitch_idle_left, spr_imp_twitch_idle_down], // Покой
sprites_walk: [spr_imp_twitch_walk_right, spr_imp_twitch_walk_up, spr_imp_twitch_walk_left, spr_imp_twitch_walk_down], // Патруль
sprites_atk: [spr_imp_twitch_attk_right, spr_imp_twitch_attk_up, spr_imp_twitch_attk_left, spr_imp_twitch_attk_down], // Атака/Каст
sprites_hurt: [spr_imp_twitch_hurt_right, spr_imp_twitch_hurt_up, spr_imp_twitch_hurt_left, spr_imp_twitch_hurt_down], // Боль от крита ГГ
sprites_dead: [spr_imp_twitch_dead_right, spr_imp_twitch_dead_up, spr_imp_twitch_dead_left, spr_imp_twitch_dead_down], // Смерть
// АУДИО-ИМПАКТ: Ссылки на звуковые ассеты
snd_aggro: noone, // Рык при обнаружении ГГ
snd_hurt: noone, // Крик боли при получении крита ГГ
snd_death: noone, // Предсмертный хрип
snd_norm: noone, // Ленивые технические звуки в патруле
// ДИСТАНЦИЯ ОБНАРУЖЕНИЯ ГГ
aggro_dist: 150, // Радиус зрения моба, при котором он срывается в погоню
chase_dist_max: 200,
// НАГРАДА ЛУТА
loot_prok: "trash", // Строковый ярлык тира лута для скрипта ("trash", "warrior", "boss")
xp: 25, // Опыт, честно передаваемый функцию scr_player_add_xp
gold: 15 // Количество золота, которое насыпается в труп obj_corps при гибели
}
};
}
return global.monster_db[$ _monster_id];
}
Может кому понадобится для своих проектов, это шаблон базы данных для мобов в Game Maker! Удобно, не приходится городить десятки объектов достаточно одного родителя, и спавнера.


ПРИМЕР
