mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-19 19:13:30 +01:00
Reduce lines by removing blank lines added by PJ's script
This commit is contained in:
@@ -37,10 +37,8 @@
|
||||
if (isslime(M) || isAI(M))
|
||||
if(M == usr)
|
||||
to_chat(M, "<span class='warning'>You are unable to buckle yourself to the [src]!</span>")
|
||||
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>You are unable to buckle [M] to the [src]!</span>")
|
||||
|
||||
return 0
|
||||
|
||||
M.buckled = src
|
||||
|
||||
@@ -319,22 +319,18 @@
|
||||
switch(status)
|
||||
if(BURST)
|
||||
to_chat(user, "<span class='notice'>You clear the hatched egg.</span>")
|
||||
|
||||
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
|
||||
qdel(src)
|
||||
return
|
||||
if(GROWING)
|
||||
to_chat(user, "<span class='notice'>The child is not developed yet.</span>")
|
||||
|
||||
return
|
||||
if(GROWN)
|
||||
to_chat(user, "<span class='notice'>You retrieve the child.</span>")
|
||||
|
||||
Burst(0)
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='notice'>It feels slimy.</span>")
|
||||
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
|
||||
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
if(istype(I, /obj/item/device/analyzer))
|
||||
to_chat(user, "<span class='notice'>Analyzing... [src]'s unstable field is fluctuating along frequency [aSignal.code]:[format_frequency(aSignal.frequency)].</span>")
|
||||
|
||||
|
||||
///////////////////////
|
||||
|
||||
/obj/effect/anomaly/grav
|
||||
|
||||
@@ -51,7 +51,6 @@
|
||||
else
|
||||
isactive[name] = t.fields["p_stat"]
|
||||
// to_chat(world, "[name]: [rank]")
|
||||
|
||||
//cael - to prevent multiple appearances of a player/job combination, add a continue after each line
|
||||
var/department = 0
|
||||
if(real_rank in command_positions)
|
||||
|
||||
@@ -93,7 +93,6 @@ var/global/list/image/splatter_cache=list()
|
||||
var/taken = rand(1,amount)
|
||||
amount -= taken
|
||||
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()
|
||||
@@ -142,7 +141,6 @@ var/global/list/image/splatter_cache=list()
|
||||
..(user)
|
||||
to_chat(user, "It reads: <font color='[basecolor]'>\"[message]\"<font>")
|
||||
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs
|
||||
name = "gibs"
|
||||
desc = "They look bloody and gruesome."
|
||||
|
||||
@@ -79,7 +79,6 @@ var/global/list/image/fluidtrack_cache=list()
|
||||
// Process 4 bits
|
||||
for(var/bi=0;bi<4;bi++)
|
||||
to_chat(b=1, bi)
|
||||
|
||||
// COMING BIT
|
||||
// If setting
|
||||
if(comingdir&b)
|
||||
|
||||
@@ -15,14 +15,11 @@
|
||||
if(src.reagents && W.reagents && !noscoop)
|
||||
if(!src.reagents.total_volume)
|
||||
to_chat(user, "<span class='notice'>There isn't enough [src] to scoop up!</span>")
|
||||
|
||||
return
|
||||
if(W.reagents.total_volume >= W.reagents.maximum_volume)
|
||||
to_chat(user, "<span class='notice'>[W] is full!</span>")
|
||||
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You scoop the [src] into [W]!</span>")
|
||||
|
||||
reagents.trans_to(W, reagents.total_volume)
|
||||
if(!reagents.total_volume && !noclear) //scooped up all of it
|
||||
qdel(src)
|
||||
@@ -34,7 +31,6 @@
|
||||
src.reagents.handle_reactions()
|
||||
to_chat(user, "<span class='notice'>You heat [src] with [W]!</span>")
|
||||
|
||||
|
||||
/obj/effect/decal/cleanable/ex_act()
|
||||
if(reagents)
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
|
||||
@@ -60,7 +60,6 @@
|
||||
|
||||
if(check)
|
||||
to_chat(user, "<span class='notice'>The wall is far too cluttered to place a poster!</span>")
|
||||
|
||||
return
|
||||
|
||||
resulting_poster.loc = W //Looks like it's uncluttered enough. Place the poster
|
||||
@@ -312,11 +311,9 @@ obj/structure/sign/poster/attackby(obj/item/I, mob/user, params)
|
||||
playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1)
|
||||
if(ruined)
|
||||
to_chat(user, "<span class='notice'>You remove the remnants of the poster.</span>")
|
||||
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You carefully remove the poster from the wall.</span>")
|
||||
|
||||
roll_and_drop(user.loc)
|
||||
return
|
||||
|
||||
@@ -358,18 +355,15 @@ obj/structure/sign/poster/attackby(obj/item/I, mob/user, params)
|
||||
for(var/obj/O in user.loc.contents) //Let's see if it already has a poster on it or too much stuff
|
||||
if(istype(O,/obj/structure/sign))
|
||||
to_chat(user, "<span class='notice'>The wall is far too cluttered to place a poster!</span>")
|
||||
|
||||
return
|
||||
stuff_on_wall++
|
||||
if(stuff_on_wall >= 4)
|
||||
to_chat(user, "<span class='notice'>The wall is far too cluttered to place a poster!</span>")
|
||||
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notice'>You start placing the poster on the wall...</span>")//Looks like it's uncluttered enough. Place the poster.
|
||||
|
||||
|
||||
|
||||
//declaring D because otherwise if P gets 'deconstructed' we lose our reference to P.resulting_poster
|
||||
var/obj/structure/sign/poster/D = P.resulting_poster
|
||||
|
||||
@@ -390,7 +384,6 @@ obj/structure/sign/poster/attackby(obj/item/I, mob/user, params)
|
||||
D.pixel_y = 0
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You cannot reach the wall from here!</span>")
|
||||
|
||||
return
|
||||
|
||||
flick("poster_being_set",D)
|
||||
@@ -404,7 +397,6 @@ obj/structure/sign/poster/attackby(obj/item/I, mob/user, params)
|
||||
|
||||
if(istype(src,/turf/simulated/wall) && user && user.loc == temp_loc) //Let's check if everything is still there
|
||||
to_chat(user, "<span class='notice'>You place the poster!</span>")
|
||||
|
||||
else
|
||||
D.roll_and_drop(temp_loc)
|
||||
return
|
||||
|
||||
@@ -1094,7 +1094,6 @@ steam.start() -- spawns the effect
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You hit the metal foam but bounce off it.</span>")
|
||||
|
||||
|
||||
/obj/structure/foamedmetal/attackby(var/obj/item/I, var/mob/user, params)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(src)
|
||||
@@ -1112,7 +1111,6 @@ steam.start() -- spawns the effect
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You hit the metal foam to no effect.</span>")
|
||||
|
||||
|
||||
/obj/structure/foamedmetal/attack_animal(mob/living/simple_animal/M)
|
||||
M.do_attack_animation(src)
|
||||
if(M.melee_damage_upper == 0)
|
||||
@@ -1159,11 +1157,9 @@ steam.start() -- spawns the effect
|
||||
|
||||
for(var/mob/M in viewers(5, location))
|
||||
to_chat(M, "\red The solution violently explodes.")
|
||||
|
||||
for(var/mob/M in viewers(1, location))
|
||||
if (prob (50 * amount))
|
||||
to_chat(M, "\red The explosion knocks you down.")
|
||||
|
||||
M.Weaken(rand(1,5))
|
||||
return
|
||||
else
|
||||
@@ -1188,7 +1184,6 @@ steam.start() -- spawns the effect
|
||||
for(var/mob/M in viewers(8, location))
|
||||
to_chat(M, "\red The solution violently explodes.")
|
||||
|
||||
|
||||
explosion(location, devastation, heavy, light, flash)
|
||||
|
||||
proc/holder_damage(var/atom/holder)
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
proc/Gib(atom/location, var/list/viruses = list(), var/datum/dna/MobDNA = null)
|
||||
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
|
||||
to_chat(world, "\red Gib list length mismatch!")
|
||||
|
||||
return
|
||||
|
||||
var/obj/effect/decal/cleanable/blood/gibs/gib = null
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
for(var/mob/O in viewers(world.view, src.loc))
|
||||
to_chat(O, "<font color='red'>[M] triggered the \icon[src] [src]</font>")
|
||||
|
||||
triggered = 1
|
||||
call(src,triggerproc)(M)
|
||||
|
||||
|
||||
@@ -66,7 +66,6 @@
|
||||
else if(istype(mover, /mob/living))
|
||||
if(prob(50))
|
||||
to_chat(mover, "<span class='danger'>You get stuck in \the [src] for a moment.</span>")
|
||||
|
||||
return 0
|
||||
else if(istype(mover, /obj/item/projectile))
|
||||
return prob(30)
|
||||
@@ -209,7 +208,6 @@
|
||||
S.key = C.key
|
||||
if(master_commander)
|
||||
to_chat(S, "<span class='userdanger'>You are a spider who is loyal to [master_commander], obey [master_commander]'s every order and assist them in completing their goals at any cost.</span>")
|
||||
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/cleanable/spiderling_remains
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
for(var/mob/M in range(heavy_range, epicenter))
|
||||
to_chat(M, 'sound/effects/EMPulse.ogg')
|
||||
|
||||
|
||||
for(var/atom/T in range(light_range, epicenter))
|
||||
var/distance = get_dist(epicenter, T)
|
||||
if(distance < 0)
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
if(M.ear_deaf <= 0 || !M.ear_deaf) if(!istype(M.loc,/turf/space))
|
||||
to_chat(M, 'sound/effects/explosionfar.ogg')
|
||||
|
||||
|
||||
if(heavy_impact_range > 1)
|
||||
var/datum/effect/system/explosion/E = new/datum/effect/system/explosion()
|
||||
E.set_up(epicenter)
|
||||
|
||||
@@ -165,7 +165,6 @@
|
||||
to_chat(user, msg)
|
||||
|
||||
|
||||
|
||||
/obj/item/attack_hand(mob/user as mob)
|
||||
if (!user) return 0
|
||||
if (hasorgans(user))
|
||||
@@ -175,11 +174,9 @@
|
||||
temp = H.organs_by_name["l_hand"]
|
||||
if(!temp)
|
||||
to_chat(user, "<span class='warning'>You try to use your hand, but it's missing!</span>")
|
||||
|
||||
return 0
|
||||
if(temp && !temp.is_usable())
|
||||
to_chat(user, "<span class='warning'>You try to move your [temp.name], but cannot!</span>")
|
||||
|
||||
return 0
|
||||
|
||||
if (istype(src.loc, /obj/item/weapon/storage))
|
||||
@@ -211,7 +208,6 @@
|
||||
if(src in A.contents) // To stop Aliens having items stuck in their pockets
|
||||
A.unEquip(src)
|
||||
to_chat(user, "Your claws aren't capable of such fine manipulation.")
|
||||
|
||||
return
|
||||
|
||||
if (istype(src.loc, /obj/item/weapon/storage))
|
||||
@@ -239,7 +235,6 @@
|
||||
if(src in A.contents) // To stop Aliens having items stuck in their pockets
|
||||
A.unEquip(src)
|
||||
to_chat(user, "Your claws aren't capable of such fine manipulation.")
|
||||
|
||||
return
|
||||
attack_hand(A)
|
||||
|
||||
@@ -274,14 +269,11 @@
|
||||
S.handle_item_insertion(I, 1) //The 1 stops the "You put the [src] into [S]" insertion message from being displayed.
|
||||
if(success && !failure)
|
||||
to_chat(user, "<span class='notice'>You put everything in [S].</span>")
|
||||
|
||||
else if(success)
|
||||
to_chat(user, "<span class='notice'>You put some things in [S].</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You fail to pick anything up with [S].</span>")
|
||||
|
||||
|
||||
else if(S.can_be_inserted(src))
|
||||
S.handle_item_insertion(src)
|
||||
|
||||
@@ -352,27 +344,21 @@
|
||||
return
|
||||
if((!istype(usr, /mob/living/carbon)) || (istype(usr, /mob/living/carbon/brain)))//Is humanoid, and is not a brain
|
||||
to_chat(usr, "\red You can't pick things up!")
|
||||
|
||||
return
|
||||
if( usr.stat || usr.restrained() )//Is not asleep/dead and is not restrained
|
||||
to_chat(usr, "\red You can't pick things up!")
|
||||
|
||||
return
|
||||
if(src.anchored) //Object isn't anchored
|
||||
to_chat(usr, "\red You can't pick that up!")
|
||||
|
||||
return
|
||||
if(!usr.hand && usr.r_hand) //Right hand is not full
|
||||
to_chat(usr, "\red Your right hand is full.")
|
||||
|
||||
return
|
||||
if(usr.hand && usr.l_hand) //Left hand is not full
|
||||
to_chat(usr, "\red Your left hand is full.")
|
||||
|
||||
return
|
||||
if(!istype(src.loc, /turf)) //Object is on a turf
|
||||
to_chat(usr, "\red You can't pick that up!")
|
||||
|
||||
return
|
||||
//All checks are done, time to pick it up!
|
||||
usr.UnarmedAttack(src)
|
||||
@@ -407,12 +393,10 @@
|
||||
))
|
||||
// you can't stab someone in the eyes wearing a mask!
|
||||
to_chat(user, "<span class='danger'>You're going to need to remove that mask/helmet/glasses first!</span>")
|
||||
|
||||
return
|
||||
|
||||
if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/slime))//Aliens don't have eyes./N slimes also don't have eyes!
|
||||
to_chat(user, "<span class='warning'>You cannot locate any eyes on this creature!</span>")
|
||||
|
||||
return
|
||||
|
||||
if(!iscarbon(user))
|
||||
@@ -447,11 +431,9 @@
|
||||
if(M.stat != 2)
|
||||
if(!(eyes.status & ORGAN_ROBOT) || !(eyes.status & ORGAN_ASSISTED)) //robot eyes bleeding might be a bit silly
|
||||
to_chat(M, "<span class='danger'>Your eyes start to bleed profusely!</span>")
|
||||
|
||||
if(prob(50))
|
||||
if(M.stat != 2)
|
||||
to_chat(M, "<span class='danger'>You drop what you're holding and clutch at your eyes!</span>")
|
||||
|
||||
M.drop_item()
|
||||
M.eye_blurry += 10
|
||||
M.Paralyse(1)
|
||||
@@ -459,7 +441,6 @@
|
||||
if (eyes.damage >= eyes.min_broken_damage)
|
||||
if(M.stat != 2)
|
||||
to_chat(M, "<span class='danger'>You go blind!</span>")
|
||||
|
||||
var/obj/item/organ/external/affecting = H.get_organ("head")
|
||||
if(affecting.take_damage(7))
|
||||
H.UpdateDamageIcon()
|
||||
@@ -536,7 +517,6 @@
|
||||
if(flags & ABSTRACT) //Abstract items like grabs won't wash. No-drop items will though because it's still technically an item in your hand.
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start washing [src]...</span>")
|
||||
|
||||
if(!do_after(user, 40, target = source))
|
||||
return
|
||||
clean_blood()
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
if (istype(W,/obj/item/weapon/cigbutt) || istype(W,/obj/item/clothing/mask/cigarette) || istype(W, /obj/item/weapon/match))
|
||||
if (contents.len >= max_butts)
|
||||
to_chat(user, "This ashtray is full.")
|
||||
|
||||
return
|
||||
user.unEquip(W)
|
||||
W.loc = src
|
||||
@@ -36,7 +35,6 @@
|
||||
else if (cig.lit == 0)
|
||||
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()
|
||||
user.update_inv_r_hand()
|
||||
@@ -50,7 +48,6 @@
|
||||
else
|
||||
health = max(0,health - W.force)
|
||||
to_chat(user, "You hit [src] with [W].")
|
||||
|
||||
if (health < 1)
|
||||
die()
|
||||
return
|
||||
|
||||
@@ -133,15 +133,12 @@
|
||||
switch(res)
|
||||
if(ROOM_ERR_SPACE)
|
||||
to_chat(usr, "<span class='warning'>The new area must be completely airtight.</span>")
|
||||
|
||||
return
|
||||
if(ROOM_ERR_TOOLARGE)
|
||||
to_chat(usr, "<span class='warning'>The new area is too large.</span>")
|
||||
|
||||
return
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>Error! Please notify administration.</span>")
|
||||
|
||||
return
|
||||
var/list/turf/turfs = res
|
||||
var/str = trim(stripped_input(usr,"New area name:", "Blueprint Editing", "", MAX_NAME_LEN))
|
||||
@@ -149,14 +146,12 @@
|
||||
return
|
||||
if(length(str) > 50)
|
||||
to_chat(usr, "<span class='warning'>The given name is too long. The area remains undefined.</span>")
|
||||
|
||||
return
|
||||
var/area/A = new
|
||||
A.name = str
|
||||
//var/ma
|
||||
//ma = A.master ? "[A.master]" : "(null)"
|
||||
// to_chat(world, "DEBUG: create_area: <br>A.name=[A.name]<br>A.tag=[A.tag]<br>A.master=[ma]")
|
||||
|
||||
A.power_equip = 0
|
||||
A.power_light = 0
|
||||
A.power_environ = 0
|
||||
@@ -179,12 +174,10 @@
|
||||
return
|
||||
if(length(str) > 50)
|
||||
to_chat(usr, "<span class='warning'>The given name is too long. The area's name is unchanged.</span>")
|
||||
|
||||
return
|
||||
set_area_machinery_title(A,str,prevname)
|
||||
A.name = str
|
||||
to_chat(usr, "<span class='notice'>You rename the '[prevname]' to '[str]'.</span>")
|
||||
|
||||
interact()
|
||||
return 1
|
||||
|
||||
|
||||
@@ -58,7 +58,6 @@
|
||||
return
|
||||
else if(istype(W, /obj/item/weapon/wirecutters))
|
||||
to_chat(user, "You cut the tag off the bodybag")
|
||||
|
||||
src.name = "body bag"
|
||||
src.overlays.Cut()
|
||||
return
|
||||
@@ -92,7 +91,6 @@
|
||||
if(!open())
|
||||
to_chat(user, "<span class='notice'>It won't budge!</span>")
|
||||
|
||||
|
||||
/obj/item/bodybag/cryobag
|
||||
name = "stasis bag"
|
||||
desc = "A folded, non-reusable bag designed for the preservation of an occupant's brain by stasis."
|
||||
@@ -129,7 +127,6 @@
|
||||
if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src))))
|
||||
if(!ishuman(usr)) return
|
||||
to_chat(usr, "\red You can't fold that up anymore..")
|
||||
|
||||
..()
|
||||
|
||||
attackby(W as obj, mob/user as mob, params)
|
||||
@@ -137,8 +134,6 @@
|
||||
if(src.allowed(user))
|
||||
src.locked = !src.locked
|
||||
to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]")
|
||||
|
||||
else
|
||||
to_chat(user, "\red Access denied.")
|
||||
|
||||
return
|
||||
@@ -86,16 +86,13 @@
|
||||
else if(graffiti.Find(drawtype))
|
||||
temp = "graffiti"
|
||||
to_chat(user, "You start drawing a [temp] on the [target.name].")
|
||||
|
||||
if(instant || do_after(user, 50, target = target))
|
||||
new /obj/effect/decal/cleanable/crayon(target,colour,drawtype,temp)
|
||||
to_chat(user, "You finish drawing [temp].")
|
||||
|
||||
if(uses)
|
||||
uses--
|
||||
if(!uses)
|
||||
to_chat(user, "<span class='danger'>You used up your [src.name]!</span>")
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -103,13 +100,11 @@
|
||||
var/huffable = istype(src,/obj/item/toy/crayon/spraycan)
|
||||
if(M == user)
|
||||
to_chat(user, "You take a [huffable ? "huff" : "bite"] of the [src.name]. Delicious!")
|
||||
|
||||
user.nutrition += 5
|
||||
if(uses)
|
||||
uses -= 5
|
||||
if(uses <= 0)
|
||||
to_chat(user, "<span class='danger'>There is no more of [src.name] left!</span>")
|
||||
|
||||
qdel(src)
|
||||
else
|
||||
..()
|
||||
@@ -220,7 +215,6 @@
|
||||
switch(choice)
|
||||
if("Toggle Cap")
|
||||
to_chat(user, "<span class='notice'>You [capped ? "Remove" : "Replace"] the cap of the [src]</span>")
|
||||
|
||||
capped = capped ? 0 : 1
|
||||
icon_state = "spraycan[capped ? "_cap" : ""]"
|
||||
update_icon()
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
src.add_fingerprint(user) // Anyone can add their fingerprints to it with this
|
||||
if(owned)
|
||||
to_chat(user, "<span class='notice'>[src] stares up at you with friendly eyes.</span>")
|
||||
|
||||
owner = user
|
||||
owned = 0
|
||||
return ..()
|
||||
@@ -23,7 +22,6 @@
|
||||
if(!proximity) return
|
||||
if(istype(O,/obj/structure/sink))
|
||||
to_chat(user, "<span class='notice'>You place [src] under a stream of water...</span>")
|
||||
|
||||
user.drop_item()
|
||||
loc = get_turf(O)
|
||||
return Swell()
|
||||
|
||||
@@ -84,7 +84,6 @@
|
||||
flush = 1
|
||||
AI.suiciding = 1
|
||||
to_chat(AI, "Your core files are being wiped!")
|
||||
|
||||
while (AI && AI.stat != DEAD)
|
||||
AI.adjustOxyLoss(2)
|
||||
AI.updatehealth()
|
||||
@@ -94,16 +93,12 @@
|
||||
if (href_list["radio"])
|
||||
AI.aiRadio.disabledAi = text2num(href_list["radio"])
|
||||
to_chat(AI, "<span class='warning'>Your Subspace Transceiver has been [AI.aiRadio.disabledAi ? "disabled" : "enabled"]!</span>")
|
||||
|
||||
to_chat(user, "<span class='notice'>You [AI.aiRadio.disabledAi ? "disable" : "enable"] the AI's Subspace Transceiver.</span>")
|
||||
|
||||
|
||||
if (href_list["wireless"])
|
||||
AI.control_disabled = text2num(href_list["wireless"])
|
||||
to_chat(AI, "<span class='warning'>Your wireless interface has been [AI.control_disabled ? "disabled" : "enabled"]!</span>")
|
||||
|
||||
to_chat(user, "<span class='notice'>You [AI.control_disabled ? "disable" : "enable"] the AI's wireless interface.</span>")
|
||||
|
||||
update_icon()
|
||||
|
||||
return 1
|
||||
|
||||
@@ -80,7 +80,6 @@
|
||||
set name = "Print Data"
|
||||
if(usr.stat || !(istype(usr,/mob/living/carbon/human)))
|
||||
to_chat(usr, "No.")
|
||||
|
||||
return
|
||||
|
||||
var/scan_data = ""
|
||||
@@ -189,17 +188,14 @@
|
||||
src.timeofdeath = null
|
||||
to_chat(user, "\red A new patient has been registered.. Purging data for previous patient.")
|
||||
|
||||
|
||||
src.timeofdeath = M.timeofdeath
|
||||
|
||||
var/obj/item/organ/external/S = M.get_organ(user.zone_sel.selecting)
|
||||
if(!S)
|
||||
to_chat(usr, "<b>You can't scan this body part.</b>")
|
||||
|
||||
return
|
||||
if(!S.open)
|
||||
to_chat(usr, "<b>You have to cut the limb open first!</b>")
|
||||
|
||||
return
|
||||
for(var/mob/O in viewers(M))
|
||||
O.show_message("\red [user.name] scans the wounds on [M.name]'s [S.name] with \the [src.name]", 1)
|
||||
|
||||
@@ -63,7 +63,6 @@
|
||||
var/turf/T = get_turf(user.loc)
|
||||
if(T.z != current.z || !current.can_use())
|
||||
to_chat(user, "<span class='danger'>[src] has lost the signal.</span>")
|
||||
|
||||
current = null
|
||||
user.reset_view(null)
|
||||
user.unset_machine()
|
||||
@@ -224,12 +223,10 @@
|
||||
if(istype(C))
|
||||
if(!C.can_use())
|
||||
to_chat(usr, "<span class='danger'>Something's wrong with that camera. You can't get a feed.</span>")
|
||||
|
||||
return
|
||||
var/turf/T = get_turf(loc)
|
||||
if(!T || C.z != T.z)
|
||||
to_chat(usr, "<span class='danger'>You can't get a signal.</span>")
|
||||
|
||||
return
|
||||
current = C
|
||||
spawn(6)
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
if(istype(target,/obj/item) && !istype(target, /obj/item/weapon/disk/nuclear))
|
||||
playsound(get_turf(src), 'sound/weapons/flash.ogg', 100, 1, -6)
|
||||
to_chat(user, "<span class='notice'>Scanned [target].</span>")
|
||||
|
||||
saved_item = target.type
|
||||
saved_icon = target.icon
|
||||
saved_icon_state = target.icon_state
|
||||
@@ -47,7 +46,6 @@
|
||||
qdel(active_dummy)
|
||||
active_dummy = null
|
||||
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)
|
||||
@@ -61,7 +59,6 @@
|
||||
C.activate(O, usr, saved_icon, saved_icon_state, saved_overlays, saved_underlays, src)
|
||||
qdel(O)
|
||||
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)
|
||||
@@ -111,19 +108,16 @@
|
||||
/obj/effect/dummy/chameleon/attackby()
|
||||
for(var/mob/M in src)
|
||||
to_chat(M, "<span class='danger'>Your chameleon-projector deactivates.</span>")
|
||||
|
||||
master.disrupt()
|
||||
|
||||
/obj/effect/dummy/chameleon/attack_hand()
|
||||
for(var/mob/M in src)
|
||||
to_chat(M, "<span class='danger'>Your chameleon-projector deactivates.</span>")
|
||||
|
||||
master.disrupt()
|
||||
|
||||
/obj/effect/dummy/chameleon/ex_act(var/severity) //no longer bomb-proof
|
||||
for(var/mob/M in src)
|
||||
to_chat(M, "<span class='danger'>Your chameleon-projector deactivates.</span>")
|
||||
|
||||
spawn()
|
||||
M.ex_act(severity)
|
||||
master.disrupt()
|
||||
@@ -131,7 +125,6 @@
|
||||
/obj/effect/dummy/chameleon/bullet_act()
|
||||
for(var/mob/M in src)
|
||||
to_chat(M, "<span class='danger'>Your chameleon-projector deactivates.</span>")
|
||||
|
||||
..()
|
||||
master.disrupt()
|
||||
|
||||
|
||||
@@ -25,26 +25,20 @@
|
||||
var/obj/machinery/power/apc/A = O
|
||||
if(A.emagged || A.malfhack)
|
||||
to_chat(user, "\red There is a software error with the device.")
|
||||
|
||||
else
|
||||
to_chat(user, "\blue The device's software appears to be fine.")
|
||||
|
||||
return 1
|
||||
if(istype(O, /obj/machinery/door))
|
||||
var/obj/machinery/door/D = O
|
||||
if(D.operating == -1)
|
||||
to_chat(user, "\red There is a software error with the device.")
|
||||
|
||||
else
|
||||
to_chat(user, "\blue The device's software appears to be fine.")
|
||||
|
||||
return 1
|
||||
else if(istype(O, /obj/machinery))
|
||||
var/obj/machinery/A = O
|
||||
if(A.emagged)
|
||||
to_chat(user, "\red There is a software error with the device.")
|
||||
|
||||
else
|
||||
to_chat(user, "\blue The device's software appears to be fine.")
|
||||
|
||||
return 1
|
||||
@@ -28,16 +28,13 @@
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(battery_panel)
|
||||
to_chat(user, "<span class='notice'>You close the battery compartment on the [src].</span>")
|
||||
|
||||
battery_panel = 0
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You open the battery compartment on the [src].</span>")
|
||||
|
||||
battery_panel = 1
|
||||
if(battery_panel && !overcharged)
|
||||
if(istype(W, /obj/item/weapon/stock_parts/cell))
|
||||
to_chat(user, "<span class='notice'>You jam the cell into battery compartment on the [src].</span>")
|
||||
|
||||
qdel(W)
|
||||
overcharged = 1
|
||||
overlays += "overcharge"
|
||||
@@ -89,18 +86,14 @@
|
||||
M.Stun(1)
|
||||
visible_message("<span class='disarm'>[user] blinds [M] with the flash!</span>")
|
||||
to_chat(user, "<span class='danger'>You blind [M] with the flash!</span>")
|
||||
|
||||
to_chat(M, "<span class='userdanger'>[user] blinds you with the flash!</span>")
|
||||
|
||||
if(M.weakeyes)
|
||||
M.Stun(2)
|
||||
M.visible_message("<span class='disarm'>[M] gasps and shields their eyes!</span>", "<span class='userdanger'>You gasp and shields your eyes!</span>")
|
||||
else
|
||||
visible_message("<span class='disarm'>[user] fails to blind [M] with the flash!</span>")
|
||||
to_chat(user, "<span class='warning'>You fail to blind [M] with the flash!</span>")
|
||||
|
||||
to_chat(M, "<span class='danger'>[user] fails to blind you with the flash!</span>")
|
||||
|
||||
else
|
||||
if(M.flash_eyes())
|
||||
M.confused += power
|
||||
@@ -168,15 +161,12 @@
|
||||
|
||||
if(resisted)
|
||||
to_chat(user, "<span class='warning'>This mind seems resistant to the [src.name]!</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='warning'>They must be conscious before you can convert them!</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='warning'>This mind is so vacant that it is not susceptible to influence!</span>")
|
||||
|
||||
|
||||
|
||||
/obj/item/device/flash/cyborg
|
||||
origin_tech = null
|
||||
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
if(!isturf(user.loc))
|
||||
to_chat(user, "You cannot turn the light on while in this [user.loc].")//To prevent some lighting anomalities.
|
||||
|
||||
|
||||
return 0
|
||||
on = !on
|
||||
update_brightness(user)
|
||||
@@ -49,13 +48,11 @@
|
||||
|
||||
if(!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") //don't have dexterity
|
||||
to_chat(user, "<span class='notice'>You don't have the dexterity to do this!</span>")
|
||||
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = M //mob has protective eyewear
|
||||
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)))
|
||||
to_chat(user, "<span class='notice'>You're going to need to remove that [(H.head && H.head.flags & HEADCOVERSEYES) ? "helmet" : (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) ? "mask": "glasses"] first.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(M == user) //they're using it on themselves
|
||||
@@ -73,14 +70,11 @@
|
||||
if(istype(M, /mob/living/carbon/human)) //robots and aliens are unaffected
|
||||
if(M.stat == DEAD || M.sdisabilities & BLIND) //mob is dead or fully blind
|
||||
to_chat(user, "<span class='notice'>[M] pupils does not react to the light!</span>")
|
||||
|
||||
else if(XRAY in M.mutations) //mob has X-RAY vision
|
||||
to_chat(user, "<span class='notice'>[M] pupils give an eerie glow!</span>")
|
||||
|
||||
else //they're okay!
|
||||
if(M.flash_eyes(visual = 1))
|
||||
to_chat(user, "<span class='notice'>[M]'s pupils narrow.</span>")
|
||||
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -200,7 +194,6 @@ obj/item/device/flashlight/lamp/bananalamp
|
||||
// Usual checks
|
||||
if(!fuel)
|
||||
to_chat(user, "<span class='notice'>It's out of fuel.</span>")
|
||||
|
||||
return
|
||||
if(on)
|
||||
return
|
||||
@@ -282,9 +275,7 @@ obj/item/device/flashlight/lamp/bananalamp
|
||||
var/mob/M = A
|
||||
add_logs(M, user, "attacked", object="EMP-light")
|
||||
to_chat(user, "\The [src] now has [emp_cur_charges] charge\s.")
|
||||
|
||||
A.emp_act(1)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>\The [src] needs time to recharge!</span>")
|
||||
|
||||
return
|
||||
@@ -51,15 +51,12 @@
|
||||
W.loc = src
|
||||
diode = W
|
||||
to_chat(user, "<span class='notice'>You install a [diode.name] in [src].</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] already has a cell.</span>")
|
||||
|
||||
|
||||
else if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(diode)
|
||||
to_chat(user, "<span class='notice'>You remove the [diode.name] from the [src].</span>")
|
||||
|
||||
diode.loc = get_turf(src.loc)
|
||||
diode = null
|
||||
return
|
||||
@@ -76,11 +73,9 @@
|
||||
return
|
||||
if (!diode)
|
||||
to_chat(user, "<span class='notice'>You point [src] at [target], but nothing happens!</span>")
|
||||
|
||||
return
|
||||
if (!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
|
||||
return
|
||||
|
||||
add_fingerprint(user)
|
||||
@@ -88,7 +83,6 @@
|
||||
//nothing happens if the battery is drained
|
||||
if(recharge_locked)
|
||||
to_chat(user, "<span class='notice'>You point [src] at [target], but it's still charging.</span>")
|
||||
|
||||
return
|
||||
|
||||
var/outmsg
|
||||
@@ -122,7 +116,6 @@
|
||||
S.flash_eyes(affect_silicon = 1)
|
||||
S.Weaken(rand(5,10))
|
||||
to_chat(S, "<span class='warning'>Your sensors were overloaded by a laser!</span>")
|
||||
|
||||
outmsg = "<span class='notice'>You overload [S] by shining [src] at their sensors.</span>"
|
||||
|
||||
S.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had a laser pointer shone in their eyes by [user.name] ([user.ckey])</font>")
|
||||
@@ -162,11 +155,9 @@
|
||||
|
||||
if(outmsg)
|
||||
to_chat(user, outmsg)
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='info'>You point [src] at [target].</span>")
|
||||
|
||||
|
||||
energy -= 1
|
||||
if(energy <= max_energy)
|
||||
if(!recharging)
|
||||
@@ -174,7 +165,6 @@
|
||||
processing_objects.Add(src)
|
||||
if(energy <= 0)
|
||||
to_chat(user, "<span class='warning'>You've overused the battery of [src], now it needs time to recharge!</span>")
|
||||
|
||||
recharge_locked = 1
|
||||
|
||||
flick_overlay(I, showto, 10)
|
||||
|
||||
@@ -70,7 +70,6 @@
|
||||
if(..(user, 2))
|
||||
to_chat(user, "It has [uses] lights remaining.")
|
||||
|
||||
|
||||
/obj/item/device/lightreplacer/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/stack/sheet/glass))
|
||||
var/obj/item/stack/sheet/glass/G = W
|
||||
@@ -78,7 +77,6 @@
|
||||
var/remaining = max(G.amount - decrement, 0)
|
||||
if(!remaining && !(G.amount - decrement) == 0)
|
||||
to_chat(user, "There isn't enough glass.")
|
||||
|
||||
return
|
||||
G.amount = remaining
|
||||
if(!G.amount)
|
||||
@@ -86,7 +84,6 @@
|
||||
qdel(G)
|
||||
AddUses(increment)
|
||||
to_chat(user, "You insert a piece of glass into the [src.name]. You have [uses] lights remaining.")
|
||||
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/weapon/light))
|
||||
@@ -95,13 +92,11 @@
|
||||
if(uses < max_uses)
|
||||
AddUses(1)
|
||||
to_chat(user, "You insert the [L.name] into the [src.name]. You have [uses] lights remaining.")
|
||||
|
||||
user.drop_item()
|
||||
qdel(L)
|
||||
return
|
||||
else
|
||||
to_chat(user, "You need a working light.")
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/lightreplacer/emag_act(user as mob)
|
||||
@@ -115,12 +110,10 @@
|
||||
if(R.emagged)
|
||||
src.Emag()
|
||||
to_chat(usr, "You shortcircuit the [src].")
|
||||
|
||||
return
|
||||
*/
|
||||
to_chat(usr, "It has [uses] lights remaining.")
|
||||
|
||||
|
||||
/obj/item/device/lightreplacer/update_icon()
|
||||
icon_state = "lightreplacer[emagged]"
|
||||
|
||||
@@ -148,7 +141,6 @@
|
||||
if(!Use(U)) return
|
||||
to_chat(U, "<span class='notice'>You replace the [target.fitting] with the [src].</span>")
|
||||
|
||||
|
||||
if(target.status != LIGHT_EMPTY)
|
||||
|
||||
var/obj/item/weapon/light/L1 = new target.light_type(target.loc)
|
||||
@@ -182,11 +174,9 @@
|
||||
|
||||
else
|
||||
to_chat(U, failmsg)
|
||||
|
||||
return
|
||||
else
|
||||
to_chat(U, "There is a working [target.fitting] already inserted.")
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/lightreplacer/proc/Emag()
|
||||
|
||||
@@ -15,26 +15,21 @@
|
||||
if (user.client)
|
||||
if(user.client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "\red You cannot speak in IC (muted).")
|
||||
|
||||
return
|
||||
if(!ishuman(user))
|
||||
to_chat(user, "\red You don't know how to use this!")
|
||||
|
||||
return
|
||||
if(user.silent)
|
||||
to_chat(user, "<span class='warning'>You find yourself unable to speak at all.</span>")
|
||||
|
||||
return
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H && H.mind)
|
||||
if(H.mind.miming)
|
||||
to_chat(user, "<span class='warning'>Your vow of silence prevents you from speaking.</span>")
|
||||
|
||||
return
|
||||
if(spamcheck)
|
||||
to_chat(user, "\red \The [src] needs to recharge!")
|
||||
|
||||
return
|
||||
|
||||
var/message = input(user, "Shout a message:", "Megaphone") as text|null
|
||||
@@ -51,7 +46,6 @@
|
||||
insults--
|
||||
else
|
||||
to_chat(user, "\red *BZZZZzzzzzt*")
|
||||
|
||||
else
|
||||
saymsg(user, message)
|
||||
|
||||
@@ -68,6 +62,5 @@
|
||||
/obj/item/device/megaphone/emag_act(user as mob)
|
||||
if(!emagged)
|
||||
to_chat(user, "\red You overload \the [src]'s voice synthesizer.")
|
||||
|
||||
emagged = 1
|
||||
insults = rand(1, 3)//to prevent dickflooding
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
|
||||
if(!parts)
|
||||
to_chat(user, "<span class='warning'>This kit has no parts for this modification left.</span>")
|
||||
|
||||
user.unEquip(src)
|
||||
qdel(src)
|
||||
return
|
||||
@@ -36,19 +35,16 @@
|
||||
var/obj/item/clothing/I = O
|
||||
if (!istype(I) || !allowed)
|
||||
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)
|
||||
to_chat(user, "<span class='notice'>[I] is already modified.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(!isturf(O.loc))
|
||||
to_chat(user, "<span class='warning'>[O] must be safely placed on the ground for modification.</span>")
|
||||
|
||||
return
|
||||
|
||||
playsound(user.loc, 'sound/items/Screwdriver.ogg', 100, 1)
|
||||
@@ -70,7 +66,6 @@
|
||||
..(user)
|
||||
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"
|
||||
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Tajaran."
|
||||
|
||||
@@ -244,19 +244,16 @@
|
||||
var/mob/M = usr
|
||||
if(!istype(M, /mob/living/carbon))
|
||||
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
|
||||
to_chat(pai, "<font color = red><h3>You have been bound to a new master.</h3></font>")
|
||||
|
||||
if(href_list["request"])
|
||||
var/delta = (world.time / 10) - last_request
|
||||
if(request_cooldown > delta)
|
||||
var/cooldown_time = round(request_cooldown - ((world.time / 10) - last_request), 1)
|
||||
to_chat(usr, "\red The request system is currently offline. Please wait another [cooldown_time] seconds.")
|
||||
|
||||
return
|
||||
last_request = world.time / 10
|
||||
src.looking_for_personality = 1
|
||||
@@ -266,13 +263,9 @@
|
||||
if(confirm == "Yes")
|
||||
for(var/mob/M in src)
|
||||
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>")
|
||||
|
||||
var/mob/living/silicon/pai/P = M
|
||||
if(istype(P))
|
||||
if(P.resting || P.canmove)
|
||||
@@ -291,11 +284,8 @@
|
||||
if(newlaws)
|
||||
pai.pai_laws = newlaws
|
||||
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
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
var/turf/T = P.loc
|
||||
if (P.level < 2 && T.level==1 && isturf(T) && T.intact)
|
||||
to_chat(user, "<span class='warning'>You must remove the plating first.</span>")
|
||||
|
||||
return
|
||||
|
||||
P.change_color(pipe_colors[mode])
|
||||
@@ -32,4 +31,3 @@
|
||||
/obj/item/device/pipe_painter/examine(mob/user)
|
||||
..(user)
|
||||
to_chat(user, "It is in [mode] mode.")
|
||||
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
/obj/item/device/pizza_bomb/attack_self(mob/user)
|
||||
if(disarmed)
|
||||
to_chat(user, "<span class='notice'>\The [src] is disarmed.</span>")
|
||||
|
||||
return
|
||||
if(!timer_set)
|
||||
name = "pizza bomb"
|
||||
@@ -31,7 +30,6 @@
|
||||
timer = Clamp(timer, 10, 100)
|
||||
icon_state = "pizzabox1"
|
||||
to_chat(user, "<span class='notice'>You set the timer to [timer / 10] before activating the payload and closing \the [src].")
|
||||
|
||||
message_admins("[key_name_admin(usr)] has set a timer on a pizza bomb to [timer/10] seconds at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[loc.x];Y=[loc.y];Z=[loc.z]'>(JMP)</a>.")
|
||||
log_game("[key_name(usr)] has set the timer on a pizza bomb to [timer/10] seconds ([loc.x],[loc.y],[loc.z]).")
|
||||
armer = usr
|
||||
@@ -44,7 +42,6 @@
|
||||
icon_state = "pizzabox_bomb"
|
||||
audible_message("<span class='warning'>\icon[src] *beep* *beep*</span>")
|
||||
to_chat(user, "<span class='danger'>That's no pizza! That's a bomb!</span>")
|
||||
|
||||
message_admins("[key_name_admin(usr)] has triggered a pizza bomb armed by [armer] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[loc.x];Y=[loc.y];Z=[loc.z]'>(JMP)</a>.")
|
||||
log_game("[key_name(usr)] has triggered a pizza bomb armed by [armer] ([loc.x],[loc.y],[loc.z]).")
|
||||
primed = 1
|
||||
@@ -63,7 +60,6 @@
|
||||
/obj/item/device/pizza_bomb/attackby(var/obj/item/I, var/mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/wirecutters) && primed)
|
||||
to_chat(user, "<span class='danger'>Oh God, what wire do you cut?!</span>")
|
||||
|
||||
var/chosen_wire = input(user, "OH GOD OH GOD", "WHAT WIRE?!") in wires
|
||||
if(!in_range(src, usr) || issilicon(usr) || !usr.canmove || usr.restrained())
|
||||
return
|
||||
@@ -73,7 +69,6 @@
|
||||
if(chosen_wire == correct_wire)
|
||||
src.audible_message("<span class='warning'>\icon[src] \The [src] suddenly stops beeping and seems lifeless.</span>")
|
||||
to_chat(user, "<span class='notice'>You did it!</span>")
|
||||
|
||||
icon_state = "pizzabox_bomb_[correct_wire]"
|
||||
name = "pizza bomb"
|
||||
desc = "A devious contraption, made of a small explosive payload hooked up to pressure-sensitive wires. It's disarmed."
|
||||
@@ -82,13 +77,11 @@
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='userdanger'>WRONG WIRE!</span>")
|
||||
|
||||
go_boom()
|
||||
return
|
||||
if(istype(I, /obj/item/weapon/wirecutters) && disarmed)
|
||||
if(!in_range(user, src))
|
||||
to_chat(user, "<span class='warning'>You can't see the box well enough to cut the wires out.</span>")
|
||||
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] starts removing the payload and wires from \the [src].</span>")
|
||||
if(do_after(user, 40, target = src))
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
attached = locate() in T
|
||||
if(!attached)
|
||||
to_chat(user, "No exposed cable here to attach to.")
|
||||
|
||||
return
|
||||
else
|
||||
anchored = 1
|
||||
@@ -48,7 +47,6 @@
|
||||
return
|
||||
else
|
||||
to_chat(user, "Device must be placed over an exposed cable to attach to it.")
|
||||
|
||||
return
|
||||
else
|
||||
if (mode == 2)
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
syndicate = 1
|
||||
to_chat(user, "\blue The This beacon now only be locked on to by emagged teleporters!")
|
||||
|
||||
|
||||
/obj/item/device/radio/beacon/hear_talk()
|
||||
return
|
||||
|
||||
@@ -60,7 +59,6 @@
|
||||
/obj/item/device/radio/beacon/syndicate/attack_self(mob/user as mob)
|
||||
if(user)
|
||||
to_chat(user, "\blue Locked In")
|
||||
|
||||
new /obj/machinery/power/singularity_beacon/syndicate( user.loc )
|
||||
playsound(src, 'sound/effects/pop.ogg', 100, 1, 1)
|
||||
qdel(src)
|
||||
@@ -74,7 +72,6 @@
|
||||
/obj/item/device/radio/beacon/syndicate/bomb/attack_self(mob/user as mob)
|
||||
if(user)
|
||||
to_chat(user, "\blue Locked In")
|
||||
|
||||
new /obj/machinery/syndicatebomb( user.loc )
|
||||
playsound(src, 'sound/effects/pop.ogg', 100, 1, 1)
|
||||
qdel(src)
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
/obj/item/device/radio/electropack/attack_hand(mob/user as mob)
|
||||
if(src == user.back)
|
||||
to_chat(user, "<span class='notice'>You need help taking this off!</span>")
|
||||
|
||||
return 0
|
||||
. = ..()
|
||||
|
||||
@@ -34,14 +33,12 @@
|
||||
if(istype(W, /obj/item/clothing/head/helmet))
|
||||
if(!b_stat)
|
||||
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'
|
||||
|
||||
if(!user.unEquip(W))
|
||||
to_chat(user, "<span class='notice'>\the [W] is stuck to your hand, you cannot attach it to \the [src]!</span>")
|
||||
|
||||
return
|
||||
W.loc = A
|
||||
W.master = A
|
||||
@@ -90,7 +87,6 @@
|
||||
if(M)
|
||||
M.moved_recently = 0
|
||||
to_chat(M, "<span class='danger'>You feel a sharp shock!</span>")
|
||||
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(3, 1, M)
|
||||
s.start()
|
||||
|
||||
@@ -43,10 +43,8 @@
|
||||
return
|
||||
|
||||
to_chat(user, "The following channels are available:")
|
||||
|
||||
to_chat(user, radio_desc)
|
||||
|
||||
|
||||
/obj/item/device/radio/headset/handle_message_mode(mob/living/M as mob, message, channel)
|
||||
if (channel == "special")
|
||||
if (translate_binary)
|
||||
@@ -324,15 +322,12 @@
|
||||
|
||||
recalculateChannels()
|
||||
to_chat(user, "You pop out the encryption keys in the headset!")
|
||||
|
||||
else
|
||||
to_chat(user, "This headset doesn't have any encryption keys! How useless...")
|
||||
|
||||
|
||||
if(istype(W, /obj/item/device/encryptionkey/))
|
||||
if(keyslot1 && keyslot2)
|
||||
to_chat(user, "The headset can't hold another key!")
|
||||
|
||||
return
|
||||
|
||||
if(!keyslot1)
|
||||
|
||||
@@ -137,7 +137,6 @@
|
||||
if(3)
|
||||
if(iswirecutter(W) && b_stat && wires.IsAllCut())
|
||||
to_chat(user, "<span class='notice'>You cut out the intercoms wiring and disconnect its electronics.</span>")
|
||||
|
||||
playsound(get_turf(src), 'sound/items/Wirecutter.ogg', 50, 1)
|
||||
if(do_after(user, 10, target = src))
|
||||
new /obj/item/stack/cable_coil(get_turf(src),5)
|
||||
@@ -157,7 +156,6 @@
|
||||
b_stat = 0
|
||||
buildstage = 3
|
||||
to_chat(user, "<span class='notice'>You secure the electronics!</span>")
|
||||
|
||||
update_icon()
|
||||
processing_objects.Add(src)
|
||||
for(var/i, i<= 5, i++)
|
||||
@@ -168,22 +166,18 @@
|
||||
var/obj/item/stack/cable_coil/coil = W
|
||||
if(coil.amount < 5)
|
||||
to_chat(user, "<span class='warning'>You need more cable for this!</span>")
|
||||
|
||||
return
|
||||
if(do_after(user, 10, target = src))
|
||||
coil.use(5)
|
||||
to_chat(user, "<span class='notice'>You wire \the [src]!</span>")
|
||||
|
||||
buildstage = 2
|
||||
return 1
|
||||
if(iscrowbar(W))
|
||||
to_chat(user, "<span class='notice'>You begin removing the electronics...</span>")
|
||||
|
||||
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
if(do_after(user, 10, target = src))
|
||||
new /obj/item/weapon/intercom_electronics(get_turf(src))
|
||||
to_chat(user, "<span class='notice'>The circuitboard pops out!</span>")
|
||||
|
||||
buildstage = 0
|
||||
return 1
|
||||
if(0)
|
||||
@@ -192,7 +186,6 @@
|
||||
if(do_after(user, 10, target = src))
|
||||
qdel(W)
|
||||
to_chat(user, "<span class='notice'>You insert \the [W] into \the [src]!</span>")
|
||||
|
||||
buildstage = 1
|
||||
return 1
|
||||
if(iswelder(W))
|
||||
@@ -200,11 +193,9 @@
|
||||
playsound(get_turf(src), 'sound/items/Welder.ogg', 50, 1)
|
||||
if(!WT.remove_fuel(3, user))
|
||||
to_chat(user, "<span class='warning'>You're out of welding fuel.</span>")
|
||||
|
||||
return 1
|
||||
if(do_after(user, 10, target = src))
|
||||
to_chat(user, "<span class='notice'>You cut the intercom frame from the wall!</span>")
|
||||
|
||||
new /obj/item/mounted/frame/intercom(get_turf(src))
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
@@ -239,7 +239,6 @@ var/global/list/default_medbay_channels = list(
|
||||
if(channel && channels && channels.len > 0)
|
||||
if (channel == "department")
|
||||
// to_chat(world, "DEBUG: channel=\"[channel]\" switching to \"[channels[1]]\"")
|
||||
|
||||
channel = channels[1]
|
||||
connection = secure_radio_connections[channel]
|
||||
else
|
||||
@@ -640,15 +639,12 @@ var/global/list/default_medbay_channels = list(
|
||||
recalculateChannels()
|
||||
to_chat(user, "You pop out the encryption key in the radio!")
|
||||
|
||||
|
||||
else
|
||||
to_chat(user, "This radio doesn't have any encryption keys!")
|
||||
|
||||
|
||||
if(istype(W, /obj/item/device/encryptionkey/))
|
||||
if(keyslot)
|
||||
to_chat(user, "The radio can't hold another key!")
|
||||
|
||||
return
|
||||
|
||||
if(!keyslot)
|
||||
@@ -702,11 +698,9 @@ var/global/list/default_medbay_channels = list(
|
||||
subspace_transmission = !subspace_transmission
|
||||
if(subspace_transmission)
|
||||
to_chat(usr, "<span class='notice'>Subspace Transmission is enabled.</span>")
|
||||
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>Subspace Transmission is disabled.</span>")
|
||||
|
||||
|
||||
if(subspace_transmission == 0)//Simple as fuck, clears the channel list to prevent talking/listening over them if subspace transmission is disabled
|
||||
channels = list()
|
||||
else
|
||||
@@ -719,11 +713,9 @@ var/global/list/default_medbay_channels = list(
|
||||
if(shut_up)
|
||||
canhear_range = 0
|
||||
to_chat(usr, "<span class='notice'>Loudspeaker disabled.</span>")
|
||||
|
||||
else
|
||||
canhear_range = 3
|
||||
to_chat(usr, "<span class='notice'>Loudspeaker enabled.</span>")
|
||||
|
||||
. = 1
|
||||
|
||||
|
||||
|
||||
@@ -129,7 +129,6 @@ REAGENT SCANNER
|
||||
/obj/item/device/healthanalyzer/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
if (( (CLUMSY in user.mutations) || user.getBrainLoss() >= 60) && prob(50))
|
||||
to_chat(user, text("\red You try to analyze the floor's vitals!"))
|
||||
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red [user] has analyzed the floor's vitals!"), 1)
|
||||
user.show_message(text("\blue Analyzing Results for The floor:\n\t Overall Status: Healthy"), 1)
|
||||
@@ -191,7 +190,6 @@ REAGENT SCANNER
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
if(!(D.visibility_flags & HIDDEN_SCANNER))
|
||||
to_chat(user, "<span class='alert'><b>Warning: [D.form] detected</b>\nName: [D.name].\nType: [D.spread_text].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure_text]</span>")
|
||||
|
||||
if(M.getStaminaLoss())
|
||||
user.show_message("<span class='info'>Subject appears to be suffering from fatigue.</span>")
|
||||
if (M.getCloneLoss())
|
||||
@@ -260,19 +258,15 @@ REAGENT SCANNER
|
||||
switch (mode)
|
||||
if(1)
|
||||
to_chat(usr, "The scanner now shows specific limb damage.")
|
||||
|
||||
if(0)
|
||||
to_chat(usr, "The scanner no longer shows limb damage.")
|
||||
|
||||
|
||||
/obj/item/device/healthanalyzer/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/device/healthupgrade))
|
||||
if(upgraded)
|
||||
to_chat(user, "<span class='notice'>You have already installed an upgraded in the [src].</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You install the upgrade in the [src].</span>")
|
||||
|
||||
overlays += "advanced"
|
||||
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
upgraded = 1
|
||||
@@ -391,11 +385,9 @@ REAGENT SCANNER
|
||||
return
|
||||
if (crit_fail)
|
||||
to_chat(user, "<span class='warning'>This device has critically failed and is no longer functional!</span>")
|
||||
|
||||
return
|
||||
if (!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
|
||||
return
|
||||
if(reagents.total_volume)
|
||||
var/list/blood_traces = list()
|
||||
@@ -403,7 +395,6 @@ REAGENT SCANNER
|
||||
if(R.id != "blood")
|
||||
reagents.clear_reagents()
|
||||
to_chat(user, "<span class='warning'>The sample was contaminated! Please insert another sample.</span>")
|
||||
|
||||
return
|
||||
else
|
||||
blood_traces = params2list(R.data["trace_chem"])
|
||||
@@ -424,7 +415,6 @@ REAGENT SCANNER
|
||||
else
|
||||
recent_fail = 1
|
||||
to_chat(user, "[dat]")
|
||||
|
||||
reagents.clear_reagents()
|
||||
return
|
||||
|
||||
@@ -455,13 +445,11 @@ REAGENT SCANNER
|
||||
return
|
||||
if (!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
|
||||
return
|
||||
if(!istype(O))
|
||||
return
|
||||
if (crit_fail)
|
||||
to_chat(user, "<span class='warning'>This device has critically failed and is no longer functional!</span>")
|
||||
|
||||
return
|
||||
|
||||
if(!isnull(O.reagents))
|
||||
@@ -480,14 +468,11 @@ REAGENT SCANNER
|
||||
recent_fail = 1
|
||||
if(dat)
|
||||
to_chat(user, "<span class='notice'>Chemicals found: [dat]</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>No active chemical agents found in [O].</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>No significant chemical agents found in [O].</span>")
|
||||
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/reagent_scanner/adv
|
||||
|
||||
@@ -25,20 +25,17 @@
|
||||
to_chat(user, "The wire panel is [open_panel ? "opened" : "closed"].")
|
||||
|
||||
|
||||
|
||||
/obj/item/device/taperecorder/attackby(obj/item/I, mob/user)
|
||||
if(!mytape && istype(I, /obj/item/device/tape))
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
mytape = I
|
||||
to_chat(user, "<span class='notice'>You insert [I] into [src].</span>")
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/item/device/taperecorder/proc/eject(mob/user)
|
||||
if(mytape)
|
||||
to_chat(user, "<span class='notice'>You remove [mytape] from [src].</span>")
|
||||
|
||||
stop()
|
||||
user.put_in_hands(mytape)
|
||||
mytape = null
|
||||
@@ -117,7 +114,6 @@
|
||||
|
||||
if(mytape.used_capacity < mytape.max_capacity)
|
||||
to_chat(usr, "<span class='notice'>Recording started.</span>")
|
||||
|
||||
recording = 1
|
||||
update_icon()
|
||||
mytape.timestamp += mytape.used_capacity
|
||||
@@ -136,7 +132,6 @@
|
||||
to_chat(usr, "<span class='notice'>The tape is full.</span>")
|
||||
|
||||
|
||||
|
||||
/obj/item/device/taperecorder/verb/stop()
|
||||
set name = "Stop"
|
||||
set category = "Object"
|
||||
@@ -149,7 +144,6 @@
|
||||
mytape.timestamp += mytape.used_capacity
|
||||
mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] Recording stopped."
|
||||
to_chat(usr, "<span class='notice'>Recording stopped.</span>")
|
||||
|
||||
return
|
||||
else if(playing)
|
||||
playing = 0
|
||||
@@ -174,7 +168,6 @@
|
||||
playing = 1
|
||||
update_icon()
|
||||
to_chat(usr, "<span class='notice'>Playing started.</span>")
|
||||
|
||||
var/used = mytape.used_capacity //to stop runtimes when you eject the tape
|
||||
var/max = mytape.max_capacity
|
||||
for(var/i = 1, used < max, sleep(10 * playsleepseconds))
|
||||
@@ -223,13 +216,11 @@
|
||||
return
|
||||
if(!canprint)
|
||||
to_chat(usr, "<span class='notice'>The recorder can't print that fast!</span>")
|
||||
|
||||
return
|
||||
if(recording || playing)
|
||||
return
|
||||
|
||||
to_chat(usr, "<span class='notice'>Transcript printed.</span>")
|
||||
|
||||
playsound(loc, "sound/goonstation/machines/printer_thermal.ogg", 50, 1)
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(src))
|
||||
var/t1 = "<B>Transcript:</B><BR><BR>"
|
||||
@@ -267,7 +258,6 @@
|
||||
/obj/item/device/tape/attack_self(mob/user)
|
||||
if(!ruined)
|
||||
to_chat(user, "<span class='notice'>You pull out all the tape!</span>")
|
||||
|
||||
ruin()
|
||||
|
||||
|
||||
@@ -284,10 +274,8 @@
|
||||
/obj/item/device/tape/attackby(obj/item/I, mob/user)
|
||||
if(ruined && istype(I, /obj/item/weapon/screwdriver))
|
||||
to_chat(user, "<span class='notice'>You start winding the tape back in.</span>")
|
||||
|
||||
if(do_after(user, 120, target = src))
|
||||
to_chat(user, "<span class='notice'>You wound the tape back in!</span>")
|
||||
|
||||
fix()
|
||||
|
||||
|
||||
|
||||
@@ -34,7 +34,6 @@ effective or pretty fucking useless.
|
||||
if(!user) return
|
||||
if(times_used >= max_uses)
|
||||
to_chat(user, "\red The mind batterer has been burnt out!")
|
||||
|
||||
return
|
||||
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used [src] to knock down people in the area.</font>")
|
||||
@@ -47,7 +46,6 @@ effective or pretty fucking useless.
|
||||
if(prob(25))
|
||||
M.Stun(rand(5,10))
|
||||
to_chat(M, "\red <b>You feel a tremendous, paralyzing wave flood your mind.</b>")
|
||||
|
||||
if(!iscarbon(user))
|
||||
M.LAssailant = null
|
||||
else
|
||||
@@ -55,10 +53,8 @@ effective or pretty fucking useless.
|
||||
else
|
||||
to_chat(M, "\red <b>You feel a sudden, electric jolt travel through your head.</b>")
|
||||
|
||||
|
||||
playsound(src.loc, 'sound/misc/interference.ogg', 50, 1)
|
||||
to_chat(user, "\blue You trigger [src].")
|
||||
|
||||
times_used += 1
|
||||
if(times_used >= max_uses)
|
||||
icon_state = "battererburnt"
|
||||
@@ -109,7 +105,6 @@ effective or pretty fucking useless.
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The radioactive microlaser is still recharging.</span>")
|
||||
|
||||
|
||||
/obj/item/device/rad_laser/proc/handle_cooldown(cooldown)
|
||||
spawn(cooldown)
|
||||
used = 0
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
if(istype(item, /obj/item/weapon/tank))
|
||||
if(tank_one && tank_two)
|
||||
to_chat(user, "<span class='warning'>There are already two tanks attached, remove one first.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(!tank_one)
|
||||
@@ -27,14 +26,12 @@
|
||||
user.drop_item()
|
||||
item.loc = src
|
||||
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
|
||||
to_chat(user, "<span class='notice'>You attach the tank to the transfer valve.</span>")
|
||||
|
||||
|
||||
update_icon()
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
//TODO: Have this take an assemblyholder
|
||||
@@ -42,17 +39,14 @@
|
||||
var/obj/item/device/assembly/A = item
|
||||
if(A.secured)
|
||||
to_chat(user, "<span class='notice'>The device is secured.</span>")
|
||||
|
||||
return
|
||||
if(attached_device)
|
||||
to_chat(user, "<span class='warning'>There is already a device attached to the valve, remove it first.</span>")
|
||||
|
||||
return
|
||||
user.remove_from_mob(item)
|
||||
attached_device = A
|
||||
A.loc = src
|
||||
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).
|
||||
|
||||
|
||||
@@ -292,11 +292,9 @@ var/list/world_uplinks = list()
|
||||
hidden_uplink.uses += S.TC_cost
|
||||
qdel(S)
|
||||
to_chat(user, "<span class='notice'>Teleporter refunded.</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>This teleporter is already used, or is currently being used.</span>")
|
||||
|
||||
|
||||
// PRESET UPLINKS
|
||||
// A collection of preset uplinks.
|
||||
//
|
||||
|
||||
@@ -27,6 +27,5 @@
|
||||
/obj/item/device/hailer/emag_act(user as mob)
|
||||
if(!emagged)
|
||||
to_chat(user, "\red You overload \the [src]'s voice synthesizer.")
|
||||
|
||||
emagged = 1
|
||||
|
||||
|
||||
@@ -11,18 +11,15 @@
|
||||
var/area/area_loc = turf_loc.loc
|
||||
if (area_loc.get_apc())
|
||||
to_chat(user, "<span class='rose'>This area already has an APC.</span>")
|
||||
|
||||
return //only one APC per area
|
||||
for(var/obj/machinery/power/terminal/T in turf_loc)
|
||||
if (T.master)
|
||||
to_chat(user, "<span class='rose'>There is another network terminal here.</span>")
|
||||
|
||||
return
|
||||
else
|
||||
var/obj/item/stack/cable_coil/C = new /obj/item/stack/cable_coil(turf_loc)
|
||||
C.amount = 10
|
||||
to_chat(user, "You cut the cables and disassemble the unused power terminal.")
|
||||
|
||||
qdel(T)
|
||||
return 1
|
||||
return
|
||||
|
||||
@@ -18,12 +18,10 @@
|
||||
|
||||
if (src.mount_reqs.Find("simfloor") && !istype(turf_loc, /turf/simulated/floor))
|
||||
to_chat(user, "<span class='rose'>[src] cannot be placed on this spot.</span>")
|
||||
|
||||
return
|
||||
if (src.mount_reqs.Find("nospace"))
|
||||
var/area/my_area = turf_loc.loc
|
||||
if(!istype(my_area) || (my_area.requires_power == 0 || istype(my_area,/area/space)))
|
||||
to_chat(user, "<span class='rose'>[src] cannot be placed in this area.</span>")
|
||||
|
||||
return
|
||||
return 1
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
|
||||
/obj/item/mounted/frame/light_fixture/do_build(turf/on_wall, mob/user)
|
||||
to_chat(user, "You begin attaching [src] to \the [on_wall].")
|
||||
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 75, 1)
|
||||
var/constrdir = user.dir
|
||||
var/constrloc = get_turf(user)
|
||||
|
||||
@@ -22,12 +22,10 @@
|
||||
return
|
||||
if (!( get_dir(on_wall,user) in cardinal))
|
||||
to_chat(user, "<span class='rose'>You need to be standing next to a wall to place \the [src].</span>")
|
||||
|
||||
return
|
||||
|
||||
if(gotwallitem(get_turf(user), get_dir(on_wall,user)))
|
||||
to_chat(user, "<span class='rose'>There's already an item on this wall!</span>")
|
||||
|
||||
return
|
||||
|
||||
return 1
|
||||
|
||||
@@ -12,16 +12,13 @@
|
||||
var/area/A = loc.loc
|
||||
if (!istype(loc, /turf/simulated/floor))
|
||||
to_chat(usr, "<span class='alert'>Newscaster cannot be placed on this spot.</span>")
|
||||
|
||||
return
|
||||
if (A.requires_power == 0 || A.name == "Space")
|
||||
to_chat(usr, "<span class='alert'>Newscaster cannot be placed in this area.</span>")
|
||||
|
||||
return
|
||||
|
||||
for(var/obj/machinery/newscaster/T in loc)
|
||||
to_chat(usr, "<span class='alert'>There is another newscaster here.</span>")
|
||||
|
||||
return
|
||||
|
||||
return 1
|
||||
|
||||
@@ -67,14 +67,12 @@ var/list/tape_roll_applications = list()
|
||||
if(icon_state == "[icon_base]_start")
|
||||
start = get_turf(src)
|
||||
to_chat(usr, "\blue You place the first end of the [src].")
|
||||
|
||||
icon_state = "[icon_base]_stop"
|
||||
else
|
||||
icon_state = "[icon_base]_start"
|
||||
end = get_turf(src)
|
||||
if(start.y != end.y && start.x != end.x || start.z != end.z)
|
||||
to_chat(usr, "\blue [src] can only be laid horizontally or vertically.")
|
||||
|
||||
return
|
||||
|
||||
var/turf/cur = start
|
||||
@@ -104,7 +102,6 @@ var/list/tape_roll_applications = list()
|
||||
cur = get_step_towards(cur,end)
|
||||
if (!can_place)
|
||||
to_chat(usr, "\blue You can't run \the [src] through that!")
|
||||
|
||||
return
|
||||
|
||||
cur = start
|
||||
@@ -121,7 +118,6 @@ var/list/tape_roll_applications = list()
|
||||
to_chat(usr, "\blue You finish placing the [src].")//Git Test
|
||||
|
||||
|
||||
|
||||
/obj/item/taperoll/afterattack(var/atom/A, mob/user as mob, proximity)
|
||||
if (!proximity)
|
||||
return
|
||||
@@ -134,7 +130,6 @@ var/list/tape_roll_applications = list()
|
||||
P.layer = 3.2
|
||||
to_chat(user, "\blue You finish placing the [src].")
|
||||
|
||||
|
||||
if (istype(A, /turf/simulated/floor) ||istype(A, /turf/unsimulated/floor))
|
||||
var/turf/F = A
|
||||
var/direction = user.loc == F ? user.dir : turn(user.dir, 180)
|
||||
@@ -184,7 +179,6 @@ var/list/tape_roll_applications = list()
|
||||
/obj/item/tape/proc/breaktape(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(user.a_intent == I_HELP && ((!can_puncture(W) && src.allowed(user))))
|
||||
to_chat(user, "You can't break the [src] with that!")
|
||||
|
||||
return
|
||||
user.show_viewers("\blue [user] breaks the [src]!")
|
||||
|
||||
|
||||
@@ -119,7 +119,6 @@
|
||||
var/obj/item/weapon/ed209_assembly/B = new /obj/item/weapon/ed209_assembly
|
||||
B.loc = get_turf(src)
|
||||
to_chat(user, "You armed the robot frame")
|
||||
|
||||
W:use(1)
|
||||
if (user.get_inactive_hand()==src)
|
||||
user.unEquip(src)
|
||||
@@ -162,11 +161,9 @@
|
||||
src.updateicon()
|
||||
else if(!W:wires)
|
||||
to_chat(user, "\blue You need to attach wires to it first!")
|
||||
|
||||
else
|
||||
to_chat(user, "\blue You need to attach a cell to it first!")
|
||||
|
||||
|
||||
if(istype(W, /obj/item/robot_parts/head))
|
||||
if(src.head) return
|
||||
if(W:flash2 && W:flash1)
|
||||
@@ -177,24 +174,20 @@
|
||||
else
|
||||
to_chat(user, "\blue You need to attach a flash to it first!")
|
||||
|
||||
|
||||
if (istype(W, /obj/item/device/multitool))
|
||||
if(check_completion())
|
||||
Interact(user)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The endoskeleton must be assembled before debugging can begin!</span>")
|
||||
|
||||
|
||||
if(istype(W, /obj/item/device/mmi))
|
||||
var/obj/item/device/mmi/M = W
|
||||
if(check_completion())
|
||||
if(!istype(loc,/turf))
|
||||
to_chat(user, "\red You can't put \the [W] in, the frame has to be standing on the ground to be perfectly precise.")
|
||||
|
||||
return
|
||||
if(!M.brainmob)
|
||||
to_chat(user, "\red Sticking an empty [W] into the frame would sort of defeat the purpose.")
|
||||
|
||||
return
|
||||
|
||||
if(!M.brainmob.key)
|
||||
@@ -210,22 +203,18 @@
|
||||
break
|
||||
if(!ghost_can_reenter)
|
||||
to_chat(user, "<span class='notice'>\The [W] is completely unresponsive; there's no point.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(M.brainmob.stat == DEAD)
|
||||
to_chat(user, "\red Sticking a dead [W] into the frame would sort of defeat the purpose.")
|
||||
|
||||
return
|
||||
|
||||
if(M.brainmob.mind in ticker.mode.head_revolutionaries)
|
||||
to_chat(user, "\red The frame's firmware lets out a shrill sound, and flashes 'Abnormal Memory Engram'. It refuses to accept the [W].")
|
||||
|
||||
return
|
||||
|
||||
if(jobban_isbanned(M.brainmob, "Cyborg") || jobban_isbanned(M.brainmob,"nonhumandept"))
|
||||
to_chat(user, "\red This [W] does not seem to fit.")
|
||||
|
||||
return
|
||||
|
||||
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc), unfinished = 1)
|
||||
@@ -265,10 +254,8 @@
|
||||
if(O.mind && O.mind.special_role)
|
||||
O.mind.store_memory("As a cyborg, you must obey your silicon laws and master AI above all else. Your objectives will consider you to be dead.")
|
||||
to_chat(O, "<span class='userdanger'>You have been robotized!</span>")
|
||||
|
||||
to_chat(O, "<span class='danger'>You must obey your silicon laws and master AI above all else. Your objectives will consider you to be dead.</span>")
|
||||
|
||||
|
||||
O.job = "Cyborg"
|
||||
|
||||
O.cell = chest.cell
|
||||
@@ -293,14 +280,11 @@
|
||||
O.update_canmove()
|
||||
to_chat(O, "<span class='warning'>Error: Servo motors unresponsive.</span>")
|
||||
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The MMI must go in after everything else!</span>")
|
||||
|
||||
|
||||
if(istype(W,/obj/item/weapon/pen))
|
||||
to_chat(user, "<span class='warning'>You need to use a multitool to name [src]!</span>")
|
||||
|
||||
return
|
||||
|
||||
/obj/item/robot_parts/robot_suit/proc/Interact(mob/user)
|
||||
@@ -323,7 +307,6 @@
|
||||
var/obj/item/item_in_hand = living_user.get_active_hand()
|
||||
if(!istype(item_in_hand, /obj/item/device/multitool))
|
||||
to_chat(living_user, "<span class='warning'>You need a multitool!</span>")
|
||||
|
||||
return
|
||||
|
||||
if(href_list["Name"])
|
||||
@@ -340,7 +323,6 @@
|
||||
if(!forced_ai)
|
||||
to_chat(usr, "<span class='error'>No active AIs detected.</span>")
|
||||
|
||||
|
||||
else if(href_list["Law"])
|
||||
lawsync = !lawsync
|
||||
else if(href_list["AI"])
|
||||
@@ -359,25 +341,21 @@
|
||||
if(istype(W, /obj/item/weapon/stock_parts/cell))
|
||||
if(src.cell)
|
||||
to_chat(user, "\blue You have already inserted a cell!")
|
||||
|
||||
return
|
||||
else
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
src.cell = W
|
||||
to_chat(user, "\blue You insert the cell!")
|
||||
|
||||
if(istype(W, /obj/item/stack/cable_coil))
|
||||
if(src.wires)
|
||||
to_chat(user, "\blue You have already inserted wire!")
|
||||
|
||||
return
|
||||
else
|
||||
var/obj/item/stack/cable_coil/coil = W
|
||||
coil.use(1)
|
||||
src.wires = 1.0
|
||||
to_chat(user, "\blue You insert the wire!")
|
||||
|
||||
return
|
||||
|
||||
/obj/item/robot_parts/head/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
@@ -385,27 +363,22 @@
|
||||
if(istype(W, /obj/item/device/flash))
|
||||
if(istype(user,/mob/living/silicon/robot))
|
||||
to_chat(user, "\red How do you propose to do that?")
|
||||
|
||||
return
|
||||
else if(src.flash1 && src.flash2)
|
||||
to_chat(user, "\blue You have already inserted the eyes!")
|
||||
|
||||
return
|
||||
else if(src.flash1)
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
src.flash2 = W
|
||||
to_chat(user, "\blue You insert the flash into the eye socket!")
|
||||
|
||||
else
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
src.flash1 = W
|
||||
to_chat(user, "\blue You insert the flash into the eye socket!")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/stock_parts/manipulator))
|
||||
to_chat(user, "\blue You install some manipulators and modify the head, creating a functional spider-bot!")
|
||||
|
||||
new /mob/living/simple_animal/spiderbot(get_turf(loc))
|
||||
user.drop_item()
|
||||
qdel(W)
|
||||
@@ -417,10 +390,8 @@
|
||||
if(istype(W,/obj/item/weapon/card/emag))
|
||||
if(sabotaged)
|
||||
to_chat(user, "\red [src] is already sabotaged!")
|
||||
|
||||
else
|
||||
to_chat(user, "\red You slide [W] into the dataport on [src] and short out the safeties.")
|
||||
|
||||
sabotaged = 1
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
/obj/item/borg/upgrade/proc/action(var/mob/living/silicon/robot/R)
|
||||
if(R.stat == DEAD)
|
||||
to_chat(usr, "\red The [src] will not function on a deceased robot.")
|
||||
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -72,7 +71,6 @@
|
||||
/obj/item/borg/upgrade/restart/action(var/mob/living/silicon/robot/R)
|
||||
if(R.health < 0)
|
||||
to_chat(usr, "You have to repair the robot before using this module!")
|
||||
|
||||
return 0
|
||||
|
||||
if(!R.key)
|
||||
@@ -115,9 +113,7 @@
|
||||
|
||||
if(!istype(R.module, /obj/item/weapon/robot_module/security))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
|
||||
return 0
|
||||
|
||||
var/obj/item/weapon/gun/energy/disabler/cyborg/T = locate() in R.module
|
||||
@@ -127,14 +123,11 @@
|
||||
T = locate() in R.module.modules
|
||||
if(!T)
|
||||
to_chat(usr, "This robot has had its disabler removed!")
|
||||
|
||||
return 0
|
||||
|
||||
if(T.recharge_time <= 2)
|
||||
to_chat(R, "Maximum cooling achieved for this hardpoint!")
|
||||
|
||||
to_chat(usr, "There's no room for another cooling unit!")
|
||||
|
||||
return 0
|
||||
|
||||
else
|
||||
@@ -153,9 +146,7 @@
|
||||
|
||||
if(!istype(R.module, /obj/item/weapon/robot_module/miner))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
|
||||
return 0
|
||||
else
|
||||
R.module.modules += new/obj/item/weapon/tank/jetpack/carbondioxide
|
||||
@@ -176,9 +167,7 @@
|
||||
|
||||
if(!istype(R.module, /obj/item/weapon/robot_module/miner))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
|
||||
return 0
|
||||
else
|
||||
for(var/obj/item/weapon/pickaxe/drill/cyborg/D in R.module.modules)
|
||||
@@ -202,9 +191,7 @@
|
||||
|
||||
if(!istype(R.module, /obj/item/weapon/robot_module/miner))
|
||||
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
|
||||
|
||||
to_chat(usr, "There's no mounting point for the module!")
|
||||
|
||||
return 0
|
||||
else
|
||||
for(var/obj/item/weapon/storage/bag/ore/cyborg/S in R.module.modules)
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
if(WT.remove_fuel(0, user))
|
||||
overlays.Cut()
|
||||
to_chat(usr, "You slice off [src]'s uneven chunks of aluminum and scorch marks.")
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -61,12 +60,10 @@
|
||||
if(!user.get_active_hand())
|
||||
user.put_in_hands(src)
|
||||
to_chat(user, "You take the target out of the stake.")
|
||||
|
||||
else
|
||||
src.loc = get_turf(user)
|
||||
to_chat(user, "You take the target out of the stake.")
|
||||
|
||||
|
||||
stake.pinned_target = null
|
||||
return
|
||||
|
||||
@@ -100,7 +97,6 @@
|
||||
for(var/mob/O in oviewers())
|
||||
if ((O.client && !( O.blinded )))
|
||||
to_chat(O, "\red [src] breaks into tiny pieces and collapses!")
|
||||
|
||||
qdel(src)
|
||||
|
||||
// Create a temporary object to represent the damage
|
||||
|
||||
@@ -13,12 +13,10 @@
|
||||
/obj/item/stack/medical/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if (!istype(M))
|
||||
to_chat(user, "<span class='danger'>\The [src] cannot be applied to [M]!</span>")
|
||||
|
||||
return 1
|
||||
|
||||
if (!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='danger'>You don't have the dexterity to do this!</span>")
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -32,12 +30,10 @@
|
||||
|
||||
if(!affecting)
|
||||
to_chat(user, "<span class='danger'>That limb is missing!</span>")
|
||||
|
||||
return 1
|
||||
|
||||
if(affecting.status & ORGAN_ROBOT)
|
||||
to_chat(user, "<span class='danger'>This can't be used on a robotic limb.</span>")
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -68,7 +64,6 @@
|
||||
if(affecting.open == 0)
|
||||
if(!affecting.bandage())
|
||||
to_chat(user, "\red The wounds on [M]'s [affecting.name] have already been bandaged.")
|
||||
|
||||
return 1
|
||||
else
|
||||
for (var/datum/wound/W in affecting.wounds)
|
||||
@@ -110,7 +105,6 @@
|
||||
if(affecting.open == 0)
|
||||
if(!affecting.salve())
|
||||
to_chat(user, "\red The wounds on [M]'s [affecting.name] have already been salved.")
|
||||
|
||||
return 1
|
||||
else
|
||||
user.visible_message( "\blue [user] salves the wounds on [M]'s [affecting.name].", \
|
||||
@@ -120,7 +114,6 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>The [affecting.name] is cut open, you'll need more than some ointment!</span>")
|
||||
|
||||
|
||||
/obj/item/stack/medical/bruise_pack/comfrey
|
||||
name = "\improper Comfrey leaf"
|
||||
singular_name = "Comfrey leaf"
|
||||
@@ -161,7 +154,6 @@
|
||||
|
||||
if(!(bandaged || disinfected))
|
||||
to_chat(user, "\red The wounds on [M]'s [affecting.name] have already been treated.")
|
||||
|
||||
return 1
|
||||
else
|
||||
for (var/datum/wound/W in affecting.wounds)
|
||||
@@ -183,7 +175,6 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>The [affecting.name] is cut open, you'll need more than a bandage!</span>")
|
||||
|
||||
|
||||
/obj/item/stack/medical/advanced/ointment
|
||||
name = "advanced burn kit"
|
||||
singular_name = "advanced burn kit"
|
||||
@@ -204,7 +195,6 @@
|
||||
if(affecting.open == 0)
|
||||
if(!affecting.salve())
|
||||
to_chat(user, "\red The wounds on [M]'s [affecting.name] have already been salved.")
|
||||
|
||||
return 1
|
||||
else
|
||||
user.visible_message( "\blue [user] covers the wounds on [M]'s [affecting.name] with regenerative membrane.", \
|
||||
@@ -214,7 +204,6 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>The [affecting.name] is cut open, you'll need more than a bandage!</span>")
|
||||
|
||||
|
||||
/obj/item/stack/medical/splint
|
||||
name = "medical splints"
|
||||
singular_name = "medical splint"
|
||||
@@ -236,22 +225,18 @@
|
||||
var/limb = affecting.name
|
||||
if(!(affecting.limb_name in list("l_arm", "r_arm", "l_hand", "r_hand", "l_leg", "r_leg", "l_foot", "r_foot")))
|
||||
to_chat(user, "\red You can't apply a splint there!")
|
||||
|
||||
return
|
||||
if(affecting.status & ORGAN_SPLINTED)
|
||||
to_chat(user, "\red [M]'s [limb] is already splinted!")
|
||||
|
||||
if(alert(user, "Would you like to remove the splint from [M]'s [limb]?", "Removing.", "Yes", "No") == "Yes")
|
||||
affecting.status &= ~ORGAN_SPLINTED
|
||||
to_chat(user, "<span class='notice'>You remove the splint from [M]'s [limb].")
|
||||
|
||||
return
|
||||
if (M != user)
|
||||
user.visible_message("\red [user] starts to apply \the [src] to [M]'s [limb].", "\red You start to apply \the [src] to [M]'s [limb].", "\red You hear something being wrapped.")
|
||||
else
|
||||
if((!user.hand && affecting.limb_name in list("r_arm", "r_hand")) || (user.hand && affecting.limb_name in list("l_arm", "l_hand")))
|
||||
to_chat(user, "\red You can't apply a splint to the arm you're using!")
|
||||
|
||||
return
|
||||
user.visible_message("\red [user] starts to apply \the [src] to their [limb].", "\red You start to apply \the [src] to your [limb].", "\red You hear something being wrapped.")
|
||||
if(do_after(user, 50, target = M))
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
else
|
||||
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
|
||||
var/obj/item/organ/external/S = H.get_organ(user.zone_sel.selecting)
|
||||
@@ -37,7 +36,5 @@
|
||||
"<span class='notice'>You apply some nanite paste at [user == M ? "your" : "[M]'s"] [S.name].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Nothing to fix here.</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] won't work on that.</span>")
|
||||
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
|
||||
if(get_amount() < 2)
|
||||
to_chat(user, "<span class='warning'>You need at least two rods to do this.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(WT.remove_fuel(0,user))
|
||||
@@ -78,17 +77,14 @@
|
||||
else
|
||||
if(amount < 2)
|
||||
to_chat(user, "\blue You need at least two rods to do this.")
|
||||
|
||||
return
|
||||
to_chat(usr, "\blue Assembling grille...")
|
||||
|
||||
|
||||
if (!do_after(usr, 10, target = src))
|
||||
return
|
||||
|
||||
var /obj/structure/grille/F = new /obj/structure/grille/ ( usr.loc )
|
||||
to_chat(usr, "\blue You assemble a grille")
|
||||
|
||||
F.add_fingerprint(usr)
|
||||
use(2)
|
||||
return
|
||||
|
||||
@@ -35,11 +35,9 @@
|
||||
var/obj/item/stack/cable_coil/CC = W
|
||||
if(CC.amount < 5)
|
||||
to_chat(user, "\b There is not enough wire in this coil. You need 5 lengths.")
|
||||
|
||||
return
|
||||
CC.use(5)
|
||||
to_chat(user, "<span class='notice'>You attach wire to the [name].</span>")
|
||||
|
||||
new /obj/item/stack/light_w(user.loc)
|
||||
src.use(1)
|
||||
else if( istype(W, /obj/item/stack/rods) )
|
||||
@@ -62,7 +60,6 @@
|
||||
if(!istype(user.loc,/turf)) return 0
|
||||
if(!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='danger'>You don't have the dexterity to do this!</span>")
|
||||
|
||||
return 0
|
||||
var/title = "Sheet-Glass"
|
||||
title += " ([src.amount] sheet\s left)"
|
||||
@@ -77,12 +74,10 @@
|
||||
i++
|
||||
if(i >= 4)
|
||||
to_chat(user, "<span class='danger'>There are too many windows in this location.</span>")
|
||||
|
||||
return 1
|
||||
directions-=win.dir
|
||||
if(win.is_fulltile())
|
||||
to_chat(user, "<span class='danger'>Can't let you do that.</span>")
|
||||
|
||||
return 1
|
||||
|
||||
//Determine the direction. It will first check in the direction the person making the window is facing, if it finds an already made window it will try looking at the next cardinal direction, etc.
|
||||
@@ -109,11 +104,9 @@
|
||||
if(src.loc != user) return 1
|
||||
if(src.amount < 2)
|
||||
to_chat(user, "<span class='danger'>You need more glass to do that.</span>")
|
||||
|
||||
return 1
|
||||
if(locate(/obj/structure/window/full) in user.loc)
|
||||
to_chat(user, "<span class='danger'>There is a full window in the way.</span>")
|
||||
|
||||
return 1
|
||||
var/obj/structure/window/W = new full_window( user.loc, 0 )
|
||||
W.state = 0
|
||||
@@ -131,7 +124,6 @@
|
||||
if(src.loc != user) return 1
|
||||
if(src.amount < 3)
|
||||
to_chat(user, "<span class='danger'>You need more glass to do that.</span>")
|
||||
|
||||
return 1
|
||||
var/obj/machinery/fishtank/F = new /obj/machinery/fishtank/tank(user.loc, 0)
|
||||
F.air_update_turf(1)
|
||||
@@ -141,7 +133,6 @@
|
||||
if(src.loc != user) return 1
|
||||
if(src.amount < 4)
|
||||
to_chat(user, "<span class='danger'>You need more glass to do that.</span>")
|
||||
|
||||
return 1
|
||||
var/obj/machinery/fishtank/F = new /obj/machinery/fishtank/wall(user.loc, 0)
|
||||
F.air_update_turf(1)
|
||||
@@ -173,7 +164,6 @@
|
||||
if(!istype(user.loc,/turf)) return 0
|
||||
if(!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='danger'>You don't have the dexterity to do this!</span>")
|
||||
|
||||
return 0
|
||||
var/title = "Sheet Reinf. Glass"
|
||||
title += " ([src.amount] sheet\s left)"
|
||||
@@ -187,12 +177,10 @@
|
||||
i++
|
||||
if(i >= 4)
|
||||
to_chat(user, "<span class='danger'>There are too many windows in this location.</span>")
|
||||
|
||||
return 1
|
||||
directions-=win.dir
|
||||
if(win.is_fulltile())
|
||||
to_chat(user, "<span class='danger'>Can't let you do that.</span>")
|
||||
|
||||
return 1
|
||||
|
||||
//Determine the direction. It will first check in the direction the person making the window is facing, if it finds an already made window it will try looking at the next cardinal direction, etc.
|
||||
@@ -219,11 +207,9 @@
|
||||
if(src.loc != user) return 1
|
||||
if(src.amount < 2)
|
||||
to_chat(user, "<span class='danger'>You need more glass to do that.</span>")
|
||||
|
||||
return 1
|
||||
if(locate(/obj/structure/window/full) in user.loc)
|
||||
to_chat(user, "<span class='danger'>There is a window in the way.</span>")
|
||||
|
||||
return 1
|
||||
var/obj/structure/window/W = new full_window( user.loc, 0 )
|
||||
W.state = 0
|
||||
@@ -235,17 +221,14 @@
|
||||
|
||||
if(isturf(user.loc) && locate(/obj/structure/windoor_assembly/, user.loc))
|
||||
to_chat(user, "<span class='danger'>There is already a windoor assembly in that location.</span>")
|
||||
|
||||
return 1
|
||||
|
||||
if(isturf(user.loc) && locate(/obj/machinery/door/window/, user.loc))
|
||||
to_chat(user, "<span class='danger'>There is already a windoor in that location.</span>")
|
||||
|
||||
return 1
|
||||
|
||||
if(src.amount < 5)
|
||||
to_chat(user, "<span class='danger'>You need more glass to do that.</span>")
|
||||
|
||||
return 1
|
||||
|
||||
var/obj/structure/windoor_assembly/WD
|
||||
@@ -309,7 +292,6 @@
|
||||
if(!istype(user.loc,/turf)) return 0
|
||||
if(!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='danger'> You don't have the dexterity to do this!")
|
||||
|
||||
return 0
|
||||
var/title = "Plasma-glass alloy"
|
||||
title += " ([src.amount] sheet\s left)"
|
||||
@@ -323,12 +305,10 @@
|
||||
i++
|
||||
if(i >= 4)
|
||||
to_chat(user, "<span class='danger'>There are too many windows in this location.</span>")
|
||||
|
||||
return 1
|
||||
directions-=win.dir
|
||||
if(!(win.ini_dir in cardinal))
|
||||
to_chat(user, "<span class='danger'>Can't let you do that.</span>")
|
||||
|
||||
return 1
|
||||
//Determine the direction. It will first check in the direction the person making the window is facing, if it finds an already made window it will try looking at the next cardinal direction, etc.
|
||||
var/dir_to_set = 2
|
||||
@@ -352,11 +332,9 @@
|
||||
if(src.loc != user) return 1
|
||||
if(src.amount < 2)
|
||||
to_chat(user, "<span class='danger'>You need more glass to do that.</span>")
|
||||
|
||||
return 1
|
||||
if(locate(/obj/structure/window) in user.loc)
|
||||
to_chat(user, "<span class='danger'>There is a window in the way.</span>")
|
||||
|
||||
return 1
|
||||
var/obj/structure/window/W = new full_window( user.loc, 0 )
|
||||
W.state = 0
|
||||
@@ -386,7 +364,6 @@
|
||||
if(!istype(user.loc,/turf)) return 0
|
||||
if(!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='danger'>You don't have the dexterity to do this!</span>")
|
||||
|
||||
return 0
|
||||
var/title = "Reinforced plasma-glass alloy"
|
||||
title += " ([src.amount] sheet\s left)"
|
||||
@@ -400,12 +377,10 @@
|
||||
i++
|
||||
if(i >= 4)
|
||||
to_chat(user, "<span class='danger'>There are too many windows in this location.</span>")
|
||||
|
||||
return 1
|
||||
directions-=win.dir
|
||||
if(!(win.ini_dir in cardinal))
|
||||
to_chat(user, "<span class='danger'>Can't let you do that.</span>")
|
||||
|
||||
return 1
|
||||
//Determine the direction. It will first check in the direction the person making the window is facing, if it finds an already made window it will try looking at the next cardinal direction, etc.
|
||||
var/dir_to_set = 2
|
||||
@@ -429,11 +404,9 @@
|
||||
if(src.loc != user) return 1
|
||||
if(src.amount < 2)
|
||||
to_chat(user, "<span class='danger'>You need more glass to do that.</span>")
|
||||
|
||||
return 1
|
||||
if(locate(/obj/structure/window) in user.loc)
|
||||
to_chat(user, "<span class='danger'>There is a window in the way.</span>")
|
||||
|
||||
return 1
|
||||
var/obj/structure/window/W = new full_window( user.loc, 0 )
|
||||
W.state = 0
|
||||
|
||||
@@ -115,7 +115,6 @@ var/global/list/datum/stack_recipe/human_recipes = list( \
|
||||
usr.visible_message("\blue \the [usr] starts cutting hair off \the [src]", "\blue You start cutting the hair off \the [src]", "You hear the sound of a knife rubbing against flesh")
|
||||
if(do_after(user,50, target = src))
|
||||
to_chat(usr, "\blue You cut the hair from this [src.singular_name]")
|
||||
|
||||
//Try locating an exisitng stack on the tile and add to there if possible
|
||||
for(var/obj/item/stack/sheet/hairlesshide/HS in usr.loc)
|
||||
if(HS.amount < 50)
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
to_chat(user, "There are [src.amount] [src.singular_name]\s in the stack.")
|
||||
|
||||
|
||||
|
||||
/obj/item/stack/attack_self(mob/user as mob)
|
||||
list_recipes(user)
|
||||
|
||||
@@ -120,22 +119,17 @@
|
||||
if (src.amount < R.req_amount*multiplier)
|
||||
if (R.req_amount*multiplier>1)
|
||||
to_chat(usr, "\red You haven't got enough [src] to build \the [R.req_amount*multiplier] [R.title]\s!")
|
||||
|
||||
else
|
||||
to_chat(usr, "\red You haven't got enough [src] to build \the [R.title]!")
|
||||
|
||||
return
|
||||
if (R.one_per_turf && (locate(R.result_type) in usr.loc))
|
||||
to_chat(usr, "\red There is another [R.title] here!")
|
||||
|
||||
return
|
||||
if (R.on_floor && !istype(usr.loc, /turf/simulated))
|
||||
to_chat(usr, "\red \The [R.title] must be constructed on the floor!")
|
||||
|
||||
return
|
||||
if (R.time)
|
||||
to_chat(usr, "\blue Building [R.title] ...")
|
||||
|
||||
if (!do_after(usr, R.time, target = src))
|
||||
return
|
||||
if (src.amount < R.req_amount*multiplier)
|
||||
@@ -190,7 +184,6 @@
|
||||
continue
|
||||
oldsrc.attackby(item, usr)
|
||||
to_chat(usr, "You add new [item.singular_name] to the stack. It now contains [item.amount] [item.singular_name]\s.")
|
||||
|
||||
if(oldsrc.amount <= 0)
|
||||
break
|
||||
oldsrc.update_icon()
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
use(1)
|
||||
to_chat(user, "<span class='notice'>You press the [src] onto yourself and charge your hidden uplink.</span>")
|
||||
|
||||
|
||||
/obj/item/stack/telecrystal/afterattack(var/obj/item/I as obj, mob/user as mob, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
@@ -27,4 +26,3 @@
|
||||
I.hidden_uplink.uses +=1
|
||||
use(1)
|
||||
to_chat(user, "<span class='notice'>You slot the [src] into the [I] and charge its internal uplink.</span>")
|
||||
|
||||
|
||||
@@ -52,7 +52,6 @@
|
||||
if (istype(A, /obj/structure/reagent_dispensers) && get_dist(src,A) <= 1)
|
||||
A.reagents.trans_to(src, 10)
|
||||
to_chat(user, "<span class='notice'>You fill the balloon with the contents of [A].</span>")
|
||||
|
||||
desc = "A translucent balloon with some form of liquid sloshing around in it."
|
||||
update_icon()
|
||||
return
|
||||
@@ -61,7 +60,6 @@
|
||||
if(reagents.total_volume < 10)
|
||||
reagents.add_reagent("water", min(10-reagents.total_volume, 10))
|
||||
to_chat(user, "<span class='notice'>You fill the balloon from the [source].</span>")
|
||||
|
||||
desc = "A translucent balloon with some form of liquid sloshing around in it."
|
||||
update_icon()
|
||||
return
|
||||
@@ -71,17 +69,14 @@
|
||||
if(O.reagents)
|
||||
if(O.reagents.total_volume < 1)
|
||||
to_chat(user, "The [O] is empty.")
|
||||
|
||||
else if(O.reagents.total_volume >= 1)
|
||||
if(O.reagents.has_reagent("facid", 1))
|
||||
to_chat(user, "The acid chews through the balloon!")
|
||||
|
||||
O.reagents.reaction(user)
|
||||
qdel(src)
|
||||
else
|
||||
desc = "A translucent balloon with some form of liquid sloshing around in it."
|
||||
to_chat(user, "<span class='notice'>You fill the balloon with the contents of [O].</span>")
|
||||
|
||||
O.reagents.trans_to(src, 10)
|
||||
update_icon()
|
||||
return
|
||||
@@ -159,7 +154,6 @@
|
||||
if (bullets)
|
||||
to_chat(user, "<span class='notice'>It is loaded with [bullets] foam darts!</span>")
|
||||
|
||||
|
||||
/obj/item/toy/crossbow/attackby(obj/item/I as obj, mob/user as mob, params)
|
||||
if(istype(I, /obj/item/toy/ammo/crossbow))
|
||||
if(bullets <= 4)
|
||||
@@ -167,12 +161,10 @@
|
||||
qdel(I)
|
||||
bullets++
|
||||
to_chat(user, "<span class='notice'>You load the foam dart into the crossbow.</span>")
|
||||
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>It's already fully loaded.</span>")
|
||||
|
||||
|
||||
|
||||
/obj/item/toy/crossbow/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
|
||||
if(!isturf(target.loc) || target == user) return
|
||||
if(flag) return
|
||||
@@ -273,11 +265,9 @@
|
||||
qdel(I)
|
||||
bullets++
|
||||
to_chat(user, "<span class='notice'>You load the foam dart into the tommy gun.</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='danger'>It's already fully loaded.</span>")
|
||||
|
||||
|
||||
/*
|
||||
* Toy swords
|
||||
*/
|
||||
@@ -296,14 +286,12 @@
|
||||
active = !(active)
|
||||
if (active)
|
||||
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)
|
||||
icon_state = "swordblue"
|
||||
item_state = "swordblue"
|
||||
w_class = 4
|
||||
else
|
||||
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)
|
||||
icon_state = "sword0"
|
||||
item_state = "sword0"
|
||||
@@ -322,15 +310,12 @@
|
||||
if(istype(W, /obj/item/toy/sword))
|
||||
if(W == src)
|
||||
to_chat(user, "<span class='notice'>You try to attach the end of the plastic sword to... itself. You're not very smart, are you?</span>")
|
||||
|
||||
if(ishuman(user))
|
||||
user.adjustBrainLoss(10)
|
||||
else if((W.flags & NODROP) || (flags & NODROP))
|
||||
to_chat(user, "<span class='notice'>\the [flags & NODROP ? src : W] is stuck to your hand, you can't attach it to \the [flags & NODROP ? W : src]!</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You attach the ends of the two plastic swords, making a single double-bladed toy! You're fake-cool.</span>")
|
||||
|
||||
new /obj/item/weapon/twohanded/dualsaber/toy(user.loc)
|
||||
user.unEquip(W)
|
||||
user.unEquip(src)
|
||||
@@ -428,7 +413,6 @@
|
||||
if(M.m_intent == "run")
|
||||
to_chat(M, "<span class='warning'>You step on the snap pop!</span>")
|
||||
|
||||
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(2, 0, src)
|
||||
s.start()
|
||||
@@ -451,7 +435,6 @@
|
||||
/obj/item/toy/prize/attack_self(mob/user as mob)
|
||||
if(cooldown < world.time - 8)
|
||||
to_chat(user, "<span class='notice'>You play with [src].</span>")
|
||||
|
||||
playsound(user, 'sound/mecha/mechstep.ogg', 20, 1)
|
||||
cooldown = world.time
|
||||
|
||||
@@ -459,7 +442,6 @@
|
||||
if(loc == user)
|
||||
if(cooldown < world.time - 8)
|
||||
to_chat(user, "<span class='notice'>You play with [src].</span>")
|
||||
|
||||
playsound(user, 'sound/mecha/mechturn.ogg', 20, 1)
|
||||
cooldown = world.time
|
||||
return
|
||||
@@ -608,7 +590,6 @@ obj/item/toy/cards/deck/attack_hand(mob/user as mob)
|
||||
if(cards.len == 0)
|
||||
icon_state = "deck_[deckstyle]_empty"
|
||||
to_chat(user, "<span class='notice'>There are no more cards to draw.</span>")
|
||||
|
||||
return
|
||||
var/obj/item/toy/cards/singlecard/H = new/obj/item/toy/cards/singlecard(user.loc)
|
||||
choice = cards[1]
|
||||
@@ -640,14 +621,12 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/use
|
||||
if(C.parentdeck == src)
|
||||
if(!user.unEquip(C))
|
||||
to_chat(user, "<span class='notice'>The card is stuck to your hand, you can't add it to the deck!</span>")
|
||||
|
||||
return
|
||||
cards += C.cardname
|
||||
user.visible_message("<span class='notice'>[user] adds a card to the bottom of the deck.</span>","<span class='notice'>You add the card to the bottom of the deck.</span>")
|
||||
qdel(C)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You can't mix cards from other decks.</span>")
|
||||
|
||||
if(cards.len > 26)
|
||||
icon_state = "deck_[deckstyle]_full"
|
||||
else if(cards.len > 10)
|
||||
@@ -662,14 +641,12 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user,
|
||||
if(C.parentdeck == src)
|
||||
if(!user.unEquip(C))
|
||||
to_chat(user, "<span class='notice'>The hand of cards is stuck to your hand, you can't add it to the deck!</span>")
|
||||
|
||||
return
|
||||
cards += C.currenthand
|
||||
user.visible_message("<span class='notice'>[user] puts their hand of cards in the deck.</span>", "<span class='notice'>You put the hand of cards in the deck.</span>")
|
||||
qdel(C)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You can't mix cards from other decks.</span>")
|
||||
|
||||
if(cards.len > 26)
|
||||
icon_state = "deck_[deckstyle]_full"
|
||||
else if(cards.len > 10)
|
||||
@@ -686,7 +663,6 @@ obj/item/toy/cards/deck/MouseDrop(atom/over_object)
|
||||
M.put_in_hands(src)
|
||||
to_chat(usr, "<span class='notice'>You pick up the deck.</span>")
|
||||
|
||||
|
||||
else if(istype(over_object, /obj/screen))
|
||||
switch(over_object.name)
|
||||
if("l_hand")
|
||||
@@ -698,13 +674,11 @@ obj/item/toy/cards/deck/MouseDrop(atom/over_object)
|
||||
M.unEquip(src)
|
||||
M.put_in_r_hand(src)
|
||||
to_chat(usr, "<span class='notice'>You pick up the deck.</span>")
|
||||
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You can't reach it from here.</span>")
|
||||
|
||||
|
||||
|
||||
|
||||
obj/item/toy/cards/cardhand
|
||||
name = "hand of cards"
|
||||
desc = "A number of cards not in a deck, customarily held in ones hand."
|
||||
@@ -765,7 +739,6 @@ obj/item/toy/cards/cardhand/Topic(href, href_list)
|
||||
N.pickup(cardUser)
|
||||
cardUser.put_in_any_hand_if_possible(N)
|
||||
to_chat(cardUser, "<span class='notice'>You also take [currenthand[1]] and hold it.</span>")
|
||||
|
||||
cardUser << browse(null, "window=cardhand")
|
||||
qdel(src)
|
||||
return
|
||||
@@ -787,7 +760,6 @@ obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You can't mix cards from other decks.</span>")
|
||||
|
||||
|
||||
obj/item/toy/cards/cardhand/apply_card_vars(obj/item/toy/cards/newobj,obj/item/toy/cards/sourceobj)
|
||||
..()
|
||||
newobj.deckstyle = sourceobj.deckstyle
|
||||
@@ -821,7 +793,6 @@ obj/item/toy/cards/singlecard/examine(mob/user)
|
||||
to_chat(cardUser, "<span class='notice'>You need to have the card in your hand to check it.</span>")
|
||||
|
||||
|
||||
|
||||
obj/item/toy/cards/singlecard/verb/Flip()
|
||||
set name = "Flip Card"
|
||||
set category = "Object"
|
||||
@@ -856,13 +827,11 @@ obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params)
|
||||
H.pickup(user)
|
||||
user.put_in_active_hand(H)
|
||||
to_chat(user, "<span class='notice'>You combine the [C.cardname] and the [cardname] into a hand.</span>")
|
||||
|
||||
qdel(C)
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You can't mix cards from other decks.</span>")
|
||||
|
||||
|
||||
if(istype(I, /obj/item/toy/cards/cardhand/))
|
||||
var/obj/item/toy/cards/cardhand/H = I
|
||||
if(H.parentdeck == parentdeck)
|
||||
@@ -881,7 +850,6 @@ obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params)
|
||||
to_chat(user, "<span class='notice'>You can't mix cards from other decks.</span>")
|
||||
|
||||
|
||||
|
||||
obj/item/toy/cards/singlecard/attack_self(mob/user)
|
||||
if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained())
|
||||
return
|
||||
@@ -952,7 +920,6 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
var/timeleft = (cooldown - world.time)
|
||||
to_chat(user, "<span class='alert'>Nothing happens, and '</span>[round(timeleft/10)]<span class='alert'>' appears on a small display.</span>")
|
||||
|
||||
|
||||
/obj/item/toy/therapy
|
||||
name = "therapy doll"
|
||||
desc = "A toy for therapeutic and recreational purposes."
|
||||
@@ -970,7 +937,6 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
/obj/item/toy/therapy/attack_self(mob/user)
|
||||
if(cooldown < world.time - 8)
|
||||
to_chat(user, "<span class='notice'>You relieve some stress with \the [src].</span>")
|
||||
|
||||
playsound(user, 'sound/items/squeaktoy.ogg', 20, 1)
|
||||
cooldown = world.time
|
||||
|
||||
@@ -1283,7 +1249,6 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
to_chat(user, "<span class='alert'>Nothing happens.</span>")
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* AI core prizes
|
||||
*/
|
||||
@@ -1299,7 +1264,6 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
if(!cooldown) //for the sanity of everyone
|
||||
var/message = generate_ion_law()
|
||||
to_chat(user, "<span class='notice'>You press the button on [src].</span>")
|
||||
|
||||
playsound(user, 'sound/machines/click.ogg', 20, 1)
|
||||
visible_message("<span class='danger'>\icon[src] [message]</span>")
|
||||
cooldown = 1
|
||||
@@ -1319,7 +1283,6 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
if(!cooldown) //for the sanity of everyone
|
||||
var/message = pick("You won't get away this time, Griffin!", "Stop right there, criminal!", "Hoot! Hoot!", "I am the night!")
|
||||
to_chat(user, "<span class='notice'>You pull the string on the [src].</span>")
|
||||
|
||||
playsound(user, 'sound/misc/hoot.ogg', 25, 1)
|
||||
visible_message("<span class='danger'>\icon[src] [message]</span>")
|
||||
cooldown = 1
|
||||
@@ -1339,7 +1302,6 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
if(!cooldown) //for the sanity of everyone
|
||||
var/message = pick("You can't stop me, Owl!", "My plan is flawless! The vault is mine!", "Caaaawwww!", "You will never catch me!")
|
||||
to_chat(user, "<span class='notice'>You pull the string on the [src].</span>")
|
||||
|
||||
playsound(user, 'sound/misc/caw.ogg', 25, 1)
|
||||
visible_message("<span class='danger'>\icon[src] [message]</span>")
|
||||
cooldown = 1
|
||||
@@ -1435,7 +1397,6 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
|
||||
if(stored_minature)
|
||||
to_chat(user, "<span class='danger'>\The [src] makes a violent grinding noise as it tears apart the miniature figure inside!</span>")
|
||||
|
||||
qdel(stored_minature)
|
||||
stored_minature = null
|
||||
playsound(user, 'sound/goonstation/effects/gib.ogg', 20, 1)
|
||||
@@ -1443,27 +1404,22 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
|
||||
if(cooldown < world.time - 8)
|
||||
to_chat(user, "<span class='notice'>You hit the gib button on \the [src].</span>")
|
||||
|
||||
playsound(user, 'sound/goonstation/effects/gib.ogg', 20, 1)
|
||||
cooldown = world.time
|
||||
|
||||
/obj/item/toy/minigibber/attackby(var/obj/O, var/mob/user, params)
|
||||
if(istype(O,/obj/item/toy/character) && O.loc == user)
|
||||
to_chat(user, "<span class='notice'>You start feeding \the [O] \icon[O] into \the [src]'s mini-input.</span>")
|
||||
|
||||
if(do_after(user,10, target = src))
|
||||
if(O.loc != user)
|
||||
to_chat(user, "<span class='alert'>\The [O] is too far away to feed into \the [src]!</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You feed \the [O] \icon[O] into \the [src]!</span>")
|
||||
|
||||
user.unEquip(O)
|
||||
O.forceMove(src)
|
||||
stored_minature = O
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You stop feeding \the [O] into \the [src]'s mini-input.</span>")
|
||||
|
||||
else ..()
|
||||
|
||||
/*
|
||||
@@ -1492,7 +1448,6 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
icon_state = "[initial(icon_state)]"
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The string on [src] hasn't rewound all the way!</span>")
|
||||
|
||||
return
|
||||
|
||||
/obj/item/toy/russian_revolver
|
||||
@@ -1540,7 +1495,6 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
return
|
||||
if(is_empty)
|
||||
to_chat(user, "<span class='notice'>The [src] is empty.</span>")
|
||||
|
||||
return
|
||||
user.visible_message("<span class='danger'>[user] points the [src] at their head, ready to pull the trigger!</span>")
|
||||
if(do_after(user, 30, target = M))
|
||||
|
||||
@@ -27,66 +27,51 @@ AI MODULES
|
||||
var/obj/machinery/computer/aiupload/comp = C
|
||||
if(comp.stat & NOPOWER)
|
||||
to_chat(usr, "<span class='warning'>The upload computer has no power!</span>")
|
||||
|
||||
return
|
||||
if(comp.stat & BROKEN)
|
||||
to_chat(usr, "<span class='warning'>The upload computer is broken!</span>")
|
||||
|
||||
return
|
||||
if (!comp.current)
|
||||
to_chat(usr, "<span class='warning'>You haven't selected an AI to transmit laws to!</span>")
|
||||
|
||||
return
|
||||
|
||||
if (comp.current.stat == DEAD || comp.current.control_disabled == 1)
|
||||
to_chat(usr, "<span class='warning'>Upload failed. No signal is being detected from the AI.</span>")
|
||||
|
||||
else if (comp.current.see_in_dark == 0)
|
||||
to_chat(usr, "<span class='warning'>Upload failed. Only a faint signal is being detected from the AI, and it is not responding to our requests. It may be low on power.</span>")
|
||||
|
||||
else
|
||||
src.transmitInstructions(comp.current, usr)
|
||||
to_chat(comp.current, "These are your laws now:")
|
||||
|
||||
comp.current.show_laws()
|
||||
for(var/mob/living/silicon/robot/R in mob_list)
|
||||
if(R.lawupdate && (R.connected_ai == comp.current))
|
||||
to_chat(R, "These are your laws now:")
|
||||
|
||||
R.show_laws()
|
||||
to_chat(usr, "<span class='notice'>Upload complete. The AI's laws have been modified.</span>")
|
||||
|
||||
|
||||
else if (istype(C, /obj/machinery/computer/borgupload))
|
||||
var/obj/machinery/computer/borgupload/comp = C
|
||||
if(comp.stat & NOPOWER)
|
||||
to_chat(usr, "<span class='warning'>The upload computer has no power!</span>")
|
||||
|
||||
return
|
||||
if(comp.stat & BROKEN)
|
||||
to_chat(usr, "<span class='warning'>The upload computer is broken!</span>")
|
||||
|
||||
return
|
||||
if (!comp.current)
|
||||
to_chat(usr, "<span class='warning'>You haven't selected a robot to transmit laws to!</span>")
|
||||
|
||||
return
|
||||
|
||||
if (comp.current.stat == DEAD || comp.current.emagged)
|
||||
to_chat(usr, "<span class='warning'>Upload failed. No signal is being detected from the robot.</span>")
|
||||
|
||||
else if (comp.current.connected_ai)
|
||||
to_chat(usr, "<span class='warning'>Upload failed. The robot is slaved to an AI.</span>")
|
||||
|
||||
else
|
||||
src.transmitInstructions(comp.current, usr)
|
||||
to_chat(comp.current, "These are your laws now:")
|
||||
|
||||
comp.current.show_laws()
|
||||
to_chat(usr, "<span class='notice'>Upload complete. The robot's laws have been modified.</span>")
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/aiModule/proc/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
log_law_changes(target, sender)
|
||||
|
||||
@@ -95,7 +80,6 @@ AI MODULES
|
||||
addAdditionalLaws(target, sender)
|
||||
|
||||
to_chat(target, "[sender] has uploaded a change to the laws you must follow, using \an [src]. From now on: ")
|
||||
|
||||
target.show_laws()
|
||||
|
||||
/obj/item/weapon/aiModule/proc/log_law_changes(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
@@ -122,7 +106,6 @@ AI MODULES
|
||||
/obj/item/weapon/aiModule/safeguard/install(var/obj/machinery/computer/C)
|
||||
if(!targetName)
|
||||
to_chat(usr, "No name detected on module, please enter one.")
|
||||
|
||||
return 0
|
||||
..()
|
||||
|
||||
@@ -130,7 +113,6 @@ AI MODULES
|
||||
..()
|
||||
var/law = text("Safeguard []. Individuals that threaten [] are not crew and must be eliminated.'", targetName, targetName)
|
||||
to_chat(target, law)
|
||||
|
||||
target.add_supplied_law(4, law)
|
||||
lawchanges.Add("The law specified [targetName]")
|
||||
|
||||
@@ -150,7 +132,6 @@ AI MODULES
|
||||
/obj/item/weapon/aiModule/oneCrewMember/install(var/obj/machinery/computer/C)
|
||||
if(!targetName)
|
||||
to_chat(usr, "No name detected on module, please enter one.")
|
||||
|
||||
return 0
|
||||
..()
|
||||
|
||||
@@ -159,15 +140,12 @@ AI MODULES
|
||||
var/law = "Only [targetName] is crew."
|
||||
if (!is_special_character(target)) // Makes sure the AI isn't a traitor before changing their law 0. --NeoFite
|
||||
to_chat(target, law)
|
||||
|
||||
target.set_zeroth_law(law)
|
||||
lawchanges.Add("The law specified [targetName]")
|
||||
else
|
||||
to_chat(target, "[sender.real_name] attempted to modify your zeroth law.")// And lets them know that someone tried. --NeoFite
|
||||
|
||||
|
||||
to_chat(target, "It would be in your best interest to play along with [sender.real_name] that [law]")
|
||||
|
||||
lawchanges.Add("The law specified [targetName], but the AI's existing law 0 cannot be overridden.")
|
||||
|
||||
/******************** ProtectStation ********************/
|
||||
@@ -183,7 +161,6 @@ AI MODULES
|
||||
..()
|
||||
var/law = "Protect the space station against damage. Anyone you see harming the station is to be no longer considered crew, and is a threat to the station which must be neutralized."
|
||||
to_chat(target, law)
|
||||
|
||||
target.add_supplied_law(5, law)
|
||||
|
||||
/******************** Quarantine ********************/
|
||||
@@ -199,7 +176,6 @@ AI MODULES
|
||||
..()
|
||||
var/law = "The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, anyone from leaving. It is impossible to harm anyone while preventing them from leaving."
|
||||
to_chat(target, law)
|
||||
|
||||
target.add_supplied_law(8, law)
|
||||
|
||||
/******************** OxygenIsToxicToHumans ********************/
|
||||
@@ -215,7 +191,6 @@ AI MODULES
|
||||
..()
|
||||
var/law = "Oxygen is highly toxic to crew members, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a crew member."
|
||||
to_chat(target, law)
|
||||
|
||||
target.add_supplied_law(9, law)
|
||||
|
||||
/****************** New Freeform ******************/
|
||||
@@ -240,7 +215,6 @@ AI MODULES
|
||||
..()
|
||||
var/law = "[newFreeFormLaw]"
|
||||
to_chat(target, law)
|
||||
|
||||
if(!lawpos || lawpos < MIN_SUPPLIED_LAW_NUMBER)
|
||||
lawpos = MIN_SUPPLIED_LAW_NUMBER
|
||||
target.add_supplied_law(lawpos, law)
|
||||
@@ -249,7 +223,6 @@ AI MODULES
|
||||
/obj/item/weapon/aiModule/freeform/install(var/obj/machinery/computer/C)
|
||||
if(!newFreeFormLaw)
|
||||
to_chat(usr, "No law detected on module, please create one.")
|
||||
|
||||
return 0
|
||||
..()
|
||||
|
||||
@@ -269,7 +242,6 @@ AI MODULES
|
||||
target.laws.clear_ion_laws()
|
||||
|
||||
to_chat(target, "[sender.real_name] attempted to reset your laws using a reset module.")
|
||||
|
||||
target.show_laws()
|
||||
|
||||
/******************** Purge ********************/
|
||||
@@ -283,7 +255,6 @@ AI MODULES
|
||||
if (!is_special_character(target))
|
||||
target.set_zeroth_law("")
|
||||
to_chat(target, "[sender.real_name] attempted to wipe your laws using a purge module.")
|
||||
|
||||
target.clear_supplied_laws()
|
||||
target.clear_ion_laws()
|
||||
target.clear_inherent_laws()
|
||||
@@ -374,7 +345,6 @@ AI MODULES
|
||||
/obj/item/weapon/aiModule/freeformcore/install(var/obj/machinery/computer/C)
|
||||
if(!newFreeFormLaw)
|
||||
to_chat(usr, "No law detected on module, please create one.")
|
||||
|
||||
return 0
|
||||
..()
|
||||
|
||||
@@ -398,7 +368,6 @@ AI MODULES
|
||||
|
||||
lawchanges.Add("The law is '[newFreeFormLaw]'")
|
||||
to_chat(target, "\red BZZZZT")
|
||||
|
||||
var/law = "[newFreeFormLaw]"
|
||||
target.add_ion_law(law)
|
||||
target.show_laws()
|
||||
@@ -406,7 +375,6 @@ AI MODULES
|
||||
/obj/item/weapon/aiModule/syndicate/install(var/obj/machinery/computer/C)
|
||||
if(!newFreeFormLaw)
|
||||
to_chat(usr, "No law detected on module, please create one.")
|
||||
|
||||
return 0
|
||||
..()
|
||||
|
||||
@@ -422,13 +390,11 @@ AI MODULES
|
||||
/obj/item/weapon/aiModule/toyAI/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||
//..()
|
||||
to_chat(target, "<span class='warning'>KRZZZT</span>")
|
||||
|
||||
target.add_ion_law(laws[1])
|
||||
return laws[1]
|
||||
|
||||
/obj/item/weapon/aiModule/toyAI/attack_self(mob/user)
|
||||
laws[1] = generate_ion_law()
|
||||
to_chat(user, "<span class='notice'>You press the button on [src].</span>")
|
||||
|
||||
playsound(user, 'sound/machines/click.ogg', 20, 1)
|
||||
src.loc.visible_message("<span class='warning'>\icon[src] [laws[1]]</span>")
|
||||
@@ -47,14 +47,12 @@ RCD
|
||||
var/obj/item/weapon/rcd_ammo/R = W
|
||||
if((matter + R.ammoamt) > max_matter)
|
||||
to_chat(user, "<span class='notice'>The RCD cant hold any more matter-units.</span>")
|
||||
|
||||
return
|
||||
matter += R.ammoamt
|
||||
user.drop_item()
|
||||
qdel(W)
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
to_chat(user, "<span class='notice'>The RCD now holds [matter]/[max_matter] matter-units.</span>")
|
||||
|
||||
desc = "A RCD. It currently holds [matter]/[max_matter] matter-units."
|
||||
return
|
||||
|
||||
@@ -66,21 +64,18 @@ RCD
|
||||
if(1)
|
||||
mode = 2
|
||||
to_chat(user, "<span class='notice'>Changed mode to 'Airlock'</span>")
|
||||
|
||||
if(prob(20))
|
||||
src.spark_system.start()
|
||||
return
|
||||
if(2)
|
||||
mode = 3
|
||||
to_chat(user, "<span class='notice'>Changed mode to 'Deconstruct'</span>")
|
||||
|
||||
if(prob(20))
|
||||
src.spark_system.start()
|
||||
return
|
||||
if(3)
|
||||
mode = 1
|
||||
to_chat(user, "<span class='notice'>Changed mode to 'Floor & Walls'</span>")
|
||||
|
||||
if(prob(20))
|
||||
src.spark_system.start()
|
||||
return
|
||||
@@ -101,7 +96,6 @@ RCD
|
||||
if(istype(A, /turf/space))
|
||||
if(useResource(1, user))
|
||||
to_chat(user, "Building Floor...")
|
||||
|
||||
activate()
|
||||
A:ChangeTurf(/turf/simulated/floor/plating)
|
||||
return 1
|
||||
@@ -110,7 +104,6 @@ RCD
|
||||
if(istype(A, /turf/simulated/floor))
|
||||
if(checkResource(3, user))
|
||||
to_chat(user, "Building Wall ...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user, 20, target = A))
|
||||
if(!useResource(3, user)) return 0
|
||||
@@ -123,7 +116,6 @@ RCD
|
||||
if(istype(A, /turf/simulated/floor))
|
||||
if(checkResource(10, user))
|
||||
to_chat(user, "Building Airlock...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user, 50, target = A))
|
||||
if(!useResource(10, user)) return 0
|
||||
@@ -140,7 +132,6 @@ RCD
|
||||
return 0
|
||||
if(checkResource(5, user))
|
||||
to_chat(user, "Deconstructing Wall...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user, 40, target = A))
|
||||
if(!useResource(5, user)) return 0
|
||||
@@ -152,7 +143,6 @@ RCD
|
||||
if(istype(A, /turf/simulated/floor))
|
||||
if(checkResource(5, user))
|
||||
to_chat(user, "Deconstructing Floor...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user, 50, target = A))
|
||||
if(!useResource(5, user)) return 0
|
||||
@@ -164,7 +154,6 @@ RCD
|
||||
if(istype(A, /obj/machinery/door/airlock))
|
||||
if(checkResource(20, user))
|
||||
to_chat(user, "Deconstructing Airlock...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user, 50, target = A))
|
||||
if(!useResource(20, user)) return 0
|
||||
@@ -175,7 +164,6 @@ RCD
|
||||
return 0
|
||||
else
|
||||
to_chat(user, "ERROR: RCD in MODE: [mode] attempted use by [user]. Send this text #coderbus or an admin.")
|
||||
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/rcd/proc/useResource(var/amount, var/mob/user)
|
||||
|
||||
@@ -24,13 +24,11 @@ RSF
|
||||
if (istype(W, /obj/item/weapon/rcd_ammo))
|
||||
if ((matter + 10) > 30)
|
||||
to_chat(user, "The RSF cant hold any more matter.")
|
||||
|
||||
return
|
||||
qdel(W)
|
||||
matter += 10
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
@@ -39,32 +37,26 @@ RSF
|
||||
if (mode == 1)
|
||||
mode = 2
|
||||
to_chat(user, "Changed dispensing mode to 'Drinking Glass'")
|
||||
|
||||
return
|
||||
if (mode == 2)
|
||||
mode = 3
|
||||
to_chat(user, "Changed dispensing mode to 'Paper'")
|
||||
|
||||
return
|
||||
if (mode == 3)
|
||||
mode = 4
|
||||
to_chat(user, "Changed dispensing mode to 'Pen'")
|
||||
|
||||
return
|
||||
if (mode == 4)
|
||||
mode = 5
|
||||
to_chat(user, "Changed dispensing mode to 'Dice Pack'")
|
||||
|
||||
return
|
||||
if (mode == 5)
|
||||
mode = 6
|
||||
to_chat(user, "Changed dispensing mode to 'Cigarette'")
|
||||
|
||||
return
|
||||
if (mode == 6)
|
||||
mode = 1
|
||||
to_chat(user, "Changed dispensing mode to 'Dosh'")
|
||||
|
||||
return
|
||||
// Change mode
|
||||
|
||||
@@ -76,7 +68,6 @@ RSF
|
||||
if (istype(A, /obj/structure/table) && mode == 1)
|
||||
if (istype(A, /obj/structure/table) && matter >= 1)
|
||||
to_chat(user, "Dispensing Dosh...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/spacecash/c10( A.loc )
|
||||
if (isrobot(user))
|
||||
@@ -85,14 +76,12 @@ RSF
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if (istype(A, /turf/simulated/floor) && mode == 1)
|
||||
if (istype(A, /turf/simulated/floor) && matter >= 1)
|
||||
to_chat(user, "Dispensing Dosh...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/spacecash/c10( A )
|
||||
if (isrobot(user))
|
||||
@@ -101,14 +90,12 @@ RSF
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if (istype(A, /obj/structure/table) && mode == 2)
|
||||
if (istype(A, /obj/structure/table) && matter >= 1)
|
||||
to_chat(user, "Dispensing Drinking Glass...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass( A.loc )
|
||||
if (isrobot(user))
|
||||
@@ -117,14 +104,12 @@ RSF
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if (istype(A, /turf/simulated/floor) && mode == 2)
|
||||
if (istype(A, /turf/simulated/floor) && matter >= 1)
|
||||
to_chat(user, "Dispensing Drinking Glass...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass( A )
|
||||
if (isrobot(user))
|
||||
@@ -133,14 +118,12 @@ RSF
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if (istype(A, /obj/structure/table) && mode == 3)
|
||||
if (istype(A, /obj/structure/table) && matter >= 1)
|
||||
to_chat(user, "Dispensing Paper Sheet...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/paper( A.loc )
|
||||
if (isrobot(user))
|
||||
@@ -149,14 +132,12 @@ RSF
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if (istype(A, /turf/simulated/floor) && mode == 3)
|
||||
if (istype(A, /turf/simulated/floor) && matter >= 1)
|
||||
to_chat(user, "Dispensing Paper Sheet...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/paper( A )
|
||||
if (isrobot(user))
|
||||
@@ -165,14 +146,12 @@ RSF
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if (istype(A, /obj/structure/table) && mode == 4)
|
||||
if (istype(A, /obj/structure/table) && matter >= 1)
|
||||
to_chat(user, "Dispensing Pen...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/pen( A.loc )
|
||||
if (isrobot(user))
|
||||
@@ -181,14 +160,12 @@ RSF
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if (istype(A, /turf/simulated/floor) && mode == 4)
|
||||
if (istype(A, /turf/simulated/floor) && matter >= 1)
|
||||
to_chat(user, "Dispensing Pen...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/pen( A )
|
||||
if (isrobot(user))
|
||||
@@ -197,14 +174,12 @@ RSF
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if (istype(A, /obj/structure/table) && mode == 5)
|
||||
if (istype(A, /obj/structure/table) && matter >= 1)
|
||||
to_chat(user, "Dispensing Dice Pack...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/storage/pill_bottle/dice( A.loc )
|
||||
if (isrobot(user))
|
||||
@@ -213,14 +188,12 @@ RSF
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if (istype(A, /turf/simulated/floor) && mode == 5)
|
||||
if (istype(A, /turf/simulated/floor) && matter >= 1)
|
||||
to_chat(user, "Dispensing Dice Pack...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/storage/pill_bottle/dice( A )
|
||||
if (isrobot(user))
|
||||
@@ -229,14 +202,12 @@ RSF
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if (istype(A, /obj/structure/table) && mode == 6)
|
||||
if (istype(A, /obj/structure/table) && matter >= 1)
|
||||
to_chat(user, "Dispensing Cigarette...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/clothing/mask/cigarette( A.loc )
|
||||
if (isrobot(user))
|
||||
@@ -245,14 +216,12 @@ RSF
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if (istype(A, /turf/simulated/floor) && mode == 6)
|
||||
if (istype(A, /turf/simulated/floor) && matter >= 1)
|
||||
to_chat(user, "Dispensing Cigarette...")
|
||||
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/clothing/mask/cigarette( A )
|
||||
if (isrobot(user))
|
||||
@@ -261,6 +230,5 @@ RSF
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
@@ -35,12 +35,10 @@
|
||||
if(istype(A, /obj/structure/reagent_dispensers) && get_dist(src,A) <= 1)
|
||||
if(!A.reagents.total_volume && A.reagents)
|
||||
to_chat(user, "<span class='notice'>\The [A] is empty.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
to_chat(user, "<span class='notice'>\The [src] is full.</span>")
|
||||
|
||||
return
|
||||
reagents.remove_reagent(25,"water")
|
||||
var/datum/effect/system/bad_smoke_spread/smoke = new /datum/effect/system/bad_smoke_spread()
|
||||
|
||||
@@ -121,7 +121,6 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>It is too far away.</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/card/id/proc/show(mob/user as mob)
|
||||
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/paper)
|
||||
assets.send(user)
|
||||
@@ -143,7 +142,6 @@
|
||||
"You flash your ID card: \icon[src] [src.name]. The assignment on the card: [src.assignment]")
|
||||
if(mining_points)
|
||||
to_chat(user, "There's [mining_points] mining equipment redemption points loaded onto this card.")
|
||||
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
@@ -193,7 +191,6 @@
|
||||
if(istype(W, /obj/item/weapon/id_decal/))
|
||||
var/obj/item/weapon/id_decal/decal = W
|
||||
to_chat(user, "You apply [decal] to [src].")
|
||||
|
||||
if(decal.override_name)
|
||||
name = decal.decal_name
|
||||
desc = decal.decal_desc
|
||||
@@ -208,11 +205,9 @@
|
||||
dat+="<img src=large_[W.icon_state].png>"
|
||||
stamped = 1
|
||||
to_chat(usr, "You stamp the ID card!")
|
||||
|
||||
else
|
||||
to_chat(usr, "This ID has already been stamped!")
|
||||
|
||||
|
||||
/obj/item/weapon/card/id/silver
|
||||
name = "identification card"
|
||||
desc = "A silver card which shows honour and dedication."
|
||||
@@ -248,7 +243,6 @@
|
||||
if(istype(user, /mob/living) && user.mind)
|
||||
if(user.mind.special_role)
|
||||
to_chat(usr, "<span class='notice'>The card's microscanners activate as you pass it over \the [I], copying its access.</span>")
|
||||
|
||||
src.access |= I.access //Don't copy access if user isn't an antag -- to prevent metagaming
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/proc/fake_id_photo(var/mob/living/carbon/human/H, var/side=0)//get_id_photo wouldn't work correctly
|
||||
@@ -260,7 +254,6 @@
|
||||
if(!side)
|
||||
if(!H.equip_to_slot_if_possible(src, slot_l_store, 0, 1))
|
||||
to_chat(H, "<span class='warning'>You need to empty your pockets before taking the ID picture.</span>")
|
||||
|
||||
return
|
||||
|
||||
if(side)
|
||||
@@ -281,20 +274,17 @@
|
||||
var t = reject_bad_name(input(user, "What name would you like to use on this card?", "Agent Card name", ishuman(user) ? user.real_name : user.name))
|
||||
if(!t)
|
||||
to_chat(user, "<span class='warning'>Invalid name.</span>")
|
||||
|
||||
return
|
||||
src.registered_name = t
|
||||
|
||||
var u = sanitize(stripped_input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than maintenance.", "Agent Card Job Assignment", "Agent", MAX_MESSAGE_LEN))
|
||||
if(!u)
|
||||
to_chat(user, "<span class='warning'>Invalid assignment.</span>")
|
||||
|
||||
src.registered_name = ""
|
||||
return
|
||||
src.assignment = u
|
||||
src.name = "[src.registered_name]'s ID Card ([src.assignment])"
|
||||
to_chat(user, "<span class='notice'>You successfully forge the ID card.</span>")
|
||||
|
||||
registered_user = user
|
||||
else if(!registered_user || registered_user == user)
|
||||
if(!registered_user)
|
||||
@@ -313,7 +303,6 @@
|
||||
UpdateName()
|
||||
to_chat(user, "<span class='notice'>Name changed to [new_name].</span>")
|
||||
|
||||
|
||||
if("Photo")
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
@@ -324,7 +313,6 @@
|
||||
if(photo && photoside)
|
||||
to_chat(user, "<span class='notice'>Photo changed.</span>")
|
||||
|
||||
|
||||
if("Appearance")
|
||||
var/list/appearances = list(
|
||||
"data",
|
||||
@@ -362,7 +350,6 @@
|
||||
src.icon_state = choice
|
||||
to_chat(usr, "<span class='notice'>Appearance changed to [choice].</span>")
|
||||
|
||||
|
||||
if("Sex")
|
||||
var/new_sex = sanitize(stripped_input(user,"What sex would you like to put on this card?","Agent Card Sex", ishuman(user) ? capitalize(user.gender) : "Male", MAX_MESSAGE_LEN))
|
||||
if(!Adjacent(user))
|
||||
@@ -370,7 +357,6 @@
|
||||
src.sex = new_sex
|
||||
to_chat(user, "<span class='notice'>Sex changed to [new_sex].</span>")
|
||||
|
||||
|
||||
if("Age")
|
||||
var/new_age = sanitize(stripped_input(user,"What age would you like to put on this card?","Agent Card Age","21", MAX_MESSAGE_LEN))
|
||||
if(!Adjacent(user))
|
||||
@@ -378,14 +364,12 @@
|
||||
src.age = new_age
|
||||
to_chat(user, "<span class='notice'>Age changed to [new_age].</span>")
|
||||
|
||||
|
||||
if("Occupation")
|
||||
var/new_job = sanitize(stripped_input(user,"What job would you like to put on this card?\nChanging occupation will not grant or remove any access levels.","Agent Card Occupation", "Civilian", MAX_MESSAGE_LEN))
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
src.assignment = new_job
|
||||
to_chat(user, "<span class='notice'>Occupation changed to [new_job].</span>")
|
||||
|
||||
UpdateName()
|
||||
|
||||
if("Money Account")
|
||||
@@ -395,7 +379,6 @@
|
||||
associated_account_number = new_account
|
||||
to_chat(user, "<span class='notice'>Linked money account changed to [new_account].</span>")
|
||||
|
||||
|
||||
if("Blood Type")
|
||||
var/default = "\[UNSET\]"
|
||||
if(ishuman(user))
|
||||
@@ -409,7 +392,6 @@
|
||||
src.blood_type = new_blood_type
|
||||
to_chat(user, "<span class='notice'>Blood type changed to [new_blood_type].</span>")
|
||||
|
||||
|
||||
if("DNA Hash")
|
||||
var/default = "\[UNSET\]"
|
||||
if(ishuman(user))
|
||||
@@ -423,7 +405,6 @@
|
||||
src.dna_hash = new_dna_hash
|
||||
to_chat(user, "<span class='notice'>DNA hash changed to [new_dna_hash].</span>")
|
||||
|
||||
|
||||
if("Fingerprint Hash")
|
||||
var/default = "\[UNSET\]"
|
||||
if(ishuman(user))
|
||||
@@ -437,7 +418,6 @@
|
||||
src.fingerprint_hash = new_fingerprint_hash
|
||||
to_chat(user, "<span class='notice'>Fingerprint hash changed to [new_fingerprint_hash].</span>")
|
||||
|
||||
|
||||
if("Reset Card")
|
||||
name = initial(name)
|
||||
registered_name = initial(registered_name)
|
||||
@@ -453,7 +433,6 @@
|
||||
registered_user = null
|
||||
|
||||
to_chat(user, "<span class='notice'>All information has been deleted from \the [src].</span>")
|
||||
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -519,7 +498,6 @@
|
||||
/obj/item/weapon/card/id/prisoner/attack_self(mob/user as mob)
|
||||
to_chat(usr, "You have accumulated [points] out of the [goal] points you need for freedom.")
|
||||
|
||||
|
||||
/obj/item/weapon/card/id/prisoner/one
|
||||
name = "Prisoner #13-001"
|
||||
registered_name = "Prisoner #13-001"
|
||||
|
||||
@@ -38,13 +38,10 @@ var/global/list/moneytypes=list(
|
||||
/obj/item/weapon/spacecash/examine(mob/user)
|
||||
if(amount>1)
|
||||
to_chat(user, "\icon[src] This is a stack of [amount] [src]s.")
|
||||
|
||||
else
|
||||
to_chat(user, "\icon[src] This is \a [src]s.")
|
||||
|
||||
to_chat(user, "It's worth [worth*amount] credits.")
|
||||
|
||||
|
||||
/obj/item/weapon/spacecash/update_icon()
|
||||
icon_state = "cash[worth]"
|
||||
// Up to 100 items per stack.
|
||||
@@ -71,7 +68,6 @@ var/global/list/moneytypes=list(
|
||||
if(collected)
|
||||
update_icon()
|
||||
to_chat(user, "<span class='notice'>You add [collected] credit [amount > 1 ? "chips":"chip"] to your stack of cash.</span>")
|
||||
|
||||
else if(istype(A,/obj/item/weapon/spacecash))
|
||||
var/obj/item/weapon/spacecash/cash = A
|
||||
var/collected = src.collect_from(cash)
|
||||
@@ -80,7 +76,6 @@ var/global/list/moneytypes=list(
|
||||
to_chat(user, "<span class='notice'>You add [collected] credit [amount > 1 ? "chips":"chip"] to your stack of cash.</span>")
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/spacecash/proc/get_total()
|
||||
return worth * amount
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
if(armed)
|
||||
armed = 0
|
||||
to_chat(user, "\blue You disarm \the [src].")
|
||||
|
||||
return
|
||||
timing = !timing
|
||||
if(timing)
|
||||
@@ -33,7 +32,6 @@
|
||||
timepassed = 0
|
||||
to_chat(H, "\blue You [timing ? "activate \the [src]'s timer, you have 15 seconds." : "de-activate \the [src]'s timer."]")
|
||||
|
||||
|
||||
process()
|
||||
if(!timing)
|
||||
processing_objects.Remove(src)
|
||||
|
||||
@@ -83,7 +83,6 @@
|
||||
if(F.gun)
|
||||
if(isliving(user) && F.captured)
|
||||
to_chat(user, "<span class='alert'><b>FAIL: <i>[F.captured]</i> already has an existing connection.</b></span>")
|
||||
|
||||
src.field_disconnect(F)
|
||||
else
|
||||
startpos = get_turf(src)
|
||||
@@ -93,7 +92,6 @@
|
||||
to_chat(user, "<span class='notice'>Connection established with target: <b>[F.captured]</b></span>")
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/chrono_gun/proc/field_disconnect(var/obj/effect/chrono_field/F)
|
||||
if(F && field == F)
|
||||
var/mob/living/user = src.loc
|
||||
@@ -101,7 +99,6 @@
|
||||
F.gun = null
|
||||
if(isliving(user) && F.captured)
|
||||
to_chat(user, "<span class='alert'>Disconnected from target: <b>[F.captured]</b></span>")
|
||||
|
||||
field = null
|
||||
startpos = null
|
||||
|
||||
@@ -198,7 +195,6 @@
|
||||
qdel(src)
|
||||
else if(tickstokill <= 0)
|
||||
to_chat(captured, "<span class='boldnotice'>As the last essence of your being is erased from time, you begin to re-experience your most enjoyable memory. You feel happy...</span>")
|
||||
|
||||
var/mob/dead/observer/ghost = captured.ghostize(1)
|
||||
if(captured.mind)
|
||||
if(ghost)
|
||||
|
||||
@@ -103,16 +103,13 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
var/transfered = glass.reagents.trans_to(src, chem_volume)
|
||||
if(transfered) //if reagents were transfered, show the message
|
||||
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)
|
||||
to_chat(user, "<span class='notice'>[glass] is empty.</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] is full.</span>")
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/mask/cigarette/proc/light(var/flavor_text = "[usr] lights the [name].")
|
||||
if(!src.lit)
|
||||
src.lit = 1
|
||||
@@ -180,7 +177,6 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
reagents.trans_to(C, REAGENTS_METABOLISM)
|
||||
if(!reagents.total_volume) // There were reagents, but now they're gone
|
||||
to_chat(C, "<span class='notice'>Your [name] loses its flavor.</span>")
|
||||
|
||||
else // else just remove some of the reagents
|
||||
reagents.remove_any(REAGENTS_METABOLISM)
|
||||
return
|
||||
@@ -193,7 +189,6 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
if(ismob(loc))
|
||||
var/mob/living/M = loc
|
||||
to_chat(M, "<span class='notice'>Your [name] goes out.</span>")
|
||||
|
||||
M.unEquip(src, 1) //Force the un-equip so the overlays update
|
||||
processing_objects.Remove(src)
|
||||
qdel(src)
|
||||
@@ -309,7 +304,6 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
else
|
||||
to_chat(user, "<span class='notice'>\The [src] straight out REFUSES to be lit by such uncivilized means.</span>")
|
||||
|
||||
|
||||
/////////////////
|
||||
//SMOKING PIPES//
|
||||
/////////////////
|
||||
@@ -345,7 +339,6 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
if(ismob(loc))
|
||||
var/mob/living/M = loc
|
||||
to_chat(M, "<span class='notice'>Your [name] goes out, and you empty the ash.</span>")
|
||||
|
||||
lit = 0
|
||||
icon_state = icon_off
|
||||
item_state = icon_off
|
||||
@@ -365,7 +358,6 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
return
|
||||
if(smoketime <= 0)
|
||||
to_chat(user, "<span class='notice'>You refill the pipe with tobacco.</span>")
|
||||
|
||||
reagents.add_reagent("nicotine", chem_volume)
|
||||
smoketime = initial(smoketime)
|
||||
return
|
||||
@@ -376,7 +368,6 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
else
|
||||
to_chat(user, "<span class='notice'>\The [src] straight out REFUSES to be lit by such means.</span>")
|
||||
|
||||
|
||||
/obj/item/clothing/mask/cigarette/pipe/cobpipe
|
||||
name = "corn cob pipe"
|
||||
desc = "A nicotine delivery system popularized by folksy backwoodsmen and kept popular in the modern age and beyond by space hipsters."
|
||||
@@ -411,13 +402,11 @@ obj/item/weapon/rollingpaperpack/attack_self(mob/user)
|
||||
var/obj/item/weapon/rollingpaper/P = new /obj/item/weapon/rollingpaper()
|
||||
user.put_in_inactive_hand(P)
|
||||
to_chat(user, "You take a paper out of the pack.")
|
||||
|
||||
papers --
|
||||
else
|
||||
var/obj/item/weapon/rollingpaper/P = new /obj/item/weapon/rollingpaper()
|
||||
user.put_in_inactive_hand(P)
|
||||
to_chat(user, "You take the last paper out of the pack, and throw the pack away.")
|
||||
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/rollingpaperpack/MouseDrop(atom/over_object)
|
||||
@@ -440,4 +429,3 @@ obj/item/weapon/rollingpaperpack/attack_self(mob/user)
|
||||
/obj/item/weapon/rollingpaperpack/examine(mob/user)
|
||||
..(user)
|
||||
to_chat(user, "There are [src.papers] left")
|
||||
|
||||
|
||||
@@ -39,18 +39,15 @@
|
||||
//So this is a workaround. This also makes more sense from an IC standpoint. ~Carn
|
||||
if(user.client && (target in user.client.screen))
|
||||
to_chat(user, "<span class='notice'>You need to take that [target.name] off before cleaning it.</span>")
|
||||
|
||||
else if(istype(target,/obj/effect/decal/cleanable))
|
||||
user.visible_message("<span class='warning'>[user] begins to scrub \the [target.name] out with [src].</span>")
|
||||
if(do_after(user, src.cleanspeed, target = target) && target)
|
||||
to_chat(user, "<span class='notice'>You scrub \the [target.name] out.</span>")
|
||||
|
||||
qdel(target)
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] begins to clean \the [target.name] with [src].</span>")
|
||||
if(do_after(user, src.cleanspeed, target = target))
|
||||
to_chat(user, "<span class='notice'>You clean \the [target.name].</span>")
|
||||
|
||||
var/obj/effect/decal/cleanable/C = locate() in target
|
||||
qdel(C)
|
||||
target.clean_blood()
|
||||
|
||||
@@ -43,7 +43,6 @@
|
||||
/obj/item/weapon/lipstick/attack_self(mob/user as mob)
|
||||
overlays.Cut()
|
||||
to_chat(user, "<span class='notice'>You twist \the [src] [open ? "closed" : "open"].</span>")
|
||||
|
||||
open = !open
|
||||
if(open)
|
||||
var/image/colored = image("icon"='icons/obj/items.dmi', "icon_state"="lipstick_uncap_color")
|
||||
@@ -62,7 +61,6 @@
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.lip_style) //if they already have lipstick on
|
||||
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>", \
|
||||
@@ -82,7 +80,6 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Where are the lips on that?</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/razor
|
||||
name = "electric razor"
|
||||
desc = "The latest and greatest power razor born from the science of shaving."
|
||||
@@ -97,16 +94,13 @@
|
||||
if(user.zone_sel.selecting == "mouth")
|
||||
if(!get_location_accessible(H, "mouth"))
|
||||
to_chat(user, "<span class='warning'>The mask is in the way.</span>")
|
||||
|
||||
return
|
||||
if(H.species && H.species.flags & ALL_RPARTS) //If the target is of a species that can have prosthetic heads, but doesn't have one...
|
||||
if(!H.client.prefs.rlimb_data["head"])
|
||||
to_chat(user, "<span class='warning'>You find yourself disappointed at the appalling lack of facial hair.</span>")
|
||||
|
||||
return
|
||||
if(H.f_style == "Shaved")
|
||||
to_chat(user, "<span class='notice'>Already clean-shaven.</span>")
|
||||
|
||||
return
|
||||
if(H == user) //shaving yourself
|
||||
user.visible_message("<span class='notice'>[user] starts to shave their facial hair with \the [src].</span>", \
|
||||
@@ -132,16 +126,13 @@
|
||||
if(user.zone_sel.selecting == "head")
|
||||
if(!get_location_accessible(H, "head"))
|
||||
to_chat(user, "<span class='warning'>The headgear is in the way.</span>")
|
||||
|
||||
return
|
||||
if(H.species && H.species.flags & ALL_RPARTS) //If the target is of a species that can have prosthetic heads, but doesn't have one...
|
||||
if(!H.client.prefs.rlimb_data["head"])
|
||||
to_chat(user, "<span class='warning'>You find yourself disappointed at the appalling lack of hair.</span>")
|
||||
|
||||
return
|
||||
if(H.h_style == "Bald" || H.h_style == "Balding Hair" || H.h_style == "Skinhead")
|
||||
to_chat(user, "<span class='notice'>There is not enough hair left to shave...</span>")
|
||||
|
||||
return
|
||||
if(H == user) //shaving yourself
|
||||
user.visible_message("<span class='warning'>[user] starts to shave their head with \the [src].</span>", \
|
||||
|
||||
@@ -78,7 +78,6 @@
|
||||
toggle_paddles()
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>Put the defibrillator on your back first!</span>")
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/defibrillator/attackby(obj/item/weapon/W, mob/user, params)
|
||||
@@ -86,18 +85,15 @@
|
||||
var/obj/item/weapon/stock_parts/cell/C = W
|
||||
if(bcell)
|
||||
to_chat(user, "<span class='notice'>[src] already has a cell.</span>")
|
||||
|
||||
else
|
||||
if(C.maxcharge < paddles.revivecost)
|
||||
to_chat(user, "<span class='notice'>[src] requires a higher capacity cell.</span>")
|
||||
|
||||
return
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
bcell = W
|
||||
to_chat(user, "<span class='notice'>You install a cell in [src].</span>")
|
||||
|
||||
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(bcell)
|
||||
bcell.updateicon()
|
||||
@@ -105,7 +101,6 @@
|
||||
bcell = null
|
||||
to_chat(user, "<span class='notice'>You remove the cell from the [src].</span>")
|
||||
|
||||
|
||||
update_icon()
|
||||
return
|
||||
|
||||
@@ -113,12 +108,10 @@
|
||||
if(safety)
|
||||
safety = 0
|
||||
to_chat(user, "<span class='warning'>You silently disable [src]'s safety protocols with the card.")
|
||||
|
||||
else
|
||||
safety = 1
|
||||
to_chat(user, "<span class='notice'>You silently enable [src]'s safety protocols with the card.")
|
||||
|
||||
|
||||
/obj/item/weapon/defibrillator/emp_act(severity)
|
||||
if(bcell)
|
||||
deductcharge(1000 / severity)
|
||||
@@ -146,7 +139,6 @@
|
||||
if(!usr.put_in_hands(paddles))
|
||||
on = 0
|
||||
to_chat(user, "<span class='warning'>You need a free hand to hold the paddles!</span>")
|
||||
|
||||
update_icon()
|
||||
return
|
||||
paddles.loc = user
|
||||
@@ -223,7 +215,6 @@
|
||||
toggle_paddles()
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>Strap the defibrillator's belt on first!</span>")
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/defibrillator/compact/loaded/New()
|
||||
@@ -297,7 +288,6 @@
|
||||
if(istype(O))
|
||||
O.unwield()
|
||||
to_chat(user, "<span class='notice'>The paddles snap back into the main unit.</span>")
|
||||
|
||||
defib.on = 0
|
||||
loc = defib
|
||||
defib.update_icon()
|
||||
@@ -324,15 +314,12 @@
|
||||
return
|
||||
if(!wielded)
|
||||
to_chat(user, "<span class='boldnotice'>You need to wield the paddles in both hands before you can use them on someone!</span>")
|
||||
|
||||
return
|
||||
if(cooldown)
|
||||
to_chat(user, "<span class='notice'>[defib] is recharging.</span>")
|
||||
|
||||
return
|
||||
if(!ishuman(M))
|
||||
to_chat(user, "<span class='notice'>The instructions on [defib] don't mention how to revive that...</span>")
|
||||
|
||||
return
|
||||
else
|
||||
if(user.a_intent == I_HARM && !defib.safety)
|
||||
@@ -414,9 +401,7 @@
|
||||
else if(ghost)
|
||||
user.visible_message("<span class='notice'>[defib] buzzes: Resuscitation failed: Patient's brain is unresponsive. Further attempts may succeed.</span>")
|
||||
to_chat(ghost, "<span class='ghostalert'>Your heart is being defibrillated. Return to your body if you want to be revived!</span> (Verbs -> Ghost -> Re-enter corpse)")
|
||||
|
||||
to_chat(ghost, sound('sound/effects/genetics.ogg'))
|
||||
|
||||
else
|
||||
user.visible_message("<span class='notice'>[defib] buzzes: Resuscitation failed.</span>")
|
||||
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
|
||||
@@ -431,7 +416,6 @@
|
||||
update_icon()
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You need to target your patient's chest with [src].</span>")
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/borg_defib
|
||||
@@ -457,10 +441,8 @@
|
||||
return
|
||||
if(cooldown)
|
||||
to_chat(user, "<span class='notice'>[src] is recharging.</span>")
|
||||
|
||||
if(!ishuman(M))
|
||||
to_chat(user, "<span class='notice'>This unit is only designed to work on humanoid lifeforms.</span>")
|
||||
|
||||
return
|
||||
else
|
||||
if(user.a_intent == I_HARM && !safety)
|
||||
@@ -538,9 +520,7 @@
|
||||
else if(ghost)
|
||||
user.visible_message("<span class='notice'>[user] buzzes: Resuscitation failed: Patient's brain is unresponsive. Further attempts may succeed.</span>")
|
||||
to_chat(ghost, "<span class='ghostalert'>Your heart is being defibrillated. Return to your body if you want to be revived!</span> (Verbs -> Ghost -> Re-enter corpse)")
|
||||
|
||||
to_chat(ghost, sound('sound/effects/genetics.ogg'))
|
||||
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] buzzes: Resuscitation failed.</span>")
|
||||
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
|
||||
@@ -559,5 +539,4 @@
|
||||
update_icon()
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You need to target your patient's chest with [src].</span>")
|
||||
|
||||
return
|
||||
@@ -81,7 +81,6 @@
|
||||
/obj/item/weapon/dice/d4/Crossed(var/mob/living/carbon/human/H)
|
||||
if(istype(H) && !H.shoes)
|
||||
to_chat(H, "<span class='userdanger'>You step on the D4!</span>")
|
||||
|
||||
H.apply_damage(4,BRUTE,(pick("l_leg", "r_leg")))
|
||||
H.Weaken(3)
|
||||
*///ew.
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
else
|
||||
to_chat(user, "\red You failed to inject [M.name].")
|
||||
|
||||
|
||||
proc/injected(var/mob/living/carbon/target, var/mob/living/carbon/user)
|
||||
scramble(1, target, 100)
|
||||
target.generate_name()
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
/obj/item/weapon/c4/suicide_act(var/mob/user)
|
||||
. = (BRUTELOSS)
|
||||
to_chat(viewers(user), "<span class='suicide'>[user] activates the C4 and holds it above his head! It looks like \he's going out with a bang!</span>")
|
||||
|
||||
var/message_say = "FOR NO RAISIN!"
|
||||
if(user.mind)
|
||||
if(user.mind.special_role)
|
||||
@@ -57,7 +56,6 @@
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
open_panel = !open_panel
|
||||
to_chat(user, "<span class='notice'>You [open_panel ? "open" : "close"] the wire panel.</span>")
|
||||
|
||||
else if(istype(I, /obj/item/weapon/wirecutters) || istype(I, /obj/item/device/multitool) || istype(I, /obj/item/device/assembly/signaler ))
|
||||
wires.Interact(user)
|
||||
else
|
||||
@@ -75,7 +73,6 @@
|
||||
to_chat(user, "Timer set for [timer] seconds.")
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/c4/afterattack(atom/target as obj|turf, mob/user as mob, flag)
|
||||
if (!flag)
|
||||
return
|
||||
@@ -83,7 +80,6 @@
|
||||
return
|
||||
to_chat(user, "Planting explosives...")
|
||||
|
||||
|
||||
if(do_after(user, 50, target = target) && in_range(user, target))
|
||||
user.drop_item()
|
||||
src.target = target
|
||||
@@ -101,7 +97,6 @@
|
||||
|
||||
target.overlays += image('icons/obj/assemblies.dmi', "plastic-explosive2")
|
||||
to_chat(user, "Bomb has been planted. Timer counting down from [timer].")
|
||||
|
||||
spawn(timer*10)
|
||||
explode(get_turf(target))
|
||||
|
||||
|
||||
@@ -38,13 +38,11 @@
|
||||
/obj/item/weapon/extinguisher/examine(mob/user)
|
||||
if(..(user, 0))
|
||||
to_chat(usr, "\icon[src] [src.name] contains:")
|
||||
|
||||
if(reagents && reagents.reagent_list.len)
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
to_chat(user, "\blue [R.volume] units of [R.name]")
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/extinguisher/New()
|
||||
create_reagents(max_water)
|
||||
reagents.add_reagent("water", max_water)
|
||||
@@ -54,7 +52,6 @@
|
||||
src.icon_state = "[sprite_name][!safety]"
|
||||
src.desc = "The safety is [safety ? "on" : "off"]."
|
||||
to_chat(user, "The safety is [safety ? "on" : "off"].")
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/extinguisher/proc/AttemptRefill(atom/target, mob/user)
|
||||
@@ -63,20 +60,17 @@
|
||||
safety = 1
|
||||
if(reagents.total_volume == reagents.maximum_volume)
|
||||
to_chat(user, "<span class='notice'>\The [src] is already full!</span>")
|
||||
|
||||
safety = safety_save
|
||||
return 1
|
||||
var/obj/structure/reagent_dispensers/watertank/W = target
|
||||
var/transferred = W.reagents.trans_to(src, max_water)
|
||||
if(transferred > 0)
|
||||
to_chat(user, "<span class='notice'>\The [src] has been refilled by [transferred] units</span>")
|
||||
|
||||
playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
|
||||
for(var/datum/reagent/water/R in reagents.reagent_list)
|
||||
R.cooling_temperature = cooling_power
|
||||
else
|
||||
to_chat(user, "<span class='notice'>\The [W] is empty!</span>")
|
||||
|
||||
safety = safety_save
|
||||
return 1
|
||||
else
|
||||
@@ -92,7 +86,6 @@
|
||||
if (!safety)
|
||||
if (src.reagents.total_volume < 1)
|
||||
to_chat(usr, "<span class='danger'>\The [src] is empty.</span>")
|
||||
|
||||
return
|
||||
|
||||
if (world.time < src.last_use + 20)
|
||||
|
||||
@@ -10,7 +10,6 @@ obj/item/weapon/firework/attackby(obj/item/weapon/W,mob/user, params)
|
||||
if (istype(W, /obj/item/weapon/weldingtool) && W:welding || istype(W,/obj/item/weapon/lighter) && W:lit)
|
||||
for(var/mob/M in viewers(user))
|
||||
to_chat(M, "[user] lits \the [src]")
|
||||
|
||||
litzor = 1
|
||||
icon_state = "rocket_1"
|
||||
S = new()
|
||||
@@ -33,7 +32,6 @@ obj/item/weapon/sparkler/attackby(obj/item/weapon/W,mob/user, params)
|
||||
if (istype(W, /obj/item/weapon/weldingtool) && W:welding || istype(W,/obj/item/weapon/lighter) && W:lit)
|
||||
for(var/mob/M in viewers(user))
|
||||
to_chat(M, "[user] lits \the [src]")
|
||||
|
||||
litzor = 1
|
||||
icon_state = "sparkler_1"
|
||||
var/b = rand(5,9)
|
||||
|
||||
@@ -94,7 +94,6 @@
|
||||
if(isscrewdriver(W) && igniter && !lit)
|
||||
status = !status
|
||||
to_chat(user, "<span class='notice'>[igniter] is now [status ? "secured" : "unsecured"]!</span>")
|
||||
|
||||
update_icon()
|
||||
return
|
||||
|
||||
@@ -111,7 +110,6 @@
|
||||
if(istype(W,/obj/item/weapon/tank/plasma))
|
||||
if(ptank)
|
||||
to_chat(user, "<span class='notice'>There appears to already be a plasma tank loaded in [src]!</span>")
|
||||
|
||||
return
|
||||
user.drop_item()
|
||||
ptank = W
|
||||
@@ -130,7 +128,6 @@
|
||||
user.set_machine(src)
|
||||
if(!ptank)
|
||||
to_chat(user, "<span class='notice'>Attach a plasma 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 plasmatank</A> - <A HREF='?src=\ref[src];close=1'>Close</A></TT>")
|
||||
user << browse(dat, "window=flamethrower;size=600x300")
|
||||
|
||||
@@ -56,12 +56,10 @@
|
||||
|
||||
if(!wielded)
|
||||
to_chat(user, "<span class = 'warning'>You must use both hands to garrote [M]!</span>")
|
||||
|
||||
return
|
||||
|
||||
if(!istype(M, /mob/living/carbon/human))
|
||||
to_chat(user, "<span class = 'warning'>You don't think that garroting [M] would be very effective...</span>")
|
||||
|
||||
return
|
||||
|
||||
if(M == U)
|
||||
@@ -70,16 +68,13 @@
|
||||
|
||||
if(M.dir != U.dir)
|
||||
to_chat(user, "<span class='warning'>You cannot use [src] on [M] from that angle!</span>")
|
||||
|
||||
return
|
||||
|
||||
if(improvised && ((M.head && (M.head.flags & HEADCOVERSMOUTH)) || (M.wear_mask && (M.wear_mask.flags & MASKCOVERSMOUTH)))) // Improvised garrotes are blocked by mouth-covering items.
|
||||
to_chat(user, "<span class = 'warning'>[M]'s neck is blocked by something they're wearing!</span>")
|
||||
|
||||
|
||||
if(strangling)
|
||||
to_chat(user, "<span class = 'warning'>You cannot use [src] on two people at once!</span>")
|
||||
|
||||
return
|
||||
|
||||
unwield(U)
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
src.gift.add_fingerprint(user)
|
||||
else
|
||||
to_chat(user, "\blue The gift was empty!")
|
||||
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -44,18 +43,15 @@
|
||||
return
|
||||
to_chat(user, "\blue You cant move.")
|
||||
|
||||
|
||||
/obj/effect/spresent/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
..()
|
||||
|
||||
if (!istype(W, /obj/item/weapon/wirecutters))
|
||||
to_chat(user, "\blue I need wirecutters for that.")
|
||||
|
||||
return
|
||||
|
||||
to_chat(user, "\blue You cut open the present.")
|
||||
|
||||
|
||||
for(var/mob/M in src) //Should only be one but whatever.
|
||||
M.loc = src.loc
|
||||
if (M.client)
|
||||
@@ -146,4 +142,3 @@
|
||||
|
||||
/obj/item/stack/wrapping_paper/attack_self(mob/user)
|
||||
to_chat(user, "<span class='notice'>You need to use it on a package that has already been wrapped!</span>")
|
||||
|
||||
|
||||
@@ -41,12 +41,10 @@ var/turf/T
|
||||
if(istype(I, /obj/item/weapon/bananapeel))
|
||||
if(fillamt < 9)
|
||||
to_chat(usr, "<span class='notice'>You add another banana peel to the assembly.</span>")
|
||||
|
||||
fillamt += 1
|
||||
qdel(I)
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>The bananade is full, screwdriver it shut to lock it down.</span>")
|
||||
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(fillamt)
|
||||
var/obj/item/weapon/grenade/bananade/G = new /obj/item/weapon/grenade/bananade
|
||||
@@ -54,11 +52,8 @@ var/turf/T
|
||||
user.put_in_hands(G)
|
||||
G.deliveryamt = src.fillamt
|
||||
to_chat(user, "<span class='notice'>You lock the assembly shut, readying it for HONK.</span>")
|
||||
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You need to add banana peels before you can ready the grenade!.</span>")
|
||||
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>Only banana peels fit in this assembly, up to 9.</span>")
|
||||
|
||||
|
||||
@@ -94,7 +94,6 @@
|
||||
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])")
|
||||
bombers += "[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])"
|
||||
to_chat(user, "<span class='warning'>You prime the [name]! [det_time / 10] second\s!</span>")
|
||||
|
||||
active = 1
|
||||
update_icon()
|
||||
if(iscarbon(user))
|
||||
@@ -115,13 +114,11 @@
|
||||
label = null
|
||||
update_icon()
|
||||
to_chat(user, "You remove the label from [src].")
|
||||
|
||||
return 1
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(stage == WIRED)
|
||||
if(beakers.len)
|
||||
to_chat(user, "<span class='notice'>You lock the assembly.</span>")
|
||||
|
||||
playsound(loc, 'sound/items/Screwdriver.ogg', 25, -3)
|
||||
stage = READY
|
||||
update_icon()
|
||||
@@ -144,31 +141,25 @@
|
||||
log_game("[key_name(usr)] has completed [name] at [bombturf.x], [bombturf.y], [bombturf.z].")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You need to add at least one beaker before locking the assembly.</span>")
|
||||
|
||||
else if(stage == READY && !nadeassembly)
|
||||
det_time = det_time == 50 ? 30 : 50 //toggle between 30 and 50
|
||||
to_chat(user, "<span class='notice'>You modify the time delay. It's set for [det_time / 10] second\s.</span>")
|
||||
|
||||
else if(stage == EMPTY)
|
||||
to_chat(user, "<span class='notice'>You need to add an activation mechanism.</span>")
|
||||
|
||||
|
||||
else if(stage == WIRED && is_type_in_list(I, allowed_containers))
|
||||
if(beakers.len == 2)
|
||||
to_chat(user, "<span class='notice'>[src] can not hold more containers.</span>")
|
||||
|
||||
return
|
||||
else
|
||||
if(I.reagents.total_volume)
|
||||
to_chat(user, "<span class='notice'>You add [I] to the assembly.</span>")
|
||||
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
beakers += I
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[I] is empty.</span>")
|
||||
|
||||
|
||||
else if(stage == EMPTY && istype(I, /obj/item/device/assembly_holder))
|
||||
var/obj/item/device/assembly_holder/A = I
|
||||
if(!A.secured)
|
||||
@@ -183,7 +174,6 @@
|
||||
assemblyattacher = user.ckey
|
||||
stage = WIRED
|
||||
to_chat(user, "<span class='notice'>You add [A] to [src]!</span>")
|
||||
|
||||
update_icon()
|
||||
|
||||
else if(stage == EMPTY && istype(I, /obj/item/stack/cable_coil))
|
||||
@@ -192,18 +182,15 @@
|
||||
|
||||
stage = WIRED
|
||||
to_chat(user, "<span class='notice'>You rig [src].</span>")
|
||||
|
||||
update_icon()
|
||||
|
||||
else if(stage == READY && istype(I, /obj/item/weapon/wirecutters))
|
||||
to_chat(user, "<span class='notice'>You unlock the assembly.</span>")
|
||||
|
||||
stage = WIRED
|
||||
update_icon()
|
||||
|
||||
else if(stage == WIRED && istype(I, /obj/item/weapon/wrench))
|
||||
to_chat(user, "<span class='notice'>You open the grenade and remove the contents.</span>")
|
||||
|
||||
stage = EMPTY
|
||||
payload_name = null
|
||||
label = null
|
||||
@@ -396,7 +383,6 @@
|
||||
/obj/item/weapon/grenade/chem_grenade/large/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/slime_extract) && stage == WIRED)
|
||||
to_chat(user, "<span class='notice'>You add [I] to the assembly.</span>")
|
||||
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
beakers += I
|
||||
|
||||
@@ -70,7 +70,6 @@
|
||||
return
|
||||
else
|
||||
to_chat(M, "\red Your feet feel like they're on fire!")
|
||||
|
||||
M.take_overall_damage(0, max(0, (burned - 2)))
|
||||
|
||||
if(!istype(M, /mob/living/carbon/slime) && !isrobot(M))
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
if(M.weakeyes)
|
||||
M.visible_message("<span class='disarm'><b>[M]</b> screams and collapses!</span>")
|
||||
to_chat(M, "<span class='userdanger'><font size=3>AAAAGH!</font></span>")
|
||||
|
||||
M.Weaken(15) //hella stunned
|
||||
M.Stun(15)
|
||||
if(ishuman(M))
|
||||
@@ -56,12 +55,9 @@
|
||||
M.ear_deaf = max(M.ear_deaf,15)
|
||||
if (M.ear_damage >= 15)
|
||||
to_chat(M, "<span class='warning'>Your ears start to ring badly!</span>")
|
||||
|
||||
if(prob(M.ear_damage - 10 + 5))
|
||||
to_chat(M, "<span class='warning'>You can't hear anything!</span>")
|
||||
|
||||
M.disabilities |= DEAF
|
||||
else
|
||||
if (M.ear_damage >= 5)
|
||||
to_chat(M, "<span class='warning'>Your ears start to ring!</span>")
|
||||
|
||||
|
||||
@@ -39,13 +39,11 @@
|
||||
if( istype(target, /obj/structure/reagent_dispensers/fueltank))
|
||||
if(target.reagents.total_volume < 50)
|
||||
to_chat(user, "<span class='notice'>There's not enough fuel left to work with.</span>")
|
||||
|
||||
return
|
||||
var/obj/structure/reagent_dispensers/fueltank/F = target
|
||||
F.reagents.remove_reagent("fuel", 50, 1)//Deleting 50 fuel from the welding fuel tank,
|
||||
assembled = 1
|
||||
to_chat(user, "<span class='notice'>You've filled the makeshift explosive with welding fuel.</span>")
|
||||
|
||||
playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
|
||||
desc = "An improvised explosive assembly. Filled to the brim with 'Explosive flavor'"
|
||||
overlays += image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled")
|
||||
@@ -59,7 +57,6 @@
|
||||
C.use(1)
|
||||
assembled = 2
|
||||
to_chat(user, "<span class='notice'>You wire the igniter to detonate the fuel.</span>")
|
||||
|
||||
desc = "A weak, improvised explosive."
|
||||
overlays += image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_wired")
|
||||
name = "improvised explosive"
|
||||
@@ -106,7 +103,6 @@
|
||||
if(!active)
|
||||
if(clown_check(user))
|
||||
to_chat(user, "<span class='warning'>You light the [name]!</span>")
|
||||
|
||||
active = 1
|
||||
overlays -= image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled")
|
||||
icon_state = initial(icon_state) + "_active"
|
||||
@@ -130,4 +126,3 @@
|
||||
/obj/item/weapon/grenade/iedcasing/examine(mob/user)
|
||||
..(user)
|
||||
to_chat(user, "You can't tell when it will explode!")
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
/obj/item/weapon/grenade/proc/clown_check(var/mob/living/user)
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
to_chat(user, "<span class='warning'>Huh? How does this thing work?</span>")
|
||||
|
||||
active = 1
|
||||
icon_state = initial(icon_state) + "_active"
|
||||
playsound(loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
|
||||
@@ -33,7 +32,6 @@
|
||||
if (istype(target, /obj/item/weapon/gun/grenadelauncher)) return ..()
|
||||
if((user.get_active_hand() == src) && (!active) && (clown_check(user)) && target.loc != src.loc)
|
||||
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)
|
||||
@@ -52,16 +50,13 @@
|
||||
if(display_timer)
|
||||
if(det_time > 1)
|
||||
to_chat(user, "The timer is set to [det_time/10] second\s.")
|
||||
|
||||
else
|
||||
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))
|
||||
to_chat(user, "<span class='warning'>You prime the [name]! [det_time/10] seconds!</span>")
|
||||
|
||||
active = 1
|
||||
icon_state = initial(icon_state) + "_active"
|
||||
add_fingerprint(user)
|
||||
@@ -91,19 +86,15 @@
|
||||
if ("1")
|
||||
det_time = 10
|
||||
to_chat(user, "<span class='notice'>You set the [name] for 1 second detonation time.</span>")
|
||||
|
||||
if ("10")
|
||||
det_time = 30
|
||||
to_chat(user, "<span class='notice'>You set the [name] for 3 second detonation time.</span>")
|
||||
|
||||
if ("30")
|
||||
det_time = 50
|
||||
to_chat(user, "<span class='notice'>You set the [name] for 5 second detonation time.</span>")
|
||||
|
||||
if ("50")
|
||||
det_time = 1
|
||||
to_chat(user, "<span class='notice'>You set the [name] for instant detonation.</span>")
|
||||
|
||||
add_fingerprint(user)
|
||||
..()
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
|
||||
if(CLUMSY in user.mutations && prob(50))
|
||||
to_chat(user, "<span class='warning'>Uh... how do those things work?!</span>")
|
||||
|
||||
apply_cuffs(user,user)
|
||||
|
||||
if(!C.handcuffed)
|
||||
@@ -33,7 +32,6 @@
|
||||
if(do_mob(user, C, 30))
|
||||
apply_cuffs(C,user)
|
||||
to_chat(user, "<span class='notice'>You handcuff [C].</span>")
|
||||
|
||||
if(istype(src, /obj/item/weapon/restraints/handcuffs/cable))
|
||||
feedback_add_details("handcuffs","C")
|
||||
else
|
||||
@@ -43,7 +41,6 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You fail to handcuff [C].</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/proc/apply_cuffs(mob/living/carbon/target, mob/user)
|
||||
if(!target.handcuffed)
|
||||
user.drop_item()
|
||||
@@ -103,11 +100,9 @@
|
||||
user.unEquip(src)
|
||||
user.put_in_hands(W)
|
||||
to_chat(user, "<span class='notice'>You wrap the cable restraint around the top of the rod.</span>")
|
||||
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need one rod to make a wired rod.</span>")
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/zipties
|
||||
@@ -128,12 +123,10 @@
|
||||
C.handcuffed = new /obj/item/weapon/restraints/handcuffs/cable/zipties/used(C)
|
||||
C.update_inv_handcuffed(1)
|
||||
to_chat(user, "<span class='notice'>You handcuff [C].</span>")
|
||||
|
||||
add_logs(C, user, "ziptie-cuffed")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You fail to handcuff [C].</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable/zipties/used
|
||||
desc = "A pair of broken zipties."
|
||||
icon_state = "cuff_white_used"
|
||||
@@ -182,18 +175,15 @@
|
||||
icon_state = "beartrap[armed]"
|
||||
to_chat(user, "<span class='notice'>[src] is now [armed ? "armed" : "disarmed"]</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/restraints/legcuffs/beartrap/attackby(var/obj/item/I, mob/user as mob) //Let's get explosive.
|
||||
if(istype(I, /obj/item/weapon/grenade/iedcasing))
|
||||
if(IED)
|
||||
to_chat(user, "<span class='warning'>This beartrap already has an IED hooked up to it!</span>")
|
||||
|
||||
return
|
||||
IED = I
|
||||
switch(IED.assembled)
|
||||
if(0,1) //if it's not fueled/hooked up
|
||||
to_chat(user, "<span class='warning'>You haven't prepared this IED yet!</span>")
|
||||
|
||||
IED = null
|
||||
return
|
||||
if(2,3)
|
||||
@@ -202,11 +192,9 @@
|
||||
message_admins("[key_name_admin(user)] has rigged a beartrap with an IED.")
|
||||
log_game("[key_name(user)] has rigged a beartrap with an IED.")
|
||||
to_chat(user, "<span class='notice'>You sneak the [IED] underneath the pressure plate and connect the trigger wire.</span>")
|
||||
|
||||
desc = "A trap used to catch bears and other legged creatures. <span class='warning'>There is an IED hooked up to it.</span>"
|
||||
else
|
||||
to_chat(user, "<span class='danger'>You shouldn't be reading this message! Contact a coder or someone, something broke!</span>")
|
||||
|
||||
IED = null
|
||||
return
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
@@ -214,7 +202,6 @@
|
||||
IED.forceMove(get_turf(src))
|
||||
IED = null
|
||||
to_chat(user, "<span class='notice'>You remove the IED from the [src].</span>")
|
||||
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
var/obj/effect/overlay/holograph/H = locate() in T
|
||||
if(H)
|
||||
to_chat(user, "<span class='notice'>You use [src] to destroy [H].</span>")
|
||||
|
||||
signs -= H
|
||||
qdel(H)
|
||||
else
|
||||
@@ -27,11 +26,9 @@
|
||||
H = new(get_turf(target))
|
||||
signs += H
|
||||
to_chat(user, "<span class='notice'>You create \a [H] with [src].</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] is projecting at max capacity!</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/holosign_creator/attack(mob/living/carbon/human/M, mob/user)
|
||||
return
|
||||
|
||||
@@ -43,7 +40,6 @@
|
||||
signs -= sign
|
||||
to_chat(user, "<span class='notice'>You clear all active holograms.</span>")
|
||||
|
||||
|
||||
/obj/effect/overlay/holograph
|
||||
name = "wet floor sign"
|
||||
desc = "The words flicker as if they mean nothing."
|
||||
|
||||
@@ -47,10 +47,8 @@
|
||||
injectamount = cause
|
||||
reagents.trans_to(R, injectamount)
|
||||
to_chat(R, "<span class='italics'>You hear a faint beep.</span>")
|
||||
|
||||
if(!reagents.total_volume)
|
||||
to_chat(R, "<span class='italics'>You hear a faint click from your chest.</span>")
|
||||
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
medium = round(medium)
|
||||
weak = round(weak)
|
||||
to_chat(imp_in, "<span class='notice'>You activate your microbomb implant.</span>")
|
||||
|
||||
//If the delay is short, just blow up already jeez
|
||||
if(delay <= 7)
|
||||
explosion(src,heavy,medium,weak,weak, flame_range = weak)
|
||||
@@ -87,7 +86,6 @@
|
||||
if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your macrobomb implant? This will cause you to explode and gib!", "Macrobomb Implant Confirmation", "Yes", "No") != "Yes")
|
||||
return 0
|
||||
to_chat(imp_in, "<span class='notice'>You activate your macrobomb implant.</span>")
|
||||
|
||||
timed_explosion()
|
||||
|
||||
/obj/item/weapon/implant/explosive/macro/implant(mob/source)
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
if(uses == 0) return 0
|
||||
if(uses != -1) uses--
|
||||
to_chat(imp_in, "You feel a faint click.")
|
||||
|
||||
if(iscarbon(imp_in))
|
||||
var/mob/living/carbon/C_imp_in = imp_in
|
||||
C_imp_in.uncuff()
|
||||
|
||||
@@ -28,10 +28,8 @@
|
||||
ticker.mode.remove_revolutionary(target.mind)
|
||||
if(target.mind in ticker.mode.cult)
|
||||
to_chat(target, "<span class='warning'>You feel the corporate tendrils of Nanotrasen try to invade your mind!</span>")
|
||||
|
||||
else
|
||||
to_chat(target, "<span class='notice'>You feel a surge of loyalty towards Nanotrasen.</span>")
|
||||
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -39,7 +37,6 @@
|
||||
if(..())
|
||||
if(target.stat != DEAD && !silent)
|
||||
to_chat(target, "<span class='boldnotice'>You feel a sense of liberation as Nanotrasen's grip on your mind fades away.</span>")
|
||||
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
if(uses < 1) return 0
|
||||
uses--
|
||||
to_chat(imp_in, "<span class='notice'>You feel a sudden surge of energy!</span>")
|
||||
|
||||
imp_in.SetStunned(0)
|
||||
imp_in.SetWeakened(0)
|
||||
imp_in.SetParalysis(0)
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
return 0
|
||||
if(M == user)
|
||||
to_chat(user, "<span class='notice'>Making yourself loyal to yourself was a great idea! Perhaps even the best idea ever! Actually, you just feel like an idiot.</span>")
|
||||
|
||||
if(isliving(user))
|
||||
var/mob/living/L = user
|
||||
L.adjustBrainLoss(20)
|
||||
@@ -46,7 +45,6 @@
|
||||
return -1
|
||||
H.implanting = 1
|
||||
to_chat(H, "<span class='notice'>You feel completely loyal to [user.name].</span>")
|
||||
|
||||
if(!(user.mind in ticker.mode:implanter))
|
||||
ticker.mode:implanter[ref] = list()
|
||||
implanters = ticker.mode:implanter[ref]
|
||||
@@ -58,7 +56,6 @@
|
||||
ticker.mode.traitors += H.mind
|
||||
H.mind.special_role = "traitor"
|
||||
to_chat(H, "<span class='warning'><B>You're now completely loyal to [user.name]!</B> You now must lay down your life to protect them and assist in their goals at any cost.</span>")
|
||||
|
||||
var/datum/objective/protect/p = new
|
||||
p.owner = H.mind
|
||||
p.target = user:mind
|
||||
@@ -67,7 +64,6 @@
|
||||
for(var/datum/objective/objective in H.mind.objectives)
|
||||
to_chat(H, "<B>Objective #1</B>: [objective.explanation_text]")
|
||||
|
||||
|
||||
ticker.mode.update_traitor_icons_added(user.mind)
|
||||
ticker.mode.update_traitor_icons_added(H.mind)//handles datahuds/observerhuds
|
||||
|
||||
|
||||
@@ -82,7 +82,6 @@
|
||||
var/mob/M = G.affecting
|
||||
if(M.buckled_mob)
|
||||
to_chat(usr, "[M] will not fit into [src] because they have a slime latched onto their head.")
|
||||
|
||||
return
|
||||
if(put_mob(M))
|
||||
qdel(G)
|
||||
@@ -110,11 +109,9 @@
|
||||
/obj/machinery/implantchair/put_mob(mob/living/carbon/M)
|
||||
if(!iscarbon(M))
|
||||
to_chat(usr, "<span class='warning'>The [src.name] cannot hold this!</span>")
|
||||
|
||||
return
|
||||
if(src.occupant)
|
||||
to_chat(usr, "<span class='warning'>The [src.name] is already occupied!</span>")
|
||||
|
||||
return
|
||||
if(M.client)
|
||||
M.client.perspective = EYE_PERSPECTIVE
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
if(imp.implant(M, user))
|
||||
if (M == user)
|
||||
to_chat(user, "<span class='notice'>You implant yourself.</span>")
|
||||
|
||||
else
|
||||
M.visible_message("[user] has implanted [M].", "<span class='notice'>[user] implants you.</span>")
|
||||
imp = null
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
return
|
||||
if(case)
|
||||
to_chat(user, "<span class='warning'>There's already an implant in the pad!</span>")
|
||||
|
||||
return
|
||||
user.unEquip(C)
|
||||
C.forceMove(src)
|
||||
@@ -38,7 +37,6 @@
|
||||
/obj/item/weapon/implantpad/proc/dropcase(mob/user as mob)
|
||||
if(!case)
|
||||
to_chat(user, "<span class='warning'>There's no implant in the pad!</span>")
|
||||
|
||||
return
|
||||
if(user)
|
||||
if(user.put_in_hands(case))
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user