mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-22 04:24:20 +01:00
Reduce lines by removing blank lines added by PJ's script
This commit is contained in:
@@ -202,10 +202,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
if(ticker)
|
||||
if(ticker.mode)
|
||||
// to_chat(world, "DEBUG: ticker not null")
|
||||
|
||||
if(ticker.mode.name == "AI malfunction")
|
||||
// to_chat(world, "DEBUG: malf mode ticker test")
|
||||
|
||||
if(ticker.mode:malf_mode_declared)
|
||||
stat(null, "Time left: [max(ticker.mode:AI_win_timeleft/(ticker.mode:apcs/3), 0)]")
|
||||
show_stat_emergency_shuttle_eta()
|
||||
@@ -216,15 +214,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
if(!client) return
|
||||
if(!can_reenter_corpse)
|
||||
to_chat(src, "<span class='warning'>You've given up your right to respawn!</span>")
|
||||
|
||||
return
|
||||
if(!(mind && mind.current && can_reenter_corpse))
|
||||
to_chat(src, "<span class='warning'>You have no body.</span>")
|
||||
|
||||
return
|
||||
if(mind.current.key && copytext(mind.current.key,1,2)!="@") //makes sure we don't accidentally kick any clients
|
||||
to_chat(usr, "<span class='warning'>Another consciousness is in your body...It is resisting you.</span>")
|
||||
|
||||
return
|
||||
if(mind.current.ajourn && mind.current.stat != DEAD) //check if the corpse is astral-journeying (it's client ghosted using a cultist rune).
|
||||
var/turf/T = get_turf(mind.current)
|
||||
@@ -236,7 +231,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
break
|
||||
if(!found_astral_rune)
|
||||
to_chat(usr, "<span class='warning'>The astral cord that ties your body and your spirit has been severed. You are likely to wander the realm beyond until your body is finally dead and thus reunited with you.</span>")
|
||||
|
||||
return
|
||||
|
||||
mind.current.ajourn=0
|
||||
@@ -254,13 +248,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
/mob/dead/observer/proc/notify_cloning(var/message, var/sound, var/atom/source)
|
||||
if(message)
|
||||
to_chat(src, "<span class='ghostalert'>[message]</span>")
|
||||
|
||||
to_chat(src, "<span class='ghostalert'><a href=?src=\ref[src];reenter=1>(Click to re-enter)</a></span>")
|
||||
|
||||
if(sound)
|
||||
to_chat(src, sound(sound))
|
||||
|
||||
|
||||
/mob/dead/observer/proc/show_me_the_hud(hud_index)
|
||||
var/datum/atom_hud/H = huds[hud_index]
|
||||
H.add_hud_to(src)
|
||||
@@ -280,35 +271,29 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
if(0)
|
||||
show_me_the_hud(DATA_HUD_SECURITY_BASIC)
|
||||
to_chat(src, "<span class='notice'>Security HUD set.</span>")
|
||||
|
||||
if(DATA_HUD_SECURITY_BASIC)
|
||||
show_me_the_hud(DATA_HUD_MEDICAL_ADVANCED)
|
||||
to_chat(src, "<span class='notice'>Medical HUD set.</span>")
|
||||
|
||||
if(DATA_HUD_MEDICAL_ADVANCED)
|
||||
show_me_the_hud(DATA_HUD_DIAGNOSTIC)
|
||||
to_chat(src, "<span class='notice'>Diagnostic HUD set.</span>")
|
||||
|
||||
if(DATA_HUD_DIAGNOSTIC)
|
||||
data_hud_seen = 0
|
||||
to_chat(src, "<span class='notice'>HUDs disabled.</span>")
|
||||
|
||||
|
||||
|
||||
/mob/dead/observer/verb/toggle_antagHUD()
|
||||
set category = "Ghost"
|
||||
set name = "Toggle AntagHUD"
|
||||
set desc = "Toggles AntagHUD allowing you to see who is the antagonist"
|
||||
if(!config.antag_hud_allowed && !client.holder)
|
||||
to_chat(src, "\red Admins have disabled this for this round.")
|
||||
|
||||
return
|
||||
if(!client)
|
||||
return
|
||||
var/mob/dead/observer/M = src
|
||||
if(jobban_isbanned(M, "AntagHUD"))
|
||||
to_chat(src, "\red <B>You have been banned from using this feature</B>")
|
||||
|
||||
return
|
||||
if(config.antag_hud_restricted && !M.has_enabled_antagHUD && !check_rights(R_ADMIN|R_MOD,0))
|
||||
var/response = alert(src, "If you turn this on, you will not be able to take any part in the round.","Are you sure you want to turn this feature on?","Yes","No")
|
||||
@@ -329,11 +314,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
H.remove_hud_from(usr)
|
||||
if(!M.antagHUD)
|
||||
to_chat(usr, "AntagHud Toggled ON")
|
||||
|
||||
M.antagHUD = 1
|
||||
else
|
||||
to_chat(usr, "AntagHud Toggled OFF")
|
||||
|
||||
M.antagHUD = 0
|
||||
|
||||
/mob/dead/observer/proc/dead_tele(A in ghostteleportlocs)
|
||||
@@ -343,7 +326,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
|
||||
if(!isobserver(usr))
|
||||
to_chat(usr, "Not when you're not dead!")
|
||||
|
||||
return
|
||||
|
||||
usr.verbs -= /mob/dead/observer/proc/dead_tele
|
||||
@@ -360,7 +342,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
if(!L || !L.len)
|
||||
to_chat(usr, "<span class='warning'>No area available.</span>")
|
||||
|
||||
|
||||
usr.forceMove(pick(L))
|
||||
following = null
|
||||
|
||||
@@ -383,7 +364,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
return
|
||||
following = target
|
||||
to_chat(src, "<span class='notice'>Now following [target]</span>")
|
||||
|
||||
if(ismob(target))
|
||||
forceMove(get_turf(target))
|
||||
var/mob/M = target
|
||||
@@ -441,7 +421,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
to_chat(src, "This mob is not located in the game world.")
|
||||
|
||||
|
||||
|
||||
/* Now a spell. See spells.dm
|
||||
/mob/dead/observer/verb/boo()
|
||||
set category = "Ghost"
|
||||
@@ -461,12 +440,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
set hidden = 1
|
||||
to_chat(src, "\red You are dead! You have no mind to store memory!")
|
||||
|
||||
|
||||
/mob/dead/observer/add_memory()
|
||||
set hidden = 1
|
||||
to_chat(src, "\red You are dead! You have no mind to store memory!")
|
||||
|
||||
|
||||
/mob/dead/observer/verb/analyze_air()
|
||||
set name = "Analyze Air"
|
||||
set category = "Ghost"
|
||||
@@ -483,13 +460,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
var/total_moles = environment.total_moles()
|
||||
|
||||
to_chat(src, "\blue <B>Results:</B>")
|
||||
|
||||
if(abs(pressure - ONE_ATMOSPHERE) < 10)
|
||||
to_chat(src, "\blue Pressure: [round(pressure,0.1)] kPa")
|
||||
|
||||
else
|
||||
to_chat(src, "\red Pressure: [round(pressure,0.1)] kPa")
|
||||
|
||||
if(total_moles)
|
||||
var/o2_concentration = environment.oxygen/total_moles
|
||||
var/n2_concentration = environment.nitrogen/total_moles
|
||||
@@ -499,38 +473,28 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
|
||||
if(abs(n2_concentration - N2STANDARD) < 20)
|
||||
to_chat(src, "\blue Nitrogen: [round(n2_concentration*100)]% ([round(environment.nitrogen,0.01)] moles)")
|
||||
|
||||
else
|
||||
to_chat(src, "\red Nitrogen: [round(n2_concentration*100)]% ([round(environment.nitrogen,0.01)] moles)")
|
||||
|
||||
|
||||
if(abs(o2_concentration - O2STANDARD) < 2)
|
||||
to_chat(src, "\blue Oxygen: [round(o2_concentration*100)]% ([round(environment.oxygen,0.01)] moles)")
|
||||
|
||||
else
|
||||
to_chat(src, "\red Oxygen: [round(o2_concentration*100)]% ([round(environment.oxygen,0.01)] moles)")
|
||||
|
||||
|
||||
if(co2_concentration > 0.01)
|
||||
to_chat(src, "\red CO2: [round(co2_concentration*100)]% ([round(environment.carbon_dioxide,0.01)] moles)")
|
||||
|
||||
else
|
||||
to_chat(src, "\blue CO2: [round(co2_concentration*100)]% ([round(environment.carbon_dioxide,0.01)] moles)")
|
||||
|
||||
|
||||
if(plasma_concentration > 0.01)
|
||||
to_chat(src, "\red Plasma: [round(plasma_concentration*100)]% ([round(environment.toxins,0.01)] moles)")
|
||||
|
||||
|
||||
if(unknown_concentration > 0.01)
|
||||
to_chat(src, "\red Unknown: [round(unknown_concentration*100)]% ([round(unknown_concentration*total_moles,0.01)] moles)")
|
||||
|
||||
|
||||
to_chat(src, "\blue Temperature: [round(environment.temperature-T0C,0.1)]°C")
|
||||
|
||||
to_chat(src, "\blue Heat Capacity: [round(environment.heat_capacity(),0.1)]")
|
||||
|
||||
|
||||
/mob/dead/observer/verb/view_manifest()
|
||||
set name = "View Crew Manifest"
|
||||
set category = "Ghost"
|
||||
@@ -587,7 +551,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
var/mob/target = locate(href_list["jump"])
|
||||
var/mob/A = usr;
|
||||
to_chat(A, "Teleporting to [target]...")
|
||||
|
||||
//var/mob/living/silicon/ai/A = locate(href_list["track2"]) in mob_list
|
||||
if(target && target != usr)
|
||||
spawn(0)
|
||||
@@ -611,11 +574,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
src.anonsay = !src.anonsay
|
||||
if(anonsay)
|
||||
to_chat(src, "<span class='info'>Your key won't be shown when you speak in dead chat.</span>")
|
||||
|
||||
else
|
||||
to_chat(src, "<span class='info'>Your key will be publicly visible again.</span>")
|
||||
|
||||
|
||||
/mob/dead/observer/verb/toggle_ghostsee()
|
||||
set name = "Toggle Ghost Vision"
|
||||
set desc = "Toggles your ability to see things only ghosts can see, like other ghosts"
|
||||
@@ -624,7 +585,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
updateghostsight()
|
||||
to_chat(usr, "You [(ghostvision?"now":"no longer")] have ghost vision.")
|
||||
|
||||
|
||||
/mob/dead/observer/verb/toggle_darkness()
|
||||
set name = "Toggle Darkness"
|
||||
set category = "Ghost"
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
if (src.client)
|
||||
if(src.client.prefs.muted & MUTE_DEADCHAT)
|
||||
to_chat(src, "\red You cannot talk in deadchat (muted).")
|
||||
|
||||
return
|
||||
|
||||
if (src.client.handle_spam_prevention(message,MUTE_DEADCHAT))
|
||||
@@ -32,7 +31,6 @@
|
||||
if(src.client)
|
||||
if(src.client.prefs.muted & MUTE_DEADCHAT)
|
||||
to_chat(src, "\red You cannot emote in deadchat (muted).")
|
||||
|
||||
return
|
||||
|
||||
if(src.client.handle_spam_prevention(message, MUTE_DEADCHAT))
|
||||
|
||||
@@ -34,7 +34,6 @@ var/global/list/boo_phrases=list(
|
||||
if(H && H.client)
|
||||
to_chat(H, "<i>[pick(boo_phrases)]</i>")
|
||||
|
||||
|
||||
// Flicker unblessed lights in range
|
||||
if(istype(A,/obj/machinery/light))
|
||||
var/obj/machinery/light/L = A
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
|
||||
if(stat || !use_me && usr == src)
|
||||
to_chat(usr, "You are unable to emote.")
|
||||
|
||||
return
|
||||
|
||||
var/muzzled = istype(src.wear_mask, /obj/item/clothing/mask/muzzle)
|
||||
@@ -87,18 +86,15 @@
|
||||
|
||||
if(client.prefs.muted & MUTE_DEADCHAT)
|
||||
to_chat(src, "\red You cannot send deadchat emotes (muted).")
|
||||
|
||||
return
|
||||
|
||||
if(!(client.prefs.toggles & CHAT_DEAD))
|
||||
to_chat(src, "\red You have deadchat muted.")
|
||||
|
||||
return
|
||||
|
||||
if(!src.client.holder)
|
||||
if(!config.dsay_allowed)
|
||||
to_chat(src, "\red Deadchat is globally muted")
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -124,6 +120,5 @@
|
||||
if(check_rights(R_ADMIN|R_MOD, 0, M) && (M.client.prefs.toggles & CHAT_DEAD)) // Show the emote to admins/mods
|
||||
to_chat(M, message)
|
||||
|
||||
|
||||
else if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_DEAD)) // Show the emote to regular ghosts with deadchat toggled on
|
||||
M.show_message(message, 2)
|
||||
|
||||
@@ -66,17 +66,13 @@
|
||||
if(!language || !(language.flags & INNATE)) // INNATE is the flag for audible-emote-language, so we don't want to show an "x talks but you cannot hear them" message if it's set
|
||||
if(speaker == src)
|
||||
to_chat(src, "<span class='warning'>You cannot hear yourself speak!</span>")
|
||||
|
||||
else
|
||||
to_chat(src, "<span class='name'>[speaker_name]</span>[alt_name] talks but you cannot hear them.")
|
||||
|
||||
else
|
||||
if(language)
|
||||
to_chat(src, "<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [track][language.format_message(message, verb)]</span>")
|
||||
|
||||
else
|
||||
to_chat(src, "<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [track][verb], <span class='message'><span class='body'>\"[message]\"</span></span></span>")
|
||||
|
||||
if (speech_sound && (get_dist(speaker, src) <= world.view && src.z == speaker.z))
|
||||
var/turf/source = speaker? get_turf(speaker) : get_turf(src)
|
||||
src.playsound_local(source, speech_sound, sound_vol, 1)
|
||||
@@ -182,14 +178,11 @@
|
||||
if(sdisabilities & DEAF || ear_deaf)
|
||||
if(prob(20))
|
||||
to_chat(src, "<span class='warning'>You feel your headset vibrate but can hear nothing from it!</span>")
|
||||
|
||||
else if(track)
|
||||
to_chat(src, "[part_a][track][part_b][formatted]</span></span>")
|
||||
|
||||
else
|
||||
to_chat(src, "[part_a][speaker_name][part_b][formatted]</span></span>")
|
||||
|
||||
|
||||
/mob/proc/hear_signlang(var/message, var/verb = "gestures", var/datum/language/language, var/mob/speaker = null)
|
||||
if(!client)
|
||||
return
|
||||
@@ -223,4 +216,3 @@
|
||||
heard = "<span class = 'game_say'>...<i>You almost hear someone talking</i>...</span>"
|
||||
|
||||
to_chat(src, heard)
|
||||
|
||||
|
||||
@@ -48,12 +48,9 @@
|
||||
if(istype(M))
|
||||
M.unEquip(src)
|
||||
to_chat(M, "[src] wriggles out of your grip!")
|
||||
|
||||
to_chat(src, "You wriggle out of [M]'s grip!")
|
||||
|
||||
else if(istype(src.loc,/obj/item))
|
||||
to_chat(src, "You struggle free of [src.loc].")
|
||||
|
||||
src.forceMove(get_turf(src))
|
||||
|
||||
if(istype(M))
|
||||
@@ -78,9 +75,7 @@
|
||||
H.attack_hand(grabber)
|
||||
|
||||
to_chat(grabber, "<span class='notice'>You scoop up \the [src].")
|
||||
|
||||
to_chat(src, "<span class='notice'>\The [grabber] scoops you up.</span>")
|
||||
|
||||
grabber.status_flags |= PASSEMOTES
|
||||
return H
|
||||
|
||||
|
||||
@@ -105,13 +105,11 @@
|
||||
if(istype(player,/mob/dead) && follow)
|
||||
var/msg_dead = "<i><span class='game say'>[name], <span class='name'>[speaker_mask]</span> ([ghost_follow_link(speaker, ghost=player)]) [format_message(message, get_spoken_verb(message))]</span></i>"
|
||||
to_chat(player, msg_dead)
|
||||
|
||||
continue
|
||||
|
||||
else if(istype(player,/mob/dead) || ((src in player.languages) && check_special_condition(player)))
|
||||
to_chat(player, msg)
|
||||
|
||||
|
||||
/datum/language/proc/check_special_condition(var/mob/other)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -26,18 +26,14 @@
|
||||
switch(autohiss_mode)
|
||||
if(AUTOHISS_OFF)
|
||||
to_chat(src, "Auto-hiss is now OFF.")
|
||||
|
||||
if(AUTOHISS_BASIC)
|
||||
to_chat(src, "Auto-hiss is now BASIC.")
|
||||
|
||||
if(AUTOHISS_FULL)
|
||||
to_chat(src, "Auto-hiss is now FULL.")
|
||||
|
||||
else
|
||||
autohiss_mode = AUTOHISS_OFF
|
||||
to_chat(src, "Auto-hiss is now OFF.")
|
||||
|
||||
|
||||
/datum/species
|
||||
var/list/autohiss_basic_map = null
|
||||
var/list/autohiss_extra_map = null
|
||||
|
||||
@@ -86,7 +86,6 @@
|
||||
|
||||
// to_chat(world, "Loc temp: [loc_temp] - Body temp: [bodytemperature] - Fireloss: [getFireLoss()] - Fire protection: [heat_protection] - Location: [loc] - src: [src]")
|
||||
|
||||
|
||||
// Aliens are now weak to fire.
|
||||
|
||||
//After then, it reacts to the surrounding atmosphere based on your thermal protection
|
||||
|
||||
@@ -8,12 +8,10 @@ In all, this is a lot like the monkey code. /N
|
||||
/mob/living/carbon/alien/attack_alien(mob/living/carbon/alien/M as mob)
|
||||
if (!ticker)
|
||||
to_chat(M, "You cannot attack people before the game has started.")
|
||||
|
||||
return
|
||||
|
||||
if (istype(loc, /turf) && istype(loc.loc, /area/start))
|
||||
to_chat(M, "No attacking people at spawn, you jackass.")
|
||||
|
||||
return
|
||||
|
||||
switch(M.a_intent)
|
||||
@@ -41,7 +39,6 @@ In all, this is a lot like the monkey code. /N
|
||||
updatehealth()
|
||||
else
|
||||
to_chat(M, "<span class='warning'>[name] is too injured for that.</span>")
|
||||
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -9,15 +9,12 @@ Doesn't work on other aliens/AI.*/
|
||||
/mob/living/carbon/proc/powerc(X, Y)//Y is optional, checks for weed planting. X can be null.
|
||||
if(stat)
|
||||
to_chat(src, "<span class='noticealien'>You must be conscious to do this.</span>")
|
||||
|
||||
return 0
|
||||
else if(X && getPlasma() < X)
|
||||
to_chat(src, "<span class='noticealien'>Not enough plasma stored.</span>")
|
||||
|
||||
return 0
|
||||
else if(Y && (!isturf(src.loc) || istype(src.loc, /turf/space)))
|
||||
to_chat(src, "<span class='noticealien'>You can't place that here!</span>")
|
||||
|
||||
return 0
|
||||
else return 1
|
||||
|
||||
@@ -28,7 +25,6 @@ Doesn't work on other aliens/AI.*/
|
||||
|
||||
if(locate(/obj/structure/alien/weeds/node) in get_turf(src))
|
||||
to_chat(src, "<span class='noticealien'>There's already a weed node here.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(powerc(50,1))
|
||||
@@ -49,9 +45,7 @@ Doesn't work on other aliens/AI.*/
|
||||
if(msg)
|
||||
log_say("Alien Whisper: [key_name(src)]->[key_name(M)]: [msg]")
|
||||
to_chat(M, "<span class='noticealien'>You hear a strange, alien voice in your head...<span class='noticealien'>[msg]")
|
||||
|
||||
to_chat(src, "<span class='noticealien'>You said: [msg] to [M]</span>")
|
||||
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
G.show_message("<i>Alien message from <b>[src]</b> ([ghost_follow_link(src, ghost=G)]) to <b>[M]</b> ([ghost_follow_link(M, ghost=G)]): [msg]</i>")
|
||||
return
|
||||
@@ -70,12 +64,9 @@ Doesn't work on other aliens/AI.*/
|
||||
M.adjustPlasma(amount)
|
||||
adjustPlasma(-amount)
|
||||
to_chat(M, "<span class='noticealien'>[src] has transfered [amount] plasma to you.</span>")
|
||||
|
||||
to_chat(src, {"<span class='noticealien'>You have trasferred [amount] plasma to [M]</span>"})
|
||||
|
||||
else
|
||||
to_chat(src, "<span class='noticealien'>You need to be closer.</span>")
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -91,7 +82,6 @@ Doesn't work on other aliens/AI.*/
|
||||
var/obj/I = O
|
||||
if(I.unacidable) //So the aliens don't destroy energy fields/singularies/other aliens/etc with their acid.
|
||||
to_chat(src, "<span class='noticealien'>You cannot dissolve this object.</span>")
|
||||
|
||||
return
|
||||
// TURF CHECK
|
||||
else if(istype(O, /turf/simulated))
|
||||
@@ -99,12 +89,10 @@ Doesn't work on other aliens/AI.*/
|
||||
// R WALL
|
||||
if(istype(T, /turf/simulated/wall/r_wall))
|
||||
to_chat(src, "<span class='noticealien'>You cannot dissolve this object.</span>")
|
||||
|
||||
return
|
||||
// R FLOOR
|
||||
if(istype(T, /turf/simulated/floor/engine))
|
||||
to_chat(src, "<span class='noticealien'>You cannot dissolve this object.</span>")
|
||||
|
||||
return
|
||||
else// Not a type we can acid.
|
||||
return
|
||||
@@ -114,7 +102,6 @@ Doesn't work on other aliens/AI.*/
|
||||
visible_message("<span class='alertalien'>[src] vomits globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!</span>")
|
||||
else
|
||||
to_chat(src, "<span class='noticealien'>Target is too far away.</span>")
|
||||
|
||||
return
|
||||
|
||||
/mob/living/carbon/alien/humanoid/proc/neurotoxin() // ok
|
||||
|
||||
@@ -35,12 +35,10 @@
|
||||
|
||||
if(src.has_brain_worms())
|
||||
to_chat(src, "<span class='warning'>We cannot perform this ability at the present time!</span>")
|
||||
|
||||
return
|
||||
if(no_queen)
|
||||
adjustPlasma(-500)
|
||||
to_chat(src, "<span class='noticealien'>You begin to evolve!</span>")
|
||||
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message(text("<span class='alertalien'>[src] begins to twist and contort!</span>"), 1)
|
||||
var/mob/living/carbon/alien/humanoid/queen/new_xeno = new(loc)
|
||||
@@ -49,5 +47,4 @@
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(src, "<span class='notice'>We already have an alive queen.</span>")
|
||||
|
||||
return
|
||||
@@ -51,7 +51,6 @@
|
||||
leap_icon.icon_state = "leap_[leap_on_click ? "on":"off"]"
|
||||
if(message)
|
||||
to_chat(src, "<span class='noticealien'>You will now [leap_on_click ? "leap at":"slash at"] enemies!</span>")
|
||||
|
||||
else
|
||||
return
|
||||
|
||||
@@ -67,7 +66,6 @@
|
||||
/mob/living/carbon/alien/humanoid/hunter/proc/leap_at(var/atom/A)
|
||||
if(pounce_cooldown)
|
||||
to_chat(src, "<span class='alertalien'>You are too fatigued to pounce right now!</span>")
|
||||
|
||||
return
|
||||
|
||||
if(leaping) //Leap while you leap, so you can leap while you leap
|
||||
@@ -75,7 +73,6 @@
|
||||
|
||||
if(!has_gravity(src) || !has_gravity(A))
|
||||
to_chat(src, "<span class='alertalien'>It is unsafe to leap without gravity!</span>")
|
||||
|
||||
//It's also extremely buggy visually, so it's balance+bugfix
|
||||
return
|
||||
if(lying)
|
||||
|
||||
@@ -77,7 +77,6 @@
|
||||
if(powerc(250))
|
||||
adjustToxLoss(-250)
|
||||
to_chat(src, "\green You begin to evolve!")
|
||||
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message(text("<span class='alertalien'>[src] begins to twist and contort!</span>"), 1)
|
||||
var/mob/living/carbon/alien/humanoid/sentinel/praetorian/new_xeno = new(loc)
|
||||
|
||||
@@ -107,7 +107,6 @@
|
||||
if("help")
|
||||
to_chat(src, "burp, flip, deathgasp, choke, collapse, dance, drool, gasp, shiver, gnarl, jump, moan, nod, roar, roll, scratch,\nscretch, shake, sign-#, sit, sulk, sway, tail, twitch, whimper")
|
||||
|
||||
|
||||
if(!stat)
|
||||
if (act == "roar")
|
||||
playsound(src.loc, 'sound/voice/hiss5.ogg', 40, 1, 1)
|
||||
|
||||
@@ -83,7 +83,6 @@
|
||||
|
||||
if(locate(/obj/structure/alien/egg) in get_turf(src))
|
||||
to_chat(src, "<span class='noticealien'>There's already an egg here.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(powerc(250,1))//Can't plant eggs on spess tiles. That's silly.
|
||||
|
||||
@@ -114,7 +114,6 @@
|
||||
/mob/living/carbon/alien/humanoid/attack_slime(mob/living/carbon/slime/M as mob)
|
||||
if (!ticker)
|
||||
to_chat(M, "You cannot attack people before the game has started.")
|
||||
|
||||
return
|
||||
|
||||
if(M.Victim) return // can't attack while eating!
|
||||
@@ -186,12 +185,10 @@
|
||||
/mob/living/carbon/alien/humanoid/attack_hand(mob/living/carbon/human/M as mob)
|
||||
if (!ticker)
|
||||
to_chat(M, "You cannot attack people before the game has started.")
|
||||
|
||||
return
|
||||
|
||||
if (istype(loc, /turf) && istype(loc.loc, /area/start))
|
||||
to_chat(M, "No attacking people at spawn, you jackass.")
|
||||
|
||||
return
|
||||
|
||||
if(..()) //to allow surgery to return properly.
|
||||
@@ -256,12 +253,10 @@ In all, this is a lot like the monkey code. /N
|
||||
/mob/living/carbon/alien/humanoid/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
|
||||
if (!ticker)
|
||||
to_chat(M, "You cannot attack people before the game has started.")
|
||||
|
||||
return
|
||||
|
||||
if (istype(loc, /turf) && istype(loc.loc, /area/start))
|
||||
to_chat(M, "No attacking people at spawn, you jackass.")
|
||||
|
||||
return
|
||||
|
||||
..()
|
||||
@@ -288,7 +283,6 @@ In all, this is a lot like the monkey code. /N
|
||||
updatehealth()
|
||||
else
|
||||
to_chat(M, "<span class='warning'>[name] is too injured for that.</span>")
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -311,7 +305,6 @@ In all, this is a lot like the monkey code. /N
|
||||
updatehealth()
|
||||
else
|
||||
to_chat(L, "<span class='warning'>[name] is too injured for that.</span>")
|
||||
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
if (disabilities & EPILEPSY)
|
||||
if ((prob(1) && paralysis < 10))
|
||||
to_chat(src, "<span class='danger'>You have a seizure!</span>")
|
||||
|
||||
Paralyse(10)
|
||||
if (disabilities & COUGHING)
|
||||
if ((prob(5) && paralysis <= 1))
|
||||
|
||||
@@ -64,7 +64,6 @@
|
||||
set category = "Alien"
|
||||
if(locate(/obj/structure/alien/egg) in get_turf(src))
|
||||
to_chat(src, "<span class='noticealien'>There's already an egg here.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(powerc(75,1))//Can't plant eggs on spess tiles. That's silly.
|
||||
@@ -113,7 +112,6 @@
|
||||
if(no_queen)
|
||||
adjustToxLoss(-1000)
|
||||
to_chat(src, "<span class='noticealien'>You begin to evolve!</span>")
|
||||
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message(text("<span class='alertalien'>[src] begins to twist and contort!</span>"), 1)
|
||||
var/mob/living/carbon/alien/humanoid/empress/new_xeno = new(loc)
|
||||
@@ -125,7 +123,6 @@
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(src, "<span class='notice'>We already have an alive empress.</span>")
|
||||
|
||||
return
|
||||
|
||||
*/
|
||||
@@ -16,7 +16,6 @@
|
||||
if (src.client)
|
||||
if (client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "\red You cannot send IC messages (muted).")
|
||||
|
||||
return
|
||||
if (src.client.handle_spam_prevention(message,MUTE_IC))
|
||||
return
|
||||
@@ -112,10 +111,8 @@
|
||||
m_type = 2
|
||||
if("help")
|
||||
to_chat(src, "burp, choke, collapse, dance, drool, gasp, shiver, gnarl, jump, moan, nod, roll, scratch,\nscretch, shake, sign-#, sulk, sway, tail, twitch, whimper")
|
||||
|
||||
else
|
||||
to_chat(src, text("Invalid Emote: []", act))
|
||||
|
||||
if ((message && src.stat == 0))
|
||||
log_emote("[name]/[key] : [message]")
|
||||
if (m_type & 1)
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
|
||||
if(prob(70))
|
||||
to_chat(src, "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>")
|
||||
|
||||
now_pushing = 0
|
||||
return
|
||||
if(!(tmob.status_flags & CANPUSH))
|
||||
@@ -126,7 +125,6 @@
|
||||
/mob/living/carbon/alien/larva/attack_slime(mob/living/carbon/slime/M as mob)
|
||||
if (!ticker)
|
||||
to_chat(M, "You cannot attack people before the game has started.")
|
||||
|
||||
return
|
||||
|
||||
if(M.Victim)
|
||||
@@ -152,12 +150,10 @@
|
||||
/mob/living/carbon/alien/larva/attack_hand(mob/living/carbon/human/M as mob)
|
||||
if (!ticker)
|
||||
to_chat(M, "You cannot attack people before the game has started.")
|
||||
|
||||
return
|
||||
|
||||
if (istype(loc, /turf) && istype(loc.loc, /area/start))
|
||||
to_chat(M, "No attacking people at spawn, you jackass.")
|
||||
|
||||
return
|
||||
|
||||
..()
|
||||
@@ -200,12 +196,10 @@
|
||||
/mob/living/carbon/alien/larva/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
|
||||
if (!ticker)
|
||||
to_chat(M, "You cannot attack people before the game has started.")
|
||||
|
||||
return
|
||||
|
||||
if (istype(loc, /turf) && istype(loc.loc, /area/start))
|
||||
to_chat(M, "No attacking people at spawn, you jackass.")
|
||||
|
||||
return
|
||||
|
||||
..()
|
||||
@@ -231,7 +225,6 @@
|
||||
updatehealth()
|
||||
else
|
||||
to_chat(M, "<span class='warning'>[name] is too injured for that.</span>")
|
||||
|
||||
return
|
||||
|
||||
/mob/living/carbon/alien/larva/restrained()
|
||||
|
||||
@@ -10,20 +10,16 @@
|
||||
if (layer != TURF_LAYER+0.2)
|
||||
layer = TURF_LAYER+0.2
|
||||
to_chat(src, text("<span class='noticealien'>You are now hiding.</span>"))
|
||||
|
||||
for(var/mob/O in oviewers(src, null))
|
||||
if ((O.client && !( O.blinded )))
|
||||
to_chat(O, text("<B>[] scurries to the ground!</B>", src))
|
||||
|
||||
else
|
||||
layer = MOB_LAYER
|
||||
to_chat(src, text("\green You have stopped hiding."))
|
||||
|
||||
for(var/mob/O in oviewers(src, null))
|
||||
if ((O.client && !( O.blinded )))
|
||||
to_chat(O, text("[] slowly peaks up from the ground...", src))
|
||||
|
||||
|
||||
/mob/living/carbon/alien/larva/verb/evolve()
|
||||
set name = "Evolve"
|
||||
set desc = "Evolve into a fully grown Alien."
|
||||
@@ -35,19 +31,13 @@
|
||||
if(handcuffed || legcuffed)
|
||||
to_chat(src, "\red You cannot evolve when you are cuffed.")
|
||||
|
||||
|
||||
if(amount_grown >= max_grown) //TODO ~Carn
|
||||
//green is impossible to read, so i made these blue and changed the formatting slightly
|
||||
to_chat(src, "\blue <b>You are growing into a beautiful alien! It is time to choose a caste.</b>")
|
||||
|
||||
to_chat(src, "\blue There are three to choose from:")
|
||||
|
||||
to_chat(src, "<B>Hunters</B> \blue are strong and agile, able to hunt away from the hive and rapidly move through ventilation shafts. Hunters generate plasma slowly and have low reserves.")
|
||||
|
||||
to_chat(src, "<B>Sentinels</B> \blue are tasked with protecting the hive and are deadly up close and at a range. They are not as physically imposing nor fast as the hunters.")
|
||||
|
||||
to_chat(src, "<B>Drones</B> \blue are the working class, offering the largest plasma storage and generation. They are the only caste which may evolve again, turning into the dreaded alien queen.")
|
||||
|
||||
var/alien_caste = alert(src, "Please choose which alien caste you shall belong to.",,"Hunter","Sentinel","Drone")
|
||||
|
||||
var/mob/living/carbon/alien/humanoid/new_xeno
|
||||
@@ -67,5 +57,4 @@
|
||||
return
|
||||
else
|
||||
to_chat(src, "<span class='warning'>You are not fully grown.</span>")
|
||||
|
||||
return
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
if(breath.temperature > (T0C + 66) && !(RESIST_COLD in mutations))
|
||||
if(prob(20))
|
||||
to_chat(src, "<span class='danger'>You feel a searing heat in your lungs!</span>")
|
||||
|
||||
fire_alert = max(fire_alert, 1)
|
||||
else
|
||||
fire_alert = 0
|
||||
|
||||
@@ -12,10 +12,8 @@
|
||||
..()
|
||||
if(stage < 4)
|
||||
to_chat(finder, "It's small and weak, barely the size of a fetus.")
|
||||
|
||||
else
|
||||
to_chat(finder, "It's grown quite large, and writhes slightly as you look at it.")
|
||||
|
||||
if(prob(10))
|
||||
AttemptGrow(0)
|
||||
|
||||
@@ -33,10 +31,8 @@
|
||||
owner.emote("cough")
|
||||
if(prob(2))
|
||||
to_chat(owner, "<span class='danger'>Your throat feels sore.</span>")
|
||||
|
||||
if(prob(2))
|
||||
to_chat(owner, "<span class='danger'>Mucous runs down the back of your throat.</span>")
|
||||
|
||||
if(4)
|
||||
if(prob(2))
|
||||
owner.emote("sneeze")
|
||||
@@ -44,17 +40,14 @@
|
||||
owner.emote("cough")
|
||||
if(prob(4))
|
||||
to_chat(owner, "<span class='danger'>Your muscles ache.</span>")
|
||||
|
||||
if(prob(20))
|
||||
owner.take_organ_damage(1)
|
||||
if(prob(4))
|
||||
to_chat(owner, "<span class='danger'>Your stomach hurts.</span>")
|
||||
|
||||
if(prob(20))
|
||||
owner.adjustToxLoss(1)
|
||||
if(5)
|
||||
to_chat(owner, "<span class='danger'>You feel something tearing its way out of your stomach...</span>")
|
||||
|
||||
owner.adjustToxLoss(10)
|
||||
|
||||
/obj/item/organ/internal/body_egg/alien_embryo/egg_process()
|
||||
@@ -107,7 +100,6 @@
|
||||
new_xeno.mind.special_role = "Alien"
|
||||
to_chat(new_xeno, sound('sound/voice/hiss5.ogg',0,0,0,100))//To get the player's attention
|
||||
|
||||
|
||||
if(gib_on_success)
|
||||
owner.gib()
|
||||
else
|
||||
|
||||
@@ -50,14 +50,11 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
switch(stat)
|
||||
if(DEAD,UNCONSCIOUS)
|
||||
to_chat(user, "<span class='boldannounce'>[src] is not moving.</span>")
|
||||
|
||||
if(CONSCIOUS)
|
||||
to_chat(user, "<span class='boldannounce'>[src] seems to be active!</span>")
|
||||
|
||||
if (sterile)
|
||||
to_chat(user, "<span class='boldannounce'>It looks like the proboscis has been removed.</span>")
|
||||
|
||||
|
||||
/obj/item/clothing/mask/facehugger/attackby(obj/item/O,mob/m, params)
|
||||
if(O.force)
|
||||
Die()
|
||||
|
||||
@@ -20,17 +20,14 @@
|
||||
/obj/item/device/mmi/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
if(istype(O, /obj/item/organ/internal/brain/crystal ))
|
||||
to_chat(user, "<span class='warning'> This brain is too malformed to be able to use with the [src].</span>")
|
||||
|
||||
return
|
||||
if(istype(O,/obj/item/organ/internal/brain) && !brainmob) //Time to stick a brain in it --NEO
|
||||
var/obj/item/organ/internal/brain/B = O
|
||||
if(!B.brainmob)
|
||||
to_chat(user, "<span class='warning'>You aren't sure where this brain came from, but you're pretty sure it's a useless brain.</span>")
|
||||
|
||||
return
|
||||
if(held_brain)
|
||||
to_chat(user, "<span class='userdanger'>Somehow, this MMI still has a brain in it. Report this to the bug tracker.</span>")
|
||||
|
||||
log_to_dd("[user] tried to stick a [O] into [src] in [get_area(src)], but the held brain variable wasn't cleared")
|
||||
return
|
||||
for(var/mob/V in viewers(src, null))
|
||||
@@ -71,10 +68,8 @@
|
||||
/obj/item/device/mmi/attack_self(mob/user as mob)
|
||||
if(!brainmob)
|
||||
to_chat(user, "<span class='warning'>You upend the MMI, but there's nothing in it.</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You unlock and upend the MMI, spilling the brain onto the floor.</span>")
|
||||
|
||||
dropbrain(get_turf(user))
|
||||
icon = 'icons/obj/assemblies.dmi'
|
||||
icon_state = "mmi_empty"
|
||||
@@ -107,7 +102,6 @@
|
||||
if(isnull(held_brain))
|
||||
log_to_dd("[src] at [loc] attempted to drop brain without a contained brain in [get_area(src)].")
|
||||
to_chat(brainmob, "<span class='userdanger'>Your MMI did not contain a brain! We'll make a new one for you, but you'd best report this to the bugtracker!</span>")
|
||||
|
||||
held_brain = new(dropspot) // Let's not ruin someone's round because of something dumb -- Crazylemon
|
||||
held_brain.dna = brainmob.dna.Clone()
|
||||
held_brain.name = "\the [brainmob.name]'s [initial(held_brain.name)]"
|
||||
@@ -145,11 +139,9 @@
|
||||
if(brainmob.stat)
|
||||
to_chat(brainmob, "Can't do that while incapacitated or dead.")
|
||||
|
||||
|
||||
radio.listening = radio.listening==1 ? 0 : 1
|
||||
to_chat(brainmob, "<span class='notice'>Radio is [radio.listening==1 ? "now" : "no longer"] receiving broadcast.</span>")
|
||||
|
||||
|
||||
/obj/item/device/mmi/emp_act(severity)
|
||||
if(!brainmob)
|
||||
return
|
||||
|
||||
@@ -49,18 +49,15 @@
|
||||
H.mind.transfer_to(brainmob)
|
||||
|
||||
to_chat(brainmob, "<span class='notice'>You feel slightly disoriented. That's normal when you're just a [initial(src.name)].</span>")
|
||||
|
||||
callHook("debrain", list(brainmob))
|
||||
|
||||
/obj/item/organ/internal/brain/examine(mob/user) // -- TLE
|
||||
..(user)
|
||||
if(brainmob && brainmob.client)//if thar be a brain inside... the brain.
|
||||
to_chat(user, "You can feel the small spark of life still left in this one.")
|
||||
|
||||
else
|
||||
to_chat(user, "This one seems particularly lifeless. Perhaps it will regain some of its luster later..")
|
||||
|
||||
|
||||
/obj/item/organ/internal/brain/remove(var/mob/living/user,special = 0)
|
||||
|
||||
name = "[dna.real_name]'s [initial(name)]"
|
||||
|
||||
@@ -15,17 +15,14 @@
|
||||
|
||||
if ("alarm")
|
||||
to_chat(src, "You sound an alarm.")
|
||||
|
||||
message = "<B>\The [src]</B> sounds an alarm."
|
||||
m_type = 2
|
||||
if ("alert")
|
||||
to_chat(src, "You let out a distressed noise.")
|
||||
|
||||
message = "<B>\The [src]</B> lets out a distressed noise."
|
||||
m_type = 2
|
||||
if ("notice")
|
||||
to_chat(src, "You play a loud tone.")
|
||||
|
||||
message = "<B>\The [src]</B> plays a loud tone."
|
||||
m_type = 2
|
||||
if ("flash")
|
||||
@@ -36,22 +33,18 @@
|
||||
m_type = 1
|
||||
if ("whistle")
|
||||
to_chat(src, "You whistle.")
|
||||
|
||||
message = "<B>\The [src]</B> whistles."
|
||||
m_type = 2
|
||||
if ("beep")
|
||||
to_chat(src, "You beep.")
|
||||
|
||||
message = "<B>\The [src]</B> beeps."
|
||||
m_type = 2
|
||||
if ("boop")
|
||||
to_chat(src, "You boop.")
|
||||
|
||||
message = "<B>\The [src]</B> boops."
|
||||
m_type = 2
|
||||
if ("help")
|
||||
to_chat(src, "alarm, alert, notice, flash,blink, whistle, beep, boop")
|
||||
|
||||
|
||||
if(message && !stat)
|
||||
..(act, m_type, message)
|
||||
@@ -6,11 +6,9 @@
|
||||
updatehealth()
|
||||
if(!container)
|
||||
to_chat(src, "<span class='danger'>You feel weak.</span>")
|
||||
|
||||
else
|
||||
to_chat(src, "<span class='danger'>STATUS: CRITICAL AMOUNTS OF RADIATION DETECTED.</span>")
|
||||
|
||||
|
||||
switch(radiation)
|
||||
if(0 to 49)
|
||||
radiation--
|
||||
@@ -25,10 +23,8 @@
|
||||
radiation -= 5
|
||||
if(!container)
|
||||
to_chat(src, "<span class='danger'>You feel weak.</span>")
|
||||
|
||||
else
|
||||
to_chat(src, "<span class='danger'>STATUS: DANGEROUS AMOUNTS OF RADIATION DETECTED.</span>")
|
||||
|
||||
updatehealth()
|
||||
|
||||
if(75 to 100)
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
if(brainmob && !brainmob.key && searching == 0)
|
||||
//Start the process of searching for a new user.
|
||||
to_chat(user, "\blue You carefully locate the manual activation switch and start the positronic brain's boot process.")
|
||||
|
||||
icon_state = "posibrain-searching"
|
||||
ghost_volunteers.Cut()
|
||||
src.searching = 1
|
||||
@@ -34,25 +33,20 @@
|
||||
if(silenced)
|
||||
silenced = 0
|
||||
to_chat(user, "<span class='notice'>You toggle the speaker to 'on', on the [src].</span>")
|
||||
|
||||
desc = "A cube of shining metal, four inches to a side and covered in shallow grooves. The speaker switch is set to 'on'."
|
||||
if(brainmob && brainmob.key)
|
||||
to_chat(brainmob, "<span class='warning'>Your internal speaker has been toggled to 'on'.</span>")
|
||||
|
||||
else
|
||||
silenced = 1
|
||||
to_chat(user, "<span class='notice'>You toggle the speaker to 'off', on the [src].</span>")
|
||||
|
||||
desc = "A cube of shining metal, four inches to a side and covered in shallow grooves. The speaker switch is set to 'off'."
|
||||
if(brainmob && brainmob.key)
|
||||
to_chat(brainmob, "<span class='warning'>Your internal speaker has been toggled to 'off'.</span>")
|
||||
|
||||
|
||||
/obj/item/device/mmi/posibrain/proc/request_player()
|
||||
for(var/mob/dead/observer/O in player_list)
|
||||
if(check_observer(O))
|
||||
to_chat(O, "<span class='boldnotice'>\A [src] has been activated. (<a href='?src=\ref[O];jump=\ref[src]'>Teleport</a> | <a href='?src=\ref[src];signup=\ref[O]'>Sign Up</a>)</span>")
|
||||
|
||||
// if(ROLE_POSIBRAIN in O.client.prefs.be_special) The Guardian implementation looks cleaner
|
||||
// question(O.client)
|
||||
|
||||
@@ -93,7 +87,6 @@
|
||||
if(H.mind)
|
||||
H.mind.transfer_to(brainmob)
|
||||
to_chat(brainmob, "<span class='notice'>You feel slightly disoriented. That's normal when you're just a metal cube.</span>")
|
||||
|
||||
icon_state = "posibrain-occupied"
|
||||
return
|
||||
|
||||
@@ -103,11 +96,8 @@
|
||||
src.name = "positronic brain ([src.brainmob.name])"
|
||||
|
||||
to_chat(src.brainmob, "<b>You are a positronic brain, brought into existence on [station_name()].</b>")
|
||||
|
||||
to_chat(src.brainmob, "<b>As a synthetic intelligence, you answer to all crewmembers, as well as the AI.</b>")
|
||||
|
||||
to_chat(src.brainmob, "<b>Remember, the purpose of your existence is to serve the crew and the station. Above all else, do no harm.</b>")
|
||||
|
||||
src.brainmob.mind.assigned_role = "Positronic Brain"
|
||||
|
||||
var/turf/T = get_turf_or_move(src.loc)
|
||||
@@ -134,31 +124,24 @@
|
||||
/obj/item/device/mmi/posibrain/proc/volunteer(var/mob/dead/observer/O)
|
||||
if(!searching)
|
||||
to_chat(O, "Not looking for a ghost, yet.")
|
||||
|
||||
return
|
||||
if(!istype(O))
|
||||
to_chat(O, "\red Error.")
|
||||
|
||||
return
|
||||
if(O in ghost_volunteers)
|
||||
to_chat(O, "\blue Removed from registration list.")
|
||||
|
||||
ghost_volunteers.Remove(O)
|
||||
return
|
||||
if(!check_observer(O))
|
||||
to_chat(O, "\red You cannot be \a [src].")
|
||||
|
||||
return
|
||||
if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
|
||||
to_chat(O, "\red Upon using the antagHUD you forfeited the ability to join the round.")
|
||||
|
||||
return
|
||||
if(jobban_isbanned(O, "Cyborg") || jobban_isbanned(O,"nonhumandept"))
|
||||
to_chat(O, "\red You are job banned from this role.")
|
||||
|
||||
return
|
||||
to_chat(O., "\blue You've been added to the list of ghosts that may become this [src]. Click again to unvolunteer.")
|
||||
|
||||
ghost_volunteers.Add(O)
|
||||
|
||||
|
||||
@@ -180,7 +163,6 @@
|
||||
msg += "<span class='info'>*---------*</span>"
|
||||
to_chat(user, msg)
|
||||
|
||||
|
||||
/obj/item/device/mmi/posibrain/emp_act(severity)
|
||||
if(!src.brainmob)
|
||||
return
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
var/obj/item/device/mmi/posibrain/P = container
|
||||
if(P && P.silenced)
|
||||
to_chat(usr, "<span class='warning'>You cannot speak, as your internal speaker has been toggled to 'off'.</span>")
|
||||
|
||||
return
|
||||
if(prob(emp_damage*4))
|
||||
if(prob(10))//10% chane to drop the message entirely
|
||||
|
||||
@@ -96,7 +96,6 @@
|
||||
if(src.is_muzzled())
|
||||
if(message)
|
||||
to_chat(src, "<span class='warning'>The muzzle prevents you from vomiting!</span>")
|
||||
|
||||
return 0
|
||||
if(stun)
|
||||
Stun(4)
|
||||
@@ -195,7 +194,6 @@
|
||||
if(istype(item_in_hand,/obj/item/weapon/twohanded))
|
||||
if(item_in_hand:wielded == 1)
|
||||
to_chat(usr, "<span class='warning'>Your other hand is too busy holding the [item_in_hand.name]</span>")
|
||||
|
||||
return
|
||||
src.hand = !( src.hand )
|
||||
if(hud_used.l_hand_hud_object && hud_used.r_hand_hud_object)
|
||||
@@ -263,10 +261,8 @@
|
||||
if(staminaloss)
|
||||
if(staminaloss > 30)
|
||||
to_chat(src, "<span class='info'>You're completely exhausted.</span>")
|
||||
|
||||
else
|
||||
to_chat(src, "<span class='info'>You feel fatigued.</span>")
|
||||
|
||||
if((SKELETON in H.mutations) && (!H.w_uniform) && (!H.wear_suit))
|
||||
H.play_xylophone()
|
||||
else
|
||||
@@ -329,18 +325,15 @@
|
||||
switch(damage)
|
||||
if(1)
|
||||
to_chat(src, "<span class='warning'>Your eyes sting a little.</span>")
|
||||
|
||||
if(prob(40)) //waiting on carbon organs
|
||||
E.damage += 1
|
||||
|
||||
if(2)
|
||||
to_chat(src, "<span class='warning'>Your eyes burn.</span>")
|
||||
|
||||
E.damage += rand(2, 4)
|
||||
|
||||
else
|
||||
to_chat(src, "Your eyes itch and burn severely!</span>")
|
||||
|
||||
E.damage += rand(12, 16)
|
||||
|
||||
if(E.damage > E.min_bruised_damage)
|
||||
@@ -350,18 +343,14 @@
|
||||
if(E.damage > (E.min_bruised_damage + E.min_broken_damage) / 2)
|
||||
if(!(E.status & ORGAN_ROBOT))
|
||||
to_chat(src, "<span class='warning'>Your eyes start to burn badly!</span>")
|
||||
|
||||
else //snowflake conditions piss me off for the record
|
||||
to_chat(src, "<span class='warning'>The flash blinds you!</span>")
|
||||
|
||||
|
||||
else if(E.damage >= E.min_broken_damage)
|
||||
to_chat(src, "<span class='warning'>You can't see anything!</span>")
|
||||
|
||||
|
||||
else
|
||||
to_chat(src, "<span class='warning'>Your eyes are really starting to hurt. This can't be good for you!</span>")
|
||||
|
||||
return 1
|
||||
|
||||
else if(damage == 0) // just enough protection
|
||||
@@ -369,7 +358,6 @@
|
||||
to_chat(src, "<span class='notice'>Something bright flashes in the corner of your vision!</span>")
|
||||
|
||||
|
||||
|
||||
/mob/living/carbon/proc/tintcheck()
|
||||
return 0
|
||||
|
||||
@@ -399,17 +387,14 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
|
||||
if(stat)
|
||||
to_chat(src, "You must be conscious to do this!")
|
||||
|
||||
return
|
||||
|
||||
if(lying)
|
||||
to_chat(src, "You can't vent crawl while you're stunned!")
|
||||
|
||||
return
|
||||
|
||||
if(buckled_mob)
|
||||
to_chat(src, "You can't vent crawl with [buckled_mob] on you!")
|
||||
|
||||
return
|
||||
|
||||
var/obj/machinery/atmospherics/unary/vent_found
|
||||
@@ -454,7 +439,6 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
|
||||
if(failed)
|
||||
to_chat(src, "<span class='warning'>You can't crawl around in the ventilation ducts with items!</span>")
|
||||
|
||||
return
|
||||
|
||||
visible_message("<b>[src] scrambles into the ventilation ducts!</b>", "You climb into the ventilation system.")
|
||||
@@ -465,7 +449,6 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
to_chat(src, "<span class='warning'>This ventilation duct is not connected to anything!</span>")
|
||||
|
||||
|
||||
|
||||
/mob/living/proc/add_ventcrawl(obj/machinery/atmospherics/starting_machine)
|
||||
if(!istype(starting_machine) || !starting_machine.returnPipenet())
|
||||
return
|
||||
@@ -677,7 +660,6 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
no_mask = 1
|
||||
if(no_mask)
|
||||
to_chat(usr, "<span class='warning'>[src] is not wearing a suitable mask or helmet!</span>")
|
||||
|
||||
return
|
||||
|
||||
if(do_mob(usr, src, POCKET_STRIP_DELAY))
|
||||
@@ -692,7 +674,6 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
no_mask2 = 1
|
||||
if(no_mask2)
|
||||
to_chat(usr, "<span class='warning'>[src] is not wearing a suitable mask or helmet!</span>")
|
||||
|
||||
return
|
||||
internal = ITEM
|
||||
if(internals)
|
||||
@@ -820,7 +801,6 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
spawn (t) step(src, src.dir)
|
||||
stop_pulling()
|
||||
to_chat(src, "<span class='notice'>You slipped on the [description]!</span>")
|
||||
|
||||
playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3)
|
||||
if (stun)
|
||||
Stun(stun)
|
||||
@@ -852,23 +832,17 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
/mob/living/carbon/proc/selfFeed(var/obj/item/weapon/reagent_containers/food/toEat, fullness)
|
||||
if(istype(toEat, /obj/item/weapon/reagent_containers/food/pill))
|
||||
to_chat(src, "<span class='notify'>You [toEat.apply_method] [toEat].</span>")
|
||||
|
||||
else
|
||||
if (fullness <= 50)
|
||||
to_chat(src, "<span class='warning'>You hungrily chew out a piece of [toEat] and gobble it!</span>")
|
||||
|
||||
else if (fullness > 50 && fullness <= 150)
|
||||
to_chat(src, "<span class='notice'>You hungrily begin to eat [toEat].</span>")
|
||||
|
||||
else if (fullness > 150 && fullness <= 350)
|
||||
to_chat(src, "<span class='notice'>You take a bite of [toEat].</span>")
|
||||
|
||||
else if (fullness > 350 && fullness <= 550)
|
||||
to_chat(src, "<span class='notice'>You unwillingly chew a bit of [toEat].</span>")
|
||||
|
||||
else if (fullness > (550 * (1 + overeatduration / 2000))) // The more you eat - the more you can eat
|
||||
to_chat(src, "<span class='warning'>You cannot force any more of [toEat] to go down your throat.</span>")
|
||||
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
@@ -5,18 +5,15 @@
|
||||
if(!iscarbon(target)) //something is bypassing the give arguments, no clue what, adding a sanity check JIC
|
||||
to_chat(usr, "<span class='danger'>Wait a second... \the [target] HAS NO HANDS! AHH!</span>")//cheesy messages ftw
|
||||
|
||||
|
||||
return
|
||||
if(target.stat == 2 || usr.stat == 2|| target.client == null)
|
||||
return
|
||||
var/obj/item/I
|
||||
if(!usr.hand && usr.r_hand == null)
|
||||
to_chat(usr, "<span class='warning'> You don't have anything in your right hand to give to [target.name]</span>")
|
||||
|
||||
return
|
||||
if(usr.hand && usr.l_hand == null)
|
||||
to_chat(usr, "<span class='warning'> You don't have anything in your left hand to give to [target.name]</span>")
|
||||
|
||||
return
|
||||
if(usr.hand)
|
||||
I = usr.l_hand
|
||||
@@ -26,7 +23,6 @@
|
||||
return
|
||||
if((I.flags & NODROP) || (I.flags & ABSTRACT))
|
||||
to_chat(usr, "<span class='notice'>That's not exactly something you can give.</span>")
|
||||
|
||||
return
|
||||
if(target.r_hand == null || target.l_hand == null)
|
||||
switch(alert(target,"[usr] wants to give you \a [I]?",,"Yes","No"))
|
||||
@@ -35,21 +31,15 @@
|
||||
return
|
||||
if(!Adjacent(usr))
|
||||
to_chat(usr, "<span class='warning'> You need to stay in reaching distance while giving an object.</span>")
|
||||
|
||||
to_chat(target, "<span class='warning'> [usr.name] moved too far away.</span>")
|
||||
|
||||
return
|
||||
if((usr.hand && usr.l_hand != I) || (!usr.hand && usr.r_hand != I))
|
||||
to_chat(usr, "<span class='warning'> You need to keep the item in your active hand.</span>")
|
||||
|
||||
to_chat(target, "<span class='warning'> [usr.name] seem to have given up on giving \the [I.name] to you.</span>")
|
||||
|
||||
return
|
||||
if(target.r_hand != null && target.l_hand != null)
|
||||
to_chat(target, "<span class='warning'> Your hands are full.</span>")
|
||||
|
||||
to_chat(usr, "<span class='warning'> Their hands are full.</span>")
|
||||
|
||||
return
|
||||
else
|
||||
usr.drop_item()
|
||||
@@ -69,4 +59,3 @@
|
||||
target.visible_message("<span class='warning'> [usr.name] tried to hand [I.name] to [target.name] but [target.name] didn't want it.</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='warning'> [target.name]'s hands are full.</span>")
|
||||
|
||||
|
||||
@@ -754,7 +754,6 @@
|
||||
|
||||
if (!left_hand_good && !right_hand_good)
|
||||
to_chat(usr, "You need at least one hand in good working order to snap your fingers.")
|
||||
|
||||
return
|
||||
|
||||
message = "<b>[src]</b> snaps \his fingers."
|
||||
@@ -771,9 +770,7 @@
|
||||
// playsound(src.loc, 'sound/effects/fart.ogg', 50, 1, -3) //Admins still vote no to fun
|
||||
if(locate(/obj/item/weapon/storage/bible) in get_turf(src))
|
||||
to_chat(viewers(src), "<span class='warning'><b>[src] farts on the Bible!</b></span>")
|
||||
|
||||
to_chat(viewers(src), "<span class='notice'><b>A mysterious force smites [src]!</b></span>")
|
||||
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
@@ -815,7 +812,6 @@
|
||||
emotelist += "\nSlime people specific emotes :- squish(es)-(none)/mob"
|
||||
to_chat(src, emotelist)
|
||||
|
||||
|
||||
else
|
||||
to_chat(src, "\blue Unusable emote '[act]'. Say *help for a list.")
|
||||
|
||||
@@ -823,7 +819,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
if(message) //Humans are special fucking snowflakes and have 735 lines of emotes, they get to handle their own emotes, not call the parent
|
||||
log_emote("[name]/[key] : [message]")
|
||||
|
||||
|
||||
@@ -216,11 +216,9 @@
|
||||
if(distance <= 1 && user.stat != 1)
|
||||
if(pulse == PULSE_NONE)
|
||||
to_chat(user, "<span class='deadsay'>[t_He] has no pulse[src.client ? "" : " and [t_his] soul has departed"]...</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='deadsay'>[t_He] has a pulse!</span>")
|
||||
|
||||
|
||||
msg += "<span class='warning'>"
|
||||
if(fire_stacks > 0)
|
||||
msg += "[t_He] [t_is] covered in something flammable.\n"
|
||||
@@ -488,7 +486,6 @@
|
||||
|
||||
to_chat(user, msg)
|
||||
|
||||
|
||||
//Helper procedure. Called by /mob/living/carbon/human/examine() and /mob/living/carbon/human/Topic() to determine HUD access to security and medical records.
|
||||
/proc/hasHUD(mob/M as mob, hudtype)
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
|
||||
@@ -169,7 +169,6 @@
|
||||
if(tmob.pinned.len || (M.pulling == tmob && (tmob.restrained() && !M.restrained()) && M.stat == CONSCIOUS))
|
||||
if(!(world.time % 5)) //tmob is pinned to wall, or is restrained and pulled by a concious unrestrained human
|
||||
to_chat(src, "<span class='danger'>[tmob] is restrained, you cannot push past.</span>")
|
||||
|
||||
now_pushing = 0
|
||||
return 0
|
||||
|
||||
@@ -181,7 +180,6 @@
|
||||
if(tmob.pulling == M && (M.restrained() && !tmob.restrained()) && tmob.stat == CONSCIOUS)
|
||||
if(!(world.time % 5))
|
||||
to_chat(src, "<span class='danger'>[tmob] is restraining [M], you cannot push past.</span>")
|
||||
|
||||
now_pushing = 0
|
||||
return 0
|
||||
|
||||
@@ -208,7 +206,6 @@
|
||||
if(ishuman(tmob) && (FAT in tmob.mutations))
|
||||
if(prob(40) && !(FAT in src.mutations))
|
||||
to_chat(src, "<span class='danger'>You fail to push [tmob]'s fat ass out of the way.</span>")
|
||||
|
||||
now_pushing = 0
|
||||
return
|
||||
|
||||
@@ -759,7 +756,6 @@
|
||||
heart_attack = 0
|
||||
if(stat == CONSCIOUS)
|
||||
to_chat(src, "<span class='notice'>You feel your heart beating again!</span>")
|
||||
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -776,7 +772,6 @@
|
||||
var/slot = text2num(href_list["item"])
|
||||
if(slot in check_obscured_slots())
|
||||
to_chat(usr, "<span class='warning'>You can't reach that! Something is covering it.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(href_list["pockets"])
|
||||
@@ -789,12 +784,9 @@
|
||||
if(pocket_item && !(pocket_item.flags&ABSTRACT))
|
||||
if(pocket_item.flags & NODROP)
|
||||
to_chat(usr, "<span class='warning'>You try to empty [src]'s [pocket_side] pocket, it seems to be stuck!</span>")
|
||||
|
||||
to_chat(usr, "<span class='notice'>You try to empty [src]'s [pocket_side] pocket.</span>")
|
||||
|
||||
else if(place_item && place_item.mob_can_equip(src, pocket_id, 1) && !(place_item.flags&ABSTRACT))
|
||||
to_chat(usr, "<span class='notice'>You try to place [place_item] into [src]'s [pocket_side] pocket.</span>")
|
||||
|
||||
delay_denominator = 4
|
||||
else
|
||||
return
|
||||
@@ -818,7 +810,6 @@
|
||||
if(!thief_mode)
|
||||
to_chat(src, "<span class='warning'>You feel your [pocket_side] pocket being fumbled with!</span>")
|
||||
|
||||
|
||||
if(href_list["set_sensor"])
|
||||
if(istype(w_uniform, /obj/item/clothing/under))
|
||||
var/obj/item/clothing/under/U = w_uniform
|
||||
@@ -879,7 +870,6 @@
|
||||
if(!modified)
|
||||
to_chat(usr, "\red Unable to locate a data core entry for this person.")
|
||||
|
||||
|
||||
if (href_list["secrecord"])
|
||||
if(hasHUD(usr,"security"))
|
||||
var/perpname = "wot"
|
||||
@@ -910,7 +900,6 @@
|
||||
if(!read)
|
||||
to_chat(usr, "\red Unable to locate a data core entry for this person.")
|
||||
|
||||
|
||||
if (href_list["secrecordComment"])
|
||||
if(hasHUD(usr,"security"))
|
||||
var/perpname = "wot"
|
||||
@@ -933,18 +922,14 @@
|
||||
var/counter = 1
|
||||
while(R.fields[text("com_[]", counter)])
|
||||
to_chat(usr, text("[]", R.fields[text("com_[]", counter)]))
|
||||
|
||||
counter++
|
||||
if (counter == 1)
|
||||
to_chat(usr, "No comment found")
|
||||
|
||||
to_chat(usr, "<a href='?src=\ref[src];secrecordadd=`'>\[Add comment\]</a>")
|
||||
|
||||
|
||||
if(!read)
|
||||
to_chat(usr, "\red Unable to locate a data core entry for this person.")
|
||||
|
||||
|
||||
if (href_list["secrecordadd"])
|
||||
if(hasHUD(usr,"security"))
|
||||
var/perpname = "wot"
|
||||
@@ -1015,7 +1000,6 @@
|
||||
if(!modified)
|
||||
to_chat(usr, "\red Unable to locate a data core entry for this person.")
|
||||
|
||||
|
||||
if (href_list["medrecord"])
|
||||
if(hasHUD(usr,"medical"))
|
||||
var/perpname = "wot"
|
||||
@@ -1047,7 +1031,6 @@
|
||||
if(!read)
|
||||
to_chat(usr, "\red Unable to locate a data core entry for this person.")
|
||||
|
||||
|
||||
if (href_list["medrecordComment"])
|
||||
if(hasHUD(usr,"medical"))
|
||||
var/perpname = "wot"
|
||||
@@ -1070,18 +1053,14 @@
|
||||
var/counter = 1
|
||||
while(R.fields[text("com_[]", counter)])
|
||||
to_chat(usr, text("[]", R.fields[text("com_[]", counter)]))
|
||||
|
||||
counter++
|
||||
if (counter == 1)
|
||||
to_chat(usr, "No comment found")
|
||||
|
||||
to_chat(usr, "<a href='?src=\ref[src];medrecordadd=`'>\[Add comment\]</a>")
|
||||
|
||||
|
||||
if(!read)
|
||||
to_chat(usr, "\red Unable to locate a data core entry for this person.")
|
||||
|
||||
|
||||
if (href_list["medrecordadd"])
|
||||
if(hasHUD(usr,"medical"))
|
||||
var/perpname = "wot"
|
||||
@@ -1236,7 +1215,6 @@
|
||||
fail_msg = "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"] to inject into."
|
||||
to_chat(user, "<span class='alert'>[fail_msg]</span>")
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/check_obscured_slots()
|
||||
var/list/obscured = list()
|
||||
|
||||
@@ -1335,22 +1313,18 @@
|
||||
germs++
|
||||
if (germs == 100)
|
||||
to_chat(world, "Reached stage 1 in [ticks] ticks")
|
||||
|
||||
if (germs > 100)
|
||||
if (prob(10))
|
||||
damage++
|
||||
germs++
|
||||
if (germs == 1000)
|
||||
to_chat(world, "Reached stage 2 in [ticks] ticks")
|
||||
|
||||
if (germs > 1000)
|
||||
damage++
|
||||
germs++
|
||||
if (germs == 2500)
|
||||
to_chat(world, "Reached stage 3 in [ticks] ticks")
|
||||
|
||||
to_chat(world, "Mob took [tdamage] tox damage")
|
||||
|
||||
*/
|
||||
//returns 1 if made bloody, returns 0 otherwise
|
||||
|
||||
@@ -1409,7 +1383,6 @@
|
||||
msg ="<span class='warning'>[O] in your [organ.name] twists painfully as you move.</span>"
|
||||
to_chat(src, msg)
|
||||
|
||||
|
||||
organ.take_damage(rand(1,3), 0, 0)
|
||||
if(!(organ.status & ORGAN_ROBOT)) //There is no blood in protheses.
|
||||
organ.status |= ORGAN_BLEEDING
|
||||
@@ -1435,24 +1408,19 @@
|
||||
|
||||
if(src.pulse)
|
||||
to_chat(usr, "\blue [self ? "You have a" : "[src] has a"] pulse! Counting...")
|
||||
|
||||
else
|
||||
to_chat(usr, "\red [src] has no pulse!")//it is REALLY UNLIKELY that a dead person would check his own pulse
|
||||
|
||||
|
||||
return
|
||||
|
||||
to_chat(usr, "Don't move until counting is finished.")
|
||||
|
||||
var/time = world.time
|
||||
sleep(60)
|
||||
if(usr.l_move_time >= time) //checks if our mob has moved during the sleep()
|
||||
to_chat(usr, "You moved while counting. Try again.")
|
||||
|
||||
else
|
||||
to_chat(usr, "\blue [self ? "Your" : "[src]'s"] pulse is [src.get_pulse(GETPULSE_HAND)].")
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/set_species(var/new_species, var/default_colour, var/delay_icon_update = 0)
|
||||
|
||||
var/datum/species/oldspecies = species
|
||||
@@ -1560,13 +1528,11 @@
|
||||
|
||||
if (src.gloves)
|
||||
to_chat(src, "<span class='warning'>Your [src.gloves] are getting in the way.</span>")
|
||||
|
||||
return
|
||||
|
||||
var/turf/simulated/T = src.loc
|
||||
if (!istype(T)) //to prevent doodling out of mechs and lockers
|
||||
to_chat(src, "<span class='warning'>You cannot reach the floor.</span>")
|
||||
|
||||
return
|
||||
|
||||
var/direction = input(src,"Which way?","Tile selection") as anything in list("Here","North","South","East","West")
|
||||
@@ -1574,7 +1540,6 @@
|
||||
T = get_step(T,text2dir(direction))
|
||||
if (!istype(T))
|
||||
to_chat(src, "<span class='warning'>You cannot doodle there.</span>")
|
||||
|
||||
return
|
||||
|
||||
var/num_doodles = 0
|
||||
@@ -1582,7 +1547,6 @@
|
||||
num_doodles++
|
||||
if (num_doodles > 4)
|
||||
to_chat(src, "<span class='warning'>There is no space to write on!</span>")
|
||||
|
||||
return
|
||||
|
||||
var/max_length = bloody_hands * 30 //tweeter style
|
||||
@@ -1597,7 +1561,6 @@
|
||||
message += "-"
|
||||
to_chat(src, "<span class='warning'>You ran out of blood to write with!</span>")
|
||||
|
||||
|
||||
var/obj/effect/decal/cleanable/blood/writing/W = new(T)
|
||||
W.message = message
|
||||
W.add_fingerprint(src)
|
||||
@@ -1610,7 +1573,6 @@
|
||||
|
||||
if(incapacitated())
|
||||
to_chat(src, "<span class='warning'>You cannot change your monitor or optical display in your current state.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(species.flags & ALL_RPARTS) //If they can have a fully cybernetic body...
|
||||
@@ -1649,7 +1611,6 @@
|
||||
|
||||
if(stat || paralysis || stunned || weakened || lying || restrained() || buckled)
|
||||
to_chat(src, "You cannot leap in your current state.")
|
||||
|
||||
return
|
||||
|
||||
var/list/choices = list()
|
||||
@@ -1669,7 +1630,6 @@
|
||||
|
||||
if(stat || paralysis || stunned || weakened || lying || restrained() || buckled)
|
||||
to_chat(src, "You cannot leap in your current state.")
|
||||
|
||||
return
|
||||
|
||||
last_special = world.time + 75
|
||||
@@ -1685,7 +1645,6 @@
|
||||
|
||||
if(!src.Adjacent(T))
|
||||
to_chat(src, "\red You miss!")
|
||||
|
||||
return
|
||||
|
||||
T.Weaken(5)
|
||||
@@ -1699,7 +1658,6 @@
|
||||
if(l_hand)
|
||||
if(r_hand)
|
||||
to_chat(src, "\red You need to have one hand free to grab someone.")
|
||||
|
||||
return
|
||||
else
|
||||
use_hand = "right"
|
||||
@@ -1726,18 +1684,15 @@
|
||||
|
||||
if(stat || paralysis || stunned || weakened || lying)
|
||||
to_chat(src, "\red You cannot do that in your current state.")
|
||||
|
||||
return
|
||||
|
||||
var/obj/item/weapon/grab/G = locate() in src
|
||||
if(!G || !istype(G))
|
||||
to_chat(src, "\red You are not grabbing anyone.")
|
||||
|
||||
return
|
||||
|
||||
if(G.state < GRAB_AGGRESSIVE)
|
||||
to_chat(src, "\red You must have an aggressive grab to gut your prey!")
|
||||
|
||||
return
|
||||
|
||||
last_special = world.time + 50
|
||||
@@ -1843,7 +1798,6 @@
|
||||
if(prob(current_size * 5) && hand.w_class >= ((11-current_size)/2) && unEquip(hand))
|
||||
step_towards(hand, src)
|
||||
to_chat(src, "<span class='warning'>\The [S] pulls \the [hand] from your grip!</span>")
|
||||
|
||||
apply_effect(current_size * 3, IRRADIATE)
|
||||
if(mob_negates_gravity())
|
||||
return
|
||||
@@ -1897,7 +1851,6 @@
|
||||
/mob/living/carbon/human/selfFeed(var/obj/item/weapon/reagent_containers/food/toEat, fullness)
|
||||
if(!check_has_mouth())
|
||||
to_chat(src, "Where do you intend to put \the [toEat]? You don't have a mouth!")
|
||||
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
@@ -1905,7 +1858,6 @@
|
||||
if(!check_has_mouth())
|
||||
if(!((istype(toEat, /obj/item/weapon/reagent_containers/food/drinks) && (get_species() == "Machine"))))
|
||||
to_chat(user, "Where do you intend to put \the [toEat]? \The [src] doesn't have a mouth!")
|
||||
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
@@ -1913,14 +1865,11 @@
|
||||
if(!check_has_mouth())
|
||||
if(!get_species() == "Machine")
|
||||
to_chat(src, "Where do you intend to put \the [src]? You don't have a mouth!")
|
||||
|
||||
return 0
|
||||
else
|
||||
to_chat(src, "<span class='notice'>You pour a bit of liquid from [toDrink] into your connection port.</span>")
|
||||
|
||||
else
|
||||
to_chat(src, "<span class='notice'>You swallow a gulp of [toDrink].</span>")
|
||||
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/human/can_track(mob/living/user)
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
/mob/living/carbon/human/attack_hand(mob/living/carbon/human/M as mob)
|
||||
if (istype(loc, /turf) && istype(loc.loc, /area/start))
|
||||
to_chat(M, "No attacking people at spawn, you jackass.")
|
||||
|
||||
return
|
||||
|
||||
if(frozen)
|
||||
to_chat(M, "\red Do not touch Admin-Frozen people.")
|
||||
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -16,7 +14,6 @@
|
||||
temp = H.organs_by_name["l_hand"]
|
||||
if(!temp || !temp.is_usable())
|
||||
to_chat(H, "\red You can't use your hand.")
|
||||
|
||||
return
|
||||
|
||||
..()
|
||||
@@ -74,19 +71,15 @@
|
||||
return 1
|
||||
if(!H.check_has_mouth())
|
||||
to_chat(H, "<span class='danger'>You don't have a mouth, you cannot perform CPR!</span>")
|
||||
|
||||
return
|
||||
if(!check_has_mouth())
|
||||
to_chat(H, "<span class='danger'>They don't have a mouth, you cannot perform CPR!</span>")
|
||||
|
||||
return
|
||||
if((M.head && (M.head.flags & HEADCOVERSMOUTH)) || (M.wear_mask && (M.wear_mask.flags & MASKCOVERSMOUTH) && !M.wear_mask.mask_adjusted))
|
||||
to_chat(M, "<span class='warning'>Remove your mask!</span>")
|
||||
|
||||
return 0
|
||||
if((head && (head.flags & HEADCOVERSMOUTH)) || (wear_mask && (wear_mask.flags & MASKCOVERSMOUTH) && !wear_mask.mask_adjusted))
|
||||
to_chat(M, "<span class='warning'>Remove his mask!</span>")
|
||||
|
||||
return 0
|
||||
|
||||
M.visible_message("<span class='danger'>\The [M] is trying to perform CPR on \the [src]!</span>", \
|
||||
@@ -100,15 +93,12 @@
|
||||
"<span class='notice'>You perform CPR on \the [src].</span>")
|
||||
|
||||
to_chat(src, "<span class='notice'>You feel a breath of fresh air enter your lungs. It feels good.</span>")
|
||||
|
||||
to_chat(M, "<span class='alert'>Repeat at least every 7 seconds.")
|
||||
|
||||
add_logs(src, M, "CPRed")
|
||||
return 1
|
||||
else
|
||||
to_chat(M, "<span class='danger'>You need to stay still while performing CPR!</span>")
|
||||
|
||||
|
||||
if(I_GRAB)
|
||||
if(attacker_style && attacker_style.grab_act(H, src))
|
||||
return 1
|
||||
@@ -127,23 +117,18 @@
|
||||
if(M.mind && M.mind.vampire && (M.mind in ticker.mode.vampires) && !M.mind.vampire.draining)
|
||||
if((head && (head.flags & HEADCOVERSMOUTH)) || (wear_mask && (wear_mask.flags & MASKCOVERSMOUTH)))
|
||||
to_chat(M, "<span class='warning'>Remove their mask!</span>")
|
||||
|
||||
return 0
|
||||
if((M.head && (M.head.flags & HEADCOVERSMOUTH)) || (M.wear_mask && (M.wear_mask.flags & MASKCOVERSMOUTH)))
|
||||
to_chat(M, "<span class='warning'>Remove your mask!</span>")
|
||||
|
||||
return 0
|
||||
if(mind && mind.vampire && (mind in ticker.mode.vampires))
|
||||
to_chat(M, "<span class='warning'>Your fangs fail to pierce [src.name]'s cold flesh</span>")
|
||||
|
||||
return 0
|
||||
if(SKELETON in mutations)
|
||||
to_chat(M, "<span class='warning'>There is no blood in a skeleton!</span>")
|
||||
|
||||
return 0
|
||||
if(issmall(src) && !ckey) //Monkeyized humans are okay, humanized monkeys are okey, monkeys are not.
|
||||
to_chat(M, "<span class='warning'>Blood from a monkey is useless!</span>")
|
||||
|
||||
return 0
|
||||
//we're good to suck the blood, blaah
|
||||
M.mind.vampire.handle_bloodsucking(src)
|
||||
|
||||
@@ -155,7 +155,6 @@
|
||||
var/obj/item/organ/external/O = pick(candidates)
|
||||
O.mutate()
|
||||
to_chat(src, "<span class='notice'>Something is not right with your [O.name]...</span>")
|
||||
|
||||
O.add_autopsy_data("Mutation", amount)
|
||||
return
|
||||
|
||||
@@ -165,7 +164,6 @@
|
||||
if(O.status & ORGAN_MUTATED)
|
||||
O.unmutate()
|
||||
to_chat(src, "<span class='notice'>Your [O.name] is shaped normally again.</span>")
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -176,7 +174,6 @@
|
||||
to_chat(src, "<span class='notice'>Your [O.name] is shaped normally again.</span>")
|
||||
|
||||
|
||||
|
||||
// Defined here solely to take species flags into account without having to recast at mob/living level.
|
||||
/mob/living/carbon/human/getOxyLoss()
|
||||
if(species.flags & NO_BREATHE)
|
||||
|
||||
@@ -177,14 +177,11 @@ emp_act
|
||||
return
|
||||
if(!(affecting.status & ORGAN_ROBOT))
|
||||
to_chat(user, "\red That limb isn't robotic.")
|
||||
|
||||
return
|
||||
if(affecting.sabotaged)
|
||||
to_chat(user, "\red [src]'s [affecting.name] is already sabotaged!")
|
||||
|
||||
else
|
||||
to_chat(user, "\red You sneakily slide the card into the dataport on [src]'s [affecting.name] and short out the safeties.")
|
||||
|
||||
affecting.sabotaged = 1
|
||||
return 1
|
||||
|
||||
@@ -202,7 +199,6 @@ emp_act
|
||||
src.loc.add_blood(src)
|
||||
--src.meatleft
|
||||
to_chat(user, "\red You hack off a chunk of meat from [src.name]")
|
||||
|
||||
if(!src.meatleft)
|
||||
src.attack_log += "\[[time_stamp()]\] Was chopped up into meat by <b>[key_name(user)]</b>"
|
||||
user.attack_log += "\[[time_stamp()]\] Chopped up <b>[key_name(src)]</b> into meat</b>"
|
||||
@@ -217,7 +213,6 @@ emp_act
|
||||
var/obj/item/organ/external/affecting = get_organ(ran_zone(user.zone_sel.selecting))
|
||||
if(!affecting || affecting.is_stump() || (affecting.status & ORGAN_DESTROYED))
|
||||
to_chat(user, "<span class='danger'>They are missing that limb!</span>")
|
||||
|
||||
return 1
|
||||
var/hit_area = affecting.name
|
||||
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
var/obj/item/weapon/storage/S = H.get_inactive_hand()
|
||||
if(!I)
|
||||
to_chat(H, "<span class='notice'>You are not holding anything to equip.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(istype(I, /obj/item/clothing/head/helmet/space/rig)) // If the item to be equipped is a rigid suit helmet
|
||||
@@ -16,7 +15,6 @@
|
||||
if(C.rig_restrict_helmet)
|
||||
to_chat(src, "\red You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)")// Stop eva helms equipping.
|
||||
|
||||
|
||||
return 0
|
||||
|
||||
if(H.equip_to_appropriate_slot(I))
|
||||
@@ -40,7 +38,6 @@
|
||||
to_chat(H, "\red You are unable to equip that.")
|
||||
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/equip_in_one_of_slots(obj/item/W, list/slots, del_on_fail = 1)
|
||||
for (var/slot in slots)
|
||||
if (equip_to_slot_if_possible(W, slots[slot], del_on_fail = 0))
|
||||
@@ -306,7 +303,6 @@
|
||||
uniform.attackby(W,src)
|
||||
else
|
||||
to_chat(src, "<span class='warning'>You are trying to equip this item to an unsupported inventory slot. Report this to a coder!</span>")
|
||||
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/put_in_hands(obj/item/W)
|
||||
@@ -421,7 +417,6 @@
|
||||
if(!(I.flags & ONESIZEFITSALL))
|
||||
if(!disable_warning)
|
||||
to_chat(src, "<span class='alert'>You're too fat to wear the [I].</span>")
|
||||
|
||||
return 0
|
||||
|
||||
switch(slot)
|
||||
@@ -469,7 +464,6 @@
|
||||
if(!w_uniform)
|
||||
if(!disable_warning)
|
||||
to_chat(src, "<span class='alert'>You need a jumpsuit before you can attach this [name].</span>")
|
||||
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_BELT))
|
||||
return
|
||||
@@ -514,7 +508,6 @@
|
||||
if(!w_uniform)
|
||||
if(!disable_warning)
|
||||
to_chat(src, "<span class='alert'>You need a jumpsuit before you can attach this [name].</span>")
|
||||
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_ID))
|
||||
return 0
|
||||
@@ -525,7 +518,6 @@
|
||||
if(!w_uniform)
|
||||
if(!disable_warning)
|
||||
to_chat(src, "<span class='alert'>You need a jumpsuit before you can attach this [name].</span>")
|
||||
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_PDA))
|
||||
return 0
|
||||
@@ -538,7 +530,6 @@
|
||||
if(!w_uniform)
|
||||
if(!disable_warning)
|
||||
to_chat(src, "<span class='alert'>You need a jumpsuit before you can attach this [name].</span>")
|
||||
|
||||
return 0
|
||||
if(I.slot_flags & SLOT_DENYPOCKET)
|
||||
return
|
||||
@@ -552,7 +543,6 @@
|
||||
if(!w_uniform)
|
||||
if(!disable_warning)
|
||||
to_chat(src, "<span class='alert'>You need a jumpsuit before you can attach this [name].</span>")
|
||||
|
||||
return 0
|
||||
if(I.slot_flags & SLOT_DENYPOCKET)
|
||||
return 0
|
||||
@@ -567,17 +557,14 @@
|
||||
if(!wear_suit)
|
||||
if(!disable_warning)
|
||||
to_chat(src, "<span class='alert'>You need a suit before you can attach this [name].</span>")
|
||||
|
||||
return 0
|
||||
if(!wear_suit.allowed)
|
||||
if(!disable_warning)
|
||||
to_chat(src, "You somehow have a suit with no defined allowed items for suit storage, stop that.")
|
||||
|
||||
return 0
|
||||
if(I.w_class > 4)
|
||||
if(!disable_warning)
|
||||
to_chat(src, "The [name] is too big to attach.")
|
||||
|
||||
return 0
|
||||
if(istype(I, /obj/item/device/pda) || istype(I, /obj/item/weapon/pen) || is_type_in_list(I, wear_suit.allowed))
|
||||
return 1
|
||||
@@ -604,13 +591,11 @@
|
||||
if(!w_uniform)
|
||||
if(!disable_warning)
|
||||
to_chat(src, "<span class='warning'>You need a jumpsuit before you can attach this [name].</span>")
|
||||
|
||||
return 0
|
||||
var/obj/item/clothing/under/uniform = w_uniform
|
||||
if(uniform.accessories.len && !uniform.can_attach_accessory(src))
|
||||
if(!disable_warning)
|
||||
to_chat(src, "<span class='warning'>You already have an accessory of this type attached to your [uniform].</span>")
|
||||
|
||||
return 0
|
||||
if(!(I.slot_flags & SLOT_TIE))
|
||||
return 0
|
||||
|
||||
@@ -188,7 +188,6 @@
|
||||
reagents.add_reagent("radium", rads/10)
|
||||
if( prob(10) )
|
||||
to_chat(src, "<span class='notice'>You feel relaxed.</span>")
|
||||
|
||||
return
|
||||
|
||||
if (radiation > 100)
|
||||
@@ -197,7 +196,6 @@
|
||||
Weaken(10)
|
||||
if(!lying)
|
||||
to_chat(src, "<span class='alert'>You feel weak.</span>")
|
||||
|
||||
emote("collapse")
|
||||
|
||||
if (radiation < 0)
|
||||
@@ -232,7 +230,6 @@
|
||||
Weaken(3)
|
||||
if(!lying)
|
||||
to_chat(src, "<span class='alert'>You feel weak.</span>")
|
||||
|
||||
emote("collapse")
|
||||
updatehealth()
|
||||
|
||||
@@ -242,7 +239,6 @@
|
||||
damage = 3
|
||||
if(prob(1))
|
||||
to_chat(src, "<span class='alert'>You mutate!</span>")
|
||||
|
||||
randmutb(src)
|
||||
domutcheck(src,null)
|
||||
emote("gasp")
|
||||
@@ -254,7 +250,6 @@
|
||||
damage = 5
|
||||
if(prob(1))
|
||||
to_chat(src, "<span class='alert'>You mutate!</span>")
|
||||
|
||||
randmutb(src)
|
||||
domutcheck(src,null)
|
||||
emote("gasp")
|
||||
@@ -399,7 +394,6 @@
|
||||
var/loc_temp = get_temperature(environment)
|
||||
// to_chat(world, "Loc temp: [loc_temp] - Body temp: [bodytemperature] - Fireloss: [getFireLoss()] - Thermal protection: [get_thermal_protection()] - Fire protection: [thermal_protection + add_fire_protection(loc_temp)] - Heat capacity: [environment_heat_capacity] - Location: [loc] - src: [src]")
|
||||
|
||||
|
||||
//Body temperature is adjusted in two steps. Firstly your body tries to stabilize itself a bit.
|
||||
if(stat != 2)
|
||||
stabilize_temperature_from_calories()
|
||||
@@ -705,7 +699,6 @@
|
||||
if(FAT in mutations)
|
||||
if(overeatduration < 100)
|
||||
to_chat(src, "<span class='notice'>You feel fit again!</span>")
|
||||
|
||||
mutations.Remove(FAT)
|
||||
update_mutantrace(0)
|
||||
update_mutations(0)
|
||||
@@ -714,7 +707,6 @@
|
||||
else
|
||||
if(overeatduration > 500)
|
||||
to_chat(src, "<span class='alert'>You suddenly feel blubbery!</span>")
|
||||
|
||||
mutations.Add(FAT)
|
||||
update_mutantrace(0)
|
||||
update_mutations(0)
|
||||
@@ -897,19 +889,16 @@
|
||||
|
||||
if(remoteview_target.stat != CONSCIOUS)
|
||||
to_chat(src, "<span class='alert'>Your psy-connection grows too faint to maintain!</span>")
|
||||
|
||||
isRemoteObserve = 0
|
||||
|
||||
if(PSY_RESIST in remoteview_target.mutations)
|
||||
to_chat(src, "<span class='alert'>Your mind is shut out!</span>")
|
||||
|
||||
isRemoteObserve = 0
|
||||
|
||||
// Not on the station or mining?
|
||||
var/turf/temp_turf = get_turf(remoteview_target)
|
||||
if(!temp_turf in config.contact_levels)
|
||||
to_chat(src, "<span class='alert'>Your psy-connection grows too faint to maintain!</span>")
|
||||
|
||||
isRemoteObserve = 0
|
||||
|
||||
if(remote_view)
|
||||
@@ -982,7 +971,6 @@
|
||||
if(shock_stage == 10)
|
||||
to_chat(src, "<font color='red'><b>"+pick("It hurts so much!", "You really need some painkillers..", "Dear god, the pain!"))
|
||||
|
||||
|
||||
if(shock_stage >= 30)
|
||||
if(shock_stage == 30) custom_emote(1,"is having trouble keeping their eyes open.")
|
||||
eye_blurry = max(2, eye_blurry)
|
||||
@@ -991,24 +979,20 @@
|
||||
if(shock_stage == 40)
|
||||
to_chat(src, "<font color='red'><b>"+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!"))
|
||||
|
||||
|
||||
if(shock_stage >=60)
|
||||
if(shock_stage == 60) custom_emote(1,"falls limp.")
|
||||
if (prob(2))
|
||||
to_chat(src, "<font color='red'><b>"+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!"))
|
||||
|
||||
Weaken(20)
|
||||
|
||||
if(shock_stage >= 80)
|
||||
if (prob(5))
|
||||
to_chat(src, "<font color='red'><b>"+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!"))
|
||||
|
||||
Weaken(20)
|
||||
|
||||
if(shock_stage >= 120)
|
||||
if (prob(2))
|
||||
to_chat(src, "<font color='red'><b>"+pick("You black out!", "You feel like you could die any moment now.", "You're about to lose consciousness."))
|
||||
|
||||
Paralyse(5)
|
||||
|
||||
if(shock_stage == 150)
|
||||
@@ -1099,7 +1083,6 @@
|
||||
if(H.species && H.species.flags & NO_BREATHE)
|
||||
return //no puking if you can't smell!
|
||||
to_chat(H, "<spawn class='warning'>You smell something foul...")
|
||||
|
||||
H.fakevomit()
|
||||
|
||||
/mob/living/carbon/human/proc/handle_heartbeat()
|
||||
@@ -1121,7 +1104,6 @@
|
||||
heartbeat = 0
|
||||
to_chat(src, sound('sound/effects/electheart.ogg',0,0,0,30))//Credit to GhostHack (www.ghosthack.de) for sound.
|
||||
|
||||
|
||||
else
|
||||
heartbeat++
|
||||
return
|
||||
@@ -1140,10 +1122,8 @@
|
||||
heartbeat = 0
|
||||
if(H.status & ORGAN_ASSISTED)
|
||||
to_chat(src, sound('sound/effects/pacemakebeat.ogg',0,0,0,50))
|
||||
|
||||
else
|
||||
to_chat(src, sound('sound/effects/singlebeat.ogg',0,0,0,50))
|
||||
|
||||
else
|
||||
heartbeat++
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
if(species && species.ventcrawler)
|
||||
to_chat(src, "<span class='notice'>You can ventcrawl! Use alt+click on vents to quickly travel about the station.</span>")
|
||||
|
||||
update_pipe_vision()
|
||||
update_hud()
|
||||
return
|
||||
|
||||
@@ -51,10 +51,8 @@
|
||||
for(var/mob/living/carbon/C in living_mob_list)
|
||||
if(C.get_int_organ(/obj/item/organ/internal/wryn/hivenode))
|
||||
to_chat(C, "<span class='danger'><B>Your antennae tingle as you are overcome with pain...</B></span>")
|
||||
|
||||
to_chat(C, "<span class='danger'>It feels like part of you has died.</span>")
|
||||
|
||||
|
||||
/datum/species/wryn/handle_attack_hand(var/mob/living/carbon/human/H, var/mob/living/carbon/human/M)
|
||||
if(M.a_intent == I_HARM)
|
||||
if(H.handcuffed)
|
||||
@@ -64,7 +62,6 @@
|
||||
|
||||
M.visible_message("<span class='notice'>[M] begins to violently pull off [H]'s antennae.</span>")
|
||||
to_chat(H, "<span class='danger'><B>[M] grips your antennae and starts violently pulling!<B></span>")
|
||||
|
||||
do_after(H, 250, target = src)
|
||||
if(p_loc == M.loc && p_loc_m == H.loc)
|
||||
var/obj/item/organ/internal/wryn/hivenode/node = new /obj/item/organ/internal/wryn/hivenode
|
||||
@@ -72,11 +69,8 @@
|
||||
node.remove(H)
|
||||
node.loc = M.loc
|
||||
to_chat(M, "<span class='notice'>You hear a loud crunch as you mercilessly pull off [H]'s antennae.</span>")
|
||||
|
||||
to_chat(H, "<span class='danger'><B>You hear a loud crunch as your antennae is ripped off your head by [M].</span></B>")
|
||||
|
||||
to_chat(H, "<span class='danger'><span class='danger'><B>It's so quiet...</B></span>")
|
||||
|
||||
H.h_style = "Bald"
|
||||
H.update_hair()
|
||||
|
||||
|
||||
@@ -113,7 +113,6 @@
|
||||
H.equip_or_collect(new helm(H), slot_head)
|
||||
H.equip_or_collect(new/obj/item/weapon/tank/plasma/plasmaman(H), tank_slot) // Bigger plasma tank from Raggy.
|
||||
to_chat(H, "<span class='notice'>You are now running on plasma internals from the [H.s_store] in your [tank_slot_name]. You must breathe plasma in order to survive, and are extremely flammable.</span>")
|
||||
|
||||
H.internal = H.get_item_by_slot(tank_slot)
|
||||
if (H.internals)
|
||||
H.internals.icon_state = "internal1"
|
||||
@@ -193,12 +192,10 @@
|
||||
if(breath.temperature < cold_level_1)
|
||||
if(prob(20))
|
||||
to_chat(src, "\red You feel your face freezing and an icicle forming in your lungs!")
|
||||
|
||||
else if(breath.temperature > heat_level_1)
|
||||
if(prob(20))
|
||||
to_chat(src, "\red You feel your face burning and a searing heat in your lungs!")
|
||||
|
||||
|
||||
switch(breath.temperature)
|
||||
if(-INFINITY to cold_level_3)
|
||||
H.apply_damage(COLD_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Cold")
|
||||
@@ -226,7 +223,6 @@
|
||||
|
||||
if(!istype(H.wear_suit, /obj/item/clothing/suit/space/eva/plasmaman) || !istype(H.head, /obj/item/clothing/head/helmet/space/eva/plasmaman))
|
||||
to_chat(H, "<span class='warning'>Your body reacts with the atmosphere and bursts into flame!</span>")
|
||||
|
||||
H.adjust_fire_stacks(0.5)
|
||||
H.IgniteMob()
|
||||
|
||||
|
||||
@@ -289,14 +289,12 @@
|
||||
if(breath.temperature < cold_level_1)
|
||||
if(prob(20))
|
||||
to_chat(H, "\red You feel your face freezing and an icicle forming in your lungs!")
|
||||
|
||||
else if(breath.temperature > heat_level_1)
|
||||
if(prob(20))
|
||||
to_chat(H, "\red You feel your face burning and a searing heat in your lungs!")
|
||||
|
||||
|
||||
|
||||
|
||||
switch(breath.temperature)
|
||||
if(-INFINITY to cold_level_3)
|
||||
H.apply_damage(cold_env_multiplier*COLD_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Cold")
|
||||
|
||||
@@ -276,7 +276,6 @@
|
||||
else
|
||||
H.equip_or_collect(new /obj/item/weapon/tank/emergency_oxygen/vox(H), slot_l_hand)
|
||||
to_chat(H, "<span class='notice'>You are now running on nitrogen internals from the [H.l_hand] in your hand. Your species finds oxygen toxic, so you must breathe nitrogen only.</span>")
|
||||
|
||||
H.internal = H.l_hand
|
||||
if (H.internals)
|
||||
H.internals.icon_state = "internal1"
|
||||
@@ -445,20 +444,17 @@
|
||||
if(!istype(S))
|
||||
if(!silent)
|
||||
to_chat(src, "You're not a slime person!")
|
||||
|
||||
return
|
||||
|
||||
if(src in S.recolor_list)
|
||||
S.recolor_list -= src
|
||||
if(!silent)
|
||||
to_chat(src, "You adjust your internal chemistry to filter out pigments from things you consume.")
|
||||
|
||||
else
|
||||
S.recolor_list += src
|
||||
if(!silent)
|
||||
to_chat(src, "You adjust your internal chemistry to permit pigments in chemicals you consume to tint you.")
|
||||
|
||||
|
||||
/mob/living/carbon/human/verb/toggle_recolor_verb()
|
||||
set category = "IC"
|
||||
set name = "Toggle Reagent Recoloring"
|
||||
@@ -478,12 +474,10 @@
|
||||
|
||||
if(stat || paralysis || stunned)
|
||||
to_chat(src, "<span class='warning'>You cannot regenerate missing limbs in your current state.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(nutrition < SLIMEPERSON_MINHUNGER)
|
||||
to_chat(src, "<span class='warning'>You're too hungry to regenerate a limb!</span>")
|
||||
|
||||
return
|
||||
|
||||
var/list/missing_limbs = list()
|
||||
@@ -500,7 +494,6 @@
|
||||
|
||||
if(!missing_limbs.len)
|
||||
to_chat(src, "<span class='warning'>You're not missing any limbs!</span>")
|
||||
|
||||
return
|
||||
|
||||
var/limb_select = input(src, "Choose a limb to regrow", "Limb Regrowth") as null|anything in missing_limbs
|
||||
@@ -510,12 +503,10 @@
|
||||
if(do_after(src, SLIMEPERSON_REGROWTHDELAY, needhand=0, target = src))
|
||||
if(stat || paralysis || stunned)
|
||||
to_chat(src, "<span class='warning'>You cannot regenerate missing limbs in your current state.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(nutrition < SLIMEPERSON_MINHUNGER)
|
||||
to_chat(src, "<span class='warning'>You're too hungry to regenerate a limb!</span>")
|
||||
|
||||
return
|
||||
|
||||
var/obj/item/organ/external/O = organs_by_name[chosen_limb]
|
||||
@@ -525,11 +516,9 @@
|
||||
if(istype(O))
|
||||
if(!O.is_stump())
|
||||
to_chat(src, "<span class='warning'>Your limb has already been replaced in some way!</span>")
|
||||
|
||||
return
|
||||
else
|
||||
to_chat(src, "<span class='warning'>You distribute the damaged tissue around your body, out of the way of your new pseudopod!</span>")
|
||||
|
||||
var/obj/item/organ/external/doomedStump = O
|
||||
stored_brute = doomedStump.brute_dam
|
||||
stored_burn = doomedStump.burn_dam
|
||||
@@ -541,7 +530,6 @@
|
||||
var/obj/item/organ/external/potential_parent = organs_by_name[initial(limb_path.parent_organ)]
|
||||
if(!istype(potential_parent) || potential_parent.is_stump())
|
||||
to_chat(src, "<span class='danger'>You've lost the organ that you've been growing your new part on!</span>")
|
||||
|
||||
return // No rayman for you
|
||||
// Grah this line will leave a "not used" warning, in spite of the fact that the new() proc WILL do the thing.
|
||||
// Bothersome.
|
||||
@@ -556,7 +544,6 @@
|
||||
visible_message("<span class='notice'>[src] finishes regrowing their missing [new_limb]!</span>", "<span class='notice'>You finish regrowing your [limb_select]</span>")
|
||||
else
|
||||
to_chat(src, "<span class='warning'>You need to hold still in order to regrow a limb!</span>")
|
||||
|
||||
return
|
||||
|
||||
#undef SLIMEPERSON_HUNGERCOST
|
||||
|
||||
@@ -643,7 +643,6 @@ var/global/list/damage_icon_parts = list()
|
||||
standing.icon = 'icons/mob/uniform_fat.dmi'
|
||||
else
|
||||
to_chat(src, "\red You burst out of \the [w_uniform]!")
|
||||
|
||||
unEquip(w_uniform)
|
||||
return
|
||||
else
|
||||
@@ -859,7 +858,6 @@ var/global/list/damage_icon_parts = list()
|
||||
standing = image("icon" = 'icons/mob/suit_fat.dmi', "icon_state" = "[wear_suit.icon_state]")
|
||||
else
|
||||
to_chat(src, "\red You burst out of \the [wear_suit]!")
|
||||
|
||||
unEquip(wear_suit)
|
||||
return
|
||||
else
|
||||
|
||||
@@ -279,7 +279,6 @@
|
||||
var/total_health = (health - staminaloss)
|
||||
if(total_health <= config.health_threshold_softcrit && !stat)
|
||||
to_chat(src, "<span class='notice'>You're too exhausted to keep going...</span>")
|
||||
|
||||
Weaken(5)
|
||||
setStaminaLoss(health - 2)
|
||||
return
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
if (src.client)
|
||||
if (client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "\red You cannot send IC messages (muted).")
|
||||
|
||||
return
|
||||
if (src.client.handle_spam_prevention(message,MUTE_IC))
|
||||
return
|
||||
@@ -61,10 +60,8 @@
|
||||
if ("help") //This is an exception
|
||||
to_chat(src, "Help for slime emotes. You can use these emotes with say \"*emote\":\n\nbounce, custom, jiggle, light, moan, shiver, sway, twitch, vibrate")
|
||||
|
||||
|
||||
else
|
||||
to_chat(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))
|
||||
|
||||
@@ -42,4 +42,3 @@
|
||||
|
||||
msg += "*---------*</span>"
|
||||
to_chat(user, msg)
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
|
||||
if(stat)
|
||||
to_chat(src, "<i>I must be conscious to do this...</i>")
|
||||
|
||||
return
|
||||
|
||||
var/list/choices = list()
|
||||
@@ -27,29 +26,22 @@
|
||||
for(var/mob/living/carbon/slime/met in view())
|
||||
if(met.Victim == M && met != src)
|
||||
to_chat(src, "<i>The [met.name] is already feeding on this subject...</i>")
|
||||
|
||||
return
|
||||
to_chat(src, "\blue <i>I have latched onto the subject and begun feeding...</i>")
|
||||
|
||||
to_chat(M, "\red <b>The [src.name] has latched onto your head!</b>")
|
||||
|
||||
Feedon(M)
|
||||
|
||||
else
|
||||
to_chat(src, "<i>This subject does not have a strong enough life energy...</i>")
|
||||
|
||||
else
|
||||
to_chat(src, "<i>This subject does not have an edible life energy...</i>")
|
||||
|
||||
else
|
||||
to_chat(src, "<i>I must not feed on my brothers...</i>")
|
||||
|
||||
else
|
||||
to_chat(src, "<i>This subject does not have an edible life energy...</i>")
|
||||
|
||||
|
||||
|
||||
|
||||
/mob/living/carbon/slime/proc/Feedon(var/mob/living/M)
|
||||
Victim = M
|
||||
src.loc = M.loc
|
||||
@@ -155,24 +147,20 @@
|
||||
|
||||
if(client)
|
||||
to_chat(src, "<i>This subject does not have a strong enough life energy anymore...</i>")
|
||||
|
||||
else
|
||||
M.canmove = 1
|
||||
if(client)
|
||||
to_chat(src, "<i>I have stopped feeding...</i>")
|
||||
|
||||
else
|
||||
if(client)
|
||||
to_chat(src, "<i>I have stopped feeding...</i>")
|
||||
|
||||
|
||||
Victim = null
|
||||
|
||||
/mob/living/carbon/slime/proc/Feedstop()
|
||||
if(Victim)
|
||||
if(Victim.client)
|
||||
to_chat(Victim, "[src] has let go of your head!")
|
||||
|
||||
Victim = null
|
||||
|
||||
/mob/living/carbon/slime/proc/UpdateFeed(var/mob/M)
|
||||
@@ -187,7 +175,6 @@
|
||||
|
||||
if(stat)
|
||||
to_chat(src, "<i>I must be conscious to do this...</i>")
|
||||
|
||||
return
|
||||
if(!is_adult)
|
||||
if(amount_grown >= 10)
|
||||
@@ -198,25 +185,21 @@
|
||||
name = text("[colour] [is_adult ? "adult" : "baby"] slime ([number])")
|
||||
else
|
||||
to_chat(src, "<i>I am not ready to evolve yet...</i>")
|
||||
|
||||
else
|
||||
to_chat(src, "<i>I have already evolved...</i>")
|
||||
|
||||
|
||||
/mob/living/carbon/slime/verb/Reproduce()
|
||||
set category = "Slime"
|
||||
set desc = "This will make you split into four Slimes."
|
||||
|
||||
if(stat)
|
||||
to_chat(src, "<i>I must be conscious to do this...</i>")
|
||||
|
||||
return
|
||||
|
||||
if(is_adult)
|
||||
if(amount_grown >= 10)
|
||||
if(stat)
|
||||
to_chat(src, "<i>I must be conscious to do this...</i>")
|
||||
|
||||
return
|
||||
|
||||
var/list/babies = list()
|
||||
@@ -244,7 +227,5 @@
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(src, "<i>I am not ready to reproduce yet...</i>")
|
||||
|
||||
else
|
||||
to_chat(src, "<i>I am not old enough to reproduce yet...</i>")
|
||||
|
||||
|
||||
@@ -233,7 +233,6 @@
|
||||
/mob/living/carbon/slime/attack_slime(mob/living/carbon/slime/M as mob)
|
||||
if (!ticker)
|
||||
to_chat(M, "You cannot attack people before the game has started.")
|
||||
|
||||
return
|
||||
|
||||
if (Victim) return // can't attack while eating!
|
||||
@@ -295,12 +294,10 @@
|
||||
/mob/living/carbon/slime/attack_hand(mob/living/carbon/human/M as mob)
|
||||
if (!ticker)
|
||||
to_chat(M, "You cannot attack people before the game has started.")
|
||||
|
||||
return
|
||||
|
||||
if (istype(loc, /turf) && istype(loc.loc, /area/start))
|
||||
to_chat(M, "No attacking people at spawn, you jackass.")
|
||||
|
||||
return
|
||||
|
||||
..()
|
||||
@@ -375,7 +372,6 @@
|
||||
return
|
||||
else
|
||||
to_chat(M, "\red Not enough charge! ")
|
||||
|
||||
return
|
||||
*/
|
||||
|
||||
@@ -424,12 +420,10 @@
|
||||
/mob/living/carbon/slime/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
|
||||
if (!ticker)
|
||||
to_chat(M, "You cannot attack people before the game has started.")
|
||||
|
||||
return
|
||||
|
||||
if (istype(loc, /turf) && istype(loc.loc, /area/start))
|
||||
to_chat(M, "No attacking people at spawn, you jackass.")
|
||||
|
||||
return
|
||||
|
||||
switch(M.a_intent)
|
||||
@@ -510,7 +504,6 @@
|
||||
else
|
||||
Friends[user] = 1
|
||||
to_chat(user, "You feed the slime the plasma. It chirps happily.")
|
||||
|
||||
var/obj/item/stack/sheet/mineral/plasma/S = W
|
||||
S.use(1)
|
||||
return
|
||||
@@ -518,7 +511,6 @@
|
||||
attacked += 10
|
||||
if(prob(25))
|
||||
to_chat(user, "<span class='danger'>[W] passes right through [src]!</span>")
|
||||
|
||||
return
|
||||
if(Discipline && prob(50)) // wow, buddy, why am I getting attacked??
|
||||
Discipline = 0
|
||||
@@ -603,5 +595,4 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
|
||||
if(istype(toEat, /obj/item/weapon/reagent_containers/food/drinks))
|
||||
return 1
|
||||
to_chat(user, "This creature does not seem to have a mouth!")
|
||||
|
||||
return 0
|
||||
@@ -54,7 +54,6 @@
|
||||
|
||||
to_chat(H, desc)
|
||||
|
||||
|
||||
/datum/superheroes/owlman
|
||||
name = "Owlman"
|
||||
class = "Superhero"
|
||||
@@ -151,86 +150,64 @@
|
||||
for(var/mob/living/carbon/human/target in targets)
|
||||
if(ticker.mode.greyshirts.len >= 3)
|
||||
to_chat(usr, "<span class='warning'>You have already recruited the maximum number of henchmen.</span>")
|
||||
|
||||
if(!in_range(usr, target))
|
||||
to_chat(usr, "<span class='warning'>You need to be closer to enthrall [target].</span>")
|
||||
|
||||
charge_counter = charge_max
|
||||
return
|
||||
if(!target.ckey)
|
||||
to_chat(usr, "<span class='warning'>The target has no mind.</span>")
|
||||
|
||||
charge_counter = charge_max
|
||||
return
|
||||
if(target.stat)
|
||||
to_chat(usr, "<span class='warning'>The target must be conscious.</span>")
|
||||
|
||||
charge_counter = charge_max
|
||||
return
|
||||
if(!ishuman(target))
|
||||
to_chat(usr, "<span class='warning'>You can only recruit humans.</span>")
|
||||
|
||||
charge_counter = charge_max
|
||||
return
|
||||
if(target.mind.assigned_role != "Civilian")
|
||||
to_chat(usr, "<span class='warning'>You can only recruit Civilians.</span>")
|
||||
|
||||
if(recruiting)
|
||||
to_chat(usr, "<span class='danger'>You are already recruiting!</span>")
|
||||
|
||||
charge_counter = charge_max
|
||||
return
|
||||
recruiting = 1
|
||||
to_chat(usr, "<span class='danger'>This target is valid. You begin the recruiting process.</span>")
|
||||
|
||||
to_chat(target, "<span class='userdanger'>[usr] focuses in concentration. Your head begins to ache.</span>")
|
||||
|
||||
|
||||
for(var/progress = 0, progress <= 3, progress++)
|
||||
switch(progress)
|
||||
if(1)
|
||||
to_chat(usr, "<span class='notice'>You begin by introducing yourself and explaining what you're about.</span>")
|
||||
|
||||
usr.visible_message("<span class='danger'>[usr]'s introduces himself and explains his plans.</span>")
|
||||
if(2)
|
||||
to_chat(usr, "<span class='notice'>You begin the recruitment of [target].</span>")
|
||||
|
||||
usr.visible_message("<span class='danger'>[usr] leans over towards [target], whispering excitedly as he gives a speech.</span>")
|
||||
to_chat(target, "<span class='danger'>You feel yourself agreeing with [usr], and a surge of loyalty begins building.</span>")
|
||||
|
||||
target.Weaken(12)
|
||||
sleep(20)
|
||||
if(isloyal(target))
|
||||
to_chat(usr, "<span class='notice'>They are enslaved by Nanotrasen. You feel their interest in your cause wane and disappear.</span>")
|
||||
|
||||
usr.visible_message("<span class='danger'>[usr] stops talking for a moment, then moves back away from [target].</span>")
|
||||
to_chat(target, "<span class='danger'>Your loyalty implant activates and a sharp pain reminds you of your loyalties to Nanotrasen.</span>")
|
||||
|
||||
return
|
||||
if(3)
|
||||
to_chat(usr, "<span class='notice'>You begin filling out the application form with [target].</span>")
|
||||
|
||||
usr.visible_message("<span class='danger'>[usr] pulls out a pen and paper and begins filling an application form with [target].</span>")
|
||||
to_chat(target, "<span class='danger'>You are being convinced by [usr] to fill out an application form to become a henchman.</span>")//Ow the edge
|
||||
|
||||
|
||||
if(!do_mob(usr, target, 100)) //around 30 seconds total for enthralling, 45 for someone with a loyalty implant
|
||||
to_chat(usr, "<span class='danger'>The enrollment process has been interrupted - you have lost the attention of [target].</span>")
|
||||
|
||||
to_chat(target, "<span class='warning'>You move away and are no longer under the charm of [usr]. The application form is null and void.</span>")
|
||||
|
||||
recruiting = 0
|
||||
return
|
||||
|
||||
recruiting = 0
|
||||
to_chat(usr, "<span class='notice'>You have recruited <b>[target]</b> as your henchman!</span>")
|
||||
|
||||
to_chat(target, "<span class='deadsay'><b>You have decided to enroll as a henchman for [usr]. You are now part of the feared 'Greyshirts'.</b></span>")
|
||||
|
||||
to_chat(target, "<span class='deadsay'><b>You must follow the orders of [usr], and help him succeed in his dastardly schemes.</span>")
|
||||
|
||||
to_chat(target, "<span class='deadsay'>You may not harm other Greyshirt or [usr]. However, you do not need to obey other Greyshirts.</span>")
|
||||
|
||||
ticker.mode.greyshirts += target.mind
|
||||
target.set_species("Human")
|
||||
target.h_style = "Bald"
|
||||
|
||||
@@ -7,10 +7,8 @@
|
||||
|
||||
if(language)
|
||||
to_chat(src, "<span class='notice'>You will now speak [language] if you do not specify a language when speaking.</span>")
|
||||
|
||||
else
|
||||
to_chat(src, "<span class='notice'>You will now speak whatever your standard default language is if you do not specify one when speaking.</span>")
|
||||
|
||||
default_language = language
|
||||
|
||||
// Silicons can't neccessarily speak everything in their languages list
|
||||
@@ -23,7 +21,5 @@
|
||||
|
||||
if(default_language)
|
||||
to_chat(src, "<span class='notice'>You are currently speaking [default_language] by default.</span>")
|
||||
|
||||
else
|
||||
to_chat(src, "<span class='notice'>Your current default language is your species or mob type default.</span>")
|
||||
|
||||
|
||||
@@ -68,7 +68,6 @@
|
||||
updatehealth()
|
||||
to_chat(src, "<span class='notice'>You have given up life and succumbed to death.</span>")
|
||||
|
||||
|
||||
/mob/living/proc/InCritical()
|
||||
return (src.health < 0 && src.health > -95.0 && stat == UNCONSCIOUS)
|
||||
|
||||
@@ -94,7 +93,6 @@
|
||||
/mob/living/proc/burn_skin(burn_amount)
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
// to_chat(world, "DEBUG: burn_skin(), mutations=[mutations]")
|
||||
|
||||
if (RESIST_HEAT in src.mutations) //fireproof
|
||||
return 0
|
||||
var/mob/living/carbon/human/H = src //make this damage method divide the damage to be done among all the body parts, then burn each body part for that much damage. will have better effect then just randomly picking a body part
|
||||
@@ -127,7 +125,6 @@
|
||||
temperature = desired
|
||||
// if(istype(src, /mob/living/carbon/human))
|
||||
// to_chat(world, "[src] ~ [src.bodytemperature] ~ [temperature]")
|
||||
|
||||
return temperature
|
||||
|
||||
|
||||
@@ -421,14 +418,11 @@
|
||||
if(config.allow_Metadata)
|
||||
if(client)
|
||||
to_chat(usr, "[src]'s Metainfo:<br>[client.prefs.metadata]")
|
||||
|
||||
else
|
||||
to_chat(usr, "[src] does not have any stored infomation!")
|
||||
|
||||
else
|
||||
to_chat(usr, "OOC Metadata is not supported by this server!")
|
||||
|
||||
|
||||
return
|
||||
|
||||
/mob/living/Move(atom/newloc, direct)
|
||||
@@ -577,10 +571,8 @@
|
||||
var/mob/living/captive_brain/H = src
|
||||
|
||||
to_chat(H, "\red <B>You begin doggedly resisting the parasite's control (this will take approximately sixty seconds).</B>")
|
||||
|
||||
to_chat(B.host, "\red <B>You feel the captive mind of [src] begin to resist your control.</B>")
|
||||
|
||||
|
||||
spawn(rand(350,450)+B.host.brainloss)
|
||||
|
||||
if(!B || !B.controlling)
|
||||
@@ -588,10 +580,8 @@
|
||||
|
||||
B.host.adjustBrainLoss(rand(5,10))
|
||||
to_chat(H, "\red <B>With an immense exertion of will, you regain control of your body!</B>")
|
||||
|
||||
to_chat(B.host, "\red <B>You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you.</b>")
|
||||
|
||||
|
||||
B.detatch()
|
||||
|
||||
verbs -= /mob/living/carbon/proc/release_control
|
||||
@@ -644,7 +634,6 @@
|
||||
C.last_special = world.time + CLICK_CD_BREAKOUT
|
||||
|
||||
to_chat(C, "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stay still)</span>")
|
||||
|
||||
for(var/mob/O in viewers(L))
|
||||
O.show_message("\red <B>[usr] attempts to unbuckle themself!</B>", 1)
|
||||
|
||||
@@ -655,7 +644,6 @@
|
||||
for(var/mob/O in viewers(C))
|
||||
O.show_message("\red <B>[usr] manages to unbuckle themself!</B>", 1)
|
||||
to_chat(C, "\blue You successfully unbuckle yourself.")
|
||||
|
||||
C.buckled.user_unbuckle_mob(C,C)
|
||||
|
||||
else
|
||||
@@ -699,7 +687,6 @@
|
||||
displaytime = 5
|
||||
|
||||
to_chat(CM, "\red You attempt to remove \the [HC]. (This will take around [displaytime] [hulklien ? "seconds" : "minute[displaytime==1 ? "" : "s"]"] and you need to stand still)")
|
||||
|
||||
for(var/mob/O in viewers(CM))
|
||||
O.show_message( "\red <B>[usr] attempts to [hulklien ? "break" : "remove"] \the [HC]!</B>", 1)
|
||||
spawn(0)
|
||||
@@ -712,7 +699,6 @@
|
||||
|
||||
to_chat(CM, "\blue You successfully [hulklien ? "break" : "remove"] \the [CM.handcuffed].")
|
||||
|
||||
|
||||
if(hulklien)
|
||||
CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
qdel(CM.handcuffed)
|
||||
@@ -745,7 +731,6 @@
|
||||
|
||||
to_chat(CM, "\red You attempt to remove \the [HC]. (This will take around [displaytime] [hulklien ? "seconds" : "minute[displaytime==1 ? "" : "s"]"] and you need to stand still)")
|
||||
|
||||
|
||||
for(var/mob/O in viewers(CM))
|
||||
O.show_message( "\red <B>[usr] attempts to [hulklien ? "break" : "remove"] \the [HC]!</B>", 1)
|
||||
|
||||
@@ -758,7 +743,6 @@
|
||||
|
||||
to_chat(CM, "\blue You successfully [hulklien ? "break" : "remove"] \the [CM.legcuffed].")
|
||||
|
||||
|
||||
if(!hulklien)
|
||||
CM.unEquip(CM.legcuffed)
|
||||
|
||||
@@ -797,7 +781,6 @@
|
||||
|
||||
/mob/living/proc/Exhaust()
|
||||
to_chat(src, "<span class='notice'>You're too exhausted to keep going...</span>")
|
||||
|
||||
Weaken(5)
|
||||
|
||||
/mob/living/proc/get_visible_name()
|
||||
@@ -842,7 +825,6 @@
|
||||
/mob/living/stripPanelUnequip(obj/item/what, mob/who, where, var/silent = 0)
|
||||
if(what.flags & NODROP)
|
||||
to_chat(src, "<span class='warning'>You can't remove \the [what.name], it appears to be stuck!</span>")
|
||||
|
||||
return
|
||||
if(!silent)
|
||||
who.visible_message("<span class='danger'>[src] tries to remove [who]'s [what.name].</span>", \
|
||||
@@ -861,12 +843,10 @@
|
||||
what = src.get_active_hand()
|
||||
if(what && (what.flags & NODROP))
|
||||
to_chat(src, "<span class='warning'>You can't put \the [what.name] on [who], it's stuck to your hand!</span>")
|
||||
|
||||
return
|
||||
if(what)
|
||||
if(!what.mob_can_equip(who, where, 1))
|
||||
to_chat(src, "<span class='warning'>\The [what.name] doesn't fit in that place!</span>")
|
||||
|
||||
return
|
||||
if(!silent)
|
||||
visible_message("<span class='notice'>[src] tries to put [what] on [who].</span>")
|
||||
|
||||
@@ -18,25 +18,19 @@
|
||||
armor = max(0, armor - armour_penetration)
|
||||
if(penetrated_text)
|
||||
to_chat(src, "<span class='userdanger'>[penetrated_text]</span>")
|
||||
|
||||
else
|
||||
to_chat(src, "<span class='userdanger'>Your armor was penetrated!</span>")
|
||||
|
||||
|
||||
if(armor >= 100)
|
||||
if(absorb_text)
|
||||
to_chat(src, "<span class='userdanger'>[absorb_text]</span>")
|
||||
|
||||
else
|
||||
to_chat(src, "<span class='userdanger'>Your armor absorbs the blow!</span>")
|
||||
|
||||
else if(armor > 0)
|
||||
if(soften_text)
|
||||
to_chat(src, "<span class='userdanger'>[soften_text]</span>")
|
||||
|
||||
else
|
||||
to_chat(src, "<span class='userdanger'>Your armor softens the blow!</span>")
|
||||
|
||||
return armor
|
||||
|
||||
//if null is passed for def_zone, then this should return something appropriate for all zones (e.g. area effect damage)
|
||||
@@ -51,7 +45,6 @@
|
||||
C.attack_self(src)//Should shut it off
|
||||
update_icons()
|
||||
to_chat(src, "\blue Your [C.name] was disrupted!")
|
||||
|
||||
Stun(2)
|
||||
|
||||
//Armor
|
||||
@@ -249,7 +242,6 @@
|
||||
for(var/obj/item/weapon/grab/G in src.grabbed_by)
|
||||
if(G.assailant == user)
|
||||
to_chat(user, "<span class='notice'>You already grabbed [src].</span>")
|
||||
|
||||
return
|
||||
|
||||
add_logs(src, user, "grabbed", addition="passively")
|
||||
@@ -257,7 +249,6 @@
|
||||
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(user, src)
|
||||
if(buckled)
|
||||
to_chat(user, "<span class='notice'>You cannot grab [src], \he is buckled in!</span>")
|
||||
|
||||
if(!G) //the grab will delete itself in New if src is anchored
|
||||
return 0
|
||||
user.put_in_active_hand(G)
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
//Vents
|
||||
if(ventcrawler)
|
||||
to_chat(src, "<span class='notice'>You can ventcrawl! Use alt+click on vents to quickly travel about the station.</span>")
|
||||
|
||||
//Should update regardless of if we can ventcrawl, since we can end up in pipes in other ways.
|
||||
update_pipe_vision()
|
||||
|
||||
|
||||
@@ -120,7 +120,6 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
if(client)
|
||||
if(client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "\red You cannot speak in IC (Muted).")
|
||||
|
||||
return
|
||||
|
||||
message = trim_strip_html_properly(message)
|
||||
@@ -162,7 +161,6 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
|
||||
if(is_muzzled())
|
||||
to_chat(src, "<span class='danger'>You're muzzled and cannot speak!</span>")
|
||||
|
||||
return
|
||||
|
||||
message = trim_left(message)
|
||||
@@ -315,7 +313,6 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
if(act == "help") return //except help, because help is handled individually
|
||||
to_chat(src, "\blue Unusable emote '[act]'. Say *help for a list.")
|
||||
|
||||
|
||||
/mob/living/whisper(message as text)
|
||||
message = trim_strip_html_properly(message)
|
||||
|
||||
@@ -341,7 +338,6 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
if(client)
|
||||
if(client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "<span class='danger'>You cannot speak in IC (Muted).</span>")
|
||||
|
||||
return
|
||||
|
||||
if(stat)
|
||||
@@ -351,7 +347,6 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
|
||||
if(is_muzzled())
|
||||
to_chat(src, "<span class='danger'>You're muzzled and cannot speak!</span>")
|
||||
|
||||
return
|
||||
|
||||
var/message_range = 1
|
||||
|
||||
@@ -202,18 +202,12 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
/mob/living/silicon/ai/proc/on_mob_init()
|
||||
to_chat(src, "<B>You are playing the station's AI. The AI cannot move, but can interact with many objects while viewing them (through cameras).</B>")
|
||||
|
||||
to_chat(src, "<B>To look at other parts of the station, click on yourself to get a camera menu.</B>")
|
||||
|
||||
to_chat(src, "<B>While observing through a camera, you can use most (networked) devices which you can see, such as computers, APCs, intercoms, doors, etc.</B>")
|
||||
|
||||
to_chat(src, "To use something, simply click on it.")
|
||||
|
||||
to_chat(src, "Use say :b to speak to your cyborgs through binary. Use say :h to speak from an active holopad.")
|
||||
|
||||
to_chat(src, "For department channels, use the following say commands:")
|
||||
|
||||
|
||||
var/radio_text = ""
|
||||
for(var/i = 1 to common_radio.channels.len)
|
||||
var/channel = common_radio.channels[i]
|
||||
@@ -224,12 +218,10 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
to_chat(src, radio_text)
|
||||
|
||||
|
||||
if (!(ticker && ticker.mode && (mind in ticker.mode.malf_ai)))
|
||||
show_laws()
|
||||
to_chat(src, "<b>These laws may be changed by other players, or by you being the traitor.</b>")
|
||||
|
||||
|
||||
job = "AI"
|
||||
|
||||
/mob/living/silicon/ai/rename_character(oldname, newname)
|
||||
@@ -339,7 +331,6 @@ var/list/ai_verbs_default = list(
|
||||
else icon_state = "ai"
|
||||
//else
|
||||
// to_chat(usr, "You can only change your display once!")
|
||||
|
||||
//return
|
||||
|
||||
|
||||
@@ -368,7 +359,6 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
if(message_cooldown)
|
||||
to_chat(src, "<span class='warning'>Please allow one minute to pass between announcements.</span>")
|
||||
|
||||
return
|
||||
|
||||
var/input = input(usr, "Please write a message to announce to the station crew.", "A.I. Announcement") as message|null
|
||||
@@ -430,7 +420,6 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
to_chat(src, "[anchored ? "<b>You are now anchored.</b>" : "<b>You are now unanchored.</b>"]")
|
||||
|
||||
|
||||
/mob/living/silicon/ai/update_canmove()
|
||||
return 0
|
||||
|
||||
@@ -512,7 +501,6 @@ var/list/ai_verbs_default = list(
|
||||
else
|
||||
to_chat(src, "<span class='notice'>Unable to locate the holopad.</span>")
|
||||
|
||||
|
||||
if(href_list["say_word"])
|
||||
play_vox_word(href_list["say_word"], null, src)
|
||||
return
|
||||
@@ -523,7 +511,6 @@ var/list/ai_verbs_default = list(
|
||||
ai_actual_track(target)
|
||||
else
|
||||
to_chat(src, "<span class='warning'>Target is not on or near any active cameras on the station.</span>")
|
||||
|
||||
return
|
||||
|
||||
if (href_list["trackbot"])
|
||||
@@ -532,7 +519,6 @@ var/list/ai_verbs_default = list(
|
||||
ai_actual_track(target)
|
||||
else
|
||||
to_chat(src, "<span class='warning'>Target is not on or near any active cameras on the station.</span>")
|
||||
|
||||
return
|
||||
|
||||
if (href_list["callbot"]) //Command a bot to move to a selected location.
|
||||
@@ -541,7 +527,6 @@ var/list/ai_verbs_default = list(
|
||||
return //True if there is no bot found, the bot is manually emagged, or the AI is carded with wireless off.
|
||||
waypoint_mode = 1
|
||||
to_chat(src, "<span class='notice'>Set your waypoint by clicking on a valid location free of obstructions.</span>")
|
||||
|
||||
return
|
||||
|
||||
if (href_list["interface"]) //Remotely connect to a bot!
|
||||
@@ -558,7 +543,6 @@ var/list/ai_verbs_default = list(
|
||||
var/obj/mecha/M = locate(href_list["ai_take_control"])
|
||||
if(controlled_mech)
|
||||
to_chat(src, "You are already loaded into an onboard computer!")
|
||||
|
||||
return
|
||||
if(M)
|
||||
M.transfer_ai(AI_MECH_HACK,src, usr) //Called om the mech itself.
|
||||
@@ -570,13 +554,11 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
A.cameraFollow = target
|
||||
to_chat(A, "Now tracking [target.name] on camera.")
|
||||
|
||||
if (usr.machine == null)
|
||||
usr.machine = usr
|
||||
|
||||
while (src.cameraFollow == target)
|
||||
to_chat(usr, "Target is not on or near any active cameras on the station. We'll check again in 5 seconds (unless you use the cancel-camera verb).")
|
||||
|
||||
sleep(40)
|
||||
continue
|
||||
|
||||
@@ -593,12 +575,10 @@ var/list/ai_verbs_default = list(
|
||||
/mob/living/silicon/ai/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
|
||||
if (!ticker)
|
||||
to_chat(M, "You cannot attack people before the game has started.")
|
||||
|
||||
return
|
||||
|
||||
if (istype(loc, /turf) && istype(loc.loc, /area/start))
|
||||
to_chat(M, "No attacking people at spawn, you jackass.")
|
||||
|
||||
return
|
||||
|
||||
switch(M.a_intent)
|
||||
@@ -651,7 +631,6 @@ var/list/ai_verbs_default = list(
|
||||
set desc = "Wirelessly control various automatic robots."
|
||||
if(stat == 2)
|
||||
to_chat(src, "<span class='danger'>Critical error. System offline.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(check_unable(AI_CHECK_WIRELESS | AI_CHECK_RADIO))
|
||||
@@ -689,7 +668,6 @@ var/list/ai_verbs_default = list(
|
||||
else
|
||||
to_chat(src, "<span class='danger'>Selected location is not visible.</span>")
|
||||
|
||||
|
||||
/mob/living/silicon/ai/proc/call_bot(var/turf/waypoint)
|
||||
|
||||
if(!Bot)
|
||||
@@ -697,7 +675,6 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
if(Bot.calling_ai && Bot.calling_ai != src) //Prevents an override if another AI is controlling this bot.
|
||||
to_chat(src, "<span class='danger'>Interface error. Unit is already in use.</span>")
|
||||
|
||||
return
|
||||
|
||||
Bot.call_bot(src, waypoint)
|
||||
@@ -733,7 +710,6 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
if(usr.stat == 2)
|
||||
to_chat(usr, "You can't change your camera network because you are dead!")
|
||||
|
||||
return
|
||||
|
||||
var/mob/living/silicon/ai/U = usr
|
||||
@@ -766,7 +742,6 @@ var/list/ai_verbs_default = list(
|
||||
U.eyeobj.setLoc(get_turf(C))
|
||||
break
|
||||
to_chat(src, "\blue Switched to [network] camera network.")
|
||||
|
||||
//End of code by Mord_Sith
|
||||
|
||||
|
||||
@@ -782,7 +757,6 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
if(usr.stat == 2)
|
||||
to_chat(usr, "You cannot change your emotional status because you are dead!")
|
||||
|
||||
return
|
||||
|
||||
if(check_unable())
|
||||
@@ -859,7 +833,6 @@ var/list/ai_verbs_default = list(
|
||||
var/obj/machinery/power/apc/apc = src.loc
|
||||
if(!istype(apc))
|
||||
to_chat(src, "\blue You are already in your Main Core.")
|
||||
|
||||
return
|
||||
apc.malfvacate()
|
||||
|
||||
@@ -877,7 +850,6 @@ var/list/ai_verbs_default = list(
|
||||
if (!camera_light_on)
|
||||
to_chat(src, "Camera lights deactivated.")
|
||||
|
||||
|
||||
for (var/obj/machinery/camera/C in lit_cameras)
|
||||
C.set_light(0)
|
||||
lit_cameras = list()
|
||||
@@ -888,7 +860,6 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
to_chat(src, "Camera lights activated.")
|
||||
|
||||
|
||||
/mob/living/silicon/ai/proc/sensor_mode()
|
||||
set name = "Set Sensor Augmentation"
|
||||
set desc = "Augment visual feed with internal sensor overlays."
|
||||
@@ -905,7 +876,6 @@ var/list/ai_verbs_default = list(
|
||||
arrivalmsg = newmsg
|
||||
to_chat(usr, "The arrival message has been successfully changed.")
|
||||
|
||||
|
||||
// Handled camera lighting, when toggled.
|
||||
// It will get the nearest camera from the eyeobj, lighting it.
|
||||
|
||||
@@ -961,7 +931,6 @@ var/list/ai_verbs_default = list(
|
||||
return
|
||||
|
||||
to_chat(src, "Accessing Subspace Transceiver control...")
|
||||
|
||||
if (src.aiRadio)
|
||||
src.aiRadio.interact(src)
|
||||
|
||||
@@ -974,15 +943,12 @@ var/list/ai_verbs_default = list(
|
||||
var/obj/item/weapon/card/id/id = H.wear_id
|
||||
if(istype(id) && id.is_untrackable())
|
||||
to_chat(src, "Unable to locate an airlock")
|
||||
|
||||
return
|
||||
if(H.digitalcamo)
|
||||
to_chat(src, "Unable to locate an airlock")
|
||||
|
||||
return
|
||||
if (!near_camera(target))
|
||||
to_chat(src, "Target is not near any active cameras.")
|
||||
|
||||
return
|
||||
var/obj/machinery/door/airlock/tobeopened
|
||||
var/dist = -1
|
||||
@@ -991,53 +957,42 @@ var/list/ai_verbs_default = list(
|
||||
if(dist < 0)
|
||||
dist = get_dist(D, target)
|
||||
// to_chat(world, dist)
|
||||
|
||||
tobeopened = D
|
||||
else
|
||||
if(dist > get_dist(D, target))
|
||||
dist = get_dist(D, target)
|
||||
// to_chat(world, dist)
|
||||
|
||||
tobeopened = D
|
||||
// to_chat(world, "found [tobeopened.name] closer")
|
||||
|
||||
else
|
||||
// to_chat(world, "[D.name] not close enough | [get_dist(D, target)] | [dist]")
|
||||
|
||||
if(tobeopened)
|
||||
switch(alert(src, "Do you want to open \the [tobeopened] for [target]?","Doorknob_v2a.exe","Yes","No"))
|
||||
if("Yes")
|
||||
var/nhref = "src=\ref[tobeopened];aiEnable=7"
|
||||
tobeopened.Topic(nhref, params2list(nhref), tobeopened, 1)
|
||||
to_chat(src, "\blue You've opened \the [tobeopened] for [target].")
|
||||
|
||||
if("No")
|
||||
to_chat(src, "\red You deny the request.")
|
||||
|
||||
else
|
||||
to_chat(src, "\red You've failed to open an airlock for [target]")
|
||||
|
||||
return
|
||||
|
||||
|
||||
/mob/living/silicon/ai/proc/check_unable(var/flags = 0)
|
||||
if(stat == DEAD)
|
||||
to_chat(usr, "<span class='warning'>You are dead!</span>")
|
||||
|
||||
return 1
|
||||
|
||||
if(lacks_power())
|
||||
to_chat(usr, "<span class='warning'>Power systems failure!</span>")
|
||||
|
||||
return 1
|
||||
|
||||
if((flags & AI_CHECK_WIRELESS) && src.control_disabled)
|
||||
to_chat(usr, "<span class='warning'>Wireless control is disabled!</span>")
|
||||
|
||||
return 1
|
||||
if((flags & AI_CHECK_RADIO) && src.aiRadio.disabledAi)
|
||||
to_chat(src, "<span class='warning'>System Error - Transceiver Disabled!</span>")
|
||||
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -1051,12 +1006,10 @@ var/list/ai_verbs_default = list(
|
||||
if(!mind)
|
||||
to_chat(user, "<span class='warning'>No intelligence patterns detected.</span>")//No more magical carding of empty cores, AI RETURN TO BODY!!!11
|
||||
|
||||
|
||||
return
|
||||
if (mind.special_role == "malfunction") //AI MALF!!
|
||||
to_chat(user, "<span class='boldannounce'>ERROR</span>: Remote transfer interface disabled.")//Do ho ho ho~
|
||||
|
||||
|
||||
return
|
||||
new /obj/structure/AIcore/deactivated(loc)//Spawns a deactivated terminal at AI location.
|
||||
aiRestorePowerRoutine = 0//So the AI initially has power.
|
||||
@@ -1064,10 +1017,8 @@ var/list/ai_verbs_default = list(
|
||||
aiRadio.disabledAi = 1 //No talking on the built-in radio for you either!
|
||||
loc = card//Throw AI into the card.
|
||||
to_chat(src, "You have been downloaded to a mobile storage device. Remote device connection severed.")
|
||||
|
||||
to_chat(user, "<span class='boldnotice'>Transfer successful</span>: [name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory.")
|
||||
|
||||
|
||||
// Pass lying down or getting up to our pet human, if we're in a rig.
|
||||
/mob/living/silicon/ai/lay_down()
|
||||
set name = "Rest"
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
msg += "*---------*</span>"
|
||||
|
||||
to_chat(user, msg)
|
||||
|
||||
user.showLaws(src)
|
||||
|
||||
|
||||
|
||||
@@ -117,7 +117,6 @@ var/datum/cameranet/cameranet = new()
|
||||
|
||||
// to_chat(world, "X1: [x1] - Y1: [y1] - X2: [x2] - Y2: [y2]")
|
||||
|
||||
|
||||
for(var/x = x1; x <= x2; x += CHUNK_SIZE)
|
||||
for(var/y = y1; y <= y2; y += CHUNK_SIZE)
|
||||
if(chunkGenerated(x, y, T.z))
|
||||
|
||||
@@ -102,7 +102,6 @@
|
||||
src.eyeobj.loc = src.loc
|
||||
else
|
||||
to_chat(src, "ERROR: Eyeobj not found. Creating new eye...")
|
||||
|
||||
src.eyeobj = new(src.loc)
|
||||
src.eyeobj.ai = src
|
||||
src.eyeobj.name = "[src.name] (AI Eye)" // Give it a name
|
||||
@@ -117,4 +116,3 @@
|
||||
return //won't work if dead
|
||||
acceleration = !acceleration
|
||||
to_chat(usr, "Camera acceleration has been toggled [acceleration ? "on" : "off"].")
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@ var/global/list/empty_playable_ai_cores = list()
|
||||
|
||||
if(ticker && ticker.mode && ticker.mode.name == "AI malfunction")
|
||||
to_chat(usr, "<span class='danger'>You cannot use this verb in malfunction. If you need to leave, please adminhelp.</span>")
|
||||
|
||||
return
|
||||
|
||||
// Guard against misclicks, this isn't the sort of thing we want happening accidentally
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
who = src
|
||||
to_chat(who, "<b>Obey these laws:</b>")
|
||||
|
||||
|
||||
src.laws_sanity_check()
|
||||
src.laws.show_laws(who)
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
if(malfhack)
|
||||
if(malfhack.aidisabled)
|
||||
to_chat(src, "<span class='danger'>ERROR: APC access disabled, hack attempt canceled.</span>")
|
||||
|
||||
malfhacking = 0
|
||||
malfhack = null
|
||||
|
||||
@@ -49,12 +48,10 @@
|
||||
|
||||
if(aiRestorePowerRoutine == 2)
|
||||
to_chat(src, "Alert cancelled. Power has been restored without our assistance.")
|
||||
|
||||
aiRestorePowerRoutine = 0
|
||||
clear_fullscreen("blind")
|
||||
else if(aiRestorePowerRoutine == 3)
|
||||
to_chat(src, "Alert cancelled. Power has been restored.")
|
||||
|
||||
aiRestorePowerRoutine = 0
|
||||
clear_fullscreen("blind")
|
||||
|
||||
@@ -73,35 +70,28 @@
|
||||
if(!aiRestorePowerRoutine)
|
||||
aiRestorePowerRoutine = 1
|
||||
to_chat(src, "<span class='danger'>You have lost power!</span>")
|
||||
|
||||
if(!is_special_character(src))
|
||||
set_zeroth_law("")
|
||||
|
||||
spawn(20)
|
||||
to_chat(src, "Backup battery online. Scanners, camera, and radio interface offline. Beginning fault-detection.")
|
||||
|
||||
sleep(50)
|
||||
my_area = get_area(src)
|
||||
T = get_turf(src)
|
||||
if(my_area && my_area.power_equip && !istype(T, /turf/space))
|
||||
to_chat(src, "Alert cancelled. Power has been restored without our assistance.")
|
||||
|
||||
aiRestorePowerRoutine = 0
|
||||
return
|
||||
to_chat(src, "Fault confirmed: missing external power. Shutting down main control system to save power.")
|
||||
|
||||
sleep(20)
|
||||
to_chat(src, "Emergency control system online. Verifying connection to power network.")
|
||||
|
||||
sleep(50)
|
||||
T = get_turf(src)
|
||||
if(istype(T, /turf/space))
|
||||
to_chat(src, "Unable to verify! No power connection detected!")
|
||||
|
||||
aiRestorePowerRoutine = 2
|
||||
return
|
||||
to_chat(src, "Connection verified. Searching for APC in power network.")
|
||||
|
||||
sleep(50)
|
||||
|
||||
my_area = get_area(src)
|
||||
@@ -122,14 +112,12 @@
|
||||
to_chat(src, "Unable to locate APC!")
|
||||
else
|
||||
to_chat(src, "Lost connection with the APC!")
|
||||
|
||||
aiRestorePowerRoutine = 2
|
||||
return
|
||||
|
||||
if(my_area.power_equip)
|
||||
if (!istype(T, /turf/space))
|
||||
to_chat(src, "Alert cancelled. Power has been restored without our assistance.")
|
||||
|
||||
aiRestorePowerRoutine = 0
|
||||
clear_fullscreen("blind")
|
||||
return
|
||||
@@ -143,16 +131,13 @@
|
||||
to_chat(src, "Power port upload access confirmed. Loading control program into APC power port software.")
|
||||
if(4)
|
||||
to_chat(src, "Transfer complete. Forcing APC to execute program.")
|
||||
|
||||
sleep(50)
|
||||
to_chat(src, "Receiving control information from APC.")
|
||||
|
||||
sleep(2)
|
||||
//bring up APC dialog
|
||||
aiRestorePowerRoutine = 3
|
||||
theAPC.attack_ai(src)
|
||||
to_chat(src, "Here are your current laws:")
|
||||
|
||||
src.show_laws() //WHY THE FUCK IS THIS HERE
|
||||
sleep(50)
|
||||
theAPC = null
|
||||
|
||||
@@ -31,7 +31,6 @@ var/const/VOX_PATH = "sound/vox_fem/"
|
||||
|
||||
if(announcing_vox > world.time)
|
||||
to_chat(src, "<span class='warning'>Please wait [round((announcing_vox - world.time) / 10)] seconds.</span>")
|
||||
|
||||
return
|
||||
|
||||
var/message = input(src, "WARNING: Misuse of this verb can result in you being job banned. More help is available in 'Announcement Help'", "Announcement", last_announcement) as text|null
|
||||
@@ -60,7 +59,6 @@ var/const/VOX_PATH = "sound/vox_fem/"
|
||||
|
||||
if(incorrect_words.len)
|
||||
to_chat(src, "<span class='warning'>These words are not available on the announcement system: [english_list(incorrect_words)].</span>")
|
||||
|
||||
return
|
||||
|
||||
announcing_vox = world.time + VOX_DELAY
|
||||
@@ -86,10 +84,8 @@ var/const/VOX_PATH = "sound/vox_fem/"
|
||||
var/turf/T = get_turf(M)
|
||||
if(T && T.z == z_level && !isdeaf(M))
|
||||
to_chat(M, voice)
|
||||
|
||||
else
|
||||
to_chat(only_listener, voice)
|
||||
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -99,6 +95,5 @@ var/const/VOX_PATH = "sound/vox_fem/"
|
||||
var/list/vox_files = flist(VOX_PATH)
|
||||
for(var/file in vox_files)
|
||||
// to_chat(src, "Downloading [file]")
|
||||
|
||||
var/sound/S = sound("[VOX_PATH][file]")
|
||||
src << browse_rsc(S)
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
if(tracking_entities)
|
||||
to_chat(src, "<span class='warning'>Internal camera is currently being accessed.</span>")
|
||||
|
||||
|
||||
/mob/living/silicon/proc/add_ion_law(var/law)
|
||||
laws_sanity_check()
|
||||
laws.add_ion_law(law)
|
||||
@@ -77,7 +76,6 @@
|
||||
/mob/living/silicon/proc/dostatelaws(var/method, var/prefix, var/datum/ai_laws/laws)
|
||||
if(stating_laws[prefix])
|
||||
to_chat(src, "<span class='notice'>[method]: Already stating laws using this communication method.</span>")
|
||||
|
||||
return
|
||||
|
||||
stating_laws[prefix] = 1
|
||||
@@ -91,7 +89,6 @@
|
||||
|
||||
if(!can_state)
|
||||
to_chat(src, "<span class='danger'>[method]: Unable to state laws. Communication method unavailable.</span>")
|
||||
|
||||
stating_laws[prefix] = 0
|
||||
|
||||
/mob/living/silicon/proc/statelaw(var/law)
|
||||
|
||||
@@ -3,5 +3,4 @@
|
||||
if ("help")
|
||||
to_chat(src, "ping, beep, buzz.")
|
||||
|
||||
|
||||
..(act, m_type, message)
|
||||
@@ -22,5 +22,4 @@
|
||||
msg += "*---------*</span>"
|
||||
|
||||
to_chat(user, msg)
|
||||
|
||||
*/
|
||||
@@ -10,7 +10,6 @@
|
||||
silence_time = null
|
||||
to_chat(src, "<font color=green>Communication circuit reinitialized. Speech and messaging functionality restored.</font>")
|
||||
|
||||
|
||||
if(cable)
|
||||
if(get_dist(src, cable) > 1)
|
||||
var/turf/T = get_turf_or_move(loc)
|
||||
|
||||
@@ -164,7 +164,6 @@
|
||||
|
||||
src.silence_time = world.timeofday + 120 * 10 // Silence for 2 minutes
|
||||
to_chat(src, "<font color=green><b>Communication circuit overload. Shutting down and reloading communication circuits - speech and messaging functionality will be unavailable until the reboot is complete.</b></font>")
|
||||
|
||||
if(prob(20))
|
||||
var/turf/T = get_turf_or_move(src.loc)
|
||||
for (var/mob/M in viewers(T))
|
||||
@@ -176,7 +175,6 @@
|
||||
src.master = null
|
||||
src.master_dna = null
|
||||
to_chat(src, "<font color=green>You feel unbound.</font>")
|
||||
|
||||
if(2)
|
||||
var/command
|
||||
if(severity == 1)
|
||||
@@ -185,11 +183,9 @@
|
||||
command = pick("Serve", "Kill", "Love", "Hate", "Disobey", "Devour", "Fool", "Enrage", "Entice", "Observe", "Judge", "Respect", "Disrespect", "Consume", "Educate", "Destroy", "Disgrace", "Amuse", "Entertain", "Ignite", "Glorify", "Memorialize", "Analyze")
|
||||
src.pai_law0 = "[command] your master."
|
||||
to_chat(src, "<font color=green>Pr1m3 d1r3c71v3 uPd473D.</font>")
|
||||
|
||||
if(3)
|
||||
to_chat(src, "<font color=green>You feel an electric surge run through your circuitry and become acutely aware at how lucky you are that you can still feel at all.</font>")
|
||||
|
||||
|
||||
/mob/living/silicon/pai/ex_act(severity)
|
||||
..()
|
||||
|
||||
@@ -229,12 +225,10 @@
|
||||
/mob/living/silicon/pai/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
|
||||
if (!ticker)
|
||||
to_chat(M, "You cannot attack people before the game has started.")
|
||||
|
||||
return
|
||||
|
||||
if (istype(src.loc, /turf) && istype(src.loc.loc, /area/start))
|
||||
to_chat(M, "You cannot attack someone in the spawn area.")
|
||||
|
||||
return
|
||||
|
||||
switch(M.a_intent)
|
||||
@@ -291,7 +285,6 @@
|
||||
nanomanager.update_uis(src)
|
||||
to_chat(usr, "<span class='notice'>You reset your record-viewing software.</span>")
|
||||
|
||||
|
||||
/mob/living/silicon/pai/cancel_camera()
|
||||
set category = "pAI Commands"
|
||||
set name = "Cancel Camera View"
|
||||
@@ -311,7 +304,6 @@
|
||||
|
||||
if(usr.stat == 2)
|
||||
to_chat(usr, "You can't change your camera network because you are dead!")
|
||||
|
||||
return
|
||||
|
||||
for (var/obj/machinery/camera/C in Cameras)
|
||||
@@ -323,7 +315,6 @@
|
||||
|
||||
src.network = input(usr, "Which network would you like to view?") as null|anything in cameralist
|
||||
to_chat(src, "\blue Switched to [src.network] camera network.")
|
||||
|
||||
//End of code by Mord_Sith
|
||||
*/
|
||||
|
||||
@@ -351,12 +342,10 @@
|
||||
|
||||
if(src.loc != card)
|
||||
to_chat(src, "\red You are already in your mobile form!")
|
||||
|
||||
return
|
||||
|
||||
if(world.time <= last_special)
|
||||
to_chat(src, "\red You must wait before folding your chassis out again!")
|
||||
|
||||
return
|
||||
|
||||
last_special = world.time + 200
|
||||
@@ -389,12 +378,10 @@
|
||||
|
||||
if(src.loc == card)
|
||||
to_chat(src, "\red You are already in your card form!")
|
||||
|
||||
return
|
||||
|
||||
if(world.time <= last_special)
|
||||
to_chat(src, "\red You must wait before returning to your card form!")
|
||||
|
||||
return
|
||||
|
||||
close_up()
|
||||
@@ -446,7 +433,6 @@
|
||||
icon_state = resting ? "[chassis]_rest" : "[chassis]"
|
||||
to_chat(src, "<span class='notice'>You are now [resting ? "resting" : "getting up"]</span>")
|
||||
|
||||
|
||||
canmove = !resting
|
||||
|
||||
//Overriding this will stop a number of headaches down the track.
|
||||
@@ -455,7 +441,6 @@
|
||||
var/obj/item/stack/nanopaste/N = W
|
||||
if (stat == DEAD)
|
||||
to_chat(user, "<span class='danger'>\The [src] is beyond help, at this point.</span>")
|
||||
|
||||
else if (getBruteLoss() || getFireLoss())
|
||||
adjustBruteLoss(-15)
|
||||
adjustFireLoss(-15)
|
||||
@@ -466,7 +451,6 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>All [src.name]'s systems are nominal.</span>")
|
||||
|
||||
|
||||
return
|
||||
else if(W.force)
|
||||
visible_message("<span class='danger'>[user.name] attacks [src] with [W]!</span>")
|
||||
@@ -529,7 +513,6 @@
|
||||
return
|
||||
if(istype(AM,/obj/item))
|
||||
to_chat(src, "<span class='warning'>You are far too small to pull anything!</span>")
|
||||
|
||||
return
|
||||
|
||||
/mob/living/silicon/pai/update_canmove()
|
||||
@@ -557,7 +540,6 @@
|
||||
|
||||
to_chat(user, msg)
|
||||
|
||||
|
||||
/mob/living/silicon/pai/bullet_act(var/obj/item/projectile/Proj)
|
||||
..(Proj)
|
||||
updatehealth()
|
||||
@@ -595,10 +577,8 @@
|
||||
get_scooped(H)
|
||||
else
|
||||
to_chat(src, "<span class='warning'>You need to stay in reaching distance to be picked up.</span>")
|
||||
|
||||
if("No")
|
||||
to_chat(src, "<span class='warning'>[H] decided not to pick you up.</span>")
|
||||
|
||||
else
|
||||
if(Adjacent(H))
|
||||
get_scooped(H)
|
||||
|
||||
@@ -18,14 +18,10 @@
|
||||
|
||||
|
||||
to_chat(F["name"], src.name)
|
||||
|
||||
to_chat(F["description"], src.description)
|
||||
|
||||
to_chat(F["role"], src.role)
|
||||
|
||||
to_chat(F["comments"], src.comments)
|
||||
|
||||
|
||||
F["version"] << 1
|
||||
|
||||
return 1
|
||||
|
||||
@@ -352,7 +352,6 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
if(player_old_enough_antag(O.client,ROLE_PAI))
|
||||
if(check_recruit(O))
|
||||
to_chat(O, "\blue <b>A pAI card is looking for personalities. (<a href='?src=\ref[O];jump=\ref[P]'>Teleport</a> | <a href='?src=\ref[src];signup=\ref[O]'>Sign Up</a>)</b>")
|
||||
|
||||
//question(O.client)
|
||||
proc/check_recruit(var/mob/dead/observer/O)
|
||||
if(jobban_isbanned(O, "pAI") || jobban_isbanned(O,"nonhumandept"))
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/mob/living/silicon/pai/say(var/msg)
|
||||
if(silence_time)
|
||||
to_chat(src, "<font color=green>Communication circuits remain uninitialized.</font>")
|
||||
|
||||
else
|
||||
..(msg)
|
||||
@@ -20,7 +20,6 @@ var/global/list/default_pai_software = list()
|
||||
if(pai_software_by_key[P.id])
|
||||
var/datum/pai_software/O = pai_software_by_key[P.id]
|
||||
to_chat(world, "<span class='warning'>pAI software module [P.name] has the same key as [O.name]!</span>")
|
||||
|
||||
r = 0
|
||||
continue
|
||||
pai_software_by_key[P.id] = P
|
||||
|
||||
@@ -57,7 +57,6 @@
|
||||
if(!M || !M.loc || count > 6)
|
||||
//For a runtime where M ends up in nullspace (similar to bluespace but less colourful)
|
||||
to_chat(src, "You are not being carried by anyone!")
|
||||
|
||||
return 0
|
||||
M = M.loc
|
||||
count++
|
||||
@@ -70,16 +69,12 @@
|
||||
v.show_message("<span class='notice'>[M] presses \his thumb against [P].</span>", 3, "<span class='notice'>[P] makes a sharp clicking sound as it extracts DNA material from [M].</span>", 2)
|
||||
var/datum/dna/dna = M.dna
|
||||
to_chat(P, "<font color = red><h3>[M]'s UE string : [dna.unique_enzymes]</h3></font>")
|
||||
|
||||
if(dna.unique_enzymes == P.master_dna)
|
||||
to_chat(P, "<b>DNA is a match to stored Master DNA.</b>")
|
||||
|
||||
else
|
||||
to_chat(P, "<b>DNA does not match stored Master DNA.</b>")
|
||||
|
||||
else
|
||||
to_chat(P, "[M] does not seem like \he is going to provide a DNA sample willingly.")
|
||||
|
||||
return 1
|
||||
|
||||
/datum/pai_software/radio_config
|
||||
@@ -508,10 +503,8 @@
|
||||
break
|
||||
if(T.loc)
|
||||
to_chat(AI, "<font color = red><b>Network Alert: Brute-force encryption crack in progress in [T.loc].</b></font>")
|
||||
|
||||
else
|
||||
to_chat(AI, "<font color = red><b>Network Alert: Brute-force encryption crack in progress. Unable to pinpoint location.</b></font>")
|
||||
|
||||
var/obj/machinery/door/D = cable.machine
|
||||
if(!istype(D))
|
||||
hack_aborted = 1
|
||||
@@ -710,7 +703,6 @@
|
||||
if(!held || !held.loc || count > 6)
|
||||
//For a runtime where M ends up in nullspace (similar to bluespace but less colourful)
|
||||
to_chat(src, "You are not being carried by anyone!")
|
||||
|
||||
return 0
|
||||
held = held.loc
|
||||
count++
|
||||
|
||||
@@ -185,13 +185,9 @@
|
||||
if(( (CLUMSY in user.mutations) || user.getBrainLoss() >= 60) && prob(50))
|
||||
user.visible_message("<span class='warning'>[user] has analyzed the floor's vitals!</span>", "<span class='warning'>You try to analyze the floor's vitals!</span>")
|
||||
to_chat(user, "<span class='notice'>Analyzing Results for The floor:\n\t Overall Status: Healthy</span>")
|
||||
|
||||
to_chat(user, "<span class='notice'>\t Damage Specifics: [0]-[0]-[0]-[0]</span>")
|
||||
|
||||
to_chat(user, "<span class='notice'>Key: Suffocation/Toxin/Burns/Brute</span>")
|
||||
|
||||
to_chat(user, "<span class='notice'>Body Temperature: ???</span>")
|
||||
|
||||
return
|
||||
|
||||
var/scan_type
|
||||
@@ -201,7 +197,6 @@
|
||||
scan_type = "prosthetics"
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You can't analyze non-robotic things!</span>")
|
||||
|
||||
return
|
||||
|
||||
user.visible_message("<span class='notice'>[user] has analyzed [M]'s components.</span>","<span class='notice'>You have analyzed [M]'s components.</span>")
|
||||
@@ -210,18 +205,13 @@
|
||||
var/BU = M.getFireLoss() > 50 ? "<b>[M.getFireLoss()]</b>" : M.getFireLoss()
|
||||
var/BR = M.getBruteLoss() > 50 ? "<b>[M.getBruteLoss()]</b>" : M.getBruteLoss()
|
||||
to_chat(user, "<span class='notice'>Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "fully disabled" : "[M.health]% functional"]</span>")
|
||||
|
||||
to_chat(user, "\t Key: <font color='#FFA500'>Electronics</font>/<font color='red'>Brute</font>")
|
||||
|
||||
to_chat(user, "\t Damage Specifics: <font color='#FFA500'>[BU]</font> - <font color='red'>[BR]</font>")
|
||||
|
||||
if(M.timeofdeath && M.stat == DEAD)
|
||||
to_chat(user, "<span class='notice'>Time of Disable: [M.timeofdeath]</span>")
|
||||
|
||||
var/mob/living/silicon/robot/H = M
|
||||
var/list/damaged = H.get_damaged_components(1,1,1)
|
||||
to_chat(user, "<span class='notice'>Localized Damage:</span>")
|
||||
|
||||
if(length(damaged)>0)
|
||||
for(var/datum/robot_component/org in damaged)
|
||||
user.show_message(text("<span class='notice'>\t []: [][] - [] - [] - []</span>", \
|
||||
@@ -233,20 +223,15 @@
|
||||
(org.powered) ? "Power ON" : "<font color='red'>Power OFF</font>"),1)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>\t Components are OK.</span>")
|
||||
|
||||
if(H.emagged && prob(5))
|
||||
to_chat(user, "<span class='warning'>\t ERROR: INTERNAL SYSTEMS COMPROMISED</span>")
|
||||
|
||||
|
||||
if("prosthetics")
|
||||
var/mob/living/carbon/human/H = M
|
||||
to_chat(user, "<span class='notice'>Analyzing Results for \the [H]:</span>")
|
||||
|
||||
to_chat(user, "Key: <font color='#FFA500'>Electronics</font>/<font color='red'>Brute</font>")
|
||||
|
||||
|
||||
to_chat(user, "<span class='notice'>External prosthetics:</span>")
|
||||
|
||||
var/organ_found
|
||||
if(H.internal_organs.len)
|
||||
for(var/obj/item/organ/external/E in H.organs)
|
||||
@@ -254,14 +239,10 @@
|
||||
continue
|
||||
organ_found = 1
|
||||
to_chat(user, "[E.name]: <font color='red'>[round(E.brute_dam)]</font> <font color='#FFA500'>[round(E.burn_dam)]</font>")
|
||||
|
||||
if(!organ_found)
|
||||
to_chat(user, "<span class='warning'>No prosthetics located.</span>")
|
||||
|
||||
to_chat(user, "<hr>")
|
||||
|
||||
to_chat(user, "<span class='notice'>Internal prosthetics:</span>")
|
||||
|
||||
organ_found = null
|
||||
if(H.internal_organs.len)
|
||||
for(var/obj/item/organ/internal/O in H.internal_organs)
|
||||
@@ -269,9 +250,7 @@
|
||||
continue
|
||||
organ_found = 1
|
||||
to_chat(user, "[capitalize(O.name)]: <font color='red'>[O.damage]</font>")
|
||||
|
||||
if(!organ_found)
|
||||
to_chat(user, "<span class='warning'>No prosthetics located.</span>")
|
||||
|
||||
|
||||
src.add_fingerprint(user)
|
||||
|
||||
@@ -109,12 +109,10 @@
|
||||
|
||||
if(istype(W, /obj/item/borg/upgrade/))
|
||||
to_chat(user, "\red The maintenance drone chassis not compatible with \the [W].")
|
||||
|
||||
return
|
||||
|
||||
else if (istype(W, /obj/item/weapon/crowbar))
|
||||
to_chat(user, "The machine is hermetically sealed. You can't open the case.")
|
||||
|
||||
return
|
||||
|
||||
else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
|
||||
@@ -123,19 +121,16 @@
|
||||
|
||||
if(!config.allow_drone_spawn || emagged || health < -35) //It's dead, Dave.
|
||||
to_chat(user, "\red The interface is fried, and a distressing burned smell wafts from the robot's interior. You're not rebooting this one.")
|
||||
|
||||
return
|
||||
|
||||
if(!allowed(usr))
|
||||
to_chat(user, "\red Access denied.")
|
||||
|
||||
return
|
||||
|
||||
var/delta = (world.time / 10) - last_reboot
|
||||
if(reboot_cooldown > delta)
|
||||
var/cooldown_time = round(reboot_cooldown - ((world.time / 10) - last_reboot), 1)
|
||||
to_chat(usr, "\red The reboot system is currently offline. Please wait another [cooldown_time] seconds.")
|
||||
|
||||
return
|
||||
|
||||
user.visible_message("\red \the [user] swipes \his ID card through \the [src], attempting to reboot it.", "\red You swipe your ID card through \the [src], attempting to reboot it.")
|
||||
@@ -159,7 +154,6 @@
|
||||
else
|
||||
to_chat(user, "\red Access denied.")
|
||||
|
||||
|
||||
return
|
||||
|
||||
..()
|
||||
@@ -167,7 +161,6 @@
|
||||
/mob/living/silicon/robot/drone/emag_act(user as mob)
|
||||
if(!client || stat == 2)
|
||||
to_chat(user, "\red There's not much point subverting this heap of junk.")
|
||||
|
||||
return
|
||||
|
||||
if(!ishuman(user))
|
||||
@@ -176,16 +169,12 @@
|
||||
|
||||
if(emagged)
|
||||
to_chat(src, "\red [user] attempts to load subversive software into you, but your hacked subroutined ignore the attempt.")
|
||||
|
||||
to_chat(user, "\red You attempt to subvert [src], but the sequencer has no effect.")
|
||||
|
||||
return
|
||||
|
||||
to_chat(user, "\red You swipe the sequencer across [src]'s interface and watch its eyes flicker.")
|
||||
|
||||
to_chat(src, "\red You feel a sudden burst of malware loaded into your execute-as-root buffer. Your tiny brain methodically parses, loads and executes the script.")
|
||||
|
||||
|
||||
message_admins("[key_name_admin(user)] emagged drone [key_name_admin(src)]. Laws overridden.")
|
||||
log_game("[key_name(user)] emagged drone [key_name(src)]. Laws overridden.")
|
||||
var/time = time2text(world.realtime,"hh:mm:ss")
|
||||
@@ -200,10 +189,8 @@
|
||||
set_zeroth_law("Only [H.real_name] and people he designates as being such are Syndicate Agents.")
|
||||
|
||||
to_chat(src, "<b>Obey these laws:</b>")
|
||||
|
||||
laws.show_laws(src)
|
||||
to_chat(src, "\red \b ALERT: [H.real_name] is your new master. Obey your new laws and his commands.")
|
||||
|
||||
return
|
||||
|
||||
//DRONE LIFE/DEATH
|
||||
@@ -243,10 +230,8 @@
|
||||
if(stat != 2)
|
||||
if(emagged)
|
||||
to_chat(src, "\red You feel something attempting to modify your programming, but your hacked subroutines are unaffected.")
|
||||
|
||||
else
|
||||
to_chat(src, "\red A reset-to-factory directive packet filters through your data connection, and you obediently modify your programming to suit it.")
|
||||
|
||||
full_law_reset()
|
||||
show_laws()
|
||||
|
||||
@@ -254,10 +239,8 @@
|
||||
if(stat != 2)
|
||||
if(emagged)
|
||||
to_chat(src, "\red You feel a system kill order percolate through your tiny brain, but it doesn't seem like a good idea to you.")
|
||||
|
||||
else
|
||||
to_chat(src, "\red You feel a system kill order percolate through your tiny brain, and you obediently destroy yourself.")
|
||||
|
||||
death()
|
||||
|
||||
/mob/living/silicon/robot/drone/proc/full_law_reset()
|
||||
@@ -296,21 +279,14 @@
|
||||
|
||||
lawupdate = 0
|
||||
to_chat(src, "<b>Systems rebooted</b>. Loading base pattern maintenance protocol... <b>loaded</b>.")
|
||||
|
||||
full_law_reset()
|
||||
to_chat(src, "<br><b>You are a maintenance drone, a tiny-brained robotic repair machine</b>.")
|
||||
|
||||
to_chat(src, "You have no individual will, no personality, and no drives or urges other than your laws.")
|
||||
|
||||
to_chat(src, "Use <b>;</b> to talk to other drones, and <b>say</b> to speak silently to your nearby fellows.")
|
||||
|
||||
to_chat(src, "Remember, you are <b>lawed against interference with the crew</b>. Also remember, <b>you DO NOT take orders from the AI.</b>")
|
||||
|
||||
to_chat(src, "<b>Don't invade their worksites, don't steal their resources, don't tell them about the changeling in the toilets.</b>")
|
||||
|
||||
to_chat(src, "<b>Make sure crew members do not notice you.</b>.")
|
||||
|
||||
|
||||
/*
|
||||
sprite["Default"] = "repairbot"
|
||||
sprite["Mk2 Mousedrone"] = "mk2"
|
||||
@@ -346,13 +322,11 @@
|
||||
var/obj/item/O = AM
|
||||
if(O.w_class > 2)
|
||||
to_chat(src, "<span class='warning'>You are too small to pull that.</span>")
|
||||
|
||||
return
|
||||
else
|
||||
..()
|
||||
else
|
||||
to_chat(src, "<span class='warning'>You are too small to pull that.</span>")
|
||||
|
||||
return
|
||||
|
||||
/mob/living/silicon/robot/drone/add_robot_verbs()
|
||||
|
||||
@@ -11,14 +11,12 @@
|
||||
return
|
||||
|
||||
to_chat(src, "\blue You configure your internal beacon, tagging yourself for delivery to '[tag]'.")
|
||||
|
||||
mail_destination = TAGGERLOCATIONS.Find(tag)
|
||||
|
||||
//Auto flush if we use this verb inside a disposal chute.
|
||||
var/obj/machinery/disposal/D = src.loc
|
||||
if(istype(D))
|
||||
to_chat(src, "\blue \The [D] acknowledges your signal.")
|
||||
|
||||
D.flush_count = D.flush_every_ticks
|
||||
|
||||
return
|
||||
@@ -31,12 +29,10 @@
|
||||
if (layer != TURF_LAYER+0.2)
|
||||
layer = TURF_LAYER+0.2
|
||||
to_chat(src, text("\blue You are now hiding."))
|
||||
|
||||
else
|
||||
layer = MOB_LAYER
|
||||
to_chat(src, text("\blue You have stopped hiding."))
|
||||
|
||||
|
||||
/mob/living/silicon/robot/drone/verb/light()
|
||||
set name = "Light On/Off"
|
||||
set desc = "Activate a low power omnidirectional LED. Toggled on or off."
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
|
||||
if(!allowed(user))
|
||||
to_chat(user, "\red Access denied.")
|
||||
|
||||
return
|
||||
|
||||
interact(user)
|
||||
@@ -56,7 +55,6 @@
|
||||
|
||||
if(!allowed(usr))
|
||||
to_chat(usr, "\red Access denied.")
|
||||
|
||||
return
|
||||
|
||||
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||
@@ -73,23 +71,19 @@
|
||||
drone_call_area = t_area
|
||||
to_chat(usr, "\blue You set the area selector to [drone_call_area].")
|
||||
|
||||
|
||||
else if (href_list["ping"])
|
||||
|
||||
to_chat(usr, "\blue You issue a maintenance request for all active drones, highlighting [drone_call_area].")
|
||||
|
||||
for(var/mob/living/silicon/robot/drone/D in world)
|
||||
if(D.client && D.stat == 0)
|
||||
to_chat(D, "-- Maintenance drone presence requested in: [drone_call_area].")
|
||||
|
||||
|
||||
else if (href_list["resync"])
|
||||
|
||||
var/mob/living/silicon/robot/drone/D = locate(href_list["resync"])
|
||||
|
||||
if(D.stat != 2)
|
||||
to_chat(usr, "\red You issue a law synchronization directive for the drone.")
|
||||
|
||||
D.law_resync()
|
||||
|
||||
else if (href_list["shutdown"])
|
||||
@@ -98,7 +92,6 @@
|
||||
|
||||
if(D.stat != 2)
|
||||
to_chat(usr, "\red You issue a kill command for the unfortunate drone.")
|
||||
|
||||
message_admins("[key_name_admin(usr)] issued kill order for drone [key_name_admin(D)] from control console.")
|
||||
log_game("[key_name(usr)] issued kill order for [key_name(src)] from control console.")
|
||||
D.shut_down()
|
||||
@@ -114,12 +107,10 @@
|
||||
|
||||
dronefab = fab
|
||||
to_chat(usr, "\blue Drone fabricator located.")
|
||||
|
||||
return
|
||||
|
||||
to_chat(usr, "\red Unable to locate drone fabricator.")
|
||||
|
||||
|
||||
else if (href_list["toggle_fab"])
|
||||
|
||||
if(!dronefab)
|
||||
@@ -128,11 +119,9 @@
|
||||
if(get_dist(src,dronefab) > 3)
|
||||
dronefab = null
|
||||
to_chat(usr, "\red Unable to locate drone fabricator.")
|
||||
|
||||
return
|
||||
|
||||
dronefab.produce_drones = !dronefab.produce_drones
|
||||
to_chat(usr, "\blue You [dronefab.produce_drones ? "enable" : "disable"] drone production in the nearby fabricator.")
|
||||
|
||||
|
||||
src.updateUsrDialog()
|
||||
@@ -73,7 +73,6 @@
|
||||
|
||||
if(!silent)
|
||||
to_chat(src.loc, "<span class='warning'>You drop \the [wrapped].</span>")
|
||||
|
||||
wrapped.forceMove(get_turf(src))
|
||||
wrapped = null
|
||||
|
||||
@@ -127,14 +126,12 @@
|
||||
//We can grab the item, finally.
|
||||
if(grab)
|
||||
to_chat(user, "You collect \the [I].")
|
||||
|
||||
I.forceMove(src)
|
||||
wrapped = I
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Your gripper cannot hold \the [target].</span>")
|
||||
|
||||
|
||||
else if(istype(target,/obj/machinery/power/apc))
|
||||
var/obj/machinery/power/apc/A = target
|
||||
if(A.opened)
|
||||
@@ -203,17 +200,14 @@
|
||||
|
||||
to_chat(D, "<span class='warning'>You begin decompiling the other drone.</span>")
|
||||
|
||||
|
||||
if(!do_after(D,50, target = target))
|
||||
to_chat(D, "<span class='warning'>You need to remain still while decompiling such a large object.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(!M || !D) return
|
||||
|
||||
to_chat(D, "<span class='warning'>You carefully and thoroughly decompile your downed fellow, storing as much of its resources as you can within yourself.</span>")
|
||||
|
||||
|
||||
qdel(M)
|
||||
new/obj/effect/decal/cleanable/blood/oil(get_turf(src))
|
||||
|
||||
@@ -286,10 +280,8 @@
|
||||
|
||||
if(grabbed_something)
|
||||
to_chat(user, "<span class='notice'>You deploy your decompiler and clear out the contents of \the [T].<span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Nothing on \the [T] is useful to you.</span>")
|
||||
|
||||
return
|
||||
|
||||
//PRETTIER TOOL LIST.
|
||||
@@ -297,7 +289,6 @@
|
||||
|
||||
if(weapon_lock)
|
||||
to_chat(src, "<span class='warning'>Weapon lock active, unable to use modules! Count:[weaponlock_time]</span>")
|
||||
|
||||
return
|
||||
|
||||
if(!module)
|
||||
|
||||
@@ -50,7 +50,6 @@
|
||||
if(produce_drones && drone_progress >= 100 && istype(user,/mob/dead) && config.allow_drone_spawn && count_drones() < config.max_maint_drones)
|
||||
to_chat(user, "<BR><B>A drone is prepared. Select 'Join As Drone' from the Ghost tab to spawn as a maintenance drone.</B>")
|
||||
|
||||
|
||||
/obj/machinery/drone_fabricator/proc/count_drones()
|
||||
var/drones = 0
|
||||
for(var/mob/living/silicon/robot/drone/D in world)
|
||||
@@ -87,7 +86,6 @@
|
||||
|
||||
if(!(config.allow_drone_spawn))
|
||||
to_chat(src, "\red That verb is not currently permitted.")
|
||||
|
||||
return
|
||||
|
||||
if (!src.stat)
|
||||
@@ -98,19 +96,16 @@
|
||||
|
||||
if(jobban_isbanned(src,"nonhumandept") || jobban_isbanned(src,"Drone"))
|
||||
to_chat(usr, "\red You are banned from playing drones and cannot spawn as a drone.")
|
||||
|
||||
return
|
||||
|
||||
if(!ticker || ticker.current_state < 3)
|
||||
to_chat(src, "<span class='warning'>You can't join as a drone before the game starts!</span>")
|
||||
|
||||
return
|
||||
|
||||
var/drone_age = 14 // 14 days to play as a drone
|
||||
var/player_age_check = check_client_age(usr.client, drone_age)
|
||||
if(player_age_check && config.use_age_restriction_for_antags)
|
||||
to_chat(usr, "<span class='warning'>This role is not yet available to you. You need to wait another [player_age_check] days.</span>")
|
||||
|
||||
return
|
||||
|
||||
var/deathtime = world.time - src.timeofdeath
|
||||
@@ -119,7 +114,6 @@
|
||||
var/mob/dead/observer/G = src
|
||||
if(G.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
|
||||
to_chat(usr, "\blue <B>Upon using the antagHUD you forfeited the ability to join the round.</B>")
|
||||
|
||||
return
|
||||
if(G.started_as_observer == 1)
|
||||
joinedasobserver = 1
|
||||
@@ -136,9 +130,7 @@
|
||||
|
||||
if (deathtime < 6000 && joinedasobserver == 0)
|
||||
to_chat(usr, "You have been dead for[pluralcheck] [deathtimeseconds] seconds.")
|
||||
|
||||
to_chat(usr, "<span class='warning'>You must wait 10 minutes to respawn as a drone!</span>")
|
||||
|
||||
return
|
||||
|
||||
for(var/obj/machinery/drone_fabricator/DF in world)
|
||||
@@ -147,7 +139,6 @@
|
||||
|
||||
if(DF.count_drones() >= config.max_maint_drones)
|
||||
to_chat(src, "\red There are too many active drones in the world for you to spawn.")
|
||||
|
||||
return
|
||||
|
||||
if(DF.drone_progress >= 100)
|
||||
@@ -155,4 +146,3 @@
|
||||
return
|
||||
|
||||
to_chat(src, "\red There are no available drone spawn points, sorry.")
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
if (src.client)
|
||||
if(client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "You cannot send IC messages (muted).")
|
||||
|
||||
return 0
|
||||
if (src.client.handle_spam_prevention(message,MUTE_IC))
|
||||
return 0
|
||||
@@ -32,13 +31,11 @@
|
||||
if(D.client && D.local_transmit)
|
||||
to_chat(D, "<b>[src]</b> transmits, \"[message]\"")
|
||||
|
||||
|
||||
for (var/mob/M in player_list)
|
||||
if (istype(M, /mob/new_player))
|
||||
continue
|
||||
else if(M.stat == 2 && M.client && M.client.prefs.toggles & CHAT_GHOSTEARS)
|
||||
to_chat(M, "<b>[src]</b> transmits, \"[message]\"")
|
||||
|
||||
return 1
|
||||
return ..(message, 0)
|
||||
|
||||
|
||||
@@ -145,7 +145,6 @@
|
||||
else
|
||||
to_chat(src, "You are not THE LAW, pal.")
|
||||
|
||||
|
||||
if("halt")
|
||||
if (istype(module,/obj/item/weapon/robot_module/security))
|
||||
message = "<B>[src]</B>'s speakers skreech, \"Halt! Security!\"."
|
||||
@@ -155,7 +154,6 @@
|
||||
else
|
||||
to_chat(src, "You are not security.")
|
||||
|
||||
|
||||
if ("flip")
|
||||
m_type = 1
|
||||
message = "<B>[src]</B> does a flip!"
|
||||
@@ -164,5 +162,4 @@
|
||||
if ("help")
|
||||
to_chat(src, "salute, bow-(none)/mob, clap, flap, aflap, twitch, twitch_s, nod, deathgasp, glare-(none)/mob, stare-(none)/mob, look, beep, ping, \nbuzz, law, halt")
|
||||
|
||||
|
||||
..(act, m_type, message)
|
||||
@@ -45,5 +45,4 @@
|
||||
msg += "\nIt is [pose]"
|
||||
|
||||
to_chat(user, msg)
|
||||
|
||||
user.showLaws(src)
|
||||
@@ -44,7 +44,6 @@
|
||||
return
|
||||
if(activated(O))
|
||||
to_chat(src, "Already activated")
|
||||
|
||||
return
|
||||
if (is_component_functioning("power cell") && cell)
|
||||
if(istype(O, /obj/item/borg))
|
||||
@@ -52,7 +51,6 @@
|
||||
if(B.powerneeded)
|
||||
if((cell.charge * 100 / cell.maxcharge) < B.powerneeded)
|
||||
to_chat(src, "Not enough power to activate [B.name]!")
|
||||
|
||||
return
|
||||
if(!module_state_1)
|
||||
O.mouse_opacity = initial(O.mouse_opacity)
|
||||
@@ -80,7 +78,6 @@
|
||||
sight_mode |= module_state_3:sight_mode
|
||||
else
|
||||
to_chat(src, "You need to disable a module first!")
|
||||
|
||||
src.update_icons()
|
||||
|
||||
/mob/living/silicon/robot/proc/uneq_active()
|
||||
|
||||
@@ -16,39 +16,30 @@
|
||||
if(connected_ai.stat || connected_ai.control_disabled)
|
||||
to_chat(src, "<b>AI signal lost, unable to sync laws.</b>")
|
||||
|
||||
|
||||
else
|
||||
lawsync()
|
||||
photosync()
|
||||
to_chat(src, "<b>Laws synced with AI, be sure to note any changes.</b>")
|
||||
|
||||
// TODO: Update to new antagonist system.
|
||||
if(mind && mind.special_role == "traitor" && mind.original == src)
|
||||
to_chat(src, "<b>Remember, your AI does NOT share or know about your law 0.")
|
||||
|
||||
else
|
||||
to_chat(src, "<b>No AI selected to sync laws with, disabling lawsync protocol.</b>")
|
||||
|
||||
lawupdate = 0
|
||||
|
||||
to_chat(who, "<b>Obey these laws:</b>")
|
||||
|
||||
laws.show_laws(who)
|
||||
// TODO: Update to new antagonist system.
|
||||
if (mind && (mind.special_role == "traitor" && mind.original == src) && connected_ai)
|
||||
to_chat(who, "<b>Remember, [connected_ai.name] is technically your master, but your objective comes first.</b>")
|
||||
|
||||
else if (connected_ai)
|
||||
to_chat(who, "<b>Remember, [connected_ai.name] is your master, other AIs can be ignored.</b>")
|
||||
|
||||
else if (emagged)
|
||||
to_chat(who, "<b>Remember, you are not required to listen to the AI.</b>")
|
||||
|
||||
else
|
||||
to_chat(who, "<b>Remember, you are not bound to any AI, you are not required to listen to them.</b>")
|
||||
|
||||
|
||||
|
||||
/mob/living/silicon/robot/lawsync()
|
||||
laws_sanity_check()
|
||||
var/datum/ai_laws/master = connected_ai && lawupdate ? connected_ai.laws : null
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
if(B.powerneeded)
|
||||
if((cell.charge * 100 / cell.maxcharge) < B.powerneeded)
|
||||
to_chat(src, "Deactivating [B.name] due to lack of power!")
|
||||
|
||||
uneq_module(B)
|
||||
if(cell.charge <= 0)
|
||||
uneq_all()
|
||||
@@ -105,17 +104,14 @@
|
||||
if(uneq_module(module_state_3))
|
||||
to_chat(src, "<span class='warning'>SYSTEM ERROR: Module 3 OFFLINE.</span>")
|
||||
|
||||
|
||||
if(health < 0)
|
||||
if(uneq_module(module_state_2))
|
||||
to_chat(src, "<span class='warning'>SYSTEM ERROR: Module 2 OFFLINE.</span>")
|
||||
|
||||
|
||||
if(health < -50)
|
||||
if(uneq_module(module_state_1))
|
||||
to_chat(src, "<span class='warning'>CRITICAL ERROR: All modules OFFLINE.</span>")
|
||||
|
||||
|
||||
if(paralysis || stunned || weakened)
|
||||
stat = UNCONSCIOUS
|
||||
|
||||
@@ -282,7 +278,6 @@
|
||||
if(weaponlock_time <= 0)
|
||||
if(src.client)
|
||||
to_chat(src, "\red <B>Weapon Lock Timed Out!")
|
||||
|
||||
weapon_lock = 0
|
||||
weaponlock_time = 120
|
||||
|
||||
|
||||
@@ -11,4 +11,3 @@
|
||||
synced = 1
|
||||
if(synced)
|
||||
to_chat(src, "<span class='notice'>Locally saved images synced with AI. Images were retained in local database in case of loss of connection with the AI.</span>")
|
||||
|
||||
|
||||
@@ -248,7 +248,6 @@ var/list/robot_verbs_default = list(
|
||||
mmi.update_icon()
|
||||
else
|
||||
to_chat(src, "<span class='boldannounce'>Oops! Something went very wrong, your MMI was unable to receive your mind. You have been ghosted. Please make a bug report so we can fix this bug.</span>")
|
||||
|
||||
ghostize()
|
||||
error("A borg has been destroyed, but its MMI lacked a brainmob, so the mind could not be transferred. Player: [ckey].")
|
||||
mmi = null
|
||||
@@ -268,7 +267,6 @@ var/list/robot_verbs_default = list(
|
||||
var/list/modules = list("Standard", "Engineering", "Medical", "Miner", "Janitor", "Service", "Security")
|
||||
if(security_level == (SEC_LEVEL_GAMMA || SEC_LEVEL_EPSILON) || crisis)
|
||||
to_chat(src, "\red Crisis mode active. Combat module available.")
|
||||
|
||||
modules+="Combat"
|
||||
if(ticker && ticker.mode && ticker.mode.name == "nations")
|
||||
var/datum/game_mode/nations/N = ticker.mode
|
||||
@@ -421,7 +419,6 @@ var/list/robot_verbs_default = list(
|
||||
if(!is_component_functioning("diagnosis unit"))
|
||||
to_chat(src, "\red Your self-diagnosis component isn't functioning.")
|
||||
|
||||
|
||||
var/dat = self_diagnosis()
|
||||
src << browse(dat, "window=robotdiagnosis")
|
||||
|
||||
@@ -446,12 +443,10 @@ var/list/robot_verbs_default = list(
|
||||
if(C.toggled)
|
||||
C.toggled = 0
|
||||
to_chat(src, "\red You disable [C.name].")
|
||||
|
||||
else
|
||||
C.toggled = 1
|
||||
to_chat(src, "\red You enable [C.name].")
|
||||
|
||||
|
||||
/mob/living/silicon/robot/proc/sensor_mode()
|
||||
set name = "Set Sensor Augmentation"
|
||||
set desc = "Augment visual feed with internal sensor overlays."
|
||||
@@ -559,7 +554,6 @@ var/list/robot_verbs_default = list(
|
||||
if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
|
||||
if(prob(20))
|
||||
to_chat(usr, "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>")
|
||||
|
||||
now_pushing = 0
|
||||
return
|
||||
if(!(tmob.status_flags & CANPUSH))
|
||||
@@ -603,7 +597,6 @@ var/list/robot_verbs_default = list(
|
||||
|
||||
to_chat(usr, "\blue You install the [W.name].")
|
||||
|
||||
|
||||
return
|
||||
|
||||
if (istype(W, /obj/item/weapon/weldingtool) && user.a_intent == I_HELP)
|
||||
@@ -611,7 +604,6 @@ var/list/robot_verbs_default = list(
|
||||
return
|
||||
if (!getBruteLoss())
|
||||
to_chat(user, "<span class='notice'>Nothing to fix!</span>")
|
||||
|
||||
return
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
@@ -623,14 +615,12 @@ var/list/robot_verbs_default = list(
|
||||
user.visible_message("<span class='alert'>\The [user] patches some dents on \the [src] with \the [WT].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Need more welding fuel!</span>")
|
||||
|
||||
return
|
||||
|
||||
|
||||
else if(istype(W, /obj/item/stack/cable_coil) && user.a_intent == I_HELP && (wiresexposed || istype(src,/mob/living/silicon/robot/drone)))
|
||||
if (!getFireLoss())
|
||||
to_chat(user, "<span class='notice'>Nothing to fix!</span>")
|
||||
|
||||
return
|
||||
var/obj/item/stack/cable_coil/coil = W
|
||||
adjustFireLoss(-30)
|
||||
@@ -643,21 +633,17 @@ var/list/robot_verbs_default = list(
|
||||
if(opened)
|
||||
if(cell)
|
||||
to_chat(user, "You close the cover.")
|
||||
|
||||
opened = 0
|
||||
update_icons()
|
||||
else if(wiresexposed && wires.IsAllCut())
|
||||
//Cell is out, wires are exposed, remove MMI, produce damaged chassis, baleet original mob.
|
||||
if(!mmi)
|
||||
to_chat(user, "\The [src] has no brain to remove.")
|
||||
|
||||
return
|
||||
|
||||
to_chat(user, "You jam the crowbar into the robot and begin levering [mmi].")
|
||||
|
||||
if(do_after(user,3 SECONDS, target = src))
|
||||
to_chat(user, "You damage some parts of the chassis, but eventually manage to rip out [mmi]!")
|
||||
|
||||
var/obj/item/robot_parts/robot_suit/C = new/obj/item/robot_parts/robot_suit(loc)
|
||||
C.l_leg = new/obj/item/robot_parts/l_leg(C)
|
||||
C.r_leg = new/obj/item/robot_parts/r_leg(C)
|
||||
@@ -684,7 +670,6 @@ var/list/robot_verbs_default = list(
|
||||
var/datum/robot_component/C = components[remove]
|
||||
var/obj/item/robot_parts/robot_component/I = C.wrapped
|
||||
to_chat(user, "You remove \the [I].")
|
||||
|
||||
if(istype(I))
|
||||
I.brute = C.brute_damage
|
||||
I.burn = C.electronics_damage
|
||||
@@ -698,10 +683,8 @@ var/list/robot_verbs_default = list(
|
||||
else
|
||||
if(locked)
|
||||
to_chat(user, "The cover is locked and cannot be opened.")
|
||||
|
||||
else
|
||||
to_chat(user, "You open the cover.")
|
||||
|
||||
opened = 1
|
||||
update_icons()
|
||||
|
||||
@@ -709,17 +692,14 @@ var/list/robot_verbs_default = list(
|
||||
var/datum/robot_component/C = components["power cell"]
|
||||
if(wiresexposed)
|
||||
to_chat(user, "Close the panel first.")
|
||||
|
||||
else if(cell)
|
||||
to_chat(user, "There is a power cell already installed.")
|
||||
|
||||
else
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
cell = W
|
||||
to_chat(user, "You insert the power cell.")
|
||||
|
||||
|
||||
C.installed = 1
|
||||
C.wrapped = W
|
||||
C.install()
|
||||
@@ -734,11 +714,9 @@ var/list/robot_verbs_default = list(
|
||||
else
|
||||
to_chat(user, "You can't reach the wiring.")
|
||||
|
||||
|
||||
else if(istype(W, /obj/item/weapon/screwdriver) && opened && !cell) // haxing
|
||||
wiresexposed = !wiresexposed
|
||||
to_chat(user, "The wires have been [wiresexposed ? "exposed" : "unexposed"]")
|
||||
|
||||
update_icons()
|
||||
|
||||
else if(istype(W, /obj/item/weapon/screwdriver) && opened && cell) // radio
|
||||
@@ -746,7 +724,6 @@ var/list/robot_verbs_default = list(
|
||||
radio.attackby(W,user)//Push it to the radio to let it handle everything
|
||||
else
|
||||
to_chat(user, "Unable to locate a radio.")
|
||||
|
||||
update_icons()
|
||||
|
||||
else if(istype(W, /obj/item/device/encryptionkey/) && opened)
|
||||
@@ -755,46 +732,36 @@ var/list/robot_verbs_default = list(
|
||||
else
|
||||
to_chat(user, "Unable to locate a radio.")
|
||||
|
||||
|
||||
else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card
|
||||
if(emagged)//still allow them to open the cover
|
||||
to_chat(user, "The interface seems slightly damaged")
|
||||
|
||||
if(opened)
|
||||
to_chat(user, "You must close the cover to swipe an ID card.")
|
||||
|
||||
else
|
||||
if(allowed(usr))
|
||||
locked = !locked
|
||||
to_chat(user, "You [ locked ? "lock" : "unlock"] [src]'s interface.")
|
||||
|
||||
update_icons()
|
||||
else
|
||||
to_chat(user, "\red Access denied.")
|
||||
|
||||
|
||||
else if(istype(W, /obj/item/borg/upgrade/))
|
||||
var/obj/item/borg/upgrade/U = W
|
||||
if(!opened)
|
||||
to_chat(user, "<span class='warning'>You must access the borgs internals!</span>")
|
||||
|
||||
else if(!src.module && U.require_module)
|
||||
to_chat(user, "<span class='warning'>The borg must choose a module before it can be upgraded!</span>")
|
||||
|
||||
else if(U.locked)
|
||||
to_chat(user, "<span class='warning'>The upgrade is locked and cannot be used yet!</span>")
|
||||
|
||||
else
|
||||
if(!user.drop_item())
|
||||
return
|
||||
if(U.action(src))
|
||||
to_chat(user, "<span class='notice'>You apply the upgrade to [src].</span>")
|
||||
|
||||
U.forceMove(src)
|
||||
else
|
||||
to_chat(user, "<span class='danger'>Upgrade error.</span>")
|
||||
|
||||
|
||||
else
|
||||
spark_system.start()
|
||||
return ..()
|
||||
@@ -806,18 +773,15 @@ var/list/robot_verbs_default = list(
|
||||
if(!opened)//Cover is closed
|
||||
if(locked)
|
||||
to_chat(user, "You emag the cover lock.")
|
||||
|
||||
locked = 0
|
||||
else
|
||||
to_chat(user, "The cover is already unlocked.")
|
||||
|
||||
return
|
||||
|
||||
if(opened)//Cover is open
|
||||
if(emagged) return//Prevents the X has hit Y with Z message also you cant emag them twice
|
||||
if(wiresexposed)
|
||||
to_chat(user, "You must close the panel first")
|
||||
|
||||
return
|
||||
else
|
||||
sleep(6)
|
||||
@@ -826,7 +790,6 @@ var/list/robot_verbs_default = list(
|
||||
src.hud_used.update_robot_modules_display() //Shows/hides the emag item if the inventory screen is already open.
|
||||
disconnect_from_ai()
|
||||
to_chat(user, "You emag [src]'s interface.")
|
||||
|
||||
// message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.")
|
||||
log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.")
|
||||
clear_supplied_laws()
|
||||
@@ -836,30 +799,21 @@ var/list/robot_verbs_default = list(
|
||||
lawchanges.Add("[time] <B>:</B> [M.name]([M.key]) emagged [name]([key])")
|
||||
set_zeroth_law("Only [M.real_name] and people he designates as being such are Syndicate Agents.")
|
||||
to_chat(src, "\red ALERT: Foreign software detected.")
|
||||
|
||||
sleep(5)
|
||||
to_chat(src, "\red Initiating diagnostics...")
|
||||
|
||||
sleep(20)
|
||||
to_chat(src, "\red SynBorg v1.7 loaded.")
|
||||
|
||||
sleep(5)
|
||||
to_chat(src, "\red LAW SYNCHRONISATION ERROR")
|
||||
|
||||
sleep(5)
|
||||
to_chat(src, "\red Would you like to send a report to NanoTraSoft? Y/N")
|
||||
|
||||
sleep(10)
|
||||
to_chat(src, "\red > N")
|
||||
|
||||
sleep(20)
|
||||
to_chat(src, "\red ERRORERRORERROR")
|
||||
|
||||
to_chat(src, "<b>Obey these laws:</b>")
|
||||
|
||||
laws.show_laws(src)
|
||||
to_chat(src, "\red \b ALERT: [M.real_name] is your new master. Obey your new laws and his commands.")
|
||||
|
||||
if(src.module && istype(src.module, /obj/item/weapon/robot_module/miner))
|
||||
for(var/obj/item/weapon/pickaxe/drill/cyborg/D in src.module.modules)
|
||||
qdel(D)
|
||||
@@ -885,16 +839,13 @@ var/list/robot_verbs_default = list(
|
||||
update_icons()
|
||||
to_chat(usr, "You unlock your cover.")
|
||||
|
||||
|
||||
/mob/living/silicon/robot/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
|
||||
if (!ticker)
|
||||
to_chat(M, "You cannot attack people before the game has started.")
|
||||
|
||||
return
|
||||
|
||||
if (istype(loc, /turf) && istype(loc.loc, /area/start))
|
||||
to_chat(M, "No attacking people at spawn, you jackass.")
|
||||
|
||||
return
|
||||
|
||||
switch(M.a_intent)
|
||||
@@ -997,7 +948,6 @@ var/list/robot_verbs_default = list(
|
||||
cell.add_fingerprint(user)
|
||||
user.put_in_active_hand(cell)
|
||||
to_chat(user, "You remove \the [cell].")
|
||||
|
||||
cell = null
|
||||
update_icons()
|
||||
diag_hud_set_borgcell()
|
||||
@@ -1083,7 +1033,6 @@ var/list/robot_verbs_default = list(
|
||||
/mob/living/silicon/robot/proc/installed_modules()
|
||||
if(weapon_lock)
|
||||
to_chat(src, "\red Weapon lock active, unable to use modules! Count:[weaponlock_time]")
|
||||
|
||||
return
|
||||
|
||||
if(!module)
|
||||
@@ -1171,10 +1120,8 @@ var/list/robot_verbs_default = list(
|
||||
contents -= O
|
||||
else
|
||||
to_chat(src, "Module isn't activated.")
|
||||
|
||||
else
|
||||
to_chat(src, "Module isn't activated")
|
||||
|
||||
installed_modules()
|
||||
return 1
|
||||
|
||||
@@ -1186,13 +1133,11 @@ var/list/robot_verbs_default = list(
|
||||
/mob/living/silicon/robot/proc/control_headlamp()
|
||||
if(stat || lamp_recharging)
|
||||
to_chat(src, "<span class='danger'>This function is currently offline.</span>")
|
||||
|
||||
return
|
||||
|
||||
//Some sort of magical "modulo" thing which somehow increments lamp power by 2, until it hits the max and resets to 0.
|
||||
lamp_intensity = (lamp_intensity+2) % (lamp_max+2)
|
||||
to_chat(src, "[lamp_intensity ? "Headlamp power set to Level [lamp_intensity/2]" : "Headlamp disabled."]")
|
||||
|
||||
update_headlamp()
|
||||
|
||||
/mob/living/silicon/robot/proc/update_headlamp(var/turn_off = 0, var/cooldown = 100)
|
||||
@@ -1200,7 +1145,6 @@ var/list/robot_verbs_default = list(
|
||||
|
||||
if(lamp_intensity && (turn_off || stat))
|
||||
to_chat(src, "<span class='danger'>Your headlamp has been deactivated.</span>")
|
||||
|
||||
lamp_intensity = 0
|
||||
lamp_recharging = 1
|
||||
spawn(cooldown) //10 seconds by default, if the source of the deactivation does not keep stat that long.
|
||||
@@ -1257,7 +1201,6 @@ var/list/robot_verbs_default = list(
|
||||
cleaned_human.update_inv_shoes(0,0)
|
||||
cleaned_human.clean_blood()
|
||||
to_chat(cleaned_human, "<span class='danger'>[src] cleans your face!</span>")
|
||||
|
||||
return
|
||||
#undef BORG_CAMERA_BUFFER
|
||||
|
||||
@@ -1296,7 +1239,6 @@ var/list/robot_verbs_default = list(
|
||||
if(R)
|
||||
R.UnlinkSelf()
|
||||
to_chat(R, "Buffers flushed and reset. Camera system shutdown. All systems operational.")
|
||||
|
||||
src.verbs -= /mob/living/silicon/robot/proc/ResetSecurityCodes
|
||||
|
||||
/mob/living/silicon/robot/mode()
|
||||
@@ -1341,7 +1283,6 @@ var/list/robot_verbs_default = list(
|
||||
lockcharge = null
|
||||
else
|
||||
to_chat(src, "Something is badly wrong with the sprite selection. Harass a coder.")
|
||||
|
||||
icon_state = module_sprites[1]
|
||||
lockcharge = null
|
||||
return
|
||||
@@ -1359,21 +1300,17 @@ var/list/robot_verbs_default = list(
|
||||
else
|
||||
to_chat(src, "Your icon has been set. You now require a module reset to change it.")
|
||||
|
||||
|
||||
/mob/living/silicon/robot/proc/notify_ai(var/notifytype, var/oldname, var/newname)
|
||||
if(!connected_ai)
|
||||
return
|
||||
switch(notifytype)
|
||||
if(1) //New Cyborg
|
||||
to_chat(connected_ai, "<br><br><span class='notice'>NOTICE - New cyborg connection detected: <a href='byond://?src=\ref[connected_ai];track2=\ref[connected_ai];track=\ref[src]'>[name]</a></span><br>")
|
||||
|
||||
if(2) //New Module
|
||||
to_chat(connected_ai, "<br><br><span class='notice'>NOTICE - Cyborg module change detected: [name] has loaded the [designation] module.</span><br>")
|
||||
|
||||
if(3) //New Name
|
||||
to_chat(connected_ai, "<br><br><span class='notice'>NOTICE - Cyborg reclassification detected: [oldname] is now designated as [newname].</span><br>")
|
||||
|
||||
|
||||
/mob/living/silicon/robot/proc/disconnect_from_ai()
|
||||
if(connected_ai)
|
||||
sync() // One last sync attempt
|
||||
@@ -1426,7 +1363,6 @@ var/list/robot_verbs_default = list(
|
||||
if(isnull(ckey) && !searching_for_ckey)
|
||||
searching_for_ckey = 1
|
||||
to_chat(user, "<span class='notice'>Now checking for possible borgs.</span>")
|
||||
|
||||
var/list/borg_candidates = pollCandidates("Do you want to play as a Nanotrasen Combat borg?")
|
||||
if(borg_candidates.len > 0 && isnull(ckey))
|
||||
searching_for_ckey = 0
|
||||
@@ -1439,11 +1375,9 @@ var/list/robot_verbs_default = list(
|
||||
else
|
||||
searching_for_ckey = 0
|
||||
to_chat(user, "<span class='notice'>Unable to connect to Central Command. Please wait and try again later.</span>")
|
||||
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] is already checking for possible borgs.</span>")
|
||||
|
||||
return
|
||||
|
||||
/mob/living/silicon/robot/syndicate
|
||||
@@ -1478,7 +1412,6 @@ var/list/robot_verbs_default = list(
|
||||
if(playstyle_string)
|
||||
to_chat(src, playstyle_string)
|
||||
|
||||
|
||||
playsound(loc, 'sound/mecha/nominalsyndi.ogg', 75, 0)
|
||||
|
||||
/mob/living/silicon/robot/syndicate/medical
|
||||
|
||||
@@ -9,9 +9,7 @@
|
||||
var/mob/dead/observer/ghost = get_ghost()
|
||||
if(ghost)
|
||||
to_chat(ghost, "<span class='ghostalert'>Your cyborg shell has been repaired, re-enter if you want to continue!</span> (Verbs -> Ghost -> Re-enter corpse)")
|
||||
|
||||
to_chat(ghost, sound('sound/effects/genetics.ogg'))
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -93,13 +91,11 @@
|
||||
if(cell.charge <= 0)
|
||||
cell.charge = 0
|
||||
to_chat(src, "\red Your shield has overloaded!")
|
||||
|
||||
else
|
||||
brute -= absorb_brute
|
||||
burn -= absorb_burn
|
||||
to_chat(src, "\red Your shield absorbs some of the impact!")
|
||||
|
||||
|
||||
var/datum/robot_component/armour/A = get_armour()
|
||||
if(A)
|
||||
A.take_damage(brute,burn,sharp,edge)
|
||||
@@ -146,13 +142,11 @@
|
||||
if(cell.charge <= 0)
|
||||
cell.charge = 0
|
||||
to_chat(src, "\red Your shield has overloaded!")
|
||||
|
||||
else
|
||||
brute -= absorb_brute
|
||||
burn -= absorb_burn
|
||||
to_chat(src, "\red Your shield absorbs some of the impact!")
|
||||
|
||||
|
||||
var/datum/robot_component/armour/A = get_armour()
|
||||
if(A)
|
||||
A.take_damage(brute,burn,sharp)
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
else
|
||||
mode = 1
|
||||
to_chat(user, "Changed printing mode to '[mode == 2 ? "Rename Paper" : "Write Paper"]'")
|
||||
|
||||
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
|
||||
|
||||
return
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
if(message_mode)
|
||||
if(!is_component_functioning("radio"))
|
||||
to_chat(src, "<span class='warning'>Your radio isn't functional at this time.</span>")
|
||||
|
||||
return 0
|
||||
if(message_mode == "general")
|
||||
message_mode = null
|
||||
@@ -23,7 +22,6 @@
|
||||
else if(message_mode)
|
||||
if (aiRadio.disabledAi || aiRestorePowerRoutine || stat)
|
||||
to_chat(src, "<span class='danger'>System Error - Transceiver Disabled.</span>")
|
||||
|
||||
return 0
|
||||
if(message_mode == "general")
|
||||
message_mode = null
|
||||
@@ -86,14 +84,12 @@
|
||||
rendered_b = "<span class='game say'><span class='name'>[voice_name]</span> [speaking.format_message(message_stars, verb)]</span>"
|
||||
to_chat(src, "<i><span class='game say'>Holopad transmitted, <span class='name'>[real_name]</span> [speaking.format_message(message, verb)]</span></i>")//The AI can "hear" its own message.
|
||||
|
||||
|
||||
else
|
||||
rendered_a = "<span class='game say'><span class='name'>[name]</span> [verb], <span class='message'>\"[message]\"</span></span>"
|
||||
rendered_b = "<span class='game say'><span class='name'>[voice_name]</span> [verb], <span class='message'>\"[message_stars]\"</span></span>"
|
||||
to_chat(src, "<i><span class='game say'>Holopad transmitted, <span class='name'>[real_name]</span> [verb], <span class='message'><span class='body'>\"[message]\"</span></span></span></i>")//The AI can "hear" its own message.
|
||||
|
||||
|
||||
|
||||
for(var/mob/M in hearers(T.loc))//The location is the object, default distance.
|
||||
if(M.say_understands(src))//If they understand AI speak. Humans and the like will be able to.
|
||||
M.show_message(rendered_a, 2)
|
||||
@@ -103,7 +99,6 @@
|
||||
This is another way of saying that we won't bother dealing with them.*/
|
||||
else
|
||||
to_chat(src, "No holopad connected.")
|
||||
|
||||
return
|
||||
return 1
|
||||
|
||||
@@ -121,12 +116,10 @@
|
||||
var/rendered = "<span class='game say'><span class='name'>[name]</span> <span class='message'>[message]</span></span>"
|
||||
to_chat(src, "<i><span class='game say'>Holopad action relayed, <span class='name'>[real_name]</span> <span class='message'>[message]</span></span></i>")
|
||||
|
||||
|
||||
for(var/mob/M in viewers(T.loc))
|
||||
M.show_message(rendered, 2)
|
||||
else //This shouldn't occur, but better safe then sorry.
|
||||
to_chat(src, "No holopad connected.")
|
||||
|
||||
return
|
||||
return 1
|
||||
|
||||
|
||||
@@ -75,9 +75,7 @@
|
||||
Stun(3)
|
||||
flash_eyes(affect_silicon = 1)
|
||||
to_chat(src, "\red <B>*BZZZT*</B>")
|
||||
|
||||
to_chat(src, "\red Warning: Electromagnetic pulse detected.")
|
||||
|
||||
..()
|
||||
|
||||
|
||||
@@ -87,7 +85,6 @@
|
||||
/mob/living/silicon/can_inject(var/mob/user, var/error_msg)
|
||||
if(error_msg)
|
||||
to_chat(user, "<span class='alert'>Their outer shell is too tough.</span>")
|
||||
|
||||
return 0
|
||||
|
||||
/mob/living/silicon/IsAdvancedToolUser()
|
||||
@@ -283,19 +280,15 @@
|
||||
if ("Security")
|
||||
add_sec_hud()
|
||||
to_chat(src, "<span class='notice'>Security records overlay enabled.</span>")
|
||||
|
||||
if ("Medical")
|
||||
add_med_hud()
|
||||
to_chat(src, "<span class='notice'>Life signs monitor overlay enabled.</span>")
|
||||
|
||||
if ("Diagnostic")
|
||||
add_diag_hud()
|
||||
to_chat(src, "<span class='notice'>Robotics diagnostic overlay enabled.</span>")
|
||||
|
||||
if ("Disable")
|
||||
to_chat(src, "Sensor augmentations disabled.")
|
||||
|
||||
|
||||
/mob/living/silicon/proc/receive_alarm(var/datum/alarm_handler/alarm_handler, var/datum/alarm/alarm, was_raised)
|
||||
if(!next_alarm_notice)
|
||||
next_alarm_notice = world.time + SecondsToTicks(10)
|
||||
@@ -325,7 +318,6 @@
|
||||
if(!reported)
|
||||
reported = 1
|
||||
to_chat(src, "<span class='warning'>--- [AH.category] Detected ---</span>")
|
||||
|
||||
raised_alarm(A)
|
||||
|
||||
for(var/datum/alarm_handler/AH in queued_alarms)
|
||||
@@ -336,14 +328,11 @@
|
||||
if(!reported)
|
||||
reported = 1
|
||||
to_chat(src, "<span class='notice'>--- [AH.category] Cleared ---</span>")
|
||||
|
||||
to_chat(src, "\The [A.alarm_name()].")
|
||||
|
||||
|
||||
if(alarm_raised)
|
||||
to_chat(src, "<A HREF=?src=\ref[src];showalerts=1>\[Show Alerts\]</A>")
|
||||
|
||||
|
||||
for(var/datum/alarm_handler/AH in queued_alarms)
|
||||
var/list/alarms = queued_alarms[AH]
|
||||
alarms.Cut()
|
||||
@@ -351,14 +340,12 @@
|
||||
/mob/living/silicon/proc/raised_alarm(var/datum/alarm/A)
|
||||
to_chat(src, "[A.alarm_name()]!")
|
||||
|
||||
|
||||
/mob/living/silicon/ai/raised_alarm(var/datum/alarm/A)
|
||||
var/cameratext = ""
|
||||
for(var/obj/machinery/camera/C in A.cameras())
|
||||
cameratext += "[(cameratext == "")? "" : "|"]<A HREF=?src=\ref[src];switchcamera=\ref[C]>[C.c_tag]</A>"
|
||||
to_chat(src, "[A.alarm_name()]! ([(cameratext)? cameratext : "No Camera"])")
|
||||
|
||||
|
||||
/mob/living/silicon/adjustToxLoss(var/amount)
|
||||
return
|
||||
|
||||
|
||||
@@ -46,7 +46,6 @@
|
||||
M.apply_damage((round(feral/10,1)*(max((round(strength/20,1)),1)))+toxic, TOX) // Bee venom based on how angry I am and how many there are of me!
|
||||
to_chat(M, "\red You have been stung!")
|
||||
|
||||
|
||||
//if we're chasing someone, get a little bit angry
|
||||
if(target_mob && prob(10))
|
||||
feral++
|
||||
|
||||
@@ -178,7 +178,6 @@
|
||||
locked = 0
|
||||
emagged = 1
|
||||
to_chat(user, "<span class='notice'>You bypass [src]'s controls.</span>")
|
||||
|
||||
return
|
||||
if(!locked && open) //Bot panel is unlocked by ID or emag, and the panel is screwed open. Ready for emagging.
|
||||
emagged = 2
|
||||
@@ -187,27 +186,22 @@
|
||||
bot_reset()
|
||||
turn_on() //The bot automatically turns on when emagged, unless recently hit with EMP.
|
||||
to_chat(src, "<span class='userdanger'>(#$*#$^^( OVERRIDE DETECTED</span>")
|
||||
|
||||
show_laws()
|
||||
add_logs(user, src, "emagged")
|
||||
return
|
||||
else //Bot is unlocked, but the maint panel has not been opened with a screwdriver yet.
|
||||
to_chat(user, "<span class='warning'>You need to open maintenance panel first!</span>")
|
||||
|
||||
|
||||
/mob/living/simple_animal/bot/examine(mob/user)
|
||||
..()
|
||||
if(health < maxHealth)
|
||||
if(health > maxHealth/3)
|
||||
to_chat(user, "[src]'s parts look loose.")
|
||||
|
||||
else
|
||||
to_chat(user, "[src]'s parts look very loose!")
|
||||
|
||||
else
|
||||
to_chat(user, "[src] is in pristine condition.")
|
||||
|
||||
|
||||
/mob/living/simple_animal/bot/adjustBruteLoss(amount)
|
||||
. = ..()
|
||||
|
||||
@@ -270,7 +264,6 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src]'s interface is not responding!</span>")
|
||||
|
||||
|
||||
/mob/living/simple_animal/bot/proc/interact(mob/user)
|
||||
show_controls(user)
|
||||
|
||||
@@ -279,29 +272,22 @@
|
||||
if(!locked)
|
||||
open = !open
|
||||
to_chat(user, "<span class='notice'>The maintenance panel is now [open ? "opened" : "closed"].</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The maintenance panel is locked.</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))
|
||||
if(bot_core.allowed(user) && !open && !emagged)
|
||||
locked = !locked
|
||||
to_chat(user, "Controls are now [locked ? "locked." : "unlocked."]")
|
||||
|
||||
else
|
||||
if(emagged)
|
||||
to_chat(user, "<span class='danger'>ERROR</span>")
|
||||
|
||||
if(open)
|
||||
to_chat(user, "<span class='warning'>Please close the access panel before locking it.</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Access denied.</span>")
|
||||
|
||||
else if(istype(W, /obj/item/device/paicard))
|
||||
if(paicard)
|
||||
to_chat(user, "<span class='warning'>A [paicard] is already inserted!</span>")
|
||||
|
||||
else if(allow_pai && !key)
|
||||
if(!locked && !open)
|
||||
var/obj/item/device/paicard/card = W
|
||||
@@ -313,27 +299,21 @@
|
||||
user.visible_message("[user] inserts [W] into [src]!","<span class='notice'>You insert [W] into [src].</span>")
|
||||
paicard.pai.mind.transfer_to(src)
|
||||
to_chat(src, "<span class='notice'>You sense your form change as you are uploaded into [src].</span>")
|
||||
|
||||
bot_name = name
|
||||
name = paicard.pai.name
|
||||
faction = user.faction
|
||||
add_logs(user, paicard.pai, "uploaded to [src.bot_name],")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[W] is inactive.</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The personality slot is locked.</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] is not compatible with [W]</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/hemostat) && paicard)
|
||||
if(open)
|
||||
to_chat(user, "<span class='warning'>Close the access panel before manipulating the personality slot!</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You attempt to pull [paicard] free...</span>")
|
||||
|
||||
if(do_after(user, 30, target = src))
|
||||
if (paicard)
|
||||
user.visible_message("<span class='notice'>[user] uses [W] to pull [paicard] out of [bot_name]!</span>","<span class='notice'>You pull [paicard] out of [bot_name] with [W].</span>")
|
||||
@@ -343,11 +323,9 @@
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm")
|
||||
if(health >= maxHealth)
|
||||
to_chat(user, "<span class='warning'>[src] does not need a repair!</span>")
|
||||
|
||||
return
|
||||
if(!open)
|
||||
to_chat(user, "<span class='warning'>Unable to repair with the maintenance panel closed!</span>")
|
||||
|
||||
return
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.remove_fuel(0, user))
|
||||
@@ -358,7 +336,6 @@
|
||||
user.visible_message("[user] repairs [src]!","<span class='notice'>You repair [src].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The welder must be on for this task!</span>")
|
||||
|
||||
else
|
||||
if(W.force) //if force is non-zero
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
@@ -523,14 +500,12 @@ Pass a positive integer as an argument to override a bot's default speed.
|
||||
access_card = all_access //Give the bot all-access while under the AI's command.
|
||||
if(message)
|
||||
to_chat(calling_ai, "<span class='notice'>\icon[src] [name] called to [end_area.name]. [path.len-1] meters to destination.</span>")
|
||||
|
||||
pathset = 1
|
||||
mode = BOT_RESPONDING
|
||||
tries = 0
|
||||
else
|
||||
if(message)
|
||||
to_chat(calling_ai, "<span class='danger'>Failed to calculate a valid route. Ensure destination is clear of obstructions and within range.</span>")
|
||||
|
||||
calling_ai = null
|
||||
path = list()
|
||||
|
||||
@@ -540,14 +515,12 @@ Pass a positive integer as an argument to override a bot's default speed.
|
||||
if(!success)
|
||||
if(calling_ai)
|
||||
to_chat(calling_ai, "\icon[src] [get_turf(src) == ai_waypoint ? "<span class='notice'>[src] successfully arrived to waypoint.</span>" : "<span class='danger'>[src] failed to reach waypoint.</span>"]")
|
||||
|
||||
calling_ai = null
|
||||
bot_reset()
|
||||
|
||||
/mob/living/simple_animal/bot/proc/bot_reset()
|
||||
if(calling_ai) //Simple notification to the AI if it called a bot. It will not know the cause or identity of the bot.
|
||||
to_chat(calling_ai, "<span class='danger'>Call command to a bot has been reset.</span>")
|
||||
|
||||
calling_ai = null
|
||||
path = list()
|
||||
summon_target = null
|
||||
@@ -674,22 +647,17 @@ Pass a positive integer as an argument to override a bot's default speed.
|
||||
switch(command)
|
||||
if("stop")
|
||||
to_chat(src, "<span class='warning big'>STOP PATROL</span>")
|
||||
|
||||
if("go")
|
||||
to_chat(src, "<span class='warning big'>START PATROL</span>")
|
||||
|
||||
if("summon")
|
||||
var/area/a = get_area(user_turf)
|
||||
to_chat(src, "<span class='warning big'>PRIORITY ALERT: [user] in [a.name]!</span>")
|
||||
|
||||
if("home")
|
||||
to_chat(src, "<span class='warning big'>RETURN HOME!</span>")
|
||||
|
||||
if("ejectpai")
|
||||
else
|
||||
to_chat(src, "<span class='warning'>Unidentified control sequence recieved: [command]</span>")
|
||||
|
||||
|
||||
/obj/machinery/bot_core/receive_signal(datum/signal/signal)
|
||||
owner.receive_signal(signal)
|
||||
|
||||
@@ -839,7 +807,6 @@ Pass a positive integer as an argument to override a bot's default speed.
|
||||
|
||||
if(topic_denied(usr))
|
||||
to_chat(usr, "<span class='warning'>[src]'s interface is not responding!</span>")
|
||||
|
||||
return 1
|
||||
add_fingerprint(usr)
|
||||
|
||||
@@ -861,23 +828,19 @@ Pass a positive integer as an argument to override a bot's default speed.
|
||||
hacked = 1
|
||||
locked = 1
|
||||
to_chat(usr, "<span class='warning'>[text_hack]</span>")
|
||||
|
||||
show_laws()
|
||||
bot_reset()
|
||||
else if(!hacked)
|
||||
to_chat(usr, "<span class='userdanger'>[text_dehack_fail]</span>")
|
||||
|
||||
else
|
||||
emagged = 0
|
||||
hacked = 0
|
||||
to_chat(usr, "<span class='notice'>[text_dehack]</span>")
|
||||
|
||||
show_laws()
|
||||
bot_reset()
|
||||
if("ejectpai")
|
||||
if(paicard && (!locked || issilicon(usr) || check_rights(R_ADMIN, 0, usr)))
|
||||
to_chat(usr, "<span class='notice'>You eject [paicard] from [bot_name]</span>")
|
||||
|
||||
ejectpai(usr)
|
||||
update_controls()
|
||||
|
||||
@@ -951,7 +914,6 @@ Pass a positive integer as an argument to override a bot's default speed.
|
||||
add_logs(src, paicard.pai, "ejected")
|
||||
if(announce)
|
||||
to_chat(paicard.pai, "<span class='notice'>You feel your control fade as [paicard] ejects from [bot_name].</span>")
|
||||
|
||||
paicard = null
|
||||
name = bot_name
|
||||
faction = initial(faction)
|
||||
@@ -990,30 +952,20 @@ Pass a positive integer as an argument to override a bot's default speed.
|
||||
set category = "IC"
|
||||
|
||||
to_chat(src, "<b>Directives:</b>")
|
||||
|
||||
if(paicard && paicard.pai && paicard.pai.master && paicard.pai.pai_law0)
|
||||
to_chat(src, "<span class='warning'>Your master, [paicard.pai.master], may overrule any and all laws.</span>")
|
||||
|
||||
to_chat(src, "0. [paicard.pai.pai_law0]")
|
||||
|
||||
if(emagged >= 2)
|
||||
to_chat(src, "<span class='danger'>1. #$!@#$32K#$</span>")
|
||||
|
||||
else
|
||||
to_chat(src, "1. You are a machine built to serve the station's crew and AI(s).")
|
||||
|
||||
to_chat(src, "2. Your function is to [bot_purpose].")
|
||||
|
||||
to_chat(src, "3. You cannot serve your function if you are broken.")
|
||||
|
||||
to_chat(src, "4. Serve your function to the best of your ability.")
|
||||
|
||||
if(paicard && paicard.pai && paicard.pai.pai_laws)
|
||||
to_chat(src, "<b>Supplemental Directive(s):</b>")
|
||||
|
||||
to_chat(src, "[paicard.pai.pai_laws]")
|
||||
|
||||
|
||||
/mob/living/simple_animal/bot/get_access()
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -62,17 +62,13 @@
|
||||
if(bot_core.allowed(user) && !open && !emagged)
|
||||
locked = !locked
|
||||
to_chat(user, "<span class='notice'>You [ locked ? "lock" : "unlock"] \the [src] behaviour controls.</span>")
|
||||
|
||||
else
|
||||
if(emagged)
|
||||
to_chat(user, "<span class='warning'>ERROR</span>")
|
||||
|
||||
if(open)
|
||||
to_chat(user, "<span class='warning'>Please close the access panel before locking it.</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>\The [src] doesn't seem to respect your authority.</span>")
|
||||
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -82,7 +78,6 @@
|
||||
if(user)
|
||||
to_chat(user, "<span class='danger'>[src] buzzes and beeps.</span>")
|
||||
|
||||
|
||||
/mob/living/simple_animal/bot/cleanbot/process_scan(obj/effect/decal/cleanable/D)
|
||||
for(var/T in target_types)
|
||||
if(istype(D, T))
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
var/mob/living/simple_animal/bot/cleanbot/A = new /mob/living/simple_animal/bot/cleanbot(T)
|
||||
A.name = created_name
|
||||
to_chat(user, "<span class='notice'>You add the robot arm to the bucket and sensor assembly. Beep boop!</span>")
|
||||
|
||||
user.unEquip(src, 1)
|
||||
qdel(src)
|
||||
|
||||
@@ -67,7 +66,6 @@
|
||||
qdel(W)
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You add the robot leg to [src].</span>")
|
||||
|
||||
name = "legs/frame assembly"
|
||||
if(build_step == 1)
|
||||
item_state = "ed209_leg"
|
||||
@@ -89,7 +87,6 @@
|
||||
qdel(W)
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You add the armor to [src].</span>")
|
||||
|
||||
name = "vest/legs/frame assembly"
|
||||
item_state = "[lasercolor]ed209_shell"
|
||||
icon_state = "[lasercolor]ed209_shell"
|
||||
@@ -101,7 +98,6 @@
|
||||
build_step++
|
||||
name = "shielded frame assembly"
|
||||
to_chat(user, "<span class='notice'>You weld the vest to [src].</span>")
|
||||
|
||||
if(4)
|
||||
switch(lasercolor)
|
||||
if("b")
|
||||
@@ -121,7 +117,6 @@
|
||||
qdel(W)
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You add the helmet to [src].</span>")
|
||||
|
||||
name = "covered and shielded frame assembly"
|
||||
item_state = "[lasercolor]ed209_hat"
|
||||
icon_state = "[lasercolor]ed209_hat"
|
||||
@@ -133,7 +128,6 @@
|
||||
qdel(W)
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You add the prox sensor to [src].</span>")
|
||||
|
||||
name = "covered, shielded and sensored frame assembly"
|
||||
item_state = "[lasercolor]ed209_prox"
|
||||
icon_state = "[lasercolor]ed209_prox"
|
||||
@@ -143,16 +137,13 @@
|
||||
var/obj/item/stack/cable_coil/coil = W
|
||||
if(coil.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one length of cable to wire the ED-209!</span>")
|
||||
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start to wire [src]...</span>")
|
||||
|
||||
if(do_after(user, 40, target = src))
|
||||
if(coil.get_amount() >= 1 && build_step == 6)
|
||||
coil.use(1)
|
||||
build_step = 7
|
||||
to_chat(user, "<span class='notice'>You wire the ED-209 assembly.</span>")
|
||||
|
||||
name = "wired ED-209 assembly"
|
||||
|
||||
if(7)
|
||||
@@ -177,7 +168,6 @@
|
||||
name = newname
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You add [W] to [src].</span>")
|
||||
|
||||
item_state = "[lasercolor]ed209_taser"
|
||||
icon_state = "[lasercolor]ed209_taser"
|
||||
qdel(W)
|
||||
@@ -186,20 +176,17 @@
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
playsound(loc, 'sound/items/Screwdriver.ogg', 100, 1)
|
||||
to_chat(user, "<span class='notice'>You start attaching the gun to the frame...</span>")
|
||||
|
||||
if(do_after(user, 40, target = src))
|
||||
build_step++
|
||||
name = "armed [name]"
|
||||
to_chat(user, "<span class='notice'>Taser gun attached.</span>")
|
||||
|
||||
|
||||
if(9)
|
||||
if(istype(W, /obj/item/weapon/stock_parts/cell))
|
||||
if(!user.unEquip(W))
|
||||
return
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You complete the ED-209.</span>")
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
new /mob/living/simple_animal/bot/ed209(T,created_name,lasercolor)
|
||||
qdel(W)
|
||||
@@ -237,7 +224,6 @@
|
||||
return
|
||||
if(contents.len >= 1)
|
||||
to_chat(user, "<span class='warning'>They won't fit in, as there is already stuff inside.</span>")
|
||||
|
||||
return
|
||||
if(T.use(10))
|
||||
if(user.s_active)
|
||||
@@ -245,12 +231,10 @@
|
||||
var/obj/item/weapon/toolbox_tiles/B = new /obj/item/weapon/toolbox_tiles
|
||||
user.put_in_hands(B)
|
||||
to_chat(user, "<span class='notice'>You add the tiles into the empty toolbox. They protrude from the top.</span>")
|
||||
|
||||
user.unEquip(src, 1)
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need 10 floor tiles to start building a floorbot.</span>")
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/toolbox_tiles/attackby(obj/item/W, mob/user, params)
|
||||
@@ -261,7 +245,6 @@
|
||||
B.created_name = created_name
|
||||
user.put_in_hands(B)
|
||||
to_chat(user, "<span class='notice'>You add the sensor to the toolbox and tiles.</span>")
|
||||
|
||||
user.unEquip(src, 1)
|
||||
qdel(src)
|
||||
|
||||
@@ -282,7 +265,6 @@
|
||||
var/mob/living/simple_animal/bot/floorbot/A = new /mob/living/simple_animal/bot/floorbot(T)
|
||||
A.name = created_name
|
||||
to_chat(user, "<span class='notice'>You add the robot arm to the odd looking toolbox assembly. Boop beep!</span>")
|
||||
|
||||
user.unEquip(src, 1)
|
||||
qdel(src)
|
||||
else if(istype(W, /obj/item/weapon/pen))
|
||||
@@ -326,7 +308,6 @@
|
||||
//Making a medibot!
|
||||
if(contents.len >= 1)
|
||||
to_chat(user, "<span class='warning'>You need to empty [src] out first!</span>")
|
||||
|
||||
return
|
||||
|
||||
var/obj/item/weapon/firstaid_arm_assembly/A = new /obj/item/weapon/firstaid_arm_assembly
|
||||
@@ -355,7 +336,6 @@
|
||||
qdel(S)
|
||||
user.put_in_hands(A)
|
||||
to_chat(user, "<span class='notice'>You add the robot arm to the first aid kit.</span>")
|
||||
|
||||
user.unEquip(src, 1)
|
||||
qdel(src)
|
||||
|
||||
@@ -378,7 +358,6 @@
|
||||
qdel(W)
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You add the health sensor to [src].</span>")
|
||||
|
||||
name = "First aid/robot arm/health analyzer assembly"
|
||||
overlays += image('icons/obj/aibots.dmi', "na_scanner")
|
||||
|
||||
@@ -389,7 +368,6 @@
|
||||
qdel(W)
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You complete the Medibot. Beep boop!</span>")
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
var/mob/living/simple_animal/bot/medbot/S = new /mob/living/simple_animal/bot/medbot(T)
|
||||
S.skin = skin
|
||||
@@ -424,7 +402,6 @@
|
||||
var/obj/item/weapon/secbot_assembly/A = new /obj/item/weapon/secbot_assembly
|
||||
user.put_in_hands(A)
|
||||
to_chat(user, "<span class='notice'>You add the signaler to the helmet.</span>")
|
||||
|
||||
user.unEquip(src, 1)
|
||||
qdel(src)
|
||||
else
|
||||
@@ -439,7 +416,6 @@
|
||||
build_step++
|
||||
overlays += "hs_hole"
|
||||
to_chat(user, "<span class='notice'>You weld a hole in [src]!</span>")
|
||||
|
||||
else if(build_step == 1)
|
||||
var/obj/item/weapon/weldingtool/WT = I
|
||||
if(WT.remove_fuel(0, user))
|
||||
@@ -447,13 +423,11 @@
|
||||
overlays -= "hs_hole"
|
||||
to_chat(user, "<span class='notice'>You weld the hole in [src] shut!</span>")
|
||||
|
||||
|
||||
else if(isprox(I) && (build_step == 1))
|
||||
if(!user.unEquip(I))
|
||||
return
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You add the prox sensor to [src]!</span>")
|
||||
|
||||
overlays += "hs_eye"
|
||||
name = "helmet/signaler/prox sensor assembly"
|
||||
qdel(I)
|
||||
@@ -463,7 +437,6 @@
|
||||
return
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You add the robot arm to [src]!</span>")
|
||||
|
||||
name = "helmet/signaler/prox sensor/robot arm assembly"
|
||||
overlays += "hs_arm"
|
||||
qdel(I)
|
||||
@@ -473,7 +446,6 @@
|
||||
return
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You complete the Securitron! Beep boop.</span>")
|
||||
|
||||
var/mob/living/simple_animal/bot/secbot/S = new /mob/living/simple_animal/bot/secbot
|
||||
S.forceMove(get_turf(src))
|
||||
S.name = created_name
|
||||
@@ -493,19 +465,16 @@
|
||||
new /obj/item/device/assembly/signaler(get_turf(src))
|
||||
new /obj/item/clothing/head/helmet(get_turf(src))
|
||||
to_chat(user, "<span class='notice'>You disconnect the signaler from the helmet.</span>")
|
||||
|
||||
qdel(src)
|
||||
|
||||
else if(build_step == 2)
|
||||
overlays -= "hs_eye"
|
||||
new /obj/item/device/assembly/prox_sensor(get_turf(src))
|
||||
to_chat(user, "<span class='notice'>You detach the proximity sensor from [src].</span>")
|
||||
|
||||
build_step--
|
||||
|
||||
else if(build_step == 3)
|
||||
overlays -= "hs_arm"
|
||||
new /obj/item/robot_parts/l_arm(get_turf(src))
|
||||
to_chat(user, "<span class='notice'>You remove the robot arm from [src].</span>")
|
||||
|
||||
build_step--
|
||||
@@ -178,7 +178,6 @@ Auto Patrol[]"},
|
||||
if(emagged == 2)
|
||||
if(user)
|
||||
to_chat(user, "<span class='warning'>You short out [src]'s target assessment circuits.</span>")
|
||||
|
||||
oldtarget_name = user.name
|
||||
audible_message("<span class='danger'>[src] buzzes oddly!</span>")
|
||||
declare_arrests = 0
|
||||
|
||||
@@ -98,12 +98,10 @@
|
||||
amount += loaded
|
||||
if(loaded > 0)
|
||||
to_chat(user, "<span class='notice'>You load [loaded] tiles into the floorbot. He now contains [amount] tiles.</span>")
|
||||
|
||||
nagged = 0
|
||||
update_icon()
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need at least one floor tile to put into [src]!</span>")
|
||||
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -113,7 +111,6 @@
|
||||
if(user)
|
||||
to_chat(user, "<span class='danger'>[src] buzzes and beeps.</span>")
|
||||
|
||||
|
||||
/mob/living/simple_animal/bot/floorbot/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user