mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-19 02:56:14 +01:00
@@ -113,7 +113,7 @@
|
||||
//Wrapper procs that handle sanity and user feedback
|
||||
/atom/movable/proc/user_buckle_mob(mob/living/M, mob/user, var/forced = FALSE, var/silent = FALSE)
|
||||
if(!ticker)
|
||||
user << "<span class='warning'>You can't buckle anyone in before the game starts.</span>"
|
||||
to_chat(user, "<span class='warning'>You can't buckle anyone in before the game starts.</span>")
|
||||
return FALSE // Is this really needed?
|
||||
if(!user.Adjacent(M) || user.restrained() || user.stat || istype(user, /mob/living/silicon/pai))
|
||||
return FALSE
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
/obj/effect/alien/resin/attack_hand()
|
||||
usr.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
if (HULK in usr.mutations)
|
||||
usr << "<span class='notice'>You easily destroy the [name].</span>"
|
||||
to_chat(usr, "<span class='notice'>You easily destroy the [name].</span>")
|
||||
for(var/mob/O in oviewers(src))
|
||||
O.show_message("<span class='warning'>[usr] destroys the [name]!</span>", 1)
|
||||
health = 0
|
||||
@@ -125,7 +125,7 @@
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
usr << "<span class='notice'>You claw at the [name].</span>"
|
||||
to_chat(usr, "<span class='notice'>You claw at the [name].</span>")
|
||||
for(var/mob/O in oviewers(src))
|
||||
O.show_message("<span class='warning'>[usr] claws at the [name]!</span>", 1)
|
||||
health -= rand(5,10)
|
||||
@@ -476,14 +476,14 @@ Alien plants should do something if theres a lot of poison
|
||||
|
||||
switch(status)
|
||||
if(BURST)
|
||||
user << "<span class='warning'>You clear the hatched egg.</span>"
|
||||
to_chat(user, "<span class='warning'>You clear the hatched egg.</span>")
|
||||
qdel(src)
|
||||
return
|
||||
/* if(GROWING)
|
||||
user << "<span class='warning'>The child is not developed yet.</span>"
|
||||
to_chat(user, "<span class='warning'>The child is not developed yet.</span>")
|
||||
return
|
||||
if(GROWN)
|
||||
user << "<span class='warning'>You retrieve the child.</span>"
|
||||
to_chat(user, "<span class='warning'>You retrieve the child.</span>")
|
||||
Burst(0)
|
||||
return
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
user.visible_message("<span class='warning'>[user] smashes through the foamed metal.</span>", "<span class='notice'>You smash through the metal foam wall.</span>")
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='notice'>You hit the metal foam but bounce off it.</span>"
|
||||
to_chat(user, "<span class='notice'>You hit the metal foam but bounce off it.</span>")
|
||||
return
|
||||
|
||||
/obj/structure/foamedmetal/attackby(var/obj/item/I, var/mob/user)
|
||||
@@ -184,4 +184,4 @@
|
||||
user.visible_message("<span class='warning'>[user] smashes through the foamed metal.</span>", "<span class='notice'>You smash through the foamed metal with \the [I].</span>")
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='notice'>You hit the metal foam to no effect.</span>"
|
||||
to_chat(user, "<span class='notice'>You hit the metal foam to no effect.</span>")
|
||||
|
||||
@@ -130,7 +130,7 @@ var/global/list/image/splatter_cache=list()
|
||||
return
|
||||
var/taken = rand(1,amount)
|
||||
amount -= taken
|
||||
user << "<span class='notice'>You get some of \the [src] on your hands.</span>"
|
||||
to_chat(user, "<span class='notice'>You get some of \the [src] on your hands.</span>")
|
||||
if (!user.blood_DNA)
|
||||
user.blood_DNA = list()
|
||||
user.blood_DNA |= blood_DNA.Copy()
|
||||
@@ -176,7 +176,7 @@ var/global/list/image/splatter_cache=list()
|
||||
|
||||
/obj/effect/decal/cleanable/blood/writing/examine(mob/user)
|
||||
..(user)
|
||||
user << "It reads: <font color='[basecolor]'>\"[message]\"</font>"
|
||||
to_chat(user, "It reads: <font color='[basecolor]'>\"[message]\"</font>")
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs
|
||||
name = "gibs"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
anchored = 1
|
||||
|
||||
/obj/effect/decal/cleanable/ash/attack_hand(mob/user as mob)
|
||||
user << "<span class='notice'>[src] sifts through your fingers.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] sifts through your fingers.</span>")
|
||||
var/turf/simulated/floor/F = get_turf(src)
|
||||
if (istype(F))
|
||||
F.dirt += 4
|
||||
|
||||
@@ -33,12 +33,12 @@
|
||||
//must place on a wall and user must not be inside a closet/mecha/whatever
|
||||
var/turf/W = A
|
||||
if (!iswall(W) || !isturf(user.loc))
|
||||
user << "<span class='warning'>You can't place this here!</span>"
|
||||
to_chat(user, "<span class='warning'>You can't place this here!</span>")
|
||||
return
|
||||
|
||||
var/placement_dir = get_dir(user, W)
|
||||
if (!(placement_dir in cardinal))
|
||||
user << "<span class='warning'>You must stand directly in front of the wall you wish to place that on.</span>"
|
||||
to_chat(user, "<span class='warning'>You must stand directly in front of the wall you wish to place that on.</span>")
|
||||
return
|
||||
|
||||
//just check if there is a poster on or adjacent to the wall
|
||||
@@ -54,10 +54,10 @@
|
||||
break
|
||||
|
||||
if (stuff_on_wall)
|
||||
user << "<span class='notice'>There is already a poster there!</span>"
|
||||
to_chat(user, "<span class='notice'>There is already a poster there!</span>")
|
||||
return
|
||||
|
||||
user << "<span class='notice'>You start placing the poster on the wall...</span>" //Looks like it's uncluttered enough. Place the poster.
|
||||
to_chat(user, "<span class='notice'>You start placing the poster on the wall...</span>") //Looks like it's uncluttered enough. Place the poster.
|
||||
|
||||
var/obj/structure/sign/poster/P = new poster_type(user.loc, placement_dir=get_dir(user, W), serial=serial_number, itemtype = src.type)
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
if(!P) return
|
||||
|
||||
if(iswall(W) && user && P.loc == user.loc) //Let's check if everything is still there
|
||||
user << "<span class='notice'>You place the poster!</span>"
|
||||
to_chat(user, "<span class='notice'>You place the poster!</span>")
|
||||
else
|
||||
P.roll_and_drop(P.loc)
|
||||
|
||||
@@ -148,10 +148,10 @@
|
||||
if(W.is_wirecutter())
|
||||
playsound(src.loc, W.usesound, 100, 1)
|
||||
if(ruined)
|
||||
user << "<span class='notice'>You remove the remnants of the poster.</span>"
|
||||
to_chat(user, "<span class='notice'>You remove the remnants of the poster.</span>")
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='notice'>You carefully remove the poster from the wall.</span>"
|
||||
to_chat(user, "<span class='notice'>You carefully remove the poster from the wall.</span>")
|
||||
roll_and_drop(user.loc)
|
||||
return
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
icon_state = "mummified2"
|
||||
|
||||
/obj/effect/decal/remains/attack_hand(mob/user as mob)
|
||||
user << "<span class='notice'>[src] sinks together into a pile of ash.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] sinks together into a pile of ash.</span>")
|
||||
var/turf/simulated/floor/F = get_turf(src)
|
||||
if (istype(F))
|
||||
new /obj/effect/decal/cleanable/ash(F)
|
||||
|
||||
@@ -251,7 +251,7 @@ steam.start() -- spawns the effect
|
||||
B.damage = (B.damage/2)
|
||||
projectiles += B
|
||||
destroyed_event.register(B, src, /obj/effect/effect/smoke/bad/proc/on_projectile_delete)
|
||||
world << "Damage is: [B.damage]"
|
||||
to_world("Damage is: [B.damage]")
|
||||
return 1
|
||||
|
||||
/obj/effect/effect/smoke/bad/proc/on_projectile_delete(obj/item/projectile/beam/proj)
|
||||
@@ -511,10 +511,10 @@ steam.start() -- spawns the effect
|
||||
s.start()
|
||||
|
||||
for(var/mob/M in viewers(5, location))
|
||||
M << "<span class='warning'>The solution violently explodes.</span>"
|
||||
to_chat(M, "<span class='warning'>The solution violently explodes.</span>")
|
||||
for(var/mob/M in viewers(1, location))
|
||||
if (prob (50 * amount))
|
||||
M << "<span class='warning'>The explosion knocks you down.</span>"
|
||||
to_chat(M, "<span class='warning'>The explosion knocks you down.</span>")
|
||||
M.Weaken(rand(1,5))
|
||||
return
|
||||
else
|
||||
@@ -537,7 +537,7 @@ steam.start() -- spawns the effect
|
||||
flash = (amount/4) * flashing_factor
|
||||
|
||||
for(var/mob/M in viewers(8, location))
|
||||
M << "<span class='warning'>The solution violently explodes.</span>"
|
||||
to_chat(M, "<span class='warning'>The solution violently explodes.</span>")
|
||||
|
||||
explosion(
|
||||
location,
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
proc/Gib(atom/location, var/datum/dna/MobDNA = null)
|
||||
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
|
||||
world << "<span class='warning'>Gib list length mismatch!</span>"
|
||||
to_world("<span class='warning'>Gib list length mismatch!</span>")
|
||||
return
|
||||
|
||||
var/obj/effect/decal/cleanable/blood/gibs/gib = null
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
if (istype(W, /obj/item/weapon/shovel))
|
||||
user.visible_message("<span class='notice'>[user] begins to shovel away \the [src].</span>")
|
||||
if(do_after(user, 40))
|
||||
user << "<span class='notice'>You have finished shoveling!</span>"
|
||||
to_chat(user, "<span class='notice'>You have finished shoveling!</span>")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -238,7 +238,7 @@
|
||||
O.owner.apply_damage(1, TOX, O.organ_tag)
|
||||
if(world.time > last_itch + 30 SECONDS)
|
||||
last_itch = world.time
|
||||
O.owner << "<span class='notice'>Your [O.name] itches...</span>"
|
||||
to_chat(O.owner, "<span class='notice'>Your [O.name] itches...</span>")
|
||||
else if(prob(1))
|
||||
src.visible_message("<span class='notice'>\The [src] skitters.</span>")
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
|
||||
|
||||
var/took = (world.timeofday-start)/10
|
||||
//You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare
|
||||
if(Debug2) world.log << "## DEBUG: Explosion([x0],[y0],[z0])(d[devastation_range],h[heavy_impact_range],l[light_impact_range]): Took [took] seconds."
|
||||
if(Debug2) to_world_log("## DEBUG: Explosion([x0],[y0],[z0])(d[devastation_range],h[heavy_impact_range],l[light_impact_range]): Took [took] seconds.")
|
||||
|
||||
//Machines which report explosions.
|
||||
for(var/i,i<=doppler_arrays.len,i++)
|
||||
|
||||
+23
-23
@@ -220,10 +220,10 @@
|
||||
if (user.hand)
|
||||
temp = H.organs_by_name["l_hand"]
|
||||
if(temp && !temp.is_usable())
|
||||
user << "<span class='notice'>You try to move your [temp.name], but cannot!</span>"
|
||||
to_chat(user, "<span class='notice'>You try to move your [temp.name], but cannot!</span>")
|
||||
return
|
||||
if(!temp)
|
||||
user << "<span class='notice'>You try to use your hand, but realize it is no longer attached!</span>"
|
||||
to_chat(user, "<span class='notice'>You try to use your hand, but realize it is no longer attached!</span>")
|
||||
return
|
||||
|
||||
var/old_loc = src.loc
|
||||
@@ -369,12 +369,12 @@ var/list/global/slot_flags_enumeration = list(
|
||||
if(slot_wear_id)
|
||||
if(!H.w_uniform && (slot_w_uniform in mob_equip))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
to_chat(H, "<span class='warning'>You need a jumpsuit before you can attach this [name].</span>")
|
||||
return 0
|
||||
if(slot_l_store, slot_r_store)
|
||||
if(!H.w_uniform && (slot_w_uniform in mob_equip))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>You need a jumpsuit before you can attach this [name].</span>"
|
||||
to_chat(H, "<span class='warning'>You need a jumpsuit before you can attach this [name].</span>")
|
||||
return 0
|
||||
if(slot_flags & SLOT_DENYPOCKET)
|
||||
return 0
|
||||
@@ -383,11 +383,11 @@ var/list/global/slot_flags_enumeration = list(
|
||||
if(slot_s_store)
|
||||
if(!H.wear_suit && (slot_wear_suit in mob_equip))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>You need a suit before you can attach this [name].</span>"
|
||||
to_chat(H, "<span class='warning'>You need a suit before you can attach this [name].</span>")
|
||||
return 0
|
||||
if(!H.wear_suit.allowed)
|
||||
if(!disable_warning)
|
||||
usr << "<span class='warning'>You somehow have a suit with no defined allowed items for suit storage, stop that.</span>"
|
||||
to_chat(usr, "<span class='warning'>You somehow have a suit with no defined allowed items for suit storage, stop that.</span>")
|
||||
return 0
|
||||
if( !(istype(src, /obj/item/device/pda) || istype(src, /obj/item/weapon/pen) || is_type_in_list(src, H.wear_suit.allowed)) )
|
||||
return 0
|
||||
@@ -413,7 +413,7 @@ var/list/global/slot_flags_enumeration = list(
|
||||
break
|
||||
if(!allow)
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>You're not wearing anything you can attach this [name] to.</span>"
|
||||
to_chat(H, "<span class='warning'>You're not wearing anything you can attach this [name] to.</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -437,20 +437,20 @@ var/list/global/slot_flags_enumeration = list(
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !Adjacent(usr))
|
||||
return
|
||||
if((!istype(usr, /mob/living/carbon)) || (istype(usr, /mob/living/carbon/brain)))//Is humanoid, and is not a brain
|
||||
usr << "<span class='warning'>You can't pick things up!</span>"
|
||||
to_chat(usr, "<span class='warning'>You can't pick things up!</span>")
|
||||
return
|
||||
var/mob/living/carbon/C = usr
|
||||
if( usr.stat || usr.restrained() )//Is not asleep/dead and is not restrained
|
||||
usr << "<span class='warning'>You can't pick things up!</span>"
|
||||
to_chat(usr, "<span class='warning'>You can't pick things up!</span>")
|
||||
return
|
||||
if(src.anchored) //Object isn't anchored
|
||||
usr << "<span class='warning'>You can't pick that up!</span>"
|
||||
to_chat(usr, "<span class='warning'>You can't pick that up!</span>")
|
||||
return
|
||||
if(C.get_active_hand()) //Hand is not full
|
||||
usr << "<span class='warning'>Your hand is full.</span>"
|
||||
to_chat(usr, "<span class='warning'>Your hand is full.</span>")
|
||||
return
|
||||
if(!istype(src.loc, /turf)) //Object is on a turf
|
||||
usr << "<span class='warning'>You can't pick that up!</span>"
|
||||
to_chat(usr, "<span class='warning'>You can't pick that up!</span>")
|
||||
return
|
||||
//All checks are done, time to pick it up!
|
||||
usr.UnarmedAttack(src)
|
||||
@@ -485,11 +485,11 @@ var/list/global/slot_flags_enumeration = list(
|
||||
for(var/obj/item/protection in list(H.head, H.wear_mask, H.glasses))
|
||||
if(protection && (protection.body_parts_covered & EYES))
|
||||
// you can't stab someone in the eyes wearing a mask!
|
||||
user << "<span class='warning'>You're going to need to remove the eye covering first.</span>"
|
||||
to_chat(user, "<span class='warning'>You're going to need to remove the eye covering first.</span>")
|
||||
return
|
||||
|
||||
if(!M.has_eyes())
|
||||
user << "<span class='warning'>You cannot locate any eyes on [M]!</span>"
|
||||
to_chat(user, "<span class='warning'>You cannot locate any eyes on [M]!</span>")
|
||||
return
|
||||
|
||||
//this should absolutely trigger even if not aim-impaired in some way
|
||||
@@ -511,7 +511,7 @@ var/list/global/slot_flags_enumeration = list(
|
||||
//if((CLUMSY in user.mutations) && prob(50))
|
||||
// M = user
|
||||
/*
|
||||
M << "<span class='warning'>You stab yourself in the eye.</span>"
|
||||
to_chat(M, "<span class='warning'>You stab yourself in the eye.</span>")
|
||||
M.sdisabilities |= BLIND
|
||||
M.weakened += 4
|
||||
M.adjustBruteLoss(10)
|
||||
@@ -524,8 +524,8 @@ var/list/global/slot_flags_enumeration = list(
|
||||
if(H != user)
|
||||
for(var/mob/O in (viewers(M) - user - M))
|
||||
O.show_message("<span class='danger'>[M] has been stabbed in the eye with [src] by [user].</span>", 1)
|
||||
M << "<span class='danger'>[user] stabs you in the eye with [src]!</span>"
|
||||
user << "<span class='danger'>You stab [M] in the eye with [src]!</span>"
|
||||
to_chat(M, "<span class='danger'>[user] stabs you in the eye with [src]!</span>")
|
||||
to_chat(user, "<span class='danger'>You stab [M] in the eye with [src]!</span>")
|
||||
else
|
||||
user.visible_message( \
|
||||
"<span class='danger'>[user] has stabbed themself with [src]!</span>", \
|
||||
@@ -536,17 +536,17 @@ var/list/global/slot_flags_enumeration = list(
|
||||
if(eyes.damage >= eyes.min_bruised_damage)
|
||||
if(M.stat != 2)
|
||||
if(!(eyes.robotic >= ORGAN_ROBOT)) //robot eyes bleeding might be a bit silly
|
||||
M << "<span class='danger'>Your eyes start to bleed profusely!</span>"
|
||||
to_chat(M, "<span class='danger'>Your eyes start to bleed profusely!</span>")
|
||||
if(prob(50))
|
||||
if(M.stat != 2)
|
||||
M << "<span class='warning'>You drop what you're holding and clutch at your eyes!</span>"
|
||||
to_chat(M, "<span class='warning'>You drop what you're holding and clutch at your eyes!</span>")
|
||||
M.drop_item()
|
||||
M.eye_blurry += 10
|
||||
M.Paralyse(1)
|
||||
M.Weaken(4)
|
||||
if (eyes.damage >= eyes.min_broken_damage)
|
||||
if(M.stat != 2)
|
||||
M << "<span class='warning'>You go blind!</span>"
|
||||
to_chat(M, "<span class='warning'>You go blind!</span>")
|
||||
var/obj/item/organ/external/affecting = H.get_organ(BP_HEAD)
|
||||
if(affecting.take_damage(7))
|
||||
M:UpdateDamageIcon()
|
||||
@@ -636,13 +636,13 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
|
||||
var/cannotzoom
|
||||
|
||||
if((usr.stat && !zoom) || !(istype(usr,/mob/living/carbon/human)))
|
||||
usr << "You are unable to focus through the [devicename]"
|
||||
to_chat(usr, "You are unable to focus through the [devicename]")
|
||||
cannotzoom = 1
|
||||
else if(!zoom && global_hud.darkMask[1] in usr.client.screen)
|
||||
usr << "Your visor gets in the way of looking through the [devicename]"
|
||||
to_chat(usr, "Your visor gets in the way of looking through the [devicename]")
|
||||
cannotzoom = 1
|
||||
else if(!zoom && usr.get_active_hand() != src)
|
||||
usr << "You are too distracted to look through the [devicename], perhaps if it was in your active hand this might work better"
|
||||
to_chat(usr, "You are too distracted to look through the [devicename], perhaps if it was in your active hand this might work better")
|
||||
cannotzoom = 1
|
||||
|
||||
//We checked above if they are a human and returned already if they weren't.
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
ghost_query_type = /datum/ghost_query/apprentice
|
||||
|
||||
/obj/item/weapon/antag_spawner/technomancer_apprentice/attack_self(mob/user)
|
||||
user << "<span class='notice'>Teleporter attempting to lock on to your apprentice.</span>"
|
||||
to_chat(user, "<span class='notice'>Teleporter attempting to lock on to your apprentice.</span>")
|
||||
request_player()
|
||||
|
||||
/obj/item/weapon/antag_spawner/technomancer_apprentice/request_player()
|
||||
@@ -68,10 +68,10 @@
|
||||
C.prefs.copy_to(H)
|
||||
H.key = C.key
|
||||
|
||||
H << "<b>You are the Technomancer's apprentice! Your goal is to assist them in their mission at the [station_name()].</b>"
|
||||
H << "<b>Your service has not gone unrewarded, however. Studying under them, you have learned how to use a Manipulation Core \
|
||||
of your own. You also have a catalog, to purchase your own functions and equipment as you see fit.</b>"
|
||||
H << "<b>It would be wise to speak to your master, and learn what their plans are for today.</b>"
|
||||
to_chat(H, "<b>You are the Technomancer's apprentice! Your goal is to assist them in their mission at the [station_name()].</b>")
|
||||
to_chat(H, "<b>Your service has not gone unrewarded, however. Studying under them, you have learned how to use a Manipulation Core \
|
||||
of your own. You also have a catalog, to purchase your own functions and equipment as you see fit.</b>")
|
||||
to_chat(H, "<b>It would be wise to speak to your master, and learn what their plans are for today.</b>")
|
||||
|
||||
spawn(1)
|
||||
technomancers.add_antagonist(H.mind, 0, 1, 0, 0, 0)
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
/obj/item/blueprints/attack_self(mob/M as mob)
|
||||
if (!istype(M,/mob/living/carbon/human))
|
||||
M << "This stack of blue paper means nothing to you." //monkeys cannot into projecting
|
||||
to_chat(M, "This stack of blue paper means nothing to you.") //monkeys cannot into projecting
|
||||
return
|
||||
interact()
|
||||
return
|
||||
@@ -62,19 +62,19 @@
|
||||
switch(href_list["action"])
|
||||
if ("create_area")
|
||||
if (!(get_area_type() & can_create_areas_in))
|
||||
usr << "<span class='danger'>You can't make a new area here.</span>"
|
||||
to_chat(usr, "<span class='danger'>You can't make a new area here.</span>")
|
||||
interact()
|
||||
return
|
||||
create_area()
|
||||
if ("edit_area")
|
||||
if (!(get_area_type() & can_rename_areas_in))
|
||||
usr << "<span class='danger'>You can't rename this area.</span>"
|
||||
to_chat(usr, "<span class='danger'>You can't rename this area.</span>")
|
||||
interact()
|
||||
return
|
||||
edit_area()
|
||||
if ("expand_area")
|
||||
if (!(get_area_type() & can_expand_areas_in))
|
||||
usr << "<span class='danger'>You can't expand this area.</span>"
|
||||
to_chat(usr, "<span class='danger'>You can't expand this area.</span>")
|
||||
interact()
|
||||
return
|
||||
expand_area()
|
||||
@@ -132,20 +132,20 @@
|
||||
if(!istype(res,/list))
|
||||
switch(res)
|
||||
if(ROOM_ERR_SPACE)
|
||||
usr << "<span class='warning'>The new area must be completely airtight!</span>"
|
||||
to_chat(usr, "<span class='warning'>The new area must be completely airtight!</span>")
|
||||
return
|
||||
if(ROOM_ERR_TOOLARGE)
|
||||
usr << "<span class='warning'>The new area too large!</span>"
|
||||
to_chat(usr, "<span class='warning'>The new area too large!</span>")
|
||||
return
|
||||
else
|
||||
usr << "<span class='warning'>Error! Please notify administration!</span>"
|
||||
to_chat(usr, "<span class='warning'>Error! Please notify administration!</span>")
|
||||
return
|
||||
var/list/turf/turfs = res
|
||||
var/str = sanitizeSafe(input("New area name:","Blueprint Editing", ""), MAX_NAME_LEN)
|
||||
if(!str || !length(str)) //cancel
|
||||
return
|
||||
if(length(str) > 50)
|
||||
usr << "<span class='warning'>Name too long.</span>"
|
||||
to_chat(usr, "<span class='warning'>Name too long.</span>")
|
||||
return
|
||||
var/area/A = new
|
||||
A.name = str
|
||||
@@ -170,13 +170,13 @@
|
||||
if(!istype(res,/list))
|
||||
switch(res)
|
||||
if(ROOM_ERR_SPACE)
|
||||
usr << "<span class='warning'>The new area must be completely airtight!</span>"
|
||||
to_chat(usr, "<span class='warning'>The new area must be completely airtight!</span>")
|
||||
return
|
||||
if(ROOM_ERR_TOOLARGE)
|
||||
usr << "<span class='warning'>The new area too large!</span>"
|
||||
to_chat(usr, "<span class='warning'>The new area too large!</span>")
|
||||
return
|
||||
else
|
||||
usr << "<span class='warning'>Error! Please notify administration!</span>"
|
||||
to_chat(usr, "<span class='warning'>Error! Please notify administration!</span>")
|
||||
return
|
||||
var/list/turf/turfs = res
|
||||
|
||||
@@ -184,11 +184,11 @@
|
||||
for(var/turf/T in A.contents)
|
||||
turfs -= T // Don't add turfs already in A to A
|
||||
if(turfs.len == 0)
|
||||
usr << "<span class='warning'>\The [A] already covers the entire room.</span>"
|
||||
to_chat(usr, "<span class='warning'>\The [A] already covers the entire room.</span>")
|
||||
return
|
||||
|
||||
move_turfs_to_area(turfs, A)
|
||||
usr << "<span class='notice'>Expanded \the [A] by [turfs.len] turfs</span>"
|
||||
to_chat(usr, "<span class='notice'>Expanded \the [A] by [turfs.len] turfs</span>")
|
||||
spawn(5)
|
||||
interact()
|
||||
return
|
||||
@@ -206,11 +206,11 @@
|
||||
if(!str || !length(str) || str==prevname) //cancel
|
||||
return
|
||||
if(length(str) > 50)
|
||||
usr << "<span class='warning'>Text too long.</span>"
|
||||
to_chat(usr, "<span class='warning'>Text too long.</span>")
|
||||
return
|
||||
set_area_machinery_title(A,str,prevname)
|
||||
A.name = str
|
||||
usr << "<span class='notice'>You set the area '[prevname]' title to '[str]'.</span>"
|
||||
to_chat(usr, "<span class='notice'>You set the area '[prevname]' title to '[str]'.</span>")
|
||||
interact()
|
||||
return
|
||||
|
||||
@@ -286,13 +286,13 @@
|
||||
// Remove any existing
|
||||
seeAreaColors_remove()
|
||||
|
||||
usr << "<span class='notice'>\The [src] shows nearby areas in different colors.</span>"
|
||||
to_chat(usr, "<span class='notice'>\The [src] shows nearby areas in different colors.</span>")
|
||||
var/i = 0
|
||||
for(var/area/A in range(usr))
|
||||
if(get_area_type(A) == AREA_SPACE)
|
||||
continue // Don't overlay all of space!
|
||||
var/icon/areaColor = new('icons/misc/debug_rebuild.dmi', "[++i]")
|
||||
usr << "- [A] as [i]"
|
||||
to_chat(usr, "- [A] as [i]")
|
||||
for(var/turf/T in A.contents)
|
||||
usr << image(areaColor, T, "blueprints", TURF_LAYER)
|
||||
areaColor_turfs += T
|
||||
@@ -308,13 +308,13 @@
|
||||
if(!istype(res, /list))
|
||||
switch(res)
|
||||
if(ROOM_ERR_SPACE)
|
||||
usr << "<span class='warning'>The new area must be completely airtight!</span>"
|
||||
to_chat(usr, "<span class='warning'>The new area must be completely airtight!</span>")
|
||||
return
|
||||
if(ROOM_ERR_TOOLARGE)
|
||||
usr << "<span class='warning'>The new area too large!</span>"
|
||||
to_chat(usr, "<span class='warning'>The new area too large!</span>")
|
||||
return
|
||||
else
|
||||
usr << "<span class='danger'>Error! Please notify administration!</span>"
|
||||
to_chat(usr, "<span class='danger'>Error! Please notify administration!</span>")
|
||||
return
|
||||
// Okay we got a room, lets color it
|
||||
seeAreaColors_remove()
|
||||
@@ -322,7 +322,7 @@
|
||||
for(var/turf/T in res)
|
||||
usr << image(green, T, "blueprints", TURF_LAYER)
|
||||
areaColor_turfs += T
|
||||
usr << "<span class='notice'>The space covered by the new area is highlighted in green.</span>"
|
||||
to_chat(usr, "<span class='notice'>The space covered by the new area is highlighted in green.</span>")
|
||||
|
||||
/obj/item/blueprints/verb/seeAreaColors_remove()
|
||||
set src in usr
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
switch(spawn_chance)
|
||||
if(0 to 49)
|
||||
new /obj/random/gun/guarenteed(usr.loc)
|
||||
usr << "You got a thing!"
|
||||
to_chat(usr, "You got a thing!")
|
||||
if(50 to 99)
|
||||
new /obj/item/weapon/bikehorn/rubberducky(usr.loc)
|
||||
new /obj/item/weapon/bikehorn(usr.loc)
|
||||
usr << "You got two things!"
|
||||
to_chat(usr, "You got two things!")
|
||||
if(100)
|
||||
usr << "The box contained nothing!"
|
||||
to_chat(usr, "The box contained nothing!")
|
||||
return
|
||||
*/
|
||||
var/loot = pick(/obj/effect/landmark/costume,
|
||||
|
||||
@@ -111,13 +111,13 @@
|
||||
|
||||
/obj/item/weapon/pen/crayon/attack(mob/M as mob, mob/user as mob)
|
||||
if(M == user)
|
||||
user << "You take a bite of the crayon and swallow it."
|
||||
to_chat(user, "You take a bite of the crayon and swallow it.")
|
||||
user.nutrition += 1
|
||||
user.reagents.add_reagent("crayon_dust",min(5,uses)/3)
|
||||
if(uses)
|
||||
uses -= 5
|
||||
if(uses <= 0)
|
||||
to_chat(user,"<span class='warning'>You ate your crayon!</span>")
|
||||
to_chat(user, "<span class='warning'>You ate your crayon!</span>")
|
||||
qdel(src)
|
||||
else
|
||||
..()
|
||||
@@ -203,7 +203,7 @@
|
||||
if(uses)
|
||||
uses -= 5
|
||||
if(uses <= 0)
|
||||
to_chat(user,"<span class='warning'>You ate the marker!</span>")
|
||||
to_chat(user, "<span class='warning'>You ate the marker!</span>")
|
||||
qdel(src)
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -1146,7 +1146,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
|
||||
if(L)
|
||||
if(reception_message)
|
||||
L << reception_message
|
||||
to_chat(L,reception_message)
|
||||
SSnanoui.update_user_uis(L, src) // Update the receiving user's PDA UI so that they can see the new message
|
||||
|
||||
/obj/item/device/pda/proc/new_news(var/message)
|
||||
@@ -1389,11 +1389,11 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
var/reagents_length = A.reagents.reagent_list.len
|
||||
to_chat(user, "<span class='notice'>[reagents_length] chemical agent[reagents_length > 1 ? "s" : ""] found.</span>")
|
||||
for (var/re in A.reagents.reagent_list)
|
||||
to_chat(user,"<span class='notice'> [re]</span>")
|
||||
to_chat(user, "<span class='notice'> [re]</span>")
|
||||
else
|
||||
to_chat(user,"<span class='notice'>No active chemical agents found in [A].</span>")
|
||||
to_chat(user, "<span class='notice'>No active chemical agents found in [A].</span>")
|
||||
else
|
||||
to_chat(user,"<span class='notice'>No significantchemical agents found in [A].</span>")
|
||||
to_chat(user, "<span class='notice'>No significantchemical agents found in [A].</span>")
|
||||
|
||||
if(5)
|
||||
analyze_gases(A, user)
|
||||
@@ -1445,7 +1445,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
// feature to the PDA, which would better convey the availability of the feature, but this will work for now.
|
||||
|
||||
// Inform the user
|
||||
to_chat(user,"<span class='notice'>Paper scanned and OCRed to notekeeper.</span>") //concept of scanning paper copyright brainoblivion 2009
|
||||
to_chat(user, "<span class='notice'>Paper scanned and OCRed to notekeeper.</span>") //concept of scanning paper copyright brainoblivion 2009
|
||||
|
||||
|
||||
/obj/item/device/pda/proc/explode() //This needs tuning. //Sure did.
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
proc/post_signal(var/freq, var/key, var/value, var/key2, var/value2, var/key3, var/value3, s_filter)
|
||||
|
||||
//world << "Post: [freq]: [key]=[value], [key2]=[value2]"
|
||||
//to_world("Post: [freq]: [key]=[value], [key2]=[value2]")
|
||||
var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq)
|
||||
|
||||
if(!frequency) return
|
||||
@@ -57,9 +57,9 @@
|
||||
// var/obj/item/device/pda/P = src.loc
|
||||
|
||||
/*
|
||||
world << "recvd:[P] : [signal.source]"
|
||||
to_world("recvd:[P] : [signal.source]")
|
||||
for(var/d in signal.data)
|
||||
world << "- [d] = [signal.data[d]]"
|
||||
to_world("- [d] = [signal.data[d]]")
|
||||
*/
|
||||
if (signal.data["type"] == "secbot")
|
||||
if(!botlist)
|
||||
|
||||
@@ -25,11 +25,11 @@
|
||||
if(istype(W,/obj/item/stack/nanopaste))
|
||||
var/obj/item/stack/nanopaste/np = W
|
||||
if(np.use(1) && supply.get_free_space() >= efficiency)
|
||||
to_chat(user,"<span class='notice'>You convert some nanopaste into programmed nanites inside \the [src].</span>")
|
||||
to_chat(user, "<span class='notice'>You convert some nanopaste into programmed nanites inside \the [src].</span>")
|
||||
supply.add_reagent(id = "nifrepairnanites", amount = efficiency)
|
||||
update_icon()
|
||||
else if(supply.get_free_space() < efficiency)
|
||||
to_chat(user,"<span class='warning'>\The [src] is too full. Empty it into a container first.</span>")
|
||||
to_chat(user, "<span class='warning'>\The [src] is too full. Empty it into a container first.</span>")
|
||||
return
|
||||
|
||||
/obj/item/device/nifrepairer/update_icon()
|
||||
@@ -43,21 +43,21 @@
|
||||
return 0
|
||||
|
||||
if(!supply || !supply.total_volume)
|
||||
to_chat(user,"<span class='warning'>[src] is empty. Feed it nanopaste.</span>")
|
||||
to_chat(user, "<span class='warning'>[src] is empty. Feed it nanopaste.</span>")
|
||||
return 1
|
||||
|
||||
if(!target.reagents.get_free_space())
|
||||
user << "<span class='warning'>[target] is already full.</span>"
|
||||
to_chat(user, "<span class='warning'>[target] is already full.</span>")
|
||||
return 1
|
||||
|
||||
var/trans = supply.trans_to(target, 15)
|
||||
to_chat(user,"<span class='notice'>You transfer [trans] units of the programmed nanites to [target].</span>")
|
||||
to_chat(user, "<span class='notice'>You transfer [trans] units of the programmed nanites to [target].</span>")
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
/obj/item/device/nifrepairer/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
if(supply.total_volume)
|
||||
to_chat(user,"<span class='notice'>\The [src] contains [supply.total_volume] units of programmed nanites, ready for dispensing.</span>")
|
||||
to_chat(user, "<span class='notice'>\The [src] contains [supply.total_volume] units of programmed nanites, ready for dispensing.</span>")
|
||||
else
|
||||
to_chat(user,"<span class='notice'>\The [src] is empty and ready to accept nanopaste.</span>")
|
||||
to_chat(user, "<span class='notice'>\The [src] is empty and ready to accept nanopaste.</span>")
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
return ..()
|
||||
else
|
||||
M.death()
|
||||
user << "<b>ERROR ERROR ERROR</b>"
|
||||
to_chat(user, "<b>ERROR ERROR ERROR</b>")
|
||||
|
||||
/obj/item/device/aicard/attack_self(mob/user)
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
if(!active_dummy)
|
||||
if(istype(target,/obj/item) && !istype(target, /obj/item/weapon/disk/nuclear))
|
||||
playsound(get_turf(src), 'sound/weapons/flash.ogg', 100, 1, -6)
|
||||
user << "<span class='notice'>Scanned [target].</span>"
|
||||
to_chat(user, "<span class='notice'>Scanned [target].</span>")
|
||||
saved_item = target.type
|
||||
saved_icon = target.icon
|
||||
saved_icon_state = target.icon_state
|
||||
@@ -45,7 +45,7 @@
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6)
|
||||
qdel(active_dummy)
|
||||
active_dummy = null
|
||||
usr << "<span class='notice'>You deactivate the [src].</span>"
|
||||
to_chat(usr, "<span class='notice'>You deactivate the [src].</span>")
|
||||
var/obj/effect/overlay/T = new /obj/effect/overlay(get_turf(src))
|
||||
T.icon = 'icons/effects/effects.dmi'
|
||||
flick("emppulse",T)
|
||||
@@ -57,7 +57,7 @@
|
||||
var/obj/effect/dummy/chameleon/C = new /obj/effect/dummy/chameleon(usr.loc)
|
||||
C.activate(O, usr, saved_icon, saved_icon_state, saved_overlays, src)
|
||||
qdel(O)
|
||||
usr << "<span class='notice'>You activate the [src].</span>"
|
||||
to_chat(usr, "<span class='notice'>You activate the [src].</span>")
|
||||
var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src))
|
||||
T.icon = 'icons/effects/effects.dmi'
|
||||
flick("emppulse",T)
|
||||
@@ -104,22 +104,22 @@
|
||||
|
||||
/obj/effect/dummy/chameleon/attackby()
|
||||
for(var/mob/M in src)
|
||||
M << "<span class='warning'>Your chameleon-projector deactivates.</span>"
|
||||
to_chat(M, "<span class='warning'>Your chameleon-projector deactivates.</span>")
|
||||
master.disrupt()
|
||||
|
||||
/obj/effect/dummy/chameleon/attack_hand()
|
||||
for(var/mob/M in src)
|
||||
M << "<span class='warning'>Your chameleon-projector deactivates.</span>"
|
||||
to_chat(M, "<span class='warning'>Your chameleon-projector deactivates.</span>")
|
||||
master.disrupt()
|
||||
|
||||
/obj/effect/dummy/chameleon/ex_act()
|
||||
for(var/mob/M in src)
|
||||
M << "<span class='warning'>Your chameleon-projector deactivates.</span>"
|
||||
to_chat(M, "<span class='warning'>Your chameleon-projector deactivates.</span>")
|
||||
master.disrupt()
|
||||
|
||||
/obj/effect/dummy/chameleon/bullet_act()
|
||||
for(var/mob/M in src)
|
||||
M << "<span class='warning'>Your chameleon-projector deactivates.</span>"
|
||||
to_chat(M, "<span class='warning'>Your chameleon-projector deactivates.</span>")
|
||||
..()
|
||||
master.disrupt()
|
||||
|
||||
|
||||
@@ -206,15 +206,15 @@
|
||||
var/rendered = "\icon[src] <span class='message'>[text]</span>"
|
||||
for(var/obj/item/device/communicator/comm in communicating)
|
||||
var/turf/T = get_turf(comm)
|
||||
if(!T) return
|
||||
//VOREStation Edit Start for commlinks
|
||||
var/list/mobs_to_relay
|
||||
if(istype(comm,/obj/item/device/communicator/commlink))
|
||||
var/obj/item/device/communicator/commlink/CL = comm
|
||||
mobs_to_relay = list(CL.nif.human)
|
||||
else
|
||||
var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) //Range of 3 since it's a tiny video display
|
||||
mobs_to_relay = in_range["mobs"]
|
||||
if(!T) return
|
||||
//VOREStation Edit Start for commlinks
|
||||
var/list/mobs_to_relay
|
||||
if(istype(comm,/obj/item/device/communicator/commlink))
|
||||
var/obj/item/device/communicator/commlink/CL = comm
|
||||
mobs_to_relay = list(CL.nif.human)
|
||||
else
|
||||
var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) //Range of 3 since it's a tiny video display
|
||||
mobs_to_relay = in_range["mobs"]
|
||||
//VOREStation Edit End
|
||||
|
||||
for(var/mob/mob in mobs_to_relay) //We can't use visible_message(), or else we will get an infinite loop if two communicators hear each other.
|
||||
@@ -235,14 +235,14 @@
|
||||
|
||||
var/turf/T = get_turf(comm)
|
||||
if(!T) return
|
||||
//VOREStation Edit Start for commlinks
|
||||
var/list/mobs_to_relay
|
||||
if(istype(comm,/obj/item/device/communicator/commlink))
|
||||
var/obj/item/device/communicator/commlink/CL = comm
|
||||
mobs_to_relay = list(CL.nif.human)
|
||||
else
|
||||
var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) //Range of 3 since it's a tiny video display
|
||||
mobs_to_relay = in_range["mobs"]
|
||||
//VOREStation Edit Start for commlinks
|
||||
var/list/mobs_to_relay
|
||||
if(istype(comm,/obj/item/device/communicator/commlink))
|
||||
var/obj/item/device/communicator/commlink/CL = comm
|
||||
mobs_to_relay = list(CL.nif.human)
|
||||
else
|
||||
var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) //Range of 3 since it's a tiny video display
|
||||
mobs_to_relay = in_range["mobs"]
|
||||
//VOREStation Edit End
|
||||
|
||||
for(var/mob/mob in mobs_to_relay)
|
||||
@@ -363,13 +363,13 @@
|
||||
if(!Adjacent(user) || !video_source) return
|
||||
user.set_machine(video_source)
|
||||
user.reset_view(video_source)
|
||||
to_chat(user,"<span class='notice'>Now viewing video session. To leave camera view, close the communicator window OR: OOC -> Cancel Camera View</span>")
|
||||
to_chat(user,"<span class='notice'>To return to an active video session, use the communicator in your hand.</span>")
|
||||
to_chat(user, "<span class='notice'>Now viewing video session. To leave camera view, close the communicator window OR: OOC -> Cancel Camera View</span>")
|
||||
to_chat(user, "<span class='notice'>To return to an active video session, use the communicator in your hand.</span>")
|
||||
spawn(0)
|
||||
while(user.machine == video_source && Adjacent(user))
|
||||
var/turf/T = get_turf(video_source)
|
||||
if(!T || !is_on_same_plane_or_station(T.z, user.z) || !video_source.can_use())
|
||||
user << "<span class='warning'>The screen bursts into static, then goes black.</span>"
|
||||
to_chat(user, "<span class='warning'>The screen bursts into static, then goes black.</span>")
|
||||
video_cleanup(user)
|
||||
return
|
||||
sleep(10)
|
||||
@@ -395,4 +395,4 @@
|
||||
|
||||
visible_message(.)
|
||||
update_icon()
|
||||
|
||||
|
||||
|
||||
@@ -25,21 +25,21 @@
|
||||
if(istype(O, /obj/machinery/power/apc))
|
||||
var/obj/machinery/power/apc/A = O
|
||||
if(A.emagged || A.hacker)
|
||||
user << "<span class='warning'>There is a software error with the device.</span>"
|
||||
to_chat(user, "<span class='warning'>There is a software error with the device.</span>")
|
||||
else
|
||||
user << "<span class='notice'>The device's software appears to be fine.</span>"
|
||||
to_chat(user, "<span class='notice'>The device's software appears to be fine.</span>")
|
||||
return 1
|
||||
if(istype(O, /obj/machinery/door))
|
||||
var/obj/machinery/door/D = O
|
||||
if(D.operating == -1)
|
||||
user << "<span class='warning'>There is a software error with the device.</span>"
|
||||
to_chat(user, "<span class='warning'>There is a software error with the device.</span>")
|
||||
else
|
||||
user << "<span class='notice'>The device's software appears to be fine.</span>"
|
||||
to_chat(user, "<span class='notice'>The device's software appears to be fine.</span>")
|
||||
return 1
|
||||
else if(istype(O, /obj/machinery))
|
||||
var/obj/machinery/A = O
|
||||
if(A.emagged)
|
||||
user << "<span class='warning'>There is a software error with the device.</span>"
|
||||
to_chat(user, "<span class='warning'>There is a software error with the device.</span>")
|
||||
else
|
||||
user << "<span class='notice'>The device's software appears to be fine.</span>"
|
||||
to_chat(user, "<span class='notice'>The device's software appears to be fine.</span>")
|
||||
return 1
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
if(choice)
|
||||
brightness_level = choice
|
||||
power_usage = brightness_levels[choice]
|
||||
user << "<span class='notice'>You set the brightness level on \the [src] to [brightness_level].</span>"
|
||||
to_chat(user, "<span class='notice'>You set the brightness level on \the [src] to [brightness_level].</span>")
|
||||
update_icon()
|
||||
|
||||
/obj/item/device/flashlight/process()
|
||||
@@ -102,15 +102,15 @@
|
||||
else if(cell.charge > cell.maxcharge*0.75 && cell.charge <= cell.maxcharge)
|
||||
tempdesc += "It appears to have a high amount of power remaining."
|
||||
|
||||
user << "[tempdesc]"
|
||||
to_chat(user, "[tempdesc]")
|
||||
|
||||
/obj/item/device/flashlight/attack_self(mob/user)
|
||||
if(power_use)
|
||||
if(!isturf(user.loc))
|
||||
user << "You cannot turn the light on while in this [user.loc]." //To prevent some lighting anomalities.
|
||||
to_chat(user, "You cannot turn the light on while in this [user.loc].") //To prevent some lighting anomalities.
|
||||
return 0
|
||||
if(!cell || cell.charge == 0)
|
||||
user << "You flick the switch on [src], but nothing happens."
|
||||
to_chat(user, "You flick the switch on [src], but nothing happens.")
|
||||
return 0
|
||||
on = !on
|
||||
playsound(src.loc, 'sound/weapons/empty.ogg', 15, 1, -3)
|
||||
@@ -134,38 +134,38 @@
|
||||
if(istype(H))
|
||||
for(var/obj/item/clothing/C in list(H.head,H.wear_mask,H.glasses))
|
||||
if(istype(C) && (C.body_parts_covered & EYES))
|
||||
user << "<span class='warning'>You're going to need to remove [C.name] first.</span>"
|
||||
to_chat(user, "<span class='warning'>You're going to need to remove [C.name] first.</span>")
|
||||
return
|
||||
|
||||
var/obj/item/organ/vision
|
||||
if(H.species.vision_organ)
|
||||
vision = H.internal_organs_by_name[H.species.vision_organ]
|
||||
if(!vision)
|
||||
user << "<span class='warning'>You can't find any [H.species.vision_organ ? H.species.vision_organ : "eyes"] on [H]!</span>"
|
||||
to_chat(user, "<span class='warning'>You can't find any [H.species.vision_organ ? H.species.vision_organ : "eyes"] on [H]!</span>")
|
||||
|
||||
user.visible_message("<span class='notice'>\The [user] directs [src] to [M]'s eyes.</span>", \
|
||||
"<span class='notice'>You direct [src] to [M]'s eyes.</span>")
|
||||
if(H != user) //can't look into your own eyes buster
|
||||
if(M.stat == DEAD || M.blinded) //mob is dead or fully blind
|
||||
user << "<span class='warning'>\The [M]'s pupils do not react to the light!</span>"
|
||||
to_chat(user, "<span class='warning'>\The [M]'s pupils do not react to the light!</span>")
|
||||
return
|
||||
if(XRAY in M.mutations)
|
||||
user << "<span class='notice'>\The [M] pupils give an eerie glow!</span>"
|
||||
to_chat(user, "<span class='notice'>\The [M] pupils give an eerie glow!</span>")
|
||||
if(vision.is_bruised())
|
||||
user << "<span class='warning'>There's visible damage to [M]'s [vision.name]!</span>"
|
||||
to_chat(user, "<span class='warning'>There's visible damage to [M]'s [vision.name]!</span>")
|
||||
else if(M.eye_blurry)
|
||||
user << "<span class='notice'>\The [M]'s pupils react slower than normally.</span>"
|
||||
to_chat(user, "<span class='notice'>\The [M]'s pupils react slower than normally.</span>")
|
||||
if(M.getBrainLoss() > 15)
|
||||
user << "<span class='notice'>There's visible lag between left and right pupils' reactions.</span>"
|
||||
to_chat(user, "<span class='notice'>There's visible lag between left and right pupils' reactions.</span>")
|
||||
|
||||
var/list/pinpoint = list("oxycodone"=1,"tramadol"=5)
|
||||
var/list/dilating = list("space_drugs"=5,"mindbreaker"=1)
|
||||
if(M.reagents.has_any_reagent(pinpoint) || H.ingested.has_any_reagent(pinpoint))
|
||||
user << "<span class='notice'>\The [M]'s pupils are already pinpoint and cannot narrow any more.</span>"
|
||||
to_chat(user, "<span class='notice'>\The [M]'s pupils are already pinpoint and cannot narrow any more.</span>")
|
||||
else if(M.reagents.has_any_reagent(dilating) || H.ingested.has_any_reagent(dilating))
|
||||
user << "<span class='notice'>\The [M]'s pupils narrow slightly, but are still very dilated.</span>"
|
||||
to_chat(user, "<span class='notice'>\The [M]'s pupils narrow slightly, but are still very dilated.</span>")
|
||||
else
|
||||
user << "<span class='notice'>\The [M]'s pupils narrow.</span>"
|
||||
to_chat(user, "<span class='notice'>\The [M]'s pupils narrow.</span>")
|
||||
|
||||
user.setClickCooldown(user.get_attack_speed(src)) //can be used offensively
|
||||
M.flash_eyes()
|
||||
@@ -178,7 +178,7 @@
|
||||
cell.update_icon()
|
||||
user.put_in_hands(cell)
|
||||
cell = null
|
||||
user << "<span class='notice'>You remove the cell from the [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You remove the cell from the [src].</span>")
|
||||
playsound(src, 'sound/machines/button.ogg', 30, 1, 0)
|
||||
on = 0
|
||||
update_icon()
|
||||
@@ -227,13 +227,13 @@
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
cell = W
|
||||
user << "<span class='notice'>You install a cell in \the [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You install a cell in \the [src].</span>")
|
||||
playsound(src, 'sound/machines/button.ogg', 30, 1, 0)
|
||||
update_icon()
|
||||
else
|
||||
user << "<span class='notice'>\The [src] already has a cell.</span>"
|
||||
to_chat(user, "<span class='notice'>\The [src] already has a cell.</span>")
|
||||
else
|
||||
user << "<span class='notice'>\The [src] cannot use that type of cell.</span>"
|
||||
to_chat(user, "<span class='notice'>\The [src] cannot use that type of cell.</span>")
|
||||
|
||||
else
|
||||
..()
|
||||
@@ -358,7 +358,7 @@
|
||||
|
||||
// Usual checks
|
||||
if(!fuel)
|
||||
user << "<span class='notice'>It's out of fuel.</span>"
|
||||
to_chat(user, "<span class='notice'>It's out of fuel.</span>")
|
||||
return
|
||||
if(on)
|
||||
return
|
||||
@@ -412,7 +412,7 @@
|
||||
/obj/item/device/flashlight/glowstick/attack_self(mob/user)
|
||||
|
||||
if(!fuel)
|
||||
user << "<span class='notice'>The glowstick has already been turned on.</span>"
|
||||
to_chat(user, "<span class='notice'>The glowstick has already been turned on.</span>")
|
||||
return
|
||||
if(on)
|
||||
return
|
||||
|
||||
@@ -45,11 +45,11 @@
|
||||
|
||||
var/turf/simulated/floor/F = A
|
||||
if(!istype(F))
|
||||
user << "<span class='warning'>\The [src] can only be used on station flooring.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] can only be used on station flooring.</span>")
|
||||
return
|
||||
|
||||
if(!F.flooring || !F.flooring.can_paint || F.broken || F.burnt)
|
||||
user << "<span class='warning'>\The [src] cannot paint broken or missing tiles.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] cannot paint broken or missing tiles.</span>")
|
||||
return
|
||||
|
||||
var/list/decal_data = decals[decal]
|
||||
@@ -63,11 +63,11 @@
|
||||
config_error = 1
|
||||
|
||||
if(config_error)
|
||||
user << "<span class='warning'>\The [src] flashes an error light. You might need to reconfigure it.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] flashes an error light. You might need to reconfigure it.</span>")
|
||||
return
|
||||
|
||||
if(F.decals && F.decals.len > 5 && painting_decal != /obj/effect/floor_decal/reset)
|
||||
user << "<span class='warning'>\The [F] has been painted too much; you need to clear it off.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [F] has been painted too much; you need to clear it off.</span>")
|
||||
return
|
||||
|
||||
var/painting_dir = 0
|
||||
@@ -111,7 +111,7 @@
|
||||
|
||||
/obj/item/device/floor_painter/examine(mob/user)
|
||||
..(user)
|
||||
user << "It is configured to produce the '[decal]' decal with a direction of '[paint_dir]' using [paint_colour] paint."
|
||||
to_chat(user, "It is configured to produce the '[decal]' decal with a direction of '[paint_dir]' using [paint_colour] paint.")
|
||||
|
||||
/obj/item/device/floor_painter/verb/choose_colour()
|
||||
set name = "Choose Colour"
|
||||
@@ -124,7 +124,7 @@
|
||||
var/new_colour = input(usr, "Choose a colour.", "Floor painter", paint_colour) as color|null
|
||||
if(new_colour && new_colour != paint_colour)
|
||||
paint_colour = new_colour
|
||||
usr << "<span class='notice'>You set \the [src] to paint with <font color='[paint_colour]'>a new colour</font>.</span>"
|
||||
to_chat(usr, "<span class='notice'>You set \the [src] to paint with <font color='[paint_colour]'>a new colour</font>.</span>")
|
||||
|
||||
/obj/item/device/floor_painter/verb/choose_decal()
|
||||
set name = "Choose Decal"
|
||||
@@ -138,7 +138,7 @@
|
||||
var/new_decal = input("Select a decal.") as null|anything in decals
|
||||
if(new_decal && !isnull(decals[new_decal]))
|
||||
decal = new_decal
|
||||
usr << "<span class='notice'>You set \the [src] decal to '[decal]'.</span>"
|
||||
to_chat(usr, "<span class='notice'>You set \the [src] decal to '[decal]'.</span>")
|
||||
|
||||
/obj/item/device/floor_painter/verb/choose_direction()
|
||||
set name = "Choose Direction"
|
||||
@@ -152,4 +152,4 @@
|
||||
var/new_dir = input("Select a direction.") as null|anything in paint_dirs
|
||||
if(new_dir && !isnull(paint_dirs[new_dir]))
|
||||
paint_dir = new_dir
|
||||
usr << "<span class='notice'>You set \the [src] direction to '[paint_dir]'.</span>"
|
||||
to_chat(usr, "<span class='notice'>You set \the [src] direction to '[paint_dir]'.</span>")
|
||||
|
||||
@@ -44,27 +44,27 @@
|
||||
|
||||
/obj/item/device/multitool/hacktool/proc/attempt_hack(var/mob/user, var/atom/target)
|
||||
if(is_hacking)
|
||||
user << "<span class='warning'>You are already hacking!</span>"
|
||||
to_chat(user, "<span class='warning'>You are already hacking!</span>")
|
||||
return 0
|
||||
if(!is_type_in_list(target, supported_types))
|
||||
user << "\icon[src] <span class='warning'>Unable to hack this target!</span>"
|
||||
to_chat(user, "\icon[src] <span class='warning'>Unable to hack this target!</span>")
|
||||
return 0
|
||||
var/found = known_targets.Find(target)
|
||||
if(found)
|
||||
known_targets.Swap(1, found) // Move the last hacked item first
|
||||
return 1
|
||||
|
||||
user << "<span class='notice'>You begin hacking \the [target]...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin hacking \the [target]...</span>")
|
||||
is_hacking = 1
|
||||
// On average hackin takes ~30 seconds. Fairly small random span to avoid people simply aborting and trying again
|
||||
var/hack_result = do_after(user, (20 SECONDS + rand(0, 10 SECONDS) + rand(0, 10 SECONDS)))
|
||||
is_hacking = 0
|
||||
|
||||
if(hack_result && in_hack_mode)
|
||||
user << "<span class='notice'>Your hacking attempt was succesful!</span>"
|
||||
to_chat(user, "<span class='notice'>Your hacking attempt was succesful!</span>")
|
||||
user.playsound_local(get_turf(src), 'sound/instruments/piano/An6.ogg', 50)
|
||||
else
|
||||
user << "<span class='warning'>Your hacking attempt failed!</span>"
|
||||
to_chat(user, "<span class='warning'>Your hacking attempt failed!</span>")
|
||||
return 0
|
||||
|
||||
known_targets.Insert(1, target) // Insert the newly hacked target first,
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
if(istype(A,ctype))
|
||||
non_closet = 1
|
||||
if(non_closet)
|
||||
user << "<span class='warning'>\The [src] can only be used on closets.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] can only be used on closets.</span>")
|
||||
return
|
||||
|
||||
var/config_error
|
||||
@@ -89,7 +89,7 @@
|
||||
if(istype(A,/obj/structure/closet/secure_closet))
|
||||
var/obj/structure/closet/secure_closet/F = A
|
||||
if(F.broken)
|
||||
user << "<span class='warning'>\The [src] cannot paint broken closets.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] cannot paint broken closets.</span>")
|
||||
return
|
||||
|
||||
var/list/colour_data = colours_secure[colour_secure]
|
||||
@@ -114,7 +114,7 @@
|
||||
F.update_icon()
|
||||
|
||||
if(config_error)
|
||||
user << "<span class='warning'>\The [src] flashes an error light. You might need to reconfigure it.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] flashes an error light. You might need to reconfigure it.</span>")
|
||||
return
|
||||
|
||||
/obj/item/device/closet_painter/attack_self(var/mob/user)
|
||||
@@ -126,7 +126,7 @@
|
||||
|
||||
/obj/item/device/closet_painter/examine(mob/user)
|
||||
..(user)
|
||||
user << "It is configured to produce the '[colour]' paint scheme or the '[colour_secure]' secure closet paint scheme."
|
||||
to_chat(user, "It is configured to produce the '[colour]' paint scheme or the '[colour_secure]' secure closet paint scheme.")
|
||||
|
||||
/obj/item/device/closet_painter/verb/choose_colour()
|
||||
set name = "Choose Colour"
|
||||
@@ -140,7 +140,7 @@
|
||||
var/new_colour = input("Select a colour.") as null|anything in colours
|
||||
if(new_colour && !isnull(colours[new_colour]))
|
||||
colour = new_colour
|
||||
usr << "<span class='notice'>You set \the [src] regular closet colour to '[colour]'.</span>"
|
||||
to_chat(usr, "<span class='notice'>You set \the [src] regular closet colour to '[colour]'.</span>")
|
||||
|
||||
/obj/item/device/closet_painter/verb/choose_colour_secure()
|
||||
set name = "Choose Secure Colour"
|
||||
@@ -154,4 +154,4 @@
|
||||
var/new_colour_secure = input("Select a colour.") as null|anything in colours_secure
|
||||
if(new_colour_secure && !isnull(colours_secure[new_colour_secure]))
|
||||
colour_secure = new_colour_secure
|
||||
usr << "<span class='notice'>You set \the [src] secure closet colour to '[colour_secure]'.</span>"
|
||||
to_chat(usr, "<span class='notice'>You set \the [src] secure closet colour to '[colour_secure]'.</span>")
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
return //it shouldn't be null, okay?
|
||||
|
||||
if(!parts)
|
||||
user << "<span class='warning'>This kit has no parts for this modification left.</span>"
|
||||
to_chat(user, "<span class='warning'>This kit has no parts for this modification left.</span>")
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
return
|
||||
@@ -34,17 +34,17 @@
|
||||
|
||||
var/obj/item/clothing/I = O
|
||||
if (!istype(I) || !allowed)
|
||||
user << "<span class='notice'>[src] is unable to modify that.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] is unable to modify that.</span>")
|
||||
return
|
||||
|
||||
var/excluding = ("exclude" in I.species_restricted)
|
||||
var/in_list = (target_species in I.species_restricted)
|
||||
if (excluding ^ in_list)
|
||||
user << "<span class='notice'>[I] is already modified.</span>"
|
||||
to_chat(user, "<span class='notice'>[I] is already modified.</span>")
|
||||
return
|
||||
|
||||
if(!isturf(O.loc))
|
||||
user << "<span class='warning'>[O] must be safely placed on the ground for modification.</span>"
|
||||
to_chat(user, "<span class='warning'>[O] must be safely placed on the ground for modification.</span>")
|
||||
return
|
||||
|
||||
playsound(src.loc, O.usesound, 100, 1)
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
/obj/item/device/modkit/examine(mob/user)
|
||||
..(user)
|
||||
user << "It looks as though it modifies hardsuits to fit [target_species] users."
|
||||
to_chat(user, "It looks as though it modifies hardsuits to fit [target_species] users.")
|
||||
|
||||
/obj/item/device/modkit/tajaran
|
||||
name = "tajaran hardsuit modification kit"
|
||||
|
||||
@@ -239,12 +239,12 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/device/paicard)
|
||||
return
|
||||
var/mob/M = usr
|
||||
if(!istype(M, /mob/living/carbon))
|
||||
usr << "<font color=blue>You don't have any DNA, or your DNA is incompatible with this device.</font>"
|
||||
to_chat(usr, "<font color=blue>You don't have any DNA, or your DNA is incompatible with this device.</font>")
|
||||
else
|
||||
var/datum/dna/dna = usr.dna
|
||||
pai.master = M.real_name
|
||||
pai.master_dna = dna.unique_enzymes
|
||||
pai << "<font color = red><h3>You have been bound to a new master.</h3></font>"
|
||||
to_chat(pai, "<font color = red><h3>You have been bound to a new master.</h3></font>")
|
||||
if(href_list["request"])
|
||||
src.looking_for_personality = 1
|
||||
paiController.findPAI(src, usr)
|
||||
@@ -252,10 +252,10 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/device/paicard)
|
||||
var/confirm = input("Are you CERTAIN you wish to delete the current personality? This action cannot be undone.", "Personality Wipe") in list("Yes", "No")
|
||||
if(confirm == "Yes")
|
||||
for(var/mob/M in src)
|
||||
M << "<font color = #ff0000><h2>You feel yourself slipping away from reality.</h2></font>"
|
||||
M << "<font color = #ff4d4d><h3>Byte by byte you lose your sense of self.</h3></font>"
|
||||
M << "<font color = #ff8787><h4>Your mental faculties leave you.</h4></font>"
|
||||
M << "<font color = #ffc4c4><h5>oblivion... </h5></font>"
|
||||
to_chat(M, "<font color = #ff0000><h2>You feel yourself slipping away from reality.</h2></font>")
|
||||
to_chat(M, "<font color = #ff4d4d><h3>Byte by byte you lose your sense of self.</h3></font>")
|
||||
to_chat(M, "<font color = #ff8787><h4>Your mental faculties leave you.</h4></font>")
|
||||
to_chat(M, "<font color = #ffc4c4><h5>oblivion... </h5></font>")
|
||||
M.death(0)
|
||||
removePersonality()
|
||||
if(href_list["wires"])
|
||||
@@ -269,9 +269,9 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/device/paicard)
|
||||
var/newlaws = sanitize(input("Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", pai.pai_laws) as message)
|
||||
if(newlaws)
|
||||
pai.pai_laws = newlaws
|
||||
pai << "Your supplemental directives have been updated. Your new directives are:"
|
||||
pai << "Prime Directive: <br>[pai.pai_law0]"
|
||||
pai << "Supplemental Directives: <br>[pai.pai_laws]"
|
||||
to_chat(pai, "Your supplemental directives have been updated. Your new directives are:")
|
||||
to_chat(pai, "Prime Directive: <br>[pai.pai_law0]")
|
||||
to_chat(pai, "Supplemental Directives: <br>[pai.pai_laws]")
|
||||
attack_self(usr)
|
||||
|
||||
// WIRE_SIGNAL = 1
|
||||
|
||||
@@ -28,4 +28,4 @@
|
||||
|
||||
/obj/item/device/pipe_painter/examine(mob/user)
|
||||
..(user)
|
||||
user << "It is in [mode] mode."
|
||||
to_chat(user, "It is in [mode] mode.")
|
||||
|
||||
@@ -44,7 +44,7 @@ GLOBAL_LIST_BOILERPLATE(all_beacons, /obj/item/device/radio/beacon)
|
||||
|
||||
/obj/item/device/radio/beacon/syndicate/attack_self(mob/user as mob)
|
||||
if(user)
|
||||
user << "<span class='notice'>Locked In</span>"
|
||||
to_chat(user, "<span class='notice'>Locked In</span>")
|
||||
new /obj/machinery/power/singularity_beacon/syndicate( user.loc )
|
||||
playsound(src, 'sound/effects/pop.ogg', 100, 1, 1)
|
||||
qdel(src)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
/obj/item/device/radio/electropack/attack_hand(mob/living/user as mob)
|
||||
if(src == user.back)
|
||||
user << "<span class='notice'>You need help taking this off!</span>"
|
||||
to_chat(user, "<span class='notice'>You need help taking this off!</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
..()
|
||||
if(istype(W, /obj/item/clothing/head/helmet))
|
||||
if(!b_stat)
|
||||
user << "<span class='notice'>[src] is not ready to be attached!</span>"
|
||||
to_chat(user, "<span class='notice'>[src] is not ready to be attached!</span>")
|
||||
return
|
||||
var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user )
|
||||
A.icon = 'icons/obj/assemblies.dmi'
|
||||
@@ -95,7 +95,7 @@
|
||||
sleep(50)
|
||||
if(M)
|
||||
M.moved_recently = 0
|
||||
M << "<span class='danger'>You feel a sharp shock!</span>"
|
||||
to_chat(M, "<span class='danger'>You feel a sharp shock!</span>")
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(3, 1, M)
|
||||
s.start()
|
||||
|
||||
@@ -239,7 +239,7 @@ var/global/list/default_medbay_channels = list(
|
||||
var/datum/radio_frequency/connection = null
|
||||
if(channel && channels && channels.len > 0)
|
||||
if (channel == "department")
|
||||
//world << "DEBUG: channel=\"[channel]\" switching to \"[channels[1]]\""
|
||||
//to_world("DEBUG: channel=\"[channel]\" switching to \"[channels[1]]\"")
|
||||
channel = channels[1]
|
||||
connection = secure_radio_connections[channel]
|
||||
else
|
||||
@@ -361,7 +361,7 @@ var/global/list/default_medbay_channels = list(
|
||||
var/list/jamming = is_jammed(src)
|
||||
if(jamming)
|
||||
var/distance = jamming["distance"]
|
||||
to_chat(M,"<span class='danger'>\icon[src] You hear the [distance <= 2 ? "loud hiss" : "soft hiss"] of static.</span>")
|
||||
to_chat(M, "<span class='danger'>\icon[src] You hear the [distance <= 2 ? "loud hiss" : "soft hiss"] of static.</span>")
|
||||
return FALSE
|
||||
|
||||
// First, we want to generate a new radio signal
|
||||
@@ -415,7 +415,7 @@ var/global/list/default_medbay_channels = list(
|
||||
return TRUE //Huzzah, sent via subspace
|
||||
|
||||
else if(adhoc_fallback) //Less huzzah, we have to fallback
|
||||
to_chat(loc,"<span class='warning'>\The [src] pings as it falls back to local radio transmission.</span>")
|
||||
to_chat(loc, "<span class='warning'>\The [src] pings as it falls back to local radio transmission.</span>")
|
||||
subspace_transmission = FALSE
|
||||
return Broadcast_Message(connection, M, voicemask, pick(M.speak_emote),
|
||||
src, message, displayname, jobname, real_name, M.voice_name,
|
||||
@@ -468,7 +468,7 @@ var/global/list/default_medbay_channels = list(
|
||||
|
||||
if(signal.data["done"] && position.z in signal.data["level"])
|
||||
if(adhoc_fallback)
|
||||
to_chat(loc,"<span class='notice'>\The [src] pings as it reestablishes subspace communications.</span>")
|
||||
to_chat(loc, "<span class='notice'>\The [src] pings as it reestablishes subspace communications.</span>")
|
||||
subspace_transmission = TRUE
|
||||
// we're done here.
|
||||
return TRUE
|
||||
|
||||
@@ -31,7 +31,7 @@ effective or pretty fucking useless.
|
||||
/obj/item/device/batterer/attack_self(mob/living/carbon/user as mob, flag = 0, emp = 0)
|
||||
if(!user) return
|
||||
if(times_used >= max_uses)
|
||||
user << "<span class='warning'>The mind batterer has been burnt out!</span>"
|
||||
to_chat(user, "<span class='warning'>The mind batterer has been burnt out!</span>")
|
||||
return
|
||||
|
||||
var/list/affected = list()
|
||||
@@ -43,15 +43,15 @@ effective or pretty fucking useless.
|
||||
M.Weaken(rand(10,20))
|
||||
if(prob(25))
|
||||
M.Stun(rand(5,10))
|
||||
M << "<span class='danger'>You feel a tremendous, paralyzing wave flood your mind.</span>"
|
||||
to_chat(M, "<span class='danger'>You feel a tremendous, paralyzing wave flood your mind.</span>")
|
||||
|
||||
else
|
||||
M << "<span class='danger'>You feel a sudden, electric jolt travel through your head.</span>"
|
||||
to_chat(M, "<span class='danger'>You feel a sudden, electric jolt travel through your head.</span>")
|
||||
|
||||
add_attack_logs(user,affected,"Used a [name]")
|
||||
|
||||
playsound(src.loc, 'sound/misc/interference.ogg', 50, 1)
|
||||
user << "<span class='notice'>You trigger [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You trigger [src].</span>")
|
||||
times_used += 1
|
||||
if(times_used >= max_uses)
|
||||
icon_state = "battererburnt"
|
||||
|
||||
@@ -20,19 +20,19 @@
|
||||
var/turf/location = get_turf(src) // For admin logs
|
||||
if(istype(item, /obj/item/weapon/tank))
|
||||
if(tank_one && tank_two)
|
||||
user << "<span class='warning'>There are already two tanks attached, remove one first.</span>"
|
||||
to_chat(user, "<span class='warning'>There are already two tanks attached, remove one first.</span>")
|
||||
return
|
||||
|
||||
if(!tank_one)
|
||||
tank_one = item
|
||||
user.drop_item()
|
||||
item.loc = src
|
||||
user << "<span class='notice'>You attach the tank to the transfer valve.</span>"
|
||||
to_chat(user, "<span class='notice'>You attach the tank to the transfer valve.</span>")
|
||||
else if(!tank_two)
|
||||
tank_two = item
|
||||
user.drop_item()
|
||||
item.loc = src
|
||||
user << "<span class='notice'>You attach the tank to the transfer valve.</span>"
|
||||
to_chat(user, "<span class='notice'>You attach the tank to the transfer valve.</span>")
|
||||
message_admins("[key_name_admin(user)] attached both tanks to a transfer valve. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[location.x];Y=[location.y];Z=[location.z]'>JMP</a>)")
|
||||
log_game("[key_name_admin(user)] attached both tanks to a transfer valve.")
|
||||
|
||||
@@ -42,15 +42,15 @@
|
||||
else if(isassembly(item))
|
||||
var/obj/item/device/assembly/A = item
|
||||
if(A.secured)
|
||||
user << "<span class='notice'>The device is secured.</span>"
|
||||
to_chat(user, "<span class='notice'>The device is secured.</span>")
|
||||
return
|
||||
if(attached_device)
|
||||
user << "<span class='warning'>There is already an device attached to the valve, remove it first.</span>"
|
||||
to_chat(user, "<span class='warning'>There is already an device attached to the valve, remove it first.</span>")
|
||||
return
|
||||
user.remove_from_mob(item)
|
||||
attached_device = A
|
||||
A.loc = src
|
||||
user << "<span class='notice'>You attach the [item] to the valve controls and secure it.</span>"
|
||||
to_chat(user, "<span class='notice'>You attach the [item] to the valve controls and secure it.</span>")
|
||||
A.holder = src
|
||||
A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb).
|
||||
|
||||
|
||||
@@ -114,5 +114,5 @@ var/datum/uplink_random_selection/all_uplink_selection = new/datum/uplink_random
|
||||
|
||||
/proc/debug_uplink_item_assoc_list()
|
||||
for(var/key in uplink.items_assoc)
|
||||
world << "[key] - [uplink.items_assoc[key]]"
|
||||
to_world("[key] - [uplink.items_assoc[key]]")
|
||||
#endif
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
set desc = "Alter the message shouted by your hailer."
|
||||
|
||||
if(!isnull(insults))
|
||||
usr << "The hailer is fried. The tiny input screen just shows a waving ASCII penis."
|
||||
to_chat(usr, "The hailer is fried. The tiny input screen just shows a waving ASCII penis.")
|
||||
return
|
||||
|
||||
var/new_message = input(usr, "Please enter new message (leave blank to reset).") as text
|
||||
@@ -25,7 +25,7 @@
|
||||
else
|
||||
use_message = capitalize(copytext(sanitize(new_message), 1, MAX_MESSAGE_LEN))
|
||||
|
||||
usr << "You configure the hailer to shout \"[use_message]\"."
|
||||
to_chat(usr, "You configure the hailer to shout \"[use_message]\".")
|
||||
|
||||
/obj/item/device/hailer/attack_self(mob/living/carbon/user as mob)
|
||||
if (spamcheck)
|
||||
@@ -41,7 +41,7 @@
|
||||
user.audible_message("<span class='warning'>[user]'s [name] gurgles something indecipherable and deeply offensive.</span>", "<span class='warning'>\The [user] holds up \the [name].</span>")
|
||||
insults--
|
||||
else
|
||||
user << "<span class='danger'>*BZZZZZZZZT*</span>"
|
||||
to_chat(user, "<span class='danger'>*BZZZZZZZZT*</span>")
|
||||
|
||||
spamcheck = 1
|
||||
spawn(20)
|
||||
@@ -49,8 +49,8 @@
|
||||
|
||||
/obj/item/device/hailer/emag_act(var/remaining_charges, var/mob/user)
|
||||
if(isnull(insults))
|
||||
user << "<span class='danger'>You overload \the [src]'s voice synthesizer.</span>"
|
||||
to_chat(user, "<span class='danger'>You overload \the [src]'s voice synthesizer.</span>")
|
||||
insults = rand(1, 3)//to prevent dickflooding
|
||||
return 1
|
||||
else
|
||||
user << "The hailer is fried. You can't even fit the sequencer into the input slot."
|
||||
to_chat(user, "The hailer is fried. You can't even fit the sequencer into the input slot.")
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
if(istype(A, D))
|
||||
accept = 1
|
||||
if(!accept)
|
||||
user << "[A] doesn't fit into \the [src]."
|
||||
to_chat(user, "[A] doesn't fit into \the [src].")
|
||||
return
|
||||
var/mob/L = A
|
||||
user.visible_message("<span class='notice'>[user] scoops [L] into \the [src].</span>", "<span class='notice'>You scoop [L] into \the [src].</span>")
|
||||
@@ -44,7 +44,7 @@
|
||||
if(1)
|
||||
for(var/obj/O in src)
|
||||
O.loc = user.loc
|
||||
user << "<span class='notice'>You take money out of \the [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You take money out of \the [src].</span>")
|
||||
contains = 0
|
||||
update_icon()
|
||||
return
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
else if(options[choice] == "catrobe")
|
||||
desc = "A painted holy figure of a plain looking Tajaran in a robe."
|
||||
|
||||
M << "The religious icon is now a [choice]. All hail!"
|
||||
to_chat(M, "The religious icon is now a [choice]. All hail!")
|
||||
return 1
|
||||
|
||||
|
||||
@@ -127,5 +127,5 @@
|
||||
|
||||
if(src && input && !M.stat && in_range(M,src))
|
||||
name = "icon of " + input
|
||||
M << "You name the figure. Glory to [input]!."
|
||||
to_chat(M, "You name the figure. Glory to [input]!.")
|
||||
return 1
|
||||
@@ -37,7 +37,7 @@
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.remove_fuel(0, user))
|
||||
overlays.Cut()
|
||||
usr << "You slice off [src]'s uneven chunks of aluminum and scorch marks."
|
||||
to_chat(usr, "You slice off [src]'s uneven chunks of aluminum and scorch marks.")
|
||||
return
|
||||
|
||||
|
||||
@@ -59,10 +59,10 @@
|
||||
if(ishuman(user))
|
||||
if(!user.get_active_hand())
|
||||
user.put_in_hands(src)
|
||||
user << "You take the target out of the stake."
|
||||
to_chat(user, "You take the target out of the stake.")
|
||||
else
|
||||
src.loc = get_turf(user)
|
||||
user << "You take the target out of the stake."
|
||||
to_chat(user, "You take the target out of the stake.")
|
||||
|
||||
stake.pinned_target = null
|
||||
return
|
||||
@@ -96,7 +96,7 @@
|
||||
if(hp <= 0)
|
||||
for(var/mob/O in oviewers())
|
||||
if ((O.client && !( O.blinded )))
|
||||
O << "<span class='warning'>\The [src] breaks into tiny pieces and collapses!</span>"
|
||||
to_chat(O, "<span class='warning'>\The [src] breaks into tiny pieces and collapses!</span>")
|
||||
qdel(src)
|
||||
|
||||
// Create a temporary object to represent the damage
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
user.visible_message("<span class='notice'>\The [user] applied some [src] on [R]'s damaged areas.</span>",\
|
||||
"<span class='notice'>You apply some [src] at [R]'s damaged areas.</span>")
|
||||
else
|
||||
user << "<span class='notice'>All [R]'s systems are nominal.</span>"
|
||||
to_chat(user, "<span class='notice'>All [R]'s systems are nominal.</span>")
|
||||
|
||||
if (istype(M,/mob/living/carbon/human)) //Repairing robolimbs
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
@@ -26,17 +26,17 @@
|
||||
if(istype(W,/obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/cable_coil/CC = W
|
||||
if (get_amount() < 1 || CC.get_amount() < 5)
|
||||
user << "<span class='warning'>You need five lengths of coil and one sheet of glass to make wired glass.</span>"
|
||||
to_chat(user, "<span class='warning'>You need five lengths of coil and one sheet of glass to make wired glass.</span>")
|
||||
return
|
||||
|
||||
CC.use(5)
|
||||
use(1)
|
||||
user << "<span class='notice'>You attach wire to the [name].</span>"
|
||||
to_chat(user, "<span class='notice'>You attach wire to the [name].</span>")
|
||||
new /obj/item/stack/light_w(user.loc)
|
||||
else if(istype(W, /obj/item/stack/rods))
|
||||
var/obj/item/stack/rods/V = W
|
||||
if (V.get_amount() < 1 || get_amount() < 1)
|
||||
user << "<span class='warning'>You need one rod and one sheet of glass to make reinforced glass.</span>"
|
||||
to_chat(user, "<span class='warning'>You need one rod and one sheet of glass to make reinforced glass.</span>")
|
||||
return
|
||||
|
||||
var/obj/item/stack/material/glass/reinforced/RG = new (user.loc)
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
//visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message)
|
||||
usr.visible_message("<span class='notice'>\The [usr] starts cutting hair off \the [src]</span>", "<span class='notice'>You start cutting the hair off \the [src]</span>", "You hear the sound of a knife rubbing against flesh")
|
||||
if(do_after(user,50))
|
||||
usr << "<span class='notice'>You cut the hair from this [src.singular_name]</span>"
|
||||
to_chat(usr, "<span class='notice'>You cut the hair from this [src.singular_name]</span>")
|
||||
//Try locating an exisitng stack on the tile and add to there if possible
|
||||
for(var/obj/item/stack/material/hairlesshide/HS in usr.loc)
|
||||
if(HS.amount < 50)
|
||||
|
||||
@@ -58,9 +58,9 @@
|
||||
/obj/item/stack/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
if(!uses_charge)
|
||||
user << "There are [src.amount] [src.singular_name]\s in the stack."
|
||||
to_chat(user, "There are [src.amount] [src.singular_name]\s in the stack.")
|
||||
else
|
||||
user << "There is enough charge for [get_amount()]."
|
||||
to_chat(user, "There is enough charge for [get_amount()].")
|
||||
|
||||
/obj/item/stack/attack_self(mob/user as mob)
|
||||
list_recipes(user)
|
||||
@@ -126,21 +126,21 @@
|
||||
|
||||
if (!can_use(required))
|
||||
if (produced>1)
|
||||
user << "<span class='warning'>You haven't got enough [src] to build \the [produced] [recipe.title]\s!</span>"
|
||||
to_chat(user, "<span class='warning'>You haven't got enough [src] to build \the [produced] [recipe.title]\s!</span>")
|
||||
else
|
||||
user << "<span class='warning'>You haven't got enough [src] to build \the [recipe.title]!</span>"
|
||||
to_chat(user, "<span class='warning'>You haven't got enough [src] to build \the [recipe.title]!</span>")
|
||||
return
|
||||
|
||||
if (recipe.one_per_turf && (locate(recipe.result_type) in user.loc))
|
||||
user << "<span class='warning'>There is another [recipe.title] here!</span>"
|
||||
to_chat(user, "<span class='warning'>There is another [recipe.title] here!</span>")
|
||||
return
|
||||
|
||||
if (recipe.on_floor && !isfloor(user.loc))
|
||||
user << "<span class='warning'>\The [recipe.title] must be constructed on the floor!</span>"
|
||||
to_chat(user, "<span class='warning'>\The [recipe.title] must be constructed on the floor!</span>")
|
||||
return
|
||||
|
||||
if (recipe.time)
|
||||
user << "<span class='notice'>Building [recipe.title] ...</span>"
|
||||
to_chat(user, "<span class='notice'>Building [recipe.title] ...</span>")
|
||||
if (!do_after(user, recipe.time))
|
||||
return
|
||||
|
||||
@@ -326,7 +326,7 @@
|
||||
continue
|
||||
var/transfer = src.transfer_to(item)
|
||||
if (transfer)
|
||||
user << "<span class='notice'>You add a new [item.singular_name] to the stack. It now contains [item.amount] [item.singular_name]\s.</span>"
|
||||
to_chat(user, "<span class='notice'>You add a new [item.singular_name] to the stack. It now contains [item.amount] [item.singular_name]\s.</span>")
|
||||
if(!amount)
|
||||
break
|
||||
|
||||
|
||||
@@ -16,11 +16,11 @@
|
||||
safe_blink(target, 14)
|
||||
use(5)
|
||||
else
|
||||
user << "<span class='warning'>There are not enough telecrystals to do that.</span>"
|
||||
to_chat(user, "<span class='warning'>There are not enough telecrystals to do that.</span>")
|
||||
|
||||
/obj/item/stack/telecrystal/attack_self(mob/user as mob)
|
||||
if(user.mind.accept_tcrystals) //Checks to see if antag type allows for tcrystals
|
||||
user << "<span class='notice'>You use \the [src], adding [src.amount] to your balance.</span>"
|
||||
to_chat(user, "<span class='notice'>You use \the [src], adding [src.amount] to your balance.</span>")
|
||||
user.mind.tcrystals += amount
|
||||
use(amount)
|
||||
return
|
||||
@@ -49,7 +49,7 @@
|
||||
if(!proximity) return
|
||||
if (istype(A, /obj/structure/reagent_dispensers/watertank) && get_dist(src,A) <= 1)
|
||||
A.reagents.trans_to_obj(src, 10)
|
||||
user << "<span class='notice'>You fill the balloon with the contents of [A].</span>"
|
||||
to_chat(user, "<span class='notice'>You fill the balloon with the contents of [A].</span>")
|
||||
src.desc = "A translucent balloon with some form of liquid sloshing around in it."
|
||||
src.update_icon()
|
||||
return
|
||||
@@ -58,15 +58,15 @@
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/glass))
|
||||
if(O.reagents)
|
||||
if(O.reagents.total_volume < 1)
|
||||
user << "The [O] is empty."
|
||||
to_chat(user, "The [O] is empty.")
|
||||
else if(O.reagents.total_volume >= 1)
|
||||
if(O.reagents.has_reagent("pacid", 1))
|
||||
user << "The acid chews through the balloon!"
|
||||
to_chat(user, "The acid chews through the balloon!")
|
||||
O.reagents.splash(user, reagents.total_volume)
|
||||
qdel(src)
|
||||
else
|
||||
src.desc = "A translucent balloon with some form of liquid sloshing around in it."
|
||||
user << "<span class='notice'>You fill the balloon with the contents of [O].</span>"
|
||||
to_chat(user, "<span class='notice'>You fill the balloon with the contents of [O].</span>")
|
||||
O.reagents.trans_to_obj(src, 10)
|
||||
src.update_icon()
|
||||
return
|
||||
@@ -150,7 +150,7 @@
|
||||
|
||||
examine(mob/user)
|
||||
if(..(user, 2) && bullets)
|
||||
user << "<span class='notice'>It is loaded with [bullets] foam darts!</span>"
|
||||
to_chat(user, "<span class='notice'>It is loaded with [bullets] foam darts!</span>")
|
||||
|
||||
attackby(obj/item/I as obj, mob/user as mob)
|
||||
if(istype(I, /obj/item/toy/ammo/crossbow))
|
||||
@@ -158,9 +158,9 @@
|
||||
user.drop_item()
|
||||
qdel(I)
|
||||
bullets++
|
||||
user << "<span class='notice'>You load the foam dart into the crossbow.</span>"
|
||||
to_chat(user, "<span class='notice'>You load the foam dart into the crossbow.</span>")
|
||||
else
|
||||
usr << "<span class='warning'>It's already fully loaded.</span>"
|
||||
to_chat(usr, "<span class='warning'>It's already fully loaded.</span>")
|
||||
|
||||
|
||||
afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
|
||||
@@ -269,12 +269,12 @@
|
||||
attack_self(mob/user as mob)
|
||||
src.active = !( src.active )
|
||||
if (src.active)
|
||||
user << "<span class='notice'>You extend the plastic blade with a quick flick of your wrist.</span>"
|
||||
to_chat(user, "<span class='notice'>You extend the plastic blade with a quick flick of your wrist.</span>")
|
||||
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
|
||||
src.item_state = "[icon_state]_blade"
|
||||
src.w_class = ITEMSIZE_LARGE
|
||||
else
|
||||
user << "<span class='notice'>You push the plastic blade back down into the handle.</span>"
|
||||
to_chat(user, "<span class='notice'>You push the plastic blade back down into the handle.</span>")
|
||||
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
|
||||
src.item_state = "[icon_state]"
|
||||
src.w_class = ITEMSIZE_SMALL
|
||||
@@ -365,7 +365,7 @@
|
||||
if((ishuman(H))) //i guess carp and shit shouldn't set them off
|
||||
var/mob/living/carbon/M = H
|
||||
if(M.m_intent == "run")
|
||||
M << "<span class='warning'>You step on the snap pop!</span>"
|
||||
to_chat(M, "<span class='warning'>You step on the snap pop!</span>")
|
||||
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(2, 0, src)
|
||||
@@ -406,12 +406,12 @@
|
||||
|
||||
else if (istype(A, /obj/structure/reagent_dispensers/watertank) && get_dist(src,A) <= 1)
|
||||
A.reagents.trans_to_obj(src, 10)
|
||||
user << "<span class='notice'>You refill your flower!</span>"
|
||||
to_chat(user, "<span class='notice'>You refill your flower!</span>")
|
||||
return
|
||||
|
||||
else if (src.reagents.total_volume < 1)
|
||||
src.empty = 1
|
||||
user << "<span class='notice'>Your flower has run dry!</span>"
|
||||
to_chat(user, "<span class='notice'>Your flower has run dry!</span>")
|
||||
return
|
||||
|
||||
else
|
||||
@@ -433,7 +433,7 @@
|
||||
for(var/atom/T in get_turf(D))
|
||||
D.reagents.touch(T)
|
||||
if(ismob(T) && T:client)
|
||||
T:client << "<span class='warning'>\The [user] has sprayed you with water!</span>"
|
||||
to_chat(T:client, "<span class='warning'>\The [user] has sprayed you with water!</span>")
|
||||
sleep(4)
|
||||
qdel(D)
|
||||
|
||||
@@ -441,7 +441,7 @@
|
||||
|
||||
/obj/item/toy/waterflower/examine(mob/user)
|
||||
if(..(user, 0))
|
||||
user << text("\icon[] [] units of water left!", src, src.reagents.total_volume)
|
||||
to_chat(user, "\icon[src] [src.reagents.total_volume] units of water left!")
|
||||
|
||||
/*
|
||||
* Bosun's whistle
|
||||
@@ -458,7 +458,7 @@
|
||||
|
||||
/obj/item/toy/bosunwhistle/attack_self(mob/user as mob)
|
||||
if(cooldown < world.time - 35)
|
||||
user << "<span class='notice'>You blow on [src], creating an ear-splitting noise!</span>"
|
||||
to_chat(user, "<span class='notice'>You blow on [src], creating an ear-splitting noise!</span>")
|
||||
playsound(user, 'sound/misc/boatswain.ogg', 20, 1)
|
||||
cooldown = world.time
|
||||
|
||||
@@ -473,14 +473,14 @@
|
||||
//all credit to skasi for toy mech fun ideas
|
||||
/obj/item/toy/prize/attack_self(mob/user as mob)
|
||||
if(cooldown < world.time - 8)
|
||||
user << "<span class='notice'>You play with [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You play with [src].</span>")
|
||||
playsound(user, 'sound/mecha/mechstep.ogg', 20, 1)
|
||||
cooldown = world.time
|
||||
|
||||
/obj/item/toy/prize/attack_hand(mob/user as mob)
|
||||
if(loc == user)
|
||||
if(cooldown < world.time - 8)
|
||||
user << "<span class='notice'>You play with [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You play with [src].</span>")
|
||||
playsound(user, 'sound/mecha/mechturn.ogg', 20, 1)
|
||||
cooldown = world.time
|
||||
return
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
set src in view(usr, 1)
|
||||
set name = "Print Data"
|
||||
if(usr.stat || !(istype(usr,/mob/living/carbon/human)))
|
||||
usr << "No."
|
||||
to_chat(usr, "No.")
|
||||
return
|
||||
|
||||
var/scan_data = ""
|
||||
|
||||
@@ -144,15 +144,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
var/smoke_percent = round((smoketime / max_smoketime) * 100)
|
||||
switch(smoke_percent)
|
||||
if(90 to INFINITY)
|
||||
user << "[src] is still fresh."
|
||||
to_chat(user, "[src] is still fresh.")
|
||||
if(60 to 90)
|
||||
user << "[src] has a good amount of burn time remaining."
|
||||
to_chat(user, "[src] has a good amount of burn time remaining.")
|
||||
if(30 to 60)
|
||||
user << "[src] is about half finished."
|
||||
to_chat(user, "[src] is about half finished.")
|
||||
if(10 to 30)
|
||||
user << "[src] is starting to burn low."
|
||||
to_chat(user, "[src] is starting to burn low.")
|
||||
else
|
||||
user << "[src] is nearly burnt out!"
|
||||
to_chat(user, "[src] is nearly burnt out!")
|
||||
|
||||
|
||||
/obj/item/clothing/mask/smokable/proc/light(var/flavor_text = "[usr] lights the [name].")
|
||||
@@ -202,7 +202,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if(ismob(loc))
|
||||
var/mob/living/M = loc
|
||||
if (!nomessage)
|
||||
M << "<span class='notice'>Your [name] goes out, and you empty the ash.</span>"
|
||||
to_chat(M, "<span class='notice'>Your [name] goes out, and you empty the ash.</span>")
|
||||
lit = 0
|
||||
icon_state = initial(icon_state)
|
||||
item_state = initial(item_state)
|
||||
@@ -302,12 +302,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if(istype(glass)) //you can dip cigarettes into beakers
|
||||
var/transfered = glass.reagents.trans_to_obj(src, chem_volume)
|
||||
if(transfered) //if reagents were transfered, show the message
|
||||
user << "<span class='notice'>You dip \the [src] into \the [glass].</span>"
|
||||
to_chat(user, "<span class='notice'>You dip \the [src] into \the [glass].</span>")
|
||||
else //if not, either the beaker was empty, or the cigarette was full
|
||||
if(!glass.reagents.total_volume)
|
||||
user << "<span class='notice'>[glass] is empty.</span>"
|
||||
to_chat(user, "<span class='notice'>[glass] is empty.</span>")
|
||||
else
|
||||
user << "<span class='notice'>[src] is full.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] is full.</span>")
|
||||
|
||||
/obj/item/clothing/mask/smokable/cigarette/attack_self(mob/user as mob)
|
||||
if(lit == 1)
|
||||
@@ -420,10 +420,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if (istype(W, /obj/item/weapon/reagent_containers/food/snacks))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/G = W
|
||||
if (!G.dry)
|
||||
user << "<span class='notice'>[G] must be dried before you stuff it into [src].</span>"
|
||||
to_chat(user, "<span class='notice'>[G] must be dried before you stuff it into [src].</span>")
|
||||
return
|
||||
if (smoketime)
|
||||
user << "<span class='notice'>[src] is already packed.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] is already packed.</span>")
|
||||
return
|
||||
max_smoketime = 1000
|
||||
smoketime = 1000
|
||||
@@ -479,10 +479,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if (istype(W, /obj/item/weapon/reagent_containers/food/snacks))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/G = W
|
||||
if (!G.dry)
|
||||
user << "<span class='notice'>[G] must be dried before you roll it into [src].</span>"
|
||||
to_chat(user, "<span class='notice'>[G] must be dried before you roll it into [src].</span>")
|
||||
return
|
||||
var/obj/item/clothing/mask/smokable/cigarette/joint/J = new /obj/item/clothing/mask/smokable/cigarette/joint(user.loc)
|
||||
to_chat(usr,"<span class='notice'>You roll the [G.name] into a joint!</span>")
|
||||
to_chat(usr, "<span class='notice'>You roll the [G.name] into a joint!</span>")
|
||||
J.add_fingerprint(user)
|
||||
if(G.reagents)
|
||||
G.reagents.trans_to_obj(J, G.reagents.total_volume)
|
||||
@@ -532,7 +532,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if(prob(95))
|
||||
user.visible_message("<span class='notice'>After a few attempts, [user] manages to light the [src].</span>")
|
||||
else
|
||||
user << "<span class='warning'>You burn yourself while lighting the lighter.</span>"
|
||||
to_chat(user, "<span class='warning'>You burn yourself while lighting the lighter.</span>")
|
||||
if (user.get_left_hand() == src)
|
||||
user.apply_damage(2,BURN,"l_hand")
|
||||
else
|
||||
|
||||
@@ -53,9 +53,9 @@
|
||||
|
||||
/obj/item/weapon/circuitboard/security/emag_act(var/remaining_charges, var/mob/user)
|
||||
if(emagged)
|
||||
user << "Circuit lock is already removed."
|
||||
to_chat(user, "Circuit lock is already removed.")
|
||||
return
|
||||
user << "<span class='notice'>You override the circuit lock and open controls.</span>"
|
||||
to_chat(user, "<span class='notice'>You override the circuit lock and open controls.</span>")
|
||||
emagged = 1
|
||||
locked = 0
|
||||
return 1
|
||||
@@ -63,26 +63,26 @@
|
||||
/obj/item/weapon/circuitboard/security/attackby(obj/item/I as obj, mob/user as mob)
|
||||
if(istype(I,/obj/item/weapon/card/id))
|
||||
if(emagged)
|
||||
user << "<span class='warning'>Circuit lock does not respond.</span>"
|
||||
to_chat(user, "<span class='warning'>Circuit lock does not respond.</span>")
|
||||
return
|
||||
if(check_access(I))
|
||||
locked = !locked
|
||||
user << "<span class='notice'>You [locked ? "" : "un"]lock the circuit controls.</span>"
|
||||
to_chat(user, "<span class='notice'>You [locked ? "" : "un"]lock the circuit controls.</span>")
|
||||
else
|
||||
user << "<span class='warning'>Access denied.</span>"
|
||||
to_chat(user, "<span class='warning'>Access denied.</span>")
|
||||
else if(istype(I,/obj/item/device/multitool))
|
||||
if(locked)
|
||||
user << "<span class='warning'>Circuit controls are locked.</span>"
|
||||
to_chat(user, "<span class='warning'>Circuit controls are locked.</span>")
|
||||
return
|
||||
var/existing_networks = jointext(network,",")
|
||||
var/input = sanitize(input(usr, "Which networks would you like to connect this camera console circuit to? Seperate networks with a comma. No Spaces!\nFor example: SS13,Security,Secret ", "Multitool-Circuitboard interface", existing_networks))
|
||||
if(!input)
|
||||
usr << "No input found please hang up and try your call again."
|
||||
to_chat(usr, "No input found please hang up and try your call again.")
|
||||
return
|
||||
var/list/tempnetwork = splittext(input, ",")
|
||||
tempnetwork = difflist(tempnetwork,restricted_camera_networks,1)
|
||||
if(tempnetwork.len < 1)
|
||||
usr << "No network found please hang up and try your call again."
|
||||
to_chat(usr, "No network found please hang up and try your call again.")
|
||||
return
|
||||
network = tempnetwork
|
||||
return
|
||||
|
||||
@@ -39,5 +39,5 @@
|
||||
if("Cancel")
|
||||
return
|
||||
else
|
||||
user << "DERP! BUG! Report this (And what you were doing to cause it) to Agouri"
|
||||
to_chat(user, "DERP! BUG! Report this (And what you were doing to cause it) to Agouri")
|
||||
return
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
name = "[colour] lipstick"
|
||||
|
||||
/obj/item/weapon/lipstick/attack_self(mob/user as mob)
|
||||
user << "<span class='notice'>You twist \the [src] [open ? "closed" : "open"].</span>"
|
||||
to_chat(user, "<span class='notice'>You twist \the [src] [open ? "closed" : "open"].</span>")
|
||||
open = !open
|
||||
if(open)
|
||||
icon_state = "[initial(icon_state)]_[colour]"
|
||||
@@ -44,7 +44,7 @@
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.lip_style) //if they already have lipstick on
|
||||
user << "<span class='notice'>You need to wipe off the old lipstick first!</span>"
|
||||
to_chat(user, "<span class='notice'>You need to wipe off the old lipstick first!</span>")
|
||||
return
|
||||
if(H == user)
|
||||
user.visible_message("<span class='notice'>[user] does their lips with \the [src].</span>", \
|
||||
@@ -60,7 +60,7 @@
|
||||
H.lip_style = colour
|
||||
H.update_icons_body()
|
||||
else
|
||||
user << "<span class='notice'>Where are the lips on that?</span>"
|
||||
to_chat(user, "<span class='notice'>Where are the lips on that?</span>")
|
||||
|
||||
//you can wipe off lipstick with paper! see code/modules/paperwork/paper.dm, paper/attack()
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!istype(H))
|
||||
user << "<span class='warning'>Apparently it didn't work...</span>"
|
||||
to_chat(user, "<span class='warning'>Apparently it didn't work...</span>")
|
||||
return
|
||||
|
||||
// Used by admin log.
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
/obj/item/weapon/plastique/attackby(var/obj/item/I, var/mob/user)
|
||||
if(I.is_screwdriver())
|
||||
open_panel = !open_panel
|
||||
user << "<span class='notice'>You [open_panel ? "open" : "close"] the wire panel.</span>"
|
||||
to_chat(user, "<span class='notice'>You [open_panel ? "open" : "close"] the wire panel.</span>")
|
||||
playsound(src, I.usesound, 50, 1)
|
||||
else if(I.is_wirecutter() || istype(I, /obj/item/device/multitool) || istype(I, /obj/item/device/assembly/signaler ))
|
||||
wires.Interact(user)
|
||||
@@ -43,14 +43,14 @@
|
||||
if(user.get_active_hand() == src)
|
||||
newtime = CLAMP(newtime, 10, 60000)
|
||||
timer = newtime
|
||||
user << "Timer set for [timer] seconds."
|
||||
to_chat(user, "Timer set for [timer] seconds.")
|
||||
|
||||
/obj/item/weapon/plastique/afterattack(atom/movable/target, mob/user, flag)
|
||||
if (!flag)
|
||||
return
|
||||
if (ismob(target) || istype(target, /turf/unsimulated) || istype(target, /turf/simulated/shuttle) || istype(target, /obj/item/weapon/storage/) || istype(target, /obj/item/clothing/accessory/storage/) || istype(target, /obj/item/clothing/under))
|
||||
return
|
||||
user << "Planting explosives..."
|
||||
to_chat(user, "Planting explosives...")
|
||||
user.do_attack_animation(target)
|
||||
|
||||
if(do_after(user, 50) && in_range(user, target))
|
||||
@@ -66,7 +66,7 @@
|
||||
log_game("[key_name(user)] planted [src.name] on [target.name] at ([target.x],[target.y],[target.z]) with [timer] second fuse")
|
||||
|
||||
target.overlays += image_overlay
|
||||
user << "Bomb has been planted. Timer counting down from [timer]."
|
||||
to_chat(user, "Bomb has been planted. Timer counting down from [timer].")
|
||||
spawn(timer*10)
|
||||
explode(get_turf(target))
|
||||
|
||||
|
||||
@@ -72,13 +72,13 @@
|
||||
if( istype(target, /obj/structure/reagent_dispensers/watertank) && flag)
|
||||
var/obj/o = target
|
||||
var/amount = o.reagents.trans_to_obj(src, 50)
|
||||
user << "<span class='notice'>You fill [src] with [amount] units of the contents of [target].</span>"
|
||||
to_chat(user, "<span class='notice'>You fill [src] with [amount] units of the contents of [target].</span>")
|
||||
playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
|
||||
return
|
||||
|
||||
if (!safety)
|
||||
if (src.reagents.total_volume < 1)
|
||||
usr << "<span class='notice'>\The [src] is empty.</span>"
|
||||
to_chat(usr, "<span class='notice'>\The [src] is empty.</span>")
|
||||
return
|
||||
|
||||
if (world.time < src.last_use + 20)
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
if(W.is_screwdriver() && igniter && !lit)
|
||||
status = !status
|
||||
user << "<span class='notice'>[igniter] is now [status ? "secured" : "unsecured"]!</span>"
|
||||
to_chat(user, "<span class='notice'>[igniter] is now [status ? "secured" : "unsecured"]!</span>")
|
||||
update_icon()
|
||||
return
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
|
||||
if(istype(W,/obj/item/weapon/tank/phoron))
|
||||
if(ptank)
|
||||
user << "<span class='notice'>There appears to already be a phoron tank loaded in [src]!</span>"
|
||||
to_chat(user, "<span class='notice'>There appears to already be a phoron tank loaded in [src]!</span>")
|
||||
return
|
||||
user.drop_item()
|
||||
ptank = W
|
||||
@@ -122,7 +122,7 @@
|
||||
if(user.stat || user.restrained() || user.lying) return
|
||||
user.set_machine(src)
|
||||
if(!ptank)
|
||||
user << "<span class='notice'>Attach a phoron tank first!</span>"
|
||||
to_chat(user, "<span class='notice'>Attach a phoron tank first!</span>")
|
||||
return
|
||||
var/dat = text("<TT><B>Flamethrower (<A HREF='?src=\ref[src];light=1'>[lit ? "<font color='red'>Lit</font>" : "Unlit"]</a>)</B><BR>\n Tank Pressure: [ptank.air_contents.return_pressure()]<BR>\nAmount to throw: <A HREF='?src=\ref[src];amount=-100'>-</A> <A HREF='?src=\ref[src];amount=-10'>-</A> <A HREF='?src=\ref[src];amount=-1'>-</A> [throw_amount] <A HREF='?src=\ref[src];amount=1'>+</A> <A HREF='?src=\ref[src];amount=10'>+</A> <A HREF='?src=\ref[src];amount=100'>+</A><BR>\n<A HREF='?src=\ref[src];remove=1'>Remove phorontank</A> - <A HREF='?src=\ref[src];close=1'>Close</A></TT>")
|
||||
user << browse(dat, "window=flamethrower;size=600x300")
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
user.put_in_active_hand(gift)
|
||||
src.gift.add_fingerprint(user)
|
||||
else
|
||||
user << "<span class='warning'>The gift was empty!</span>"
|
||||
to_chat(user, "<span class='warning'>The gift was empty!</span>")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -41,16 +41,16 @@
|
||||
/obj/effect/spresent/relaymove(mob/user as mob)
|
||||
if (user.stat)
|
||||
return
|
||||
user << "<span class='warning'>You can't move.</span>"
|
||||
to_chat(user, "<span class='warning'>You can't move.</span>")
|
||||
|
||||
/obj/effect/spresent/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
|
||||
if (!W.is_wirecutter())
|
||||
user << "<span class='warning'>I need wirecutters for that.</span>"
|
||||
to_chat(user, "<span class='warning'>I need wirecutters for that.</span>")
|
||||
return
|
||||
|
||||
user << "<span class='notice'>You cut open the present.</span>"
|
||||
to_chat(user, "<span class='notice'>You cut open the present.</span>")
|
||||
|
||||
for(var/mob/M in src) //Should only be one but whatever.
|
||||
M.loc = src.loc
|
||||
@@ -127,13 +127,13 @@
|
||||
/obj/item/weapon/wrapping_paper/attackby(obj/item/weapon/W as obj, mob/living/user as mob)
|
||||
..()
|
||||
if (!( locate(/obj/structure/table, src.loc) ))
|
||||
user << "<span class='warning'>You MUST put the paper on a table!</span>"
|
||||
to_chat(user, "<span class='warning'>You MUST put the paper on a table!</span>")
|
||||
if (W.w_class < ITEMSIZE_LARGE)
|
||||
var/obj/item/I = user.get_inactive_hand()
|
||||
if(I.is_wirecutter())
|
||||
var/a_used = 2 ** (src.w_class - 1)
|
||||
if (src.amount < a_used)
|
||||
user << "<span class='warning'>You need more paper!</span>"
|
||||
to_chat(user, "<span class='warning'>You need more paper!</span>")
|
||||
return
|
||||
else
|
||||
if(istype(W, /obj/item/smallDelivery) || istype(W, /obj/item/weapon/gift)) //No gift wrapping gifts!
|
||||
@@ -155,15 +155,15 @@
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
user << "<span class='warning'>You need scissors!</span>"
|
||||
to_chat(user, "<span class='warning'>You need scissors!</span>")
|
||||
else
|
||||
user << "<span class='warning'>The object is FAR too large!</span>"
|
||||
to_chat(user, "<span class='warning'>The object is FAR too large!</span>")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/wrapping_paper/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
user << text("There is about [] square units of paper left!", src.amount)
|
||||
to_chat(user, "There is about [src.amount] square units of paper left!")
|
||||
|
||||
/obj/item/weapon/wrapping_paper/attack(mob/target as mob, mob/user as mob)
|
||||
if (!istype(target, /mob/living/carbon/human)) return
|
||||
@@ -182,6 +182,6 @@
|
||||
|
||||
add_attack_logs(user,H,"Wrapped with [src]")
|
||||
else
|
||||
user << "<span class='warning'>You need more paper.</span>"
|
||||
to_chat(user, "<span class='warning'>You need more paper.</span>")
|
||||
else
|
||||
user << "They are moving around too much. A straightjacket would help."
|
||||
to_chat(user, "They are moving around too much. A straightjacket would help.")
|
||||
|
||||
@@ -80,10 +80,10 @@
|
||||
if(ishuman(M))
|
||||
var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES]
|
||||
if (E && E.damage >= E.min_bruised_damage)
|
||||
M << "<span class='danger'>Your eyes start to burn badly!</span>"
|
||||
to_chat(M, "<span class='danger'>Your eyes start to burn badly!</span>")
|
||||
if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
|
||||
if (E.damage >= E.min_broken_damage)
|
||||
M << "<span class='danger'>You can't see anything!</span>"
|
||||
to_chat(M, "<span class='danger'>You can't see anything!</span>")
|
||||
if (M.ear_damage >= 15)
|
||||
to_chat(M, "<span class='danger'>Your ears start to ring badly!</span>")
|
||||
if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/obj/item/weapon/grenade/proc/clown_check(var/mob/living/user)
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
user << "<span class='warning'>Huh? How does this thing work?</span>"
|
||||
to_chat(user, "<span class='warning'>Huh? How does this thing work?</span>")
|
||||
|
||||
activate(user)
|
||||
add_fingerprint(user)
|
||||
@@ -30,7 +30,7 @@
|
||||
if (istype(target, /obj/item/weapon/storage)) return ..() // Trying to put it in a full container
|
||||
if (istype(target, /obj/item/weapon/gun/grenadelauncher)) return ..()
|
||||
if((user.get_active_hand() == src) && (!active) && (clown_check(user)) && target.loc != src.loc)
|
||||
user << "<span class='warning'>You prime the [name]! [det_time/10] seconds!</span>"
|
||||
to_chat(user, "<span class='warning'>You prime the [name]! [det_time/10] seconds!</span>")
|
||||
active = 1
|
||||
icon_state = initial(icon_state) + "_active"
|
||||
playsound(loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
|
||||
@@ -47,17 +47,17 @@
|
||||
/obj/item/weapon/grenade/examine(mob/user)
|
||||
if(..(user, 0))
|
||||
if(det_time > 1)
|
||||
user << "The timer is set to [det_time/10] seconds."
|
||||
to_chat(user, "The timer is set to [det_time/10] seconds.")
|
||||
return
|
||||
if(det_time == null)
|
||||
return
|
||||
user << "\The [src] is set for instant detonation."
|
||||
to_chat(user, "\The [src] is set for instant detonation.")
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/attack_self(mob/user as mob)
|
||||
if(!active)
|
||||
if(clown_check(user))
|
||||
user << "<span class='warning'>You prime \the [name]! [det_time/10] seconds!</span>"
|
||||
to_chat(user, "<span class='warning'>You prime \the [name]! [det_time/10] seconds!</span>")
|
||||
|
||||
activate(user)
|
||||
add_fingerprint(user)
|
||||
@@ -95,16 +95,16 @@
|
||||
switch(det_time)
|
||||
if (1)
|
||||
det_time = 10
|
||||
user << "<span class='notice'>You set the [name] for 1 second detonation time.</span>"
|
||||
to_chat(user, "<span class='notice'>You set the [name] for 1 second detonation time.</span>")
|
||||
if (10)
|
||||
det_time = 30
|
||||
user << "<span class='notice'>You set the [name] for 3 second detonation time.</span>"
|
||||
to_chat(user, "<span class='notice'>You set the [name] for 3 second detonation time.</span>")
|
||||
if (30)
|
||||
det_time = 50
|
||||
user << "<span class='notice'>You set the [name] for 5 second detonation time.</span>"
|
||||
to_chat(user, "<span class='notice'>You set the [name] for 5 second detonation time.</span>")
|
||||
if (50)
|
||||
det_time = 1
|
||||
user << "<span class='notice'>You set the [name] for instant detonation.</span>"
|
||||
to_chat(user, "<span class='notice'>You set the [name] for instant detonation.</span>")
|
||||
add_fingerprint(user)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -25,9 +25,9 @@
|
||||
mode = !mode
|
||||
switch (mode)
|
||||
if(1)
|
||||
usr << "The bag now picks up all seeds in a tile at once."
|
||||
to_chat(usr, "The bag now picks up all seeds in a tile at once.")
|
||||
if(0)
|
||||
usr << "The bag now picks up one seed pouch at a time."
|
||||
to_chat(usr, "The bag now picks up one seed pouch at a time.")
|
||||
|
||||
/obj/item/seeds/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
..()
|
||||
@@ -42,10 +42,10 @@
|
||||
else
|
||||
S.item_quants[G.name] = 1
|
||||
else
|
||||
user << "<span class='warning'>The seed bag is full.</span>"
|
||||
to_chat(user, "<span class='warning'>The seed bag is full.</span>")
|
||||
S.updateUsrDialog()
|
||||
return
|
||||
user << "<span class='notice'>You pick up all the seeds.</span>"
|
||||
to_chat(user, "<span class='notice'>You pick up all the seeds.</span>")
|
||||
else
|
||||
if (S.contents.len < S.capacity)
|
||||
S.contents += src;
|
||||
@@ -54,7 +54,7 @@
|
||||
else
|
||||
S.item_quants[name] = 1
|
||||
else
|
||||
user << "<span class='warning'>The seed bag is full.</span>"
|
||||
to_chat(user, "<span class='warning'>The seed bag is full.</span>")
|
||||
S.updateUsrDialog()
|
||||
return
|
||||
|
||||
|
||||
@@ -98,9 +98,9 @@
|
||||
if(istype(O, /obj/item/stack/telecrystal))
|
||||
var/obj/item/stack/telecrystal/T = O
|
||||
if(T.amount < 1)
|
||||
usr << "<span class='notice'>You are not adding enough telecrystals to fuel \the [src].</span>"
|
||||
to_chat(usr, "<span class='notice'>You are not adding enough telecrystals to fuel \the [src].</span>")
|
||||
return
|
||||
uses += T.amount/2 //Gives 5 uses per 10 TC
|
||||
uses = CEILING(uses, 1) //Ensures no decimal uses nonsense, rounds up to be nice
|
||||
usr << "<span class='notice'>You add \the [O] to \the [src]. Increasing the uses of \the [src] to [uses].</span>"
|
||||
to_chat(usr, "<span class='notice'>You add \the [O] to \the [src]. Increasing the uses of \the [src] to [uses].</span>")
|
||||
qdel(O)
|
||||
@@ -35,9 +35,9 @@
|
||||
set src in oview(1)
|
||||
if(in_range(usr, src))
|
||||
show(usr)
|
||||
usr << desc
|
||||
to_chat(usr,desc)
|
||||
else
|
||||
usr << "<span class='warning'>It is too far away.</span>"
|
||||
to_chat(usr, "<span class='warning'>It is too far away.</span>")
|
||||
|
||||
/obj/item/weapon/card/id/proc/prevent_tracking()
|
||||
return 0
|
||||
@@ -108,10 +108,10 @@
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
usr << text("\icon[] []: The current assignment on the card is [].", src, src.name, src.assignment)
|
||||
usr << "The blood type on the card is [blood_type]."
|
||||
usr << "The DNA hash on the card is [dna_hash]."
|
||||
usr << "The fingerprint hash on the card is [fingerprint_hash]."
|
||||
to_chat(usr, "\icon[src] [src.name]: The current assignment on the card is [src.assignment].")
|
||||
to_chat(usr, "The blood type on the card is [blood_type].")
|
||||
to_chat(usr, "The DNA hash on the card is [dna_hash].")
|
||||
to_chat(usr, "The fingerprint hash on the card is [fingerprint_hash].")
|
||||
return
|
||||
|
||||
/obj/item/weapon/card/id/get_worn_icon_state(var/slot_name)
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
var/user = usr
|
||||
if(href_list["electronic_warfare"])
|
||||
electronic_warfare = text2num(href_list["electronic_warfare"])
|
||||
user << "<span class='notice'>Electronic warfare [electronic_warfare ? "enabled" : "disabled"].</span>"
|
||||
to_chat(user, "<span class='notice'>Electronic warfare [electronic_warfare ? "enabled" : "disabled"].</span>")
|
||||
else if(href_list["set"])
|
||||
switch(href_list["set"])
|
||||
if("Age")
|
||||
@@ -101,20 +101,20 @@
|
||||
age = initial(age)
|
||||
else
|
||||
age = new_age
|
||||
user << "<span class='notice'>Age has been set to '[age]'.</span>"
|
||||
to_chat(user, "<span class='notice'>Age has been set to '[age]'.</span>")
|
||||
. = 1
|
||||
if("Appearance")
|
||||
var/datum/card_state/choice = input(user, "Select the appearance for this card.", "Agent Card Appearance") as null|anything in id_card_states()
|
||||
if(choice && CanUseTopic(user, state))
|
||||
src.icon_state = choice.icon_state
|
||||
src.item_state = choice.item_state
|
||||
usr << "<span class='notice'>Appearance changed to [choice].</span>"
|
||||
to_chat(usr, "<span class='notice'>Appearance changed to [choice].</span>")
|
||||
. = 1
|
||||
if("Assignment")
|
||||
var/new_job = sanitize(input(user,"What assignment would you like to put on this card?\nChanging assignment will not grant or remove any access levels.","Agent Card Assignment", assignment) as null|text)
|
||||
if(!isnull(new_job) && CanUseTopic(user, state))
|
||||
src.assignment = new_job
|
||||
user << "<span class='notice'>Occupation changed to '[new_job]'.</span>"
|
||||
to_chat(user, "<span class='notice'>Occupation changed to '[new_job]'.</span>")
|
||||
update_name()
|
||||
. = 1
|
||||
if("Blood Type")
|
||||
@@ -126,7 +126,7 @@
|
||||
var/new_blood_type = sanitize(input(user,"What blood type would you like to be written on this card?","Agent Card Blood Type",default) as null|text)
|
||||
if(!isnull(new_blood_type) && CanUseTopic(user, state))
|
||||
src.blood_type = new_blood_type
|
||||
user << "<span class='notice'>Blood type changed to '[new_blood_type]'.</span>"
|
||||
to_chat(user, "<span class='notice'>Blood type changed to '[new_blood_type]'.</span>")
|
||||
. = 1
|
||||
if("DNA Hash")
|
||||
var/default = dna_hash
|
||||
@@ -137,7 +137,7 @@
|
||||
var/new_dna_hash = sanitize(input(user,"What DNA hash would you like to be written on this card?","Agent Card DNA Hash",default) as null|text)
|
||||
if(!isnull(new_dna_hash) && CanUseTopic(user, state))
|
||||
src.dna_hash = new_dna_hash
|
||||
user << "<span class='notice'>DNA hash changed to '[new_dna_hash]'.</span>"
|
||||
to_chat(user, "<span class='notice'>DNA hash changed to '[new_dna_hash]'.</span>")
|
||||
. = 1
|
||||
if("Fingerprint Hash")
|
||||
var/default = fingerprint_hash
|
||||
@@ -148,24 +148,24 @@
|
||||
var/new_fingerprint_hash = sanitize(input(user,"What fingerprint hash would you like to be written on this card?","Agent Card Fingerprint Hash",default) as null|text)
|
||||
if(!isnull(new_fingerprint_hash) && CanUseTopic(user, state))
|
||||
src.fingerprint_hash = new_fingerprint_hash
|
||||
user << "<span class='notice'>Fingerprint hash changed to '[new_fingerprint_hash]'.</span>"
|
||||
to_chat(user, "<span class='notice'>Fingerprint hash changed to '[new_fingerprint_hash]'.</span>")
|
||||
. = 1
|
||||
if("Name")
|
||||
var/new_name = sanitizeName(input(user,"What name would you like to put on this card?","Agent Card Name", registered_name) as null|text)
|
||||
if(!isnull(new_name) && CanUseTopic(user, state))
|
||||
src.registered_name = new_name
|
||||
update_name()
|
||||
user << "<span class='notice'>Name changed to '[new_name]'.</span>"
|
||||
to_chat(user, "<span class='notice'>Name changed to '[new_name]'.</span>")
|
||||
. = 1
|
||||
if("Photo")
|
||||
set_id_photo(user)
|
||||
user << "<span class='notice'>Photo changed.</span>"
|
||||
to_chat(user, "<span class='notice'>Photo changed.</span>")
|
||||
. = 1
|
||||
if("Sex")
|
||||
var/new_sex = sanitize(input(user,"What sex would you like to put on this card?","Agent Card Sex", sex) as null|text)
|
||||
if(!isnull(new_sex) && CanUseTopic(user, state))
|
||||
src.sex = new_sex
|
||||
user << "<span class='notice'>Sex changed to '[new_sex]'.</span>"
|
||||
to_chat(user, "<span class='notice'>Sex changed to '[new_sex]'.</span>")
|
||||
. = 1
|
||||
if("Factory Reset")
|
||||
if(alert("This will factory reset the card, including access and owner. Continue?", "Factory Reset", "No", "Yes") == "Yes" && CanUseTopic(user, state))
|
||||
@@ -181,7 +181,7 @@
|
||||
registered_name = initial(registered_name)
|
||||
unset_registered_user()
|
||||
sex = initial(sex)
|
||||
user << "<span class='notice'>All information has been deleted from \the [src].</span>"
|
||||
to_chat(user, "<span class='notice'>All information has been deleted from \the [src].</span>")
|
||||
. = 1
|
||||
|
||||
// Always update the UI, or buttons will spin indefinitely
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/implant/proc/meltdown() //breaks it down, making implant unrecongizible
|
||||
imp_in << "<span class='warning'>You feel something melting inside [part ? "your [part.name]" : "you"]!</span>"
|
||||
to_chat(imp_in, "<span class='warning'>You feel something melting inside [part ? "your [part.name]" : "you"]!</span>")
|
||||
if (part)
|
||||
part.take_damage(burn = 15, used_weapon = "Electronics meltdown")
|
||||
else
|
||||
@@ -284,7 +284,7 @@ Implant Specifics:<BR>"}
|
||||
var/list/replacechars = list("'" = "","\"" = "",">" = "","<" = "","(" = "",")" = "")
|
||||
phrase = replace_characters(phrase, replacechars)
|
||||
usr.mind.store_memory("Explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', <B>say [src.phrase]</B> to attempt to activate.", 0, 0)
|
||||
usr << "The implanted explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', <B>say [src.phrase]</B> to attempt to activate."
|
||||
to_chat(usr, "The implanted explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', <B>say [src.phrase]</B> to attempt to activate.")
|
||||
|
||||
/obj/item/weapon/implant/explosive/emp_act(severity)
|
||||
if (malfunction)
|
||||
@@ -381,9 +381,9 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
if((!cause) || (!src.imp_in)) return 0
|
||||
var/mob/living/carbon/R = src.imp_in
|
||||
src.reagents.trans_to_mob(R, cause, CHEM_BLOOD)
|
||||
R << "You hear a faint *beep*."
|
||||
to_chat(R, "You hear a faint *beep*.")
|
||||
if(!src.reagents.total_volume)
|
||||
R << "You hear a faint click from your chest."
|
||||
to_chat(R, "You hear a faint click from your chest.")
|
||||
playsound(R, 'sound/weapons/empty.ogg', 10, 1)
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
@@ -472,7 +472,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
if (src.uses < 1) return 0
|
||||
if (emote == "pale")
|
||||
src.uses--
|
||||
source << "<span class='notice'>You feel a sudden surge of energy!</span>"
|
||||
to_chat(source, "<span class='notice'>You feel a sudden surge of energy!</span>")
|
||||
source.SetStunned(0)
|
||||
source.SetWeakened(0)
|
||||
source.SetParalysis(0)
|
||||
@@ -481,7 +481,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
|
||||
/obj/item/weapon/implant/adrenalin/post_implant(mob/source)
|
||||
source.mind.store_memory("A implant can be activated by using the pale emote, <B>say *pale</B> to attempt to activate.", 0, 0)
|
||||
source << "The implanted freedom implant can be activated by using the pale emote, <B>say *pale</B> to attempt to activate."
|
||||
to_chat(source, "The implanted freedom implant can be activated by using the pale emote, <B>say *pale</B> to attempt to activate.")
|
||||
|
||||
//////////////////////////////
|
||||
// Death Alarm Implant
|
||||
@@ -595,7 +595,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
return 0
|
||||
|
||||
if (emote == src.activation_emote)
|
||||
source << "The air glows as \the [src.scanned.name] uncompresses."
|
||||
to_chat(source, "The air glows as \the [src.scanned.name] uncompresses.")
|
||||
activate()
|
||||
|
||||
/obj/item/weapon/implant/compressed/activate()
|
||||
@@ -610,7 +610,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
src.activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
|
||||
if (source.mind)
|
||||
source.mind.store_memory("Compressed matter implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.", 0, 0)
|
||||
source << "The implanted compressed matter implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate."
|
||||
to_chat(source, "The implanted compressed matter implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.")
|
||||
|
||||
|
||||
/obj/item/weapon/implant/compressed/islegal()
|
||||
|
||||
@@ -35,11 +35,11 @@
|
||||
if(!src.imp) return
|
||||
if(!src.imp.allow_reagents) return
|
||||
if(src.imp.reagents.total_volume >= src.imp.reagents.maximum_volume)
|
||||
user << "<span class='warning'>\The [src] is full.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] is full.</span>")
|
||||
else
|
||||
spawn(5)
|
||||
I.reagents.trans_to_obj(src.imp, 5)
|
||||
user << "<span class='notice'>You inject 5 units of the solution. The syringe now contains [I.reagents.total_volume] units.</span>"
|
||||
to_chat(user, "<span class='notice'>You inject 5 units of the solution. The syringe now contains [I.reagents.total_volume] units.</span>")
|
||||
else if (istype(I, /obj/item/weapon/implanter))
|
||||
var/obj/item/weapon/implanter/M = I
|
||||
if (M.imp)
|
||||
|
||||
@@ -108,10 +108,10 @@
|
||||
|
||||
put_mob(mob/living/carbon/M as mob)
|
||||
if(!iscarbon(M))
|
||||
usr << "<span class='warning'>\The [src] cannot hold this!</span>"
|
||||
to_chat(usr, "<span class='warning'>\The [src] cannot hold this!</span>")
|
||||
return
|
||||
if(src.occupant)
|
||||
usr << "<span class='warning'>\The [src] is already occupied!</span>"
|
||||
to_chat(usr, "<span class='warning'>\The [src] is already occupied!</span>")
|
||||
return
|
||||
if(M.client)
|
||||
M.client.perspective = EYE_PERSPECTIVE
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
if (emote == src.activation_emote)
|
||||
src.uses--
|
||||
source << "You feel a faint click."
|
||||
to_chat(source, "You feel a faint click.")
|
||||
if (source.handcuffed)
|
||||
var/obj/item/weapon/W = source.handcuffed
|
||||
source.handcuffed = null
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
/obj/item/weapon/implant/freedom/post_implant(mob/source)
|
||||
source.mind.store_memory("Freedom implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.", 0, 0)
|
||||
source << "The implanted freedom implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate."
|
||||
to_chat(source, "The implanted freedom implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.")
|
||||
|
||||
/obj/item/weapon/implant/freedom/get_data()
|
||||
var/dat = {"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
listening_objects |= src
|
||||
activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
|
||||
source.mind.store_memory("Uplink implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.", 0, 0)
|
||||
source << "The implanted uplink implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate."
|
||||
to_chat(source, "The implanted uplink implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.")
|
||||
|
||||
/obj/item/weapon/implant/uplink/trigger(emote, mob/source as mob)
|
||||
if(hidden_uplink && usr == source) // Let's not have another people activate our uplink
|
||||
|
||||
@@ -48,7 +48,7 @@ var/global/list/ashtray_cache = list()
|
||||
return
|
||||
if (istype(W,/obj/item/weapon/cigbutt) || istype(W,/obj/item/clothing/mask/smokable/cigarette) || istype(W, /obj/item/weapon/flame/match))
|
||||
if (contents.len >= max_butts)
|
||||
user << "\The [src] is full."
|
||||
to_chat(user, "\The [src] is full.")
|
||||
return
|
||||
user.remove_from_mob(W)
|
||||
W.loc = src
|
||||
@@ -65,7 +65,7 @@ var/global/list/ashtray_cache = list()
|
||||
//spawn(1)
|
||||
// TemperatureAct(150)
|
||||
else if (cig.lit == 0)
|
||||
user << "You place [cig] in [src] without even smoking it. Why would you do that?"
|
||||
to_chat(user, "You place [cig] in [src] without even smoking it. Why would you do that?")
|
||||
|
||||
src.visible_message("[user] places [W] in [src].")
|
||||
user.update_inv_l_hand()
|
||||
@@ -74,7 +74,7 @@ var/global/list/ashtray_cache = list()
|
||||
update_icon()
|
||||
else
|
||||
health = max(0,health - W.force)
|
||||
user << "You hit [src] with [W]."
|
||||
to_chat(user, "You hit [src] with [W].")
|
||||
if (health < 1)
|
||||
shatter()
|
||||
return
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
overlays.Cut()
|
||||
return
|
||||
else
|
||||
user << "<span class='warning'>You don't have anything on \the [src].</span>" //if we have help intent and no food scooped up DON'T STAB OURSELVES WITH THE FORK
|
||||
to_chat(user, "<span class='warning'>You don't have anything on \the [src].</span>") //if we have help intent and no food scooped up DON'T STAB OURSELVES WITH THE FORK
|
||||
return
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/fork
|
||||
@@ -82,7 +82,7 @@
|
||||
/* From the time of Clowns. Commented out for posterity, and sanity.
|
||||
/obj/item/weapon/material/knife/attack(target as mob, mob/living/user as mob)
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "<span class='warning'>You accidentally cut yourself with \the [src].</span>"
|
||||
to_chat(user, "<span class='warning'>You accidentally cut yourself with \the [src].</span>")
|
||||
user.take_organ_damage(20)
|
||||
return
|
||||
return ..()
|
||||
@@ -106,7 +106,7 @@
|
||||
|
||||
/obj/item/weapon/material/kitchen/rollingpin/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "<span class='warning'>\The [src] slips out of your hand and hits your head.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] slips out of your hand and hits your head.</span>")
|
||||
user.take_organ_damage(10)
|
||||
user.Paralyse(2)
|
||||
return
|
||||
|
||||
@@ -44,10 +44,10 @@
|
||||
/obj/item/weapon/material/butterfly/attack_self(mob/user)
|
||||
active = !active
|
||||
if(active)
|
||||
user << "<span class='notice'>You flip out \the [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You flip out \the [src].</span>")
|
||||
playsound(user, 'sound/weapons/flipblade.ogg', 15, 1)
|
||||
else
|
||||
user << "<span class='notice'>\The [src] can now be concealed.</span>"
|
||||
to_chat(user, "<span class='notice'>\The [src] can now be concealed.</span>")
|
||||
update_force()
|
||||
add_fingerprint(user)
|
||||
|
||||
@@ -68,9 +68,9 @@
|
||||
|
||||
/obj/item/weapon/material/knife/suicide_act(mob/user)
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
viewers(user) << pick("<span class='danger'>\The [user] is slitting [TU.his] wrists with \the [src]! It looks like [TU.hes] trying to commit suicide.</span>", \
|
||||
to_chat(viewers(user), pick("<span class='danger'>\The [user] is slitting [TU.his] wrists with \the [src]! It looks like [TU.hes] trying to commit suicide.</span>", \
|
||||
"<span class='danger'>\The [user] is slitting [TU.his] throat with \the [src]! It looks like [TU.hes] trying to commit suicide.</span>", \
|
||||
"<span class='danger'>\The [user] is slitting [TU.his] stomach open with \the [src]! It looks like [TU.hes] trying to commit seppuku.</span>")
|
||||
"<span class='danger'>\The [user] is slitting [TU.his] stomach open with \the [src]! It looks like [TU.hes] trying to commit seppuku.</span>"))
|
||||
return (BRUTELOSS)
|
||||
|
||||
// These no longer inherit from hatchets.
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
force = round(force*dulled_divisor)
|
||||
throwforce = round(material.get_blunt_damage()*thrown_force_divisor)
|
||||
//spawn(1)
|
||||
// world << "[src] has force [force] and throwforce [throwforce] when made from default material [material.name]"
|
||||
// to_world("[src] has force [force] and throwforce [throwforce] when made from default material [material.name]")
|
||||
|
||||
/obj/item/weapon/material/proc/set_material(var/new_material)
|
||||
material = get_material_by_name(new_material)
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
/obj/item/weapon/material/shard/suicide_act(mob/user)
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
viewers(user) << pick("<span class='danger'>\The [user] is slitting [TU.his] wrists with \the [src]! It looks like [TU.hes] trying to commit suicide.</span>",
|
||||
"<span class='danger'>\The [user] is slitting [TU.his] throat with \the [src]! It looks like [TU.hes] trying to commit suicide.</span>")
|
||||
to_chat(viewers(user), pick("<span class='danger'>\The [user] is slitting [TU.his] wrists with \the [src]! It looks like [TU.hes] trying to commit suicide.</span>",
|
||||
"<span class='danger'>\The [user] is slitting [TU.his] throat with \the [src]! It looks like [TU.hes] trying to commit suicide.</span>"))
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/material/shard/set_material(var/new_material)
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
/obj/item/weapon/material/sword/suicide_act(mob/user)
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
viewers(user) << "<span class='danger'>[user] is falling on the [src.name]! It looks like [TU.he] [TU.is] trying to commit suicide.</span>"
|
||||
to_chat(viewers(user),"<span class='danger'>[user] is falling on the [src.name]! It looks like [TU.he] [TU.is] trying to commit suicide.</span>")
|
||||
return(BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/material/sword/katana
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
force_unwielded = round(force_wielded*unwielded_force_divisor)
|
||||
force = force_unwielded
|
||||
throwforce = round(force*thrown_force_divisor)
|
||||
//world << "[src] has unwielded force [force_unwielded], wielded force [force_wielded] and throwforce [throwforce] when made from default material [material.name]"
|
||||
//to_world("[src] has unwielded force [force_unwielded], wielded force [force_wielded] and throwforce [throwforce] when made from default material [material.name]")
|
||||
|
||||
/obj/item/weapon/material/twohanded/New()
|
||||
..()
|
||||
|
||||
@@ -23,7 +23,7 @@ GLOBAL_LIST_BOILERPLATE(all_mops, /obj/item/weapon/mop)
|
||||
if(!proximity) return
|
||||
if(istype(A, /turf) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay) || istype(A, /obj/effect/rune))
|
||||
if(reagents.total_volume < 1)
|
||||
user << "<span class='notice'>Your mop is dry!</span>"
|
||||
to_chat(user, "<span class='notice'>Your mop is dry!</span>")
|
||||
return
|
||||
|
||||
user.visible_message("<span class='warning'>[user] begins to clean \the [get_turf(A)].</span>")
|
||||
@@ -32,7 +32,7 @@ GLOBAL_LIST_BOILERPLATE(all_mops, /obj/item/weapon/mop)
|
||||
var/turf/T = get_turf(A)
|
||||
if(T)
|
||||
T.clean(src, user)
|
||||
user << "<span class='notice'>You have finished mopping!</span>"
|
||||
to_chat(user, "<span class='notice'>You have finished mopping!</span>")
|
||||
|
||||
|
||||
/obj/effect/attackby(obj/item/I, mob/user)
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
var/turf/T = get_turf(A)
|
||||
if(T)
|
||||
T.clean_deploy(src)
|
||||
user << "<span class='notice'>You have finished mopping!</span>"
|
||||
to_chat(user, "<span class='notice'>You have finished mopping!</span>")
|
||||
|
||||
/obj/effect/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/weapon/mop_deploy) || istype(I, /obj/item/weapon/soap))
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
/obj/item/weapon/teleportation_scroll/attack_self(mob/user as mob)
|
||||
if((user.mind && !wizards.is_antagonist(user.mind)))
|
||||
usr << "<span class='warning'>You stare at the scroll but cannot make sense of the markings!</span>"
|
||||
to_chat(usr, "<span class='warning'>You stare at the scroll but cannot make sense of the markings!</span>")
|
||||
return
|
||||
|
||||
user.set_machine(src)
|
||||
@@ -69,7 +69,7 @@
|
||||
L+=T
|
||||
|
||||
if(!L.len)
|
||||
user <<"The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry."
|
||||
to_chat(user, "The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry.")
|
||||
return
|
||||
|
||||
if(user && user.buckled)
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
|
||||
/obj/item/weapon/shield/energy/attack_self(mob/living/user as mob)
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "<span class='warning'>You beat yourself in the head with [src].</span>"
|
||||
to_chat(user, "<span class='warning'>You beat yourself in the head with [src].</span>")
|
||||
user.take_organ_damage(5)
|
||||
active = !active
|
||||
if (active)
|
||||
@@ -164,7 +164,7 @@
|
||||
w_class = ITEMSIZE_LARGE
|
||||
slot_flags = null
|
||||
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
|
||||
user << "<span class='notice'>\The [src] is now active.</span>"
|
||||
to_chat(user, "<span class='notice'>\The [src] is now active.</span>")
|
||||
|
||||
else
|
||||
force = 3
|
||||
@@ -172,7 +172,7 @@
|
||||
w_class = ITEMSIZE_TINY
|
||||
slot_flags = SLOT_EARS
|
||||
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
|
||||
user << "<span class='notice'>\The [src] can now be concealed.</span>"
|
||||
to_chat(user, "<span class='notice'>\The [src] can now be concealed.</span>")
|
||||
|
||||
if(istype(user,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = user
|
||||
@@ -241,14 +241,14 @@
|
||||
throw_speed = 2
|
||||
w_class = ITEMSIZE_LARGE
|
||||
slot_flags = SLOT_BACK
|
||||
user << "<span class='notice'>You extend \the [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You extend \the [src].</span>")
|
||||
else
|
||||
force = 3
|
||||
throwforce = 3
|
||||
throw_speed = 3
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
slot_flags = null
|
||||
user << "<span class='notice'>[src] can now be concealed.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] can now be concealed.</span>")
|
||||
|
||||
if(istype(user,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
/obj/item/weapon/storage/backpack/holding/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/storage/backpack/holding))
|
||||
user << "<span class='warning'>The Bluespace interfaces of the two devices conflict and malfunction.</span>"
|
||||
to_chat(user, "<span class='warning'>The Bluespace interfaces of the two devices conflict and malfunction.</span>")
|
||||
qdel(W)
|
||||
return
|
||||
. = ..()
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
slowdown = initial(slowdown)
|
||||
return 1
|
||||
else
|
||||
H << "<span class='warning'>[no_message]</span>"
|
||||
to_chat(H, "<span class='warning'>[no_message]</span>")
|
||||
return 0
|
||||
|
||||
/* If anyone wants to make some... this is how you would.
|
||||
@@ -102,7 +102,7 @@
|
||||
slowdown = initial(slowdown)
|
||||
return 1
|
||||
else
|
||||
H << "<span class='warning'>[no_message]</span>"
|
||||
to_chat(H, "<span class='warning'>[no_message]</span>")
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/storage/backpack/saddlebag_common/robust //Shared bag for other taurs with sturdy backs
|
||||
|
||||
@@ -217,14 +217,14 @@
|
||||
/obj/item/weapon/storage/bag/sheetsnatcher/can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
if(!istype(W,/obj/item/stack/material))
|
||||
if(!stop_messages)
|
||||
usr << "The snatcher does not accept [W]."
|
||||
to_chat(usr, "The snatcher does not accept [W].")
|
||||
return 0
|
||||
var/current = 0
|
||||
for(var/obj/item/stack/material/S in contents)
|
||||
current += S.amount
|
||||
if(capacity == current)//If it's full, you're done
|
||||
if(!stop_messages)
|
||||
usr << "<span class='warning'>The snatcher is full.</span>"
|
||||
to_chat(usr, "<span class='warning'>The snatcher is full.</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
set category = "Object"
|
||||
|
||||
if(show_above_suit == -1)
|
||||
usr << "<span class='notice'>\The [src] cannot be worn above your suit!</span>"
|
||||
to_chat(usr, "<span class='notice'>\The [src] cannot be worn above your suit!</span>")
|
||||
return
|
||||
show_above_suit = !show_above_suit
|
||||
update_icon()
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
if(!proximity) return
|
||||
if(user.mind && (user.mind.assigned_role == "Chaplain"))
|
||||
if(A.reagents && A.reagents.has_reagent("water")) //blesses all the water in the holder
|
||||
user << "<span class='notice'>You bless [A].</span>"
|
||||
to_chat(user, "<span class='notice'>You bless [A].</span>")
|
||||
var/water2holy = A.reagents.get_reagent_amount("water")
|
||||
A.reagents.del_reagent("water")
|
||||
A.reagents.add_reagent("holywater",water2holy)
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
if ( !found ) // User is too far away
|
||||
return
|
||||
// Now make the cardboard
|
||||
user << "<span class='notice'>You fold [src] flat.</span>"
|
||||
to_chat(user, "<span class='notice'>You fold [src] flat.</span>")
|
||||
new foldable(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -30,11 +30,11 @@
|
||||
return
|
||||
|
||||
if(contents.len <= 0)
|
||||
user << "There are no [icon_type]s left in the box."
|
||||
to_chat(user, "There are no [icon_type]s left in the box.")
|
||||
else if(contents.len == 1)
|
||||
user << "There is one [icon_type] left in the box."
|
||||
to_chat(user, "There is one [icon_type] left in the box.")
|
||||
else
|
||||
user << "There are [contents.len] [icon_type]s in the box."
|
||||
to_chat(user, "There are [contents.len] [icon_type]s in the box.")
|
||||
|
||||
return
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
var/obj/item/clothing/mask/smokable/cigarette/cig = locate() in src
|
||||
|
||||
if(cig == null)
|
||||
user << "<span class='notice'>Looks like the packet is out of cigarettes.</span>"
|
||||
to_chat(user, "<span class='notice'>Looks like the packet is out of cigarettes.</span>")
|
||||
return
|
||||
|
||||
// Instead of running equip_to_slot_if_possible() we check here first,
|
||||
@@ -259,7 +259,7 @@
|
||||
user.equip_to_slot(cig, slot_wear_mask)
|
||||
|
||||
reagents.maximum_volume = 15 * contents.len
|
||||
user << "<span class='notice'>You take a cigarette out of the pack.</span>"
|
||||
to_chat(user, "<span class='notice'>You take a cigarette out of the pack.</span>")
|
||||
update_icon()
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -28,17 +28,17 @@
|
||||
if (user.hand)
|
||||
temp = H.get_organ("l_hand")
|
||||
if(!temp)
|
||||
user << "<span class='warning'>You need two hands to pick this up!</span>"
|
||||
to_chat(user, "<span class='warning'>You need two hands to pick this up!</span>")
|
||||
return
|
||||
|
||||
if(user.get_inactive_hand())
|
||||
user << "<span class='warning'>You need your other hand to be empty</span>"
|
||||
to_chat(user, "<span class='warning'>You need your other hand to be empty</span>")
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/storage/laundry_basket/attack_self(mob/user as mob)
|
||||
var/turf/T = get_turf(user)
|
||||
user << "<span class='notice'>You dump the [src]'s contents onto \the [T].</span>"
|
||||
to_chat(user, "<span class='notice'>You dump the [src]'s contents onto \the [T].</span>")
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/storage/laundry_basket/pickup(mob/user)
|
||||
|
||||
@@ -20,21 +20,21 @@
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/weapon/card/id))
|
||||
if(src.broken)
|
||||
user << "<span class='warning'>It appears to be broken.</span>"
|
||||
to_chat(user, "<span class='warning'>It appears to be broken.</span>")
|
||||
return
|
||||
if(src.allowed(user))
|
||||
src.locked = !( src.locked )
|
||||
if(src.locked)
|
||||
src.icon_state = src.icon_locked
|
||||
user << "<span class='notice'>You lock \the [src]!</span>"
|
||||
to_chat(user, "<span class='notice'>You lock \the [src]!</span>")
|
||||
close_all()
|
||||
return
|
||||
else
|
||||
src.icon_state = src.icon_closed
|
||||
user << "<span class='notice'>You unlock \the [src]!</span>"
|
||||
to_chat(user, "<span class='notice'>You unlock \the [src]!</span>")
|
||||
return
|
||||
else
|
||||
user << "<span class='warning'>Access Denied</span>"
|
||||
to_chat(user, "<span class='warning'>Access Denied</span>")
|
||||
else if(istype(W, /obj/item/weapon/melee/energy/blade))
|
||||
if(emag_act(INFINITY, user, W, "The locker has been sliced open by [user] with an energy blade!", "You hear metal being sliced and sparks flying."))
|
||||
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
|
||||
@@ -45,13 +45,13 @@
|
||||
if(!locked)
|
||||
..()
|
||||
else
|
||||
user << "<span class='warning'>It's locked!</span>"
|
||||
to_chat(user, "<span class='warning'>It's locked!</span>")
|
||||
return
|
||||
|
||||
|
||||
show_to(mob/user as mob)
|
||||
if(locked)
|
||||
user << "<span class='warning'>It's locked!</span>"
|
||||
to_chat(user, "<span class='warning'>It's locked!</span>")
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
examine(mob/user)
|
||||
if(..(user, 1))
|
||||
user << text("The service panel is [src.open ? "open" : "closed"].")
|
||||
to_chat(user, "The service panel is [src.open ? "open" : "closed"].")
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(locked)
|
||||
|
||||
@@ -105,9 +105,9 @@
|
||||
return
|
||||
|
||||
if(bcell)
|
||||
user <<"<span class='notice'>The baton is [round(bcell.percent())]% charged.</span>"
|
||||
to_chat(user, "<span class='notice'>The baton is [round(bcell.percent())]% charged.</span>")
|
||||
if(!bcell)
|
||||
user <<"<span class='warning'>The baton does not have a power source installed.</span>"
|
||||
to_chat(user, "<span class='warning'>The baton does not have a power source installed.</span>")
|
||||
|
||||
/obj/item/weapon/melee/baton/attackby(obj/item/weapon/W, mob/user)
|
||||
if(use_external_power)
|
||||
@@ -118,12 +118,12 @@
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
bcell = W
|
||||
user << "<span class='notice'>You install a cell in [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You install a cell in [src].</span>")
|
||||
update_icon()
|
||||
else
|
||||
user << "<span class='notice'>[src] already has a cell.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] already has a cell.</span>")
|
||||
else
|
||||
user << "<span class='notice'>This cell is not fitted for [src].</span>"
|
||||
to_chat(user, "<span class='notice'>This cell is not fitted for [src].</span>")
|
||||
|
||||
/obj/item/weapon/melee/baton/attack_hand(mob/user as mob)
|
||||
if(user.get_inactive_hand() == src)
|
||||
@@ -131,7 +131,7 @@
|
||||
bcell.update_icon()
|
||||
user.put_in_hands(bcell)
|
||||
bcell = null
|
||||
user << "<span class='notice'>You remove the cell from the [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You remove the cell from the [src].</span>")
|
||||
status = 0
|
||||
update_icon()
|
||||
return
|
||||
@@ -147,20 +147,20 @@
|
||||
bcell = R.cell
|
||||
if(bcell && bcell.charge > hitcost)
|
||||
status = !status
|
||||
user << "<span class='notice'>[src] is now [status ? "on" : "off"].</span>"
|
||||
to_chat(user, "<span class='notice'>[src] is now [status ? "on" : "off"].</span>")
|
||||
playsound(loc, "sparks", 75, 1, -1)
|
||||
update_icon()
|
||||
else
|
||||
status = 0
|
||||
if(!bcell)
|
||||
user << "<span class='warning'>[src] does not have a power source!</span>"
|
||||
to_chat(user, "<span class='warning'>[src] does not have a power source!</span>")
|
||||
else
|
||||
user << "<span class='warning'>[src] is out of charge.</span>"
|
||||
to_chat(user, "<span class='warning'>[src] is out of charge.</span>")
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/weapon/melee/baton/attack(mob/M, mob/user)
|
||||
if(status && (CLUMSY in user.mutations) && prob(50))
|
||||
user << "<span class='danger'>You accidentally hit yourself with the [src]!</span>"
|
||||
to_chat(user, "<span class='danger'>You accidentally hit yourself with the [src]!</span>")
|
||||
user.Weaken(30)
|
||||
deductcharge(hitcost)
|
||||
return
|
||||
@@ -236,12 +236,12 @@
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
bcell = W
|
||||
user << "<span class='notice'>You install a cell in [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You install a cell in [src].</span>")
|
||||
update_icon()
|
||||
else
|
||||
user << "<span class='notice'>[src] already has a cell.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] already has a cell.</span>")
|
||||
else
|
||||
user << "<span class='notice'>This cell is not fitted for [src].</span>"
|
||||
to_chat(user, "<span class='notice'>This cell is not fitted for [src].</span>")
|
||||
|
||||
/obj/item/weapon/melee/baton/get_description_interaction()
|
||||
var/list/results = list()
|
||||
|
||||
@@ -69,8 +69,8 @@
|
||||
|
||||
suicide_act(mob/user)
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
viewers(user) << pick("<span class='danger'>\The [user] is pressing \the [src] to [TU.his] temple and activating it! It looks like [TU.hes] trying to commit suicide.</span>",
|
||||
"<span class='danger'>\The [user] is pressing \the [src] to [TU.his] chest and activating it! It looks like [TU.hes] trying to commit suicide.</span>")
|
||||
to_chat(viewers(user),pick("<span class='danger'>\The [user] is pressing \the [src] to [TU.his] temple and activating it! It looks like [TU.hes] trying to commit suicide.</span>",
|
||||
"<span class='danger'>\The [user] is pressing \the [src] to [TU.his] chest and activating it! It looks like [TU.hes] trying to commit suicide.</span>"))
|
||||
return (BRUTELOSS)
|
||||
|
||||
/*
|
||||
@@ -94,9 +94,9 @@
|
||||
|
||||
suicide_act(mob/user)
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
viewers(user) << pick("<span class='danger'>\The [user] is slitting [TU.his] wrists with the [src.name]! It looks like [TU.hes] trying to commit suicide.</span>", \
|
||||
to_chat(viewers(user),pick("<span class='danger'>\The [user] is slitting [TU.his] wrists with the [src.name]! It looks like [TU.hes] trying to commit suicide.</span>", \
|
||||
"<span class='danger'>\The [user] is slitting [TU.his] throat with the [src.name]! It looks like [TU.hes] trying to commit suicide.</span>", \
|
||||
"<span class='danger'>\The [user] is slitting [TU.his] stomach open with the [src.name]! It looks like [TU.hes] trying to commit seppuku.</span>")
|
||||
"<span class='danger'>\The [user] is slitting [TU.his] stomach open with the [src.name]! It looks like [TU.hes] trying to commit seppuku.</span>"))
|
||||
return (BRUTELOSS)
|
||||
|
||||
/*
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
/obj/item/weapon/melee/classic_baton/attack(mob/M as mob, mob/living/user as mob)
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "<span class='warning'>You club yourself over the head.</span>"
|
||||
to_chat(user, "<span class='warning'>You club yourself over the head.</span>")
|
||||
user.Weaken(3 * force)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
@@ -83,7 +83,7 @@
|
||||
/obj/item/weapon/melee/telebaton/attack(mob/target as mob, mob/living/user as mob)
|
||||
if(on)
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "<span class='warning'>You club yourself over the head.</span>"
|
||||
to_chat(user, "<span class='warning'>You club yourself over the head.</span>")
|
||||
user.Weaken(3 * force)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
@@ -30,14 +30,14 @@
|
||||
/obj/item/weapon/tank/jetpack/examine(mob/user)
|
||||
. = ..()
|
||||
if(air_contents.total_moles < 5)
|
||||
user << "<span class='danger'>The meter on \the [src] indicates you are almost out of gas!</span>"
|
||||
to_chat(user, "<span class='danger'>The meter on \the [src] indicates you are almost out of gas!</span>")
|
||||
playsound(user, 'sound/effects/alert.ogg', 50, 1)
|
||||
|
||||
/obj/item/weapon/tank/jetpack/verb/toggle_rockets()
|
||||
set name = "Toggle Jetpack Stabilization"
|
||||
set category = "Object"
|
||||
stabilization_on = !( stabilization_on )
|
||||
usr << "You toggle the stabilization [stabilization_on? "on":"off"]."
|
||||
to_chat(usr, "You toggle the stabilization [stabilization_on? "on":"off"].")
|
||||
|
||||
/obj/item/weapon/tank/jetpack/verb/toggle()
|
||||
set name = "Toggle Jetpack"
|
||||
@@ -56,7 +56,7 @@
|
||||
M.update_inv_back()
|
||||
M.update_action_buttons()
|
||||
|
||||
usr << "You toggle the thrusters [on? "on":"off"]."
|
||||
to_chat(usr, "You toggle the thrusters [on? "on":"off"].")
|
||||
|
||||
/obj/item/weapon/tank/jetpack/proc/allow_thrust(num, mob/living/user as mob)
|
||||
if(!on)
|
||||
@@ -116,7 +116,7 @@
|
||||
var/obj/item/weapon/rig/holder
|
||||
|
||||
/obj/item/weapon/tank/jetpack/rig/examine()
|
||||
usr << "It's a jetpack. If you can see this, report it on the bug tracker."
|
||||
to_chat(usr, "It's a jetpack. If you can see this, report it on the bug tracker.")
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/tank/jetpack/rig/allow_thrust(num, mob/living/user as mob)
|
||||
|
||||
@@ -20,22 +20,22 @@
|
||||
can_place = 1
|
||||
break
|
||||
if(!can_place)
|
||||
user << "<span class='danger'>You need to have a firm grip on [H] before you can use \the [src]!</span>"
|
||||
to_chat(user, "<span class='danger'>You need to have a firm grip on [H] before you can use \the [src]!</span>")
|
||||
return
|
||||
else
|
||||
if(user.zone_sel.selecting == O_EYES)
|
||||
|
||||
if(!H.organs_by_name[BP_HEAD])
|
||||
user << "<span class='warning'>\The [H] doesn't have a head.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [H] doesn't have a head.</span>")
|
||||
return
|
||||
if(!H.has_eyes())
|
||||
user << "<span class='warning'>\The [H] doesn't have any eyes.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [H] doesn't have any eyes.</span>")
|
||||
return
|
||||
if(H.glasses)
|
||||
user << "<span class='warning'>\The [H] is already wearing somethign on their eyes.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [H] is already wearing somethign on their eyes.</span>")
|
||||
return
|
||||
if(H.head && (H.head.body_parts_covered & FACE))
|
||||
user << "<span class='warning'>Remove their [H.head] first.</span>"
|
||||
to_chat(user, "<span class='warning'>Remove their [H.head] first.</span>")
|
||||
return
|
||||
user.visible_message("<span class='danger'>\The [user] begins taping over \the [H]'s eyes!</span>")
|
||||
|
||||
@@ -64,16 +64,16 @@
|
||||
|
||||
else if(user.zone_sel.selecting == O_MOUTH || user.zone_sel.selecting == BP_HEAD)
|
||||
if(!H.organs_by_name[BP_HEAD])
|
||||
user << "<span class='warning'>\The [H] doesn't have a head.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [H] doesn't have a head.</span>")
|
||||
return
|
||||
if(!H.check_has_mouth())
|
||||
user << "<span class='warning'>\The [H] doesn't have a mouth.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [H] doesn't have a mouth.</span>")
|
||||
return
|
||||
if(H.wear_mask)
|
||||
user << "<span class='warning'>\The [H] is already wearing a mask.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [H] is already wearing a mask.</span>")
|
||||
return
|
||||
if(H.head && (H.head.body_parts_covered & FACE))
|
||||
user << "<span class='warning'>Remove their [H.head] first.</span>"
|
||||
to_chat(user, "<span class='warning'>Remove their [H.head] first.</span>")
|
||||
return
|
||||
user.visible_message("<span class='danger'>\The [user] begins taping up \the [H]'s mouth!</span>")
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
if(!stuck)
|
||||
return
|
||||
|
||||
user << "You remove \the [initial(name)] from [stuck]."
|
||||
to_chat(user, "You remove \the [initial(name)] from [stuck].")
|
||||
|
||||
user.drop_from_inventory(src)
|
||||
stuck.forceMove(get_turf(src))
|
||||
@@ -196,7 +196,7 @@
|
||||
if(target_turf != source_turf)
|
||||
dir_offset = get_dir(source_turf, target_turf)
|
||||
if(!(dir_offset in cardinal))
|
||||
user << "You cannot reach that from here." // can only place stuck papers in cardinal directions, to
|
||||
to_chat(user, "You cannot reach that from here.") // can only place stuck papers in cardinal directions, to
|
||||
return // reduce papers around corners issue.
|
||||
|
||||
user.drop_from_inventory(src)
|
||||
|
||||
@@ -48,7 +48,7 @@ Frequency:
|
||||
return
|
||||
var/turf/current_location = get_turf(usr)//What turf is the user on?
|
||||
if(!current_location||current_location.z==2)//If turf was not found or they're on z level 2.
|
||||
usr << "The [src] is malfunctioning."
|
||||
to_chat(usr, "The [src] is malfunctioning.")
|
||||
return
|
||||
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))))
|
||||
usr.set_machine(src)
|
||||
@@ -133,7 +133,7 @@ Frequency:
|
||||
/obj/item/weapon/hand_tele/attack_self(mob/user as mob)
|
||||
var/turf/current_location = get_turf(user)//What turf is the user on?
|
||||
if(!current_location || current_location.z in using_map.admin_levels || current_location.block_tele)//If turf was not found or they're on z level 2 or >7 which does not currently exist.
|
||||
user << "<span class='notice'>\The [src] is malfunctioning.</span>"
|
||||
to_chat(user, "<span class='notice'>\The [src] is malfunctioning.</span>")
|
||||
return
|
||||
var/list/L = list( )
|
||||
for(var/obj/machinery/teleport/hub/R in machines)
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
|
||||
/obj/item/weapon/tool/screwdriver/suicide_act(mob/user)
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
viewers(user) << pick("<span class='danger'>\The [user] is stabbing the [src.name] into [TU.his] temple! It looks like [TU.hes] trying to commit suicide.</span>", \
|
||||
"<span class='danger'>\The [user] is stabbing the [src.name] into [TU.his] heart! It looks like [TU.hes] trying to commit suicide.</span>")
|
||||
to_chat(viewers(user), pick("<span class='danger'>\The [user] is stabbing the [src.name] into [TU.his] temple! It looks like [TU.hes] trying to commit suicide.</span>", \
|
||||
"<span class='danger'>\The [user] is stabbing the [src.name] into [TU.his] heart! It looks like [TU.hes] trying to commit suicide.</span>"))
|
||||
return(BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/tool/screwdriver/New()
|
||||
|
||||
@@ -558,11 +558,11 @@
|
||||
/obj/item/weapon/weldingtool/electric/examine(mob/user)
|
||||
if(get_dist(src, user) > 1)
|
||||
to_chat(user, desc)
|
||||
else // The << need to stay, for some reason
|
||||
else
|
||||
if(power_supply)
|
||||
user << text("\icon[] The [] has [] charge left.", src, src.name, get_fuel())
|
||||
to_chat(user, "\icon[src] The [src.name] has [get_fuel()] charge left.")
|
||||
else
|
||||
user << text("\icon[] The [] has no power cell!", src, src.name)
|
||||
to_chat(user, "\icon[src] The [src.name] has no power cell!")
|
||||
|
||||
/obj/item/weapon/weldingtool/electric/get_fuel()
|
||||
if(use_external_power)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/obj/item/weapon/beartrap/suicide_act(mob/user)
|
||||
var/datum/gender/T = gender_datums[user.get_visible_gender()]
|
||||
viewers(user) << "<span class='danger'>[user] is putting the [src.name] on [T.his] head! It looks like [T.hes] trying to commit suicide.</span>"
|
||||
to_chat(viewers(user),"<span class='danger'>[user] is putting the [src.name] on [T.his] head! It looks like [T.hes] trying to commit suicide.</span>")
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/beartrap/proc/can_use(mob/user)
|
||||
@@ -101,7 +101,7 @@
|
||||
can_buckle = 1
|
||||
buckle_mob(L)
|
||||
L.Stun(stun_length)
|
||||
L << "<span class='danger'>The steel jaws of \the [src] bite into you, trapping you in place!</span>"
|
||||
to_chat(L, "<span class='danger'>The steel jaws of \the [src] bite into you, trapping you in place!</span>")
|
||||
deployed = 0
|
||||
can_buckle = initial(can_buckle)
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
|
||||
if((CLUMSY in user.mutations) && prob(50)) //What if he's a clown?
|
||||
M << "<span class='warning'>You accidentally slam yourself with the [src]!</span>"
|
||||
to_chat(M, "<span class='warning'>You accidentally slam yourself with the [src]!</span>")
|
||||
M.Weaken(1)
|
||||
user.take_organ_damage(2)
|
||||
if(prob(50))
|
||||
@@ -78,7 +78,7 @@
|
||||
break
|
||||
|
||||
if(protected)
|
||||
M << "<span class='warning'>You get slammed in the face with the tray, against your mask!</span>"
|
||||
to_chat(M, "<span class='warning'>You get slammed in the face with the tray, against your mask!</span>")
|
||||
if(prob(33))
|
||||
src.add_blood(H)
|
||||
if (H.wear_mask)
|
||||
@@ -108,7 +108,7 @@
|
||||
return
|
||||
|
||||
else //No eye or head protection, tough luck!
|
||||
M << "<span class='warning'>You get slammed in the face with the tray!</span>"
|
||||
to_chat(M, "<span class='warning'>You get slammed in the face with the tray!</span>")
|
||||
if(prob(33))
|
||||
src.add_blood(M)
|
||||
var/turf/location = H.loc
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
suicide_act(mob/user)
|
||||
var/datum/gender/T = gender_datums[user.get_visible_gender()]
|
||||
viewers(user) << "<span class='danger'>[user] is impaling [T.himself] with the [src.name]! It looks like [T.he] [T.is] trying to commit suicide.</span>"
|
||||
to_chat(viewers(user),"<span class='danger'>[user] is impaling [T.himself] with the [src.name]! It looks like [T.he] [T.is] trying to commit suicide.</span>")
|
||||
return (BRUTELOSS|FIRELOSS)
|
||||
|
||||
/obj/item/weapon/nullrod/attack(mob/M as mob, mob/living/user as mob) //Paste from old-code to decult with a null rod.
|
||||
@@ -23,26 +23,26 @@
|
||||
user.do_attack_animation(M)
|
||||
|
||||
if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
|
||||
user << "<span class='danger'>You don't have the dexterity to do this!</span>"
|
||||
to_chat(user, "<span class='danger'>You don't have the dexterity to do this!</span>")
|
||||
return
|
||||
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "<span class='danger'>The rod slips out of your hand and hits your head.</span>"
|
||||
to_chat(user, "<span class='danger'>The rod slips out of your hand and hits your head.</span>")
|
||||
user.take_organ_damage(10)
|
||||
user.Paralyse(20)
|
||||
return
|
||||
|
||||
if (M.stat !=2)
|
||||
if(cult && (M.mind in cult.current_antagonists) && prob(33))
|
||||
M << "<span class='danger'>The power of [src] clears your mind of the cult's influence!</span>"
|
||||
user << "<span class='danger'>You wave [src] over [M]'s head and see their eyes become clear, their mind returning to normal.</span>"
|
||||
to_chat(M, "<span class='danger'>The power of [src] clears your mind of the cult's influence!</span>")
|
||||
to_chat(user, "<span class='danger'>You wave [src] over [M]'s head and see their eyes become clear, their mind returning to normal.</span>")
|
||||
cult.remove_antagonist(M.mind)
|
||||
M.visible_message("<span class='danger'>\The [user] waves \the [src] over \the [M]'s head.</span>")
|
||||
else if(prob(10))
|
||||
user << "<span class='danger'>The rod slips in your hand.</span>"
|
||||
to_chat(user, "<span class='danger'>The rod slips in your hand.</span>")
|
||||
..()
|
||||
else
|
||||
user << "<span class='danger'>The rod appears to do nothing.</span>"
|
||||
to_chat(user, "<span class='danger'>The rod appears to do nothing.</span>")
|
||||
M.visible_message("<span class='danger'>\The [user] waves \the [src] over \the [M]'s head.</span>")
|
||||
return
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
if(!proximity)
|
||||
return
|
||||
if (istype(A, /turf/simulated/floor))
|
||||
user << "<span class='notice'>You hit the floor with the [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You hit the floor with the [src].</span>")
|
||||
call(/obj/effect/rune/proc/revealrunes)(src)
|
||||
|
||||
/obj/item/weapon/energy_net
|
||||
@@ -111,7 +111,7 @@
|
||||
/obj/effect/energy_net/Destroy()
|
||||
if(has_buckled_mobs())
|
||||
for(var/A in buckled_mobs)
|
||||
to_chat(A,"<span class='notice'>You are free of the net!</span>")
|
||||
to_chat(A, "<span class='notice'>You are free of the net!</span>")
|
||||
unbuckle_mob(A)
|
||||
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user