Merge branch 'master' into Refactors-beds-stools-chairs

This commit is contained in:
Purpose
2018-09-29 15:36:27 +01:00
committed by GitHub
243 changed files with 2079 additions and 1399 deletions
+4 -4
View File
@@ -1,6 +1,6 @@
// At minimum every mob has a hear_say proc.
/mob/proc/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol)
/mob/proc/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol)
if(!client)
return 0
@@ -70,12 +70,12 @@
if(speaker == src)
to_chat(src, "<span class='warning'>You cannot hear yourself speak!</span>")
else
to_chat(src, "<span class='name'>[speaker_name]</span>[alt_name] talks but you cannot hear [speaker.p_them()].")
to_chat(src, "<span class='name'>[speaker_name]</span>[speaker.GetAltName()] talks but you cannot hear [speaker.p_them()].")
else
if(language)
to_chat(src, "<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [track][language.format_message(message, verb)]</span>")
to_chat(src, "<span class='game say'><span class='name'>[speaker_name]</span>[speaker.GetAltName()] [track][language.format_message(message, verb)]</span>")
else
to_chat(src, "<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [track][verb], <span class='message'><span class='body'>\"[message]\"</span></span></span>")
to_chat(src, "<span class='game say'><span class='name'>[speaker_name]</span>[speaker.GetAltName()] [track][verb], <span class='message'><span class='body'>\"[message]\"</span></span></span>")
if(speech_sound && (get_dist(speaker, src) <= world.view && src.z == speaker.z))
var/turf/source = speaker? get_turf(speaker) : get_turf(src)
src.playsound_local(source, speech_sound, sound_vol, 1)
+2 -2
View File
@@ -83,7 +83,7 @@
//This is probably the main one you need to know :)
//Just puts stuff on the floor for most mobs, since all mobs have hands but putting stuff in the AI/corgi/ghost hand is VERY BAD.
/mob/proc/put_in_hands(obj/item/W)
W.forceMove(get_turf(src))
W.forceMove(drop_location())
W.layer = initial(W.layer)
W.plane = initial(W.plane)
W.dropped()
@@ -137,7 +137,7 @@
if(I)
if(client)
client.screen -= I
I.forceMove(loc)
I.forceMove(drop_location())
I.dropped(src)
if(I)
I.layer = initial(I.layer)
@@ -66,7 +66,7 @@
#define MAX_ALIEN_LEAP_DIST 7
/mob/living/carbon/alien/humanoid/hunter/proc/leap_at(var/atom/A)
if(pounce_cooldown)
if(pounce_cooldown > world.time)
to_chat(src, "<span class='alertalien'>You are too fatigued to pounce right now!</span>")
return
@@ -114,9 +114,7 @@
Weaken(2, 1, 1)
toggle_leap(0)
pounce_cooldown = !pounce_cooldown
spawn(pounce_cooldown_time) //3s by default
pounce_cooldown = !pounce_cooldown
pounce_cooldown = world.time + pounce_cooldown_time
else if(A.density && !A.CanPass(src))
visible_message("<span class ='danger'>[src] smashes into [A]!</span>", "<span class ='alertalien'>[src] smashes into [A]!</span>")
Weaken(2, 1, 1)
@@ -3,3 +3,4 @@
desc = "Enables radio capability on MMIs when either installed directly on the MMI, or through a cyborg's chassis."
icon = 'icons/obj/module.dmi'
icon_state = "cyborg_upgrade1"
origin_tech = "programming=3;biotech=2;engineering=2"
+2 -2
View File
@@ -29,7 +29,7 @@
to_chat(usr, "<span class='warning'>You cannot speak, as your internal speaker is turned off.</span>")
. = FALSE
/mob/living/carbon/brain/handle_message_mode(var/message_mode, var/message, var/verb, var/speaking, var/used_radios, var/alt_name)
/mob/living/carbon/brain/handle_message_mode(var/message_mode, var/message, var/verb, var/speaking, var/used_radios)
switch(message_mode)
if("headset")
var/radio_worked = 0 // If any of the radios our brainmob could use functioned, this is set true so that we don't use any others
@@ -45,6 +45,6 @@
radio_worked = c.radio.talk_into(src, message, message_mode, verb, speaking)
return radio_worked
if("whisper")
whisper_say(message, speaking, alt_name)
whisper_say(message, speaking)
return 1
else return 0
@@ -178,7 +178,7 @@ emp_act
/mob/living/carbon/human/grabbedby(mob/living/user)
if(w_uniform)
w_uniform.add_fingerprint(user)
..()
return ..()
//Returns 1 if the attack hit, 0 if it missed.
/mob/living/carbon/human/attacked_by(obj/item/I, mob/living/user, def_zone)
@@ -630,7 +630,7 @@
var/obj/item/reagent_containers/food/snacks/newSnack = new chosenType(get_turf(src))
TARGET = newSnack
newSnack.reagents.remove_any((newSnack.reagents.total_volume/2)-1)
newSnack.name = "Synthetic [newSnack.name]"
newSnack.name = "synthetic [newSnack.name]"
custom_emote(2, "[pick("gibbers","drools","slobbers","claps wildly","spits")] as [p_they()] vomit[p_s()] [newSnack] from [p_their()] mouth!")
catch(var/exception/e)
log_runtime(e, src, "Caught in SNPC cooking module")
@@ -581,7 +581,7 @@
saveVoice()
..()
/mob/living/carbon/human/interactive/hear_say(message, verb = "says", datum/language/language = null, alt_name = "", italics = 0, mob/speaker = null, sound/speech_sound, sound_vol)
/mob/living/carbon/human/interactive/hear_say(message, verb = "says", datum/language/language = null, italics = 0, mob/speaker = null, sound/speech_sound, sound_vol)
if(!istype(speaker, /mob/living/carbon/human/interactive))
knownStrings |= html_decode(message)
..()
+6 -6
View File
@@ -1,10 +1,10 @@
/mob/living/carbon/human/say(var/message, var/sanitize = TRUE, var/ignore_speech_problems = FALSE, var/ignore_atmospherics = FALSE)
var/alt_name = ""
..(message, sanitize = sanitize, ignore_speech_problems = ignore_speech_problems, ignore_atmospherics = ignore_atmospherics) //ohgod we should really be passing a datum here.
/mob/living/carbon/human/GetAltName()
if(name != GetVoice())
alt_name = " (as [get_id_name("Unknown")])"
..(message, alt_name = alt_name, sanitize = sanitize, ignore_speech_problems = ignore_speech_problems, ignore_atmospherics = ignore_atmospherics) //ohgod we should really be passing a datum here.
return " (as [get_id_name("Unknown")])"
return ..()
/mob/living/carbon/human/proc/forcesay(list/append)
if(stat == CONSCIOUS)
@@ -160,7 +160,7 @@
returns[3] = speech_problem_flag
return returns
/mob/living/carbon/human/handle_message_mode(var/message_mode, var/message, var/verb, var/speaking, var/used_radios, var/alt_name)
/mob/living/carbon/human/handle_message_mode(var/message_mode, var/message, var/verb, var/speaking, var/used_radios)
switch(message_mode)
if("intercom")
for(var/obj/item/radio/intercom/I in view(1, src))
@@ -203,7 +203,7 @@
R.talk_into(src, message, null, verb, speaking)
if("whisper")
whisper_say(message, speaking, alt_name)
whisper_say(message, speaking)
return 1
else
if(message_mode)
@@ -127,14 +127,26 @@
if((head_organ.dna.species.name in tmp_hair.species_allowed) && (robohead.company in tmp_hair.models_allowed)) //Populate the list of available monitor styles only with styles that the monitor-head is allowed to use.
hair += i
var/file = file2text("config/custom_sprites.txt") //Pulls up the custom_sprites list
var/lines = splittext(file, "\n")
for(var/line in lines) // Looks for lines set up as screen:ckey:screen_name
var/list/Entry = splittext(line, ":") // split lines
for(var/i = 1 to Entry.len)
Entry[i] = trim(Entry[i]) // Cleans up lines
if(Entry.len != 3 || Entry[1] != "screen") // Ignore entries that aren't for screens
continue
if(Entry[2] == H.ckey) // They're in the list? Custom sprite time, var and icon change required
hair += Entry[3] // Adds custom screen to list
var/new_style = input(H, "Select a monitor display", "Monitor Display", head_organ.h_style) as null|anything in hair
var/new_color = input("Please select hair color.", "Monitor Color", head_organ.hair_colour) as null|color
if(H.incapacitated())
to_chat(H, "<span class='warning'>You were interrupted while changing your monitor display.</span>")
return
if(new_style)
H.change_hair(new_style)
H.change_hair(new_style, 1) // The 1 is to enable custom sprites
if(new_color)
H.change_hair_color(new_color)
H.change_hair_color(new_color)
@@ -83,7 +83,6 @@
if("Warden","Security Officer","Security Pod Pilot")
suit=/obj/item/clothing/suit/space/eva/plasmaman/security
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security
H.equip_or_collect(new /obj/item/gun/energy/gun/advtaser(H), slot_in_backpack)
if("Internal Affairs Agent")
suit=/obj/item/clothing/suit/space/eva/plasmaman/lawyer
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/lawyer
@@ -93,7 +92,6 @@
if("Head of Security")
suit=/obj/item/clothing/suit/space/eva/plasmaman/security/hos
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security/hos
H.equip_or_collect(new /obj/item/gun/energy/gun(H), slot_in_backpack)
if("Captain", "Blueshield")
suit=/obj/item/clothing/suit/space/eva/plasmaman/security/captain
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security/captain
@@ -106,7 +104,6 @@
if("Medical Doctor","Brig Physician","Virologist")
suit=/obj/item/clothing/suit/space/eva/plasmaman/medical
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/medical
H.equip_or_collect(new /obj/item/flashlight/pen(H), slot_in_backpack)
if("Paramedic")
suit=/obj/item/clothing/suit/space/eva/plasmaman/medical/paramedic
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/medical/paramedic
@@ -84,16 +84,21 @@
/datum/species/vox/after_equip_job(datum/job/J, mob/living/carbon/human/H)
if(!H.mind || !H.mind.assigned_role || H.mind.assigned_role != "Clown" && H.mind.assigned_role != "Mime")
H.unEquip(H.wear_mask)
H.unEquip(H.l_hand)
H.equip_or_collect(new /obj/item/clothing/mask/breath/vox(H), slot_wear_mask)
var/tank_pref = H.client && H.client.prefs ? H.client.prefs.speciesprefs : null
var/obj/item/tank/internal_tank
if(tank_pref)//Diseasel, here you go
H.equip_or_collect(new /obj/item/tank/nitrogen(H), slot_l_hand)
internal_tank = new /obj/item/tank/nitrogen(H)
else
H.equip_or_collect(new /obj/item/tank/emergency_oxygen/vox(H), slot_l_hand)
to_chat(H, "<span class='notice'>You are now running on nitrogen internals from the [H.l_hand] in your hand. Your species finds oxygen toxic, so you must breathe nitrogen only.</span>")
H.internal = H.l_hand
internal_tank = new /obj/item/tank/emergency_oxygen/vox(H)
if(!H.equip_to_appropriate_slot(internal_tank))
if(!H.put_in_any_hand_if_possible(internal_tank))
H.unEquip(H.l_hand)
H.equip_or_collect(internal_tank, slot_l_hand)
to_chat(H, "<span class='boldannounce'>Could not find an empty slot for internals! Please report this as a bug</span>")
H.internal = internal_tank
to_chat(H, "<span class='notice'>You are now running on nitrogen internals from the [internal_tank]. Your species finds oxygen toxic, so you must breathe nitrogen only.</span>")
H.update_action_buttons_icon()
/datum/species/vox/on_species_gain(mob/living/carbon/human/H)
@@ -1,10 +1,5 @@
//Lallander was here
/mob/living/carbon/human/whisper(message as text)
var/alt_name = ""
if(name != GetVoice())
alt_name = "(as [get_id_name("Unknown")])"
message = trim_strip_html_properly(message) //bit of duplicate code, acceptable because the workaround would be annoying
//parse the language code and consume it
@@ -23,4 +18,4 @@
message = trim_left(message)
message = handle_autohiss(message, speaking)
whisper_say(message, speaking, alt_name)
whisper_say(message, speaking)
+1 -1
View File
@@ -14,7 +14,7 @@
return 1
return ..()
/mob/living/carbon/slime/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol)
/mob/living/carbon/slime/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol)
if(speaker in Friends)
speech_buffer = list()
speech_buffer.Add(speaker)
+11 -9
View File
@@ -95,10 +95,10 @@ proc/get_radio_key_from_channel(var/channel)
returns[3] = speech_problem_flag
return returns
/mob/living/proc/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name)
/mob/living/proc/handle_message_mode(message_mode, message, verb, speaking, used_radios)
switch(message_mode)
if("whisper") //all mobs can whisper by default
whisper_say(message, speaking, alt_name)
whisper_say(message, speaking)
return 1
return 0
@@ -109,7 +109,7 @@ proc/get_radio_key_from_channel(var/channel)
return returns
/mob/living/say(var/message, var/datum/language/speaking = null, var/verb = "says", var/alt_name = "", var/sanitize = TRUE, var/ignore_speech_problems = FALSE, var/ignore_atmospherics = FALSE)
/mob/living/say(var/message, var/datum/language/speaking = null, var/verb = "says", var/sanitize = TRUE, var/ignore_speech_problems = FALSE, var/ignore_atmospherics = FALSE)
if(client)
if(client.prefs.muted & MUTE_IC)
to_chat(src, "<span class='danger'>You cannot speak in IC (Muted).</span>")
@@ -184,7 +184,7 @@ proc/get_radio_key_from_channel(var/channel)
return 0
var/list/used_radios = list()
if(handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name))
if(handle_message_mode(message_mode, message, verb, speaking, used_radios))
return 1
var/list/handle_v = handle_speech_sound()
@@ -268,7 +268,7 @@ proc/get_radio_key_from_channel(var/channel)
var/speech_bubble_test = say_test(message)
for(var/mob/M in listening)
M.hear_say(message, verb, speaking, alt_name, italics, src, speech_sound, sound_vol)
M.hear_say(message, verb, speaking, italics, src, speech_sound, sound_vol)
if(M.client)
speech_bubble_recipients.Add(M.client)
spawn(0)
@@ -359,7 +359,7 @@ proc/get_radio_key_from_channel(var/channel)
/mob/living/proc/get_whisper_loc()
return src
/mob/living/proc/whisper_say(var/message, var/datum/language/speaking = null, var/alt_name="", var/verb="whispers")
/mob/living/proc/whisper_say(var/message, var/datum/language/speaking = null, var/verb="whispers")
if(client)
if(client.prefs.muted & MUTE_IC)
to_chat(src, "<span class='danger'>You cannot speak in IC (Muted).</span>")
@@ -381,6 +381,7 @@ proc/get_radio_key_from_channel(var/channel)
var/eavesdropping_range = 2
var/watching_range = 5
var/italics = 1
var/adverb_added = FALSE
var/not_heard //the message displayed to people who could not hear the whispering
if(speaking)
@@ -389,6 +390,7 @@ proc/get_radio_key_from_channel(var/channel)
not_heard = "[verb] something"
else
var/adverb = pick("quietly", "softly")
adverb_added = TRUE
verb = "[speaking.speech_verb] [adverb]"
not_heard = "[speaking.speech_verb] something [adverb]"
else
@@ -404,7 +406,7 @@ proc/get_radio_key_from_channel(var/channel)
if(verb == "yells loudly")
verb = "slurs emphatically"
else if(speech_problem_flag)
else if(speech_problem_flag && !adverb_added)
var/adverb = pick("quietly", "softly")
verb = "[verb] [adverb]"
@@ -464,14 +466,14 @@ proc/get_radio_key_from_channel(var/channel)
var/speech_bubble_test = say_test(message)
for(var/mob/M in listening)
M.hear_say(message, verb, speaking, alt_name, italics, src)
M.hear_say(message, verb, speaking, italics, src)
if(M.client)
speech_bubble_recipients.Add(M.client)
if(eavesdropping.len)
var/new_message = stars(message) //hopefully passing the message twice through stars() won't hurt... I guess if you already don't understand the language, when they speak it too quietly to hear normally you would be able to catch even less.
for(var/mob/M in eavesdropping)
M.hear_say(new_message, verb, speaking, alt_name, italics, src)
M.hear_say(new_message, verb, speaking, italics, src)
if(M.client)
speech_bubble_recipients.Add(M.client)
+5 -5
View File
@@ -69,7 +69,7 @@ var/list/ai_verbs_default = list(
var/control_disabled = 0 // Set to 1 to stop AI from interacting via Click() -- TLE
var/malfhacking = 0 // More or less a copy of the above var, so that malf AIs can hack and still get new cyborgs -- NeoFite
var/malf_cooldown = 0 //Cooldown var for malf modules
var/malf_cooldown = 0 //Cooldown var for malf modules, stores a worldtime + cooldown
var/obj/machinery/power/apc/malfhack = null
var/explosive = 0 //does the AI explode when it dies?
@@ -281,7 +281,7 @@ var/list/ai_verbs_default = list(
/obj/machinery/ai_powersupply
name="\improper AI power supply"
active_power_usage=1000
use_power = 2
use_power = ACTIVE_POWER_USE
power_channel = EQUIP
var/mob/living/silicon/ai/powered_ai = null
invisibility = 100
@@ -303,9 +303,9 @@ var/list/ai_verbs_default = list(
return
if(!powered_ai.anchored)
loc = powered_ai.loc
use_power = 0
use_power = NO_POWER_USE
if(powered_ai.anchored)
use_power = 2
use_power = ACTIVE_POWER_USE
/mob/living/silicon/ai/proc/pick_icon()
set category = "AI Commands"
@@ -1250,7 +1250,7 @@ var/list/ai_verbs_default = list(
else
to_chat(src, "<span class='warning'>Target is not on or near any active cameras on the station.</span>")
/mob/living/silicon/ai/handle_fire()
return
@@ -137,6 +137,6 @@
acceleration = !acceleration
to_chat(usr, "Camera acceleration has been toggled [acceleration ? "on" : "off"].")
/mob/camera/aiEye/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol)
/mob/camera/aiEye/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol)
if(relay_speech)
ai.relay_speech(speaker, message, verb, language)
@@ -4,7 +4,7 @@
density = 1
anchored = 1
use_power = 1
use_power = IDLE_POWER_USE
idle_power_usage = 20
active_power_usage = 5000
@@ -1,7 +1,7 @@
/mob/living/silicon/robot/drone/say(var/message, var/datum/language/speaking = null)
if(copytext(message, 1, 2) == "*")
return emote(copytext(message, 2))
if(!speaking)
speaking = parse_language(message)
if(!speaking)
@@ -10,6 +10,6 @@
if(speaking)
return ..()
/mob/living/silicon/robot/drone/whisper_say(var/message, var/datum/language/speaking = null, var/alt_name="", var/verb="whispers")
/mob/living/silicon/robot/drone/whisper_say(var/message, var/datum/language/speaking = null, var/verb="whispers")
say(message) //drones do not get to whisper, only speak normally
return 1
@@ -20,6 +20,9 @@
contents -= O
if(module)
O.loc = module //Return item to module so it appears in its contents, so it can be taken out again.
for(var/X in O.actions) // Remove assocated actions
var/datum/action/A = X
A.Remove(src)
if(module_active == O)
module_active = null
@@ -56,6 +59,7 @@
O.plane = HUD_PLANE
O.screen_loc = inv1.screen_loc
contents += O
set_actions(O)
else if(!module_state_2)
O.mouse_opacity = initial(O.mouse_opacity)
module_state_2 = O
@@ -63,6 +67,7 @@
O.plane = HUD_PLANE
O.screen_loc = inv2.screen_loc
contents += O
set_actions(O)
else if(!module_state_3)
O.mouse_opacity = initial(O.mouse_opacity)
module_state_3 = O
@@ -70,10 +75,16 @@
O.plane = HUD_PLANE
O.screen_loc = inv3.screen_loc
contents += O
set_actions(O)
else
to_chat(src, "You need to disable a module first!")
update_icons()
/mob/living/silicon/robot/proc/set_actions(obj/item/I)
for(var/X in I.actions)
var/datum/action/A = X
A.Grant(src)
/mob/living/silicon/robot/proc/uneq_active()
uneq_module(module_active)
+12 -8
View File
@@ -51,6 +51,7 @@ var/list/robot_verbs_default = list(
var/opened = 0
var/custom_panel = null
var/list/custom_panel_names = list("Cricket")
var/list/custom_eye_names = list("Cricket","Standard")
var/emagged = 0
var/is_emaggable = TRUE
var/eye_protection = 0
@@ -306,7 +307,7 @@ var/list/robot_verbs_default = list(
module.channels = list("Service" = 1)
module_sprites["Basic"] = "robot_old"
module_sprites["Android"] = "droid"
module_sprites["Default"] = "robot"
module_sprites["Default"] = "Standard"
module_sprites["Noble-STD"] = "Noble-STD"
if("Service")
@@ -317,7 +318,7 @@ var/list/robot_verbs_default = list(
module_sprites["Bro"] = "Brobot"
module_sprites["Rich"] = "maximillion"
module_sprites["Default"] = "Service2"
module_sprites["Standard"] = "robotServ"
module_sprites["Standard"] = "Standard-Serv"
module_sprites["Noble-SRV"] = "Noble-SRV"
module_sprites["Cricket"] = "Cricket-SERV"
@@ -329,7 +330,7 @@ var/list/robot_verbs_default = list(
module_sprites["Basic"] = "Miner_old"
module_sprites["Advanced Droid"] = "droid-miner"
module_sprites["Treadhead"] = "Miner"
module_sprites["Standard"] = "robotMine"
module_sprites["Standard"] = "Standard-Mine"
module_sprites["Noble-DIG"] = "Noble-DIG"
module_sprites["Cricket"] = "Cricket-MINE"
@@ -342,7 +343,7 @@ var/list/robot_verbs_default = list(
module_sprites["Surgeon"] = "surgeon"
module_sprites["Advanced Droid"] = "droid-medical"
module_sprites["Needles"] = "medicalrobot"
module_sprites["Standard"] = "robotMedi"
module_sprites["Standard"] = "Standard-Medi"
module_sprites["Noble-MED"] = "Noble-MED"
module_sprites["Cricket"] = "Cricket-MEDI"
status_flags &= ~CANPUSH
@@ -354,7 +355,7 @@ var/list/robot_verbs_default = list(
module_sprites["Red Knight"] = "Security"
module_sprites["Black Knight"] = "securityrobot"
module_sprites["Bloodhound"] = "bloodhound"
module_sprites["Standard"] = "robotSecy"
module_sprites["Standard"] = "Standard-Secy"
module_sprites["Noble-SEC"] = "Noble-SEC"
module_sprites["Cricket"] = "Cricket-SEC"
status_flags &= ~CANPUSH
@@ -367,7 +368,7 @@ var/list/robot_verbs_default = list(
module_sprites["Basic"] = "Engineering"
module_sprites["Antique"] = "engineerrobot"
module_sprites["Landmate"] = "landmate"
module_sprites["Standard"] = "robotEngi"
module_sprites["Standard"] = "Standard-Engi"
module_sprites["Noble-ENG"] = "Noble-ENG"
module_sprites["Cricket"] = "Cricket-ENGI"
magpulse = 1
@@ -378,7 +379,7 @@ var/list/robot_verbs_default = list(
module_sprites["Basic"] = "JanBot2"
module_sprites["Mopbot"] = "janitorrobot"
module_sprites["Mop Gear Rex"] = "mopgearrex"
module_sprites["Standard"] = "robotJani"
module_sprites["Standard"] = "Standard-Jani"
module_sprites["Noble-CLN"] = "Noble-CLN"
module_sprites["Cricket"] = "Cricket-JANI"
@@ -870,7 +871,10 @@ var/list/robot_verbs_default = list(
overlays.Cut()
if(stat != DEAD && !(paralysis || stunned || weakened || low_power_mode)) //Not dead, not stunned.
overlays += "eyes-[icon_state]"
if(custom_panel in custom_eye_names)
overlays += "eyes-[custom_panel]"
else
overlays += "eyes-[icon_state]"
else
overlays -= "eyes"
+5 -5
View File
@@ -1,9 +1,9 @@
/mob/living/silicon/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name)
/mob/living/silicon/handle_message_mode(message_mode, message, verb, speaking, used_radios)
log_say(message, src)
if(..())
return 1
/mob/living/silicon/robot/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name)
/mob/living/silicon/robot/handle_message_mode(message_mode, message, verb, speaking, used_radios)
if(..())
return 1
if(message_mode)
@@ -15,7 +15,7 @@
message_mode = null
return radio.talk_into(src,message,message_mode,verb,speaking)
/mob/living/silicon/ai/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name)
/mob/living/silicon/ai/handle_message_mode(message_mode, message, verb, speaking, used_radios)
if(..())
return 1
if(message_mode == "department")
@@ -30,11 +30,11 @@
message_mode = null
return aiRadio.talk_into(src,message,message_mode,verb,speaking)
/mob/living/silicon/pai/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name)
/mob/living/silicon/pai/handle_message_mode(message_mode, message, verb, speaking, used_radios)
if(..())
return 1
else if(message_mode == "whisper")
whisper_say(message, speaking, alt_name)
whisper_say(message, speaking)
return 1
else if(message_mode)
if(message_mode == "general")
@@ -889,7 +889,7 @@ Pass a positive integer as an argument to override a bot's default speed.
// Machinery to simplify topic and access calls
/obj/machinery/bot_core
use_power = 0
use_power = NO_POWER_USE
var/mob/living/simple_animal/bot/owner = null
/obj/machinery/bot_core/New(loc)
@@ -1106,4 +1106,4 @@ Pass a positive integer as an argument to override a bot's default speed.
var/image/I = path[path[1]]
if(I)
I.icon = null
path.Cut(1, 2)
path.Cut(1, 2)
@@ -44,7 +44,7 @@
icon_state = "ed209_frame"
item_state = "ed209_frame"
var/build_step = 0
var/created_name = "ED-209 Security Robot" //To preserve the name if it's a unique securitron I guess
var/created_name = "\improper ED-209 Security Robot" //To preserve the name if it's a unique securitron I guess
var/lasercolor = ""
/obj/item/ed209_assembly/attackby(obj/item/W, mob/user, params)
@@ -706,10 +706,14 @@
H.apply_damage(0.5*damage, BRUTE, "r_arm", run_armor_check("r_arm", "melee"))
var/turf/T = get_turf(src)
H.add_mob_blood(H)
H.add_splatter_floor(T)
if(NO_BLOOD in H.dna.species.species_traits)//Does the run over mob have blood?
return//If it doesn't it shouldn't bleed (Though a check should be made eventually for things with liquid in them, like slime people, vox armalis, etc.)
var/turf/T = get_turf(src)//Where are we?
H.add_mob_blood(H)//Cover the victim in their own blood.
H.add_splatter_floor(T)//Put the blood where we are.
bloodiness += 4
var/list/blood_dna = H.get_blood_dna_list()
@@ -175,7 +175,7 @@ Auto Patrol: []"},
mode = BOT_HUNT
/mob/living/simple_animal/bot/secbot/attack_hand(mob/living/carbon/human/H)
if(H.a_intent == INTENT_HARM)
if(H.a_intent == INTENT_HARM || H.a_intent == INTENT_DISARM)
retaliate(H)
return ..()
@@ -186,9 +186,7 @@
if(istype(blobmind) && istype(C))
blobmind.special_role = SPECIAL_ROLE_BLOB
var/obj/structure/blob/core/core = new(T, 200, C, 3)
if(core.overmind && core.overmind.mind)
//core.overmind.mind.name = blob.name
core.overmind.mind.special_role = SPECIAL_ROLE_BLOB_OVERMIND
core.lateblobtimer()
else
new /obj/structure/blob/core(T) // Ghosts will be prompted to control it.
if(ismob(loc)) // in case some taj/etc ate the mouse.
@@ -703,12 +703,12 @@
available_channels = list(":e")
..()
/mob/living/simple_animal/parrot/handle_message_mode(var/message_mode, var/message, var/verb, var/speaking, var/used_radios, var/alt_name)
/mob/living/simple_animal/parrot/handle_message_mode(var/message_mode, var/message, var/verb, var/speaking, var/used_radios)
if(message_mode && istype(ears))
ears.talk_into(src, message, message_mode, verb, speaking)
used_radios += ears
/mob/living/simple_animal/parrot/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null)
/mob/living/simple_animal/parrot/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/italics = 0, var/mob/speaker = null)
if(speaker != src && prob(50))
parrot_hear(html_decode(message))
..()
+3
View File
@@ -47,6 +47,9 @@
/mob/proc/generate_name()
return name
/mob/proc/GetAltName()
return ""
/mob/proc/Cell()
set category = "Admin"
+4 -3
View File
@@ -316,12 +316,10 @@
job_master.AssignRole(src, rank, 1)
var/mob/living/character = create_character() //creates the human and transfers vars and mind
character = job_master.EquipRank(character, rank, 1) //equips the human
EquipCustomItems(character)
character = job_master.AssignRank(character, rank, 1) //equips the human
// AIs don't need a spawnpoint, they must spawn at an empty core
if(character.mind.assigned_role == "AI")
var/mob/living/silicon/ai/ai_character = character.AIize() // AIize the character, but don't move them yet
// IsJobAvailable for AI checks that there is an empty core available in this list
@@ -365,6 +363,9 @@
ticker.mode.latespawn(character)
character = job_master.EquipRank(character, rank, 1) //equips the human
EquipCustomItems(character)
if(character.mind.assigned_role == "Cyborg")
AnnounceCyborg(character, rank, join_message)
callHook("latespawn", list(character))
@@ -890,6 +890,21 @@
icon_state = "hesphiastos_alt_rainbow"
models_allowed = list("Hesphiastos Industries alt.")
/datum/sprite_accessory/hair/ipc/fluff
fluff = 1
/datum/sprite_accessory/hair/ipc/fluff/lumi_face //Lumi Fluff hair
name = "Lumi Face"
icon_state = "lumi_face"
/datum/sprite_accessory/hair/ipc/fluff/lumi_blush //Lumi Fluff hair
name = "Lumi Blush"
icon_state = "lumi_blush"
/datum/sprite_accessory/hair/ipc/fluff/lumi_waiting //Lumi Fluff hair
name = "Lumi Waiting"
icon_state = "lumi_waiting"
/*
///////////////////////////////////
/ =---------------------------= /