Commit Graph
105 Commits
Author SHA1 Message Date
Samuel Lison 7877e88f3a Merge pull request #80 from TemujinCalidius/dev
release: v0.7.4 → main
v0.7.4
2026-07-06 15:40:56 +10:00
Samuel Lison ea9baf62e8 Merge pull request #79 from TemujinCalidius/release/v0.7.4
chore(release): v0.7.4
2026-07-06 15:40:05 +10:00
Samuel LisonandClaude Opus 4.8 51426d6e3a chore(release): v0.7.4
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 15:39:19 +10:00
Samuel Lison f5d8cdf968 Merge pull request #78 from TemujinCalidius/fix/beacon-latest-bag
fix: beacon follows the owner's newest bag
2026-07-06 15:39:15 +10:00
Samuel LisonandClaude Opus 4.8 44c0f8e25c fix: beacon follows the owner's newest bag; older bags never clear it
Dying again mid corpse-run drops a second bag (old + new coexist in the world,
each on its own 5-minute timer) and re-points the owner's beacon at the new
one. Previously the OLDER bag's later despawn/looting fired the unscoped
beacon-clear and wiped the beam pointing at the newer bag. LootBags now tracks
each owner's latest bag and only its destruction clears the beacon.

docs/loot-bags.md: documented the multi-bag + beacon-follows-newest behavior.

Live-verified: two coexisting bags, beacon on the newest; looting the OLD bag
left the beacon untouched; looting the NEW bag cleared it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 15:38:26 +10:00
Samuel Lison f6a26ddd30 Merge pull request #76 from TemujinCalidius/main
sync: v0.7.3 → dev
2026-07-06 15:34:14 +10:00
Samuel Lison aafa144a03 Merge pull request #75 from TemujinCalidius/dev
release: v0.7.3 → main
v0.7.3
2026-07-06 15:33:32 +10:00
Samuel Lison f6edd14214 Merge pull request #74 from TemujinCalidius/release/v0.7.3
chore(release): v0.7.3
2026-07-06 15:32:41 +10:00
Samuel LisonandClaude Opus 4.8 9ccd667e5b chore(release): v0.7.3
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 15:31:54 +10:00
Samuel Lison 771534a544 Merge pull request #73 from TemujinCalidius/fix/lootbag-streaming
fix: loot bag + beacon vanished on respawn (StreamingEnabled)
2026-07-06 15:31:50 +10:00
Samuel LisonandClaude Opus 4.8 ee77ca9816 fix: loot bag + beacon vanished on respawn under StreamingEnabled
Root cause: with StreamingEnabled (the new-place default), respawning away
from the death spot let Roblox evict the bag from the owner's client — the
bag looked deleted, and the local Destroying event fired, permanently killing
the beacon (server bag was fine all along).

- The bag is now a Model set PersistentPerPlayer for its owner
  (AddPersistentPlayer) — it never streams out of the owner's view.
- The beacon is position-driven plain data: no Instance in the remote, so no
  replication race (the 0.5s delay hack is gone) and no streaming fragility.
- The beam clears on an explicit server nil-fire when the bag is truly
  emptied/expired (plus a lifetime fallback), not on replica Destroying.

Live-verified (fresh bytecode confirmed via bag ClassName): beacon appears
instantly, survives respawn, bag stays visible to the owner, loot restores
everything, beam clears on empty.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 15:31:01 +10:00
Samuel Lison 1b3eea714a Merge pull request #71 from TemujinCalidius/main
sync: v0.7.2 → dev
2026-07-06 14:59:12 +10:00
Samuel Lison e6ae4f4800 Merge pull request #70 from TemujinCalidius/dev
release: v0.7.2 → main
v0.7.2
2026-07-06 14:58:29 +10:00
Samuel Lison 1e2c6a43ac Merge pull request #69 from TemujinCalidius/release/v0.7.2
chore(release): v0.7.2
2026-07-06 14:57:36 +10:00
Samuel LisonandClaude Opus 4.8 52d9aea26b chore(release): v0.7.2
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 14:56:50 +10:00
Samuel Lison 23e07ef6fb Merge pull request #68 from TemujinCalidius/fix/lootbag-beacon-dead-loot
fix: loot-bag owner beacon race + looting while dead
2026-07-06 14:56:47 +10:00
Samuel LisonandClaude Opus 4.8 78f99a0667 fix: loot-bag owner beacon race + looting while dead
- Beacon: LootBagDropped fired the same frame the bag was created, so the
  Instance reference arrived as nil on the client (not yet replicated) and the
  owner beacon silently never appeared. The fire is now delayed 0.5s.
