mirror of
https://github.com/TemujinCalidius/SurvivorCore.git
synced 2026-08-14 00:58:01 +00:00
Quests (#10): a Quests registry + server runtime — objectives (gather/craft/ kill/use × count, blank target = any) and rewards, autoStart + requires chains (completing a prerequisite auto-starts dependents), optional turn-in at a tagged QuestGiver (component + prompt). Rewards are never lost: a full inventory parks the quest as ready and the grant retries on inventory change. Quests menu tab (L) with per-objective progress bars; QuestLog JSON attribute replicates state; quest:started/progress/completed/blocked via Hooks + bus. Achievements: an always-on runtime for the existing registry, ported architecturally from TCE. A shared Progression layer translates bus events into auto-derived counters (gathers_reed, crafts_total, kills_husk, …) so a def is just { key, name, counter, threshold } — flat in code and no-code. Unlock-once + toast + Achievements tab (J) with progress bars. Toasts: themed top-right notification queue (Notify remote + Toasts.show). No-code: admin plugin gains Quests (single-objective + "+ Quest giver" drop) and Achievements (counter/threshold) editors; the engine loads both from SurvivorCoreContent. Demo: a 3-quest chain + 4 achievements + a giver post. Fixed: registerPanel now ADOPTS a template-scaffolded tab (hides the placeholder, builds into the authored frame) instead of silently no-opping — this replaces the Quests/Achievements "coming soon" placeholders. EventBridge parity: gather:*, craft:* and item:use now also cross the bus. Changed: rojo 7.6.1 → 7.7.0 (rokit pin; CI follows; gate verified). Docs: quests.md + achievements.md (new), content-authoring/admin-plugin/ extending/README updated, CHANGELOG Unreleased, site feature card. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
25 lines
728 B
Luau
25 lines
728 B
Luau
--!nonstrict
|
|
--[[
|
|
AchievementsConfig — tuning for the achievements system. SHARED. Defines the "Achievements"
|
|
Config section so games retune via `Config.override("Achievements", { ... })`. Read the merged
|
|
section with AchievementsConfig.get().
|
|
]]
|
|
|
|
local Config = require(script.Parent.Parent.foundation.Config)
|
|
|
|
local AchievementsConfig = {}
|
|
|
|
AchievementsConfig.SECTION = "Achievements"
|
|
|
|
AchievementsConfig.DEFAULTS = {
|
|
Toasts = true, -- show a toast notification when an achievement unlocks
|
|
}
|
|
|
|
Config.defineSection(AchievementsConfig.SECTION, AchievementsConfig.DEFAULTS)
|
|
|
|
function AchievementsConfig.get(): any
|
|
return Config.get(AchievementsConfig.SECTION) or AchievementsConfig.DEFAULTS
|
|
end
|
|
|
|
return AchievementsConfig
|