Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into intercom

This commit is contained in:
Markolie
2015-09-05 01:39:40 +02:00
24 changed files with 379 additions and 123 deletions
+9 -4
View File
@@ -1,5 +1,10 @@
/obj/item/clothing/under/color
desc = "A standard issue colored jumpsuit. Variety is the spice of life!"
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/color/random/New()
..()
@@ -48,10 +53,6 @@
item_state = "gy_suit"
_color = "grey"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/color/grey/greytide
flags = ONESIZEFITSALL | NODROP
@@ -111,6 +112,10 @@
desc = "Groovy!"
icon_state = "psyche"
_color = "psyche"
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/color/lightblue
name = "light blue jumpsuit"
+7 -2
View File
@@ -49,7 +49,7 @@
grabber << "<span class='notice'>You scoop up \the [src]."
src << "<span class='notice'>\The [grabber] scoops you up.</span>"
grabber.status_flags |= PASSEMOTES
return
return H
//Mob specific holders.
@@ -65,4 +65,9 @@
name = "maintenance drone"
desc = "It's a small maintenance robot."
icon_state = "drone"
origin_tech = "magnets=3;engineering=5"
origin_tech = "magnets=3;engineering=5"
/obj/item/weapon/holder/pai
name = "pAI"
desc = "It's a little robot."
icon_state = "pai"
@@ -1,6 +1,7 @@
/obj/item/organ/brain
name = "brain"
health = 400 //They need to live awhile longer than other organs.
max_damage = 200
icon_state = "brain2"
force = 1.0
w_class = 2.0
@@ -0,0 +1,90 @@
/mob/living/silicon/pai/emote(var/act,var/m_type=1,var/message = null)
var/param = null
if (findtext(act, "-", 1, null))
var/t1 = findtext(act, "-", 1, null)
param = copytext(act, t1 + 1, length(act) + 1)
act = copytext(act, 1, t1)
if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_'
act = copytext(act,1,length(act))
//Emote Cooldown System (it's so simple!)
// proc/handle_emote_CD() located in [code\modules\mob\emote.dm]
var/on_CD = 0
switch(act)
//Cooldown-inducing emotes
if("ping","buzz")
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm
//Everything else, including typos of the above emotes
else
on_CD = 0 //If it doesn't induce the cooldown, we won't check for the cooldown
if(on_CD == 1) // Check if we need to suppress the emote attempt.
return // Suppress emote, you're still cooling off.
//--FalseIncarnate
switch(act)
if ("me")
if (src.client)
if(client.prefs.muted & MUTE_IC)
src << "You cannot send IC messages (muted)."
return
if (src.client.handle_spam_prevention(message,MUTE_IC))
return
if (stat)
return
if(!(message))
return
else
return custom_emote(m_type, message)
if ("custom")
return custom_emote(m_type, message)
if("ping")
var/M = null
if(param)
for (var/mob/A in view(null, null))
if (param == A.name)
M = A
break
if(!M)
param = null
if (param)
message = "<B>[src]</B> pings at [param]."
else
message = "<B>[src]</B> pings."
playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
m_type = 1
if("buzz")
var/M = null
if(param)
for (var/mob/A in view(null, null))
if (param == A.name)
M = A
break
if(!M)
param = null
if (param)
message = "<B>[src]</B> buzzes at [param]."
else
message = "<B>[src]</B> buzzes."
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
m_type = 1
if ("help")
src << "ping, \nbuzz."
else
src << "\blue Unusable emote '[act]'. Say *help for a list."
if ((message && src.stat == 0))
if (m_type & 1)
for(var/mob/O in viewers(src, null))
O.show_message(message, m_type)
else
for(var/mob/O in hearers(src, null))
O.show_message(message, m_type)
return
+41 -2
View File
@@ -8,7 +8,7 @@
small = 1
pass_flags = 1
density = 0
holder_type = /obj/item/weapon/holder/pai
var/network = "SS13"
var/obj/machinery/camera/current = null
@@ -25,7 +25,11 @@
"Mouse" = "mouse",
"Monkey" = "monkey",
"Corgi" = "borgi",
"Fox" = "fox"
"Fox" = "fox",
"Parrot" = "parrot",
"Box Bot" = "boxbot",
"Spider Bot" = "spiderbot",
"Fairy" = "fairy"
)
var/global/list/possible_say_verbs = list(
@@ -461,6 +465,16 @@
src.client.perspective = EYE_PERSPECTIVE
src.client.eye = card
// If we are being held, handle removing our holder from their inv.
var/obj/item/weapon/holder/H = loc
if(istype(H))
var/mob/living/M = H.loc
if(istype(M))
M.unEquip(H)
H.loc = get_turf(src)
src.loc = get_turf(H)
// Move us into the card and move the card to the ground
//This seems redundant but not including the forced loc setting messes the behavior up.
src.loc = card
card.loc = get_turf(card)
@@ -520,6 +534,31 @@
// No binary for pAIs.
/mob/living/silicon/pai/binarycheck()
return 0
// Handle being picked up.
/mob/living/silicon/pai/get_scooped(var/mob/living/carbon/grabber)
var/obj/item/weapon/holder/H = ..()
if(!istype(H))
return
H.icon_state = "pai-[icon_state]"
H.item_state = "pai-[icon_state]"
H.icon_override = 'icons/mob/in-hand/paiheld.dmi'//I have these in diffrent DMI so i am overriding
grabber.put_in_active_hand(H)//for some reason unless i call this it dosen't work
grabber.update_inv_l_hand()
grabber.update_inv_r_hand()
return H
/mob/living/silicon/pai/MouseDrop(atom/over_object)
var/mob/living/carbon/H = over_object
if(!istype(H) || !Adjacent(H)) return ..()
if(H.a_intent == "help")
get_scooped(H)
//return
else
return ..()
/mob/living/silicon/pai/on_forcemove(atom/newloc)
if(card)
@@ -549,3 +549,42 @@
P.sradio.code = min(100, P.sradio.code)
P.sradio.code = max(1, P.sradio.code)
return 1
/datum/pai_software/host_scan
name = "Host Bioscan"
ram_cost = 5
id = "bioscan"
toggle = 0
on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1)
var/data[0]
var/mob/living/held = user.loc
var/count = 0
// Find the carrier
while(!isliving(held))
if(!held || !held.loc || count > 6)
//For a runtime where M ends up in nullspace (similar to bluespace but less colourful)
src << "You are not being carried by anyone!"
return 0
held = held.loc
count++
if(isliving(held))
data["holder"] = held
data["health"] = "[held.stat > 1 ? "dead" : "[held.health]% healthy"]"
data["oxy"] = "[held.getOxyLoss() > 50 ? "<font color=#FF5555>" : "<font color=#55FF55>"][held.getOxyLoss()]</font>"
data["tox"] = "[held.getToxLoss() > 50 ? "<font color=#FF5555>" : "<font color=#55FF55>"][held.getToxLoss()]</font>"
data["burn"] = "[held.getFireLoss() > 50 ? "<font color=#FF5555>" : "<font color=#55FF55>"][held.getFireLoss()]</font>"
data["temp"] = "[held.bodytemperature-T0C]&deg;C ([held.bodytemperature*1.8-459.67]&deg;F)"
else
data["holder"] = 0
ui = nanomanager.try_update_ui(user, user, id, ui,data , force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_bioscan.tmpl", "Host Bioscan", 400, 350)
ui.set_initial_data(data)
ui.open()
//.set_auto_update(1)
+1 -1
View File
@@ -391,7 +391,7 @@
var/mob/living/carbon/attacker = user
user.visible_message("<span class='danger'>[user] is attempting to devour \the [affecting]!</span>")
if(!do_mob(user, affecting) || !do_after(user, checktime(user, affecting, target = affecting))) return
if(!do_after(user, checktime(user, affecting), target = affecting)) return
user.visible_message("<span class='danger'>[user] devours \the [affecting]!</span>")
+53 -6
View File
@@ -2,7 +2,7 @@
* Contains:
* Pens
* Sleepy Pens
* Parapens
* Edaggers
*/
@@ -15,6 +15,7 @@
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "pen"
item_state = "pen"
icon_override = 'icons/mob/in-hand/tools.dmi'
slot_flags = SLOT_BELT | SLOT_EARS
throwforce = 0
w_class = 1.0
@@ -67,12 +68,16 @@
if(!istype(M))
return
if(M.can_inject(user, 1))
user << "<span class='warning'>You stab [M] with the pen.</span>"
// M << "<span class='danger'>You feel a tiny prick!</span>"
. = 1
if(!force)
if(M.can_inject(user, 1))
user << "<span class='warning'>You stab [M] with the pen.</span>"
// M << "<span class='danger'>You feel a tiny prick!</span>"
. = 1
add_logs(M, user, "stabbed", object="[name]")
add_logs(M, user, "stabbed", object="[name]")
else
. = ..()
/*
* Sleepypens
@@ -95,3 +100,45 @@
create_reagents(100)
reagents.add_reagent("ketamine", 100)
..()
/*
* (Alan) Edaggers
*/
/obj/item/weapon/pen/edagger
origin_tech = "combat=3;syndicate=5"
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") //these wont show up if the pen is off
var/on = 0
/obj/item/weapon/pen/edagger/attack_self(mob/living/user)
if(on)
on = 0
force = initial(force)
sharp = 0
edge = 0
w_class = initial(w_class)
name = initial(name)
hitsound = initial(hitsound)
throwforce = initial(throwforce)
playsound(user, 'sound/weapons/saberoff.ogg', 5, 1)
user << "<span class='warning'>[src] can now be concealed.</span>"
else
on = 1
force = 18
sharp = 1
edge = 1
w_class = 3
name = "energy dagger"
hitsound = 'sound/weapons/blade1.ogg'
throwforce = 35
playsound(user, 'sound/weapons/saberon.ogg', 5, 1)
user << "<span class='warning'>[src] is now active.</span>"
update_icon()
/obj/item/weapon/pen/edagger/update_icon()
if(on)
icon_state = "edagger"
item_state = "edagger"
else
icon_state = initial(icon_state) //looks like a normal pen when off.
item_state = initial(item_state)
@@ -30,7 +30,6 @@
processing_objects.Add(src)
/obj/item/weapon/reagent_containers/borghypo/Destroy()
processing_objects.Remove(src)
return ..()
@@ -50,13 +49,6 @@
//update_icon()
return 1
// Purely for testing purposes I swear~
/*
/obj/item/weapon/reagent_containers/borghypo/verb/add_cyanide()
set src in world
add_reagent("cyanide")
*/
// Use this to add more chemicals for the borghypo to produce.
/obj/item/weapon/reagent_containers/borghypo/proc/add_reagent(var/reagent)
reagent_ids |= reagent
@@ -74,23 +66,20 @@
return
if (!istype(M))
return
var/mob/living/carbon/human/H = M
if(istype(H))
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
if(!affected)
user << "<span class='danger'>\The [H] is missing that limb!</span>"
return
else if(affected.status & ORGAN_ROBOT)
user << "<span class='danger'>You cannot inject a robotic limb.</span>"
return
if (R.total_volume && M.can_inject(user,1))
user << "<span class='notice'>You inject [M] with the injector.</span>"
M << "<span class='notice'>You feel a tiny prick!</span>"
R.add_reagent(M)
if(M.reagents)
var/datum/reagent/injected = chemical_reagents_list[reagent_ids[mode]]
var/contained = injected.name
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been injected with [src.name] by [key_name(user)]. Reagents: [contained]</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to inject [key_name(M)]. Reagents: [contained]</font>")
if(M.ckey)
msg_admin_attack("[key_name_admin(user)] injected [key_name_admin(M)] with [src.name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)])")
M.LAssailant = user
var/trans = R.trans_to(M, amount_per_transfer_from_this)
user << "<span class='notice'>[trans] units injected. [R.total_volume] units remaining.</span>"
return
@@ -28,7 +28,6 @@
src.reagents.add_reagent(M)
if(M.reagents)
var/list/injected = list()
for(var/datum/reagent/R in src.reagents.reagent_list)
injected += R.name
+7 -2
View File
@@ -16,6 +16,7 @@
var/list/affecting // the list of all items that will be moved this ptick
var/id = "" // the control ID - must match controller ID
var/verted = 1 // set to -1 to have the conveyour belt be inverted, so you can use the other corner icons
/obj/machinery/conveyor/centcom_auto
id = "round_end_belt"
@@ -39,7 +40,7 @@
operating = 0
else
operating = 1
icon_state = "conveyor[operating]"
icon_state = "conveyor[operating * verted]"
// create a conveyor
/obj/machinery/conveyor/New(loc, newdir)
@@ -71,6 +72,10 @@
if(SOUTHWEST)
forwards = WEST
backwards = NORTH
if(verted == -1)
var/temp = forwards
forwards = backwards
backwards = temp
/obj/machinery/conveyor/proc/setmove()
if(operating == 1)
@@ -88,7 +93,7 @@
operating = 0
if(stat & NOPOWER)
operating = 0
icon_state = "conveyor[operating]"
icon_state = "conveyor[operating * verted]"
// machine process
// move items to the target location