- Dead looting: collect() never verified the collector was alive, so a corpse
  lying next to its own bag could scoop everything back before respawning.
  The server now rejects dead collectors (isAlive gate, Harvesting pattern).

Live verification note: the running Studio session executed stale bytecode
(old collect granted loot to a dead player even though the new source was
synced) — verified source-in-place; behavior verification needs a Studio
restart, which CI/release artifacts are unaffected by.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 14:55:55 +10:00
Samuel Lison 015dc60a8e Merge pull request #66 from TemujinCalidius/main
sync: v0.7.1 → dev
2026-07-06 14:39:29 +10:00
Samuel Lison 2aae8d9db7 Merge pull request #65 from TemujinCalidius/dev
release: v0.7.1 → main
v0.7.1
2026-07-06 14:38:46 +10:00
Samuel Lison 92a8773239 Merge pull request #64 from TemujinCalidius/release/v0.7.1
chore(release): v0.7.1
2026-07-06 14:37:54 +10:00
Samuel LisonandClaude Opus 4.8 75f3a009db chore(release): v0.7.1
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 14:37:07 +10:00
Samuel Lison dae3face26 Merge pull request #63 from TemujinCalidius/fix/ghost-tools-spawn-safety
fix: ghost tools from unowned hotbar pins + demo spawn safety
2026-07-06 14:37:03 +10:00
Samuel LisonandClaude Opus 4.8 96dc0799ad fix: ghost tools from unowned hotbar pins + inert-pin dim + demo spawn safety
- ToolEquip: possession gate — a pin is only a pointer; never equip an item
  the player doesn't carry (a stale/seeded pin without a backing stack could
  conjure a usable ghost Tool).
- Hotbar UI: dim a pinned icon to 0.45 (the Crafting-tab convention) when the
  player owns none of the item, so an inert pin reads as inert.
- Demo: husks spawn beyond aggro+wander reach of the spawn point — no more
  farming fresh players before they pick up a weapon.

