mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-11 15:14:27 +01:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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()
|
||||
@@ -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"
|
||||
@@ -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)
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -33,3 +33,4 @@
|
||||
spawn(40)
|
||||
if(client)
|
||||
handle_privacy_poll()
|
||||
client.playtitlemusic()
|
||||
|
||||
Reference in New Issue
Block a user