Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
7d20389
nemesis commando
AzulineSkye Nov 1, 2025
b3d8345
stages
AzulineSkye Nov 1, 2025
5dd38b0
typhoon
AzulineSkye Nov 2, 2025
1094224
white items part 1
AzulineSkye Nov 2, 2025
95a1315
white items part 2
AzulineSkye Nov 3, 2025
20679b6
guarding amulet
AzulineSkye Nov 4, 2025
74509a6
ice tool multiplayer sync
AzulineSkye Nov 4, 2025
31d1323
networking? i sure hope it is
AzulineSkye Nov 4, 2025
978f3ef
more items yay
AzulineSkye Nov 4, 2025
3738b1c
items done
AzulineSkye Nov 7, 2025
833cb08
networking fixes
AzulineSkye Nov 7, 2025
73b3819
config base
AzulineSkye Nov 7, 2025
1c1adb2
Configurable Title Replacement (#99)
Xaidee Nov 9, 2025
df6e608
admonitor & exploder
AzulineSkye Nov 9, 2025
187fcb1
mimic
AzulineSkye Nov 9, 2025
dfe7c81
equipments
AzulineSkye Nov 9, 2025
029ba26
stage fix
AzulineSkye Nov 10, 2025
82270c9
exploder performance boost
AzulineSkye Nov 10, 2025
11aa912
poison elite
AzulineSkye Nov 10, 2025
aa437b4
empyrean wip 1
AzulineSkye Nov 11, 2025
640a09c
empyrean new beam visual prototype
AzulineSkye Nov 11, 2025
580a190
fixes
AzulineSkye Nov 11, 2025
0f07c9f
open sesame
AzulineSkye Nov 12, 2025
b63ee09
still cant get boss party registering to work
AzulineSkye Nov 16, 2025
683ffab
ok i actually have to do shit and not just play ac all day
AzulineSkye Nov 24, 2025
1aedbf4
yummy crashes!! (technician)
AzulineSkye Nov 29, 2025
096dfcc
MULE !!
AzulineSkye Nov 29, 2025
51076ef
networking? i sure oh wait i did this joke already
AzulineSkye Nov 30, 2025
431d397
artifacts
AzulineSkye Nov 30, 2025
e11bd35
a special something...
AzulineSkye Nov 30, 2025
3b2828a
special somethings special sprite!!!
AzulineSkye Dec 1, 2025
823b7e1
quick tweaks
AzulineSkye Dec 1, 2025
d89d91e
cryptic source technician turret fix
AzulineSkye Dec 1, 2025
c15bd01
who added all these stupid bugs to my branch???
AzulineSkye Dec 1, 2025
4e28f6f
mule net visual fix
AzulineSkye Dec 2, 2025
5c5ef8b
eclipse gummies!!
AzulineSkye Dec 5, 2025
448389d
hunters sigil fix
AzulineSkye Dec 7, 2025
7c665db
tweaks and fixes
AzulineSkye Dec 7, 2025
9ad665d
nemesis spawn portal
AzulineSkye Dec 8, 2025
3376363
new sparks
AzulineSkye Dec 10, 2025
6041fc9
DEFLECTED!
AzulineSkye Dec 15, 2025
99e440a
artifact fixes + more wip nemmerc shit
AzulineSkye Dec 18, 2025
5adaf67
meow
AzulineSkye Dec 21, 2025
af67369
nemmerc blast + festive golem wip
AzulineSkye Dec 24, 2025
18b4c96
golem, bugs, merc sounds, gummy log
AzulineSkye Dec 25, 2025
8d5ef7e
just realised chirrsmas wasnt working this whole time
AzulineSkye Dec 25, 2025
e9467af
🌳
AzulineSkye Dec 26, 2025
7104b02
bug fixes
AzulineSkye Dec 26, 2025
bb1624e
nemmerc stuff + some empyrean scaling changes
AzulineSkye Dec 26, 2025
c6a57be
fix
AzulineSkye Dec 26, 2025
c85368d
this is just like my japanese animes
AzulineSkye Dec 26, 2025
21f7bd7
this sounds like my animes too now
AzulineSkye Dec 26, 2025
cd51230
oortal winslow ..... the porta l sound ...
AzulineSkye Dec 26, 2025
a6ccd96
why the long face nemmerc ...
AzulineSkye Dec 27, 2025
2928af6
empyrean things
AzulineSkye Dec 27, 2025
907149d
wip
AzulineSkye Dec 27, 2025
77a982a
back to networking nemmerc
AzulineSkye Dec 27, 2025
aefed56
nemmerc networked
AzulineSkye Dec 27, 2025
8109229
some more networking
AzulineSkye Dec 28, 2025
06bdb92
special now inherits attack speed
AzulineSkye Dec 28, 2025
593826e
whoops
AzulineSkye Dec 28, 2025
0735428
gummy networking
AzulineSkye Dec 28, 2025
e12eec1
readme and changelog stuff
AzulineSkye Dec 28, 2025
cb574ef
cl updates
AzulineSkye Dec 28, 2025
d7d3e84
funnies
AzulineSkye Dec 28, 2025
a9a8ab7
introduction to the snow
AzulineSkye Dec 28, 2025
9bf545a
hotloading OFF!!
AzulineSkye Dec 28, 2025
4167487
ru translation
AzulineSkye Dec 29, 2025
bdab884
translation fixes
AzulineSkye Dec 29, 2025
c404685
Update russian.lua
AzulineSkye Dec 29, 2025
4ef3992
fml
AzulineSkye Dec 29, 2025
07fff4c
fml 2
AzulineSkye Dec 29, 2025
44119cb
translation improvements
AzulineSkye Dec 29, 2025
366a756
readme + nemmerc net tweaks
AzulineSkye Dec 29, 2025
8bdae10
more nemmerc fixes
AzulineSkye Dec 29, 2025
ff34537
final fix
AzulineSkye Dec 29, 2025
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
187 changes: 94 additions & 93 deletions Actors/admonitor.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,51 +4,48 @@
local SPRITE_PATH = path.combine(PATH, "Sprites/Actors/Admonitor")
local SOUND_PATH = path.combine(PATH, "Sounds/Actors/Admonitor")

local sprite_mask = Resources.sprite_load(NAMESPACE, "AdmonitorMask", path.combine(SPRITE_PATH, "mask.png"), 1, 11, 26)
local sprite_palette = Resources.sprite_load(NAMESPACE, "AdmonitorPalette", path.combine(SPRITE_PATH, "palette.png"))
local sprite_portrait = Resources.sprite_load(NAMESPACE, "AdmonitorPortrait", path.combine(SPRITE_PATH, "portrait.png"))
local sprite_spawn = Resources.sprite_load(NAMESPACE, "AdmonitorSpawn", path.combine(SPRITE_PATH, "spawn.png"), 15, 58, 39)
local sprite_idle = Resources.sprite_load(NAMESPACE, "AdmonitorIdle", path.combine(SPRITE_PATH, "idle.png"), 18, 30, 27)
local sprite_walk = Resources.sprite_load(NAMESPACE, "AdmonitorWalk", path.combine(SPRITE_PATH, "walk.png"), 8, 27, 31)
local sprite_jump = Resources.sprite_load(NAMESPACE, "AdmonitorJump", path.combine(SPRITE_PATH, "jump.png"), 1, 26, 33)
local sprite_jump_peak = Resources.sprite_load(NAMESPACE, "AdmonitorJumpPeak", path.combine(SPRITE_PATH, "jumpPeak.png"), 1, 26, 33)
local sprite_fall = Resources.sprite_load(NAMESPACE, "AdmonitorFall", path.combine(SPRITE_PATH, "fall.png"), 1, 26, 33)
local sprite_death = Resources.sprite_load(NAMESPACE, "AdmonitorDeath", path.combine(SPRITE_PATH, "death.png"), 14, 33, 53)
local sprite_shoot1 = Resources.sprite_load(NAMESPACE, "AdmonitorShoot1", path.combine(SPRITE_PATH, "shoot1.png"), 30, 53, 86)

gm.elite_generate_palettes(sprite_palette)

local sound_spawn = Resources.sfx_load(NAMESPACE, "AdmonitorSpawn", path.combine(SOUND_PATH, "spawn.ogg"))
local sound_shoot1a = Resources.sfx_load(NAMESPACE, "AdmonitorShoot1A", path.combine(SOUND_PATH, "shoot1_1.ogg"))
local sound_shoot1b = Resources.sfx_load(NAMESPACE, "AdmonitorShoot1B", path.combine(SOUND_PATH, "shoot1_2.ogg"))
local sound_death = Resources.sfx_load(NAMESPACE, "AdmonitorDeath", path.combine(SOUND_PATH, "death.ogg"))

local push = Buff.new(NAMESPACE, "AdmonitorPush")
local sprite_mask = Sprite.new("AdmonitorMask", path.combine(SPRITE_PATH, "mask.png"), 1, 11, 26)
local sprite_palette = Sprite.new("AdmonitorPalette", path.combine(SPRITE_PATH, "palette.png"))
local sprite_portrait = Sprite.new("AdmonitorPortrait", path.combine(SPRITE_PATH, "portrait.png"))
local sprite_spawn = Sprite.new("AdmonitorSpawn", path.combine(SPRITE_PATH, "spawn.png"), 15, 58, 39)
local sprite_idle = Sprite.new("AdmonitorIdle", path.combine(SPRITE_PATH, "idle.png"), 18, 30, 27, 0.8)
local sprite_walk = Sprite.new("AdmonitorWalk", path.combine(SPRITE_PATH, "walk.png"), 8, 27, 31)
local sprite_jump = Sprite.new("AdmonitorJump", path.combine(SPRITE_PATH, "jump.png"), 1, 26, 33)
local sprite_jump_peak = Sprite.new("AdmonitorJumpPeak", path.combine(SPRITE_PATH, "jumpPeak.png"), 1, 26, 33)
local sprite_fall = Sprite.new("AdmonitorFall", path.combine(SPRITE_PATH, "fall.png"), 1, 26, 33)
local sprite_death = Sprite.new("AdmonitorDeath", path.combine(SPRITE_PATH, "death.png"), 14, 33, 53)
local sprite_shoot1 = Sprite.new("AdmonitorShoot1", path.combine(SPRITE_PATH, "shoot1.png"), 30, 53, 86)

GM.elite_generate_palettes(sprite_palette)

local sound_spawn = Sound.new("AdmonitorSpawn", path.combine(SOUND_PATH, "spawn.ogg"))
local sound_shoot1a = Sound.new("AdmonitorShoot1A", path.combine(SOUND_PATH, "shoot1_1.ogg"))
local sound_shoot1b = Sound.new("AdmonitorShoot1B", path.combine(SOUND_PATH, "shoot1_2.ogg"))
local sound_death = Sound.new("AdmonitorDeath", path.combine(SOUND_PATH, "death.ogg"))

local push = Buff.new("AdmonitorPush")
push.show_icon = false
push.is_debuff = true
push:clear_callbacks()

push:onPostStep(function(actor, stack)
-- anyways we want to apply this to only classic actors (actors who interact with physics, have skills, etc)
if GM.actor_is_classic(actor) and actor:get_data().puncher_push then
actor:skill_util_nudge_forward(actor.pHmax * actor:get_data().puncher_push) -- this will move the victim by their max speed * the strength of the push
end

-- reduce the strength of the push, approaching 0 (technical: functionaly identical to math.approach from rorml)
if actor:get_data().puncher_push < 0 then
actor:get_data().puncher_push = math.min(0, actor:get_data().puncher_push + 0.1)
elseif actor:get_data().puncher_push > 0 then
actor:get_data().puncher_push = math.max(0, actor:get_data().puncher_push - 0.1)
end

-- if the strength of the push is 0, end the debuff early
if actor:get_data().puncher_push == 0 then
GM.remove_buff(actor, push)
Callback.add(Callback.ON_STEP, function()
for _, actor in ipairs(push:get_holding_actors()) do
local data = Instance.get_data(actor)

-- anyways we want to apply this to only classic actors (actors who interact with physics, have skills, etc)
if GM.actor_is_classic(actor) and data.puncher_push then
actor:skill_util_nudge_forward(actor.pHmax * data.puncher_push) -- this will move the victim by their max speed * the strength of the push
data.puncher_push = ssr_approach(data.puncher_push, 0, 0.1) -- reduce the strength of the push, approaching 0
end

-- if the strength of the push is 0, end the debuff
if not data.puncher_push or data.puncher_push == 0 then
actor:buff_remove(push)
end
end
end)

-- create the monster log
local mlog = Monster_Log.new(NAMESPACE, "admonitor")
local mlog = ssr_create_monster_log("admonitor")
mlog.sprite_id = sprite_idle
mlog.portrait_id = sprite_portrait
mlog.sprite_offset_x = 44
Expand All @@ -57,17 +54,14 @@ mlog.stat_hp = 350
mlog.stat_damage = 17
mlog.stat_speed = 1.6

local puncher = Object.new(NAMESPACE, "Admonitor", Object.PARENT.enemyClassic)
local puncher_id = puncher.value

puncher.obj_sprite = sprite_idle
puncher.obj_depth = 11 -- depth of vanilla pEnemyClassic objects
local puncher = Object.new("Admonitor", Object.Parent.ENEMY_CLASSIC)
puncher:set_sprite(sprite_idle)
puncher:set_depth(11) -- depth of vanilla pEnemyClassic objects

local puncherPrimary = Skill.new(NAMESPACE, "admonitorZ")
local statePuncherPrimary = State.new(NAMESPACE, "admonitorPrimary")
local primary = Skill.new("admonitorZ")
local statePrimary = ActorState.new("admonitorPrimary")

puncher:clear_callbacks()
puncher:onCreate(function(actor)
Callback.add(puncher.on_create, function(actor)
actor.sprite_palette = sprite_palette
actor.sprite_spawn = sprite_spawn
actor.sprite_idle = sprite_idle
Expand All @@ -77,7 +71,7 @@ puncher:onCreate(function(actor)
actor.sprite_fall = sprite_fall
actor.sprite_death = sprite_death

actor.can_jump = false
actor.can_jump = true

actor.mask_index = sprite_mask

Expand All @@ -90,23 +84,21 @@ puncher:onCreate(function(actor)

actor.z_range = 150 -- range of the primary
actor.monster_log_drop_id = mlog.value
actor:set_default_skill(Skill.SLOT.primary, puncherPrimary)
actor:set_default_skill(Skill.Slot.PRIMARY, primary)

actor:init_actor_late()
end)

puncherPrimary:clear_callbacks()
puncherPrimary:onActivate(function(actor)
actor:enter_state(statePuncherPrimary)
Callback.add(primary.on_activate, function(actor, skill, slot)
actor:set_state(statePrimary)
end)

statePuncherPrimary:clear_callbacks()
statePuncherPrimary:onEnter(function(actor, data)
Callback.add(statePrimary.on_enter, function(actor, data)
actor.image_index = 0
data.fired = 0
end)

statePuncherPrimary:onStep(function(actor, data)
Callback.add(statePrimary.on_step, function(actor, data)
actor:skill_util_fix_hspeed()
actor:actor_animation_set(sprite_shoot1, 0.23) -- 0.23 is anim speed value, its 0.23 to make the animation match the sound

Expand All @@ -122,75 +114,84 @@ statePuncherPrimary:onStep(function(actor, data)

if data.fired == 2 and actor.image_index >= 16 then
data.fired = 3
if gm._mod_net_isHost() then
if Net.host then
local attack = actor:fire_explosion(actor.x + 75 * actor.image_xscale, actor.y - 13, 130, 40, 4.2, nil, gm.constants.wSparks4).attack_info
attack.x = actor.x + 114 * actor.image_xscale
attack.y = actor.y - 6
attack.__ssr_puncher_push = 4 * actor.image_xscale
end
end

actor:skill_util_exit_state_on_anim_end()
end)

local puncherPushSync = Packet.new()
puncherPushSync:onReceived(function(msg)
local actor = msg:read_instance() -- send to clients who got hit
local strength = msg:read_short() -- send to clients the strength of knockback
local packet = Packet.new("SyncAdmonitorPush")

if not actor:exists() then return end

actor:get_data().puncher_push = strength
GM.apply_buff(actor, push, 3 * 60, 1) -- apply the knockback to the person who got hit
end)
local serializer = function(buffer, actor, strength)
buffer:write_instance(actor)
buffer:write_short(strength)
end

local function sync_puncher_push(actor, strength)
if not gm._mod_net_isHost() then
log.warning("sync_puncher_push called on client!")
return
end
local deserializer = function(buffer)
local actor = buffer:read_instance() -- send to clients who got hit
local strength = buffer:read_short() -- send to clients the strength of knockback

local msg = puncherPushSync:message_begin()
msg:write_instance(actor)
msg:write_short(strength)
msg:send_to_all()
if not Instance.exists(actor) then return end

Instance.get_data(actor).puncher_push = strength
actor:buff_apply(push, 3 * 60) -- apply the knockback to the person who got hit
actor:screen_shake(6)
end

-- onAttackHit callbacks arent synced and only run for the host >>
Callback.add(Callback.TYPE.onAttackHit, "SSRPuncherPush", function(hit_info)
packet:set_serializers(serializer, deserializer)

-- custom attack_info isnt synced >>
Callback.add(Callback.ON_ATTACK_HIT, function(hit_info)
if hit_info.attack_info.__ssr_puncher_push then
if hit_info.target and GM.actor_is_classic(hit_info.target) then
if gm._mod_net_isOnline() then
sync_puncher_push(hit_info.target, hit_info.attack_info.__ssr_puncher_push) -- >> we use a packet to sync the knockback effect for clients in multiplayer
if Net.online then
packet:send_to_all(hit_info.target, hit_info.attack_info.__ssr_puncher_push) -- >> we check if the host has it, and if it does use a packet to sync the knockback effect for clients in multiplayer
end
hit_info.target:get_data().puncher_push = hit_info.attack_info.__ssr_puncher_push
GM.apply_buff(hit_info.target, push, 3 * 60, 1)

Instance.get_data(hit_info.target).puncher_push = hit_info.attack_info.__ssr_puncher_push
hit_info.target:buff_apply(push, 3 * 60)
hit_info.target:screen_shake(6)
end
end
end)

local monsterCardPuncher = Monster_Card.new(NAMESPACE, "admonitor")
monsterCardPuncher.object_id = puncher_id
monsterCardPuncher.spawn_cost = 160
monsterCardPuncher.spawn_type = Monster_Card.SPAWN_TYPE.classic
monsterCardPuncher.can_be_blighted = true
local card = MonsterCard.new("admonitor")
card.object_id = puncher.value
card.spawn_cost = 160
card.spawn_type = 0 --MonsterCard.SpawnType.CLASSIC
card.can_be_blighted = true

if HOTLOADING then return end

local stages = {
"ror-templeOfTheElders",
"ror-riskOfRain",
"ror-boarBeach", -- ive got no idea why nk put them there in ss1 but we decided it would be funny to keep it, also moved to pre loop
"templeOfTheElders",
"riskOfRain",
"boarBeach", -- ive got no idea why nk put them there in ss1 but we decided it would be funny to keep it, also moved to pre loop
}

local postLoopStages = {
"ror-sunkenTombs",
"ror-ancientValley",
"ror-magmaBarracks",
"sunkenTombs",
"ancientValley",
"magmaBarracks",
}

for _, s in ipairs(stages) do
local stage = Stage.find(s)
stage:add_monster(monsterCardPuncher)

if stage then
stage:add_monster(card)
end
end

for _, s in ipairs(postLoopStages) do
local stage = Stage.find(s)
stage:add_monster_loop(monsterCardPuncher)

if stage then
stage:add_monster_loop(card)
end
end
37 changes: 37 additions & 0 deletions Actors/chirrsmasGolem.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
if HOTLOADING then return end
if not ssr_chirrsmas_active then return end -- christmas lasts from december 15th to january 15th
if Settings.chirrsmas == 2 then return end -- if chirrsmas is disabled in the config then we dont do anything

gm.sprite_replace(gm.constants.sGolemIdle, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/idle.png"), 36, false, false, 26, 35)
gm.sprite_replace(gm.constants.sGolemWalk, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/walk.png"), 8, false, false, 27, 33)
gm.sprite_replace(gm.constants.sGolemShoot1, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/attack.png"), 13, false, false, 55, 54)
gm.sprite_replace(gm.constants.sGolemSpawn, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/spawn.png"), 19, false, false, 43, 99)
gm.sprite_replace(gm.constants.sGolemDeath, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/death.png"), 16, false, false, 60, 51)
gm.sprite_replace(gm.constants.sGolemJump, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/jump.png"), 1, false, false, 32, 34)
gm.sprite_replace(gm.constants.sGolemJumpPeak, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/jump_peak.png"), 1, false, false, 32, 34)
gm.sprite_replace(gm.constants.sGolemFall, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/fall.png"), 1, false, false, 32, 34)
gm.sprite_replace(gm.constants.sGolemPal, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/palette.png"), 1, false, false, 0, 0)
gm.sprite_replace(gm.constants.sCreditsMonsterGolem, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/credits.png"), 1, false, false, 20, 68)
gm.sprite_replace(gm.constants.sPing_Golem, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/ping.png"), 1, false, false, 32, 32)

gm.sprite_replace(gm.constants.sGolemS2Idle, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/idle.png"), 36, false, false, 26, 35)
gm.sprite_replace(gm.constants.sGolemS2Walk, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/walk.png"), 8, false, false, 27, 33)
gm.sprite_replace(gm.constants.sGolemS2Shoot1, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/attack.png"), 13, false, false, 55, 54)
gm.sprite_replace(gm.constants.sGolemS2Spawn, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/spawn.png"), 19, false, false, 43, 99)
gm.sprite_replace(gm.constants.sGolemS2Death, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/death.png"), 16, false, false, 60, 51)
gm.sprite_replace(gm.constants.sGolemS2Jump, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/jump.png"), 1, false, false, 32, 34)
gm.sprite_replace(gm.constants.sGolemS2JumpPeak, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/jump_peak.png"), 1, false, false, 32, 34)
gm.sprite_replace(gm.constants.sGolemS2Fall, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/fall.png"), 1, false, false, 32, 34)
gm.sprite_replace(gm.constants.sGolemS2Pal, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/palette.png"), 1, false, false, 0, 0)
gm.sprite_replace(gm.constants.sPing_GolemS2, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/ping.png"), 1, false, false, 32, 32)

gm.sprite_replace(gm.constants.sGolemSIdle, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/idle.png"), 36, false, false, 26, 35)
gm.sprite_replace(gm.constants.sGolemSWalk, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/walk.png"), 8, false, false, 27, 33)
gm.sprite_replace(gm.constants.sGolemSShoot1, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/attack.png"), 13, false, false, 55, 54)
gm.sprite_replace(gm.constants.sGolemSSpawn, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/spawn.png"), 19, false, false, 43, 99)
gm.sprite_replace(gm.constants.sGolemSDeath, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/death.png"), 16, false, false, 60, 51)
gm.sprite_replace(gm.constants.sGolemSPal, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/palette.png"), 1, false, false, 0, 0)
gm.sprite_replace(gm.constants.sCreditsMonsterGolemS, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/credits.png"), 1, false, false, 20, 68)
gm.sprite_replace(gm.constants.sPing_GolemS, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/ping.png"), 1, false, false, 32, 32)

gm.sprite_replace(gm.constants.sTitleDoodadsGolemIdle, path.combine(PATH, "Sprites/Actors/ChirrsmasGolem/doodad.png"), 1, false, false, 27, 63)
Loading
Loading