Merge conflict fix

This commit is contained in:
shazbot194
2018-04-04 12:18:07 -08:00
496 changed files with 10865 additions and 3464 deletions
+1 -4
View File
@@ -4,17 +4,14 @@
icon = 'icons/obj/barsigns.dmi'
icon_state = "empty"
req_access = list(access_bar)
armor = list(melee = 20, bullet = 20, laser = 20, energy = 100, bomb = 0, bio = 0, rad = 0)
var/list/barsigns=list()
var/list/hiddensigns
var/broken = 0
var/emagged = 0
var/state = 0
var/prev_sign = ""
var/panel_open = 0
/obj/structure/sign/barsign/New()
..()
@@ -19,6 +19,11 @@ LINEN BINS
burn_state = FLAMMABLE
slot_flags = SLOT_BACK
var/list/dream_messages = list("white")
var/list/nightmare_messages = list("black")
var/comfort = 0.5
/obj/item/weapon/bedsheet/attack_self(mob/user as mob)
user.drop_item()
@@ -33,126 +38,174 @@ LINEN BINS
/obj/item/weapon/bedsheet/blue
icon_state = "sheetblue"
item_color = "blue"
dream_messages = list("blue")
nightmare_messages = list("vox blood")
/obj/item/weapon/bedsheet/green
icon_state = "sheetgreen"
item_color = "green"
dream_messages = list("green")
nightmare_messages = list("unathi flesh")
/obj/item/weapon/bedsheet/orange
icon_state = "sheetorange"
item_color = "orange"
dream_messages = list("orange")
nightmare_messages = list("exploding fruit")
/obj/item/weapon/bedsheet/purple
icon_state = "sheetpurple"
item_color = "purple"
dream_messages = list("purple")
nightmare_messages = list("Grey blood")
/obj/item/weapon/bedsheet/patriot
name = "patriotic bedsheet"
desc = "You've never felt more free than when sleeping on this."
icon_state = "sheetUSA"
item_color = "sheetUSA"
dream_messages = list("America", "freedom", "fireworks", "bald eagles")
nightmare_messages = list("communism")
/obj/item/weapon/bedsheet/rainbow
name = "rainbow bedsheet"
desc = "A multi_colored blanket. It's actually several different sheets cut up and sewn together."
icon_state = "sheetrainbow"
item_color = "rainbow"
dream_messages = list("red", "orange", "yellow", "green", "blue", "purple", "a rainbow")
nightmare_messages = list("green", "a cluwne", "fLoOr ClUwNe")
/obj/item/weapon/bedsheet/red
icon_state = "sheetred"
item_color = "red"
dream_messages = list("red")
nightmare_messages = list("gibs")
/obj/item/weapon/bedsheet/yellow
icon_state = "sheetyellow"
item_color = "yellow"
dream_messages = list("yellow")
nightmare_messages = list("locker full of banana peels")
/obj/item/weapon/bedsheet/mime
name = "mime's blanket"
desc = "A very soothing striped blanket. All the noise just seems to fade out when you're under the covers in this."
icon_state = "sheetmime"
item_color = "mime"
dream_messages = list("silence", "gestures", "a pale face", "a gaping mouth", "the mime")
nightmare_messages = list("honk", "laughter", "a prank", "a joke", "a smiling face", "the clown")
/obj/item/weapon/bedsheet/clown
name = "clown's blanket"
desc = "A rainbow blanket with a clown mask woven in. It smells faintly of bananas."
icon_state = "sheetclown"
item_color = "clown"
dream_messages = list("honk", "laughter", "a prank", "a joke", "a smiling face", "the clown")
nightmare_messages = list("silence", "gestures", "a pale face", "a gaping mouth", "the mime")
/obj/item/weapon/bedsheet/captain
name = "captain's bedsheet."
desc = "It has a Nanotrasen symbol on it, and was woven with a revolutionary new kind of thread guaranteed to have 0.01% permeability for most non-chemical substances, popular among most modern captains."
icon_state = "sheetcaptain"
item_color = "captain"
dream_messages = list("authority", "a golden ID", "sunglasses", "a green disc", "an antique gun", "the captain")
nightmare_messages = list("comdom", "clown with all access", "the syndicate")
/obj/item/weapon/bedsheet/rd
name = "research director's bedsheet"
desc = "It appears to have a beaker emblem, and is made out of fire-resistant material, although it probably won't protect you in the event of fires you're familiar with every day."
icon_state = "sheetrd"
item_color = "director"
dream_messages = list("authority", "a silvery ID", "a bomb", "a mech", "a facehugger", "maniacal laughter", "the research director")
nightmare_messages = list("toxins full of plasma", "UPGRADE THE SLEEPERS", "rogue ai")
/obj/item/weapon/bedsheet/medical
name = "medical blanket"
desc = "It's a sterilized* blanket commonly used in the Medbay. *Sterilization is voided if a virologist is present onboard the station."
icon_state = "sheetmedical"
item_color = "medical"
dream_messages = list("healing", "life", "surgery", "a doctor")
nightmare_messages = list("death", "no cryox", "cryo is off")
/obj/item/weapon/bedsheet/cmo
name = "chief medical officer's bedsheet"
desc = "It's a sterilized blanket that has a cross emblem. There's some cat fur on it, likely from Runtime."
icon_state = "sheetcmo"
item_color = "cmo"
dream_messages = list("authority", "a silvery ID", "healing", "life", "surgery", "a cat", "the chief medical officer")
nightmare_messages = list("chemists making meth", "cryo it off", "where is the defib", "no biomass")
/obj/item/weapon/bedsheet/hos
name = "head of security's bedsheet"
desc = "It is decorated with a shield emblem. While crime doesn't sleep, you do, but you are still THE LAW!"
icon_state = "sheethos"
item_color = "hosred"
dream_messages = list("authority", "a silvery ID", "handcuffs", "a baton", "a flashbang", "sunglasses", "the head of security")
nightmare_messages = list("the clown", "a toolbox", "sHiTcUrItY", "why did you put them in for 50 minutes")
/obj/item/weapon/bedsheet/hop
name = "head of personnel's bedsheet"
desc = "It is decorated with a key emblem. For those rare moments when you can rest and cuddle with Ian without someone screaming for you over the radio."
icon_state = "sheethop"
item_color = "hop"
dream_messages = list("authority", "a silvery ID", "obligation", "a computer", "an ID", "a corgi", "the head of personnel")
nightmare_messages = list("improper paperwork", "all access clown", "50 open clown slots", "dead ian")
/obj/item/weapon/bedsheet/ce
name = "chief engineer's bedsheet"
desc = "It is decorated with a wrench emblem. It's highly reflective and stain resistant, so you don't need to worry about ruining it with oil."
icon_state = "sheetce"
item_color = "chief"
dream_messages = list("authority", "a silvery ID", "the engine", "power tools", "an APC", "a parrot", "the chief engineer")
nightmare_messages = list("forced airlock", "syndicate bomb", "explosion in research chem", "iT's LoOsE")
/obj/item/weapon/bedsheet/qm
name = "quartermaster's bedsheet"
desc = "It is decorated with a crate emblem in silver lining. It's rather tough, and just the thing to lie on after a hard day of pushing paper."
icon_state = "sheetqm"
item_color = "qm"
dream_messages = list("a grey ID", "a shuttle", "a crate", "a sloth", "the quartermaster")
nightmare_messages = list("a bald person", "no points", "wheres the ore", "space carp")
/obj/item/weapon/bedsheet/brown
icon_state = "sheetbrown"
item_color = "cargo"
dream_messages = list("brown")
nightmare_messages = list("dead monkey")
/obj/item/weapon/bedsheet/centcom
name = "centcom bedsheet"
desc = "Woven with advanced nanothread for warmth as well as being very decorated, essential for all officials."
icon_state = "sheetcentcom"
item_color = "centcom"
dream_messages = list("a unique ID", "authority", "artillery", "an ending")
nightmare_messages = list("a butt fax")
/obj/item/weapon/bedsheet/syndie
name = "syndicate bedsheet"
desc = "It has a syndicate emblem and it has an aura of evil."
icon_state = "sheetsyndie"
item_color = "syndie"
dream_messages = list("a green disc", "a red crystal", "a glowing blade", "a wire-covered ID")
nightmare_messages = list("stunbaton", "taser", "lasers", "a toolbox")
/obj/item/weapon/bedsheet/cult
name = "cultist's bedsheet"
desc = "You might dream of Nar'Sie if you sleep with this. It seems rather tattered and glows of an eldritch presence."
icon_state = "sheetcult"
item_color = "cult"
dream_messages = list("a tome", "a floating red crystal", "a glowing sword", "a bloody symbol", "a massive humanoid figure")
nightmare_messages = list("a tome", "a floating red crystal", "a glowing sword", "a bloody symbol", "a massive humanoid figure")
/obj/item/weapon/bedsheet/wiz
name = "wizard's bedsheet"
desc = "A special fabric enchanted with magic so you can have an enchanted night. It even glows!"
icon_state = "sheetwiz"
item_color = "wiz"
dream_messages = list("a book", "an explosion", "lightning", "a staff", "a skeleton", "a robe", "magic")
nightmare_messages = list("a toolbox", "solars")
@@ -4,12 +4,12 @@
icon = 'icons/obj/closet.dmi'
icon_state = "closed"
density = 1
armor = list(melee = 20, bullet = 10, laser = 10, energy = 0, bomb = 10, bio = 0, rad = 0)
var/icon_closed = "closed"
var/icon_opened = "open"
var/opened = 0
var/welded = 0
var/locked = 0
var/broken = 0
var/wall_mounted = 0 //never solid (You can always pass over it)
var/health = 100
var/lastbang
@@ -8,6 +8,7 @@
icon_opened = "fireaxe1100"
anchored = 1
density = 0
armor = list(melee = 50, bullet = 50, laser = 50, energy = 100, bomb = 10, bio = 100, rad = 100)
var/localopened = 0 //Setting this to keep it from behaviouring like a normal closet and obstructing movement in the map. -Agouri
opened = 1
var/hitstaken = 0
@@ -35,6 +35,7 @@
new /obj/item/clothing/head/beret/eng(src)
new /obj/item/weapon/door_remote/chief_engineer(src)
new /obj/item/weapon/rpd(src)
new /obj/item/weapon/reagent_containers/food/drinks/mug/ce(src)
/obj/structure/closet/secure_closet/engineering_electrical
@@ -111,8 +111,15 @@
..()
new /obj/item/weapon/reagent_containers/food/pill/haloperidol(src)
new /obj/item/weapon/reagent_containers/food/pill/haloperidol(src)
new /obj/item/weapon/reagent_containers/food/pill/haloperidol(src)
new /obj/item/weapon/reagent_containers/food/pill/methamphetamine(src)
new /obj/item/weapon/reagent_containers/food/pill/methamphetamine(src)
new /obj/item/weapon/reagent_containers/food/pill/methamphetamine(src)
new /obj/item/weapon/reagent_containers/food/pill/patch/nicotine(src)
new /obj/item/weapon/reagent_containers/food/pill/patch/nicotine(src)
new /obj/item/weapon/reagent_containers/food/pill/patch/nicotine(src)
new /obj/item/weapon/reagent_containers/food/pill/hydrocodone(src)
new /obj/item/weapon/reagent_containers/food/pill/hydrocodone(src)
/obj/structure/closet/secure_closet/psychiatrist
name = "psychiatrist's locker"
@@ -129,8 +136,14 @@
new /obj/item/clothing/suit/straight_jacket(src)
new /obj/item/weapon/reagent_containers/syringe(src)
new /obj/item/weapon/reagent_containers/glass/bottle/ether(src)
new /obj/item/weapon/storage/fancy/cigarettes/cigpack_med(src)
new /obj/item/weapon/storage/fancy/cigarettes/cigpack_med(src)
new /obj/item/weapon/storage/fancy/cigarettes/cigpack_med(src)
new /obj/item/weapon/storage/pill_bottle/psychiatrist(src)
new /obj/random/plushie(src)
for(var/i in 0 to 3)
var/candy = pick(subtypesof(/obj/item/weapon/reagent_containers/food/snacks/candy/fudge))
new candy(src)
/obj/structure/closet/secure_closet/CMO
name = "chief medical officer's locker"
@@ -173,6 +186,7 @@
new /obj/item/weapon/reagent_containers/hypospray/CMO(src)
new /obj/item/organ/internal/cyberimp/eyes/hud/medical(src)
new /obj/item/weapon/door_remote/chief_medical_officer(src)
new /obj/item/weapon/reagent_containers/food/drinks/mug/cmo(src)
/obj/structure/closet/secure_closet/animal
@@ -71,6 +71,7 @@
new /obj/item/device/flash(src)
new /obj/item/device/laser_pointer(src)
new /obj/item/weapon/door_remote/research_director(src)
new /obj/item/weapon/reagent_containers/food/drinks/mug/rd(src)
/obj/structure/closet/secure_closet/research_reagents
@@ -7,6 +7,7 @@
opened = 0
locked = 1
broken = 0
armor = list(melee = 30, bullet = 50, laser = 50, energy = 100, bomb = 0, bio = 0, rad = 0)
var/large = 1
icon_closed = "secure"
var/icon_locked = "secure1"
@@ -31,6 +31,7 @@
new /obj/item/weapon/storage/belt/rapier(src)
new /obj/item/weapon/gun/energy/gun(src)
new /obj/item/weapon/door_remote/captain(src)
new /obj/item/weapon/reagent_containers/food/drinks/mug/cap(src)
/obj/structure/closet/secure_closet/hop
@@ -52,10 +53,11 @@
new /obj/item/weapon/storage/box/ids(src)
new /obj/item/weapon/storage/box/PDAs(src)
new /obj/item/clothing/suit/armor/vest(src)
new /obj/item/weapon/gun/energy/gun(src)
new /obj/item/weapon/gun/energy/gun/mini(src)
new /obj/item/device/flash(src)
new /obj/item/clothing/accessory/petcollar(src)
new /obj/item/weapon/door_remote/civillian(src)
new /obj/item/weapon/reagent_containers/food/drinks/mug/hop(src)
/obj/structure/closet/secure_closet/hop2
@@ -120,6 +122,7 @@
new /obj/item/taperoll/police(src)
new /obj/item/weapon/gun/energy/gun/hos(src)
new /obj/item/weapon/door_remote/head_of_security(src)
new /obj/item/weapon/reagent_containers/food/drinks/mug/hos(src)
/obj/structure/closet/secure_closet/warden
@@ -346,6 +349,8 @@
new /obj/item/clothing/glasses/sunglasses/yeah(src)
new /obj/item/device/flashlight/seclite(src)
new /obj/item/clothing/accessory/black(src)
new /obj/item/device/taperecorder(src)
new /obj/item/weapon/storage/box/tapes(src)
/obj/structure/closet/secure_closet/detective/update_icon()
if(broken)
+2 -1
View File
@@ -18,6 +18,7 @@ var/global/list/captain_display_cases = list()
name = "display case frame"
icon = 'icons/obj/stock_parts.dmi'
icon_state = "box_glass"
armor = list(melee = 30, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 0, rad = 0)
var/obj/item/weapon/airlock_electronics/circuit = null
var/obj/item/device/assembly/prox_sensor/sensor = null
var/state = DISPLAYCASE_FRAME_CIRCUIT
@@ -116,7 +117,7 @@ var/global/list/captain_display_cases = list()
/obj/structure/displaycase/captains_laser
name = "captain's display case"
desc = "A display case for the captain's antique laser gun. Hooked up with an anti-theft system."
burglar_alarm = 1
burglar_alarm = 1
locked = 1
req_access = list(access_captain)
start_showpiece_type = /obj/item/weapon/gun/energy/laser/captain
+12 -11
View File
@@ -4,15 +4,16 @@
icon_state = "construction"
anchored = FALSE
density = TRUE
max_integrity = 200
var/overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
var/state = AIRLOCK_ASSEMBLY_NEEDS_WIRES
var/mineral = null
var/mineral
var/base_name = "airlock"
var/obj/item/weapon/airlock_electronics/electronics = null
var/obj/item/weapon/airlock_electronics/electronics
var/airlock_type = /obj/machinery/door/airlock //the type path of the airlock once completed
var/glass_type = /obj/machinery/door/airlock/glass
var/glass = 0 // 0 = glass can be installed. 1 = glass is already installed.
var/created_name = null
var/created_name
var/heat_proof_finished = 0 //whether to heat-proof the finished airlock
var/previous_assembly = /obj/structure/door_assembly
var/noglass = FALSE //airlocks with no glass version, also cannot be modified with sheets
@@ -116,12 +117,12 @@
else if(iscoil(W) && state == AIRLOCK_ASSEMBLY_NEEDS_WIRES && anchored)
var/obj/item/stack/cable_coil/coil = W
if (coil.amount < 1)
if(coil.get_amount() < 1)
to_chat(user, "<span class='warning'>You need one length of cable to wire the airlock assembly!</span>")
return
user.visible_message("[user] wires the airlock assembly.", "You start to wire the airlock assembly...")
if(do_after(user, 40 * coil.toolspeed, target = src))
if(coil.amount < 1 || state != AIRLOCK_ASSEMBLY_NEEDS_WIRES)
if(coil.get_amount() < 1 || state != AIRLOCK_ASSEMBLY_NEEDS_WIRES)
return
coil.use(1)
state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
@@ -173,14 +174,14 @@
else if(istype(W, /obj/item/stack/sheet) && (!glass || !mineral))
var/obj/item/stack/sheet/S = W
if(S)
if(S.amount>=1)
if(S.get_amount() >= 1)
if(!noglass)
if(!glass)
if(istype(S, /obj/item/stack/sheet/rglass) || istype(S, /obj/item/stack/sheet/glass))
playsound(loc, S.usesound, 100, 1)
user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly...")
if(do_after(user, 40 * S.toolspeed, target = src))
if(S.amount < 1 || glass)
if(S.get_amount() < 1 || glass)
return
if(S.type == /obj/item/stack/sheet/rglass)
to_chat(user, "<span class='notice'>You install reinforced glass windows into the airlock assembly.</span>")
@@ -192,11 +193,11 @@
if(!mineral)
if(istype(S, /obj/item/stack/sheet/mineral) && S.sheettype)
var/M = S.sheettype
if(S.amount>=2)
if(S.get_amount() >= 2)
playsound(loc, S.usesound, 100, 1)
user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly...")
if(do_after(user, 40 * S.toolspeed, target = src))
if(S.amount < 2 || mineral)
if(S.get_amount() < 2 || mineral)
return
to_chat(user, "<span class='notice'>You install [M] plating into the airlock assembly.</span>")
S.use(2)
@@ -204,7 +205,7 @@
var/obj/structure/door_assembly/MA = new mineralassembly(loc)
transfer_assembly_vars(src, MA, TRUE)
else
to_chat(user, "<span class='warning'>You need at least two sheets add a mineral cover!</span>")
to_chat(user, "<span class='warning'>You need at least two sheets to add a mineral cover!</span>")
else
to_chat(user, "<span class='warning'>You cannot add [S] to [src]!</span>")
else
@@ -239,7 +240,7 @@
electronics.forceMove(door)
qdel(src)
else
..()
return ..()
update_name()
update_icon()
@@ -95,6 +95,7 @@
health = 160
reinf = 1
explosion_block = 3
armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100)
/obj/structure/window/full/shuttle/New()
..()
+2 -2
View File
@@ -32,8 +32,8 @@
/obj/structure/girder/attack_animal(mob/living/simple_animal/M)
M.changeNext_move(CLICK_CD_MELEE)
M.do_attack_animation(src)
if(M.environment_smash >= 1)
if(M.environment_smash == 3)
if((M.environment_smash & ENVIRONMENT_SMASH_STRUCTURES) || (M.environment_smash & ENVIRONMENT_SMASH_WALLS) || (M.environment_smash & ENVIRONMENT_SMASH_RWALLS))
if(M.environment_smash & ENVIRONMENT_SMASH_RWALLS)
ex_act(2)
M.visible_message("<span class='warning'>[M] smashes through \the [src].</span>", "<span class='warning'>You smash through \the [src].</span>")
else
+68 -71
View File
@@ -1,25 +1,25 @@
/obj/structure/grille
desc = "A flimsy lattice of metal rods, with screws to secure it to the floor."
desc = "A flimsy framework of metal rods."
name = "grille"
icon = 'icons/obj/structures.dmi'
icon_state = "grille"
density = 1
anchored = 1
density = TRUE
anchored = TRUE
flags = CONDUCT
pressure_resistance = 5*ONE_ATMOSPHERE
layer = BELOW_OBJ_LAYER
level = 3
var/health = 10
var/broken = 0
armor = list(melee = 50, bullet = 70, laser = 70, energy = 100, bomb = 10, bio = 100, rad = 100)
max_integrity = 50
integrity_failure = 20
var/rods_type = /obj/item/stack/rods
var/rods_amount = 2
var/rods_broken = 1
var/grille_type = null
var/grille_type
var/broken_type = /obj/structure/grille/broken
/obj/structure/grille/fence/
var/width = 3
health = 50
/obj/structure/grille/fence/New()
if(width > 1)
@@ -51,6 +51,20 @@
if(!broken)
obj_break()
/obj/structure/grille/examine(mob/user)
..()
if(anchored)
to_chat(user, "<span class='notice'>It's secured in place with <b>screws</b>. The rods look like they could be <b>cut</b> through.</span>")
if(!anchored)
to_chat(user, "<span class='notice'>The anchoring screws are <i>unscrewed</i>. The rods look like they could be <b>cut</b> through.</span>")
/obj/structure/grille/ratvar_act()
if(broken)
new /obj/structure/grille/ratvar/broken(loc)
else
new /obj/structure/grille/ratvar(loc)
qdel(src)
/obj/structure/grille/Bumped(atom/user)
if(ismob(user))
shock(user, 70)
@@ -65,9 +79,9 @@
if(shock(user, 70))
return
if(HULK in user.mutations)
take_damage(5)
take_damage(60, BRUTE, "melee", 1)
else
take_damage(rand(1,2))
take_damage(rand(5,10), BRUTE, "melee", 1)
/obj/structure/grille/attack_alien(mob/living/user)
if(istype(user, /mob/living/carbon/alien/larva))
@@ -79,37 +93,7 @@
"You hear twisting metal.")
if(!shock(user, 70))
take_damage(5)
/obj/structure/grille/attack_slime(mob/living/user)
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
var/mob/living/carbon/slime/S = user
if(!S.is_adult)
return
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
user.visible_message("<span class='warning'>[user] smashes against [src].</span>", \
"<span class='warning'>You smash against [src].</span>", \
"You hear twisting metal.")
take_damage(rand(1,2))
/obj/structure/grille/attack_animal(mob/living/simple_animal/M)
if(M.melee_damage_upper == 0 || (M.melee_damage_type != BRUTE && M.melee_damage_type != BURN))
return
M.changeNext_move(CLICK_CD_MELEE)
M.do_attack_animation(src)
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
M.visible_message("<span class='warning'>[M] smashes against [src].</span>", \
"<span class='warning'>You smash against [src].</span>", \
"You hear twisting metal.")
take_damage(rand(M.melee_damage_lower,M.melee_damage_upper), M.melee_damage_type)
/obj/structure/grille/mech_melee_attack(obj/mecha/M)
if(..())
take_damage(M.force * 0.5, M.damtype)
take_damage(20, BRUTE, "melee", 1)
/obj/structure/grille/CanPass(atom/movable/mover, turf/target, height=0)
if(height==0)
@@ -128,10 +112,6 @@
var/atom/movable/mover = caller
. = . || mover.checkpass(PASSGRILLE)
/obj/structure/grille/bullet_act(obj/item/projectile/Proj)
. = ..()
take_damage(Proj.damage*0.3, Proj.damage_type)
/obj/structure/grille/attackby(obj/item/weapon/W, mob/user, params)
user.changeNext_move(CLICK_CD_MELEE)
add_fingerprint(user)
@@ -141,7 +121,7 @@
deconstruct()
else if((isscrewdriver(W)) && (istype(loc, /turf/simulated) || anchored))
if(!shock(user, 90))
playsound(loc, W.usesound, 100, 1)
playsound(src, W.usesound, 100, 1)
anchored = !anchored
user.visible_message("<span class='notice'>[user] [anchored ? "fastens" : "unfastens"] [src].</span>", \
"<span class='notice'>You [anchored ? "fasten [src] to" : "unfasten [src] from"] the floor.</span>")
@@ -163,7 +143,7 @@
//window placing end
else if(istype(W, /obj/item/weapon/shard) || !shock(user, 70))
return attacked_by(W, user)
return ..()
/obj/structure/grille/proc/build_window(obj/item/stack/sheet/S, mob/user)
if(!istype(S) || !user)
@@ -234,7 +214,7 @@
W.update_icon()
return
/obj/structure/grille/proc/attacked_by(obj/item/I, mob/living/user)
/obj/structure/grille/attacked_by(obj/item/I, mob/living/user)
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
if(!(I.flags&NOBLUDGEON))
@@ -259,25 +239,15 @@
var/obj/R = new rods_type(loc, rods_amount)
transfer_fingerprints_to(R)
qdel(src)
..()
/obj/structure/grille/proc/obj_break()
/obj/structure/grille/obj_break()
if(!broken && can_deconstruct)
new broken_type(loc)
var/obj/R = new rods_type(loc, rods_broken)
transfer_fingerprints_to(R)
qdel(src)
/obj/structure/grille/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
if(sound_effect)
play_attack_sound(damage_amount, damage_type, damage_flag)
health -= damage_amount
if(health <= 0)
if(!broken)
obj_break()
else
if(health <= -6)
deconstruct()
// shock user with probability prb (if all connections & power are working)
// returns 1 if shocked, 0 otherwise
@@ -303,33 +273,60 @@
/obj/structure/grille/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(!broken)
if(exposed_temperature > T0C + 1500)
take_damage(1)
take_damage(1, BURN, 0, 0)
..()
/obj/structure/grille/hitby(atom/movable/AM)
..()
var/tforce = 0
if(ismob(AM))
tforce = 5
else if(isobj(AM))
if(prob(50))
var/obj/O = AM
tforce = max(0, O.throwforce * 0.5)
else if(anchored && !broken)
if(istype(AM, /obj))
if(prob(50) && anchored && !broken)
var/turf/T = get_turf(src)
var/obj/structure/cable/C = T.get_cable_node()
if(C)
playsound(loc, 'sound/magic/LightningShock.ogg', 100, 1, extrarange = 5)
tesla_zap(src, 3, C.powernet.avail * 0.01) //Zap for 1/100 of the amount of power. At a million watts in the grid, it will be as powerful as a tesla revolver shot.
C.powernet.load += C.powernet.avail * 0.0375 // you can gain up to 3.5 via the 4x upgrades power is halved by the pole so thats 2x then 1X then .5X for 3.5x the 3 bounces shock.
take_damage(tforce)
return ..()
/obj/structure/grille/broken // Pre-broken grilles for map placement
icon_state = "brokengrille"
density = 0
health = 0
obj_integrity = 20
broken = 1
rods_amount = 1
rods_broken = 0
grille_type = /obj/structure/grille
broken_type = null
/obj/structure/grille/ratvar
icon_state = "ratvargrille"
name = "cog grille"
desc = "A strangely-shaped grille."
broken_type = /obj/structure/grille/ratvar/broken
/obj/structure/grille/ratvar/New()
..()
if(broken)
new /obj/effect/temp_visual/ratvar/grille/broken(get_turf(src))
else
new /obj/effect/temp_visual/ratvar/grille(get_turf(src))
new /obj/effect/temp_visual/ratvar/beam/grille(get_turf(src))
/obj/structure/grille/ratvar/narsie_act()
take_damage(rand(1, 3), BRUTE)
if(src)
var/previouscolor = color
color = "#960000"
animate(src, color = previouscolor, time = 8)
/obj/structure/grille/ratvar/ratvar_act()
return
/obj/structure/grille/ratvar/broken
icon_state = "brokenratvargrille"
density = FALSE
obj_integrity = 20
broken = TRUE
rods_amount = 1
rods_broken = 0
grille_type = /obj/structure/grille/ratvar
broken_type = null
+1 -1
View File
@@ -66,7 +66,7 @@
add_fingerprint(user)
return
/obj/structure/inflatable/proc/attack_generic(mob/user as mob, damage = 0) //used by attack_alien, attack_animal, and attack_slime
/obj/structure/inflatable/attack_generic(mob/user, damage = 0) //used by attack_alien, attack_animal, and attack_slime
health -= damage
if(health <= 0)
user.visible_message("<span class='danger'>[user] tears open [src]!</span>")
+1
View File
@@ -5,6 +5,7 @@
icon_state = "latticefull"
density = 0
anchored = 1.0
armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
layer = 2.3 //under pipes
// flags = CONDUCT
@@ -7,7 +7,7 @@
icon = 'icons/obj/doors/mineral_doors.dmi'
icon_state = "metal"
armor = list(melee = 10, bullet = 0, laser = 0, energy = 100, bomb = 10, bio = 100, rad = 100)
var/initial_state
var/state = 0 //closed, 1 == open
var/isSwitchingStates = 0
@@ -141,7 +141,7 @@
else
attacked_by(W, user)
/obj/structure/mineral_door/proc/attacked_by(obj/item/I, mob/user)
/obj/structure/mineral_door/attacked_by(obj/item/I, mob/user)
if(I.damtype != STAMINA)
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
+11 -11
View File
@@ -115,7 +115,7 @@
if(!instrumentObj)
return
ui = nanomanager.try_update_ui(user, instrumentObj, ui_key, ui, force_open)
ui = SSnanoui.try_update_ui(user, instrumentObj, ui_key, ui, force_open)
if(!ui)
ui = new(user, instrumentObj, ui_key, "song.tmpl", instrumentObj.name, 700, 500)
ui.open()
@@ -149,7 +149,7 @@
lines = new()
tempo = sanitize_tempo(5) // default 120 BPM
name = ""
nanomanager.update_uis(src)
SSnanoui.update_uis(src)
else if(href_list["import"])
playing = 0
@@ -185,11 +185,11 @@
lines.Remove(l)
else
linenum++
nanomanager.update_uis(src)
SSnanoui.update_uis(src)
else if(href_list["help"])
help = !help
nanomanager.update_uis(src)
SSnanoui.update_uis(src)
if(href_list["repeat"]) //Changing this from a toggle to a number of repeats to avoid infinite loops.
if(playing)
@@ -199,11 +199,11 @@
repeat = 0
if(repeat > max_repeat)
repeat = max_repeat
nanomanager.update_uis(src)
SSnanoui.update_uis(src)
else if(href_list["tempo"])
tempo = sanitize_tempo(tempo + text2num(href_list["tempo"]) * world.tick_lag)
nanomanager.update_uis(src)
SSnanoui.update_uis(src)
else if(href_list["play"])
if(playing)
@@ -211,7 +211,7 @@
playing = 1
spawn()
playsong(usr)
nanomanager.update_uis(src)
SSnanoui.update_uis(src)
else if(href_list["insertline"])
var/num = round(text2num(href_list["insertline"]))
@@ -227,14 +227,14 @@
newline = copytext(newline, 1, 200)
lines.Insert(num, newline)
nanomanager.update_uis(src)
SSnanoui.update_uis(src)
else if(href_list["deleteline"])
var/num = round(text2num(href_list["deleteline"]))
if(num > lines.len || num < 1)
return
lines.Cut(num, num + 1)
nanomanager.update_uis(src)
SSnanoui.update_uis(src)
else if(href_list["modifyline"])
var/num = round(text2num(href_list["modifyline"]))
@@ -246,11 +246,11 @@
if(num > lines.len || num < 1)
return
lines[num] = content
nanomanager.update_uis(src)
SSnanoui.update_uis(src)
else if(href_list["stop"])
playing = 0
nanomanager.update_uis(src)
SSnanoui.update_uis(src)
/datum/song/proc/sanitize_tempo(new_tempo)
new_tempo = abs(new_tempo)
@@ -6,6 +6,7 @@
density = 0
anchored = 1
layer = 4
armor = list(melee = 100, bullet = 80, laser = 80, energy = 100, bomb = 50, bio = 100, rad = 100)
var/list/mobs_can_pass = list(
/mob/living/carbon/slime,
/mob/living/simple_animal/mouse,
+1
View File
@@ -4,6 +4,7 @@
opacity = 0
density = 0
layer = 3.5
armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
/obj/structure/sign/ex_act(severity)
switch(severity)
@@ -7,6 +7,7 @@
icon_state = "nest"
var/health = 100
var/image/nest_overlay
comfort = 0
/obj/structure/stool/bed/nest/New()
nest_overlay = image('icons/mob/alien.dmi', "nestoverlay", layer=MOB_LAYER - 0.2)
@@ -18,6 +18,7 @@
buildstackamount = 2
var/movable = 0 // For mobility checks
buckle_offset = -6
var/comfort = 2 //defualt comfort
/obj/structure/stool/bed/MouseDrop(atom/over_object)
..(over_object, skip_fucking_stool_shit = 1)
@@ -38,6 +39,7 @@
buildstackamount = 10
buildstacktype = /obj/item/stack/sheet/wood
buckle_offset = 0
comfort = 0.5
/obj/structure/stool/bed/dogbed/ian
name = "Ian's bed"
@@ -48,7 +50,7 @@
name = "resting contraption"
desc = "This looks similar to contraptions from Earth. Could aliens be stealing our technology?"
icon_state = "abed"
comfort = 0.3
/obj/structure/stool/bed/proc/handle_rotation()
return
@@ -68,6 +70,7 @@
icon_state = "down"
burn_state = FIRE_PROOF
anchored = 0
comfort = 1
/obj/structure/stool/bed/roller/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/roller_holder))
@@ -7,6 +7,7 @@
buildstackamount = 1
buckle_offset = 0
var/propelled = 0 // Check for fire-extinguisher-driven chairs
comfort = 0
/obj/structure/stool/bed/chair/New()
..()
@@ -128,6 +128,7 @@
desc = "Four pieces of brass arranged in a square. It's slightly warm to the touch."
icon_state = "brass_frame"
burn_state = FIRE_PROOF
unacidable = 1
framestack = /obj/item/stack/tile/brass
framestackamount = 1
+21 -108
View File
@@ -82,42 +82,6 @@
new /obj/structure/table/reinforced/brass(loc)
qdel(src)
/obj/structure/table/ex_act(severity)
switch(severity)
if(1)
qdel(src)
return
if(2)
if(prob(50))
qdel(src)
return
if(3)
if(prob(25))
deconstruct(FALSE)
else
return
/obj/structure/table/blob_act()
if(prob(75))
qdel(src)
/obj/structure/table/attack_alien(mob/living/user)
user.do_attack_animation(src)
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1)
visible_message("<span class='danger'>[user] slices [src] apart!</span>")
deconstruct(FALSE)
/obj/structure/table/mech_melee_attack(obj/mecha/M)
visible_message("<span class='danger'>[M] smashes [src] apart!</span>")
deconstruct(FALSE)
/obj/structure/table/attack_animal(mob/living/simple_animal/user)
if(user.environment_smash)
user.do_attack_animation(src)
playsound(loc, 'sound/weapons/Genhit.ogg', 50, 1)
visible_message("<span class='danger'>[user] smashes [src] apart!</span>")
deconstruct(FALSE)
/obj/structure/table/attack_hand(mob/living/user)
if(HULK in user.mutations)
user.do_attack_animation(src)
@@ -254,18 +218,7 @@
if(isrobot(user))
return
if(istype(I, /obj/item/weapon/melee/energy/blade))
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, loc)
spark_system.start()
playsound(loc, I.usesound, 50, 1)
playsound(loc, "sparks", 50, 1)
for(var/mob/O in viewers(user, 4))
O.show_message("<span class='notice'>The [src] was sliced apart by [user]!</span>", 1, "<span class='warning'>You hear [src] coming apart.</span>", 2)
deconstruct(FALSE)
return
if(!(I.flags & ABSTRACT))
if(user.a_intent != INTENT_HARM && !(I.flags & ABSTRACT))
if(user.drop_item())
I.Move(loc)
var/list/click_params = params2list(params)
@@ -275,8 +228,8 @@
//Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the table turf)
I.pixel_x = Clamp(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2)
I.pixel_y = Clamp(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2)
return
else
return ..()
/obj/structure/table/deconstruct(disassembled = TRUE, wrench_disassembly = 0)
if(can_deconstruct)
@@ -401,6 +354,7 @@
icon_state = "glass_table"
buildstack = /obj/item/stack/sheet/glass
max_integrity = 70
unacidable = 1
canSmoothWith = null
var/list/debris = list()
@@ -465,6 +419,11 @@
debris -= AM
qdel(src)
/obj/structure/table/glass/narsie_act()
color = NARSIE_WINDOW_COLOUR
for(var/obj/item/weapon/shard/S in debris)
S.color = NARSIE_WINDOW_COLOUR
/*
* Wooden tables
*/
@@ -534,6 +493,7 @@
canSmoothWith = list(/obj/structure/table/reinforced, /obj/structure/table)
max_integrity = 200
integrity_failure = 50
armor = list(melee = 10, bullet = 30, laser = 30, energy = 100, bomb = 20, bio = 0, rad = 0)
/obj/structure/table/reinforced/deconstruction_hints(mob/user)
if(deconstruction_ready)
@@ -601,8 +561,8 @@
icon = 'icons/obj/objects.dmi'
icon_state = "rack"
layer = TABLE_LAYER
density = 1
anchored = 1
density = TRUE
anchored = TRUE
pass_flags = LETPASSTHROW
max_integrity = 20
@@ -610,28 +570,6 @@
..()
to_chat(user, "<span class='notice'>It's held together by a couple of <b>bolts</b>.</span>")
/obj/structure/rack/ex_act(severity)
switch(severity)
if(1)
qdel(src)
if(2)
qdel(src)
if(prob(50))
new /obj/item/weapon/rack_parts(loc)
if(3)
if(prob(25))
qdel(src)
new /obj/item/weapon/rack_parts(loc)
/obj/structure/rack/blob_act()
if(prob(75))
qdel(src)
return
else if(prob(50))
new /obj/item/weapon/rack_parts(loc)
qdel(src)
return
/obj/structure/rack/CanPass(atom/movable/mover, turf/target, height=0)
if(height==0)
return 1
@@ -667,46 +605,21 @@
return
if(isrobot(user))
return
if(user.a_intent == INTENT_HARM)
return ..()
if(!(W.flags & ABSTRACT))
if(user.drop_item())
W.Move(loc)
return
/obj/structure/rack/attack_hand(mob/user)
if(HULK in user.mutations)
visible_message("<span class='danger'>[user] smashes [src] apart!</span>")
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
deconstruct()
else
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
playsound(loc, 'sound/items/dodgeball.ogg', 80, 1)
user.visible_message("<span class='warning'>[user] kicks [src].</span>", \
"<span class='danger'>You kick [src].</span>")
obj_integrity -= rand(1,2)
healthcheck()
/obj/structure/rack/mech_melee_attack(obj/mecha/M)
visible_message("<span class='danger'>[M] smashes [src] apart!</span>")
deconstruct()
/obj/structure/rack/attack_alien(mob/living/user)
/obj/structure/rack/attack_hand(mob/living/user)
if(user.weakened || user.resting || user.lying)
return
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
visible_message("<span class='danger'>[user] slices [src] apart!</span>")
deconstruct()
/obj/structure/rack/attack_animal(mob/living/simple_animal/user)
if(user.environment_smash)
user.do_attack_animation(src)
visible_message("<span class='danger'>[user] smashes [src] apart!</span>")
deconstruct()
/obj/structure/rack/attack_tk() // no telehulk sorry
return
/obj/structure/rack/proc/healthcheck()
if(obj_integrity <= 0)
deconstruct()
user.visible_message("<span class='warning'>[user] kicks [src].</span>", \
"<span class='danger'>You kick [src].</span>")
take_damage(rand(4,8), BRUTE, "melee", 1)
/obj/structure/rack/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
switch(damage_type)
@@ -40,7 +40,7 @@
/obj/structure/dispenser/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state)
user.set_machine(src)
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "tank_dispenser.tmpl", name, 275, 100, state = state)
ui.open()
@@ -62,7 +62,7 @@
to_chat(user, "<span class='notice'>You put [I] in [src].</span>")
else
to_chat(user, "<span class='notice'>[src] is full.</span>")
nanomanager.update_uis(src)
SSnanoui.update_uis(src)
if(istype(I, /obj/item/weapon/tank/plasma))
if(plasmatanks < 10)
user.drop_item()
@@ -73,7 +73,7 @@
to_chat(user, "<span class='notice'>You put [I] in [src].</span>")
else
to_chat(user, "<span class='notice'>[src] is full.</span>")
nanomanager.update_uis(src)
SSnanoui.update_uis(src)
if(istype(I, /obj/item/weapon/wrench))
if(anchored)
to_chat(user, "<span class='notice'>You lean down and unwrench [src].</span>")
@@ -114,7 +114,7 @@
update_icon()
add_fingerprint(usr)
updateUsrDialog()
nanomanager.update_uis(src)
SSnanoui.update_uis(src)
else
nanomanager.close_user_uis(usr,src)
SSnanoui.close_user_uis(usr,src)
return 1
+129 -130
View File
@@ -9,38 +9,41 @@
*/
obj/structure/windoor_assembly
/obj/structure/windoor_assembly
icon = 'icons/obj/doors/windoor.dmi'
name = "windoor Assembly"
name = "windoor assembly"
icon_state = "l_windoor_assembly01"
anchored = 0
density = 0
desc = "A small glass and wire assembly for windoors."
anchored = FALSE
density = FALSE
dir = NORTH
max_integrity = 300
var/ini_dir
var/obj/item/weapon/airlock_electronics/electronics = null
var/created_name = null
var/obj/item/weapon/airlock_electronics/electronics
var/created_name
//Vars to help with the icon's name
var/facing = "l" //Does the windoor open to the left or right?
var/secure = 0 //Whether or not this creates a secure windoor
var/secure = FALSE //Whether or not this creates a secure windoor
var/state = "01" //How far the door assembly has progressed
obj/structure/windoor_assembly/New(dir=NORTH)
obj/structure/windoor_assembly/New(loc, set_dir)
..()
src.ini_dir = src.dir
if(set_dir)
dir = set_dir
ini_dir = dir
air_update_turf(1)
obj/structure/windoor_assembly/Destroy()
density = 0
density = FALSE
QDEL_NULL(electronics)
air_update_turf(1)
return ..()
/obj/structure/windoor_assembly/Move()
var/turf/T = loc
..()
. = ..()
setDir(ini_dir)
move_update_air(T)
/obj/structure/windoor_assembly/update_icon()
@@ -54,13 +57,13 @@ obj/structure/windoor_assembly/Destroy()
else
return 1
/obj/structure/windoor_assembly/CanAtmosPass(var/turf/T)
/obj/structure/windoor_assembly/CanAtmosPass(turf/T)
if(get_dir(loc, T) == dir)
return !density
else
return 1
/obj/structure/windoor_assembly/CheckExit(atom/movable/mover as mob|obj, turf/target as turf)
/obj/structure/windoor_assembly/CheckExit(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
return 1
if(get_dir(loc, target) == dir)
@@ -69,166 +72,166 @@ obj/structure/windoor_assembly/Destroy()
return 1
/obj/structure/windoor_assembly/attackby(obj/item/W as obj, mob/user as mob, params)
/obj/structure/windoor_assembly/attackby(obj/item/W, mob/user, params)
//I really should have spread this out across more states but thin little windoors are hard to sprite.
add_fingerprint(user)
switch(state)
if("01")
if(istype(W, /obj/item/weapon/weldingtool) && !anchored )
if(iswelder(W) && !anchored)
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0,user))
user.visible_message("<span class='warning'>[user] dissassembles the windoor assembly.</span>", "<span class='notice'>You start to dissassemble the windoor assembly.</span>")
playsound(src.loc, WT.usesound, 50, 1)
user.visible_message("<span class='warning'>[user] disassembles the windoor assembly.</span>", "<span class='notice'>You start to disassemble the windoor assembly...</span>")
playsound(loc, 'sound/items/welder2.ogg', 50, 1)
if(do_after(user, 40 * WT.toolspeed, target = src))
if(!src || !WT.isOn()) return
to_chat(user, "<span class='notice'>You dissasembled the windoor assembly!</span>")
if(!src || !WT.isOn())
return
to_chat(user, "<span class='notice'>You disassemble the windoor assembly.</span>")
var/obj/item/stack/sheet/rglass/RG = new (get_turf(src), 5)
RG.add_fingerprint(user)
if(secure)
var/obj/item/stack/rods/R = new (get_turf(src), 4)
R.add_fingerprint(user)
qdel(src)
else
return
//Wrenching an unsecure assembly anchors it in place. Step 4 complete
if(istype(W, /obj/item/weapon/wrench) && !anchored)
for(var/obj/machinery/door/window/WD in src.loc)
if(WD.dir == src.dir)
to_chat(user, "<span class='warning'>There is already a windoor in that location.</span>")
if(iswrench(W) && !anchored)
for(var/obj/machinery/door/window/WD in loc)
if(WD.dir == dir)
to_chat(user, "<span class='warning'>There is already a windoor in that location!</span>")
return
playsound(src.loc, W.usesound, 100, 1)
user.visible_message("[user] secures the windoor assembly to the floor.", "You start to secure the windoor assembly to the floor.")
playsound(loc, W.usesound, 100, 1)
user.visible_message("[user] secures the windoor assembly to the floor.", "You start to secure the windoor assembly to the floor...")
if(do_after(user, 40 * W.toolspeed, target = src))
if(!src || src.anchored)
if(!src || anchored)
return
for(var/obj/machinery/door/window/WD in src.loc)
if(WD.dir == src.dir)
to_chat(user, "<span class='warning'>There is already a windoor in that location.</span>")
for(var/obj/machinery/door/window/WD in loc)
if(WD.dir == dir)
to_chat(user, "<span class='warning'>There is already a windoor in that location!</span>")
return
to_chat(user, "<span class='notice'>You've secured the windoor assembly!</span>")
src.anchored = 1
if(src.secure)
src.name = "secure anchored windoor assembly"
to_chat(user, "<span class='notice'>You secure the windoor assembly.</span>")
anchored = TRUE
if(secure)
name = "secure anchored windoor assembly"
else
src.name = "anchored windoor assembly"
name = "anchored windoor assembly"
//Unwrenching an unsecure assembly un-anchors it. Step 4 undone
else if(istype(W, /obj/item/weapon/wrench) && anchored)
else if(iswrench(W) && anchored)
playsound(loc, W.usesound, 100, 1)
user.visible_message("[user] unsecures the windoor assembly to the floor.", "You start to unsecure the windoor assembly to the floor.")
user.visible_message("[user] unsecures the windoor assembly from the floor.", "You start to unsecure the windoor assembly from the floor...")
if(do_after(user, 40 * W.toolspeed, target = src))
if(!src || !src.anchored)
if(!src || !anchored)
return
to_chat(user, "<span class='notice'>You've unsecured the windoor assembly!</span>")
src.anchored = 0
if(src.secure)
src.name = "secure windoor assembly"
to_chat(user, "<span class='notice'>You unsecure the windoor assembly.</span>")
anchored = FALSE
if(secure)
name = "secure windoor assembly"
else
src.name = "windoor assembly"
name = "windoor assembly"
//Adding plasteel makes the assembly a secure windoor assembly. Step 2 (optional) complete.
else if(istype(W, /obj/item/stack/sheet/plasteel) && !secure)
var/obj/item/stack/sheet/plasteel/P = W
if(P.amount < 2)
to_chat(user, "<span class='danger'>You need more plasteel to do this.</span>")
if(P.get_amount() < 2)
to_chat(user, "<span class='warning'>You need more plasteel to do this!</span>")
return
to_chat(user, "<span class='notice'>You start to reinforce the windoor with plasteel.</span>")
to_chat(user, "<span class='notice'>You start to reinforce the windoor with plasteel...</span>")
if(do_after(user, 40 * P.toolspeed, target = src))
if(!src || secure)
if(!src || secure || P.get_amount() < 2)
return
playsound(loc, P.usesound, 100, 1)
P.use(2)
to_chat(user, "<span class='notice'>You reinforce the windoor.</span>")
src.secure = 1
if(src.anchored)
src.name = "secure anchored windoor assembly"
secure = TRUE
if(anchored)
name = "secure anchored windoor assembly"
else
src.name = "secure windoor assembly"
name = "secure windoor assembly"
//Adding cable to the assembly. Step 5 complete.
else if(istype(W, /obj/item/stack/cable_coil) && anchored)
user.visible_message("[user] wires the windoor assembly.", "You start to wire the windoor assembly.")
else if(iscoil(W) && anchored)
user.visible_message("[user] wires the windoor assembly.", "You start to wire the windoor assembly...")
if(do_after(user, 40 * W.toolspeed, target = src))
if(!src || !src.anchored || src.state != "01")
if(!src || !anchored || state != "01")
return
var/obj/item/stack/cable_coil/CC = W
CC.use(1)
to_chat(user, "<span class='notice'>You wire the windoor!</span>")
to_chat(user, "<span class='notice'>You wire the windoor.</span>")
playsound(loc, CC.usesound, 100, 1)
src.state = "02"
if(src.secure)
src.name = "secure wired windoor assembly"
state = "02"
if(secure)
name = "secure wired windoor assembly"
else
src.name = "wired windoor assembly"
name = "wired windoor assembly"
else
..()
return ..()
if("02")
//Removing wire from the assembly. Step 5 undone.
if(istype(W, /obj/item/weapon/wirecutters))
playsound(src.loc, W.usesound, 100, 1)
user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly.")
if(iswirecutter(W))
playsound(loc, W.usesound, 100, 1)
user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly...")
if(do_after(user, 40 * W.toolspeed, target = src))
if(!src || src.state != "02")
if(!src || state != "02")
return
to_chat(user, "<span class='notice'>You cut the windoor wires!</span>")
to_chat(user, "<span class='notice'>You cut the windoor wires.</span>")
new/obj/item/stack/cable_coil(get_turf(user), 1)
src.state = "01"
if(src.secure)
src.name = "secure anchored windoor assembly"
state = "01"
if(secure)
name = "secure anchored windoor assembly"
else
src.name = "anchored windoor assembly"
name = "anchored windoor assembly"
//Adding airlock electronics for access. Step 6 complete.
else if(istype(W, /obj/item/weapon/airlock_electronics))
playsound(src.loc, W.usesound, 100, 1)
user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.")
playsound(loc, W.usesound, 100, 1)
user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly...")
user.drop_item()
W.loc = src
W.forceMove(src)
if(do_after(user, 40 * W.toolspeed, target = src))
if(!src || src.electronics)
W.loc = src.loc
if(!src || electronics)
W.forceMove(loc)
return
to_chat(user, "<span class='notice'>You've installed the airlock electronics!</span>")
src.name = "near finished windoor assembly"
src.electronics = W
to_chat(user, "<span class='notice'>You install the airlock electronics.</span>")
name = "near finished windoor assembly"
electronics = W
else
W.loc = src.loc
W.forceMove(loc)
//Screwdriver to remove airlock electronics. Step 6 undone.
else if(istype(W, /obj/item/weapon/screwdriver))
else if(isscrewdriver(W))
if(!electronics)
return
playsound(src.loc, W.usesound, 100, 1)
user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to uninstall electronics from the airlock assembly.")
playsound(loc, W.usesound, 100, 1)
user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to uninstall electronics from the airlock assembly...")
if(do_after(user, 40 * W.toolspeed, target = src))
if(!src || !electronics)
return
to_chat(user, "<span class='notice'>You've removed the airlock electronics!</span>")
src.name = "wired windoor assembly"
to_chat(user, "<span class='notice'>You remove the airlock electronics.</span>")
name = "wired windoor assembly"
var/obj/item/weapon/airlock_electronics/ae
ae = electronics
electronics = null
ae.loc = src.loc
ae.forceMove(loc)
else if(istype(W, /obj/item/weapon/pen))
var/t = stripped_input(user, "Enter the name for the door.", src.name, src.created_name,MAX_NAME_LEN)
var/t = stripped_input(user, "Enter the name for the door.", name, created_name,MAX_NAME_LEN)
if(!t)
return
if(!in_range(src, usr) && src.loc != usr)
if(!in_range(src, usr) && loc != usr)
return
created_name = t
return
@@ -236,70 +239,71 @@ obj/structure/windoor_assembly/Destroy()
//Crowbar to complete the assembly, Step 7 complete.
else if(istype(W, /obj/item/weapon/crowbar))
if(!src.electronics)
to_chat(usr, "<span class='danger'>The assembly is missing electronics.</span>")
else if(iscrowbar(W))
if(!electronics)
to_chat(usr, "<span class='warning'>The assembly is missing electronics!</span>")
return
usr << browse(null, "window=windoor_access")
playsound(src.loc, W.usesound, 100, 1)
user.visible_message("[user] pries the windoor into the frame.", "You start prying the windoor into the frame.")
playsound(loc, W.usesound, 100, 1)
user.visible_message("[user] pries the windoor into the frame.", "You start prying the windoor into the frame...")
if(do_after(user, 40 * W.toolspeed, target = src))
if(src.loc && src.electronics)
if(loc && electronics)
for(var/obj/machinery/door/window/WD in loc)
if(WD.dir == dir)
return
density = 1 //Shouldn't matter but just incase
to_chat(user, "<span class='notice'>You finish the windoor!</span>")
density = TRUE //Shouldn't matter but just incase
to_chat(user, "<span class='notice'>You finish the windoor.</span>")
if(secure)
var/obj/machinery/door/window/brigdoor/windoor = new /obj/machinery/door/window/brigdoor(src.loc)
if(src.facing == "l")
if(facing == "l")
windoor.icon_state = "leftsecureopen"
windoor.base_state = "leftsecure"
else
windoor.icon_state = "rightsecureopen"
windoor.base_state = "rightsecure"
windoor.dir = src.dir
windoor.density = 0
windoor.setDir(dir)
windoor.density = FALSE
if(src.electronics.one_access)
windoor.req_one_access = src.electronics.conf_access
if(electronics.one_access)
windoor.req_one_access = electronics.conf_access
else
windoor.req_access = src.electronics.conf_access
windoor.req_access = electronics.conf_access
windoor.electronics = src.electronics
src.electronics.loc = windoor
electronics.forceMove(windoor)
if(created_name)
windoor.name = created_name
qdel(src)
windoor.close()
else
var/obj/machinery/door/window/windoor = new /obj/machinery/door/window(src.loc)
if(src.facing == "l")
var/obj/machinery/door/window/windoor = new /obj/machinery/door/window(loc)
if(facing == "l")
windoor.icon_state = "leftopen"
windoor.base_state = "left"
else
windoor.icon_state = "rightopen"
windoor.base_state = "right"
windoor.dir = src.dir
windoor.density = 0
windoor.setDir(dir)
windoor.density = FALSE
windoor.req_access = src.electronics.conf_access
if(electronics.one_access)
windoor.req_one_access = electronics.conf_access
else
windoor.req_access = electronics.conf_access
windoor.electronics = src.electronics
src.electronics.loc = windoor
electronics.forceMove(windoor)
if(created_name)
windoor.name = created_name
qdel(src)
windoor.close()
qdel(src)
else
..()
return ..()
//Update to reflect changes(if applicable)
update_icon()
@@ -312,28 +316,23 @@ obj/structure/windoor_assembly/Destroy()
set src in oview(1)
if(usr.stat || !usr.canmove || usr.restrained())
return
if(src.anchored)
if(anchored)
to_chat(usr, "It is fastened to the floor; therefore, you can't rotate it!")
return 0
//if(src.state != "01")
//update_nearby_tiles(need_rebuild=1) //Compel updates before
src.dir = turn(src.dir, 270)
//if(src.state != "01")
//update_nearby_tiles(need_rebuild=1)
src.ini_dir = src.dir
setDir(turn(dir, 270))
ini_dir = dir
update_icon()
return
return TRUE
/obj/structure/windoor_assembly/AltClick(mob/user)
..()
if(user.incapacitated())
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
return
if(!Adjacent(user))
if(!in_range(src, user))
return
revrotate()
else
revrotate()
//Flips the windoor assembly, determines whather the door opens to the left or the right
/obj/structure/windoor_assembly/verb/flip()
@@ -343,11 +342,11 @@ obj/structure/windoor_assembly/Destroy()
if(usr.stat || !usr.canmove || usr.restrained())
return
if(src.facing == "l")
if(facing == "l")
to_chat(usr, "The windoor will now slide to the right.")
src.facing = "r"
facing = "r"
else
src.facing = "l"
facing = "l"
to_chat(usr, "The windoor will now slide to the left.")
update_icon()
+4 -2
View File
@@ -148,7 +148,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
return
/obj/structure/window/proc/attack_generic(mob/living/user as mob, damage = 0) //used by attack_alien, attack_animal, and attack_slime
/obj/structure/window/attack_generic(mob/living/user, damage = 0) //used by attack_alien, attack_animal, and attack_slime
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
health -= damage
@@ -446,6 +446,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
shardtype = /obj/item/weapon/shard/plasma
glasstype = /obj/item/stack/sheet/plasmaglass
health = 120
armor = list("melee" = 75, "bullet" = 5, "laser" = 0, "energy" = 0, "bomb" = 45, "bio" = 100, "rad" = 100)
/obj/structure/window/plasmabasic/New(Loc,re=0)
..()
@@ -474,7 +475,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
glasstype = /obj/item/stack/sheet/plasmaglass
reinf = 1
health = 160
armor = list("melee" = 85, "bullet" = 20, "laser" = 0, "energy" = 0, "bomb" = 60, "bio" = 100, "rad" = 100)
/obj/structure/window/plasmareinforced/New(Loc,re=0)
..()
@@ -499,6 +500,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
reinf = 1
basestate = "rwindow"
health = 40
armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 25, "bio" = 100, "rad" = 100)
/obj/structure/window/reinforced/tinted
name = "tinted window"