Skip to content

Commit

Permalink
shh
Browse files Browse the repository at this point in the history
less soundspam, more control over autopickup
  • Loading branch information
DeltaFire15 committed Dec 29, 2023
1 parent d65146e commit 7f361e5
Showing 1 changed file with 59 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@
var/turf/target_turf
///The timer that tracks how long the arm should be doing arm things.
var/active_arm_timer_id
///Next time a success sound can play.
var/next_success_sound = 0
///Next time a fail sound can play.
var/next_fail_sound = 0

/obj/machinery/missile_builder/attackby(obj/item/I, mob/user, params)
if(default_unfasten_wrench(user, I))
Expand Down Expand Up @@ -106,38 +110,49 @@
* * Does not return anything. SHOULD NOT RETURN ANYTHING.
**/
/obj/machinery/missile_builder/proc/attempt_assembler_action(turf/source, atom/movable/entering, old_loc, old_locs)
SIGNAL_HANDLER
if(QDELETED(entering)) //How would this happen? Who knows.. but this is NSV after all.
return
if(!isobj(entering) || iseffect(entering))
return
if(!(entering.type in munition_types))
visible_message("[src] shakes its arm melancholically.")
arm.shake_animation()
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
if(world.time >= next_fail_sound)
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
next_fail_sound = world.time + 0.2 SECONDS
return
switch(entering.type) //This is VERY BAD but they do not share a common type.
if(/obj/item/ship_weapon/ammunition/missile/missile_casing)
var/obj/item/ship_weapon/ammunition/missile/missile_casing/missile_target = entering
if(!(missile_target.state in target_states))
visible_message("<span class='notice'>[src] sighs.</span>")
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
if(world.time >= next_fail_sound)
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
next_fail_sound = world.time + 0.5 SECONDS
return
trigger_arm_animation()
missile_target.state++ //Next step!
missile_target.check_completion()
do_sparks(4, TRUE, missile_target)
playsound(src, 'sound/items/welder.ogg', 100, 1)
if(world.time >= next_success_sound)
do_sparks(4, TRUE, missile_target)
playsound(src, 'sound/items/welder.ogg', 100, 1)
next_success_sound = world.time + 0.2 SECONDS
if(/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing)
var/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing/torpedo_target = entering
if(!(torpedo_target.state in target_states))
visible_message("<span class='notice'>[src] sighs.</span>")
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
if(world.time >= next_fail_sound)
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
next_fail_sound = world.time + 0.5 SECONDS
return
trigger_arm_animation()
torpedo_target.state++ //Next step!
torpedo_target.check_completion()
do_sparks(4, TRUE, torpedo_target)
playsound(src, 'sound/items/welder.ogg', 100, 1)
if(world.time >= next_success_sound)
do_sparks(4, TRUE, torpedo_target)
playsound(src, 'sound/items/welder.ogg', 100, 1)
next_success_sound = world.time + 0.2 SECONDS
else
CRASH("Please stop handing the missile assemblers invalid types as valid ammunition. Type: [entering.type]. ALL valid casings must be missile or torpedo types.")

