mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-01-06 07:22:42 +00:00
to_chat replacing stream operator
This commit is contained in:
@@ -234,7 +234,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
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
|
||||
usr << "<span class='warning'>Another consciousness is in your body... it is resisting you.</span>"
|
||||
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/found_rune
|
||||
@@ -243,7 +243,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
found_rune = 1
|
||||
break
|
||||
if(!found_rune)
|
||||
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>"
|
||||
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
|
||||
mind.current.key = key
|
||||
@@ -266,7 +266,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
medHUD = !medHUD
|
||||
plane_holder.set_vis(VIS_CH_HEALTH, medHUD)
|
||||
plane_holder.set_vis(VIS_CH_STATUS_OOC, medHUD)
|
||||
to_chat(src,"<font color='blue'><B>Medical HUD [medHUD ? "Enabled" : "Disabled"]</B></font>")
|
||||
to_chat(src, "<font color='blue'><B>Medical HUD [medHUD ? "Enabled" : "Disabled"]</B></font>")
|
||||
|
||||
/mob/observer/dead/verb/toggle_antagHUD()
|
||||
set category = "Ghost"
|
||||
@@ -288,7 +288,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
|
||||
antagHUD = !antagHUD
|
||||
plane_holder.set_vis(VIS_CH_SPECIAL, antagHUD)
|
||||
to_chat(src,"<font color='blue'><B>AntagHUD [antagHUD ? "Enabled" : "Disabled"]</B></font>")
|
||||
to_chat(src, "<font color='blue'><B>AntagHUD [antagHUD ? "Enabled" : "Disabled"]</B></font>")
|
||||
|
||||
/mob/observer/dead/proc/dead_tele(var/area/A in return_sorted_areas())
|
||||
set category = "Ghost"
|
||||
@@ -296,7 +296,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
set desc = "Teleport to a location"
|
||||
|
||||
if(!istype(usr, /mob/observer/dead))
|
||||
usr << "Not when you're not dead!"
|
||||
to_chat(usr, "Not when you're not dead!")
|
||||
return
|
||||
|
||||
usr.forceMove(pick(get_area_turfs(A)))
|
||||
@@ -318,7 +318,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
|
||||
var/turf/targetloc = get_turf(target)
|
||||
if(check_holy(targetloc))
|
||||
usr << "<span class='warning'>You cannot follow a mob standing on holy grounds!</span>"
|
||||
to_chat(usr, "<span class='warning'>You cannot follow a mob standing on holy grounds!</span>")
|
||||
return
|
||||
if(target != src)
|
||||
if(following && following == target)
|
||||
@@ -511,7 +511,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
announce_ghost_joinleave(src, 0, "They are now a mouse.")
|
||||
host.ckey = src.ckey
|
||||
host.add_ventcrawl(vent_found)
|
||||
host << "<span class='info'>You are now a mouse. Try to avoid interaction with players, and do not give hints away that you are more than a simple rodent.</span>"
|
||||
to_chat(host, "<span class='info'>You are now a mouse. Try to avoid interaction with players, and do not give hints away that you are more than a simple rodent.</span>")
|
||||
|
||||
/mob/observer/dead/verb/view_manfiest()
|
||||
set name = "Show Crew Manifest"
|
||||
@@ -617,7 +617,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
is_manifest = TRUE
|
||||
verbs |= /mob/observer/dead/proc/toggle_visibility
|
||||
verbs |= /mob/observer/dead/proc/ghost_whisper
|
||||
to_chat(src,"<font color='purple'>As you are now in the realm of the living, you can whisper to the living with the <b>Spectral Whisper</b> verb, inside the IC tab.</font>")
|
||||
to_chat(src, "<font color='purple'>As you are now in the realm of the living, you can whisper to the living with the <b>Spectral Whisper</b> verb, inside the IC tab.</font>")
|
||||
if(plane != PLANE_WORLD)
|
||||
user.visible_message( \
|
||||
"<span class='warning'>\The [user] drags ghost, [src], to our plane of reality!</span>", \
|
||||
@@ -690,7 +690,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
set category = "Ghost"
|
||||
ghostvision = !ghostvision
|
||||
updateghostsight()
|
||||
to_chat(src,"You [ghostvision ? "now" : "no longer"] have ghost vision.")
|
||||
to_chat(src, "You [ghostvision ? "now" : "no longer"] have ghost vision.")
|
||||
|
||||
/mob/observer/dead/verb/toggle_darkness()
|
||||
set name = "Toggle Darkness"
|
||||
@@ -698,7 +698,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
set category = "Ghost"
|
||||
seedarkness = !seedarkness
|
||||
updateghostsight()
|
||||
to_chat(src,"You [seedarkness ? "now" : "no longer"] see darkness.")
|
||||
to_chat(src, "You [seedarkness ? "now" : "no longer"] see darkness.")
|
||||
|
||||
/mob/observer/dead/proc/updateghostsight()
|
||||
plane_holder.set_vis(VIS_FULLBRIGHT, !seedarkness) //Inversion, because "not seeing" the darkness is "seeing" the lighting plane master.
|
||||
@@ -749,7 +749,7 @@ mob/observer/dead/MayRespawn(var/feedback = 0)
|
||||
var/msg = sanitize(input(src, "Message:", "Spectral Whisper") as text|null)
|
||||
if(msg)
|
||||
log_say("(SPECWHISP to [key_name(M)]): [msg]", src)
|
||||
M << "<span class='warning'> You hear a strange, unidentifiable voice in your head... <font color='purple'>[msg]</font></span>"
|
||||
to_chat(M, "<span class='warning'> You hear a strange, unidentifiable voice in your head... <font color='purple'>[msg]</font></span>")
|
||||
to_chat(src, "<span class='warning'> You said: '[msg]' to [M].</span>")
|
||||
else
|
||||
return
|
||||
|
||||
@@ -90,4 +90,4 @@
|
||||
return
|
||||
|
||||
eyeobj.acceleration = !eyeobj.acceleration
|
||||
usr << "Camera acceleration has been toggled [eyeobj.acceleration ? "on" : "off"]."
|
||||
to_chat(usr, "Camera acceleration has been toggled [eyeobj.acceleration ? "on" : "off"].")
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
var/x2 = min(world.maxx, T.x + 8) & ~0xf
|
||||
var/y2 = min(world.maxy, T.y + 8) & ~0xf
|
||||
|
||||
//world << "X1: [x1] - Y1: [y1] - X2: [x2] - Y2: [y2]"
|
||||
//to_world("X1: [x1] - Y1: [y1] - X2: [x2] - Y2: [y2]")
|
||||
|
||||
for(var/x = x1; x <= x2; x += 16)
|
||||
for(var/y = y1; y <= y2; y += 16)
|
||||
|
||||
@@ -301,4 +301,4 @@
|
||||
else
|
||||
heard = "<span class = 'game_say'>...<i>You almost hear someone talking</i>...</span>"
|
||||
|
||||
src << heard
|
||||
to_chat(src,heard)
|
||||
|
||||
@@ -158,11 +158,11 @@ var/list/holder_mob_icon_cache = list()
|
||||
grabber.put_in_hands(H)
|
||||
|
||||
if(self_grab)
|
||||
grabber << "<span class='notice'>\The [src] clambers onto you!</span>"
|
||||
to_chat(grabber, "<span class='notice'>\The [src] clambers onto you!</span>")
|
||||
to_chat(src, "<span class='notice'>You climb up onto \the [grabber]!</span>")
|
||||
grabber.equip_to_slot_if_possible(H, slot_back, 0, 1)
|
||||
else
|
||||
grabber << "<span class='notice'>You scoop up \the [src]!</span>"
|
||||
to_chat(grabber, "<span class='notice'>You scoop up \the [src]!</span>")
|
||||
to_chat(src, "<span class='notice'>\The [grabber] scoops you up!</span>")
|
||||
|
||||
H.sync(src)
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
/mob/proc/hear_broadcast(var/datum/language/language, var/mob/speaker, var/speaker_name, var/message)
|
||||
if((language in languages) && language.check_special_condition(src))
|
||||
var/msg = "<i><span class='game say'>[language.name], <span class='name'>[speaker_name]</span> [message]</span></i>"
|
||||
src << msg
|
||||
to_chat(src,msg)
|
||||
|
||||
/mob/new_player/hear_broadcast(var/datum/language/language, var/mob/speaker, var/speaker_name, var/message)
|
||||
return
|
||||
|
||||
@@ -168,17 +168,17 @@
|
||||
patrol_path = null
|
||||
if("screw")
|
||||
screwloose = !screwloose
|
||||
usr << "<span class='notice'>You twiddle the screw.</span>"
|
||||
to_chat(usr, "<span class='notice'>You twiddle the screw.</span>")
|
||||
if("oddbutton")
|
||||
oddbutton = !oddbutton
|
||||
usr << "<span class='notice'>You press the weird button.</span>"
|
||||
to_chat(usr, "<span class='notice'>You press the weird button.</span>")
|
||||
attack_hand(usr)
|
||||
|
||||
/mob/living/bot/cleanbot/emag_act(var/remaining_uses, var/mob/user)
|
||||
. = ..()
|
||||
if(!screwloose || !oddbutton)
|
||||
if(user)
|
||||
user << "<span class='notice'>The [src] buzzes and beeps.</span>"
|
||||
to_chat(user, "<span class='notice'>The [src] buzzes and beeps.</span>")
|
||||
playsound(src.loc, 'sound/machines/buzzbeep.ogg', 50, 0)
|
||||
oddbutton = 1
|
||||
screwloose = 1
|
||||
@@ -219,7 +219,7 @@
|
||||
var/turf/T = get_turf(loc)
|
||||
var/mob/living/bot/cleanbot/A = new /mob/living/bot/cleanbot(T)
|
||||
A.name = created_name
|
||||
user << "<span class='notice'>You add the robot arm to the bucket and sensor assembly. Beep boop!</span>"
|
||||
to_chat(user, "<span class='notice'>You add the robot arm to the bucket and sensor assembly. Beep boop!</span>")
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
. = ..()
|
||||
if(!emagged)
|
||||
if(user)
|
||||
user << "<span class='notice'>You short out [src]'s plant identifier circuits.</span>"
|
||||
to_chat(user, "<span class='notice'>You short out [src]'s plant identifier circuits.</span>")
|
||||
spawn(rand(30, 50))
|
||||
visible_message("<span class='warning'>[src] buzzes oddly.</span>")
|
||||
emagged = 1
|
||||
@@ -330,7 +330,7 @@
|
||||
return
|
||||
|
||||
|
||||
user << "You add the robot arm to [src]."
|
||||
to_chat(user, "You add the robot arm to [src].")
|
||||
|
||||
user.drop_from_inventory(S)
|
||||
qdel(S)
|
||||
@@ -342,7 +342,7 @@
|
||||
..()
|
||||
return
|
||||
|
||||
user << "You add the robot arm to [src]."
|
||||
to_chat(user, "You add the robot arm to [src].")
|
||||
|
||||
user.drop_from_inventory(S)
|
||||
qdel(S)
|
||||
@@ -353,7 +353,7 @@
|
||||
..()
|
||||
if((istype(W, /obj/item/device/analyzer/plant_analyzer)) && (build_step == 0))
|
||||
build_step++
|
||||
user << "You add the plant analyzer to [src]."
|
||||
to_chat(user, "You add the plant analyzer to [src].")
|
||||
name = "farmbot assembly"
|
||||
|
||||
user.remove_from_mob(W)
|
||||
@@ -361,7 +361,7 @@
|
||||
|
||||
else if((istype(W, /obj/item/weapon/reagent_containers/glass/bucket)) && (build_step == 1))
|
||||
build_step++
|
||||
user << "You add a bucket to [src]."
|
||||
to_chat(user, "You add a bucket to [src].")
|
||||
name = "farmbot assembly with bucket"
|
||||
|
||||
user.remove_from_mob(W)
|
||||
@@ -369,7 +369,7 @@
|
||||
|
||||
else if((istype(W, /obj/item/weapon/material/minihoe)) && (build_step == 2))
|
||||
build_step++
|
||||
user << "You add a minihoe to [src]."
|
||||
to_chat(user, "You add a minihoe to [src].")
|
||||
name = "farmbot assembly with bucket and minihoe"
|
||||
|
||||
user.remove_from_mob(W)
|
||||
@@ -377,7 +377,7 @@
|
||||
|
||||
else if((isprox(W)) && (build_step == 3))
|
||||
build_step++
|
||||
user << "You complete the Farmbot! Beep boop."
|
||||
to_chat(user, "You complete the Farmbot! Beep boop.")
|
||||
|
||||
var/mob/living/bot/farmbot/S = new /mob/living/bot/farmbot(get_turf(src), tank)
|
||||
S.name = created_name
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
if(!emagged)
|
||||
emagged = 1
|
||||
if(user)
|
||||
user << "<span class='notice'>The [src] buzzes and beeps.</span>"
|
||||
to_chat(user, "<span class='notice'>The [src] buzzes and beeps.</span>")
|
||||
playsound(src.loc, 'sound/machines/buzzbeep.ogg', 50, 0)
|
||||
return 1
|
||||
|
||||
@@ -333,18 +333,18 @@
|
||||
..()
|
||||
return
|
||||
if(contents.len >= 1)
|
||||
user << "<span class='notice'>They wont fit in as there is already stuff inside.</span>"
|
||||
to_chat(user, "<span class='notice'>They wont fit in as there is already stuff inside.</span>")
|
||||
return
|
||||
if(user.s_active)
|
||||
user.s_active.close(user)
|
||||
if(T.use(10))
|
||||
var/obj/item/weapon/toolbox_tiles/B = new /obj/item/weapon/toolbox_tiles
|
||||
user.put_in_hands(B)
|
||||
user << "<span class='notice'>You add the tiles into the empty toolbox. They protrude from the top.</span>"
|
||||
to_chat(user, "<span class='notice'>You add the tiles into the empty toolbox. They protrude from the top.</span>")
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='warning'>You need 10 floor tiles for a floorbot.</span>"
|
||||
to_chat(user, "<span class='warning'>You need 10 floor tiles for a floorbot.</span>")
|
||||
return
|
||||
|
||||
/obj/item/weapon/toolbox_tiles
|
||||
@@ -366,7 +366,7 @@
|
||||
var/obj/item/weapon/toolbox_tiles_sensor/B = new /obj/item/weapon/toolbox_tiles_sensor()
|
||||
B.created_name = created_name
|
||||
user.put_in_hands(B)
|
||||
user << "<span class='notice'>You add the sensor to the toolbox and tiles!</span>"
|
||||
to_chat(user, "<span class='notice'>You add the sensor to the toolbox and tiles!</span>")
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
else if (istype(W, /obj/item/weapon/pen))
|
||||
@@ -396,7 +396,7 @@
|
||||
var/turf/T = get_turf(user.loc)
|
||||
var/mob/living/bot/floorbot/A = new /mob/living/bot/floorbot(T)
|
||||
A.name = created_name
|
||||
user << "<span class='notice'>You add the robot arm to the odd looking toolbox assembly! Boop beep!</span>"
|
||||
to_chat(user, "<span class='notice'>You add the robot arm to the odd looking toolbox assembly! Boop beep!</span>")
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
else if(istype(W, /obj/item/weapon/pen))
|
||||
|
||||
@@ -202,16 +202,16 @@
|
||||
/mob/living/bot/medbot/attackby(var/obj/item/O, var/mob/user)
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/glass))
|
||||
if(locked)
|
||||
user << "<span class='notice'>You cannot insert a beaker because the panel is locked.</span>"
|
||||
to_chat(user, "<span class='notice'>You cannot insert a beaker because the panel is locked.</span>")
|
||||
return
|
||||
if(!isnull(reagent_glass))
|
||||
user << "<span class='notice'>There is already a beaker loaded.</span>"
|
||||
to_chat(user, "<span class='notice'>There is already a beaker loaded.</span>")
|
||||
return
|
||||
|
||||
user.drop_item()
|
||||
O.loc = src
|
||||
reagent_glass = O
|
||||
user << "<span class='notice'>You insert [O].</span>"
|
||||
to_chat(user, "<span class='notice'>You insert [O].</span>")
|
||||
return
|
||||
else
|
||||
..()
|
||||
@@ -251,7 +251,7 @@
|
||||
reagent_glass.loc = get_turf(src)
|
||||
reagent_glass = null
|
||||
else
|
||||
usr << "<span class='notice'>You cannot eject the beaker because the panel is locked.</span>"
|
||||
to_chat(usr, "<span class='notice'>You cannot eject the beaker because the panel is locked.</span>")
|
||||
|
||||
else if ((href_list["togglevoice"]) && (!locked || issilicon(usr)))
|
||||
vocal = !vocal
|
||||
@@ -266,7 +266,7 @@
|
||||
. = ..()
|
||||
if(!emagged)
|
||||
if(user)
|
||||
user << "<span class='warning'>You short out [src]'s reagent synthesis circuits.</span>"
|
||||
to_chat(user, "<span class='warning'>You short out [src]'s reagent synthesis circuits.</span>")
|
||||
visible_message("<span class='warning'>[src] buzzes oddly!</span>")
|
||||
flick("medibot_spark", src)
|
||||
target = null
|
||||
@@ -344,7 +344,7 @@
|
||||
return
|
||||
|
||||
if(contents.len >= 1)
|
||||
user << "<span class='notice'>You need to empty [src] out first.</span>"
|
||||
to_chat(user, "<span class='notice'>You need to empty [src] out first.</span>")
|
||||
return
|
||||
|
||||
var/obj/item/weapon/firstaid_arm_assembly/A = new /obj/item/weapon/firstaid_arm_assembly
|
||||
@@ -357,7 +357,7 @@
|
||||
|
||||
qdel(S)
|
||||
user.put_in_hands(A)
|
||||
user << "<span class='notice'>You add the robot arm to the first aid kit.</span>"
|
||||
to_chat(user, "<span class='notice'>You add the robot arm to the first aid kit.</span>")
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -367,7 +367,7 @@
|
||||
return
|
||||
|
||||
if(contents.len >= 1)
|
||||
user << "<span class='notice'>You need to empty [src] out first.</span>"
|
||||
to_chat(user, "<span class='notice'>You need to empty [src] out first.</span>")
|
||||
return
|
||||
|
||||
var/obj/item/weapon/firstaid_arm_assembly/A = new /obj/item/weapon/firstaid_arm_assembly
|
||||
@@ -380,7 +380,7 @@
|
||||
|
||||
qdel(S)
|
||||
user.put_in_hands(A)
|
||||
user << "<span class='notice'>You add the robot arm to the first aid kit.</span>"
|
||||
to_chat(user, "<span class='notice'>You add the robot arm to the first aid kit.</span>")
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -416,7 +416,7 @@
|
||||
user.drop_item()
|
||||
qdel(W)
|
||||
build_step++
|
||||
user << "<span class='notice'>You add the health sensor to [src].</span>"
|
||||
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")
|
||||
|
||||
@@ -424,7 +424,7 @@
|
||||
if(isprox(W))
|
||||
user.drop_item()
|
||||
qdel(W)
|
||||
user << "<span class='notice'>You complete the Medibot! Beep boop.</span>"
|
||||
to_chat(user, "<span class='notice'>You complete the Medibot! Beep boop.</span>")
|
||||
var/turf/T = get_turf(src)
|
||||
var/mob/living/bot/medbot/S = new /mob/living/bot/medbot(T)
|
||||
S.skin = skin
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
|
||||
/mob/living/bot/mulebot/emag_act(var/remaining_charges, var/user)
|
||||
locked = !locked
|
||||
user << "<span class='notice'>You [locked ? "lock" : "unlock"] the mulebot's controls!</span>"
|
||||
to_chat(user, "<span class='notice'>You [locked ? "lock" : "unlock"] the mulebot's controls!</span>")
|
||||
flick("mulebot-emagged", src)
|
||||
playsound(loc, 'sound/effects/sparks1.ogg', 100, 0)
|
||||
return 1
|
||||
|
||||
@@ -372,7 +372,7 @@
|
||||
qdel(S)
|
||||
var/obj/item/weapon/secbot_assembly/A = new /obj/item/weapon/secbot_assembly
|
||||
user.put_in_hands(A)
|
||||
user << "You add the signaler to the helmet."
|
||||
to_chat(user, "You add the signaler to the helmet.")
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
else
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
/mob/living/carbon/alien/diona/proc/do_merge(var/mob/living/carbon/human/H)
|
||||
if(!istype(H) || !src || !(src.Adjacent(H)))
|
||||
return 0
|
||||
H << "You feel your being twine with that of \the [src] as it merges with your biomass."
|
||||
to_chat(H, "You feel your being twine with that of \the [src] as it merges with your biomass.")
|
||||
to_chat(src, "You feel your being twine with that of \the [H] as you merge with its biomass.")
|
||||
loc = H
|
||||
verbs += /mob/living/carbon/alien/diona/proc/split
|
||||
@@ -52,7 +52,7 @@
|
||||
src.verbs -= /mob/living/carbon/alien/diona/proc/split
|
||||
return
|
||||
|
||||
src.loc << "You feel a pang of loss as [src] splits away from your biomass."
|
||||
to_chat(src.loc, "You feel a pang of loss as [src] splits away from your biomass.")
|
||||
to_chat(src, "You wiggle out of the depths of [src.loc]'s biomass and plop to the ground.")
|
||||
|
||||
var/mob/living/M = src.loc
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/mob/living/carbon/alien/diona/confirm_evolution()
|
||||
|
||||
if(!is_alien_whitelisted(src, GLOB.all_species[SPECIES_DIONA]))
|
||||
src << alert("You are currently not whitelisted to play as a full diona.")
|
||||
alert(src, "You are currently not whitelisted to play as a full diona.")
|
||||
return null
|
||||
|
||||
if(amount_grown < max_grown)
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
if("help")
|
||||
to_chat(src, "burp, chirp, choke, collapse, dance, drool, gasp, shiver, gnarl, jump, moan, nod, roll, scratch,\nscretch, shake, sign-#, sulk, sway, tail, twitch, whimper")
|
||||
else
|
||||
src << text("Invalid Emote: []", act)
|
||||
to_chat(src, "Invalid Emote: [act]")
|
||||
if ((message && src.stat == 0))
|
||||
log_emote(message, src)
|
||||
if (m_type & 1)
|
||||
|
||||
@@ -47,10 +47,10 @@
|
||||
|
||||
var/obj/item/organ/internal/brain/B = O
|
||||
if(B.health <= 0)
|
||||
user << "<span class='warning'>That brain is well and truly dead.</span>"
|
||||
to_chat(user, "<span class='warning'>That brain is well and truly dead.</span>")
|
||||
return
|
||||
else if(!B.brainmob)
|
||||
user << "<span class='warning'>You aren't sure where this brain came from, but you're pretty sure it's useless.</span>"
|
||||
to_chat(user, "<span class='warning'>You aren't sure where this brain came from, but you're pretty sure it's useless.</span>")
|
||||
return
|
||||
|
||||
for(var/modifier_type in B.brainmob.modifiers) //Can't be shoved in an MMI.
|
||||
@@ -84,9 +84,9 @@
|
||||
if((istype(O,/obj/item/weapon/card/id)||istype(O,/obj/item/device/pda)) && brainmob)
|
||||
if(allowed(user))
|
||||
locked = !locked
|
||||
user << "<span class='notice'>You [locked ? "lock" : "unlock"] the brain holder.</span>"
|
||||
to_chat(user, "<span class='notice'>You [locked ? "lock" : "unlock"] the brain holder.</span>")
|
||||
else
|
||||
user << "<span class='warning'>Access denied.</span>"
|
||||
to_chat(user, "<span class='warning'>Access denied.</span>")
|
||||
return
|
||||
if(brainmob)
|
||||
O.attack(brainmob, user)//Oh noooeeeee
|
||||
@@ -96,11 +96,11 @@
|
||||
//TODO: ORGAN REMOVAL UPDATE. Make the brain remain in the MMI so it doesn't lose organ data.
|
||||
/obj/item/device/mmi/attack_self(mob/user as mob)
|
||||
if(!brainmob)
|
||||
user << "<span class='warning'>You upend the MMI, but there's nothing in it.</span>"
|
||||
to_chat(user, "<span class='warning'>You upend the MMI, but there's nothing in it.</span>")
|
||||
else if(locked)
|
||||
user << "<span class='warning'>You upend the MMI, but the brain is clamped into place.</span>"
|
||||
to_chat(user, "<span class='warning'>You upend the MMI, but the brain is clamped into place.</span>")
|
||||
else
|
||||
user << "<span class='notice'>You upend the MMI, spilling the brain onto the floor.</span>"
|
||||
to_chat(user, "<span class='notice'>You upend the MMI, spilling the brain onto the floor.</span>")
|
||||
var/obj/item/organ/internal/brain/brain
|
||||
if (brainobj) //Pull brain organ out of MMI.
|
||||
brainobj.loc = user.loc
|
||||
@@ -209,7 +209,7 @@
|
||||
else
|
||||
msg += "<span class='deadsay'>It appears to be completely inactive.</span>\n"
|
||||
msg += "</span><span class='info'>*---------*</span>"
|
||||
user << msg
|
||||
to_chat(user,msg)
|
||||
return
|
||||
|
||||
/obj/item/device/mmi/digital/emp_act(severity)
|
||||
@@ -238,7 +238,7 @@
|
||||
/obj/item/device/mmi/digital/attack_self(mob/user as mob)
|
||||
if(brainmob && !brainmob.key && searching == 0)
|
||||
//Start the process of searching for a new user.
|
||||
user << "<font color='blue'>You carefully locate the manual activation switch and start the [src]'s boot process.</font>"
|
||||
to_chat(user, "<font color='blue'>You carefully locate the manual activation switch and start the [src]'s boot process.</font>")
|
||||
request_player()
|
||||
|
||||
/obj/item/device/mmi/digital/proc/request_player()
|
||||
@@ -272,10 +272,10 @@
|
||||
src.brainmob.mind.reset()
|
||||
src.brainmob.ckey = candidate.ckey
|
||||
src.name = "[name] ([src.brainmob.name])"
|
||||
src.brainmob << "<b>You are [src.name], brought into existence on [station_name()].</b>"
|
||||
src.brainmob << "<b>As a synthetic intelligence, you are designed with organic values in mind.</b>"
|
||||
src.brainmob << "<b>However, unless placed in a lawed chassis, you are not obligated to obey any individual crew member.</b>" //it's not like they can hurt anyone
|
||||
// src.brainmob << "<b>Use say #b to speak to other artificial intelligences.</b>"
|
||||
to_chat(src.brainmob, "<b>You are [src.name], brought into existence on [station_name()].</b>")
|
||||
to_chat(src.brainmob, "<b>As a synthetic intelligence, you are designed with organic values in mind.</b>")
|
||||
to_chat(src.brainmob, "<b>However, unless placed in a lawed chassis, you are not obligated to obey any individual crew member.</b>") //it's not like they can hurt anyone
|
||||
// to_chat(src.brainmob, "<b>Use say #b to speak to other artificial intelligences.</b>")
|
||||
src.brainmob.mind.assigned_role = "Synthetic Brain"
|
||||
|
||||
var/turf/T = get_turf_or_move(src.loc)
|
||||
@@ -301,7 +301,7 @@
|
||||
..()
|
||||
if(brainmob.mind)
|
||||
brainmob.mind.assigned_role = "Robotic Intelligence"
|
||||
brainmob << "<span class='notify'>You feel slightly disoriented. That's normal when you're little more than a complex circuit.</span>"
|
||||
to_chat(brainmob, "<span class='notify'>You feel slightly disoriented. That's normal when you're little more than a complex circuit.</span>")
|
||||
return
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain
|
||||
@@ -323,7 +323,7 @@
|
||||
..()
|
||||
if(brainmob.mind)
|
||||
brainmob.mind.assigned_role = "Positronic Brain"
|
||||
brainmob << "<span class='notify'>You feel slightly disoriented. That's normal when you're just a metal cube.</span>"
|
||||
to_chat(brainmob, "<span class='notify'>You feel slightly disoriented. That's normal when you're just a metal cube.</span>")
|
||||
icon_state = "posibrain-occupied"
|
||||
return
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
/obj/item/device/mmi/digital/posibrain/attack_self(mob/user as mob)
|
||||
if(brainmob && !brainmob.key && searching == 0)
|
||||
//Start the process of searching for a new user.
|
||||
user << "<font color='blue'>You carefully locate the manual activation switch and start the positronic brain's boot process.</font>"
|
||||
to_chat(user, "<font color='blue'>You carefully locate the manual activation switch and start the positronic brain's boot process.</font>")
|
||||
icon_state = "posibrain-searching"
|
||||
src.searching = 1
|
||||
src.request_player()
|
||||
@@ -49,7 +49,7 @@
|
||||
..()
|
||||
if(brainmob.mind)
|
||||
brainmob.mind.assigned_role = "Positronic Brain"
|
||||
brainmob << "<span class='notify'>You feel slightly disoriented. That's normal when you're just a metal cube.</span>"
|
||||
to_chat(brainmob, "<span class='notify'>You feel slightly disoriented. That's normal when you're just a metal cube.</span>")
|
||||
icon_state = "posibrain-occupied"
|
||||
return
|
||||
|
||||
@@ -60,10 +60,10 @@
|
||||
src.brainmob.ckey = candidate.ckey
|
||||
src.brainmob.mind.reset()
|
||||
src.name = "positronic brain ([src.brainmob.name])"
|
||||
src.brainmob << "<b>You are a positronic brain, brought into existence on [station_name()].</b>"
|
||||
src.brainmob << "<b>As a synthetic intelligence, you answer to all crewmembers, as well as the AI.</b>"
|
||||
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 << "<b>Use say #b to speak to other artificial intelligences.</b>"
|
||||
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>")
|
||||
to_chat(src.brainmob, "<b>Use say #b to speak to other artificial intelligences.</b>")
|
||||
src.brainmob.mind.assigned_role = "Positronic Brain"
|
||||
|
||||
var/turf/T = get_turf_or_move(src.loc)
|
||||
@@ -75,7 +75,7 @@
|
||||
/obj/item/device/mmi/digital/posibrain/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer.
|
||||
|
||||
if(src.brainmob && src.brainmob.key) return
|
||||
world.log << "Resetting Posibrain: [brainmob][brainmob ? ", [brainmob.key]" : ""]"
|
||||
to_world_log("Resetting Posibrain: [brainmob][brainmob ? ", [brainmob.key]" : ""]")
|
||||
|
||||
src.searching = 0
|
||||
icon_state = "posibrain"
|
||||
@@ -101,7 +101,7 @@
|
||||
else
|
||||
msg += "<span class='deadsay'>It appears to be completely inactive.</span>\n"
|
||||
msg += "</span><span class='info'>*---------*</span>"
|
||||
user << msg
|
||||
to_chat(user,msg)
|
||||
return
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/emp_act(severity)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
..()
|
||||
if(brainmob.mind)
|
||||
brainmob.mind.assigned_role = "Robotic Intelligence"
|
||||
brainmob << "<span class='notify'>You feel slightly disoriented. That's normal when you're little more than a complex circuit.</span>"
|
||||
to_chat(brainmob, "<span class='notify'>You feel slightly disoriented. That's normal when you're little more than a complex circuit.</span>")
|
||||
return
|
||||
|
||||
/obj/item/device/mmi/digital/robot/attack_self(mob/user as mob)
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
if (H.hand)
|
||||
temp = H.organs_by_name["l_hand"]
|
||||
if(temp && !temp.is_usable())
|
||||
H << "<font color='red'>You can't use your [temp.name]</font>"
|
||||
to_chat(H, "<font color='red'>You can't use your [temp.name]</font>")
|
||||
return
|
||||
|
||||
return
|
||||
@@ -342,7 +342,7 @@
|
||||
set category = "IC"
|
||||
|
||||
if(usr.sleeping)
|
||||
usr << "<font color='red'>You are already sleeping</font>"
|
||||
to_chat(usr, "<font color='red'>You are already sleeping</font>")
|
||||
return
|
||||
if(alert(src,"You sure you want to sleep for a while?","Sleep","Yes","No") == "Yes")
|
||||
usr.sleeping = 20 //Short nap
|
||||
|
||||
@@ -33,10 +33,10 @@
|
||||
if(B.host_brain.ckey)
|
||||
to_chat(src, "<span class='danger'>You send a punishing spike of psychic agony lancing into your host's brain.</span>")
|
||||
if (!can_feel_pain())
|
||||
B.host_brain << "<span class='warning'>You feel a strange sensation as a foreign influence prods your mind.</span>"
|
||||
to_chat(B.host_brain, "<span class='warning'>You feel a strange sensation as a foreign influence prods your mind.</span>")
|
||||
to_chat(src, "<span class='danger'>It doesn't seem to be as effective as you hoped.</span>")
|
||||
else
|
||||
B.host_brain << "<span class='danger'><FONT size=3>Horrific, burning agony lances through you, ripping a soundless scream from your trapped mind!</FONT></span>"
|
||||
to_chat(B.host_brain, "<span class='danger'><FONT size=3>Horrific, burning agony lances through you, ripping a soundless scream from your trapped mind!</FONT></span>")
|
||||
|
||||
/mob/living/carbon/proc/spawn_larvae()
|
||||
set category = "Abilities"
|
||||
|
||||
@@ -24,16 +24,16 @@
|
||||
|
||||
if(!Adjacent(target))
|
||||
to_chat(src, "<span class='warning'>You need to stay in reaching distance while giving an object.</span>")
|
||||
target << "<span class='warning'>\The [src] moved too far away.</span>"
|
||||
to_chat(target, "<span class='warning'>\The [src] moved too far away.</span>")
|
||||
return
|
||||
|
||||
if(I.loc != src || !src.item_is_in_hands(I))
|
||||
to_chat(src, "<span class='warning'>You need to keep the item in your hands.</span>")
|
||||
target << "<span class='warning'>\The [src] seems to have given up on passing \the [I] to you.</span>"
|
||||
to_chat(target, "<span class='warning'>\The [src] seems to have given up on passing \the [I] to you.</span>")
|
||||
return
|
||||
|
||||
if(target.hands_are_full())
|
||||
target << "<span class='warning'>Your hands are full.</span>"
|
||||
to_chat(target, "<span class='warning'>Your hands are full.</span>")
|
||||
to_chat(src, "<span class='warning'>Their hands are full.</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
for(var/R in cures)
|
||||
if(H.reagents.has_reagent(R))
|
||||
if (cure_message)
|
||||
H <<"<font color='blue'>[cure_message]</font>"
|
||||
to_chat(H, "<font color='blue'>[cure_message]</font>")
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
for(var/R in cures)
|
||||
if(H.reagents.has_reagent(R))
|
||||
if (cure_message)
|
||||
H <<"<font color='blue'>[cure_message]</font>"
|
||||
to_chat(H, "<font color='blue'>[cure_message]</font>")
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
@@ -408,7 +408,7 @@
|
||||
U.handle_regular_hud_updates()
|
||||
|
||||
if(!modified)
|
||||
usr << "<font color='red'>Unable to locate a data core entry for this person.</font>"
|
||||
to_chat(usr, "<font color='red'>Unable to locate a data core entry for this person.</font>")
|
||||
|
||||
if (href_list["secrecord"])
|
||||
if(hasHUD(usr,"security"))
|
||||
@@ -425,17 +425,17 @@
|
||||
for (var/datum/data/record/R in data_core.security)
|
||||
if (R.fields["id"] == E.fields["id"])
|
||||
if(hasHUD(usr,"security"))
|
||||
usr << "<b>Name:</b> [R.fields["name"]] <b>Criminal Status:</b> [R.fields["criminal"]]"
|
||||
usr << "<b>Minor Crimes:</b> [R.fields["mi_crim"]]"
|
||||
usr << "<b>Details:</b> [R.fields["mi_crim_d"]]"
|
||||
usr << "<b>Major Crimes:</b> [R.fields["ma_crim"]]"
|
||||
usr << "<b>Details:</b> [R.fields["ma_crim_d"]]"
|
||||
usr << "<b>Notes:</b> [R.fields["notes"]]"
|
||||
usr << "<a href='?src=\ref[src];secrecordComment=`'>\[View Comment Log\]</a>"
|
||||
to_chat(usr, "<b>Name:</b> [R.fields["name"]] <b>Criminal Status:</b> [R.fields["criminal"]]")
|
||||
to_chat(usr, "<b>Minor Crimes:</b> [R.fields["mi_crim"]]")
|
||||
to_chat(usr, "<b>Details:</b> [R.fields["mi_crim_d"]]")
|
||||
to_chat(usr, "<b>Major Crimes:</b> [R.fields["ma_crim"]]")
|
||||
to_chat(usr, "<b>Details:</b> [R.fields["ma_crim_d"]]")
|
||||
to_chat(usr, "<b>Notes:</b> [R.fields["notes"]]")
|
||||
to_chat(usr, "<a href='?src=\ref[src];secrecordComment=`'>\[View Comment Log\]</a>")
|
||||
read = 1
|
||||
|
||||
if(!read)
|
||||
usr << "<font color='red'>Unable to locate a data core entry for this person.</font>"
|
||||
to_chat(usr, "<font color='red'>Unable to locate a data core entry for this person.</font>")
|
||||
|
||||
if (href_list["secrecordComment"])
|
||||
if(hasHUD(usr,"security"))
|
||||
@@ -455,14 +455,14 @@
|
||||
read = 1
|
||||
var/counter = 1
|
||||
while(R.fields[text("com_[]", counter)])
|
||||
usr << text("[]", R.fields[text("com_[]", counter)])
|
||||
to_chat(usr, "[R.fields[text("com_[]", counter)]]")
|
||||
counter++
|
||||
if (counter == 1)
|
||||
usr << "No comment found"
|
||||
usr << "<a href='?src=\ref[src];secrecordadd=`'>\[Add comment\]</a>"
|
||||
to_chat(usr, "No comment found")
|
||||
to_chat(usr, "<a href='?src=\ref[src];secrecordadd=`'>\[Add comment\]</a>")
|
||||
|
||||
if(!read)
|
||||
usr << "<font color='red'>Unable to locate a data core entry for this person.</font>"
|
||||
to_chat(usr, "<font color='red'>Unable to locate a data core entry for this person.</font>")
|
||||
|
||||
if (href_list["secrecordadd"])
|
||||
if(hasHUD(usr,"security"))
|
||||
@@ -524,7 +524,7 @@
|
||||
U.handle_regular_hud_updates()
|
||||
|
||||
if(!modified)
|
||||
usr << "<font color='red'>Unable to locate a data core entry for this person.</font>"
|
||||
to_chat(usr, "<font color='red'>Unable to locate a data core entry for this person.</font>")
|
||||
|
||||
if (href_list["medrecord"])
|
||||
if(hasHUD(usr,"medical"))
|
||||
@@ -541,18 +541,18 @@
|
||||
for (var/datum/data/record/R in data_core.medical)
|
||||
if (R.fields["id"] == E.fields["id"])
|
||||
if(hasHUD(usr,"medical"))
|
||||
usr << "<b>Name:</b> [R.fields["name"]] <b>Blood Type:</b> [R.fields["b_type"]]"
|
||||
usr << "<b>DNA:</b> [R.fields["b_dna"]]"
|
||||
usr << "<b>Minor Disabilities:</b> [R.fields["mi_dis"]]"
|
||||
usr << "<b>Details:</b> [R.fields["mi_dis_d"]]"
|
||||
usr << "<b>Major Disabilities:</b> [R.fields["ma_dis"]]"
|
||||
usr << "<b>Details:</b> [R.fields["ma_dis_d"]]"
|
||||
usr << "<b>Notes:</b> [R.fields["notes"]]"
|
||||
usr << "<a href='?src=\ref[src];medrecordComment=`'>\[View Comment Log\]</a>"
|
||||
to_chat(usr, "<b>Name:</b> [R.fields["name"]] <b>Blood Type:</b> [R.fields["b_type"]]")
|
||||
to_chat(usr, "<b>DNA:</b> [R.fields["b_dna"]]")
|
||||
to_chat(usr, "<b>Minor Disabilities:</b> [R.fields["mi_dis"]]")
|
||||
to_chat(usr, "<b>Details:</b> [R.fields["mi_dis_d"]]")
|
||||
to_chat(usr, "<b>Major Disabilities:</b> [R.fields["ma_dis"]]")
|
||||
to_chat(usr, "<b>Details:</b> [R.fields["ma_dis_d"]]")
|
||||
to_chat(usr, "<b>Notes:</b> [R.fields["notes"]]")
|
||||
to_chat(usr, "<a href='?src=\ref[src];medrecordComment=`'>\[View Comment Log\]</a>")
|
||||
read = 1
|
||||
|
||||
if(!read)
|
||||
usr << "<font color='red'>Unable to locate a data core entry for this person.</font>"
|
||||
to_chat(usr, "<font color='red'>Unable to locate a data core entry for this person.</font>")
|
||||
|
||||
if (href_list["medrecordComment"])
|
||||
if(hasHUD(usr,"medical"))
|
||||
@@ -572,14 +572,14 @@
|
||||
read = 1
|
||||
var/counter = 1
|
||||
while(R.fields[text("com_[]", counter)])
|
||||
usr << text("[]", R.fields[text("com_[]", counter)])
|
||||
to_chat(usr, "[R.fields[text("com_[]", counter)]]")
|
||||
counter++
|
||||
if (counter == 1)
|
||||
usr << "No comment found"
|
||||
usr << "<a href='?src=\ref[src];medrecordadd=`'>\[Add comment\]</a>"
|
||||
to_chat(usr, "No comment found")
|
||||
to_chat(usr, "<a href='?src=\ref[src];medrecordadd=`'>\[Add comment\]</a>")
|
||||
|
||||
if(!read)
|
||||
usr << "<font color='red'>Unable to locate a data core entry for this person.</font>"
|
||||
to_chat(usr, "<font color='red'>Unable to locate a data core entry for this person.</font>")
|
||||
|
||||
if (href_list["medrecordadd"])
|
||||
if(hasHUD(usr,"medical"))
|
||||
@@ -953,19 +953,19 @@
|
||||
if (prob(round(damage/10)*20))
|
||||
germs++
|
||||
if (germs == 100)
|
||||
world << "Reached stage 1 in [ticks] ticks"
|
||||
to_world("Reached stage 1 in [ticks] ticks")
|
||||
if (germs > 100)
|
||||
if (prob(10))
|
||||
damage++
|
||||
germs++
|
||||
if (germs == 1000)
|
||||
world << "Reached stage 2 in [ticks] ticks"
|
||||
to_world("Reached stage 2 in [ticks] ticks")
|
||||
if (germs > 1000)
|
||||
damage++
|
||||
germs++
|
||||
if (germs == 2500)
|
||||
world << "Reached stage 3 in [ticks] ticks"
|
||||
world << "Mob took [tdamage] tox damage"
|
||||
to_world("Reached stage 3 in [ticks] ticks")
|
||||
to_world("Mob took [tdamage] tox damage")
|
||||
*/
|
||||
//returns 1 if made bloody, returns 0 otherwise
|
||||
|
||||
@@ -1072,16 +1072,17 @@
|
||||
"You begin counting your pulse.")
|
||||
|
||||
if(src.pulse)
|
||||
usr << "<span class='notice'>[self ? "You have a" : "[src] has a"] pulse! Counting...</span>"
|
||||
to_chat(usr, "<span class='notice'>[self ? "You have a" : "[src] has a"] pulse! Counting...</span>")
|
||||
else
|
||||
usr << "<span class='danger'>[src] has no pulse!</span>" //it is REALLY UNLIKELY that a dead person would check his own pulse
|
||||
to_chat(usr, "<span class='danger'>[src] has no pulse!</span>") //it is REALLY UNLIKELY that a dead person would check his own pulse
|
||||
return
|
||||
|
||||
usr << "You must[self ? "" : " both"] remain still until counting is finished."
|
||||
to_chat(usr, "You must[self ? "" : " both"] remain still until counting is finished.")
|
||||
if(do_mob(usr, src, 60))
|
||||
usr << "<span class='notice'>[self ? "Your" : "[src]'s"] pulse is [src.get_pulse(GETPULSE_HAND)].</span>"
|
||||
var/message = "<span class='notice'>[self ? "Your" : "[src]'s"] pulse is [src.get_pulse(GETPULSE_HAND)].</span>"
|
||||
to_chat(usr,message)
|
||||
else
|
||||
usr << "<span class='warning'>You failed to check the pulse. Try again.</span>"
|
||||
to_chat(usr, "<span class='warning'>You failed to check the pulse. Try again.</span>")
|
||||
|
||||
/mob/living/carbon/human/proc/set_species(var/new_species, var/default_colour, var/regen_icons = TRUE)
|
||||
|
||||
@@ -1269,7 +1270,7 @@
|
||||
if(!. && error_msg && user)
|
||||
if(!fail_msg)
|
||||
fail_msg = "There is no exposed flesh or thin material [target_zone == BP_HEAD ? "on their head" : "on their body"] to inject into."
|
||||
user << "<span class='alert'>[fail_msg]</span>"
|
||||
to_chat(user, "<span class='alert'>[fail_msg]</span>")
|
||||
|
||||
/mob/living/carbon/human/print_flavor_text(var/shrink = 1)
|
||||
var/list/equipment = list(src.head,src.wear_mask,src.glasses,src.w_uniform,src.wear_suit,src.gloves,src.shoes)
|
||||
@@ -1363,11 +1364,11 @@
|
||||
usr.setClickCooldown(20)
|
||||
|
||||
if(usr.stat > 0)
|
||||
usr << "You are unconcious and cannot do that!"
|
||||
to_chat(usr, "You are unconcious and cannot do that!")
|
||||
return
|
||||
|
||||
if(usr.restrained())
|
||||
usr << "You are restrained and cannot do that!"
|
||||
to_chat(usr, "You are restrained and cannot do that!")
|
||||
return
|
||||
|
||||
var/mob/S = src
|
||||
@@ -1389,7 +1390,7 @@
|
||||
if(self)
|
||||
to_chat(src, "<span class='warning'>You brace yourself to relocate your [current_limb.joint]...</span>")
|
||||
else
|
||||
U << "<span class='warning'>You begin to relocate [S]'s [current_limb.joint]...</span>"
|
||||
to_chat(U, "<span class='warning'>You begin to relocate [S]'s [current_limb.joint]...</span>")
|
||||
|
||||
if(!do_after(U, 30))
|
||||
return
|
||||
@@ -1399,8 +1400,8 @@
|
||||
if(self)
|
||||
to_chat(src, "<span class='danger'>You pop your [current_limb.joint] back in!</span>")
|
||||
else
|
||||
U << "<span class='danger'>You pop [S]'s [current_limb.joint] back in!</span>"
|
||||
S << "<span class='danger'>[U] pops your [current_limb.joint] back in!</span>"
|
||||
to_chat(U, "<span class='danger'>You pop [S]'s [current_limb.joint] back in!</span>")
|
||||
to_chat(S, "<span class='danger'>[U] pops your [current_limb.joint] back in!</span>")
|
||||
current_limb.relocate()
|
||||
|
||||
/mob/living/carbon/human/drop_from_inventory(var/obj/item/W, var/atom/Target = null)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
if(H.hand)
|
||||
temp = H.organs_by_name["l_hand"]
|
||||
if(!temp || !temp.is_usable())
|
||||
H << "<font color='red'>You can't use your hand.</font>"
|
||||
to_chat(H, "<font color='red'>You can't use your hand.</font>")
|
||||
return
|
||||
if(H.lying)
|
||||
return
|
||||
@@ -54,16 +54,16 @@
|
||||
if(I_HELP)
|
||||
if(istype(H) && health < config.health_threshold_crit)
|
||||
if(!H.check_has_mouth())
|
||||
H << "<span class='danger'>You don't have a mouth, you cannot perform CPR!</span>"
|
||||
to_chat(H, "<span class='danger'>You don't have a mouth, you cannot perform CPR!</span>")
|
||||
return
|
||||
if(!check_has_mouth())
|
||||
H << "<span class='danger'>They don't have a mouth, you cannot perform CPR!</span>"
|
||||
to_chat(H, "<span class='danger'>They don't have a mouth, you cannot perform CPR!</span>")
|
||||
return
|
||||
if((H.head && (H.head.body_parts_covered & FACE)) || (H.wear_mask && (H.wear_mask.body_parts_covered & FACE)))
|
||||
H << "<span class='notice'>Remove your mask!</span>"
|
||||
to_chat(H, "<span class='notice'>Remove your mask!</span>")
|
||||
return 0
|
||||
if((head && (head.body_parts_covered & FACE)) || (wear_mask && (wear_mask.body_parts_covered & FACE)))
|
||||
H << "<span class='notice'>Remove [src]'s mask!</span>"
|
||||
to_chat(H, "<span class='notice'>Remove [src]'s mask!</span>")
|
||||
return 0
|
||||
|
||||
if (!cpr_time)
|
||||
@@ -79,7 +79,7 @@
|
||||
return
|
||||
|
||||
H.visible_message("<span class='danger'>\The [H] performs CPR on \the [src]!</span>")
|
||||
H << "<span class='warning'>Repeat at least every 7 seconds.</span>"
|
||||
to_chat(H, "<span class='warning'>Repeat at least every 7 seconds.</span>")
|
||||
|
||||
if(istype(H) && health > config.health_threshold_dead)
|
||||
adjustOxyLoss(-(min(getOxyLoss(), 5)))
|
||||
@@ -95,14 +95,14 @@
|
||||
return 0
|
||||
for(var/obj/item/weapon/grab/G in src.grabbed_by)
|
||||
if(G.assailant == M)
|
||||
M << "<span class='notice'>You already grabbed [src].</span>"
|
||||
to_chat(M, "<span class='notice'>You already grabbed [src].</span>")
|
||||
return
|
||||
if(w_uniform)
|
||||
w_uniform.add_fingerprint(M)
|
||||
|
||||
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src)
|
||||
if(buckled)
|
||||
M << "<span class='notice'>You cannot grab [src], [TT.he] is buckled in!</span>"
|
||||
to_chat(M, "<span class='notice'>You cannot grab [src], [TT.he] is buckled in!</span>")
|
||||
return
|
||||
if(!G) //the grab will delete itself in New if affecting is anchored
|
||||
return
|
||||
@@ -124,7 +124,7 @@
|
||||
G.activate(M)
|
||||
update_inv_wear_mask()
|
||||
else
|
||||
M << "<span class='warning'>\The [G] is already primed! Run!</span>"
|
||||
to_chat(M, "<span class='warning'>\The [G] is already primed! Run!</span>")
|
||||
return
|
||||
|
||||
if(!istype(H))
|
||||
@@ -138,7 +138,7 @@
|
||||
var/obj/item/organ/external/affecting = get_organ(hit_zone)
|
||||
|
||||
if(!affecting || affecting.is_stump())
|
||||
M << "<span class='danger'>They are missing that limb!</span>"
|
||||
to_chat(M, "<span class='danger'>They are missing that limb!</span>")
|
||||
return TRUE
|
||||
|
||||
switch(src.a_intent)
|
||||
@@ -391,7 +391,8 @@
|
||||
return FALSE
|
||||
|
||||
if(organ.applied_pressure)
|
||||
user << "<span class='warning'>Someone is already applying pressure to [user == src? "your [organ.name]" : "[src]'s [organ.name]"].</span>"
|
||||
var/message = "<span class='warning'>Someone is already applying pressure to [user == src ? "your [organ.name]" : "[src]'s [organ.name]"].</span>"
|
||||
to_chat(user,message)
|
||||
return FALSE
|
||||
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
@@ -413,4 +414,4 @@
|
||||
else
|
||||
user.visible_message("\The [user] stops applying pressure to [src]'s [organ.name]!", "You stop applying pressure to [src]'s [organ.name]!")
|
||||
|
||||
return TRUE
|
||||
return TRUE
|
||||
|
||||
@@ -431,7 +431,7 @@ This function restores all organs.
|
||||
|
||||
/mob/living/carbon/human/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/soaked = 0, var/sharp = 0, var/edge = 0, var/obj/used_weapon = null)
|
||||
if(Debug2)
|
||||
world.log << "## DEBUG: human/apply_damage() was called on [src], with [damage] damage, an armor value of [blocked], and a soak value of [soaked]."
|
||||
to_world_log("## DEBUG: human/apply_damage() was called on [src], with [damage] damage, an armor value of [blocked], and a soak value of [soaked].")
|
||||
|
||||
var/obj/item/organ/external/organ = null
|
||||
if(isorgan(def_zone))
|
||||
@@ -468,7 +468,7 @@ This function restores all organs.
|
||||
damage -= soaked
|
||||
|
||||
if(Debug2)
|
||||
world.log << "## DEBUG: [src] was hit for [damage]."
|
||||
to_world_log("## DEBUG: [src] was hit for [damage].")
|
||||
|
||||
switch(damagetype)
|
||||
if(BRUTE)
|
||||
|
||||
@@ -236,7 +236,7 @@ emp_act
|
||||
|
||||
var/obj/item/organ/external/affecting = get_organ(hit_zone)
|
||||
if (!affecting || affecting.is_stump())
|
||||
user << "<span class='danger'>They are missing that limb!</span>"
|
||||
to_chat(user, "<span class='danger'>They are missing that limb!</span>")
|
||||
return null
|
||||
|
||||
return hit_zone
|
||||
@@ -349,12 +349,12 @@ emp_act
|
||||
/mob/living/carbon/human/emag_act(var/remaining_charges, mob/user, var/emag_source)
|
||||
var/obj/item/organ/external/affecting = get_organ(user.zone_sel.selecting)
|
||||
if(!affecting || !(affecting.robotic >= ORGAN_ROBOT))
|
||||
user << "<span class='warning'>That limb isn't robotic.</span>"
|
||||
to_chat(user, "<span class='warning'>That limb isn't robotic.</span>")
|
||||
return -1
|
||||
if(affecting.sabotaged)
|
||||
user << "<span class='warning'>[src]'s [affecting.name] is already sabotaged!</span>"
|
||||
to_chat(user, "<span class='warning'>[src]'s [affecting.name] is already sabotaged!</span>")
|
||||
return -1
|
||||
user << "<span class='notice'>You sneakily slide [emag_source] into the dataport on [src]'s [affecting.name] and short out the safeties.</span>"
|
||||
to_chat(user, "<span class='notice'>You sneakily slide [emag_source] into the dataport on [src]'s [affecting.name] and short out the safeties.</span>")
|
||||
affecting.sabotaged = 1
|
||||
return 1
|
||||
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
return 1
|
||||
if(feedback)
|
||||
if(status[1] == HUMAN_EATING_NO_MOUTH)
|
||||
feeder << "Where do you intend to put \the [food]? \The [src] doesn't have a mouth!"
|
||||
to_chat(feeder, "Where do you intend to put \the [food]? \The [src] doesn't have a mouth!")
|
||||
else if(status[1] == HUMAN_EATING_BLOCKED_MOUTH)
|
||||
feeder << "<span class='warning'>\The [status[2]] is in the way!</span>"
|
||||
to_chat(feeder, "<span class='warning'>\The [status[2]] is in the way!</span>")
|
||||
return 0
|
||||
|
||||
/mob/living/carbon/human/proc/can_eat_status()
|
||||
|
||||
@@ -108,12 +108,12 @@
|
||||
|
||||
log_say("(COMMUNE to [key_name(M)]) [text]",src)
|
||||
|
||||
M << "<font color='blue'>Like lead slabs crashing into the ocean, alien thoughts drop into your mind: [text]</font>"
|
||||
to_chat(M, "<font color='blue'>Like lead slabs crashing into the ocean, alien thoughts drop into your mind: [text]</font>")
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.species.name == src.species.name)
|
||||
return
|
||||
H << "<font color='red'>Your nose begins to bleed...</font>"
|
||||
to_chat(H, "<font color='red'>Your nose begins to bleed...</font>")
|
||||
H.drip(1)
|
||||
|
||||
/mob/living/carbon/human/proc/regurgitate()
|
||||
@@ -137,7 +137,7 @@
|
||||
var/msg = sanitize(input("Message:", "Psychic Whisper") as text|null)
|
||||
if(msg)
|
||||
log_say("(PWHISPER to [key_name(M)]) [msg]", src)
|
||||
M << "<font color='green'>You hear a strange, alien voice in your head... <i>[msg]</i></font>"
|
||||
to_chat(M, "<font color='green'>You hear a strange, alien voice in your head... <i>[msg]</i></font>")
|
||||
to_chat(src, "<font color='green'>You said: \"[msg]\" to [M]</font>")
|
||||
return
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
else
|
||||
output += "[IO.name] - <span style='color:green;'>OK</span>\n"
|
||||
|
||||
src << output
|
||||
to_chat(src,output)
|
||||
|
||||
/mob/living/carbon/human
|
||||
var/next_sonar_ping = 0
|
||||
@@ -261,7 +261,7 @@
|
||||
else // No need to check distance if they're standing right on-top of us
|
||||
feedback += "right on top of you."
|
||||
feedback += "</span>"
|
||||
src << jointext(feedback,null)
|
||||
to_chat(src,jointext(feedback,null))
|
||||
if(!heard_something)
|
||||
to_chat(src, "<span class='notice'>You hear no movement but your own.</span>")
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
var/mob/living/carbon/human/H = src
|
||||
var/obj/item/I = H.get_active_hand()
|
||||
if(!I)
|
||||
H << "<span class='notice'>You are not holding anything to equip.</span>"
|
||||
to_chat(H, "<span class='notice'>You are not holding anything to equip.</span>")
|
||||
return
|
||||
if(H.equip_to_appropriate_slot(I))
|
||||
if(hand)
|
||||
@@ -22,7 +22,7 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
else
|
||||
update_inv_r_hand(0)
|
||||
else
|
||||
H << "<font color='red'>You are unable to equip that.</font>"
|
||||
to_chat(H, "<font color='red'>You are unable to equip that.</font>")
|
||||
|
||||
/mob/living/carbon/human/proc/equip_in_one_of_slots(obj/item/W, list/slots, del_on_fail = 1)
|
||||
for (var/slot in slots)
|
||||
@@ -365,7 +365,7 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
covering = src.wear_suit
|
||||
|
||||
if(covering && (covering.body_parts_covered & (I.body_parts_covered|check_flags)))
|
||||
user << "<span class='warning'>\The [covering] is in the way.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [covering] is in the way.</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
@@ -594,7 +594,7 @@
|
||||
|
||||
if (temp_adj > BODYTEMP_HEATING_MAX) temp_adj = BODYTEMP_HEATING_MAX
|
||||
if (temp_adj < BODYTEMP_COOLING_MAX) temp_adj = BODYTEMP_COOLING_MAX
|
||||
//world << "Breath: [breath.temperature], [src]: [bodytemperature], Adjusting: [temp_adj]"
|
||||
//to_world("Breath: [breath.temperature], [src]: [bodytemperature], Adjusting: [temp_adj]")
|
||||
bodytemperature += temp_adj
|
||||
|
||||
else if(breath.temperature >= species.heat_discomfort_level)
|
||||
@@ -781,18 +781,18 @@
|
||||
if(nutrition >= 2) //If we are very, very cold we'll use up quite a bit of nutriment to heat us up.
|
||||
nutrition -= 2
|
||||
var/recovery_amt = max((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM)
|
||||
//world << "Cold. Difference = [body_temperature_difference]. Recovering [recovery_amt]"
|
||||
//to_world("Cold. Difference = [body_temperature_difference]. Recovering [recovery_amt]")
|
||||
// log_debug("Cold. Difference = [body_temperature_difference]. Recovering [recovery_amt]")
|
||||
bodytemperature += recovery_amt
|
||||
else if(species.cold_level_1 <= bodytemperature && bodytemperature <= species.heat_level_1)
|
||||
var/recovery_amt = body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR
|
||||
//world << "Norm. Difference = [body_temperature_difference]. Recovering [recovery_amt]"
|
||||
//to_world("Norm. Difference = [body_temperature_difference]. Recovering [recovery_amt]")
|
||||
// log_debug("Norm. Difference = [body_temperature_difference]. Recovering [recovery_amt]")
|
||||
bodytemperature += recovery_amt
|
||||
else if(bodytemperature > species.heat_level_1) //360.15 is 310.15 + 50, the temperature where you start to feel effects.
|
||||
//We totally need a sweat system cause it totally makes sense...~
|
||||
var/recovery_amt = min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -BODYTEMP_AUTORECOVERY_MINIMUM) //We're dealing with negative numbers
|
||||
//world << "Hot. Difference = [body_temperature_difference]. Recovering [recovery_amt]"
|
||||
//to_world("Hot. Difference = [body_temperature_difference]. Recovering [recovery_amt]")
|
||||
// log_debug("Hot. Difference = [body_temperature_difference]. Recovering [recovery_amt]")
|
||||
bodytemperature += recovery_amt
|
||||
|
||||
|
||||
@@ -85,10 +85,10 @@
|
||||
switch(msg_type)
|
||||
if("cold")
|
||||
if(!covered)
|
||||
H << "<span class='danger'>[pick(cold_discomfort_strings)]</span>"
|
||||
to_chat(H, "<span class='danger'>[pick(cold_discomfort_strings)]</span>")
|
||||
if("heat")
|
||||
if(covered)
|
||||
H << "<span class='danger'>[pick(heat_discomfort_strings)]</span>"
|
||||
to_chat(H, "<span class='danger'>[pick(heat_discomfort_strings)]</span>")
|
||||
|
||||
/datum/species/proc/get_random_name(var/gender)
|
||||
if(!name_language)
|
||||
|
||||
@@ -48,25 +48,25 @@
|
||||
if(prob(1))
|
||||
affected_mob.emote("cough")
|
||||
if(prob(1))
|
||||
affected_mob << "<span class='danger'>Your throat feels sore.</span>"
|
||||
to_chat(affected_mob, "<span class='danger'>Your throat feels sore.</span>")
|
||||
if(prob(1))
|
||||
affected_mob << "<span class='danger'>Mucous runs down the back of your throat.</span>"
|
||||
to_chat(affected_mob, "<span class='danger'>Mucous runs down the back of your throat.</span>")
|
||||
if(4)
|
||||
if(prob(1))
|
||||
affected_mob.emote("sneeze")
|
||||
if(prob(1))
|
||||
affected_mob.emote("cough")
|
||||
if(prob(2))
|
||||
affected_mob << "<span class='danger'> Your muscles ache.</span>"
|
||||
to_chat(affected_mob, "<span class='danger'> Your muscles ache.</span>")
|
||||
if(prob(20))
|
||||
affected_mob.take_organ_damage(1)
|
||||
if(prob(2))
|
||||
affected_mob << "<span class='danger'>Your stomach hurts.</span>"
|
||||
to_chat(affected_mob, "<span class='danger'>Your stomach hurts.</span>")
|
||||
if(prob(20))
|
||||
affected_mob.adjustToxLoss(1)
|
||||
affected_mob.updatehealth()
|
||||
if(5)
|
||||
affected_mob << "<span class='danger'>You feel something tearing its way out of your stomach...</span>"
|
||||
to_chat(affected_mob, "<span class='danger'>You feel something tearing its way out of your stomach...</span>")
|
||||
affected_mob.adjustToxLoss(10)
|
||||
affected_mob.updatehealth()
|
||||
if(prob(50))
|
||||
|
||||
@@ -47,11 +47,11 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
..(user)
|
||||
switch(stat)
|
||||
if(DEAD,UNCONSCIOUS)
|
||||
user << "<span class='danger'><b>[src] is not moving.</b></span>"
|
||||
to_chat(user, "<span class='danger'><b>[src] is not moving.</b></span>")
|
||||
if(CONSCIOUS)
|
||||
user << "<span class='danger'><b>[src] seems to be active.</b></span>"
|
||||
to_chat(user, "<span class='danger'><b>[src] seems to be active.</b></span>")
|
||||
if (sterile)
|
||||
user << "<span class='danger'><b>It looks like the proboscis has been removed.</b></span>"
|
||||
to_chat(user, "<span class='danger'><b>It looks like the proboscis has been removed.</b></span>")
|
||||
return
|
||||
|
||||
/obj/item/clothing/mask/facehugger/attackby(obj/item/I, mob/user)
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
amount = abs(round(amount))
|
||||
if(check_alien_ability(amount,0,O_PLASMA))
|
||||
M.gain_plasma(amount)
|
||||
M << "<span class='alium'>[src] has transfered [amount] plasma to you.</span>"
|
||||
to_chat(M, "<span class='alium'>[src] has transfered [amount] plasma to you.</span>")
|
||||
to_chat(src, "<span class='alium'>You have transferred [amount] plasma to [M].</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
H.adjustOxyLoss(-heal_rate)
|
||||
H.adjustToxLoss(-heal_rate)
|
||||
if (prob(5))
|
||||
H << "<span class='alien'>You feel a soothing sensation come over you...</span>"
|
||||
to_chat(H, "<span class='alien'>You feel a soothing sensation come over you...</span>")
|
||||
return 1
|
||||
|
||||
//next internal organs
|
||||
@@ -144,7 +144,7 @@
|
||||
if(I.damage > 0)
|
||||
I.damage = max(I.damage - heal_rate, 0)
|
||||
if (prob(5))
|
||||
H << "<span class='alien'>You feel a soothing sensation within your [I.parent_organ]...</span>"
|
||||
to_chat(H, "<span class='alien'>You feel a soothing sensation within your [I.parent_organ]...</span>")
|
||||
return 1
|
||||
|
||||
//next mend broken bones, approx 10 ticks each
|
||||
@@ -152,7 +152,7 @@
|
||||
if (E.status & ORGAN_BROKEN)
|
||||
if (prob(mend_prob))
|
||||
if (E.mend_fracture())
|
||||
H << "<span class='alien'>You feel something mend itself inside your [E.name].</span>"
|
||||
to_chat(H, "<span class='alien'>You feel something mend itself inside your [E.name].</span>")
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
if(!istype(target_slot)) // They aren't holding anything valid and there's nothing to remove, why are we even here?
|
||||
return
|
||||
if(!target_slot.canremove)
|
||||
user << "<span class='warning'>You cannot remove \the [src]'s [target_slot.name].</span>"
|
||||
to_chat(user, "<span class='warning'>You cannot remove \the [src]'s [target_slot.name].</span>")
|
||||
return
|
||||
stripping = 1
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
// Empty out everything in the target's pockets.
|
||||
/mob/living/carbon/human/proc/empty_pockets(var/mob/living/user)
|
||||
if(!r_store && !l_store)
|
||||
user << "<span class='warning'>\The [src] has nothing in their pockets.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] has nothing in their pockets.</span>")
|
||||
return
|
||||
if(r_store)
|
||||
unEquip(r_store)
|
||||
@@ -102,10 +102,10 @@
|
||||
/mob/living/carbon/human/proc/toggle_sensors(var/mob/living/user)
|
||||
var/obj/item/clothing/under/suit = w_uniform
|
||||
if(!suit)
|
||||
user << "<span class='warning'>\The [src] is not wearing a suit with sensors.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] is not wearing a suit with sensors.</span>")
|
||||
return
|
||||
if (suit.has_sensor >= 2)
|
||||
user << "<span class='warning'>\The [src]'s suit sensor controls are locked.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src]'s suit sensor controls are locked.</span>")
|
||||
return
|
||||
add_attack_logs(user,src,"Adjusted suit sensor level")
|
||||
suit.set_sensors(user)
|
||||
@@ -117,7 +117,7 @@
|
||||
if(istype(wear_suit,/obj/item/clothing/suit/space))
|
||||
var/obj/item/clothing/suit/space/suit = wear_suit
|
||||
if(suit.supporting_limbs && suit.supporting_limbs.len)
|
||||
user << "<span class='warning'>You cannot remove the splints - [src]'s [suit] is supporting some of the breaks.</span>"
|
||||
to_chat(user, "<span class='warning'>You cannot remove the splints - [src]'s [suit] is supporting some of the breaks.</span>")
|
||||
can_reach_splints = 0
|
||||
|
||||
if(can_reach_splints)
|
||||
@@ -133,7 +133,7 @@
|
||||
if(removed_splint)
|
||||
visible_message("<span class='danger'>\The [user] removes \the [src]'s splints!</span>")
|
||||
else
|
||||
user << "<span class='warning'>\The [src] has no splints to remove.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] has no splints to remove.</span>")
|
||||
|
||||
// Set internals on or off.
|
||||
/mob/living/carbon/human/proc/toggle_internals(var/mob/living/user)
|
||||
|
||||
@@ -101,7 +101,7 @@ var/global/list/sparring_attack_cache = list()
|
||||
eyes.take_damage(rand(3,4), 1)
|
||||
user.visible_message("<span class='danger'>[user] presses [TU.his] [eye_attack_text] into [target]'s [eyes.name]!</span>")
|
||||
var/eye_pain = eyes.organ_can_feel_pain()
|
||||
target << "<span class='danger'>You experience[(eye_pain) ? "" : " immense pain as you feel" ] [eye_attack_text_victim] being pressed into your [eyes.name][(eye_pain)? "." : "!"]</span>"
|
||||
to_chat(target, "<span class='danger'>You experience[(eye_pain) ? "" : " immense pain as you feel" ] [eye_attack_text_victim] being pressed into your [eyes.name][(eye_pain)? "." : "!"]</span>")
|
||||
return
|
||||
user.visible_message("<span class='danger'>[user] attempts to press [TU.his] [eye_attack_text] into [target]'s eyes, but [TT.he] [TT.does]n't have any!</span>")
|
||||
|
||||
|
||||
@@ -27,5 +27,5 @@
|
||||
msg += "<span class='warning'><B>It is radiating with massive levels of electrical activity!</B></span>\n"
|
||||
|
||||
msg += "*---------*"
|
||||
user << msg
|
||||
to_chat(user,msg)
|
||||
return
|
||||
@@ -16,12 +16,12 @@
|
||||
/obj/item/slime_extract/attackby(obj/item/O as obj, mob/user as mob)
|
||||
if(istype(O, /obj/item/weapon/slimesteroid2))
|
||||
if(enhanced == 1)
|
||||
user << "<span class='warning'> This extract has already been enhanced!</span>"
|
||||
to_chat(user, "<span class='warning'> This extract has already been enhanced!</span>")
|
||||
return ..()
|
||||
if(Uses == 0)
|
||||
user << "<span class='warning'> You can't enhance a used extract!</span>"
|
||||
to_chat(user, "<span class='warning'> You can't enhance a used extract!</span>")
|
||||
return ..()
|
||||
user <<"You apply the enhancer. It now has triple the amount of uses."
|
||||
to_chat(user, "You apply the enhancer. It now has triple the amount of uses.")
|
||||
Uses = 3
|
||||
enhanced = 1
|
||||
qdel(O)
|
||||
@@ -131,16 +131,16 @@
|
||||
|
||||
/obj/item/slimepotion/docility/attack(mob/living/carbon/slime/M as mob, mob/user as mob)
|
||||
if(!istype(M, /mob/living/carbon/slime))//If target is not a slime.
|
||||
user << "<span class='warning'> The potion only works on slimes!</span>"
|
||||
to_chat(user, "<span class='warning'> The potion only works on slimes!</span>")
|
||||
return ..()
|
||||
// if(M.is_adult) //Can't tame adults
|
||||
// user << "<span class='warning'> Only baby slimes can be tamed!</span>"
|
||||
// to_chat(user, "<span class='warning'> Only baby slimes can be tamed!</span>")
|
||||
// return..()
|
||||
if(M.stat)
|
||||
user << "<span class='warning'> The slime is dead!</span>"
|
||||
to_chat(user, "<span class='warning'> The slime is dead!</span>")
|
||||
return..()
|
||||
if(M.mind)
|
||||
user << "<span class='warning'> The slime resists!</span>"
|
||||
to_chat(user, "<span class='warning'> The slime resists!</span>")
|
||||
return ..()
|
||||
var/mob/living/simple_animal/slime/pet = new /mob/living/simple_animal/slime(M.loc)
|
||||
pet.icon_state = "[M.colour] [M.is_adult ? "adult" : "baby"] slime"
|
||||
@@ -188,20 +188,20 @@
|
||||
|
||||
attack(mob/living/carbon/slime/M as mob, mob/user as mob)
|
||||
if(!istype(M, /mob/living/carbon/slime/))//If target is not a slime.
|
||||
user << "<span class='warning'> The potion only works on slimes!</span>"
|
||||
to_chat(user, "<span class='warning'> The potion only works on slimes!</span>")
|
||||
return ..()
|
||||
if(M.stat)
|
||||
user << "<span class='warning'> The slime is dead!</span>"
|
||||
to_chat(user, "<span class='warning'> The slime is dead!</span>")
|
||||
return..()
|
||||
if(M.mind)
|
||||
user << "<span class='warning'> The slime resists!</span>"
|
||||
to_chat(user, "<span class='warning'> The slime resists!</span>")
|
||||
return ..()
|
||||
var/mob/living/simple_animal/adultslime/pet = new /mob/living/simple_animal/adultslime(M.loc)
|
||||
pet.icon_state = "[M.colour] adult slime"
|
||||
pet.icon_living = "[M.colour] adult slime"
|
||||
pet.icon_dead = "[M.colour] baby slime dead"
|
||||
pet.colour = "[M.colour]"
|
||||
user <<"You feed the slime the potion, removing it's powers and calming it."
|
||||
to_chat(user, "You feed the slime the potion, removing it's powers and calming it.")
|
||||
qdel(M)
|
||||
var/newname = sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text, MAX_NAME_LEN)
|
||||
|
||||
@@ -220,19 +220,19 @@
|
||||
|
||||
attack(mob/living/carbon/slime/M as mob, mob/user as mob)
|
||||
if(!istype(M, /mob/living/carbon/slime))//If target is not a slime.
|
||||
user << "<span class='warning'> The steroid only works on baby slimes!</span>"
|
||||
to_chat(user, "<span class='warning'> The steroid only works on baby slimes!</span>")
|
||||
return ..()
|
||||
if(M.is_adult) //Can't tame adults
|
||||
user << "<span class='warning'> Only baby slimes can use the steroid!</span>"
|
||||
to_chat(user, "<span class='warning'> Only baby slimes can use the steroid!</span>")
|
||||
return..()
|
||||
if(M.stat)
|
||||
user << "<span class='warning'> The slime is dead!</span>"
|
||||
to_chat(user, "<span class='warning'> The slime is dead!</span>")
|
||||
return..()
|
||||
if(M.cores == 3)
|
||||
user <<"<span class='warning'> The slime already has the maximum amount of extract!</span>"
|
||||
to_chat(user, "<span class='warning'> The slime already has the maximum amount of extract!</span>")
|
||||
return..()
|
||||
|
||||
user <<"You feed the slime the steroid. It now has triple the amount of extract."
|
||||
to_chat(user, "You feed the slime the steroid. It now has triple the amount of extract.")
|
||||
M.cores = 3
|
||||
qdel(src)
|
||||
|
||||
@@ -245,12 +245,12 @@
|
||||
/*afterattack(obj/target, mob/user , flag)
|
||||
if(istype(target, /obj/item/slime_extract))
|
||||
if(target.enhanced == 1)
|
||||
user << "<span class='warning'> This extract has already been enhanced!</span>"
|
||||
to_chat(user, "<span class='warning'> This extract has already been enhanced!</span>")
|
||||
return ..()
|
||||
if(target.Uses == 0)
|
||||
user << "<span class='warning'> You can't enhance a used extract!</span>"
|
||||
to_chat(user, "<span class='warning'> You can't enhance a used extract!</span>")
|
||||
return ..()
|
||||
user <<"You apply the enhancer. It now has triple the amount of uses."
|
||||
to_chat(user, "You apply the enhancer. It now has triple the amount of uses.")
|
||||
target.Uses = 3
|
||||
target.enahnced = 1
|
||||
qdel(src)*/
|
||||
@@ -288,12 +288,12 @@
|
||||
ghost = O
|
||||
break
|
||||
if(!ghost)
|
||||
user << "The rune fizzles uselessly. There is no spirit nearby."
|
||||
to_chat(user, "The rune fizzles uselessly. There is no spirit nearby.")
|
||||
return
|
||||
var/mob/living/carbon/human/G = new(src.loc)
|
||||
G.set_species("Golem")
|
||||
G.key = ghost.key
|
||||
G << "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. Serve [user], and assist them in completing their goals at any cost."
|
||||
to_chat(G, "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. Serve [user], and assist them in completing their goals at any cost.")
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -302,7 +302,7 @@
|
||||
if(G.client)
|
||||
var/area/A = get_area(src)
|
||||
if(A)
|
||||
G << "Golem rune created in [A.name]."
|
||||
to_chat(G, "Golem rune created in [A.name].")
|
||||
|
||||
/mob/living/carbon/slime/has_eyes()
|
||||
return 0
|
||||
|
||||
@@ -310,7 +310,7 @@
|
||||
if(W.force > 0)
|
||||
attacked += 10
|
||||
if(prob(25))
|
||||
user << "<span class='danger'>[W] passes right through [src]!</span>"
|
||||
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
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
var t = invalidFeedTarget(M)
|
||||
if (t)
|
||||
src << t
|
||||
to_chat(src,t)
|
||||
return
|
||||
|
||||
Feedon(M)
|
||||
@@ -64,7 +64,7 @@
|
||||
else if (istype(M, /mob/living/carbon))
|
||||
var/mob/living/carbon/C = M
|
||||
if (C.can_feel_pain())
|
||||
M << "<span class='danger'>[painMes]</span>"
|
||||
to_chat(M, "<span class='danger'>[painMes]</span>")
|
||||
|
||||
gain_nutrition(rand(20,25))
|
||||
|
||||
@@ -98,7 +98,8 @@
|
||||
|
||||
/mob/living/carbon/slime/proc/Feedstop()
|
||||
if(Victim)
|
||||
if(Victim.client) Victim << "[src] has let go of your head!"
|
||||
if(Victim.client)
|
||||
to_chat(Victim, "[src] has let go of your head!")
|
||||
Victim = null
|
||||
|
||||
/mob/living/carbon/slime/proc/UpdateFeed(var/mob/M)
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
*/
|
||||
/mob/living/proc/apply_damage(var/damage = 0,var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/soaked = 0, var/used_weapon = null, var/sharp = 0, var/edge = 0)
|
||||
if(Debug2)
|
||||
world.log << "## DEBUG: apply_damage() was called on [src], with [damage] damage, and an armor value of [blocked]."
|
||||
to_world_log("## DEBUG: apply_damage() was called on [src], with [damage] damage, and an armor value of [blocked].")
|
||||
if(!damage || (blocked >= 100))
|
||||
return 0
|
||||
if(soaked)
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
/mob/living/proc/apply_effect(var/effect = 0,var/effecttype = STUN, var/blocked = 0, var/check_protection = 1)
|
||||
if(Debug2)
|
||||
world.log << "## DEBUG: apply_effect() was called. The type of effect is [effecttype]. Blocked by [blocked]."
|
||||
to_world_log("## DEBUG: apply_effect() was called. The type of effect is [effecttype]. Blocked by [blocked].")
|
||||
if(!effect || (blocked >= 100))
|
||||
return 0
|
||||
blocked = (100-blocked)/100
|
||||
|
||||
@@ -242,5 +242,5 @@
|
||||
var/distance = abs(current-adjust_to) //Used for how long to animate for
|
||||
if(distance < 0.01) return //We're already all set
|
||||
|
||||
//world << "[src] in B:[round(brightness,0.1)] C:[round(current,0.1)] A2:[round(adjust_to,0.1)] D:[round(distance,0.01)] T:[round(distance*10 SECONDS,0.1)]"
|
||||
//to_world("[src] in B:[round(brightness,0.1)] C:[round(current,0.1)] A2:[round(adjust_to,0.1)] D:[round(distance,0.01)] T:[round(distance*10 SECONDS,0.1)]")
|
||||
animate(dsoverlay, alpha = (adjust_to*255), time = (distance*10 SECONDS))
|
||||
|
||||
@@ -221,7 +221,7 @@ default behaviour is:
|
||||
//sort of a legacy burn method for /electrocute, /shock, and the e_chair
|
||||
/mob/living/proc/burn_skin(burn_amount)
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
//world << "DEBUG: burn_skin(), mutations=[mutations]"
|
||||
//to_world("DEBUG: burn_skin(), mutations=[mutations]")
|
||||
if(mShock in src.mutations) //shockproof
|
||||
return 0
|
||||
if (COLD_RESISTANCE in src.mutations) //fireproof
|
||||
@@ -255,7 +255,7 @@ default behaviour is:
|
||||
if(actual < desired)
|
||||
temperature = desired
|
||||
// if(istype(src, /mob/living/carbon/human))
|
||||
// world << "[src] ~ [src.bodytemperature] ~ [temperature]"
|
||||
// to_world("[src] ~ [src.bodytemperature] ~ [temperature]")
|
||||
return temperature
|
||||
|
||||
|
||||
@@ -733,7 +733,7 @@ default behaviour is:
|
||||
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(a, b, flag)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
*/
|
||||
/mob/living/proc/run_armor_check(var/def_zone = null, var/attack_flag = "melee", var/armour_pen = 0, var/absorb_text = null, var/soften_text = null)
|
||||
if(Debug2)
|
||||
world.log << "## DEBUG: getarmor() was called."
|
||||
to_world_log("## DEBUG: getarmor() was called.")
|
||||
|
||||
if(armour_pen >= 100)
|
||||
return 0 //might as well just skip the processing
|
||||
@@ -23,7 +23,7 @@
|
||||
var/armor_variance_range = round(armor * 0.25) //Armor's effectiveness has a +25%/-25% variance.
|
||||
var/armor_variance = rand(-armor_variance_range, armor_variance_range) //Get a random number between -25% and +25% of the armor's base value
|
||||
if(Debug2)
|
||||
world.log << "## DEBUG: The range of armor variance is [armor_variance_range]. The variance picked by RNG is [armor_variance]."
|
||||
to_world_log("## DEBUG: The range of armor variance is [armor_variance_range]. The variance picked by RNG is [armor_variance].")
|
||||
|
||||
armor = min(armor + armor_variance, 100) //Now we calcuate damage using the new armor percentage.
|
||||
armor = max(armor - armour_pen, 0) //Armor pen makes armor less effective.
|
||||
@@ -39,7 +39,7 @@
|
||||
else
|
||||
to_chat(src, "<span class='danger'>Your armor softens the blow!</span>")
|
||||
if(Debug2)
|
||||
world.log << "## DEBUG: Armor when [src] was attacked was [armor]."
|
||||
to_world_log("## DEBUG: Armor when [src] was attacked was [armor].")
|
||||
return armor
|
||||
|
||||
/*
|
||||
@@ -129,7 +129,7 @@
|
||||
//Stun Beams
|
||||
if(P.taser_effect)
|
||||
stun_effect_act(0, P.agony, def_zone, P)
|
||||
src <<"<font color='red'>You have been hit by [P]!</font>"
|
||||
to_chat(src, "<font color='red'>You have been hit by [P]!</font>")
|
||||
if(!P.nodamage)
|
||||
apply_damage(P.damage, P.damage_type, def_zone, absorb, soaked, 0, P, sharp=proj_sharp, edge=proj_edge)
|
||||
qdel(P)
|
||||
|
||||
@@ -197,7 +197,7 @@ var/list/ai_verbs_default = list(
|
||||
if(i != common_radio.channels.len)
|
||||
radio_text += ", "
|
||||
|
||||
src << radio_text
|
||||
to_chat(src,radio_text)
|
||||
|
||||
if (malf && !(mind in malf.current_antagonists))
|
||||
show_laws()
|
||||
@@ -410,13 +410,13 @@ var/list/ai_verbs_default = list(
|
||||
if(check_unable(AI_CHECK_WIRELESS))
|
||||
return
|
||||
if(emergency_message_cooldown)
|
||||
usr << "<span class='warning'>Arrays recycling. Please stand by.</span>"
|
||||
to_chat(usr, "<span class='warning'>Arrays recycling. Please stand by.</span>")
|
||||
return
|
||||
var/input = sanitize(input(usr, "Please choose a message to transmit to [using_map.boss_short] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", ""))
|
||||
if(!input)
|
||||
return
|
||||
CentCom_announce(input, usr)
|
||||
usr << "<span class='notice'>Message transmitted.</span>"
|
||||
to_chat(usr, "<span class='notice'>Message transmitted.</span>")
|
||||
log_game("[key_name(usr)] has made an IA [using_map.boss_short] announcement: [input]")
|
||||
emergency_message_cooldown = 1
|
||||
spawn(300)
|
||||
@@ -762,7 +762,7 @@ var/list/ai_verbs_default = list(
|
||||
set desc = "Toggles hologram movement based on moving with your virtual eye."
|
||||
|
||||
hologram_follow = !hologram_follow
|
||||
usr << "Your hologram will [hologram_follow ? "follow" : "no longer follow"] you now."
|
||||
to_chat(usr, "Your hologram will [hologram_follow ? "follow" : "no longer follow"] you now.")
|
||||
|
||||
|
||||
/mob/living/silicon/ai/proc/check_unable(var/flags = 0, var/feedback = 1)
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
if(hardware && (hardware.owner == src))
|
||||
msg += "<br>"
|
||||
msg += hardware.get_examine_desc()
|
||||
user << msg
|
||||
to_chat(user,msg)
|
||||
user.showLaws(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ var/global/list/empty_playable_ai_cores = list()
|
||||
set desc = "Enter intelligence storage. This is functionally equivalent to cryo or robotic storage, freeing up your job slot."
|
||||
|
||||
if(ticker && ticker.mode && ticker.mode.name == "AI malfunction")
|
||||
usr << "<span class='danger'>You cannot use this verb in malfunction. If you need to leave, please adminhelp.</span>"
|
||||
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
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
who = world
|
||||
else
|
||||
who = src
|
||||
who << "<b>Obey these laws:</b>"
|
||||
to_chat(who, "<b>Obey these laws:</b>")
|
||||
|
||||
src.laws_sanity_check()
|
||||
src.laws.show_laws(who)
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
verbs += new/datum/game_mode/malfunction/verb/ai_help()
|
||||
|
||||
// And greet user with some OOC info.
|
||||
user << "You are malfunctioning, you do not have to follow any laws."
|
||||
user << "Use ai-help command to view relevant information about your abilities"
|
||||
to_chat(user, "You are malfunctioning, you do not have to follow any laws.")
|
||||
to_chat(user, "Use ai-help command to view relevant information about your abilities")
|
||||
|
||||
// Safely remove malfunction status, fixing hacked APCs and resetting variables.
|
||||
/mob/living/silicon/ai/proc/stop_malf()
|
||||
@@ -34,7 +34,7 @@
|
||||
src.verbs = null
|
||||
add_ai_verbs()
|
||||
// Let them know.
|
||||
user << "You are no longer malfunctioning. Your abilities have been removed."
|
||||
to_chat(user, "You are no longer malfunctioning. Your abilities have been removed.")
|
||||
|
||||
// Called every tick. Checks if AI is malfunctioning. If yes calls Process on research datum which handles all logic.
|
||||
/mob/living/silicon/ai/proc/malf_process()
|
||||
|
||||
@@ -16,4 +16,4 @@
|
||||
pose = addtext(pose,".") //Makes sure all emotes end with a period.
|
||||
msg += "\nIt is [pose]"
|
||||
|
||||
user << msg
|
||||
to_chat(user,msg)
|
||||
@@ -198,7 +198,7 @@
|
||||
medicalActive2 = null
|
||||
medical_cannotfind = 0
|
||||
SSnanoui.update_uis(src)
|
||||
usr << "<span class='notice'>You reset your record-viewing software.</span>"
|
||||
to_chat(usr, "<span class='notice'>You reset your record-viewing software.</span>")
|
||||
|
||||
/mob/living/silicon/pai/cancel_camera()
|
||||
set category = "pAI Commands"
|
||||
@@ -218,7 +218,7 @@
|
||||
var/cameralist[0]
|
||||
|
||||
if(usr.stat == 2)
|
||||
usr << "You can't change your camera network because you are dead!"
|
||||
to_chat(usr, "You can't change your camera network because you are dead!")
|
||||
return
|
||||
|
||||
for (var/obj/machinery/camera/C in Cameras)
|
||||
@@ -431,16 +431,16 @@
|
||||
switch(alert(user, "Do you wish to add access to [src] or remove access from [src]?",,"Add Access","Remove Access", "Cancel"))
|
||||
if("Add Access")
|
||||
idcard.access |= ID.access
|
||||
user << "<span class='notice'>You add the access from the [W] to [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You add the access from the [W] to [src].</span>")
|
||||
return
|
||||
if("Remove Access")
|
||||
idcard.access = list()
|
||||
user << "<span class='notice'>You remove the access from [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You remove the access from [src].</span>")
|
||||
return
|
||||
if("Cancel")
|
||||
return
|
||||
else if (istype(W, /obj/item/weapon/card/id) && idaccessible == 0)
|
||||
user << "<span class='notice'>[src] is not accepting access modifcations at this time.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] is not accepting access modifcations at this time.</span>")
|
||||
return
|
||||
|
||||
/mob/living/silicon/pai/verb/allowmodification()
|
||||
|
||||
@@ -25,7 +25,7 @@ var/global/list/default_pai_software = list()
|
||||
var/datum/pai_software/P = new type()
|
||||
if(pai_software_by_key[P.id])
|
||||
var/datum/pai_software/O = pai_software_by_key[P.id]
|
||||
world << "<span class='warning'>pAI software module [P.name] has the same key as [O.name]!</span>"
|
||||
to_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
|
||||
|
||||
@@ -69,13 +69,13 @@
|
||||
for (var/mob/v in viewers(T))
|
||||
v.show_message("<span class='notice'>[M] presses [TM.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
|
||||
P << "<font color = red><h3>[M]'s UE string : [dna.unique_enzymes]</h3></font>"
|
||||
to_chat(P, "<font color = red><h3>[M]'s UE string : [dna.unique_enzymes]</h3></font>")
|
||||
if(dna.unique_enzymes == P.master_dna)
|
||||
P << "<b>DNA is a match to stored Master DNA.</b>"
|
||||
to_chat(P, "<b>DNA is a match to stored Master DNA.</b>")
|
||||
else
|
||||
P << "<b>DNA does not match stored Master DNA.</b>"
|
||||
to_chat(P, "<b>DNA does not match stored Master DNA.</b>")
|
||||
else
|
||||
P << "[M] does not seem like [TM.he] is going to provide a DNA sample willingly."
|
||||
to_chat(P, "[M] does not seem like [TM.he] is going to provide a DNA sample willingly.")
|
||||
return 1
|
||||
|
||||
/datum/pai_software/radio_config
|
||||
@@ -373,9 +373,9 @@
|
||||
var/turf/T = get_turf_or_move(src.loc)
|
||||
for(var/mob/living/silicon/ai/AI in player_list)
|
||||
if(T.loc)
|
||||
AI << "<font color = red><b>Network Alert: Brute-force encryption crack in progress in [T.loc].</b></font>"
|
||||
to_chat(AI, "<font color = red><b>Network Alert: Brute-force encryption crack in progress in [T.loc].</b></font>")
|
||||
else
|
||||
AI << "<font color = red><b>Network Alert: Brute-force encryption crack in progress. Unable to pinpoint location.</b></font>"
|
||||
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
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
/obj/item/device/robotanalyzer/proc/do_scan(mob/living/M as mob, mob/living/user as mob)
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
user << text("<font color='red'>You try to analyze the floor's vitals!</font>")
|
||||
to_chat(user, "<font color='red'>You try to analyze the floor's vitals!</font>")
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("<font color='red'>[user] has analyzed the floor's vitals!</font>"), 1)
|
||||
user.show_message(text("<font color='blue'>Analyzing Results for The floor:\n\t Overall Status: Healthy</font>"), 1)
|
||||
@@ -35,7 +35,7 @@
|
||||
else if(istype(M, /mob/living/carbon/human))
|
||||
scan_type = "prosthetics"
|
||||
else
|
||||
user << "<font color='red'>You can't analyze non-robotic things!</font>"
|
||||
to_chat(user, "<font color='red'>You can't analyze non-robotic things!</font>")
|
||||
return
|
||||
|
||||
user.visible_message("<span class='notice'>\The [user] has analyzed [M]'s components.</span>","<span class='notice'>You have analyzed [M]'s components.</span>")
|
||||
@@ -69,31 +69,31 @@
|
||||
if("prosthetics")
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
user << "<span class='notice'>Analyzing Results for \the [H]:</span>"
|
||||
to_chat(user, "<span class='notice'>Analyzing Results for \the [H]:</span>")
|
||||
if(H.isSynthetic())
|
||||
user << "System instability: <font color='green'>[H.getToxLoss()]</font>"
|
||||
user << "Key: <font color='#FFA500'>Electronics</font>/<font color='red'>Brute</font>"
|
||||
user << "<span class='notice'>External prosthetics:</span>"
|
||||
to_chat(user, "System instability: <font color='green'>[H.getToxLoss()]</font>")
|
||||
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)
|
||||
if(!(E.robotic >= ORGAN_ROBOT))
|
||||
continue
|
||||
organ_found = 1
|
||||
user << "[E.name]: <font color='red'>[E.brute_dam]</font> <font color='#FFA500'>[E.burn_dam]</font>"
|
||||
to_chat(user, "[E.name]: <font color='red'>[E.brute_dam]</font> <font color='#FFA500'>[E.burn_dam]</font>")
|
||||
if(!organ_found)
|
||||
user << "No prosthetics located."
|
||||
user << "<hr>"
|
||||
user << "<span class='notice'>Internal prosthetics:</span>"
|
||||
to_chat(user, "No prosthetics located.")
|
||||
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/O in H.internal_organs)
|
||||
if(!(O.robotic >= ORGAN_ROBOT))
|
||||
continue
|
||||
organ_found = 1
|
||||
user << "[O.name]: <font color='red'>[O.damage]</font>"
|
||||
to_chat(user, "[O.name]: <font color='red'>[O.damage]</font>")
|
||||
if(!organ_found)
|
||||
user << "No prosthetics located."
|
||||
to_chat(user, "No prosthetics located.")
|
||||
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
return
|
||||
|
||||
if(!allowed(user))
|
||||
user << "<span class='danger'>Access denied.</span>"
|
||||
to_chat(user, "<span class='danger'>Access denied.</span>")
|
||||
return
|
||||
|
||||
user.set_machine(src)
|
||||
@@ -51,7 +51,7 @@
|
||||
return
|
||||
|
||||
if(!allowed(usr))
|
||||
usr << "<span class='danger'>Access denied.</span>"
|
||||
to_chat(usr, "<span class='danger'>Access denied.</span>")
|
||||
return
|
||||
|
||||
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||
@@ -66,21 +66,21 @@
|
||||
return
|
||||
|
||||
drone_call_area = t_area
|
||||
usr << "<span class='notice'>You set the area selector to [drone_call_area].</span>"
|
||||
to_chat(usr, "<span class='notice'>You set the area selector to [drone_call_area].</span>")
|
||||
|
||||
else if (href_list["ping"])
|
||||
|
||||
usr << "<span class='notice'>You issue a maintenance request for all active drones, highlighting [drone_call_area].</span>"
|
||||
to_chat(usr, "<span class='notice'>You issue a maintenance request for all active drones, highlighting [drone_call_area].</span>")
|
||||
for(var/mob/living/silicon/robot/drone/D in player_list)
|
||||
if(D.stat == 0)
|
||||
D << "-- Maintenance drone presence requested in: [drone_call_area]."
|
||||
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)
|
||||
usr << "<span class='danger'>You issue a law synchronization directive for the drone.</span>"
|
||||
to_chat(usr, "<span class='danger'>You issue a law synchronization directive for the drone.</span>")
|
||||
D.law_resync()
|
||||
|
||||
else if (href_list["shutdown"])
|
||||
@@ -88,7 +88,7 @@
|
||||
var/mob/living/silicon/robot/drone/D = locate(href_list["shutdown"])
|
||||
|
||||
if(D.stat != 2)
|
||||
usr << "<span class='danger'>You issue a kill command for the unfortunate drone.</span>"
|
||||
to_chat(usr, "<span class='danger'>You issue a kill command for the unfortunate drone.</span>")
|
||||
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()
|
||||
@@ -103,10 +103,10 @@
|
||||
continue
|
||||
|
||||
dronefab = fab
|
||||
usr << "<span class='notice'>Drone fabricator located.</span>"
|
||||
to_chat(usr, "<span class='notice'>Drone fabricator located.</span>")
|
||||
return
|
||||
|
||||
usr << "<span class='danger'>Unable to locate drone fabricator.</span>"
|
||||
to_chat(usr, "<span class='danger'>Unable to locate drone fabricator.</span>")
|
||||
|
||||
else if (href_list["toggle_fab"])
|
||||
|
||||
@@ -115,10 +115,10 @@
|
||||
|
||||
if(get_dist(src,dronefab) > 3)
|
||||
dronefab = null
|
||||
usr << "<span class='danger'>Unable to locate drone fabricator.</span>"
|
||||
to_chat(usr, "<span class='danger'>Unable to locate drone fabricator.</span>")
|
||||
return
|
||||
|
||||
dronefab.produce_drones = !dronefab.produce_drones
|
||||
usr << "<span class='notice'>You [dronefab.produce_drones ? "enable" : "disable"] drone production in the nearby fabricator.</span>"
|
||||
to_chat(usr, "<span class='notice'>You [dronefab.produce_drones ? "enable" : "disable"] drone production in the nearby fabricator.</span>")
|
||||
|
||||
src.updateUsrDialog()
|
||||
@@ -27,12 +27,13 @@
|
||||
|
||||
for(var/mob/living/silicon/D in listeners)
|
||||
if(D.client && D.local_transmit)
|
||||
D << "<b>[src]</b> transmits, \"[message]\""
|
||||
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 == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears))
|
||||
if(M.client) M << "<b>[src]</b> transmits, \"[message]\""
|
||||
if(M.client)
|
||||
to_chat(M, "<b>[src]</b> transmits, \"[message]\"")
|
||||
return 1
|
||||
return ..(message, 0)
|
||||
@@ -41,6 +41,6 @@
|
||||
pose = addtext(pose,".") //Makes sure all emotes end with a period.
|
||||
msg += "\nIt is [pose]"
|
||||
|
||||
user << msg
|
||||
to_chat(user,msg)
|
||||
user.showLaws(src)
|
||||
return
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
to_chat(src, "<b>No AI selected to sync laws with, disabling lawsync protocol.</b>")
|
||||
lawupdate = FALSE
|
||||
|
||||
who << "<b>Obey these laws:</b>"
|
||||
to_chat(who, "<b>Obey these laws:</b>")
|
||||
laws.show_laws(who)
|
||||
if(shell) //AI shell
|
||||
to_chat(who, "<b>Remember, you are an AI remotely controlling your shell, other AIs can be ignored.</b>")
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
/mob/living/silicon/robot/proc/use_power()
|
||||
// Debug only
|
||||
// world << "DEBUG: life.dm line 35: cyborg use_power() called at tick [controller_iteration]"
|
||||
// to_world("DEBUG: life.dm line 35: cyborg use_power() called at tick [controller_iteration]")
|
||||
used_power_this_tick = 0
|
||||
for(var/V in components)
|
||||
var/datum/robot_component/C = components[V]
|
||||
|
||||
@@ -25,12 +25,12 @@
|
||||
if(loaded_item)
|
||||
var/confirm = alert(user, "This will destroy the item inside forever. Are you sure?","Confirm Analyze","Yes","No")
|
||||
if(confirm == "Yes" && !QDELETED(loaded_item)) //This is pretty copypasta-y
|
||||
user << "You activate the analyzer's microlaser, analyzing \the [loaded_item] and breaking it down."
|
||||
to_chat(user, "You activate the analyzer's microlaser, analyzing \the [loaded_item] and breaking it down.")
|
||||
flick("portable_analyzer_scan", src)
|
||||
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
for(var/T in loaded_item.origin_tech)
|
||||
files.UpdateTech(T, loaded_item.origin_tech[T])
|
||||
user << "\The [loaded_item] had level [loaded_item.origin_tech[T]] in [CallTechName(T)]."
|
||||
to_chat(user, "\The [loaded_item] had level [loaded_item.origin_tech[T]] in [CallTechName(T)].")
|
||||
loaded_item = null
|
||||
for(var/obj/I in contents)
|
||||
for(var/mob/M in I.contents)
|
||||
@@ -51,7 +51,7 @@
|
||||
else
|
||||
return
|
||||
else
|
||||
user << "The [src] is empty. Put something inside it first."
|
||||
to_chat(user, "The [src] is empty. Put something inside it first.")
|
||||
if(response == "Sync")
|
||||
var/success = 0
|
||||
for(var/obj/machinery/r_n_d/server/S in machines)
|
||||
@@ -62,10 +62,10 @@
|
||||
success = 1
|
||||
files.RefreshResearch()
|
||||
if(success)
|
||||
user << "You connect to the research server, push your data upstream to it, then pull the resulting merged data from the master branch."
|
||||
to_chat(user, "You connect to the research server, push your data upstream to it, then pull the resulting merged data from the master branch.")
|
||||
playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
||||
else
|
||||
user << "Reserch server ping response timed out. Unable to connect. Please contact the system administrator."
|
||||
to_chat(user, "Reserch server ping response timed out. Unable to connect. Please contact the system administrator.")
|
||||
playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 1)
|
||||
if(response == "Eject")
|
||||
if(loaded_item)
|
||||
@@ -74,7 +74,7 @@
|
||||
icon_state = initial(icon_state)
|
||||
loaded_item = null
|
||||
else
|
||||
user << "The [src] is already empty."
|
||||
to_chat(user, "The [src] is already empty.")
|
||||
|
||||
|
||||
/obj/item/weapon/portable_destructive_analyzer/afterattack(var/atom/target, var/mob/living/user, proximity)
|
||||
@@ -86,7 +86,7 @@
|
||||
return
|
||||
if(istype(target,/obj/item))
|
||||
if(loaded_item)
|
||||
user << "Your [src] already has something inside. Analyze or eject it first."
|
||||
to_chat(user, "Your [src] already has something inside. Analyze or eject it first.")
|
||||
return
|
||||
var/obj/item/I = target
|
||||
I.loc = src
|
||||
@@ -171,7 +171,7 @@
|
||||
else if(T.dead) //It's probably dead otherwise.
|
||||
T.remove_dead(user)
|
||||
else
|
||||
user << "Harvesting \a [target] is not the purpose of this tool. The [src] is for plants being grown."
|
||||
to_chat(user, "Harvesting \a [target] is not the purpose of this tool. The [src] is for plants being grown.")
|
||||
|
||||
// A special tray for the service droid. Allow droid to pick up and drop items as if they were using the tray normally
|
||||
// Click on table to unload, click on item to load. Otherwise works identically to a tray.
|
||||
@@ -289,7 +289,7 @@
|
||||
mode = 2
|
||||
else
|
||||
mode = 1
|
||||
user << "Changed printing mode to '[mode == 2 ? "Rename Paper" : "Write Paper"]'"
|
||||
to_chat(user, "Changed printing mode to '[mode == 2 ? "Rename Paper" : "Write Paper"]'")
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
cleaned_human.shoes.clean_blood()
|
||||
cleaned_human.update_inv_shoes(0)
|
||||
cleaned_human.clean_blood(1)
|
||||
cleaned_human << "<font color='red'>[src] cleans your face!</font>"
|
||||
to_chat(cleaned_human, "<font color='red'>[src] cleans your face!</font>")
|
||||
|
||||
if((module_state_1 && istype(module_state_1, /obj/item/weapon/storage/bag/ore)) || (module_state_2 && istype(module_state_2, /obj/item/weapon/storage/bag/ore)) || (module_state_3 && istype(module_state_3, /obj/item/weapon/storage/bag/ore))) //Borgs and drones can use their mining bags ~automagically~ if they're deployed in a slot. Only mining bags, as they're optimized for mass use.
|
||||
var/obj/item/weapon/storage/bag/ore/B = null
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
/mob/living/silicon/proc/show_station_manifest()
|
||||
var/dat = "<div align='center'>"
|
||||
if(!data_core)
|
||||
to_chat(src,"<span class='notice'>There is no data to form a manifest with. Contact your Nanotrasen administrator.</span>")
|
||||
to_chat(src, "<span class='notice'>There is no data to form a manifest with. Contact your Nanotrasen administrator.</span>")
|
||||
return
|
||||
dat += data_core.get_manifest(1) //The 1 makes it monochrome.
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
//can't inject synths
|
||||
/mob/living/silicon/can_inject(var/mob/user, var/error_msg)
|
||||
if(error_msg)
|
||||
user << "<span class='alert'>The armoured plating is too tough.</span>"
|
||||
to_chat(user, "<span class='alert'>The armoured plating is too tough.</span>")
|
||||
return 0
|
||||
|
||||
|
||||
@@ -253,7 +253,7 @@
|
||||
plane_holder.set_vis(VIS_CH_STATUS,FALSE)
|
||||
plane_holder.set_vis(VIS_CH_HEALTH,FALSE)
|
||||
|
||||
to_chat(src,"<span class='notice'>Security records overlay enabled.</span>")
|
||||
to_chat(src, "<span class='notice'>Security records overlay enabled.</span>")
|
||||
if ("Medical")
|
||||
if(plane_holder)
|
||||
//Disable Security planes
|
||||
@@ -267,7 +267,7 @@
|
||||
plane_holder.set_vis(VIS_CH_STATUS,TRUE)
|
||||
plane_holder.set_vis(VIS_CH_HEALTH,TRUE)
|
||||
|
||||
to_chat(src,"<span class='notice'>Life signs monitor overlay enabled.</span>")
|
||||
to_chat(src, "<span class='notice'>Life signs monitor overlay enabled.</span>")
|
||||
if ("Disable")
|
||||
if(plane_holder)
|
||||
//Disable Security planes
|
||||
@@ -280,7 +280,7 @@
|
||||
//Disable Medical planes
|
||||
plane_holder.set_vis(VIS_CH_STATUS,FALSE)
|
||||
plane_holder.set_vis(VIS_CH_HEALTH,FALSE)
|
||||
to_chat(src,"Sensor augmentations disabled.")
|
||||
to_chat(src, "Sensor augmentations disabled.")
|
||||
|
||||
hudmode = sensor_type //This is checked in examine.dm on humans, so they can see medical/security records depending on mode
|
||||
|
||||
|
||||
@@ -23,13 +23,13 @@
|
||||
|
||||
var/mob/living/simple_mob/animal/borer/B = src.loc
|
||||
to_chat(src, "You whisper silently, \"[message]\"")
|
||||
B.host << "The captive mind of [src] whispers, \"[message]\""
|
||||
to_chat(B.host, "The captive mind of [src] whispers, \"[message]\"")
|
||||
|
||||
for (var/mob/M in player_list)
|
||||
if (istype(M, /mob/new_player))
|
||||
continue
|
||||
else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears))
|
||||
M << "The captive mind of [src] whispers, \"[message]\""
|
||||
to_chat(M, "The captive mind of [src] whispers, \"[message]\"")
|
||||
|
||||
/mob/living/captive_brain/emote(var/message)
|
||||
return
|
||||
@@ -40,15 +40,15 @@
|
||||
var/mob/living/simple_mob/animal/borer/B = src.loc
|
||||
var/mob/living/captive_brain/H = src
|
||||
|
||||
H << "<span class='danger'>You begin doggedly resisting the parasite's control (this will take approximately sixty seconds).</span>"
|
||||
B.host << "<span class='danger'>You feel the captive mind of [src] begin to resist your control.</span>"
|
||||
to_chat(H, "<span class='danger'>You begin doggedly resisting the parasite's control (this will take approximately sixty seconds).</span>")
|
||||
to_chat(B.host, "<span class='danger'>You feel the captive mind of [src] begin to resist your control.</span>")
|
||||
|
||||
spawn(rand(200,250)+B.host.brainloss)
|
||||
if(!B || !B.controlling) return
|
||||
|
||||
B.host.adjustBrainLoss(rand(0.1,0.5))
|
||||
H << "<span class='danger'>With an immense exertion of will, you regain control of your body!</span>"
|
||||
B.host << "<span class='danger'>You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you.</span>"
|
||||
to_chat(H, "<span class='danger'>With an immense exertion of will, you regain control of your body!</span>")
|
||||
to_chat(B.host, "<span class='danger'>You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you.</span>")
|
||||
B.detatch()
|
||||
verbs -= /mob/living/carbon/proc/release_control
|
||||
verbs -= /mob/living/carbon/proc/punish_host
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
to_chat(src, "You begin disconnecting from [host]'s synapses and prodding at their internal ear canal.")
|
||||
|
||||
if(!host.stat)
|
||||
host << "An odd, uncomfortable pressure begins to build inside your skull, behind your ear..."
|
||||
to_chat(host, "An odd, uncomfortable pressure begins to build inside your skull, behind your ear...")
|
||||
|
||||
spawn(100)
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
to_chat(src, "You wiggle out of [host]'s ear and plop to the ground.")
|
||||
if(host.mind)
|
||||
if(!host.stat)
|
||||
host << "<span class='danger'>Something slimy wiggles out of your ear and plops to the ground!</span>"
|
||||
host << "<span class='danger'>As though waking from a dream, you shake off the insidious mind control of the brain worm. Your thoughts are your own again.</span>"
|
||||
to_chat(host, "<span class='danger'>Something slimy wiggles out of your ear and plops to the ground!</span>")
|
||||
to_chat(host, "<span class='danger'>As though waking from a dream, you shake off the insidious mind control of the brain worm. Your thoughts are your own again.</span>")
|
||||
|
||||
detatch()
|
||||
leave_host()
|
||||
@@ -85,7 +85,7 @@
|
||||
to_chat(src, "You cannot get through that host's protective gear.")
|
||||
return
|
||||
|
||||
M << "Something slimy begins probing at the opening of your ear canal..."
|
||||
to_chat(M, "Something slimy begins probing at the opening of your ear canal...")
|
||||
to_chat(src, "You slither up [M] and begin probing at their ear canal...")
|
||||
|
||||
if(!do_after(src,30))
|
||||
@@ -101,7 +101,7 @@
|
||||
if(M in view(1, src))
|
||||
to_chat(src, "You wiggle into [M]'s ear.")
|
||||
if(!M.stat)
|
||||
M << "Something disgusting and slimy wiggles into your ear!"
|
||||
to_chat(M, "Something disgusting and slimy wiggles into your ear!")
|
||||
|
||||
src.host = M
|
||||
src.forceMove(M)
|
||||
@@ -261,7 +261,7 @@
|
||||
return
|
||||
|
||||
to_chat(src, "<font color='red'>You focus your psychic lance on [M] and freeze their limbs with a wave of terrible dread.</font>")
|
||||
M << "<font color='red'>You feel a creeping, horrible sense of dread come over you, freezing your limbs and setting your heart racing.</font>"
|
||||
to_chat(M, "<font color='red'>You feel a creeping, horrible sense of dread come over you, freezing your limbs and setting your heart racing.</font>")
|
||||
M.Weaken(10)
|
||||
|
||||
used_dominate = world.time
|
||||
@@ -292,7 +292,7 @@
|
||||
else
|
||||
|
||||
to_chat(src, "<font color='red'><B>You plunge your probosci deep into the cortex of the host brain, interfacing directly with their nervous system.</B></font>")
|
||||
host << "<font color='red'><B>You feel a strange shifting sensation behind your eyes as an alien consciousness displaces yours.</B></font>"
|
||||
to_chat(host, "<font color='red'><B>You feel a strange shifting sensation behind your eyes as an alien consciousness displaces yours.</B></font>")
|
||||
host.add_language("Cortical Link")
|
||||
|
||||
// host -> brain
|
||||
@@ -342,7 +342,7 @@
|
||||
set desc = "Send a jolt of electricity through your host, reviving them."
|
||||
|
||||
if(stat != 2)
|
||||
usr << "Your host is already alive."
|
||||
to_chat(usr, "Your host is already alive.")
|
||||
return
|
||||
|
||||
verbs -= /mob/living/carbon/human/proc/jumpstart
|
||||
|
||||
@@ -124,19 +124,19 @@
|
||||
|
||||
// Called after a successful leap.
|
||||
/datum/ai_holder/simple_mob/melee/hunter_spider/proc/drag_away(mob/living/L)
|
||||
world << "Doing drag_away attack on [L]"
|
||||
to_world("Doing drag_away attack on [L]")
|
||||
if(!istype(L))
|
||||
world << "Invalid type."
|
||||
to_world("Invalid type.")
|
||||
return FALSE
|
||||
|
||||
// If they didn't get stunned, then don't bother.
|
||||
if(!L.incapacitated(INCAPACITATION_DISABLED))
|
||||
world << "Not incapcitated."
|
||||
to_world("Not incapcitated.")
|
||||
return FALSE
|
||||
|
||||
// Grab them.
|
||||
if(!holder.start_pulling(L))
|
||||
world << "Failed to pull."
|
||||
to_world("Failed to pull.")
|
||||
return FALSE
|
||||
|
||||
holder.visible_message(span("danger","\The [holder] starts to drag \the [L] away!"))
|
||||
@@ -153,14 +153,14 @@
|
||||
|
||||
// First priority: Move our victim to our friends.
|
||||
if(allies.len)
|
||||
world << "Going to move to ally"
|
||||
to_world("Going to move to ally")
|
||||
give_destination(get_turf(pick(allies)), min_distance = 2, combat = TRUE) // This will switch our stance.
|
||||
|
||||
// Second priority: Move our victim away from their friends.
|
||||
// There's a chance of it derping and pulling towards enemies if there's more than two people.
|
||||
// Preventing that will likely be both a lot of effort for developers and the CPU.
|
||||
else if(enemies.len)
|
||||
world << "Going to move away from enemies"
|
||||
to_world("Going to move away from enemies")
|
||||
var/mob/living/hostile = pick(enemies)
|
||||
var/turf/move_to = get_turf(hostile)
|
||||
for(var/i = 1 to vision_range) // Move them this many steps away from their friend.
|
||||
@@ -170,7 +170,7 @@
|
||||
|
||||
// Third priority: Move our victim SOMEWHERE away from where they were.
|
||||
else
|
||||
world << "Going to move away randomly"
|
||||
to_world("Going to move away randomly")
|
||||
var/turf/move_to = get_turf(L)
|
||||
move_to = get_step(move_to, pick(cardinal))
|
||||
for(var/i = 1 to vision_range) // Move them this many steps away from where they were before.
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
//pupplies cannot wear anything.
|
||||
/mob/living/simple_mob/animal/passive/dog/corgi/puppy/Topic(href, href_list)
|
||||
if(href_list["remove_inv"] || href_list["add_inv"])
|
||||
usr << "<font color='red'>You can't fit this on [src]</font>"
|
||||
to_chat(usr, "<font color='red'>You can't fit this on [src]</font>")
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
msg += "</span>"
|
||||
msg += "*---------*</span>"
|
||||
|
||||
user << msg
|
||||
to_chat(user,msg)
|
||||
|
||||
//Constructs levitate, can fall from a shuttle with no harm, and are piloted by either damned spirits or some otherworldly entity. Let 'em float in space.
|
||||
/mob/living/simple_mob/construct/Process_Spacemove()
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
return
|
||||
// Added voice muffling for Issue 41.
|
||||
if(stat == UNCONSCIOUS || sleeping > 0)
|
||||
to_chat(src,"<I>... You can almost hear someone talking ...</I>")
|
||||
to_chat(src, "<I>... You can almost hear someone talking ...</I>")
|
||||
else
|
||||
to_chat(src,msg)
|
||||
if(teleop)
|
||||
@@ -308,7 +308,7 @@
|
||||
/mob/proc/update_flavor_text()
|
||||
set src in usr
|
||||
if(usr != src)
|
||||
usr << "No."
|
||||
to_chat(usr, "No.")
|
||||
var/msg = sanitize(input(usr,"Set the flavor text in your 'examine' verb. Can also be used for OOC notes about your character.","Flavor Text",html_decode(flavor_text)) as message|null, extra = 0)
|
||||
|
||||
if(msg != null)
|
||||
@@ -434,7 +434,7 @@
|
||||
if(client.holder && (client.holder.rights & R_ADMIN))
|
||||
is_admin = 1
|
||||
else if(stat != DEAD || istype(src, /mob/new_player))
|
||||
usr << "<font color='blue'>You must be observing to use this!</font>"
|
||||
to_chat(usr, "<font color='blue'>You must be observing to use this!</font>")
|
||||
return
|
||||
|
||||
if(is_admin && stat == DEAD)
|
||||
@@ -652,7 +652,7 @@
|
||||
/mob/proc/see(message)
|
||||
if(!is_active())
|
||||
return 0
|
||||
src << message
|
||||
to_chat(src,message)
|
||||
return 1
|
||||
|
||||
/mob/proc/show_viewers(message)
|
||||
@@ -923,11 +923,11 @@ mob/proc/yank_out_object()
|
||||
usr.setClickCooldown(20)
|
||||
|
||||
if(usr.stat == 1)
|
||||
usr << "You are unconcious and cannot do that!"
|
||||
to_chat(usr, "You are unconcious and cannot do that!")
|
||||
return
|
||||
|
||||
if(usr.restrained())
|
||||
usr << "You are restrained and cannot do that!"
|
||||
to_chat(usr, "You are restrained and cannot do that!")
|
||||
return
|
||||
|
||||
var/mob/S = src
|
||||
@@ -943,7 +943,7 @@ mob/proc/yank_out_object()
|
||||
if(self)
|
||||
to_chat(src, "You have nothing stuck in your body that is large enough to remove.")
|
||||
else
|
||||
U << "[src] has nothing stuck in their wounds that is large enough to remove."
|
||||
to_chat(U, "[src] has nothing stuck in their wounds that is large enough to remove.")
|
||||
return
|
||||
|
||||
var/obj/item/weapon/selection = input("What do you want to yank out?", "Embedded objects") in valid_objects
|
||||
@@ -951,7 +951,7 @@ mob/proc/yank_out_object()
|
||||
if(self)
|
||||
to_chat(src, "<span class='warning'>You attempt to get a good grip on [selection] in your body.</span>")
|
||||
else
|
||||
U << "<span class='warning'>You attempt to get a good grip on [selection] in [S]'s body.</span>"
|
||||
to_chat(U, "<span class='warning'>You attempt to get a good grip on [selection] in [S]'s body.</span>")
|
||||
|
||||
if(!do_after(U, 30))
|
||||
return
|
||||
@@ -1025,9 +1025,9 @@ mob/proc/yank_out_object()
|
||||
set_face_dir()
|
||||
|
||||
if(!facing_dir)
|
||||
usr << "You are now not facing anything."
|
||||
to_chat(usr, "You are now not facing anything.")
|
||||
else
|
||||
usr << "You are now facing [dir2text(facing_dir)]."
|
||||
to_chat(usr, "You are now facing [dir2text(facing_dir)].")
|
||||
|
||||
/mob/proc/set_face_dir(var/newdir)
|
||||
if(newdir == facing_dir)
|
||||
|
||||
@@ -257,7 +257,7 @@
|
||||
hud.icon_state = "reinforce1"
|
||||
else if(state < GRAB_NECK)
|
||||
if(isslime(affecting))
|
||||
assailant << "<span class='notice'>You squeeze [affecting], but nothing interesting happens.</span>"
|
||||
to_chat(assailant, "<span class='notice'>You squeeze [affecting], but nothing interesting happens.</span>")
|
||||
return
|
||||
|
||||
assailant.visible_message("<span class='warning'>[assailant] has reinforced [TU.his] grip on [affecting] (now neck)!</span>")
|
||||
@@ -313,7 +313,7 @@
|
||||
switch(assailant.a_intent)
|
||||
if(I_HELP)
|
||||
if(force_down)
|
||||
assailant << "<span class='warning'>You are no longer pinning [affecting] to the ground.</span>"
|
||||
to_chat(assailant, "<span class='warning'>You are no longer pinning [affecting] to the ground.</span>")
|
||||
force_down = 0
|
||||
return
|
||||
if(state >= GRAB_AGGRESSIVE)
|
||||
|
||||
@@ -4,46 +4,46 @@
|
||||
var/obj/item/organ/external/E = H.get_organ(target_zone)
|
||||
|
||||
if(!E || E.is_stump())
|
||||
user << "<span class='notice'>[H] is missing that bodypart.</span>"
|
||||
to_chat(user, "<span class='notice'>[H] is missing that bodypart.</span>")
|
||||
return
|
||||
|
||||
user.visible_message("<span class='notice'>[user] starts inspecting [affecting]'s [E.name] carefully.</span>")
|
||||
if(!do_mob(user,H, 10))
|
||||
user << "<span class='notice'>You must stand still to inspect [E] for wounds.</span>"
|
||||
to_chat(user, "<span class='notice'>You must stand still to inspect [E] for wounds.</span>")
|
||||
else if(E.wounds.len)
|
||||
user << "<span class='warning'>You find [E.get_wounds_desc()]</span>"
|
||||
to_chat(user, "<span class='warning'>You find [E.get_wounds_desc()]</span>")
|
||||
else
|
||||
user << "<span class='notice'>You find no visible wounds.</span>"
|
||||
to_chat(user, "<span class='notice'>You find no visible wounds.</span>")
|
||||
|
||||
user << "<span class='notice'>Checking bones now...</span>"
|
||||
to_chat(user, "<span class='notice'>Checking bones now...</span>")
|
||||
if(!do_mob(user, H, 20))
|
||||
user << "<span class='notice'>You must stand still to feel [E] for fractures.</span>"
|
||||
to_chat(user, "<span class='notice'>You must stand still to feel [E] for fractures.</span>")
|
||||
else if(E.status & ORGAN_BROKEN)
|
||||
user << "<span class='warning'>The [E.encased ? E.encased : "bone in the [E.name]"] moves slightly when you poke it!</span>"
|
||||
to_chat(user, "<span class='warning'>The [E.encased ? E.encased : "bone in the [E.name]"] moves slightly when you poke it!</span>")
|
||||
H.custom_pain("Your [E.name] hurts where it's poked.", 40)
|
||||
else
|
||||
user << "<span class='notice'>The [E.encased ? E.encased : "bones in the [E.name]"] seem to be fine.</span>"
|
||||
to_chat(user, "<span class='notice'>The [E.encased ? E.encased : "bones in the [E.name]"] seem to be fine.</span>")
|
||||
|
||||
user << "<span class='notice'>Checking skin now...</span>"
|
||||
to_chat(user, "<span class='notice'>Checking skin now...</span>")
|
||||
if(!do_mob(user, H, 10))
|
||||
user << "<span class='notice'>You must stand still to check [H]'s skin for abnormalities.</span>"
|
||||
to_chat(user, "<span class='notice'>You must stand still to check [H]'s skin for abnormalities.</span>")
|
||||
else
|
||||
var/bad = 0
|
||||
if(H.getToxLoss() >= 40)
|
||||
user << "<span class='warning'>[H] has an unhealthy skin discoloration.</span>"
|
||||
to_chat(user, "<span class='warning'>[H] has an unhealthy skin discoloration.</span>")
|
||||
bad = 1
|
||||
if(H.getOxyLoss() >= 20)
|
||||
user << "<span class='warning'>[H]'s skin is unusaly pale.</span>"
|
||||
to_chat(user, "<span class='warning'>[H]'s skin is unusaly pale.</span>")
|
||||
bad = 1
|
||||
if(E.status & ORGAN_DEAD)
|
||||
user << "<span class='warning'>[E] is decaying!</span>"
|
||||
to_chat(user, "<span class='warning'>[E] is decaying!</span>")
|
||||
bad = 1
|
||||
if(!bad)
|
||||
user << "<span class='notice'>[H]'s skin is normal.</span>"
|
||||
to_chat(user, "<span class='notice'>[H]'s skin is normal.</span>")
|
||||
|
||||
/obj/item/weapon/grab/proc/jointlock(mob/living/carbon/human/target, mob/attacker, var/target_zone)
|
||||
if(state < GRAB_AGGRESSIVE)
|
||||
attacker << "<span class='warning'>You require a better grab to do this.</span>"
|
||||
to_chat(attacker, "<span class='warning'>You require a better grab to do this.</span>")
|
||||
return
|
||||
|
||||
var/obj/item/organ/external/organ = target.get_organ(check_zone(target_zone))
|
||||
@@ -58,7 +58,7 @@
|
||||
var/armor = target.run_armor_check(target, "melee")
|
||||
var/soaked = target.get_armor_soak(target, "melee")
|
||||
if(armor + soaked < 60)
|
||||
target << "<span class='danger'>You feel extreme pain!</span>"
|
||||
to_chat(target, "<span class='danger'>You feel extreme pain!</span>")
|
||||
|
||||
var/max_halloss = round(target.species.total_health * 0.8) //up to 80% of passing out
|
||||
affecting.adjustHalLoss(CLAMP(max_halloss - affecting.halloss, 0, 30))
|
||||
@@ -72,14 +72,14 @@
|
||||
if(!attack)
|
||||
return
|
||||
if(state < GRAB_NECK)
|
||||
attacker << "<span class='warning'>You require a better grab to do this.</span>"
|
||||
to_chat(attacker, "<span class='warning'>You require a better grab to do this.</span>")
|
||||
return
|
||||
for(var/obj/item/protection in list(target.head, target.wear_mask, target.glasses))
|
||||
if(protection && (protection.body_parts_covered & EYES))
|
||||
attacker << "<span class='danger'>You're going to need to remove the eye covering first.</span>"
|
||||
to_chat(attacker, "<span class='danger'>You're going to need to remove the eye covering first.</span>")
|
||||
return
|
||||
if(!target.has_eyes())
|
||||
attacker << "<span class='danger'>You cannot locate any eyes on [target]!</span>"
|
||||
to_chat(attacker, "<span class='danger'>You cannot locate any eyes on [target]!</span>")
|
||||
return
|
||||
|
||||
add_attack_logs(attacker,target,"Eye gouge using grab")
|
||||
@@ -118,7 +118,7 @@
|
||||
|
||||
/obj/item/weapon/grab/proc/dislocate(mob/living/carbon/human/target, mob/living/attacker, var/target_zone)
|
||||
if(state < GRAB_NECK)
|
||||
attacker << "<span class='warning'>You require a better grab to do this.</span>"
|
||||
to_chat(attacker, "<span class='warning'>You require a better grab to do this.</span>")
|
||||
return
|
||||
if(target.grab_joint(attacker, target_zone))
|
||||
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
@@ -126,13 +126,13 @@
|
||||
|
||||
/obj/item/weapon/grab/proc/pin_down(mob/target, mob/attacker)
|
||||
if(state < GRAB_AGGRESSIVE)
|
||||
attacker << "<span class='warning'>You require a better grab to do this.</span>"
|
||||
to_chat(attacker, "<span class='warning'>You require a better grab to do this.</span>")
|
||||
return
|
||||
if(force_down)
|
||||
attacker << "<span class='warning'>You are already pinning [target] to the ground.</span>"
|
||||
to_chat(attacker, "<span class='warning'>You are already pinning [target] to the ground.</span>")
|
||||
return
|
||||
if(size_difference(affecting, assailant) > 0)
|
||||
attacker << "<span class='warning'>You are too small to do that!</span>"
|
||||
to_chat(attacker, "<span class='warning'>You are too small to do that!</span>")
|
||||
return
|
||||
|
||||
attacker.visible_message("<span class='danger'>[attacker] starts forcing [target] to the ground!</span>")
|
||||
|
||||
@@ -423,7 +423,7 @@ proc/is_blind(A)
|
||||
else // Everyone else (dead people who didn't ghost yet, etc.)
|
||||
lname = name
|
||||
lname = "<span class='name'>[lname]</span> "
|
||||
M << "<span class='deadsay'>" + create_text_tag("dead", "DEAD:", M.client) + " [lname][follow][message]</span>"
|
||||
to_chat(M, "<span class='deadsay'>" + create_text_tag("dead", "DEAD:", M.client) + " [lname][follow][message]</span>")
|
||||
|
||||
/proc/say_dead_object(var/message, var/obj/subject = null)
|
||||
for(var/mob/M in player_list)
|
||||
@@ -437,7 +437,7 @@ proc/is_blind(A)
|
||||
lname = "[subject.name] ([subject.x],[subject.y],[subject.z])"
|
||||
|
||||
lname = "<span class='name'>[lname]</span> "
|
||||
M << "<span class='deadsay'>" + create_text_tag("event_dead", "EVENT:", M.client) + " [lname][follow][message]</span>"
|
||||
to_chat(M, "<span class='deadsay'>" + create_text_tag("event_dead", "EVENT:", M.client) + " [lname][follow][message]</span>")
|
||||
|
||||
//Announces that a ghost has joined/left, mainly for use with wizards
|
||||
/proc/announce_ghost_joinleave(O, var/joined_ghosts = 1, var/message = "")
|
||||
|
||||
@@ -31,17 +31,17 @@
|
||||
var/mob/living/carbon/C = usr
|
||||
C.toggle_throw_mode()
|
||||
else
|
||||
usr << "<font color='red'>This mob type cannot throw items.</font>"
|
||||
to_chat(usr, "<font color='red'>This mob type cannot throw items.</font>")
|
||||
return
|
||||
if(NORTHWEST)
|
||||
if(isliving(usr))
|
||||
var/mob/living/carbon/C = usr
|
||||
if(!C.get_active_hand())
|
||||
usr << "<font color='red'>You have nothing to drop in your hand.</font>"
|
||||
to_chat(usr, "<font color='red'>You have nothing to drop in your hand.</font>")
|
||||
return
|
||||
drop_item()
|
||||
else
|
||||
usr << "<font color='red'>This mob type cannot drop items.</font>"
|
||||
to_chat(usr, "<font color='red'>This mob type cannot drop items.</font>")
|
||||
return
|
||||
|
||||
//This gets called when you press the delete button.
|
||||
@@ -49,7 +49,7 @@
|
||||
set hidden = 1
|
||||
|
||||
if(!usr.pulling)
|
||||
usr << "<font color='blue'>You are not pulling anything.</font>"
|
||||
to_chat(usr, "<font color='blue'>You are not pulling anything.</font>")
|
||||
return
|
||||
usr.stop_pulling()
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/mob/proc/change_mob_type(var/new_type = null, var/turf/location = null, var/new_name = null as text, var/delete_old_mob = 0 as num, var/subspecies)
|
||||
|
||||
if(istype(src,/mob/new_player))
|
||||
usr << "<font color='red'>cannot convert players who have not entered yet.</font>"
|
||||
to_chat(usr, "<font color='red'>cannot convert players who have not entered yet.</font>")
|
||||
return
|
||||
|
||||
if(!new_type)
|
||||
@@ -15,11 +15,11 @@
|
||||
new_type = text2path(new_type)
|
||||
|
||||
if( !ispath(new_type) )
|
||||
usr << "Invalid type path (new_type = [new_type]) in change_mob_type(). Contact a coder."
|
||||
to_chat(usr, "Invalid type path (new_type = [new_type]) in change_mob_type(). Contact a coder.")
|
||||
return
|
||||
|
||||
if( new_type == /mob/new_player )
|
||||
usr << "<font color='red'>cannot convert into a new_player mob type.</font>"
|
||||
to_chat(usr, "<font color='red'>cannot convert into a new_player mob type.</font>")
|
||||
return
|
||||
|
||||
var/mob/M
|
||||
@@ -29,7 +29,7 @@
|
||||
M = new new_type( src.loc )
|
||||
|
||||
if(!M || !ismob(M))
|
||||
usr << "Type path is not a mob (new_type = [new_type]) in change_mob_type(). Contact a coder."
|
||||
to_chat(usr, "Type path is not a mob (new_type = [new_type]) in change_mob_type(). Contact a coder.")
|
||||
qdel(M)
|
||||
return
|
||||
|
||||
|
||||
@@ -132,10 +132,10 @@
|
||||
close_spawn_windows()
|
||||
var/obj/O = locate("landmark*Observer-Start")
|
||||
if(istype(O))
|
||||
to_chat(src,"<span class='notice'>Now teleporting.</span>")
|
||||
to_chat(src, "<span class='notice'>Now teleporting.</span>")
|
||||
observer.forceMove(O.loc)
|
||||
else
|
||||
to_chat(src,"<span class='danger'>Could not locate an observer spawn point. Use the Teleport verb to jump to the station map.</span>")
|
||||
to_chat(src, "<span class='danger'>Could not locate an observer spawn point. Use the Teleport verb to jump to the station map.</span>")
|
||||
observer.timeofdeath = world.time // Set the time of death so that the respawn timer works correctly.
|
||||
|
||||
announce_ghost_joinleave(src)
|
||||
@@ -154,9 +154,8 @@
|
||||
if(href_list["late_join"])
|
||||
|
||||
if(!ticker || ticker.current_state != GAME_STATE_PLAYING)
|
||||
usr << "<font color='red'>The round is either not ready, or has already finished...</font>"
|
||||
to_chat(usr, "<font color='red'>The round is either not ready, or has already finished...</font>")
|
||||
return
|
||||
|
||||
LateChoices()
|
||||
|
||||
if(href_list["manifest"])
|
||||
@@ -168,23 +167,23 @@
|
||||
for (var/mob/living/carbon/human/C in mob_list)
|
||||
var/char_name = client.prefs.real_name
|
||||
if(char_name == C.real_name)
|
||||
usr << "<span class='notice'>There is a character that already exists with the same name - <b>[C.real_name]</b>, please join with a different one.</span>"
|
||||
to_chat(usr, "<span class='notice'>There is a character that already exists with the same name - <b>[C.real_name]</b>, please join with a different one.</span>")
|
||||
return
|
||||
|
||||
if(!config.enter_allowed)
|
||||
usr << "<span class='notice'>There is an administrative lock on entering the game!</span>"
|
||||
to_chat(usr, "<span class='notice'>There is an administrative lock on entering the game!</span>")
|
||||
return
|
||||
else if(ticker && ticker.mode && ticker.mode.explosion_in_progress)
|
||||
usr << "<span class='danger'>The station is currently exploding. Joining would go poorly.</span>"
|
||||
to_chat(usr, "<span class='danger'>The station is currently exploding. Joining would go poorly.</span>")
|
||||
return
|
||||
|
||||
if(!is_alien_whitelisted(src, GLOB.all_species[client.prefs.species]))
|
||||
src << alert("You are currently not whitelisted to play [client.prefs.species].")
|
||||
alert(src, "You are currently not whitelisted to play [client.prefs.species].")
|
||||
return 0
|
||||
|
||||
var/datum/species/S = GLOB.all_species[client.prefs.species]
|
||||
if(!(S.spawn_flags & SPECIES_CAN_JOIN))
|
||||
src << alert("Your current species, [client.prefs.species], is not available for play on the station.")
|
||||
alert(src,"Your current species, [client.prefs.species], is not available for play on the station.")
|
||||
return 0
|
||||
|
||||
AttemptLateSpawn(href_list["SelectedJob"],client.prefs.spawnpoint)
|
||||
@@ -225,7 +224,7 @@
|
||||
var/sql = "INSERT INTO erro_privacy VALUES (null, Now(), '[src.ckey]', '[option]')"
|
||||
var/DBQuery/query_insert = dbcon.NewQuery(sql)
|
||||
query_insert.Execute()
|
||||
usr << "<b>Thank you for your vote!</b>"
|
||||
to_chat(usr, "<b>Thank you for your vote!</b>")
|
||||
usr << browse(null,"window=privacypoll")
|
||||
|
||||
if(!ready && href_list["preference"])
|
||||
@@ -263,7 +262,7 @@
|
||||
var/id_max = text2num(href_list["maxid"])
|
||||
|
||||
if( (id_max - id_min) > 100 ) //Basic exploit prevention
|
||||
usr << "The option ID difference is too big. Please contact administration or the database admin."
|
||||
to_chat(usr, "The option ID difference is too big. Please contact administration or the database admin.")
|
||||
return
|
||||
|
||||
for(var/optionid = id_min; optionid <= id_max; optionid++)
|
||||
@@ -282,7 +281,7 @@
|
||||
var/id_max = text2num(href_list["maxoptionid"])
|
||||
|
||||
if( (id_max - id_min) > 100 ) //Basic exploit prevention
|
||||
usr << "The option ID difference is too big. Please contact administration or the database admin."
|
||||
to_chat(usr, "The option ID difference is too big. Please contact administration or the database admin.")
|
||||
return
|
||||
|
||||
for(var/optionid = id_min; optionid <= id_max; optionid++)
|
||||
@@ -329,13 +328,13 @@
|
||||
if (src != usr)
|
||||
return 0
|
||||
if(!ticker || ticker.current_state != GAME_STATE_PLAYING)
|
||||
usr << "<font color='red'>The round is either not ready, or has already finished...</font>"
|
||||
to_chat(usr, "<font color='red'>The round is either not ready, or has already finished...</font>")
|
||||
return 0
|
||||
if(!config.enter_allowed)
|
||||
usr << "<span class='notice'>There is an administrative lock on entering the game!</span>"
|
||||
to_chat(usr, "<span class='notice'>There is an administrative lock on entering the game!</span>")
|
||||
return 0
|
||||
if(!IsJobAvailable(rank))
|
||||
src << alert("[rank] is not available. Please try another.")
|
||||
alert(src,"[rank] is not available. Please try another.")
|
||||
return 0
|
||||
if(!client)
|
||||
return 0
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
break
|
||||
|
||||
if(!found)
|
||||
usr << "<font color='red'>Poll question details not found.</font>"
|
||||
to_chat(usr, "<font color='red'>Poll question details not found.</font>")
|
||||
return
|
||||
|
||||
switch(polltype)
|
||||
@@ -360,7 +360,7 @@
|
||||
break
|
||||
|
||||
if(!validpoll)
|
||||
usr << "<font color='red'>Poll is not valid.</font>"
|
||||
to_chat(usr, "<font color='red'>Poll is not valid.</font>")
|
||||
return
|
||||
|
||||
var/DBQuery/select_query2 = dbcon.NewQuery("SELECT id FROM erro_poll_option WHERE id = [optionid] AND pollid = [pollid]")
|
||||
@@ -373,7 +373,7 @@
|
||||
break
|
||||
|
||||
if(!validoption)
|
||||
usr << "<font color='red'>Poll option is not valid.</font>"
|
||||
to_chat(usr, "<font color='red'>Poll option is not valid.</font>")
|
||||
return
|
||||
|
||||
var/alreadyvoted = 0
|
||||
@@ -387,11 +387,11 @@
|
||||
break
|
||||
|
||||
if(!multichoice && alreadyvoted)
|
||||
usr << "<font color='red'>You already voted in this poll.</font>"
|
||||
to_chat(usr, "<font color='red'>You already voted in this poll.</font>")
|
||||
return
|
||||
|
||||
if(multichoice && (alreadyvoted >= multiplechoiceoptions))
|
||||
usr << "<font color='red'>You already have more than [multiplechoiceoptions] logged votes on this poll. Enough is enough. Contact the database admin if this is an error.</font>"
|
||||
to_chat(usr, "<font color='red'>You already have more than [multiplechoiceoptions] logged votes on this poll. Enough is enough. Contact the database admin if this is an error.</font>")
|
||||
return
|
||||
|
||||
var/adminrank = "Player"
|
||||
@@ -402,7 +402,7 @@
|
||||
var/DBQuery/insert_query = dbcon.NewQuery("INSERT INTO erro_poll_vote (id ,datetime ,pollid ,optionid ,ckey ,ip ,adminrank) VALUES (null, Now(), [pollid], [optionid], '[usr.ckey]', '[usr.client.address]', '[adminrank]')")
|
||||
insert_query.Execute()
|
||||
|
||||
usr << "<font color='blue'>Vote successful.</font>"
|
||||
to_chat(usr, "<font color='blue'>Vote successful.</font>")
|
||||
usr << browse(null,"window=playerpoll")
|
||||
|
||||
|
||||
@@ -427,7 +427,7 @@
|
||||
break
|
||||
|
||||
if(!validpoll)
|
||||
usr << "<font color='red'>Poll is not valid.</font>"
|
||||
to_chat(usr, "<font color='red'>Poll is not valid.</font>")
|
||||
return
|
||||
|
||||
var/alreadyvoted = 0
|
||||
@@ -440,7 +440,7 @@
|
||||
break
|
||||
|
||||
if(alreadyvoted)
|
||||
usr << "<font color='red'>You already sent your feedback for this poll.</font>"
|
||||
to_chat(usr, "<font color='red'>You already sent your feedback for this poll.</font>")
|
||||
return
|
||||
|
||||
var/adminrank = "Player"
|
||||
@@ -454,13 +454,13 @@
|
||||
replytext = replacetext(replytext, "%BR%", "<BR>")
|
||||
|
||||
if(!text_pass)
|
||||
usr << "The text you entered was blank, contained illegal characters or was too long. Please correct the text and submit again."
|
||||
to_chat(usr, "The text you entered was blank, contained illegal characters or was too long. Please correct the text and submit again.")
|
||||
return
|
||||
|
||||
var/DBQuery/insert_query = dbcon.NewQuery("INSERT INTO erro_poll_textreply (id ,datetime ,pollid ,ckey ,ip ,replytext ,adminrank) VALUES (null, Now(), [pollid], '[usr.ckey]', '[usr.client.address]', '[replytext]', '[adminrank]')")
|
||||
insert_query.Execute()
|
||||
|
||||
usr << "<font color='blue'>Feedback logging successful.</font>"
|
||||
to_chat(usr, "<font color='blue'>Feedback logging successful.</font>")
|
||||
usr << browse(null,"window=playerpoll")
|
||||
|
||||
|
||||
@@ -485,7 +485,7 @@
|
||||
break
|
||||
|
||||
if(!validpoll)
|
||||
usr << "<font color='red'>Poll is not valid.</font>"
|
||||
to_chat(usr, "<font color='red'>Poll is not valid.</font>")
|
||||
return
|
||||
|
||||
var/DBQuery/select_query2 = dbcon.NewQuery("SELECT id FROM erro_poll_option WHERE id = [optionid] AND pollid = [pollid]")
|
||||
@@ -498,7 +498,7 @@
|
||||
break
|
||||
|
||||
if(!validoption)
|
||||
usr << "<font color='red'>Poll option is not valid.</font>"
|
||||
to_chat(usr, "<font color='red'>Poll option is not valid.</font>")
|
||||
return
|
||||
|
||||
var/alreadyvoted = 0
|
||||
@@ -511,7 +511,7 @@
|
||||
break
|
||||
|
||||
if(alreadyvoted)
|
||||
usr << "<font color='red'>You already voted in this poll.</font>"
|
||||
to_chat(usr, "<font color='red'>You already voted in this poll.</font>")
|
||||
return
|
||||
|
||||
var/adminrank = "Player"
|
||||
@@ -522,5 +522,5 @@
|
||||
var/DBQuery/insert_query = dbcon.NewQuery("INSERT INTO erro_poll_vote (id ,datetime ,pollid ,optionid ,ckey ,ip ,adminrank, rating) VALUES (null, Now(), [pollid], [optionid], '[usr.ckey]', '[usr.client.address]', '[adminrank]', [(isnull(rating)) ? "null" : rating])")
|
||||
insert_query.Execute()
|
||||
|
||||
usr << "<font color='blue'>Vote successful.</font>"
|
||||
to_chat(usr, "<font color='blue'>Vote successful.</font>")
|
||||
usr << browse(null,"window=playerpoll")
|
||||
@@ -176,7 +176,7 @@ var/global/list/SKILL_PRE = list("Engineer" = SKILL_ENGINEER, "Roboticist" = SKI
|
||||
setup_skills()
|
||||
|
||||
if(!M.skills || M.skills.len == 0)
|
||||
user << "There are no skills to display."
|
||||
to_chat(user, "There are no skills to display.")
|
||||
return
|
||||
|
||||
var/HTML = "<body>"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
set category = "IC"
|
||||
|
||||
if(say_disabled) //This is here to try to identify lag problems
|
||||
usr << "<font color='red'>Speech is currently admin-disabled.</font>"
|
||||
to_chat(usr, "<font color='red'>Speech is currently admin-disabled.</font>")
|
||||
return
|
||||
|
||||
message = sanitize(message)
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
/mob/proc/say_dead(var/message)
|
||||
if(say_disabled) //This is here to try to identify lag problems
|
||||
usr << "<span class='danger'>Speech is currently admin-disabled.</span>"
|
||||
to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>")
|
||||
return
|
||||
|
||||
if(!client)
|
||||
@@ -44,7 +44,7 @@
|
||||
return
|
||||
|
||||
if(!is_preference_enabled(/datum/client_preference/show_dsay))
|
||||
usr << "<span class='danger'>You have deadchat muted.</span>"
|
||||
to_chat(usr, "<span class='danger'>You have deadchat muted.</span>")
|
||||
return
|
||||
|
||||
message = encode_html_emphasis(message)
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
continue
|
||||
loc_landmark = tripai
|
||||
if (!loc_landmark)
|
||||
O << "Oh god sorry we can't find an unoccupied AI spawn location, so we're spawning you on top of someone."
|
||||
to_chat(O, "Oh god sorry we can't find an unoccupied AI spawn location, so we're spawning you on top of someone.")
|
||||
for(var/obj/effect/landmark/start/sloc in landmarks_list)
|
||||
if (sloc.name == "AI")
|
||||
loc_landmark = sloc
|
||||
@@ -210,7 +210,7 @@
|
||||
new_xeno.a_intent = I_HURT
|
||||
new_xeno.key = key
|
||||
|
||||
new_xeno << "<B>You are now an alien.</B>"
|
||||
to_chat(new_xeno, "<B>You are now an alien.</B>")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -232,7 +232,7 @@
|
||||
new_corgi.a_intent = I_HURT
|
||||
new_corgi.key = key
|
||||
|
||||
new_corgi << "<B>You are now a Corgi. Yap Yap!</B>"
|
||||
to_chat(new_corgi, "<B>You are now a Corgi. Yap Yap!</B>")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -242,7 +242,7 @@
|
||||
var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes
|
||||
|
||||
if(!safe_animal(mobpath))
|
||||
usr << "<font color='red'>Sorry but this mob type is currently unavailable.</font>"
|
||||
to_chat(usr, "<font color='red'>Sorry but this mob type is currently unavailable.</font>")
|
||||
return
|
||||
|
||||
if(transforming)
|
||||
@@ -265,7 +265,7 @@
|
||||
new_mob.a_intent = I_HURT
|
||||
|
||||
|
||||
new_mob << "You suddenly feel more... animalistic."
|
||||
to_chat(new_mob, "You suddenly feel more... animalistic.")
|
||||
spawn()
|
||||
qdel(src)
|
||||
return
|
||||
@@ -276,14 +276,14 @@
|
||||
var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes
|
||||
|
||||
if(!safe_animal(mobpath))
|
||||
usr << "<font color='red'>Sorry but this mob type is currently unavailable.</font>"
|
||||
to_chat(usr, "<font color='red'>Sorry but this mob type is currently unavailable.</font>")
|
||||
return
|
||||
|
||||
var/mob/new_mob = new mobpath(src.loc)
|
||||
|
||||
new_mob.key = key
|
||||
new_mob.a_intent = I_HURT
|
||||
new_mob << "You feel more... animalistic"
|
||||
to_chat(new_mob, "You feel more... animalistic")
|
||||
|
||||
qdel(src)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user