Matriarch Drones (#12275)

* Matriarch Drones

* forgot this
This commit is contained in:
Geeves
2021-08-05 13:01:50 -03:00
committed by GitHub
parent 5b7cb26919
commit b53fa357ed
13 changed files with 130 additions and 16 deletions
+11 -3
View File
@@ -17,10 +17,12 @@
if (!message)
return
message = formalize_text(message)
log_say("[key_name(speaker)] : ([name]) [message]",ckey=key_name(speaker))
var/message_start = "<i><span class='game say'>[name], <span class='name'>[speaker.name]</span>"
var/message_body = "<span class='message'>[speaker.say_quote(message)], \"[message]\"</span></span></i>"
var/message_start = "<span style='font-size: [speaker.get_binary_font_size()];'><i><span class='game say'>[name], <span class='name'>[speaker.real_name]</span>"
var/message_body = "<span class='message'>[speaker.say_quote(message)], \"[message]\"</span></span></i></span>"
for (var/mob/M in dead_mob_list)
if(!istype(M,/mob/abstract/new_player) && !istype(M,/mob/living/carbon/brain)) //No meta-evesdropping
@@ -31,7 +33,7 @@
if(drone_only && !istype(S,/mob/living/silicon/robot/drone))
continue
else if(istype(S , /mob/living/silicon/ai))
message_start = "<i><span class='game say'>[name], <a href='byond://?src=\ref[S];track2=\ref[S];track=\ref[speaker];trackname=[html_encode(speaker.name)]'><span class='name'>[speaker.name]</span></a></span></i>"
message_start = "<i><span class='game say'>[name], <a href='byond://?src=\ref[S];track2=\ref[S];track=\ref[speaker];trackname=[html_encode(speaker.name)]'><span class='name'>[speaker.real_name]</span></a></span></i>"
else if (!S.binarycheck())
continue
@@ -61,3 +63,9 @@
key = "d"
flags = RESTRICTED | HIVEMIND
drone_only = 1
/mob/living/proc/get_binary_font_size()
return "1em"
/mob/living/silicon/robot/drone/construction/matriarch/get_binary_font_size()
return "1.2em"
@@ -138,6 +138,29 @@
var/my_home_z
/mob/living/silicon/robot/drone/construction/matriarch
name = "matriarch drone"
law_type = /datum/ai_laws/matriarch_drone
/mob/living/silicon/robot/drone/construction/matriarch/Initialize()
. = ..()
SSghostroles.add_spawn_atom("matriarchmaintdrone", src)
/mob/living/silicon/robot/drone/construction/matriarch/assign_player(mob/user)
. = ..()
SSghostroles.remove_spawn_atom("matriarchmaintdrone", src)
/mob/living/silicon/robot/drone/construction/matriarch/ghostize(can_reenter_corpse, should_set_timer)
. = ..()
SSghostroles.add_spawn_atom("matriarchmaintdrone", src)
/mob/living/silicon/robot/drone/construction/matriarch/Destroy()
SSghostroles.remove_spawn_atom("matriarchmaintdrone", src)
return ..()
/mob/living/silicon/robot/drone/construction/matriarch/updatename()
return
/mob/living/silicon/robot/drone/Initialize()
. = ..()
@@ -170,6 +193,7 @@
laws = new law_type
if(!module)
module = new module_type(src, src)
recalculate_synth_capacities()
flavor_text = "It's a tiny little repair drone. The casing is stamped with an corporate logo and the subscript: '[current_map.company_name] Recursive Repair Systems: Fixing Tomorrow's Problem, Today!'"
playsound(get_turf(src), 'sound/machines/twobeep.ogg', 50, 0)
@@ -12,6 +12,8 @@
//Used to enable or disable drone fabrication.
var/obj/machinery/drone_fabricator/dronefab
var/static/list/call_area_names
/obj/machinery/computer/drone_control/attack_ai(var/mob/user as mob)
if(!ai_can_interact(user))
return
@@ -60,8 +62,13 @@
usr.set_machine(src)
if(href_list["setarea"])
if(!call_area_names)
call_area_names = list()
for(var/area/A as anything in all_areas)
if(A.station_area)
call_area_names += A.name
//Probably should consider using another list, but this one will do.
var/t_area = input(usr, "Select the area to ping.", "Set Target Area") as null|anything in SSdisposals.tagger_locations
var/t_area = input(usr, "Select the area to ping.", "Set Target Area") as null|anything in call_area_names
if(!t_area)
return
@@ -1,4 +1,4 @@
/mob/living/silicon/robot/drone/say(var/message)
/mob/living/silicon/robot/drone/say(message, datum/language/speaking)
if(hacked)
return ..(message)
@@ -9,6 +9,8 @@
if(copytext(message, 1, 2) == "*")
return emote(copytext(message,2))
message = formalize_text(message)
if(copytext(message, 1, 2) == ";")
var/datum/language/L = all_languages["Drone Talk"]
if(istype(L))
@@ -25,9 +27,11 @@
var/list/listeners = hearers(5, src)
listeners |= src
var/list/hear_clients = list()
for(var/mob/living/silicon/D in listeners)
if(D.client && D.local_transmit)
to_chat(D, "<b>[src]</b> transmits, \"[message]\"")
to_chat(D, "<b>[real_name]</b> transmits, \"[message]\"")
hear_clients += D.client
for(var/mob/M in player_list)
if(isnull(M.client))
@@ -35,6 +39,10 @@
if(istype(M, /mob/abstract/new_player))
continue
else if(M.stat == DEAD && M.client.prefs.toggles & CHAT_GHOSTEARS)
to_chat(M, "<b>[src]</b> transmits, \"[message]\"")
to_chat(M, "<b>[real_name]</b> transmits, \"[message]\"")
hear_clients += M.client
do_animate_chat(message, speaking, FALSE, hear_clients, 30)
return TRUE
return ..(message, 0)
@@ -208,6 +208,8 @@
mult += storage.rating
for(var/datum/matter_synth/M in module.synths)
M.set_multiplier(mult)
for(var/obj/item/stack/material/SM in module.modules)
SM.update_strings()
/mob/living/silicon/robot/proc/init()
ai_camera = new /obj/item/device/camera/siliconcam/robot_camera(src)
@@ -128,6 +128,9 @@ var/global/list/robot_modules = list(
for(var/datum/matter_synth/T in synths)
T.add_charge(T.recharge_rate * rate)
for(var/obj/item/stack/material/SM in modules)
SM.update_strings()
/obj/item/robot_module/proc/rebuild()//Rebuilds the list so it's possible to add/remove items from the module
var/list/temp_list = modules
modules = list()
@@ -895,9 +898,9 @@ var/global/list/robot_modules = list(
var/datum/matter_synth/metal = new /datum/matter_synth/metal(25000)
var/datum/matter_synth/glass = new /datum/matter_synth/glass(25000)
var/datum/matter_synth/wood = new /datum/matter_synth/wood(4000)
var/datum/matter_synth/plastic = new /datum/matter_synth/plastic(2000)
var/datum/matter_synth/wire = new /datum/matter_synth/wire(15)
var/datum/matter_synth/wood = new /datum/matter_synth/wood(10000)
var/datum/matter_synth/plastic = new /datum/matter_synth/plastic(10000)
var/datum/matter_synth/wire = new /datum/matter_synth/wire(30)
synths += metal
synths += glass
synths += wood
@@ -950,11 +953,10 @@ var/global/list/robot_modules = list(
/obj/item/robot_module/drone/construction
name = "construction drone module"
channels = list(CHANNEL_ENGINEERING = TRUE)
languages = list()
/obj/item/robot_module/drone/construction/Initialize()
. = ..()
src.modules += new /obj/item/rfd/construction/borg(src)
modules += new /obj/item/rfd/construction/borg(src)
/obj/item/robot_module/drone/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
var/obj/item/device/lightreplacer/LR = locate() in src.modules