mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-22 05:25:15 +01:00
7a994fffba
## About The Pull Request  Removes the "pathfinding through the halls" function of the MODsuit pathfinder module in favour of having it "fly" to your location in the same manner as cargo pods (by getting inside an invisible cargo pod). If it's inside a locked crate or locker when this happens it will break the door on the way out, so be careful where you leave it. ## Why It's Good For The Game Mostly because nobody uses the pathfinder module. Pathfinding through the corridors is _cool_ on a conceptual level but it's not very practical, _especially_ because it means that it has a good chance of not functioning at all if you are on a station with Z levels. This method means that it will always arrive in the same amount of time (quite fast, but not fast enough that it will arrive before someone can shoot you) regardless of where you are when you suddenly realise that you need spaceproofing rather than drip. Also Fikou asked me to do it. ## Changelog 🆑 balance: The Captain's MODSuit pathfinder module now flies it directly to their location rather than physically traversing the halls of the station. /🆑
72 lines
2.7 KiB
Plaintext
72 lines
2.7 KiB
Plaintext
/obj/machinery/botpad
|
|
name = "Bot pad"
|
|
desc = "A lighter version of the orbital mech pad modified to launch bots. Requires linking to a remote to function."
|
|
icon = 'icons/obj/machines/telepad.dmi'
|
|
icon_state = "botpad"
|
|
circuit = /obj/item/circuitboard/machine/botpad
|
|
// ID of the console, used for linking up
|
|
var/id = "botlauncher"
|
|
var/obj/item/botpad_remote/connected_remote
|
|
var/datum/weakref/launched_bot // we need this to recall the bot
|
|
|
|
/obj/machinery/botpad/Destroy()
|
|
if(connected_remote)
|
|
connected_remote.connected_botpad = null
|
|
connected_remote = null
|
|
launched_bot = null
|
|
return ..()
|
|
|
|
/obj/machinery/botpad/screwdriver_act(mob/user, obj/item/tool)
|
|
return default_deconstruction_screwdriver(user, "botpad-open", "botpad", tool)
|
|
/obj/machinery/botpad/crowbar_act(mob/user, obj/item/tool)
|
|
return default_deconstruction_crowbar(tool)
|
|
|
|
/obj/machinery/botpad/multitool_act(mob/living/user, obj/item/multitool/tool)
|
|
if(!panel_open)
|
|
return NONE
|
|
var/obj/item/multitool/multitool = tool
|
|
multitool.set_buffer(src)
|
|
balloon_alert(user, "saved to multitool buffer")
|
|
return ITEM_INTERACT_SUCCESS
|
|
|
|
// Checks the turf for a bot and launches it if it's the only mob on the pad.
|
|
/obj/machinery/botpad/proc/launch(mob/living/user)
|
|
var/turf/reverse_turf = get_turf(user)
|
|
var/atom/possible_bot
|
|
for(var/mob/living/robot in get_turf(src))
|
|
if(!isbot(robot))
|
|
user.balloon_alert(user, "unidentified life form on the pad!")
|
|
return
|
|
if(!isnull(possible_bot))
|
|
user.balloon_alert(user, "too many bots on the pad!")
|
|
return
|
|
possible_bot = robot // We don't change the launched_bot var here because we are not sure if there is another bot on the pad.
|
|
|
|
if(!use_energy(active_power_usage, force = FALSE))
|
|
balloon_alert(user, "not enough energy!")
|
|
return
|
|
launched_bot = WEAKREF(possible_bot)
|
|
podspawn(list(
|
|
"target" = get_turf(src),
|
|
"path" = /obj/structure/closet/supplypod/transport/botpod,
|
|
"style" = /datum/pod_style/seethrough,
|
|
"reverse_dropoff_coords" = list(reverse_turf.x, reverse_turf.y, reverse_turf.z)
|
|
))
|
|
|
|
/obj/machinery/botpad/proc/recall(mob/living/user)
|
|
var/atom/our_bot = launched_bot?.resolve()
|
|
if(isnull(our_bot))
|
|
user.balloon_alert(user, "no bots sent from the pad!")
|
|
return
|
|
user.balloon_alert(user, "bot sent back to pad")
|
|
if(isbasicbot(our_bot))
|
|
var/mob/living/basic/bot/basic_bot = our_bot
|
|
basic_bot.summon_bot(src)
|
|
return
|
|
var/mob/living/simple_animal/bot/simple_bot = our_bot
|
|
simple_bot.call_bot(src, get_turf(src))
|
|
|
|
/obj/structure/closet/supplypod/transport/botpod
|
|
reverse_option_list = list("Mobs"=TRUE,"Objects"=FALSE,"Anchored"=FALSE,"Underfloor"=FALSE,"Wallmounted"=FALSE,"Floors"=FALSE,"Walls"=FALSE,"Mecha"=FALSE)
|
|
leavingSound = 'sound/vehicles/rocketlaunch.ogg'
|