Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
9552745
Fix Nullex Voyd Data Anchor freeze and Callback Ping speed reset
Norl4 Oct 31, 2026
5d7ba19
Ignore local build output and Studio MCP config
Norl4 Oct 31, 2026
f8ed87d
Add Studio MCP bridge for background playtests
Norl4 Oct 31, 2026
f1b71ae
Skip chase theme layers that were never registered
Norl4 Oct 31, 2026
667e395
Pass the hit humanoid to character OnHit callbacks
Norl4 Oct 31, 2026
0d37078
Add Instalacion greybox map with horror lighting
Norl4 Nov 1, 2026
46a9386
Add skill-check generators with HUD counter and killer alerts
Norl4 Nov 1, 2026
323dd17
Add reactive impacts, terror edge pulse and round tips
Norl4 Nov 1, 2026
7145680
Add Studio regression battery and wait for respawned GUIs
Norl4 Nov 1, 2026
8c5bf2a
Give hit survivors a one-time escape burst and fix Resistance
Norl4 Nov 1, 2026
9274f2b
Expand Instalacion into a full research facility layout
Norl4 Nov 1, 2026
0ba9531
Add chase structures to the south yard and lengthen L walls
Norl4 Nov 1, 2026
9bbfe78
Dress Instalacion with custom materials, signs, pipes and puddles
Norl4 Nov 1, 2026
881dc62
Translate all player-facing text to Spanish
Norl4 Nov 1, 2026
a8b82bd
Light Instalacion with fog, lamp cones and lamps that die near the ki…
Norl4 Nov 1, 2026
530dc4d
Recreate custom materials from the map script and keep the UI transla…
Norl4 Nov 1, 2026
33a5c4b
Let rounds start solo in Studio and stop the terror edge showing in t…
Norl4 Nov 1, 2026
044fc4a
Darken Instalacion with cold tube lights, glossy lab floors and a scr…
Norl4 Nov 1, 2026
d90bfdf
Grow Instalacion into a fenced compound with watchtowers, forest and …
Norl4 Nov 1, 2026
95508c1
Add Instalacion experiment capsules, red reactor core, catwalk with t…
Norl4 Nov 1, 2026
c032a32
Wait for the killer intro to finish before the battery slashes the re…
Norl4 Nov 1, 2026
41bdd8a
Switch the UI to the bloodless engraved textures
Norl4 Nov 3, 2026
758bb47
Animate the side bar and menus with breathing icons, hand-inked rippl…
Norl4 Nov 3, 2026
6a10dc4
Animate the round HUD with ink: staggered ability entrance, ink-disc …
Norl4 Nov 3, 2026
87bcfef
Animate the health, stamina and generator HUD with ink: ivory damage …
Norl4 Nov 3, 2026
583f91f
Limit health pops and ripples to one every 0.3 s so tick damage does …
Norl4 Nov 3, 2026
11a06f1
Replace the menu size tweens with an ink veil transition, draw ripple…
Norl4 Nov 3, 2026
07fc78f
Add the Papelera map skeleton with spawns, lighting and a checker, pl…
Norl4 Nov 7, 2026
b5402b6
Shape the Papelera terrain: three terraces, an S-shaped canal ravine …
Norl4 Nov 7, 2026
fd06c04
Block out the Papelera zones with loops, eight generator spots, doors…
Norl4 Nov 7, 2026
ee69bee
Light the Papelera with one colour per zone and the chimney landmark
Norl4 Nov 7, 2026
01a83b2
Bring the Papelera to life: moving machines, smoke, the Floracion rea…
Norl4 Nov 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@ commitdraft.txt

aftman.toml

*.DS_Store
*.DS_Store
build/
.mcp.json
7 changes: 7 additions & 0 deletions default.project.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,13 @@
"SoundService": {
"$className": "SoundService",
"$path": "src/SoundService"
},

"Lighting": {
"$className": "Lighting",
"$properties": {
"Technology": "Future"
}
}
}
}
2 changes: 1 addition & 1 deletion src/ReplicatedFirst/Loading.client.luau
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ local function InitScripts(module: ModuleScript)

