From 1f7a411868b8fa186fcee622dce032b0bb7b8326 Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Mon, 7 Aug 2023 11:00:11 +1000 Subject: [PATCH 1/6] Readding AI shell construction. --- code/game/objects/items/robot/robot_frame.dm | 50 ++++++++++---------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/code/game/objects/items/robot/robot_frame.dm b/code/game/objects/items/robot/robot_frame.dm index 29591915c7..857aed0a05 100644 --- a/code/game/objects/items/robot/robot_frame.dm +++ b/code/game/objects/items/robot/robot_frame.dm @@ -84,37 +84,39 @@ return var/obj/item/mmi/M = W - var/mob/living/carbon/brain/B = M.brainmob - if(!B) - to_chat(user, SPAN_WARNING("Sticking an empty [W.name] into the frame would sort of defeat the purpose.")) - return + if(!istype(M, /obj/item/mmi/inert)) + var/mob/living/carbon/brain/B = M.brainmob + if(!B) + to_chat(user, SPAN_WARNING("Sticking an empty [W.name] into the frame would sort of defeat the purpose.")) + return - if(jobban_isbanned(B, "Robot")) - to_chat(user, SPAN_WARNING("\The [W] does not seem to fit.")) - return + if(jobban_isbanned(B, "Cyborg")) + to_chat(user, SPAN_WARNING("\The [W] does not seem to fit.")) + return - if(B.stat == DEAD) - to_chat(user, SPAN_WARNING("Sticking a dead [W.name] into the frame would sort of defeat the purpose.")) - return + if(B.stat == DEAD) + to_chat(user, SPAN_WARNING("Sticking a dead [W.name] into the frame would sort of defeat the purpose.")) + return - var/ghost_can_reenter = 0 - if(B.mind) - if(B.key) - ghost_can_reenter = TRUE - else - for(var/mob/observer/dead/G in player_list) - if(G.can_reenter_corpse && G.mind == B.mind) - ghost_can_reenter = TRUE - //Jamming a ghosted brain into a borg is likely detrimental, and may result in some problems. - to_chat(user, SPAN_NOTICE("\The [W] is completely unresponsive, but it may be able to auto-resuscitate if you leave it be for awhile.")) - break + var/ghost_can_reenter = 0 + if(B.mind) + if(B.key) + ghost_can_reenter = TRUE + else + for(var/mob/observer/dead/G in player_list) + if(G.can_reenter_corpse && G.mind == B.mind) + ghost_can_reenter = TRUE + //Jamming a ghosted brain into a borg is likely detrimental, and may result in some problems. + to_chat(user, SPAN_NOTICE("\The [W] is completely unresponsive, but it may be able to auto-resuscitate if you leave it be for awhile.")) + break - if(!ghost_can_reenter) - to_chat(user, SPAN_WARNING("\The [W] is completely unresponsive; there's no point.")) - return + if(!ghost_can_reenter) + to_chat(user, SPAN_WARNING("\The [W] is completely unresponsive; there's no point.")) + return if(!user.unEquip(W)) return + var/mob/living/silicon/robot/O = new product(get_turf(loc)) if(!O) return From 7a6bf8ea74394c0f0b72aeaf948880f2bc8d0e6f Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Mon, 7 Aug 2023 11:02:32 +1000 Subject: [PATCH 2/6] Default AI shell on the map will be a flying module. --- .../living/silicon/robot/robot_remote_control.dm | 13 +++++++++++-- maps/cynosure/cynosure-3.dmm | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_remote_control.dm b/code/modules/mob/living/silicon/robot/robot_remote_control.dm index b99a141163..45ae7de2d5 100644 --- a/code/modules/mob/living/silicon/robot/robot_remote_control.dm +++ b/code/modules/mob/living/silicon/robot/robot_remote_control.dm @@ -7,12 +7,17 @@ GLOBAL_LIST_EMPTY(available_ai_shells) var/deployed = FALSE var/mob/living/silicon/ai/mainframe = null -// Premade AI shell, for roundstart shells. +// Premade AI shells, for roundstart landmark spawn. /mob/living/silicon/robot/ai_shell/Initialize() mmi = new /obj/item/mmi/inert/ai_remote(src) post_mmi_setup() return ..() +/mob/living/silicon/robot/flying/ai_shell/Initialize() + mmi = new /obj/item/mmi/inert/ai_remote(src) + post_mmi_setup() + return ..() + // Call after inserting or instantiating an MMI. /mob/living/silicon/robot/proc/post_mmi_setup() if(istype(mmi, /obj/item/mmi/inert/ai_remote)) @@ -128,8 +133,12 @@ GLOBAL_LIST_EMPTY(available_ai_shells) icon = 'icons/mob/screen1.dmi' icon_state = "x3" delete_me = TRUE + var/robot_type = /mob/living/silicon/robot/ai_shell /obj/effect/landmark/free_ai_shell/Initialize() if(config.allow_ai_shells && config.give_free_ai_shell) - new /mob/living/silicon/robot/ai_shell(get_turf(src)) + new shell_type(get_turf(src)) return ..() + +/obj/effect/landmark/free_ai_shell/flying + robot_type = /mob/living/silicon/robot/flying/ai_shell diff --git a/maps/cynosure/cynosure-3.dmm b/maps/cynosure/cynosure-3.dmm index 3500357a56..a5b9cff7cb 100644 --- a/maps/cynosure/cynosure-3.dmm +++ b/maps/cynosure/cynosure-3.dmm @@ -14284,7 +14284,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 1 }, -/obj/effect/landmark/free_ai_shell, +/obj/effect/landmark/free_ai_shell/flying, /turf/simulated/floor/tiled/techfloor, /area/surface/station/ai) "iUT" = ( From d413540de983759ef8964940933b2973339f7f8f Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Mon, 7 Aug 2023 11:05:38 +1000 Subject: [PATCH 3/6] Butler module > Service module. --- code/game/objects/items/robot/robot_frame.dm | 5 +++-- .../mob/living/silicon/robot/robot_modules/station.dm | 10 +++++----- .../mob/living/silicon/robot/robot_remote_control.dm | 4 ++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/code/game/objects/items/robot/robot_frame.dm b/code/game/objects/items/robot/robot_frame.dm index 857aed0a05..4a09895b43 100644 --- a/code/game/objects/items/robot/robot_frame.dm +++ b/code/game/objects/items/robot/robot_frame.dm @@ -84,8 +84,8 @@ return var/obj/item/mmi/M = W + var/mob/living/carbon/brain/B = M.brainmob if(!istype(M, /obj/item/mmi/inert)) - var/mob/living/carbon/brain/B = M.brainmob if(!B) to_chat(user, SPAN_WARNING("Sticking an empty [W.name] into the frame would sort of defeat the purpose.")) return @@ -125,7 +125,8 @@ O.invisibility = 0 O.custom_name = created_name O.updatename("Default") - B.mind.transfer_to(O) + if(B) + B.mind.transfer_to(O) if(O.mind && O.mind.assigned_role) O.job = O.mind.assigned_role else diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index ee6d8435f4..b2ade1774a 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -463,8 +463,8 @@ LANGUAGE_ZADDAT = 1, ) -/obj/item/robot_module/robot/clerical/butler - display_name = "Butler" +/obj/item/robot_module/robot/clerical/service + display_name = "Service" sprites = list( "M-USE NanoTrasen" = "robotServ", "Haruka" = "marinaSV", @@ -504,7 +504,7 @@ ) emag = /obj/item/reagent_containers/food/drinks/bottle/small/beer -/obj/item/robot_module/robot/clerical/butler/flying +/obj/item/robot_module/robot/clerical/service/flying module_category = ROBOT_MODULE_TYPE_FLYING can_be_pushed = TRUE sprites = list( @@ -514,7 +514,7 @@ "Hydroponics Drone" = "drone-hydro" ) -/obj/item/robot_module/robot/clerical/butler/finalize_emag() +/obj/item/robot_module/robot/clerical/service/finalize_emag() . = ..() if(!emag.reagents) emag.create_reagents(50) @@ -523,7 +523,7 @@ emag.reagents.add_reagent("beer2", 50) emag.name = "Mickey Finn's Special Brew" -/obj/item/robot_module/robot/clerical/butler/finalize_equipment() +/obj/item/robot_module/robot/clerical/service/finalize_equipment() . = ..() var/obj/item/rsf/M = locate() in modules M.stored_matter = 30 diff --git a/code/modules/mob/living/silicon/robot/robot_remote_control.dm b/code/modules/mob/living/silicon/robot/robot_remote_control.dm index 45ae7de2d5..f0735d3428 100644 --- a/code/modules/mob/living/silicon/robot/robot_remote_control.dm +++ b/code/modules/mob/living/silicon/robot/robot_remote_control.dm @@ -133,7 +133,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells) icon = 'icons/mob/screen1.dmi' icon_state = "x3" delete_me = TRUE - var/robot_type = /mob/living/silicon/robot/ai_shell + var/shell_type = /mob/living/silicon/robot/ai_shell /obj/effect/landmark/free_ai_shell/Initialize() if(config.allow_ai_shells && config.give_free_ai_shell) @@ -141,4 +141,4 @@ GLOBAL_LIST_EMPTY(available_ai_shells) return ..() /obj/effect/landmark/free_ai_shell/flying - robot_type = /mob/living/silicon/robot/flying/ai_shell + shell_type = /mob/living/silicon/robot/flying/ai_shell From 8fba9374c31941f60dd82b32ba01653664d7bf2e Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Mon, 7 Aug 2023 11:16:55 +1000 Subject: [PATCH 4/6] Fixes some issues with borg icons. --- code/game/objects/items/robot/robot_frame.dm | 2 +- .../silicon/robot/robot_modules/station.dm | 2 +- .../living/silicon/robot/subtypes/flying.dm | 1 - icons/mob/robots/robots_flying.dmi | Bin 113968 -> 113974 bytes 4 files changed, 2 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/robot/robot_frame.dm b/code/game/objects/items/robot/robot_frame.dm index 4a09895b43..e259f51891 100644 --- a/code/game/objects/items/robot/robot_frame.dm +++ b/code/game/objects/items/robot/robot_frame.dm @@ -21,7 +21,7 @@ else for(var/part in required_parts) if(!parts[part]) - var/obj/item/part_type = part + var/obj/item/part_type = required_parts[part] . += SPAN_WARNING("It is missing \a [initial(part_type.name)]") /obj/item/robot_parts/frame/update_model_info(var/model) diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index b2ade1774a..7e221bd6ba 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -29,7 +29,7 @@ module_category = ROBOT_MODULE_TYPE_FLYING can_be_pushed = TRUE sprites = list( - "Drone" = "drone-standard", + "Drone" = "robot", "Pyralis" = "Glitterfly-Standard", "Cabeiri" = "eyebot-standard" ) diff --git a/code/modules/mob/living/silicon/robot/subtypes/flying.dm b/code/modules/mob/living/silicon/robot/subtypes/flying.dm index cfcd3ea266..d1cb6ae6f2 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/flying.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/flying.dm @@ -1,7 +1,6 @@ /mob/living/silicon/robot/flying desc = "A utility robot with an anti-gravity hover unit and a lightweight frame." icon = 'icons/mob/robots/robots_flying.dmi' - icon_state = "drone-standard" module_category = ROBOT_MODULE_TYPE_FLYING dismantle_type = /obj/item/robot_parts/frame/flyer power_efficiency = 0.75 diff --git a/icons/mob/robots/robots_flying.dmi b/icons/mob/robots/robots_flying.dmi index 9e59bb8bf20ffa8049db4bae11fabf28e51eecfc..472fd220fb5c24268e4354f0c391d79ec489ee30 100644 GIT binary patch delta 534 zcmV+x0_pv*`UbZ829P8H2azQqe^Ie|x%$#2C^8^DY)>FrtgY3N0*XoCx8Fh8>IHQy zDn(8P{_i6ViIQ_Kp4QKs7qQxI$|GQ~-icZ)AHJ5w$r|cJExuJ{(SdC{iVuMlfvClu zKT5v`w^t5&A)C9hFcyQT#j-43QSBgzT0BnVznqx)c|UsXX*LA|1eq2!f9M^^0Q03` zfFRT3=VW8SHNcW5A~6lFwGIF|6_S~ALkDaD2i7|zA~C%KV;j|T3Zx=`*9(u9xeAF$ zOm~Ap&(Ws==XbS^x4vmW%>Gu+l4t2tk(lm%NE}#3{yi!~XQ4MA6IE3f26{D!T0Ab2 zf0uQd4t6#WZv@hznAiP*f1^){$7GA@2yXy;-X>yV+LH{VoKZNj7?))-Ani#8Xbxy8 zaV;_+?TL3H@fq!jGu2!|d*WR@d`5fvca2!rvdS^NWx-hDzdxuTKdJKA8w?Y-oBe@2S++-~OdbCYc3 z`EhOUa~jGPjU3zQbBohTre}!~-R-^PoBo^1YnKvlzH?3ES?B?$FEG|rWt%$X z%pi9#`87}=oUAh+oceiaq~`t*%~j3fBRX^E&Q)gM_hS9B607Z|`~zLC$A0g9F`UbH229P8H0g)vke{s=zx%$#3C^8^DtWO|YtgTIv0*XoCx8Ffos}*xB zDn(8P{_i6ViIQ_G9@o#C7qQxI$|IoH&Wc7X@9xXuq!kUK5#Q^w7(n*}g$GZPKs4gU z9V@p7yO$P>sJff7P#V2x#Ih{jQ0~BsMm$X9znz%*dA~wuq4FfHlBj0me=vftn9Mm2 z^UcKeg!nnxX|Nrzt#(Cn{lky+Y$`2aM#GKc4Stu}a6peUT zB>z6w=?2(oPrMOGheEzJe+P~}B_5JJ$|L*+*z-0K6KfqY59$o4byRui4yY+{Ei$0i z5${CeGp!@eRC9^e5%1#RGp(cdYed_gRffs6j(DdOlX*6p2=L8})$7H*xcoRw>P5Y% z7xkyYUt)?Sm+l}|H@TwNaljs&{eot4MUmqPwb%aoUUEH=Vm-H;e>weJC5t>iF716z zL)oIpv7J7*IIU!ABEwJcAh8>+?#&s1Kzlz8)&V08U?Etf|U24brNy+QH=4 zK!I@5R{iJH&qD(>_lIb%Y8D^RnLBr`G6TOA>z9>SZ8zl~o)6Am>B?~7001BWNkl Date: Mon, 7 Aug 2023 11:21:24 +1000 Subject: [PATCH 5/6] Attempting to make borg floating more consistent. --- code/modules/mob/animations.dm | 1 - .../living/silicon/robot/subtypes/flying.dm | 24 ++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/animations.dm b/code/modules/mob/animations.dm index a315708717..6e0cab6785 100644 --- a/code/modules/mob/animations.dm +++ b/code/modules/mob/animations.dm @@ -113,7 +113,6 @@ note dizziness decrements automatically in the mob's Life() proc. stop_floating() return floatiness = n - if(floatiness && !is_floating) start_floating() else if(!floatiness && is_floating) diff --git a/code/modules/mob/living/silicon/robot/subtypes/flying.dm b/code/modules/mob/living/silicon/robot/subtypes/flying.dm index d1cb6ae6f2..35f5c3d834 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/flying.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/flying.dm @@ -11,6 +11,12 @@ mob_swap_flags = MONKEY|SLIME|SIMPLE_ANIMAL mob_push_flags = MONKEY|SLIME|SIMPLE_ANIMAL +/mob/living/silicon/robot/flying/update_floating() + if(hovering) + make_floating(10) + return + ..() + /mob/living/silicon/robot/flying/initialize_components() components["actuator"] = new/datum/robot_component/actuator(src) components["radio"] = new/datum/robot_component/radio(src) @@ -28,16 +34,18 @@ start_hovering() /mob/living/silicon/robot/flying/proc/start_hovering() - hovering = TRUE - pass_flags |= PASSTABLE - default_pixel_y = 0 - make_floating(10) + if(!hovering) + hovering = TRUE + pass_flags |= PASSTABLE + default_pixel_y = 0 + update_floating() /mob/living/silicon/robot/flying/proc/stop_hovering() - hovering = FALSE - pass_flags &= ~PASSTABLE - default_pixel_y = -8 - stop_floating() + if(hovering) + hovering = FALSE + pass_flags &= ~PASSTABLE + default_pixel_y = -8 + update_floating() /mob/living/silicon/robot/flying/death() . = ..() From 9f7cbe9437cc7f04273cc4eafc334174b93c656b Mon Sep 17 00:00:00 2001 From: MistakeNot4892 Date: Mon, 7 Aug 2023 11:31:10 +1000 Subject: [PATCH 6/6] Floating mobs will not cause catwalk footstep sounds. --- code/game/objects/structures/catwalk.dm | 4 +++- code/modules/mob/living/silicon/robot/subtypes/flying.dm | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm index 9642dc1e34..442ce46160 100644 --- a/code/game/objects/structures/catwalk.dm +++ b/code/game/objects/structures/catwalk.dm @@ -123,7 +123,9 @@ /obj/structure/catwalk/Crossed(atom/movable/AM) . = ..() if(isliving(AM) && !AM.is_incorporeal()) - playsound(src, pick('sound/effects/footstep/catwalk1.ogg', 'sound/effects/footstep/catwalk2.ogg', 'sound/effects/footstep/catwalk3.ogg', 'sound/effects/footstep/catwalk4.ogg', 'sound/effects/footstep/catwalk5.ogg'), 25, 1) + var/mob/living/M = AM + if(!M.is_floating) + playsound(src, pick('sound/effects/footstep/catwalk1.ogg', 'sound/effects/footstep/catwalk2.ogg', 'sound/effects/footstep/catwalk3.ogg', 'sound/effects/footstep/catwalk4.ogg', 'sound/effects/footstep/catwalk5.ogg'), 25, 1) /obj/effect/catwalk_plated name = "plated catwalk spawner" diff --git a/code/modules/mob/living/silicon/robot/subtypes/flying.dm b/code/modules/mob/living/silicon/robot/subtypes/flying.dm index 35f5c3d834..35342d4802 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/flying.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/flying.dm @@ -13,7 +13,7 @@ /mob/living/silicon/robot/flying/update_floating() if(hovering) - make_floating(10) + make_floating(TRUE) return ..()