mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-24 17:11:22 +00:00
Merge branch 'master' of git://github.com/Baystation12/Baystation12 into TGUpdates
This commit is contained in:
@@ -312,25 +312,25 @@ datum/mind
|
||||
if(!def_value)//If it's a custom objective, it will be an empty string.
|
||||
def_value = "custom"
|
||||
|
||||
var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate","decapitate", "debrain", "protection", "hijack", "escape", "survive", "steal", "download", "nuclear", "capture", "absorb", "custom")
|
||||
var/new_obj_type = input("Select objective type:", "Objective type", def_value) as null|anything in list("assassinate","decapitate", "debrain", "protection", "frame", "hijack", "escape", "survive", "steal", "download", "nuclear", "capture", "absorb", "custom")
|
||||
if (!new_obj_type) return
|
||||
|
||||
var/datum/objective/new_objective = null
|
||||
|
||||
switch (new_obj_type)
|
||||
if ("assassinate","protect","debrain","decapitate")
|
||||
if ("assassinate","protection", "frame", "debrain","decapitate")
|
||||
//To determine what to name the objective in explanation text.
|
||||
var/objective_type_capital = uppertext(copytext(new_obj_type, 1,2))//Capitalize first letter.
|
||||
var/objective_type_text = copytext(new_obj_type, 2)//Leave the rest of the text.
|
||||
var/objective_type = "[objective_type_capital][objective_type_text]"//Add them together into a text string.
|
||||
// var/objective_type_capital = uppertext(copytext(new_obj_type, 1,2))//Capitalize first letter.
|
||||
// var/objective_type_text = copytext(new_obj_type, 2)//Leave the rest of the text.
|
||||
// var/objective_type = "[objective_type_capital][objective_type_text]"//Add them together into a text string.
|
||||
|
||||
var/list/possible_targets = list("Free objective")
|
||||
for(var/datum/mind/possible_target in ticker.minds)
|
||||
if ((possible_target != src) && istype(possible_target.current, /mob/living/carbon/human))
|
||||
if ((possible_target != src) && possible_target.current && istype(possible_target.current, /mob/living/carbon/human))
|
||||
possible_targets += possible_target.current
|
||||
|
||||
var/mob/def_target = null
|
||||
var/objective_list[] = list(/datum/objective/assassinate, /datum/objective/protection, /datum/objective/debrain, /datum/objective/decapitate)
|
||||
var/objective_list[] = list(/datum/objective/assassinate, /datum/objective/protection, /datum/objective/frame, /datum/objective/debrain, /datum/objective/decapitate)
|
||||
if (objective&&(objective.type in objective_list) && objective:target)
|
||||
def_target = objective:target.current
|
||||
|
||||
@@ -339,16 +339,11 @@ datum/mind
|
||||
|
||||
var/objective_path = text2path("/datum/objective/[new_obj_type]")
|
||||
if (new_target == "Free objective")
|
||||
new_objective = new objective_path
|
||||
new_objective = new objective_path(null,"MODE",null)
|
||||
new_objective.owner = src
|
||||
new_objective:target = null
|
||||
new_objective.explanation_text = "Free objective"
|
||||
else
|
||||
new_objective = new objective_path
|
||||
new_objective = new objective_path(null,"MODE",new_target:mind)
|
||||
new_objective.owner = src
|
||||
new_objective:target = new_target:mind
|
||||
//Will display as special role if the target is set as MODE. Ninjas/commandos/nuke ops.
|
||||
new_objective.explanation_text = "[objective_type] [new_target:real_name], the [new_target:mind:assigned_role=="MODE" ? (new_target:mind:special_role) : (new_target:mind:role_alt_title ? new_target:mind:role_alt_title : new_target:mind:assigned_role)]."
|
||||
|
||||
if ("hijack")
|
||||
new_objective = new /datum/objective/hijack
|
||||
@@ -367,13 +362,14 @@ datum/mind
|
||||
new_objective.owner = src
|
||||
|
||||
if ("steal")
|
||||
var/list/possibilities = typesof(/datum/objective/steal) - /datum/objective/steal
|
||||
var/list/possibilities = GenerateTheft(assigned_role,src)
|
||||
var/list/temp_poss = possibilities[1]
|
||||
var/list/choices = list()
|
||||
for(var/datum/objective/steal/name in possibilities)
|
||||
choices[name.explanation_text] = name
|
||||
for(var/datum/objective/steal/steal in temp_poss)
|
||||
choices["[steal.steal_target]"] = steal
|
||||
var/new_target = input("Select target:", "Objective target") as null|anything in choices
|
||||
if (!new_target) return
|
||||
new_objective = new choices[new_target]
|
||||
new_objective = choices[new_target]
|
||||
new_objective.owner = src
|
||||
|
||||
if("download","capture","absorb")
|
||||
|
||||
@@ -110,6 +110,8 @@
|
||||
src.add_fingerprint(user)
|
||||
if (src.bullets < 1)
|
||||
user.show_message("\red *click* *click*", 2)
|
||||
for(var/mob/K in viewers(usr))
|
||||
K << 'empty.ogg'
|
||||
return
|
||||
playsound(user, 'Gunshot.ogg', 100, 1)
|
||||
src.bullets--
|
||||
|
||||
@@ -6,21 +6,17 @@
|
||||
uplink_welcome = "Syndicate Uplink Console:"
|
||||
uplink_uses = 10
|
||||
|
||||
// Enable this and the below to have command reports in extended
|
||||
// var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
|
||||
// var/const/waittime_h = 1800
|
||||
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
|
||||
var/const/waittime_h = 1800
|
||||
|
||||
/datum/game_mode/announce()
|
||||
world << "<B>The current game mode is - Extended Role-Playing!</B>"
|
||||
world << "<B>Just have fun and role-play!</B>"
|
||||
|
||||
/datum/game_mode/extended/pre_setup()
|
||||
// setup_sectors()
|
||||
// spawn_exporation_packs()
|
||||
return 1
|
||||
|
||||
// Enable this and the above to have command reports in extended
|
||||
///datum/game_mode/extended/post_setup()
|
||||
// send_intercept()
|
||||
//
|
||||
// ..()
|
||||
/datum/game_mode/extended/post_setup()
|
||||
spawn (rand(waittime_l, waittime_h)) // To reduce extended meta.
|
||||
send_intercept()
|
||||
..()
|
||||
@@ -232,11 +232,12 @@ Whitespace:Seperator;"}
|
||||
|
||||
comm.messagetitle.Add("Cent. Com. Status Summary")
|
||||
comm.messagetext.Add(intercepttext)
|
||||
world << sound('commandreport.ogg')
|
||||
|
||||
command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.")
|
||||
/* command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.")
|
||||
world << sound('intercept.ogg')
|
||||
if(security_level < SEC_LEVEL_BLUE)
|
||||
set_security_level(SEC_LEVEL_BLUE)
|
||||
set_security_level(SEC_LEVEL_BLUE)*/
|
||||
|
||||
|
||||
/datum/game_mode/proc/get_players_for_role(var/role, override_jobbans=1)
|
||||
|
||||
@@ -1167,6 +1167,10 @@ datum
|
||||
return 1
|
||||
|
||||
decapitate
|
||||
New(var/text,var/joba,var/datum/mind/targeta)
|
||||
target = targeta
|
||||
job = joba
|
||||
explanation_text = "Remove and recover the head of [target.current.real_name], the [target.assigned_role]."
|
||||
proc/find_target()
|
||||
..()
|
||||
if(target && target.current)
|
||||
@@ -1249,6 +1253,11 @@ datum
|
||||
|
||||
|
||||
debrain//I want braaaainssss
|
||||
New(var/text,var/joba,var/datum/mind/targeta)
|
||||
target = targeta
|
||||
job = joba
|
||||
explanation_text = "Remove and recover the brain of [target.current.real_name], the [target.assigned_role]."
|
||||
|
||||
proc/find_target()
|
||||
..()
|
||||
if(target && target.current)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
faction = "Station"
|
||||
total_positions = 0
|
||||
spawn_positions = 1
|
||||
supervisors = "your laws"
|
||||
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
|
||||
@@ -163,32 +163,30 @@
|
||||
if(src.repairing)
|
||||
return
|
||||
var/list/floorbottargets = list()
|
||||
if(!src.target || src.target == null)
|
||||
if(!src.target)
|
||||
for(var/obj/machinery/bot/floorbot/bot in world)
|
||||
if(bot != src)
|
||||
floorbottargets += bot.target
|
||||
if(src.amount <= 0 && ((src.target == null) || !src.target))
|
||||
if(src.amount <= 0 && !src.target)
|
||||
if(src.eattiles)
|
||||
for(var/obj/item/stack/tile/plasteel/T in view(7, src))
|
||||
if(T != src.oldtarget && !(target in floorbottargets))
|
||||
src.oldtarget = T
|
||||
src.target = T
|
||||
break
|
||||
if(src.target == null || !src.target)
|
||||
if(src.maketiles)
|
||||
if(src.target == null || !src.target)
|
||||
for(var/obj/item/stack/sheet/metal/M in view(7, src))
|
||||
if(!(M in floorbottargets) && M != src.oldtarget && M.amount == 1 && !(istype(M.loc, /turf/simulated/wall)))
|
||||
src.oldtarget = M
|
||||
src.target = M
|
||||
break
|
||||
if(!src.target && src.maketiles)
|
||||
for(var/obj/item/stack/sheet/metal/M in view(7, src))
|
||||
if(!(M in floorbottargets) && M != src.oldtarget && M.amount == 1 && !(istype(M.loc, /turf/simulated/wall)))
|
||||
src.oldtarget = M
|
||||
src.target = M
|
||||
break
|
||||
else
|
||||
return
|
||||
if(prob(5))
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message(text("[src] makes an excited booping beeping sound!"), 1)
|
||||
|
||||
if(!src.target || src.target == null)
|
||||
if(!src.target == null)
|
||||
if(targetdirection != null)
|
||||
/*
|
||||
for (var/turf/space/D in view(7,src))
|
||||
@@ -202,31 +200,31 @@
|
||||
if(istype(T, /turf/space))
|
||||
src.oldtarget = T
|
||||
src.target = T
|
||||
if(!src.target || src.target == null)
|
||||
if(!src.target)
|
||||
for (var/turf/space/D in view(7,src))
|
||||
if(!(D in floorbottargets) && D != src.oldtarget && (D.loc.name != "Space") && !istype(D.loc, /area/shuttle))
|
||||
src.oldtarget = D
|
||||
src.target = D
|
||||
break
|
||||
if((!src.target || src.target == null ) && src.improvefloors)
|
||||
if(!src.target && src.improvefloors)
|
||||
for (var/turf/simulated/floor/F in view(7,src))
|
||||
if(!(F in floorbottargets) && F != src.oldtarget && F.icon_state == "Floor1" && !(istype(F, /turf/simulated/floor/plating)))
|
||||
src.oldtarget = F
|
||||
src.target = F
|
||||
break
|
||||
if((!src.target || src.target == null) && src.eattiles)
|
||||
if(!src.target && src.eattiles)
|
||||
for(var/obj/item/stack/tile/plasteel/T in view(7, src))
|
||||
if(!(T in floorbottargets) && T != src.oldtarget)
|
||||
src.oldtarget = T
|
||||
src.target = T
|
||||
break
|
||||
|
||||
if(!src.target || src.target == null)
|
||||
if(!src.target)
|
||||
if(src.loc != src.oldloc)
|
||||
src.oldtarget = null
|
||||
return
|
||||
|
||||
if(src.target && (src.target != null) && src.path.len == 0)
|
||||
if(src.target && src.path.len == 0)
|
||||
spawn(0)
|
||||
if(!istype(src.target, /turf/))
|
||||
src.path = AStar(src.loc, src.target.loc, /turf/proc/AdjacentTurfsSpace, /turf/proc/Distance, 0, 30)
|
||||
@@ -237,7 +235,7 @@
|
||||
src.oldtarget = src.target
|
||||
src.target = null
|
||||
return
|
||||
if(src.path.len > 0 && src.target && (src.target != null))
|
||||
if(src.path.len > 0 && src.target)
|
||||
step_to(src, src.path[1])
|
||||
src.path -= src.path[1]
|
||||
else if(src.path.len == 1)
|
||||
|
||||
@@ -34,6 +34,8 @@
|
||||
|
||||
if(shots_left <= 0)
|
||||
user.show_message("\red *click* *click*", 2)
|
||||
for(var/mob/K in viewers(usr))
|
||||
K << 'empty.ogg'
|
||||
return
|
||||
|
||||
playsound(src.loc, 'flash.ogg', 100, 1)
|
||||
|
||||
@@ -335,4 +335,110 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
implanted(mob/source as mob)
|
||||
src.activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
|
||||
source.mind.store_memory("Freedom implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.", 0, 0)
|
||||
source << "The implanted freedom implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate."
|
||||
source << "The implanted freedom implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate."
|
||||
|
||||
/*// --------------------LASERS WORK FROM HERE, AUGMENTATIONS SHIZZLE----------------------
|
||||
/obj/item/weapon/implant/augmentation/thermalscanner
|
||||
name = "Thermal Scanner Augmentation"
|
||||
desc = "Makes you see humans through walls"
|
||||
|
||||
get_data()
|
||||
var/dat = {"
|
||||
<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> NanoTrasen Thermal Implant<BR>
|
||||
<b>Life:</b> Ten years.<BR>
|
||||
<b>Important Notes:</b> Personnel injected with this device tend to be able to see lifeforms through life using thermal.<BR>
|
||||
<HR>
|
||||
<b>Implant Details:</b><BR>
|
||||
<b>Function:</b> Contains a small pod of nanobots that manipulate the host's eye functions.<BR>
|
||||
<b>Integrity:</b> Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."}
|
||||
return dat
|
||||
|
||||
|
||||
implanted(M as mob)
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
vision_flags = SEE_MOBS
|
||||
invisa_view = 2
|
||||
usr << "You suddenly start seeing body temperatures of whoever is around you."
|
||||
else
|
||||
usr << "This implant is not compatible!"
|
||||
return
|
||||
|
||||
/obj/item/weapon/implant/augmentation/mesonscanner
|
||||
name = "Meson Scanner Augmentation"
|
||||
desc = "Makes you see floor and wall layouts through walls."
|
||||
|
||||
get_data()
|
||||
var/dat = {"
|
||||
<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> NanoTrasen Meson Implant<BR>
|
||||
<b>Life:</b> Ten years.<BR>
|
||||
<b>Important Notes:</b> Personnel injected with this device tend to be able to see floor and wall layouts through walls.<BR>
|
||||
<HR>
|
||||
<b>Implant Details:</b><BR>
|
||||
<b>Function:</b> Contains a small pod of nanobots that manipulate the host's eye functions.<BR>
|
||||
<b>Integrity:</b> Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."}
|
||||
return dat
|
||||
|
||||
|
||||
implanted(M as mob)
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
vision_flags = SEE_TURFS
|
||||
usr << "You suddenly start seeing body temperatures of whoever is around you."
|
||||
else
|
||||
usr << "This implant is not compatible!"
|
||||
return
|
||||
|
||||
/obj/item/weapon/implant/augmentation/medicalhud
|
||||
name = "Medical HUD Augmentation"
|
||||
desc = "Makes you see the medical condition of a person."
|
||||
|
||||
get_data()
|
||||
var/dat = {"
|
||||
<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> NanoTrasen Med HUD Implant<BR>
|
||||
<b>Life:</b> Ten years.<BR>
|
||||
<b>Important Notes:</b> Personnel injected with this device tend to be able to see the medical condition of a person.<BR>
|
||||
<HR>
|
||||
<b>Implant Details:</b><BR>
|
||||
<b>Function:</b> Contains a small pod of nanobots that manipulate the host's eye functions.<BR>
|
||||
<b>Integrity:</b> Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."}
|
||||
return dat
|
||||
|
||||
|
||||
implanted(M as mob)
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
|
||||
src.hud = new/obj/item/clothing/glasses/hud/health(src)
|
||||
usr << "You suddenly start seeing body temperatures of whoever is around you."
|
||||
else
|
||||
usr << "This implant is not compatible!"
|
||||
return
|
||||
|
||||
/obj/item/weapon/implant/augmentation/securityhud
|
||||
name = "Security HUD Augmentation"
|
||||
desc = "Makes you see the Security standings of a person."
|
||||
|
||||
get_data()
|
||||
var/dat = {"
|
||||
<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> NanoTrasen Sec HUD Implant<BR>
|
||||
<b>Life:</b> Ten years.<BR>
|
||||
<b>Important Notes:</b> Personnel injected with this device tend to be able to see the security standings of a person.<BR>
|
||||
<HR>
|
||||
<b>Implant Details:</b><BR>
|
||||
<b>Function:</b> Contains a small pod of nanobots that manipulate the host's eye functions.<BR>
|
||||
<b>Integrity:</b> Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."}
|
||||
return dat
|
||||
|
||||
|
||||
implanted(M as mob)
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/obj/item/clothing/glasses/hud/security/hud = null
|
||||
|
||||
src.hud = new/obj/item/clothing/glasses/hud/security(src)
|
||||
|
||||
usr << "You suddenly start seeing body temperatures of whoever is around you."
|
||||
else
|
||||
usr << "This implant is not compatible!"
|
||||
return*/
|
||||
@@ -150,6 +150,8 @@
|
||||
/obj/item/device/radio/headset/ert
|
||||
name = "CentCom Response Team headset"
|
||||
desc = "The headset of the boss's boss. Channels are as follows: :h - Response Team :c - command, :s - security, :e - engineering, :d - mining, :q - cargo, :m - medical, :n - science."
|
||||
icon_state = "com_headset"
|
||||
item_state = "headset"
|
||||
freerange = 1
|
||||
keyslot2 = new /obj/item/device/encryptionkey/ert
|
||||
|
||||
|
||||
@@ -196,7 +196,7 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
/mob/living/carbon/human/proc/equip_strike_team(leader_selected = 0)
|
||||
|
||||
//Special radio setup
|
||||
equip_if_possible(new /obj/item/device/radio/headset/ert, slot_ears)
|
||||
equip_if_possible(new /obj/item/device/radio/headset/ert(src), slot_ears)
|
||||
|
||||
//Adding Camera Network
|
||||
var/obj/machinery/camera/camera = new /obj/machinery/camera(src) //Gives all the commandos internals cameras.
|
||||
|
||||
@@ -14,10 +14,10 @@
|
||||
i++
|
||||
if(i%2 == 0)
|
||||
color = "#f2f2f2"
|
||||
var/real = (M.real_name == M.original_name ? M.real_name : "[M.original_name] (as [M.real_name])")
|
||||
var/real = (M.real_name == M.original_name ? "<b>[M.name]/[M.real_name]</b>" : "<b>[M.original_name] (as [M.name]/[M.real_name])</b>")
|
||||
var/turf/T = get_turf(M)
|
||||
var/client_key = (M.key? M.key : "No key")
|
||||
dat += "<tr align='center' bgcolor='[color]'><td>[M.name] \[[real]\] <br>[M.client ? M.client : "No client ([client_key])"] at ([T.x], [T.y], [T.z])</td>" // Adds current name
|
||||
dat += "<tr align='center' bgcolor='[color]'><td>[real] <br>[M.client ? M.client : "No client ([client_key])"] at ([T.x], [T.y], [T.z])</td>" // Adds current name
|
||||
if(isobserver(M))
|
||||
dat += "<td>Ghost</td>"
|
||||
else if(isalien(M))
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
alert("Admin jumping disabled")
|
||||
return
|
||||
|
||||
/client/proc/jumptomob()
|
||||
/client/proc/jumptomob(var/mob/M in world)
|
||||
set category = "Admin"
|
||||
set name = "Jump to Mob"
|
||||
|
||||
@@ -37,12 +37,13 @@
|
||||
return
|
||||
|
||||
if(config.allow_admin_jump)
|
||||
var/mobs = getmobs()
|
||||
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in mobs
|
||||
if(!selection)
|
||||
return
|
||||
|
||||
var/mob/M = mobs[selection]
|
||||
if(!M || !istype(M))
|
||||
var/mobs = getmobs()
|
||||
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in mobs
|
||||
if(!selection)
|
||||
return
|
||||
|
||||
M = mobs[selection]
|
||||
var/mob/A = src.mob
|
||||
var/turf/T = get_turf(M)
|
||||
if(T && isturf(T))
|
||||
@@ -94,7 +95,7 @@
|
||||
else
|
||||
alert("Admin jumping disabled")
|
||||
|
||||
/client/proc/Getmob()
|
||||
/client/proc/Getmob(var/mob/M)
|
||||
set category = "Admin"
|
||||
set name = "Get Mob"
|
||||
set desc = "Mob to teleport"
|
||||
@@ -102,11 +103,12 @@
|
||||
src << "Only administrators may use this command."
|
||||
return
|
||||
if(config.allow_admin_jump)
|
||||
var/mobs = getmobs()
|
||||
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in mobs
|
||||
var/mob/M = mobs[selection]
|
||||
if(!istype(M))
|
||||
return
|
||||
if(!M || !istype(M))
|
||||
var/mobs = getmobs()
|
||||
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in mobs
|
||||
M = mobs[selection]
|
||||
if(!istype(M))
|
||||
return
|
||||
var/mob/A = src.mob
|
||||
var/turf/T = get_turf(A)
|
||||
if(T && isturf(T))
|
||||
|
||||
@@ -107,16 +107,9 @@
|
||||
break
|
||||
else
|
||||
C.images += image(tempHud,perp,"hudunknown")
|
||||
if(hasorgans(perp))
|
||||
for(var/datum/organ/external/E in perp)
|
||||
for(var/obj/item/weapon/implant/I in E.implant)
|
||||
if(I.implanted)
|
||||
if(istype(I,/obj/item/weapon/implant/tracking))
|
||||
C.images += image(tempHud,perp,"hud_imp_tracking")
|
||||
if(istype(I,/obj/item/weapon/implant/loyalty))
|
||||
C.images += image(tempHud,perp,"hud_imp_loyal")
|
||||
else
|
||||
for(var/obj/item/weapon/implant/I in perp)
|
||||
for(var/named in perp.organs)
|
||||
var/datum/organ/external/E = perp.organs[named]
|
||||
for(var/obj/item/weapon/implant/I in E.implant)
|
||||
if(I.implanted)
|
||||
if(istype(I,/obj/item/weapon/implant/tracking))
|
||||
C.images += image(tempHud,perp,"hud_imp_tracking")
|
||||
|
||||
@@ -999,7 +999,7 @@
|
||||
var/blood_max = 0
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/temp = organs[name]
|
||||
if(!temp.bleeding)
|
||||
if(!temp.bleeding || temp.robot) //THAT WAS DUMB.
|
||||
continue
|
||||
// else
|
||||
// if(prob(35))
|
||||
|
||||
@@ -1021,3 +1021,29 @@
|
||||
parts -= picked
|
||||
updatehealth()
|
||||
UpdateDamageIcon()
|
||||
|
||||
/mob/living/carbon/monkey/getBruteLoss()
|
||||
var/amount = 0.0
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/O = organs[name]
|
||||
if(!O.robot) amount+= O.brute_dam
|
||||
return amount
|
||||
|
||||
/mob/living/carbon/monkey/adjustBruteLoss(var/amount, var/used_weapon = null)
|
||||
if(amount > 0)
|
||||
take_overall_damage(amount, 0, used_weapon)
|
||||
else
|
||||
heal_overall_damage(-amount, 0)
|
||||
|
||||
/mob/living/carbon/monkey/getFireLoss()
|
||||
var/amount = 0.0
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/O = organs[name]
|
||||
if(!O.robot) amount+= O.burn_dam
|
||||
return amount
|
||||
|
||||
/mob/living/carbon/monkey/adjustFireLoss(var/amount,var/used_weapon = null)
|
||||
if(amount > 0)
|
||||
take_overall_damage(0, amount, used_weapon)
|
||||
else
|
||||
heal_overall_damage(0, -amount)
|
||||
@@ -95,6 +95,13 @@
|
||||
L |= E:contents
|
||||
for(var/obj/item/smallDelivery/S in L)
|
||||
L |= S.wrapped
|
||||
if(hasorgans(src))
|
||||
for(var/named in src:organs)
|
||||
var/datum/organ/external/O = src:organs[named]
|
||||
for(var/obj/item/weapon/implant/I in O.implant)
|
||||
L |= I
|
||||
if(istype(I, /obj/item/weapon/implant/compressed))
|
||||
L |= I:scanned
|
||||
|
||||
for(var/obj/B in L)
|
||||
if(B.type == A)
|
||||
@@ -114,6 +121,13 @@
|
||||
L |= E:contents
|
||||
for(var/obj/item/smallDelivery/S in L)
|
||||
L |= S.wrapped
|
||||
if(hasorgans(src))
|
||||
for(var/named in src:organs)
|
||||
var/datum/organ/external/O = src:organs[named]
|
||||
for(var/obj/item/weapon/implant/I in O.implant)
|
||||
L |= I
|
||||
if(istype(I, /obj/item/weapon/implant/compressed))
|
||||
L |= I:scanned
|
||||
|
||||
for(var/obj/item/weapon/reagent_containers/B in L)
|
||||
for(var/datum/reagent/R in B.reagents.reagent_list)
|
||||
|
||||
@@ -339,7 +339,7 @@
|
||||
for(var/mob/M in listening)
|
||||
eavesdroppers.Remove(M)
|
||||
for(var/mob/M in eavesdroppers)
|
||||
if(M.stat || !M.client)
|
||||
if(M.stat || !M.client || istype(M, /mob/living/silicon/pai) || M == src)
|
||||
eavesdroppers.Remove(M)
|
||||
|
||||
for (var/obj/O in ((W | contents)-used_radios))
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
|
||||
if (length(message) >= 2)
|
||||
if ((copytext(message, 1, 3) == ":s") || (copytext(message, 1, 3) == ":S"))
|
||||
if(istype(src, /mob/living/silicon/pai))
|
||||
return ..(message)
|
||||
// if(istype(src, /mob/living/silicon/pai))
|
||||
// return ..(message)
|
||||
message = copytext(message, 3)
|
||||
message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
|
||||
robot_talk(message)
|
||||
|
||||
@@ -162,6 +162,8 @@
|
||||
if(!special_check(user)) return
|
||||
if(!load_into_chamber())
|
||||
user.visible_message("*click click*", "\red <b>*click*</b>")
|
||||
for(var/mob/K in viewers(usr))
|
||||
K << 'empty.ogg'
|
||||
return
|
||||
|
||||
if(!in_chamber) return
|
||||
@@ -250,6 +252,8 @@
|
||||
told_cant_shoot = 0
|
||||
else
|
||||
usr.visible_message("*click click*", "\red <b>*click*</b>")
|
||||
for(var/mob/K in viewers(usr))
|
||||
K << 'empty.ogg'
|
||||
var/dir_to_fire = sd_get_approx_dir(M,T)
|
||||
if(dir_to_fire != M.dir)
|
||||
M.dir = dir_to_fire
|
||||
|
||||
Reference in New Issue
Block a user