Merge remote-tracking branch 'upstream/master'

This commit is contained in:
DZD
2014-12-06 13:09:13 -05:00
63 changed files with 2360 additions and 2405 deletions
@@ -1,6 +1,9 @@
/mob/living/carbon/brain/say(var/message)
if (silent)
return
if (stat == 2) // Dead.
return say_dead(message)
if(!(container && (istype(container, /obj/item/device/mmi) || istype(container, /obj/item/device/mmi/posibrain))))
return //No MMI, can't speak, bucko./N
-2
View File
@@ -219,8 +219,6 @@
"\blue [M] gives [src] a [pick("hug","warm embrace")].", \
"\blue You hug [src].", \
)
if(prob(10))
src.emote("fart")
/mob/living/carbon/proc/eyecheck()
+15 -9
View File
@@ -5,13 +5,13 @@
canmove = 0
icon = null
invisibility = 101
if(!(species.flags & IS_SYNTHETIC))
animation = new(loc)
animation.icon_state = "blank"
animation.icon = 'icons/mob/mob.dmi'
animation.master = src
animation = new(loc)
animation.icon_state = "blank"
animation.icon = 'icons/mob/mob.dmi'
animation.master = src
playsound(src.loc, 'sound/effects/gib.ogg', 100, 1, 10)
playsound(src.loc, 'sound/effects/gib.ogg', 100, 1, 10)
for(var/datum/organ/external/E in src.organs)
if(istype(E, /datum/organ/external/chest))
@@ -20,9 +20,15 @@
if(prob(100 - E.get_damage()))
// Override the current limb status and don't cause an explosion
E.droplimb(1,1)
flick("gibbed-h", animation)
hgibs(loc, viruses, dna)
if(!(species.flags & IS_SYNTHETIC))
flick("gibbed-h", animation)
hgibs(loc, viruses, dna)
else
new /obj/effect/decal/cleanable/robot_debris(src.loc)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
spawn(15)
if(animation) del(animation)
+33 -39
View File
@@ -635,8 +635,11 @@
// Needed for M_TOXIC_FART
if("fart")
if(world.time-lastFart >= 600)
playsound(src.loc, 'sound/effects/fart.ogg', 50, 1, -3) //Admins voted no to fun
message = "<b>[src]</b> [pick("passes wind","farts")]."
// playsound(src.loc, 'sound/effects/fart.ogg', 50, 1, -3) //Admins still vote no to fun
if(M_TOXIC_FARTS in mutations)
message = "<b>[src]</b> unleashes a [pick("horrible","terrible","foul","disgusting","awful")] fart."
else
message = "<b>[src]</b> [pick("passes wind","farts")]."
m_type = 2
var/turf/location = get_turf(src)
@@ -644,38 +647,31 @@
if(M_SUPER_FART in mutations)
aoe_range+=3 //Was 5
// If we're wearing a suit, don't blast or gas those around us.
/* // If we're wearing a suit, don't blast or gas those around us.
var/wearing_suit=0
var/wearing_mask=0
if(wear_suit && wear_suit.body_parts_covered & LOWER_TORSO)
wearing_suit=1
if (internal != null && wear_mask && (wear_mask.flags & MASKINTERNALS))
wearing_mask=1
wearing_mask=1 */
// Process toxic farts first.
if(M_TOXIC_FARTS in mutations)
if(wearing_suit)
if(!wearing_mask)
src << "\red You gas yourself!"
reagents.add_reagent("space_drugs", rand(10,20))
else
// Was /turf/, now /mob/
for(var/mob/M in range(location,aoe_range))
if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS))
continue
if(!airborne_can_reach(location,M,aoe_range))
continue
// Now, we don't have this:
//new /obj/effects/fart_cloud(T,L)
// But:
// <[REDACTED]> so, what it does is...imagine a 3x3 grid with the person in the center. When someone uses the emote *fart (it's not a spell style ability and has no cooldown), then anyone in the 8 tiles AROUND the person who uses it
// <[REDACTED]> gets between 1 and 10 units of jenkem added to them...we obviously don't have Jenkem, but Space Drugs do literally the same exact thing as Jenkem
// <[REDACTED]> the user, of course, isn't impacted because it's not an actual smoke cloud
// So, let's give 'em space drugs.
if (M == src)
continue
M.reagents.add_reagent("space_drugs",rand(1,10))
for(var/mob/M in range(location,aoe_range))
if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS))
continue
if(!airborne_can_reach(location,M,aoe_range))
continue
// Now, we don't have this:
//new /obj/effects/fart_cloud(T,L)
// But:
// <[REDACTED]> so, what it does is...imagine a 3x3 grid with the person in the center. When someone uses the emote *fart (it's not a spell style ability and has no cooldown), then anyone in the 8 tiles AROUND the person who uses it
// <[REDACTED]> gets between 1 and 10 units of jenkem added to them...we obviously don't have Jenkem, but Space Drugs do literally the same exact thing as Jenkem
// <[REDACTED]> the user, of course, isn't impacted because it's not an actual smoke cloud
// So, let's give 'em space drugs.
if (M == src)
continue
M.reagents.add_reagent("space_drugs",rand(1,10))
/*
var/datum/effect/effect/system/smoke_spread/chem/fart/S = new /datum/effect/effect/system/smoke_spread/chem/fart
S.attach(location)
@@ -686,23 +682,21 @@
S.start()
*/
if(M_SUPER_FART in mutations)
playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3)
visible_message("\red <b>[name]</b> hunches down and grits their teeth!")
if(do_after(usr,30))
visible_message("\red <b>[name]</b> unleashes a [pick("tremendous","gigantic","colossal")] fart!","You hear a [pick("tremendous","gigantic","colossal")] fart.")
//playsound(L.loc, 'superfart.ogg', 50, 0)
if(!wearing_suit)
for(var/mob/living/V in range(location,aoe_range))
shake_camera(V,10,5)
if (V == src)
continue
if(!airborne_can_reach(get_turf(src), get_turf(V)))
continue
V << "\red You are sent flying!"
V.Weaken(5) // why the hell was this set to 12 christ
step_away(V,location,15)
step_away(V,location,15)
step_away(V,location,15)
for(var/mob/living/V in range(location,aoe_range))
shake_camera(V,10,5)
if (V == src)
continue
if(!airborne_can_reach(get_turf(src), get_turf(V)))
continue
V << "\red You are sent flying!"
V.Weaken(5) // why the hell was this set to 12 christ
step_away(V,location,15)
step_away(V,location,15)
step_away(V,location,15)
else
usr << "\red You were interrupted and couldn't fart! Rude!"
lastFart=world.time
@@ -474,30 +474,15 @@
return istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(H.glasses, /obj/item/clothing/glasses/hud/health_advanced)
else
return 0
else if(istype(M, /mob/living/silicon/robot))
var/mob/living/silicon/robot/R = M
else if(istype(M, /mob/living/silicon))
var/mob/living/silicon/R = M
switch(hudtype)
if("security")
for(var/obj/I in R.contents)
if(istype(I, /obj/item/borg/sight/hud/sec))
return 1
if(R.sensor_mode == 1)
return 1
if("medical")
for(var/obj/I in R.contents)
if(istype(I, /obj/item/borg/sight/hud/med))
return 1
else
return 0
else if(istype(M, /mob/living/silicon/ai))
var/mob/living/silicon/ai/A = M
switch(hudtype)
if("security")
for(var/obj/I in A.contents)
if(istype(I, /obj/item/borg/sight/hud/sec))
return 1
if("medical")
for(var/obj/I in A.contents)
if(istype(I, /obj/item/borg/sight/hud/med))
return 1
if(R.sensor_mode == 2)
return 1
else
return 0
else
@@ -1555,7 +1555,7 @@
//Check for ID
var/obj/item/weapon/card/id/idcard = get_idcard()
if(judgebot.idcheck && !idcard && name=="Unknown")
if(judgebot.idcheck && !idcard)
threatcount += 4
//Check for weapons
@@ -1672,6 +1672,9 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
proc/handle_decay()
var/decaytime = world.time - timeofdeath
if(species.flags & IS_SYNTHETIC)
return
if(decaytime <= 6000) //10 minutes for decaylevel1 -- stinky
return
@@ -1,2 +1,2 @@
/mob/living/carbon/slime/proc/regular_hud_updates()
/mob/living/carbon/slime/regular_hud_updates()
return
+3 -2
View File
@@ -64,12 +64,13 @@
src <<"\red You have been hit by [P]!"
del P
return
*/
if(istype(P, /obj/item/projectile/energy/electrode) || istype(P, /obj/item/projectile/bullet/stunshot))
stun_effect_act(0, P.agony, def_zone, P)
src <<"\red You have been hit by [P]!"
del P
return
*/
//Armor
var/absorb = run_armor_check(def_zone, P.flag)
@@ -81,7 +82,7 @@
if(!P.nodamage)
apply_damage(P.damage, P.damage_type, def_zone, absorb, 0, P, sharp=proj_sharp, edge=proj_edge)
P.on_hit(src, absorb, def_zone)
if(istype(P, /obj/item/projectile/beam/lightning))
if(P.damage >= 200)
+6 -6
View File
@@ -10,11 +10,11 @@ var/list/department_radio_keys = list(
":s" = "Security", "#s" = "Security", ".s" = "Security",
":w" = "whisper", "#w" = "whisper", ".w" = "whisper",
":b" = "binary", "#b" = "binary", ".b" = "binary",
":d" = "drone", "#d" = "drone", ".d" = "drone",
":d" = "drone", "#d" = "drone", ".d" = "drone",
":a" = "alientalk", "#a" = "alientalk", ".a" = "alientalk",
":t" = "Syndicate", "#t" = "Syndicate", ".t" = "Syndicate",
":u" = "Supply", "#u" = "Supply", ".u" = "Supply",
":z" = "Service", "#z" = "Service", ".z" = "Service",
":z" = "Service", "#z" = "Service", ".z" = "Service",
":g" = "changeling", "#g" = "changeling", ".g" = "changeling",
@@ -28,14 +28,14 @@ var/list/department_radio_keys = list(
":E" = "Engineering", "#E" = "Engineering", ".E" = "Engineering",
":S" = "Security", "#S" = "Security", ".S" = "Security",
":W" = "whisper", "#W" = "whisper", ".W" = "whisper",
":D" = "drone", "#D" = "drone", ".D" = "drone",
":D" = "drone", "#D" = "drone", ".D" = "drone",
":B" = "binary", "#B" = "binary", ".B" = "binary",
":A" = "alientalk", "#A" = "alientalk", ".A" = "alientalk",
":T" = "Syndicate", "#T" = "Syndicate", ".T" = "Syndicate",
":U" = "Supply", "#U" = "Supply", ".U" = "Supply",
":Z" = "Service", "#Z" = "Service", ".Z" = "Service",
":G" = "changeling", "#G" = "changeling", ".G" = "changeling"
/* //kinda localization -- rastaf0
//same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding.
":ê" = "right hand", "#ê" = "right hand", ".ê" = "right hand",
@@ -185,8 +185,8 @@ var/list/department_radio_keys = list(
if (!(istype(src,/mob/living/carbon/human) && !isAI(src) && !isrobot(src) || istype(src,/mob/living/carbon/monkey) || istype(src, /mob/living/simple_animal/parrot) || isrobot(src) && (message_mode=="department") || isAI(src) && (message_mode=="department") || (message_mode in radiochannels)))
message_mode = null //only humans can use headsets
if(src.stunned > 2 || (traumatic_shock > 61 && prob(50)))
message_mode = null //Stunned people shouldn't be able to physically turn on their radio/hold down the button to speak into it
if(traumatic_shock > 61 && prob(50))
message_mode = null //people in shock will have a high chance of not being able to speak on radio; needed since people don't instantly pass out at 100 damage.
message = capitalize(message)
+3 -16
View File
@@ -830,23 +830,10 @@ var/list/ai_list = list()
lightNearbyCamera()
/mob/living/silicon/ai/proc/control_hud()
set name = "Toggle Sensors"
set desc = "Toggles your sensors to display security records, medical records or nothing."
set name = "Set Sensor Augmentation"
set desc = "Augment visual feed with internal sensor overlays."
set category = "AI Commands"
if(stat != 0)
return
var/hud = input("Please select a sensor module!", "Toggle Sensors", "None", null) in list("None","Security","Medical")
for(var/obj/item/borg/sight/hud/H in contents)
del(H)
switch(hud)
if("Security")
sechud = new/obj/item/borg/sight/hud/sec(src)
if("Medical")
healthhud = new/obj/item/borg/sight/hud/med(src)
else
return
toggle_sensor_mode()
// Handled camera lighting, when toggled.
// It will get the nearest camera from the eyeobj, lighting it.
+8 -12
View File
@@ -1,7 +1,4 @@
/mob/living/silicon/ai/Life()
if(client)
handle_regular_hud_updates()
if (src.stat == 2)
return
else //I'm not removing that shitton of tabs, unneeded as they are. -- Urist
@@ -176,6 +173,13 @@
sleep(50)
theAPC = null
regular_hud_updates()
switch(src.sensor_mode)
if (SEC_HUD)
process_sec_hud(src,1,src.eyeobj)
if (MED_HUD)
process_med_hud(src,1,src.eyeobj)
/mob/living/silicon/ai/updatehealth()
if(status_flags & GODMODE)
health = 100
@@ -184,12 +188,4 @@
if(fire_res_on_core)
health = 100 - getOxyLoss() - getToxLoss() - getBruteLoss()
else
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
/mob/living/silicon/ai/proc/handle_regular_hud_updates()
for(var/image/hud in client.images) //COPIED FROM the human handle_regular_hud_updates() proc
if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe
client.images.Remove(hud)
var/obj/item/borg/sight/hud/hud = (locate(/obj/item/borg/sight/hud) in src)
if(hud && hud.hud) hud.hud.process_hud(src)
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
-110
View File
@@ -1,110 +0,0 @@
/mob/living/silicon/pai/proc/regular_hud_updates()
if(client)
for(var/image/hud in client.images)
if(copytext(hud.icon_state,1,4) == "hud")
client.images -= hud
/mob/living/silicon/pai/proc/securityHUD()
if(client)
var/image/holder
var/turf/T = get_turf_or_move(src.loc)
for(var/mob/living/carbon/human/perp in view(T))
if(src.see_invisible < perp.invisibility)
continue
var/perpname = "wot"
holder = perp.hud_list[ID_HUD]
if(perp.wear_id)
var/obj/item/weapon/card/id/I = perp.wear_id.GetID()
if(I)
perpname = I.registered_name
holder.icon_state = "hud[ckey(perp:wear_id:GetJobName())]"
client.images += holder
else
perpname = perp.name
holder.icon_state = "hudunknown"
client.images += holder
else
holder.icon_state = "hudunknown"
client.images += holder
for(var/datum/data/record/E in data_core.general)
if(E.fields["name"] == perpname)
holder = perp.hud_list[WANTED_HUD]
for(var/datum/data/record/R in data_core.security)
if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "*Arrest*"))
holder.icon_state = "hudwanted"
client.images += holder
break
else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Incarcerated"))
holder.icon_state = "hudprisoner"
client.images += holder
break
else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Parolled"))
holder.icon_state = "hudparolled"
client.images += holder
break
else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Released"))
holder.icon_state = "hudreleased"
client.images += holder
break
/mob/living/silicon/pai/proc/medicalHUD()
if(client)
var/image/holder
var/turf/T = get_turf_or_move(src.loc)
for(var/mob/living/carbon/human/patient in view(T))
if(src.see_invisible < patient.invisibility)
continue
var/foundVirus = 0
for (var/ID in patient.virus2)
if (ID in virusDB)
foundVirus = 1
break
holder = patient.hud_list[HEALTH_HUD]
if(patient.stat == 2)
holder.icon_state = "hudhealth-100"
client.images += holder
else
holder.icon_state = "hud[RoundHealth(patient.health)]"
client.images += holder
holder = patient.hud_list[STATUS_HUD]
if(patient.stat == 2)
holder.icon_state = "huddead"
else if(patient.status_flags & XENO_HOST)
holder.icon_state = "hudxeno"
else if(foundVirus)
holder.icon_state = "hudill"
else if(patient.has_brain_worms())
var/mob/living/simple_animal/borer/B = patient.has_brain_worms()
if(B.controlling)
holder.icon_state = "hudbrainworm"
else
holder.icon_state = "hudhealthy"
else
holder.icon_state = "hudhealthy"
client.images += holder
/mob/living/silicon/pai/proc/RoundHealth(health)
switch(health)
if(100 to INFINITY)
return "health100"
if(70 to 100)
return "health80"
if(50 to 70)
return "health60"
if(30 to 50)
return "health40"
if(20 to 30)
return "health25"
if(5 to 15)
return "health10"
if(1 to 5)
return "health1"
if(-99 to 0)
return "health0"
else
return "health-100"
return "0"
+2 -2
View File
@@ -10,9 +10,9 @@
regular_hud_updates()
if(src.secHUD == 1)
src.securityHUD()
process_sec_hud(src, 1)
if(src.medHUD == 1)
src.medicalHUD()
process_med_hud(src, 1)
if(silence_time)
if(world.timeofday >= silence_time)
silence_time = null
@@ -177,12 +177,17 @@
src.see_in_dark = 8
src.see_invisible = SEE_INVISIBLE_LEVEL_TWO
for(var/image/hud in client.images) //COPIED FROM the human handle_regular_hud_updates() proc
if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe
client.images.Remove(hud)
regular_hud_updates()
var/obj/item/borg/sight/hud/hud = (locate(/obj/item/borg/sight/hud) in src)
if(hud && hud.hud) hud.hud.process_hud(src)
if(hud && hud.hud)
hud.hud.process_hud(src)
else
switch(src.sensor_mode)
if (SEC_HUD)
process_sec_hud(src,1)
if (MED_HUD)
process_med_hud(src,1)
if (src.healths)
if (src.stat != 2)
+3 -16
View File
@@ -460,23 +460,10 @@
src << "\red You enable [C.name]."
/mob/living/silicon/robot/verb/control_hud()
set name = "Toggle Sensors"
set desc = "Toggles your sensors to display security records, medical records or nothing."
set name = "Set Sensor Augmentation"
set desc = "Augment visual feed with internal sensor overlays."
set category = "Robot Commands"
if(stat != 0)
return
var/hud = input("Please select a sensor module!", "Toggle Sensors", "None", null) in list("None","Security","Medical")
for(var/obj/item/borg/sight/hud/H in contents)
del(H)
switch(hud)
if("Security")
sechud = new/obj/item/borg/sight/hud/sec(src)
if("Medical")
healthhud = new/obj/item/borg/sight/hud/med(src)
else
return
toggle_sensor_mode()
/mob/living/silicon/robot/blob_act()
if (stat != 2)
@@ -24,7 +24,7 @@
New()
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/device/flash/cyborg(src)
src.emag = new /obj/item/toy/sword(src)
src.emag.name = "Placeholder Emag Item"
// src.jetpack = new /obj/item/toy/sword(src)
@@ -62,7 +62,7 @@
New()
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/weapon/melee/baton/loaded(src)
src.modules += new /obj/item/weapon/extinguisher(src)
src.modules += new /obj/item/weapon/wrench(src)
@@ -80,7 +80,7 @@
New()
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo/surgeon(src)
src.modules += new /obj/item/weapon/scalpel(src)
@@ -119,7 +119,7 @@
New()
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/device/reagent_scanner/adv(src)
src.modules += new /obj/item/roller_holder(src)
@@ -164,7 +164,7 @@
New()
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/borg/sight/meson(src)
src.modules += new /obj/item/weapon/extinguisher(src)
src.modules += new /obj/item/weapon/rcd/borg(src)
@@ -187,7 +187,7 @@
New()
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/borg/sight/meson(src)
src.modules += new /obj/item/weapon/extinguisher(src)
src.modules += new /obj/item/weapon/weldingtool/largetank(src)
@@ -228,7 +228,7 @@
New()
src.modules += new /obj/item/device/flashlight/seclite(src)
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
src.modules += new /obj/item/weapon/melee/baton/robot(src)
src.modules += new /obj/item/weapon/gun/energy/taser/cyborg(src)
@@ -244,7 +244,7 @@
New()
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/weapon/soap/nanotrasen(src)
src.modules += new /obj/item/weapon/storage/bag/trash(src)
src.modules += new /obj/item/weapon/mop(src)
@@ -264,7 +264,7 @@
New()
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/weapon/reagent_containers/food/drinks/cans/beer(src)
src.modules += new /obj/item/weapon/reagent_containers/food/condiment/enzyme(src)
@@ -291,7 +291,7 @@
New()
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/weapon/pen/robopen(src)
src.modules += new /obj/item/weapon/form_printer(src)
src.modules += new /obj/item/device/taperecorder(src)
@@ -312,7 +312,7 @@
New()
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/borg/sight/meson(src)
src.modules += new /obj/item/weapon/wrench(src)
src.modules += new /obj/item/weapon/screwdriver(src)
@@ -326,7 +326,7 @@
name = "NT advanced combat module"
/obj/item/weapon/robot_module/deathsquad/New()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/borg/sight/thermal(src)
src.modules += new /obj/item/weapon/melee/energy/sword/cyborg(src)
@@ -340,7 +340,7 @@
name = "syndicate robot module"
/obj/item/weapon/robot_module/syndicate/New()
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/weapon/melee/energy/sword/cyborg(src)
src.modules += new /obj/item/weapon/gun/energy/crossbow/cyborg(src)
@@ -356,7 +356,7 @@
New()
src.modules += new /obj/item/device/flashlight(src)
src.modules += new /obj/item/device/flash(src)
src.modules += new /obj/item/device/flash/cyborg(src)
src.modules += new /obj/item/borg/sight/thermal(src)
src.modules += new /obj/item/weapon/gun/energy/laser/cyborg(src)
src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src)
@@ -371,7 +371,7 @@
New()
src.modules += new /obj/item/weapon/melee/energy/alien/claws(src)
src.modules += new /obj/item/device/flash/alien(src)
src.modules += new /obj/item/device/flash/cyborg/alien(src)
src.modules += new /obj/item/borg/sight/thermal/alien(src)
var/obj/item/weapon/reagent_containers/spray/alien/stun/S = new /obj/item/weapon/reagent_containers/spray/alien/stun(src)
S.reagents.add_reagent("stoxin",250) //nerfed to sleeptoxin to make it less instant drop.
@@ -17,6 +17,9 @@
var/speak_exclamation = "declares"
var/speak_query = "queries"
var/pose //Yes, now AIs can pose too.
var/sensor_mode = 0 //Determines the current HUD.
#define SEC_HUD 1 //Security HUD mode
#define MED_HUD 2 //Medical HUD mode
/mob/living/silicon/proc/cancelAlarm()
return
@@ -254,3 +257,16 @@
set category = "IC"
flavor_text = copytext(sanitize(input(usr, "Please enter your new flavour text.", "Flavour text", null) as text), 1)
/mob/living/silicon/proc/toggle_sensor_mode()
var/sensor_type = input("Please select sensor type.", "Sensor Integration", null) in list("Security", "Medical","Disable")
switch(sensor_type)
if ("Security")
sensor_mode = SEC_HUD
src << "<span class='notice'>Security records overlay enabled.</span>"
if ("Medical")
sensor_mode = MED_HUD
src << "<span class='notice'>Life signs monitor overlay enabled.</span>"
if ("Disable")
sensor_mode = 0
src << "Sensor augmentations disabled."
+1
View File
@@ -33,3 +33,4 @@
spawn(40)
if(client)
handle_privacy_poll()
client.playtitlemusic()