mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-30 02:52:30 +00:00
## About The Pull Request Fixes #68825 Fixes #72249 Fixes #70184 Converts maintenance drones to use the basic mob framework. As drones don't use AI, this was mostly a perfunctory conversion, but I took the opportunity to clean up drone code a bit and fixed a few bugs. Noteworthy changes: - Drones now have a `can_unhack` field. This is set to FALSE on syndrones, because unhacking them doesn't make them stop being evil but does cause some weirdness. Syndrones are unused right now, but you never know. - Drones use the Dextrous component for hand-having. - Drones no longer have an internal ID card, instead being given all-access with the `simple_access` component. - Picking up drones now works the same as for other mobs, instead of pointlessly copying the code into `attack_hand`. As a consequence, it is now possible to punch drones if you want to for some reason. - Drones can now reboot/cannibalize dead drones without being in combat mode. - Cannibalizing a drone that contains a client no longer runtimes - the client is ghosted ahead of time. - Drones now have TRAIT_ADVANCEDTOOLUSER, allowing them to properly interact with machines. - Trying to screwdriver a dead drone now gives a balloon alert about why you can't do that. In addition to these changes, I cleaned up the code quite a bit, organizing things better and placing more useful comments throughout. And removing a hell of a lot of single-letter variable names. I will note that this PR does _not_ address #72129. The issue there is that sprites for drones-as-hats are entirely nonexistent, and I'm not a spriter. It shouldn't be too hard to fix if someone makes dronehat sprites, though! ## Why It's Good For The Game Kills 8 more simple animals. In addition to that, drones were clearly a bit neglected, so this fixes them up a bit and makes the code a little bit clearer. Maybe not that much clearer, but it's something. It certainly leaves them in a better place for further work if anyone wants to do that. Plus, a bunch of bugs and other jankiness are fixed now, which is nice. ## Changelog 🆑 refactor: Maintenance Drones now use the basic mob framework. This shouldn't come with any noticeable gameplay changes, but please report any bugs. fix: Drones can now interact normally with electrified doors. fix: Drones' built-in tools can no longer be placed in storage objects and/or thrown on the floor. fix: Drones can now perform right-click interactions correctly, such as deconstructing reinforced windows. fix: Drones can now reboot or cannibalize other drones without being in combat mode. /🆑
35 lines
803 B
Plaintext
35 lines
803 B
Plaintext
/**
|
|
* Echoes drone laws to the user
|
|
*
|
|
* See [/mob/living/basic/drone/var/laws]
|
|
*/
|
|
/mob/living/basic/drone/verb/check_laws()
|
|
set category = "Drone"
|
|
set name = "Check Laws"
|
|
|
|
to_chat(src, "<b>Drone Laws</b>")
|
|
to_chat(src, laws)
|
|
|
|
/**
|
|
* Creates an alert to drones in the same network
|
|
*
|
|
* Prompts user for alert level of:
|
|
* * Low
|
|
* * Medium
|
|
* * High
|
|
* * Critical
|
|
*
|
|
* Attaches area name to message
|
|
*/
|
|
/mob/living/basic/drone/verb/drone_ping()
|
|
set category = "Drone"
|
|
set name = "Drone ping"
|
|
|
|
var/alert_s = input(src,"Alert severity level","Drone ping",null) as null|anything in list("Low","Medium","High","Critical")
|
|
|
|
var/area/A = get_area(loc)
|
|
|
|
if(alert_s && A && stat != DEAD)
|
|
var/msg = span_boldnotice("DRONE PING: [name]: [alert_s] priority alert in [A.name]!")
|
|
alert_drones(msg)
|