while not ModuleCode.Loaded do
if ModuleCode.CurrentlyInitting then
CurrentlyInitting.Text = "Initializing "..ModuleCode.CurrentlyInitting.."..."
CurrentlyInitting.Text = "Iniciando "..ModuleCode.CurrentlyInitting.."..."
else
CurrentlyInitting.Text = ""
end
Expand Down
5 changes: 3 additions & 2 deletions src/ReplicatedStorage/Assets/Achievements.luau
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@ return {
LayoutOrder = 1,
Achievements = {
Welcome = {
Title = "Welcome To [INSERT GAME NAME]",
Description = "Play [INSERT GAME NAME] for the first time",
Title = "Bienvenido a Anomalis",
Icon = "rbxassetid://108807232649489",
Description = "Juega a Anomalis por primera vez",
RewardType = "Currency",
Amount = 300,
LayoutOrder = 1,
Expand Down
3 changes: 2 additions & 1 deletion src/ReplicatedStorage/Assets/Emotes/TPose.luau
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ local Emote = require(ReplicatedStorage.Classes.Emote)
return Emote.New({
Config = {
Name = "T-Pose",
Quote = "be not afraid.",
Render = "rbxassetid://134166673644911",
Quote = "no temas.",
},
AnimationIds = "rbxassetid://87300475457340",
SoundIds = "rbxassetid://1839549655",
Expand Down
1 change: 1 addition & 0 deletions src/ReplicatedStorage/Assets/Items/Cola.luau
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ local PlayerSpeedManager = RunService:IsServer() and require(game:GetService("Se

return Item.New({
Name = "Bloxy Cola",
Icon = "rbxassetid://76600054012804",
ToolPrefab = script:FindFirstChild("Cola"),

Behaviour = function(self: Types.Item)
Expand Down
1 change: 1 addition & 0 deletions src/ReplicatedStorage/Assets/Items/Medkit.luau
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ local PlayerSpeedManager = RunService:IsServer() and require(game:GetService("Se

return Item.New({
Name = "Medkit",
Icon = "rbxassetid://113163533935584",
ToolPrefab = script:FindFirstChild("Medkit"),

Behaviour = function(self: Types.Item)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ return function(Parent: ScreenGui, plrNames: {string})
end

if #plrNames > 1 then
Group.Container.Label.Text = "The killers are..."
Group.Container.Label.Text = "Los asesinos son..."
end

task.wait(1)
Expand Down
65 changes: 33 additions & 32 deletions src/ReplicatedStorage/Characters/Killers/NullexVoyd.luau
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,11 @@ local function DataAnchorBehaviour(self: Types.Ability)
self.Setup = false
else
self.Setup = true


PlayerSpeedManager.AddSpeedFactor(self.Owner, self.Name, 0)
self:AddConnection(task.delay(2.1, function()
PlayerSpeedManager.RemoveSpeedFactor(self.Owner, self.Name)
end))
self:AddConnection(task.delay(0.75, function()
self.DevicePosition = self.OwnerProperties.Character.HumanoidRootPart.Position - Vector3.new(0, 3 * self.OwnerProperties.Character:GetScale(), 0)
Sounds.PlaySound(self.PlaceSound, {
Expand All @@ -56,13 +60,7 @@ local function DataAnchorBehaviour(self: Types.Ability)
else
self.Cooldown = self.SecondCooldown
self.Setup = true

self.OwnerProperties.SpeedManager:AddSpeedFactor(self.Name, 0)

self:PlayUseAnimation()
self:AddConnection(task.delay((self.UseAnimationTrack.Length or 1.7) + 0.4, function()
self.OwnerProperties.SpeedManager:RemoveSpeedFactor(self.Name)
end))
end
end
end
Expand All @@ -73,7 +71,7 @@ local function CallbackPingBehaviour(self: Types.Ability)
self.OwnerProperties.Character:SetAttribute("PreventSlash", true)

self:AddConnection(task.delay(self.Duration, function()
PlayerSpeedManager.RemoveSpeedFactor(self.owner, self.Name)
PlayerSpeedManager.RemoveSpeedFactor(self.Owner, self.Name)
self.OwnerProperties.Character:SetAttribute("PreventSlash", false)
end))

Expand Down Expand Up @@ -156,12 +154,12 @@ end
local NullexVoyd: Types.Killer = Character.CreateKiller({
Config = {
Name = "Nullex Voyd",
Quote = "Order was the first lie.",
Render = "rbxassetid://139883756028491",
Quote = "El orden fue la primera mentira.",
Render = "rbxassetid://100323356058904",
Price = 1308,

Origin = {
TooltipText = "Originates from Project Terminus!",
TooltipText = "¡Viene del Proyecto Terminus!",
Icon = "rbxasset://textures/ui/GuiImagePlaceholder.png",
},

Expand All @@ -178,6 +176,7 @@ local NullexVoyd: Types.Killer = Character.CreateKiller({

DataAnchor = Ability.New({
Name = "Data Anchor",
RenderImage = "rbxassetid://82042307155133",

FirstCooldown = 3,
SecondCooldown = 20,
Expand All @@ -199,6 +198,7 @@ local NullexVoyd: Types.Killer = Character.CreateKiller({

CallbackPing = Ability.New({
Name = "Callback Ping",
RenderImage = "rbxassetid://123063919281024",
Duration = 3,
InputName = "ThirdAbility",
Cooldown = 32.5,
Expand All @@ -208,6 +208,7 @@ local NullexVoyd: Types.Killer = Character.CreateKiller({

Overcharge = Ability.New({
Name = "Overcharge",
RenderImage = "rbxassetid://114480081841217",
Cooldown = 45,
InputName = "FourthAbility",
SpeedDuration = 3.2,
Expand All @@ -226,7 +227,7 @@ local NullexVoydNameLabel = "<font color=\"rgb(180, 180, 180)\">"..NullexVoyd.Co
NullexVoyd.Config.Description = {
{
Type = "Separator",
Text = "GENERAL INFO",
Text = "INFORMACIÓN GENERAL",
},
{
Type = "Header",
Expand All @@ -238,48 +239,48 @@ NullexVoyd.Config.Description = {
},
{
Type = "Text",
Text = "Once a law enforcement automaton built to enforce order, now a void-born executioner of silence. "..
NullexVoydNameLabel.." hunts those who trespass forbidden truths, warping space to pursue them through shadows. "..
"With a surge of corrupted energy, he blinks across distance, accelerates beyond human reach, and rends with anomalous force. "..
"None can hide — his gaze pierces walls, his touch unravels existence itself.",
Text = "Antes era un autómata policial creado para imponer el orden; ahora es un verdugo del silencio nacido del vacío. "..
NullexVoydNameLabel.." caza a quienes cruzan verdades prohibidas y deforma el espacio para perseguirlos entre las sombras. "..
"Con una descarga de energía corrupta salta distancias, acelera más allá de lo humano y desgarra con fuerza anómala. "..
"Nadie puede esconderse: su mirada atraviesa paredes y su toque deshace la existencia misma.",
},
{
Type = "Header",
Text = "STATS",
Text = "ESTADÍSTICAS",
},
{
Type = "Text",
Text = {
"Difficulty: ★★★☆☆",
"Dificultad: ★★★☆☆",
-- "Difficulty: 6 7",
"Health: "..tostring(NullexVoyd.GameplayConfig.Health),
"Base Speed: "..tostring(NullexVoyd.GameplayConfig.BaseSpeed),
"Sprint Speed: "..tostring(math.round(NullexVoyd.GameplayConfig.BaseSpeed * NullexVoyd.GameplayConfig.SprintSpeedMultiplier * 10) / 10),
"Max Stamina: "..tostring(NullexVoyd.GameplayConfig.StaminaProperties.MaxStamina),
"Stamina Loss per second: "..tostring(NullexVoyd.GameplayConfig.StaminaProperties.StaminaDrain),
"Stamina Gain per second: "..tostring(NullexVoyd.GameplayConfig.StaminaProperties.StaminaGain),
"Vida: "..tostring(NullexVoyd.GameplayConfig.Health),
"Velocidad base: "..tostring(NullexVoyd.GameplayConfig.BaseSpeed),
"Velocidad al correr: "..tostring(math.round(NullexVoyd.GameplayConfig.BaseSpeed * NullexVoyd.GameplayConfig.SprintSpeedMultiplier * 10) / 10),
"Aguante máximo: "..tostring(NullexVoyd.GameplayConfig.StaminaProperties.MaxStamina),
"Aguante perdido por segundo: "..tostring(NullexVoyd.GameplayConfig.StaminaProperties.StaminaDrain),
"Aguante recuperado por segundo: "..tostring(NullexVoyd.GameplayConfig.StaminaProperties.StaminaGain),
},
},
{
Type = "Separator",
Text = "ABILITIES",
Text = "HABILIDADES",
},
{
Type = "Header",
Text = NullexVoyd.GameplayConfig.Abilities.Slash.Name:upper(),
},
{
Type = "Text",
Text = NullexVoydNameLabel.." performs a basic slash, dealing "..tostring(NullexVoyd.GameplayConfig.Abilities.Slash.Damage).." damage.",
Image = "rbxassetid://9759886280",
Text = NullexVoydNameLabel.." lanza un tajo básico que hace "..tostring(NullexVoyd.GameplayConfig.Abilities.Slash.Damage).." de daño.",
Image = "rbxassetid://82563286387450",
},
{
Type = "Header",
Text = NullexVoyd.GameplayConfig.Abilities.CallbackPing.Name:upper(),
},
{
Type = "Text",
Text = NullexVoydNameLabel.." slows down for "..tostring(NullexVoyd.GameplayConfig.Abilities.CallbackPing.Duration).." seconds, revealing to him the aura of every single visible & alive survivor in the match that doesn't have <b>Undetectable</b>.",
Text = NullexVoydNameLabel.." se ralentiza durante "..tostring(NullexVoyd.GameplayConfig.Abilities.CallbackPing.Duration).." segundos y ve el aura de cada superviviente vivo y visible de la partida que no tenga <b>Indetectable</b>.",
},
{
Type = "Header",
Expand All @@ -288,8 +289,8 @@ NullexVoyd.Config.Description = {
{
Type = "Text",
Text = {
NullexVoydNameLabel.." places a device on the floor, visible to everyone clearly but undestructible.",
"If this ability is used a second time, "..NullexVoydNameLabel.." will be teleported to this device instantly, destroying it in the process.",
NullexVoydNameLabel.." coloca un dispositivo en el suelo que todos ven con claridad y que no se puede destruir.",
"Si usa esta habilidad otra vez, "..NullexVoydNameLabel.." se teletransporta al instante al dispositivo y lo destruye.",
},
},
{
Expand All @@ -298,8 +299,8 @@ NullexVoyd.Config.Description = {
},
{
Type = "Text",
Text = NullexVoydNameLabel.." overloads his systems with electricity, giving him <b>Speed "..Utils.Math.IntToRoman(NullexVoyd.GameplayConfig.Abilities.Overcharge.SpeedLevel).."</b> for "..tostring(NullexVoyd.GameplayConfig.Abilities.Overcharge.SpeedDuration).." seconds. "..
"When the effect wears off, his systems will exhaust briefly, inflicting him with <b>Slowness "..Utils.Math.IntToRoman(NullexVoyd.GameplayConfig.Abilities.Overcharge.SlownessLevel).."</b> for "..tostring(NullexVoyd.GameplayConfig.Abilities.Overcharge.SlownessDuration).." seconds.",
Text = NullexVoydNameLabel.." sobrecarga sus sistemas con electricidad y gana <b>Velocidad "..Utils.Math.IntToRoman(NullexVoyd.GameplayConfig.Abilities.Overcharge.SpeedLevel).."</b> durante "..tostring(NullexVoyd.GameplayConfig.Abilities.Overcharge.SpeedDuration).." segundos. "..
"Cuando se acaba, sus sistemas se agotan un momento y sufre <b>Lentitud "..Utils.Math.IntToRoman(NullexVoyd.GameplayConfig.Abilities.Overcharge.SlownessLevel).."</b> durante "..tostring(NullexVoyd.GameplayConfig.Abilities.Overcharge.SlownessDuration).." segundos.",
},
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ end
return Character.CreateSkin("Survivor", "Commander", {
Config = {
Name = "Yourself",
Quote = "Hey, it's you!",
Quote = "¡Eh, si eres tú!",
Price = 99999999,

Origin = {},
Expand Down
Loading