Verified live in Studio: a war_bow pin with zero carried refuses to equip and
renders dimmed; owned pins equip normally at full opacity.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 14:36:12 +10:00
Samuel Lison 5ccdf19849 Merge pull request #62 from TemujinCalidius/main
sync: v0.7.0 release → dev
2026-07-06 14:09:50 +10:00
Samuel Lison 1c764aa16a Merge pull request #60 from TemujinCalidius/dev
release: v0.7.0 → main
v0.7.0
2026-07-06 14:08:27 +10:00
Samuel Lison 688b89d0a6 Merge pull request #59 from TemujinCalidius/release/v0.7.0
chore(release): v0.7.0
2026-07-06 14:07:29 +10:00
Samuel LisonandClaude Opus 4.8 c74e1c3509 chore(release): v0.7.0
Promote CHANGELOG Unreleased → 0.7.0 and bump wally.toml. (VERSION already
0.7.0 in src/init.luau.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 14:06:40 +10:00
Samuel Lison 82706c88d8 Merge pull request #58 from TemujinCalidius/feat/hunting-lootbags
feat: hunting/butchering + death loot bags (#13, #19)
2026-07-06 14:06:36 +10:00
Samuel LisonandClaude Opus 4.8 9951e09a3f feat: hunting/butchering + death loot bags (#13, #19)
Hunting & butchering (#13): mob defs gain flat carcass fields (carcassItem/Hp/
Tool/YieldMin/Max/Seconds); a slain mob leaves a butcherable CARCASS that is a
tagged Gatherable — the whole harvesting pipeline (tool gate, per-hit yields,
HP bar, gather:* hooks, progression counters) is reused as the butcher flow.
Carcass looks come from SurvivorCoreContent.Carcasses.<mobType>; reactions key
on "<mobType>_carcass"; fields editable in the admin Mobs editor. Gatherable
gains generic PromptText/PromptObject attributes.

Death loot bags (#19, TCE port): dying drops inventory AND worn equipment
(config-toggleable) into an anchored ground-clamped bag — IntValue contents,
instant-loot prompt for anyone, floating countdown, owner-only beacon, death
toast, LifetimeSeconds despawn. Pickup is loss-proof: equipment restores to
empty slots first (satchel re-grows capacity before stacks), the rest grants
up-to-fit and the remainder stays bagged. New player:died lifecycle → deaths
counters via Progression; lootbag:dropped/collected hooks; TCE respawn camera
fix. New Inventory APIs: getEquipment, clearAll (capacity-safe order), addUpTo,
restoreEquip.

Fixed: ToolEquip forces CanBeDropped=false on cloned creator templates.

Demo: stone_knife + raw_meat (risky raw: Hunger -25, Poison +8), boar carcass,
multi-objective hunt_boar quest, hunter/butcher/hard_way achievements. Docs:
mobs.md butchering section + loot-bags.md; CHANGELOG; site card copy.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 14:05:22 +10:00
Samuel Lison 991d1b0d80 Merge pull request #57 from TemujinCalidius/main
sync: v0.6.0 video docs → dev
2026-07-03 18:39:35 +10:00
Samuel Lison 83e7c293eb Merge pull request #56 from TemujinCalidius/docs/v0.6.0-video
docs: v0.6.0 demo video + site video grid refresh
2026-07-03 18:38:44 +10:00
Samuel LisonandClaude Opus 4.8 ce676fa4d5 docs: add v0.6.0 quests/achievements demo video + refresh site video grid
Wire the demo video (makertube uSGJ2MHEFjSSKxMiJBJ6Y5) into quests.md,
achievements.md, content-authoring.md and admin-plugin.md, and feature it in
the landing page's video grid (replacing the oldest embed; that video stays
linked from docs/inventory.md).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 18:37:58 +10:00
Samuel Lison 9937f8d641 Merge pull request #55 from TemujinCalidius/main
sync: v0.6.0 release → dev
2026-07-03 15:31:30 +10:00
Samuel Lison 6623e1c0bd Merge pull request #53 from TemujinCalidius/dev
release: v0.6.0 → main
v0.6.0
2026-07-03 15:29:47 +10:00
Samuel Lison f71685e8fd Merge pull request #52 from TemujinCalidius/release/v0.6.0
chore(release): v0.6.0
2026-07-03 15:28:58 +10:00
Samuel LisonandClaude Opus 4.8 a8f1114f81 fix(release): promote the section heading, not the header prose
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 15:28:12 +10:00
Samuel LisonandClaude Opus 4.8 4a4b54a723 chore(release): v0.6.0
Promote CHANGELOG Unreleased → 0.6.0 and bump wally.toml. (SurvivorCore.VERSION
is already 0.6.0 in src/init.luau.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 15:27:54 +10:00
Samuel Lison 8445d66dab Merge pull request #51 from TemujinCalidius/feat/quests-achievements
feat: quests + achievements — goals & progression (#10)
2026-07-03 15:27:28 +10:00
Samuel LisonandClaude Opus 4.8 9caa888369 feat: quests + achievements — the goals & progression release (#10)
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>
2026-07-03 15:26:19 +10:00
Samuel Lison 0892bf948e Merge pull request #50 from TemujinCalidius/main
sync: landing page polish → dev
2026-07-01 09:35:03 +10:00
Samuel Lison d8996930f4 Merge pull request #49 from TemujinCalidius/fix/landing-polish
docs(site): UI screenshot, Get Started overflow fix, Sponsor link
2026-07-01 09:33:35 +10:00
Samuel LisonandClaude Opus 4.8 9ae708ceeb docs(site): add UI showcase screenshot, fix Get Started overflow, add Sponsor link
- "See it in action": wire in the in-game UI screenshot (HUD + tabbed menu +
  hotbar), AI-relit with an atmospheric dusk backdrop so it suits the dark page.
- Fix the Get Started "Boot it" panel overflowing the viewport — the grid items
  now `min-width: 0` so the code block scrolls internally instead of pushing wide.
- Add a GitHub Sponsors link (nav button + footer).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 09:32:52 +10:00
Samuel Lison aadf659a76 Merge pull request #48 from TemujinCalidius/main
sync: landing page + README → dev
2026-07-01 09:21:37 +10:00
Samuel Lison a9bbedd9cd Merge pull request #47 from TemujinCalidius/feat/landing-page
docs: SurvivorCore landing page + README refresh
2026-07-01 09:19:34 +10:00
Samuel LisonandClaude Opus 4.8 e674772a45 docs: add SurvivorCore landing page + refresh README
A static landing page (site/) deployed to GitHub Pages via Actions:
- AI-generated brand: the survival-shield logo (favicon → 1024 + .ico) and an
  atmospheric campfire hero, on the docs/design-language palette.
- Sections: hero, value props, feature grid (stats, inventory/crafting, gathering,
  combat, mobs & AI, no-code admin), an "in action" showcase with the demo videos,
  and a get-started/install panel. Dark translucent theme, responsive, self-contained.
- README refreshed to v0.5.0 with the full feature set, badges, and the site link.

The "See it in action" screenshot (site/assets/img/ui-showcase.png) drops in next.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 09:18:20 +10:00
Samuel Lison 16608201bf Merge pull request #45 from TemujinCalidius/dev
release: v0.5.0 → main
v0.5.0
2026-06-25 20:22:52 +10:00
Samuel Lison 7c89683e4e Merge pull request #44 from TemujinCalidius/release/v0.5.0
chore(release): v0.5.0
2026-06-25 20:21:54 +10:00
Samuel LisonandClaude Opus 4.8 4d910a3b89 chore(release): v0.5.0
Promote CHANGELOG Unreleased → 0.5.0 and bump wally.toml. (SurvivorCore.VERSION
is already 0.5.0 in src/init.luau.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 20:21:08 +10:00
Samuel Lison 9a09d997a9 Merge pull request #43 from TemujinCalidius/feat/mob-combat
feat: mob & AI engine + combat (melee + ranged)
2026-06-25 20:20:02 +10:00
Samuel LisonandClaude Opus 4.8 2c68bcc6b0 feat: mob & AI engine + combat (melee + ranged) (#17, #12, #14)
Mob & AI engine (#17): a `Mob` component + a `Mobs` FSM runtime
(idle/wander/chase/attack/flee/leash/death), faction-driven profiles
(hostile/passive/neutral), Humanoid-based mobs so combat/health/death share one
path, per-mob-type reactions, and a `Mobs` Config section.

Combat (#12, #14): server-authoritative melee + ranged reusing the v0.4.0 swing
pipeline; the `combat:hit`/`combat:kill` kill-event schema designed once. Bows use
a TCE-style aim (hold RMB to aim with an over-the-shoulder camera + crosshair and
charge ring, hold LMB to draw, release to fire); the server simulates the gravity
arc and sends the path so the client flies a cosmetic arrow along the real curve.
Arrows are their own configurable ammo item (weight/damage/curve/range/speed).

No-code: admin plugin gains Mob, Weapon and Arrow editors (+ "Add to World" /
"Tool model" drops); the engine loads Weapons/Arrows/Mobs from SurvivorCoreContent.

Fix: scope the orphan hotbar-pin sweep to the removed/consumed item, so consuming
one item never clears an unrelated hotbar-pinned weapon.

Docs: combat.md + mobs.md (with demo video); CHANGELOG Unreleased entry.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 20:18:51 +10:00