scr_populatechars(); if (!init) { doIdle = function() { with (ferroll.marker) { sprite_index = spr_npc_ferroll_idle; image_index = 0; image_speed = 1/15; } }; powerup = function() { with (ferroll.marker) { sprite_index = spr_npc_ferroll_powerup; image_index = 0; image_speed = 0.35; } }; dohammer = function(arg0 = true) { var fer = ferroll.marker; with (ferroll.marker) { var damagefunc = function() { with (instance_create(x + 112, y + 90, obj_dmgwriter)) { damage = 6; snd_play(snd_hurt1); } }; smashcount++; sprite_index = spr_npc_ferroll_hammer; image_index = 0; image_speed = 0; scr_delay_var("image_index", 1, 5); scr_delay_var("image_index", 2, 7); var pitch = 1; if ((smashcount % 2) == 0) pitch = 1.1; snd_play_delay(snd_squeaky, 6, 1, pitch); if (arg0) { delay_function(damagefunc, 6); } else { var smash = function() { with (obj_dw_cliff_silver_hammer) { with (smashmarker) { image_index++; scr_debug_print(image_index); } } }; delay_function(smash, 7); } delay_function(scr_shakescreen, 7); scr_delay_var("image_index", 3, 9); scr_delay_var("image_index", 4, 11); scr_delay_var("image_index", 5, 13); } }; smashparty = function() { con = 20; timer = 0; }; smashmoney = function() { con = 40; timer = 0; }; doIdle(); init = 1; } var havemoney = (global.gold >= 50) ? true : false; if (con == 0) { if (ferroll.myinteract == 3) { scr_flag_set_ext(1762, 1, 1, 2); global.interact = 1; con = 1; ferroll.myinteract = 99; scr_speaker("no_name"); msgsetloc(0, "* Achoo^1! I am the GREAT SMITH^1, FERROLL./", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_152_0"); msgnextloc("* Give me anything^1, and I'll show you my GREAT STRENGTH./", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_153_0"); var opt1 = stringsetloc("#Give $50", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_154_0"); var opt2 = stringsetloc("#Massage", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_155_0"); var opt3 = stringsetloc("Nothing", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_156_0"); if (!havemoney) opt3 = "#" + opt3; if (havemoney) scr_readychoicer(opt1, opt2, opt3); else scr_readychoicer(opt2, opt3); d_make(0); } } if (con == 1 && global.choice != -1) { var shouldnt = stringsetloc("* (You probably shouldn't.)/%", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_167_0"); if (havemoney && global.choice == 0) { if (!moneysmashed) { con = 4.1; } else { k_d(1); scr_speaker("no_name"); msgset(0, shouldnt); d_make(0); con = 99; } } else if ((!havemoney && global.choice == 0) || (havemoney && global.choice == 1)) { if (!partysmashed) { k_d(3); scr_speaker("no_name"); msgsetloc(0, "* That's right^1. Your body is a mountain as well./", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_191_0"); msgnextloc("* It must be rugged..^1. powerful.../", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_192_0"); msgnextloc("* And what better way to sculpt it^1, than the smashing of metal!?/%", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_193_0"); d_make(0); con = 1.2; } else { k_d(1); scr_speaker("no_name"); msgset(0, shouldnt); d_make(0); con = 99; } } else { k_d(); con = 99; } } if (con == 4.1) { global.facing = 2; global.interact = 1; snd_play(snd_item); smashmarker = scr_marker_fromasset(findsprite(spr_dw_cliff_silver_hammer_coinStack), undefined, 1); smashmarker.image_speed = 0; smashmarker.image_index = 0; global.gold -= 50; k_d(1); scr_cutscene_make(); scr_maincharacters_actors(); var kr1 = kr_actor; var su1 = su_actor; var ra1 = ra_actor; var su2 = findspriteinfo(spr_susie_up_dw, "CUT1", undefined, undefined); var ra2 = findspriteinfo(spr_ralsei_walk_up, "CUT1", undefined, undefined); var kr2 = findspriteinfo(spr_krisu_dark, "CUT1", undefined, undefined); c_sel(kr); var wait1 = c_walkto_straight(kr1, kr2, 4, undefined, "u"); c_sel(ra); var wait2 = c_walkto_straight(ra1, ra2, 4, undefined, "u"); c_sel(su); var wait3 = c_walkto_straight(su1, su2, 4, undefined, "u"); c_wait(max(wait1, wait2, wait3) + 1); c_speaker("no_name"); c_msgsetloc(0, "* Achoo^1! Behold my technique!/%", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_244_0"); c_talk_wait(); c_wait(1); c_actortokris(); c_actortocaterpillar(); c_customfunc(function() { scr_caterpillar_facing("ralsei", "u"); scr_caterpillar_facing("susie", "u"); }); c_terminatekillactors(); scr_caterpillar_facing_single("ralsei", "u"); scr_caterpillar_facing_single("susie", "u"); con = 1.1; } if (con == 1.1 && !instance_exists(obj_cutscene_master)) { coincon = 1; timer = 0; con = -1; } if (con == 1.2 && !d_ex()) { global.facing = 2; global.interact = 1; k_d(1); scr_cutscene_make(); scr_maincharacters_actors(); var kr1 = kr_actor; var su1 = su_actor; var ra1 = ra_actor; var su2 = findspriteinfo(spr_susie_up_dw, "CUT1", undefined, undefined); var ra2 = findspriteinfo(spr_ralsei_walk_up, "CUT1", undefined, undefined); var kr2 = findspriteinfo(spr_krisu_dark, "CUT1", undefined, undefined); c_sel(kr); var wait1 = c_walkto_straight(kr1, kr2, 4, undefined, "u"); c_sel(ra); var wait2 = c_walkto_straight(ra1, ra2, 4, undefined, "u"); c_sel(su); var wait3 = c_walkto_straight(su1, su2, 4, undefined, "u"); c_wait(max(wait1, wait2, wait3) + 1); c_wait(1); c_actortokris(); c_actortocaterpillar(); c_customfunc(function() { scr_caterpillar_facing("ralsei", "u"); scr_caterpillar_facing("susie", "u"); }); c_terminatekillactors(); scr_caterpillar_facing_single("ralsei", "u"); scr_caterpillar_facing_single("susie", "u"); con = 1.22; } var fedamagefunc = function() { scr_shakescreen(); with (ferroll) { with (marker) { snd_play(snd_horriblemetalclang); with (instance_create(x + 112, y + 90, obj_dmgwriter)) { damage = 6; snd_play(snd_hurt1); } } } }; if (con == 1.22 && !instance_exists(obj_cutscene_master)) { var fe = ferroll.marker; var kr1 = findspriteinfo(spr_krisu_dark, "CUT1"); var su1 = findspriteinfo(spr_susie_up_dw, "CUT1"); var ra1 = findspriteinfo(spr_ralsei_walk_up, "CUT1"); var kr2 = findspriteinfo(spr_krisd_dark, "SMASH_ASSETS"); var su2 = findspriteinfo(spr_susie_shock_r, "SMASH_ASSETS"); var ra2 = findspriteinfo(spr_ralsei_shocked_right, "SMASH_ASSETS"); timer++; if (timer == 1) sprite_set(fe, 3234, 0, 0.35); if (timer == 15) { snd_play(snd_item); var l = findsprite(spr_krisd_dark, "SMASH_ASSETS"); kris_marker = scr_marker_fromasset(l, fe.depth + 1); with (obj_mainchara) visible = false; } if (timer == 25) sprite_set(fe, 6017, 0, 0); if (timer == 30) sprite_set(fe, 6017, 1, 0); if (timer == 33) { sprite_set(fe, 6017, 2, 0); fedamagefunc(); scr_shakeobj(kris_marker); kris_marker.sprite_index = spr_kris_splat; } if (timer == 35) sprite_set(fe, 6017, 3, 0); if (timer == 37) sprite_set(fe, 6017, 4, 0); if (timer == 39) sprite_set(fe, 6017, 5, 0); if (timer == 54) { sprite_set(fe, 6017, 0, 0); setxy(kr1.x, kr1.y, kris_marker); sprite_set(fe, 3234, 0, 0.35); var l = findsprite(spr_susie_shock_r, "SMASH_ASSETS"); susie_marker = scr_marker_fromasset(l, fe.depth + 1, undefined, true); with (obj_caterpillarchara) { if (name == "susie") visible = false; } snd_play(snd_item); } var subump = 39; if (timer == (subump + 25)) sprite_set(fe, 6017, 0, 0); if (timer == (subump + 25 + 5)) sprite_set(fe, 6017, 1, 0); if (timer == (subump + 25 + 5 + 3)) { sprite_set(fe, 6017, 2, 0); fedamagefunc(); scr_shakeobj(susie_marker); susie_marker.sprite_index = spr_susie_splat; } if (timer == (subump + 25 + 5 + 3 + 2)) sprite_set(fe, 6017, 3, 0); if (timer == (subump + 25 + 5 + 3 + 2 + 2)) sprite_set(fe, 6017, 4, 0); if (timer == (subump + 25 + 5 + 3 + 2 + 2 + 2)) sprite_set(fe, 6017, 5, 0); if (timer == (subump + 25 + 5 + 3 + 2 + 2 + 2 + 15)) { sprite_set(fe, 6017, 0, 0); setxy(su1.x, su1.y, susie_marker); susie_marker.x += 4; susie_marker.y += -4; sprite_set(fe, 3234, 0, 0.35); snd_play(snd_item); var l = findsprite(spr_ralsei_shocked_right, "SMASH_ASSETS"); ralsei_marker = scr_marker_fromasset(l, fe.depth + 1); with (obj_caterpillarchara) { if (name == "ralsei") visible = false; } } var rabump = subump + 25 + 5 + 3 + 2 + 2 + 2; if (timer == (rabump + 25)) sprite_set(fe, 6017, 0, 0); if (timer == (rabump + 25 + 5)) sprite_set(fe, 6017, 1, 0); if (timer == (rabump + 25 + 5 + 3)) { sprite_set(fe, 6017, 2, 0); fedamagefunc(); ralsei_marker.sprite_index = spr_ralsei_splat; ralsei_marker.x -= 36; ralsei_marker.y += 32; scr_shakeobj(ralsei_marker); } if (timer == (rabump + 25 + 5 + 3 + 2)) sprite_set(fe, 6017, 3, 0); if (timer == (rabump + 25 + 5 + 3 + 2 + 2)) sprite_set(fe, 6017, 4, 0); if (timer == (rabump + 25 + 5 + 3 + 2 + 2 + 2)) sprite_set(fe, 6017, 5, 0); if (timer == (rabump + 25 + 5 + 3 + 2 + 2 + 2 + 15)) { sprite_set(fe, 6362, 0, 0); setxy(ra1.x - 36, ra1.y + 32, ralsei_marker); ralsei_marker.x += 18; ralsei_marker.y += 8; ralsei_marker.depth = susie_marker.depth - 1; } if (timer == (rabump + 25 + 5 + 3 + 2 + 2 + 2 + 15 + 30)) { con = 21; timer = 0; } } if (con == 20) { timer++; var poweruptime = 25; var hammertime = 18; if (timer == 1) powerup(); if (timer == poweruptime) { with (obj_caterpillarchara) { if (name == "ralsei") visible = false; } safe_delete(smashmarker); smashmarker = scr_marker_fromasset(findsprite(spr_ralsei_shocked_right, "SMASH_ASSETS"), ferroll.marker.depth + 10); dohammer(); } if (timer == (poweruptime + (hammertime * 1))) dohammer(); if (timer == (poweruptime + (hammertime * 2))) { dohammer(); with (obj_caterpillarchara) { if (name == "ralsei") visible = true; } with (obj_caterpillarchara) { if (name == "susie") visible = false; } safe_delete(smashmarker); smashmarker = scr_marker_fromasset(findsprite(spr_susie_shock_r, "SMASH_ASSETS"), ferroll.marker.depth + 10); } if (timer == (poweruptime + (hammertime * 3))) dohammer(); if (timer == (poweruptime + (hammertime * 4))) { dohammer(); with (obj_caterpillarchara) { if (name == "susie") visible = true; } obj_mainchara.visible = false; safe_delete(smashmarker); smashmarker = scr_marker_fromasset(findsprite(spr_krisd_dark, "SMASH_ASSETS"), ferroll.marker.depth + 10); } if (timer == (poweruptime + (hammertime * 5))) dohammer(); if (timer == (poweruptime + (hammertime * 6))) { obj_mainchara.visible = true; safe_delete(smashmarker); con++; } } if (con == 21) { partysmashed = 1; updateSmashed(); scr_speaker("no_name"); msgsetloc(0, "* .../", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_537_0"); msgnextloc("* So^1, uh..^1. who got healed from that?/", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_538_0"); msgnextloc("* .../", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_539_0"); msgnextloc("* I see..^1. perhaps it's not my best work.../%", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_540_0"); d_make(0); con = 99.1; for (var i = 0; i < array_length(global.hp); i++) global.hp[i] = max(global.hp[i] - 6, 1); scr_msgno_func(1, function() { sprite_set(ferroll.marker, 81, 0, 0); }); scr_msgno_func(3, function() { sprite_set(ferroll.marker, 543, 0, 0); }); } if (con == 40) { timer++; var poweruptime = 25; var hammertime = 18; if (timer == 1) powerup(); if (timer == poweruptime) dohammer(false); if (timer == (poweruptime + (hammertime * 1))) dohammer(false); if (timer == (poweruptime + (hammertime * 2))) { safe_delete(smashmarker); con = 41; } } if (con == 99 && !d_ex()) { global.interact = 0; con = 0; with (ferroll) myinteract = 0; doIdle(); } if (con == 99.1 && !d_ex()) { with (kris_marker) instance_destroy(); with (susie_marker) instance_destroy(); with (ralsei_marker) instance_destroy(); with (obj_mainchara) visible = true; with (obj_caterpillarchara) visible = true; scr_caterpillar_interpolate(); with (obj_caterpillarchara) scr_caterpillar_facing(3); global.interact = 0; con = 0; with (ferroll) myinteract = 0; doIdle(); } makecoin = function(arg0) { with (scr_marker_fancy(240, 290, 4700)) { gravity = random_range(1, 1.1); scr_size(2, 2); spd = random_range(15, 25); hspeed = lengthdir_x(spd, arg0); vspeed = lengthdir_y(spd, arg0); endy = scr_even(ystart + random_range(6, 20)); depth = 100000 - ((endy * 10) + (sprite_height * 10)); bouncecount = 0; dying = 0; timer = 0; end_step_func = function() { if (dying) { timer++; if (timer > 50) image_alpha = lerp_out_cubic(1, 0, (timer - 50) / 10); if (timer == 60) instance_destroy(); } if (y > endy && vspeed > 0) { hspeed *= 0.7; y = endy; vspeed = -vspeed * 0.4; var vol = lerp(0, 0.3, abs(vspeed) / 8); if (vol > 0.1) snd_play(snd_coin, vol, 1.2); if (dying == 0) { dying = 1; scr_doom(id, 80); } } var _left = 128; var _right = 352; if (x < _left || x > _right) { x = clamp(x, _left, _right); hspeed = -hspeed * 0.5; var vol = lerp(0, 0.3, abs(hspeed) / 8); if (vol > 0.1) snd_play(snd_coin, vol, 1.2); } image_angle -= (hspeed * 30); }; } }; if (coincon == 1) { var fe = ferroll.marker; timer++; if (timer == 1) { with (fe) { sprite_index = spr_npc_ferroll_idle; image_index = 0; image_speed = 1/15; } } if (timer == 15) sprite_set(fe, 3234, 0, 0.35); if (timer == 40) sprite_set(fe, 6017, 0, 0); if (timer == 42) sprite_set(fe, 6017, 1, 0); if (timer == 44) { sprite_set(fe, 6017, 2, 0); snd_play(snd_horriblemetalclang); var range = 30; var count = 25; for (var i = 0; i < count; i++) makecoin(lerp(90 + range, 90 - range, i / count) + random_range(-4, 4)); scr_shakescreen(); } if (timer == 46) sprite_set(fe, 6017, 3, 0); if (timer == 48) sprite_set(fe, 6017, 4, 0); if (timer == 50) { sprite_set(fe, 6017, 5, 0); with (smashmarker) image_index = 1; } if (timer == 80) { timer = 0; coincon = 2; } } if (coincon == 2) { var fe = ferroll.marker; timer++; if (timer == 1) sprite_set(fe, 6017, 0, 0); if (timer == 19) { with (smashmarker) instance_destroy(); sprite_set(fe, 6017, 2, 0); snd_play(snd_horriblemetalclang); var range = 30; var count = 24; for (var i = 0; i < count; i++) makecoin(lerp(90 + range, 90 - range, i / count) + random_range(-6, 6)); scr_shakescreen(); } if (timer == 21) sprite_set(fe, 6017, 3, 0); if (timer == 23) sprite_set(fe, 6017, 4, 0); if (timer == 25) sprite_set(fe, 6017, 5, 0); if (timer == 55) sprite_set(fe, 6362, 0, 0); if (timer == 115) { timer = 0; coincon = 3; } } if (coincon == 3) { moneysmashed = 1; updateSmashed(); scr_speaker("no_name"); msgsetloc(0, "* .../", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_772_0"); msgnextloc("* All right^1. Maybe it wasn't my best work.../", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_773_0"); msgnextloc("* I blame my pollen allergies..^1. ACHOO!/%", "obj_dw_cliff_silver_hammer_slash_Step_0_gml_774_0"); d_make(0); coincon = 4; scr_msgno_func(1, function() { sprite_set(ferroll.marker, 81, 0, 0); }); scr_msgno_func(2, function() { sprite_set(ferroll.marker, 543, 0, 0); }); } if (coincon == 4 && !d_ex()) { scr_caterpillar_interpolate("all"); global.facing = 0; con = 99; coincon = 0; }