Conflicts:
	html/changelogs/Hubblenaut-dev.yml
This commit is contained in:
Hubblenaut
2015-12-08 15:50:00 +01:00
73 changed files with 1441 additions and 761 deletions
+7
View File
@@ -53,6 +53,7 @@ var/list/ai_verbs_default = list(
var/viewalerts = 0
var/icon/holo_icon//Default is assigned when AI is created.
var/obj/item/device/pda/ai/aiPDA = null
var/obj/item/device/communicator/aiCommunicator = null
var/obj/item/device/multitool/aiMulti = null
var/obj/item/device/radio/headset/heads/ai_integrated/aiRadio = null
var/camera_light_on = 0 //Defines if the AI toggled the light on the camera it's looking through.
@@ -114,6 +115,9 @@ var/list/ai_verbs_default = list(
density = 1
loc = loc
aiCommunicator = new /obj/item/device/communicator/integrated(src)
holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo1"))
proc_holder_list = new()
@@ -243,6 +247,9 @@ var/list/ai_verbs_default = list(
aiPDA.owner = pickedName
aiPDA.name = pickedName + " (" + aiPDA.ownjob + ")"
if(aiCommunicator)
aiCommunicator.register_device(src)
/*
The AI Power supply is a dummy object used for powering the AI since only machinery should be using power.
The alternative was to rewrite a bunch of AI code instead here we are.
@@ -15,6 +15,7 @@
var/userDNA // The DNA string of our assigned user
var/obj/item/device/paicard/card // The card we inhabit
var/obj/item/device/radio/radio // Our primary radio
var/obj/item/device/communicator/integrated/communicator // Our integrated communicator.
var/chassis = "repairbot" // A record of your chosen chassis.
var/global/list/possible_chassis = list(
@@ -75,6 +76,7 @@
src.loc = paicard
card = paicard
sradio = new(src)
communicator = new(src)
if(card)
if(!card.radio)
card.radio = new /obj/item/device/radio(src.card)
@@ -47,6 +47,7 @@
var/module_state_3 = null
var/obj/item/device/radio/borg/radio = null
var/obj/item/device/communicator/integrated/communicator = null
var/mob/living/silicon/ai/connected_ai = null
var/obj/item/weapon/cell/cell = null
var/obj/machinery/camera/camera = null
@@ -110,6 +111,8 @@
updateicon()
radio = new /obj/item/device/radio/borg(src)
// communicator = new /obj/item/device/communicator/integrated(src)
// communicator.register_device(src)
common_radio = radio
if(!scrambledcodes && !camera)
@@ -199,6 +202,11 @@
rbPDA = new/obj/item/device/pda/ai(src)
rbPDA.set_name_and_job(custom_name,"[modtype] [braintype]")
/mob/living/silicon/robot/proc/setup_communicator()
if (!communicator)
communicator = new/obj/item/device/communicator/integrated(src)
communicator.register_device(src, "[modtype] [braintype]")
//If there's an MMI in the robot, have it ejected when the mob goes away. --NEO
//Improved /N
/mob/living/silicon/robot/Destroy()
@@ -279,6 +287,9 @@
// if we've changed our name, we also need to update the display name for our PDA
setup_PDA()
// as well as our communicator registration
setup_communicator()
//We also need to update name of internal camera.
if (camera)
camera.c_tag = changed_name
+94
View File
@@ -0,0 +1,94 @@
//A very, very simple mob that exists inside other objects to talk and has zero influence on the world.
/mob/living/voice
name = "unknown"
desc = "How are you examining me?"
// default_language = "Galactic Common"
var/obj/item/device/communicator/comm = null
emote_type = 2 //This lets them emote through containers. The communicator has a image feed of the person calling them so...
var/stable_connection = 0 //If set to zero, makes the mob effectively deaf, mute, and blind, due to interferance.
/mob/living/voice/New(loc)
add_language("Galactic Common")
for(var/datum/language/L in languages) //This is needed to get around some saycode problems.
if(L.name == "Galactic Common")
set_default_language(L)
break
if(istype(loc, /obj/item/device/communicator))
comm = loc
..()
/mob/living/voice/proc/transfer_identity(mob/speaker)
if(ismob(speaker))
icon = speaker.icon
icon_state = speaker.icon_state
overlays = speaker.overlays
alpha = 127 //Maybe we'll have hologram calls later.
if(speaker.client && speaker.client.prefs)
var/datum/preferences/p = speaker.client.prefs
name = p.real_name
real_name = name
gender = p.gender
for(var/language in p.alternate_languages)
add_language(language)
/mob/living/voice/Login()
var/obj/screen/static_effect = new() //Since what the player sees is essentially a video feed, from a vast distance away, the view isn't going to be perfect.
static_effect.screen_loc = ui_entire_screen
static_effect.icon = 'icons/effects/static.dmi'
static_effect.icon_state = "1 light"
static_effect.mouse_opacity = 0 //So the static doesn't get in the way of clicking.
client.screen.Add(static_effect)
/mob/living/voice/Destroy()
comm = null
..()
/mob/living/voice/verb/hang_up()
set name = "Hang Up"
set category = "Communicator"
set desc = "Disconnects you from whoever you're talking to."
set src = usr
if(comm)
comm.close_connection(src, "[src] hung up")
else
src << "You appear to not be inside a communicator. This is a bug and you should report it."
/mob/living/voice/Life()
if(comm && comm.server && !comm.server.active)
comm.close_connection(src,"Connection to telecommunications array timed out")
..()
/mob/living/voice/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="")
// world << "say() was called. Arguments: ([message], [speaking], [verb], [alt_name])."
if(!stable_connection)
return 0
//Speech bubbles.
if(comm)
var/speech_bubble_test = say_test(message)
var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]")
spawn(30)
qdel(speech_bubble)
for(var/mob/M in hearers(world.view,comm)) //simplifed since it's just a speech bubble
M << speech_bubble
src << speech_bubble
..(message, speaking, verb, alt_name) //mob/living/say() can do the actual talking.
/*
/mob/verb/test_voice_mob()
set name = "Make Voice Mob"
set category = "Debug"
set desc = "For testing only!"
set src = usr
var/turf/T = get_turf(src)
var/obj/item/device/communicator/comm = new(T)
comm.open_connection(src, src)
*/
+2 -2
View File
@@ -733,8 +733,8 @@
if(istype(buckled, /obj/vehicle))
var/obj/vehicle/V = buckled
if(cannot_stand())
lying = 1
canmove = 0
lying = 0
canmove = 1
pixel_y = V.mob_offset_y - 5
else
if(buckled.buckle_lying != -1) lying = buckled.buckle_lying
@@ -206,6 +206,14 @@
name = "Bun"
icon_state = "hair_bun"
bun2
name = "Bun 2"
icon_state = "hair_bun2"
bun3
name = "Bun 3"
icon_state = "hair_bun3"
bowl
name = "Bowl"
icon_state = "hair_bowlcut"
@@ -267,6 +275,14 @@
name = "Long Emo"
icon_state = "hair_emolong"
fringeemo
name = "Emo Fringe"
icon_state = "hair_emofringe"
veryshortovereyealternate
name = "Overeye Very Short, Alternate"
icon_state = "hair_veryshortovereyealternate"
veryshortovereye
name = "Overeye Very Short"
icon_state = "hair_veryshortovereye"