Expand All @@ -149,32 +164,38 @@
return
if(entering.loc != source)
return
if(length(held_components) > 0)
var/obj/held_component = held_components[1]
if(held_component.type == entering.type) //Please do throw these hungry machines some components.
var/obj/item/entering_item = entering
visible_message("<span class='notice'>[src] happily adds [entering_item] to its component storage.</span>")
if(tracked_component_type && tracked_component_type == entering.type) //Please do throw these hungry machines some components.
var/obj/item/entering_item = entering
visible_message("<span class='notice'>[src] happily adds [entering_item] to its component storage.</span>")
if(world.time >= next_success_sound)
playsound(src, 'sound/machines/ping.ogg', 50, 0)
entering_item.do_pickup_animation(src)
entering_item.forceMove(src)
held_components += entering_item
return
next_success_sound = world.time + 0.2 SECONDS
entering_item.do_pickup_animation(src)
entering_item.forceMove(src)
held_components += entering_item
return
if(!(entering.type in munition_types))
visible_message("[src] shakes its arm melancholically.")
arm.shake_animation()
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
if(world.time >= next_fail_sound)
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
next_fail_sound = world.time + 0.2 SECONDS
return
switch(entering.type) //This is VERY BAD but they do not share a common type.
if(/obj/item/ship_weapon/ammunition/missile/missile_casing)
var/obj/item/ship_weapon/ammunition/missile/missile_casing/missile_target = entering
if(!length(held_components))
visible_message("<span class='notice'>[src] sighs.</span>")
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
if(world.time >= next_fail_sound)
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
next_fail_sound = world.time + 0.5 SECONDS
return
var/obj/item/ship_weapon/parts/missile/missile_part = held_components[1]
if((missile_part.fits_type && !istype(missile_target, missile_part.fits_type)) || missile_target.state != missile_part.target_state)
visible_message("<span class='notice'>[src] sighs.</span>")
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
if(world.time >= next_fail_sound)
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
next_fail_sound = world.time + 0.5 SECONDS
return
trigger_arm_animation()
do_item_attack_animation(missile_target, used_item = missile_part)
Expand All @@ -183,18 +204,22 @@
missile_part.forceMove(missile_target)
held_components -= missile_part
missile_target.check_completion()
do_sparks(4, TRUE, missile_target)
playsound(src, 'sound/machines/ping.ogg', 50, 0)
if(world.time >= next_success_sound)
do_sparks(4, TRUE, missile_target)
playsound(src, 'sound/machines/ping.ogg', 50, 0)
next_success_sound = world.time + 0.2 SECONDS
if(/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing)
var/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing/torpedo_target = entering
if(!length(held_components))
visible_message("<span class='notice'>[src] sighs.</span>")
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
if(world.time >= next_fail_sound)
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
next_fail_sound = world.time + 0.5 SECONDS
return
var/obj/item/ship_weapon/parts/missile/torpedo_part = held_components[1]
if((torpedo_part.fits_type && !istype(torpedo_target, torpedo_part.fits_type)) || torpedo_target.state != torpedo_part.target_state)
visible_message("<span class='notice'>[src] sighs.</span>")
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
if(world.time >= next_fail_sound)
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
next_fail_sound = world.time + 0.5 SECONDS
return
trigger_arm_animation()
do_item_attack_animation(torpedo_target, used_item = torpedo_part)
Expand All @@ -203,8 +228,10 @@
torpedo_part.forceMove(torpedo_target)
held_components -= torpedo_part
torpedo_target.check_completion()
do_sparks(4, TRUE, torpedo_target)
playsound(src, 'sound/machines/ping.ogg', 50, 0)
if(world.time >= next_success_sound)
do_sparks(4, TRUE, torpedo_target)
playsound(src, 'sound/machines/ping.ogg', 50, 0)
next_success_sound = world.time + 0.2 SECONDS
else
CRASH("Please stop handing the missile assemblers invalid types as valid ammunition. Type: [entering.type]. ALL valid casings must be missile or torpedo types.")

Expand All @@ -229,8 +256,10 @@
desc = "An assembly arm which can slot a multitude of missile components into casings for you! Swipe it with an ID to release its stored components."
req_one_access = list(ACCESS_MUNITIONS)
circuit = /obj/item/circuitboard/machine/missile_builder/assembler
//Currently loaded missile components.
///Currently loaded missile components.
var/list/held_components = list()
///Currently tracked type for autopickup
var/tracked_component_type = null

/obj/machinery/missile_builder/assembler/examine(mob/user)
. = ..()
Expand All @@ -255,11 +284,13 @@
to_chat(user, "<span class='notice'>You slot [I] into [src], ready for construction.</span>")
I.forceMove(src)
held_components += I
tracked_component_type = I.type
if(istype(I, /obj/item/card/id) && allowed(user))
to_chat(user, "<span class='warning'>You dump [src]'s contents out.</span>")
for(var/obj/item/X in held_components)
X.forceMove(get_turf(src))
held_components -= X
tracked_component_type = null

/obj/machinery/missile_builder/assembler/MouseDrop_T(obj/structure/A, mob/user)
. = ..()
Expand Down

0 comments on commit 7f361e5

Please sign in to comment.