mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-22 05:25:15 +01:00
[MIRROR] Vim mecha changes [MDB IGNORE] (#12981)
* Vim mecha changes (#66153) This PR changes the following: fixes a bug with Vim overlays, making it always appear as if there was a pilot inside, even after leaving it adds a balloon alert when a mob fails to enter the mech due to its size adds a crafting recipe for Vim in the "robots" category allows using Vim as a circuit shell allows small mobs to use the mech as well My reasoning behind the changes: fixing the overlay bug - bugfixes good, bugs bad balloon alert - it should help reduce confusion among players who can't figure why on earth they cannot enter the mech crafting recipe - I think a crafting recipe will make it a lot more accessible to players, especially because there is no way to learn about its existence in-game circuit shell - non-standard circuit shells can be pretty fun and people seemed to enjoy the ability to use circuits inside their piano synths or cameras, so I figured we could expand on this, while giving players more ways to interact with sentient pets maximum mob size increase - Vim has never really been built too often, most likely because even if people got their hands on a sentient pet, it wouldn't probably fit in the tiny mecha anyway. Currently pretty much only butterflies, rats and cockroaches can use Vim and they pretty much never become sentient. * Vim mecha changes Co-authored-by: B4CKU <50628162+B4CKU@users.noreply.github.com>
This commit is contained in:
@@ -338,6 +338,15 @@
|
||||
///sent to targets during the process_hit proc of projectiles
|
||||
#define COMSIG_PELLET_CLOUD_INIT "pellet_cloud_init"
|
||||
|
||||
// /obj/vehicle/sealed/car/vim signals
|
||||
|
||||
///from /datum/action/vehicle/sealed/noise/chime/Trigger(): ()
|
||||
#define COMSIG_VIM_CHIME_USED "vim_chime_used"
|
||||
///from /datum/action/vehicle/sealed/noise/buzz/Trigger(): ()
|
||||
#define COMSIG_VIM_BUZZ_USED "vim_buzz_used"
|
||||
///from /datum/action/vehicle/sealed/headlights/vim/Trigger(): (headlights_on)
|
||||
#define COMSIG_VIM_HEADLIGHTS_TOGGLED "vim_headlights_toggled"
|
||||
|
||||
// /obj/vehicle/sealed/mecha signals
|
||||
|
||||
///sent from mecha action buttons to the mecha they're linked to
|
||||
|
||||
@@ -444,6 +444,18 @@
|
||||
time = 40
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/crafting_recipe/vim
|
||||
name = "Vim"
|
||||
result = /obj/vehicle/sealed/car/vim
|
||||
reqs = list(/obj/item/clothing/head/helmet/space/eva = 1,
|
||||
/obj/item/bodypart/l_leg/robot = 1,
|
||||
/obj/item/bodypart/r_leg/robot = 1,
|
||||
/obj/item/flashlight = 1,
|
||||
/obj/item/assembly/voice = 1)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
time = 6 SECONDS //Has a four second do_after when building manually
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but
|
||||
name = "Pneumatic Cannon"
|
||||
result = /obj/item/pneumatic_cannon/ghetto
|
||||
|
||||
@@ -20,8 +20,18 @@
|
||||
engine_sound = 'sound/effects/servostep.ogg'
|
||||
///TRUE while the vim is being welded
|
||||
var/being_repaired = FALSE
|
||||
///Maximum size of a mob trying to enter the mech
|
||||
var/maximum_mob_size = MOB_SIZE_SMALL
|
||||
COOLDOWN_DECLARE(sound_cooldown)
|
||||
|
||||
/obj/vehicle/sealed/car/vim/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent( \
|
||||
/datum/component/shell, \
|
||||
unremovable_circuit_components = list(new /obj/item/circuit_component/vim), \
|
||||
capacity = SHELL_CAPACITY_SMALL, \
|
||||
)
|
||||
|
||||
/obj/vehicle/sealed/car/vim/examine(mob/user)
|
||||
. = ..()
|
||||
. += span_notice("[src] can be repaired with a welder.")
|
||||
@@ -36,7 +46,8 @@
|
||||
if(!isanimal_or_basicmob(entering))
|
||||
return FALSE
|
||||
var/mob/living/animal_or_basic = entering
|
||||
if(animal_or_basic.mob_size != MOB_SIZE_TINY)
|
||||
if(animal_or_basic.mob_size > maximum_mob_size)
|
||||
entering.balloon_alert(entering, "can't fit inside!")
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
@@ -71,6 +82,10 @@
|
||||
if(atom_integrity == max_integrity)
|
||||
SEND_SOUND(newoccupant, sound('sound/mecha/nominal.ogg',volume=50))
|
||||
|
||||
/obj/vehicle/sealed/car/vim/mob_try_exit(mob/pilot, mob/user, silent = FALSE, randomstep = FALSE)
|
||||
. = ..()
|
||||
update_appearance()
|
||||
|
||||
/obj/vehicle/sealed/car/vim/generate_actions()
|
||||
initialize_controller_action_type(/datum/action/vehicle/sealed/climb_out/vim, VEHICLE_CONTROL_DRIVE)
|
||||
initialize_controller_action_type(/datum/action/vehicle/sealed/noise/chime, VEHICLE_CONTROL_DRIVE)
|
||||
@@ -90,3 +105,43 @@
|
||||
. += piloted_overlay
|
||||
if(headlights_toggle)
|
||||
. += headlights_overlay
|
||||
|
||||
/obj/item/circuit_component/vim
|
||||
display_name = "Vim"
|
||||
desc = "An minature exosuit from Nanotrasen, developed to let the irreplacable station pets live a little longer."
|
||||
|
||||
/// Sent when the mech chimes.
|
||||
var/datum/port/output/chime
|
||||
/// Sent when the mech buzzes.
|
||||
var/datum/port/output/buzz
|
||||
/// Whether the mech headlights are currently on.
|
||||
var/datum/port/output/are_headlights_on
|
||||
|
||||
/obj/item/circuit_component/vim/populate_ports()
|
||||
are_headlights_on = add_output_port("Are Headlights On", PORT_TYPE_NUMBER)
|
||||
chime = add_output_port("On Chime Used", PORT_TYPE_SIGNAL)
|
||||
buzz = add_output_port("On Buzz Used", PORT_TYPE_SIGNAL)
|
||||
|
||||
/obj/item/circuit_component/vim/register_shell(atom/movable/shell)
|
||||
. = ..()
|
||||
RegisterSignal(shell, COMSIG_VIM_HEADLIGHTS_TOGGLED, .proc/on_headlights_toggle)
|
||||
RegisterSignal(shell, COMSIG_VIM_CHIME_USED, .proc/on_chime_used)
|
||||
RegisterSignal(shell, COMSIG_VIM_BUZZ_USED, .proc/on_buzz_used)
|
||||
|
||||
/obj/item/circuit_component/vim/unregister_shell(atom/movable/shell)
|
||||
. = ..()
|
||||
UnregisterSignal(shell, COMSIG_VIM_HEADLIGHTS_TOGGLED)
|
||||
UnregisterSignal(shell, COMSIG_VIM_CHIME_USED)
|
||||
UnregisterSignal(shell, COMSIG_VIM_BUZZ_USED)
|
||||
|
||||
/obj/item/circuit_component/vim/proc/on_headlights_toggle(datum/source, headlights_on)
|
||||
SIGNAL_HANDLER
|
||||
are_headlights_on.set_output(headlights_on)
|
||||
|
||||
/obj/item/circuit_component/vim/proc/on_chime_used()
|
||||
SIGNAL_HANDLER
|
||||
chime.set_output(COMPONENT_SIGNAL)
|
||||
|
||||
/obj/item/circuit_component/vim/proc/on_buzz_used()
|
||||
SIGNAL_HANDLER
|
||||
buzz.set_output(COMPONENT_SIGNAL)
|
||||
|
||||
@@ -341,10 +341,11 @@
|
||||
var/obj/vehicle/sealed/car/vim/vim_mecha = vehicle_entered_target
|
||||
if(!COOLDOWN_FINISHED(vim_mecha, sound_cooldown))
|
||||
vim_mecha.balloon_alert(owner, "on cooldown!")
|
||||
return
|
||||
return FALSE
|
||||
COOLDOWN_START(vim_mecha, sound_cooldown, VIM_SOUND_COOLDOWN)
|
||||
vehicle_entered_target.visible_message(span_notice("[vehicle_entered_target] [sound_message]"))
|
||||
playsound(vim_mecha, sound_path, 75)
|
||||
return TRUE
|
||||
|
||||
/datum/action/vehicle/sealed/noise/chime
|
||||
name = "Chime!"
|
||||
@@ -353,6 +354,10 @@
|
||||
sound_path = 'sound/machines/chime.ogg'
|
||||
sound_message = "chimes!"
|
||||
|
||||
/datum/action/vehicle/sealed/noise/chime/Trigger(trigger_flags)
|
||||
if(..())
|
||||
SEND_SIGNAL(vehicle_entered_target, COMSIG_VIM_CHIME_USED)
|
||||
|
||||
/datum/action/vehicle/sealed/noise/buzz
|
||||
name = "Buzz."
|
||||
desc = "Negative!"
|
||||
@@ -360,5 +365,13 @@
|
||||
sound_path = 'sound/machines/buzz-sigh.ogg'
|
||||
sound_message = "buzzes."
|
||||
|
||||
/datum/action/vehicle/sealed/noise/buzz/Trigger(trigger_flags)
|
||||
if(..())
|
||||
SEND_SIGNAL(vehicle_entered_target, COMSIG_VIM_BUZZ_USED)
|
||||
|
||||
/datum/action/vehicle/sealed/headlights/vim
|
||||
button_icon_state = "vim_headlights"
|
||||
|
||||
/datum/action/vehicle/sealed/headlights/vim/Trigger(trigger_flags)
|
||||
. = ..()
|
||||
SEND_SIGNAL(vehicle_entered_target, COMSIG_VIM_HEADLIGHTS_TOGGLED, vehicle_entered_target.headlights_toggle)
|
||||
|
||||
Reference in New Issue
Block a user