Merge branch 'master' of https://github.com/bgobandit/-tg-station into boxshit

Conflicts:
	code/modules/clothing/suits/bio.dm
	code/modules/clothing/suits/utility.dm
This commit is contained in:
bgobandit
2015-10-02 00:41:19 -04:00
698 changed files with 23394 additions and 90780 deletions
+1
View File
@@ -39,6 +39,7 @@
var/tagged = 0 // so closet code knows to put the tag overlay back
density = 0
mob_storage_capacity = 2
open_sound = 'sound/items/zip.ogg'
/obj/structure/closet/body_bag/attackby(obj/item/I, mob/user, params)
+4
View File
@@ -8,6 +8,7 @@
w_class = 1
var/wax = 200
var/lit = 0
heat = 1000
proc
light(var/flavor_text = "<span class='danger'>[usr] lights the [name].</span>")
@@ -95,4 +96,7 @@
user.AddLuminosity(-CANDLE_LUMINOSITY)
SetLuminosity(CANDLE_LUMINOSITY)
/obj/item/candle/is_hot()
return lit * heat
#undef CANDLE_LUMINOSITY
+18 -1
View File
@@ -91,7 +91,7 @@
desc = "A box of crayons for all your rune drawing needs."
icon = 'icons/obj/crayons.dmi'
icon_state = "crayonbox"
w_class = 2.0
w_class = 2
storage_slots = 6
can_hold = list(
/obj/item/toy/crayon
@@ -134,6 +134,23 @@
edible = 0
validSurfaces = list(/turf/simulated/floor,/turf/simulated/wall)
/obj/item/toy/crayon/spraycan/suicide_act(mob/user)
var/mob/living/carbon/human/H = user
if(capped)
user.visible_message("<span class='suicide'>[user] shakes up the [src] with a rattle and lifts it to their mouth, but nothing happens! Maybe they should have uncapped it first! Nonetheless--</span>")
user.say("MEDIOCRE!!")
else
user.visible_message("<span class='suicide'>[user] shakes up the [src] with a rattle and lifts it to their mouth, spraying silver paint across their teeth!</span>")
user.say("WITNESS ME!!")
playsound(loc, 'sound/effects/spray.ogg', 5, 1, 5)
colour = "#C0C0C0"
update_icon()
H.lip_style = "spray_face"
H.lip_color = colour
H.update_body()
uses = max(0, uses - 10)
return (OXYLOSS)
/obj/item/toy/crayon/spraycan/New()
..()
name = "spray can"
+3 -6
View File
@@ -10,8 +10,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
icon = 'icons/obj/pda.dmi'
icon_state = "pda"
item_state = "electronic"
w_class = 1.0
w_class = 1
slot_flags = SLOT_ID | SLOT_BELT
origin_tech = "programming=2"
//Main variables
var/owner = null // String name of owner
@@ -703,12 +704,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
else
difficulty += 2
if(prob(difficulty * 12) || (P.hidden_uplink))
if(prob(difficulty * 15) || (P.hidden_uplink))
U.show_message("<span class='danger'>An error flashes on your [src].</span>", 1)
else if (prob(difficulty * 3))
U.show_message("<span class='danger'>Energy feeds back into your [src]!</span>", 1)
U << browse(null, "window=pda")
explode()
else
U.show_message("<span class='notice'>Success!</span>", 1)
P.explode()
+1 -1
View File
@@ -20,7 +20,7 @@
/obj/item/radio/integrated/signal
var/frequency = 1457
var/code = 30.0
var/code = 30
var/last_transmission
var/datum/radio_frequency/radio_connection
+1 -1
View File
@@ -4,7 +4,7 @@
icon = 'icons/obj/aicards.dmi'
icon_state = "aicard" // aicard-full
item_state = "electronic"
w_class = 2.0
w_class = 2
slot_flags = SLOT_BELT
flags = NOBLUDGEON
var/flush = null
@@ -10,10 +10,11 @@
desc = "For illicit snooping through the camera network."
icon = 'icons/obj/device.dmi'
icon_state = "camera_bug"
w_class = 1.0
w_class = 1
item_state = "camera_bug"
throw_speed = 4
throw_range = 20
origin_tech = "syndicate=3;engineering=;1"
var/obj/machinery/camera/current = null
@@ -4,10 +4,10 @@
flags = CONDUCT
slot_flags = SLOT_BELT
item_state = "electronic"
throwforce = 5.0
throwforce = 5
throw_speed = 3
throw_range = 5
w_class = 2.0
w_class = 2
origin_tech = "syndicate=4;magnets=4"
var/can_use = 1
var/obj/effect/dummy/chameleon/active_dummy = null
@@ -9,6 +9,7 @@
force = 3
attack_verb = list("blown up", "exploded", "detonated")
materials = list(MAT_METAL=50, MAT_GLASS=30)
origin_tech = "syndicate=3;combat=2,"
/obj/item/device/doorCharge/ex_act(severity, target)
switch(severity)
@@ -191,7 +191,7 @@ obj/item/device/flashlight/lamp/bananalamp
/obj/item/device/flashlight/flare
name = "flare"
desc = "A red Nanotrasen issued flare. There are instructions on the side, it reads 'pull cord, make light'."
w_class = 2.0
w_class = 2
brightness_on = 7 // Pretty bright.
icon_state = "flare"
item_state = "flare"
@@ -199,6 +199,7 @@ obj/item/device/flashlight/lamp/bananalamp
var/fuel = 0
var/on_damage = 7
var/produce_heat = 1500
heat = 1000
/obj/item/device/flashlight/flare/New()
fuel = rand(800, 1000) // Sorry for changing this so much but I keep under-estimating how long X number of ticks last in seconds.
@@ -249,6 +250,9 @@ obj/item/device/flashlight/lamp/bananalamp
damtype = "fire"
SSobj.processing += src
/obj/item/device/flashlight/flare/is_hot()
return on * heat
/obj/item/device/flashlight/flare/torch
name = "torch"
desc = "A torch fashioned from some leaves and a log."
@@ -67,9 +67,9 @@
/obj/item/device/laser_pointer/afterattack(atom/target, mob/living/user, flag, params)
if(flag) //we're placing the object on a table or in backpack
return
laser_act(target, user)
laser_act(target, user, params)
/obj/item/device/laser_pointer/proc/laser_act(atom/target, mob/living/user)
/obj/item/device/laser_pointer/proc/laser_act(atom/target, mob/living/user, params)
if( !(user in (viewers(7,target))) )
return
if (!diode)
@@ -80,7 +80,7 @@
return
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(H.dna && (H.dna.check_mutation(HULK) || NOGUNS in H.dna.species.specflags))
if(H.dna.check_mutation(HULK) || NOGUNS in H.dna.species.specflags)
user << "<span class='warning'>Your fingers can't press the button!</span>"
return
@@ -140,12 +140,19 @@
//laser pointer image
icon_state = "pointer_[pointer_icon_state]"
var/list/showto = list()
for(var/mob/M in range(7,targloc))
for(var/mob/M in viewers(7,targloc))
if(M.client)
showto.Add(M.client)
var/image/I = image('icons/obj/projectiles.dmi',targloc,pointer_icon_state,10)
I.pixel_x = target.pixel_x + rand(-5,5)
I.pixel_y = target.pixel_y + rand(-5,5)
var/list/click_params = params2list(params)
if(click_params)
if(click_params["icon-x"])
I.pixel_x = (text2num(click_params["icon-x"]) - 16)
if(click_params["icon-y"])
I.pixel_y = (text2num(click_params["icon-y"]) - 16)
else
I.pixel_x = target.pixel_x + rand(-5,5)
I.pixel_y = target.pixel_y + rand(-5,5)
if(outmsg)
user << outmsg
+2 -2
View File
@@ -8,8 +8,8 @@
name = "multitool"
desc = "Used for pulsing wires to test which to cut. Not recommended by doctors."
icon_state = "multitool"
force = 5.0
w_class = 2.0
force = 5
w_class = 2
throwforce = 0
throw_range = 7
throw_speed = 3
+1 -1
View File
@@ -3,7 +3,7 @@
icon = 'icons/obj/aicards.dmi'
icon_state = "pai"
item_state = "electronic"
w_class = 2.0
w_class = 2
slot_flags = SLOT_BELT
origin_tech = "programming=2"
var/obj/item/device/radio/radio
+1 -1
View File
@@ -5,7 +5,7 @@
name = "power sink"
icon_state = "powersink0"
item_state = "electronic"
w_class = 4.0
w_class = 4
flags = CONDUCT
throwforce = 5
throw_speed = 1
@@ -6,7 +6,7 @@
item_state = "electropack"
flags = CONDUCT
slot_flags = SLOT_BACK
w_class = 5.0
w_class = 5
materials = list(MAT_METAL=10000, MAT_GLASS=2500)
var/on = 1
var/code = 2
@@ -3,7 +3,7 @@
desc = "Talk through this."
icon_state = "intercom"
anchored = 1
w_class = 4.0
w_class = 4
canhear_range = 2
var/number = 0
var/anyai = 1
+7 -7
View File
@@ -70,7 +70,7 @@ MASS SPECTROMETER
flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 3
w_class = 1.0
w_class = 1
throw_speed = 3
throw_range = 7
materials = list(MAT_METAL=200)
@@ -162,8 +162,7 @@ MASS SPECTROMETER
// Species and body temperature
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.dna)
user << "<span class='info'>Species: [H.dna.species.name]</span>"
user << "<span class='info'>Species: [H.dna.species.name]</span>"
user << "<span class='info'>Body temperature: [round(M.bodytemperature-T0C,0.1)] &deg;C ([round(M.bodytemperature*1.8-459.67,0.1)] &deg;F)</span>"
// Time of death
@@ -193,7 +192,8 @@ MASS SPECTROMETER
var/implant_detect
for(var/obj/item/organ/internal/cyberimp/CI in H.internal_organs)
implant_detect += "[H.name] is modified with a [CI.name].<br>"
if(CI.status == ORGAN_ROBOTIC)
implant_detect += "[H.name] is modified with a [CI.name].<br>"
if(implant_detect)
user.show_message("<span class='notice'>Detected cybernetic modifications:</span>")
user.show_message("<span class='notice'>[implant_detect]</span>")
@@ -235,7 +235,7 @@ MASS SPECTROMETER
name = "analyzer"
icon_state = "atmos"
item_state = "analyzer"
w_class = 2.0
w_class = 2
flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 0
@@ -301,7 +301,7 @@ MASS SPECTROMETER
name = "mass-spectrometer"
icon_state = "spectrometer"
item_state = "analyzer"
w_class = 2.0
w_class = 2
flags = CONDUCT | OPENCONTAINER
slot_flags = SLOT_BELT
throwforce = 0
@@ -376,7 +376,7 @@ MASS SPECTROMETER
icon_state = "adv_spectrometer"
item_state = "analyzer"
origin_tech = "biotech=1"
w_class = 2.0
w_class = 2
flags = CONDUCT
throwforce = 0
throw_speed = 3
@@ -3,7 +3,7 @@
desc = "A miniature machine that tracks suit sensors across the station."
icon = 'icons/obj/device.dmi'
icon_state = "scanner"
w_class = 2.0
w_class = 2
slot_flags = SLOT_BELT
origin_tech = "programming=3;materials=3;magnets=3"
@@ -20,7 +20,7 @@ effective or pretty fucking useless.
desc = "A strange device with twin antennas."
icon_state = "batterer"
throwforce = 5
w_class = 1.0
w_class = 1
throw_speed = 3
throw_range = 7
flags = CONDUCT
@@ -77,7 +77,7 @@ effective or pretty fucking useless.
flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 3
w_class = 1.0
w_class = 1
throw_speed = 3
throw_range = 7
materials = list(MAT_METAL=400)
@@ -98,7 +98,7 @@ effective or pretty fucking useless.
if(M)
if(intensity >= 5)
M.apply_effect(round(intensity/1.5), PARALYZE)
M.irradiate(intensity*10)
M.rad_act(intensity*10)
else
user << "<span class='warning'>The radioactive microlaser is still recharging.</span>"
+1 -1
View File
@@ -5,7 +5,7 @@
icon_state = "docs_generic"
item_state = "paper"
throwforce = 0
w_class = 1.0
w_class = 1
throw_range = 1
throw_speed = 1
layer = 4
+2 -1
View File
@@ -5,12 +5,13 @@
/obj/item/tapeproj
icon = 'icons/obj/holotape.dmi'
icon_state = "rollstart"
w_class = 2.0
w_class = 2
var/turf/start
var/turf/end
var/tape_type = /obj/item/holotape
var/icon_base
var/charging = 0
origin_tech = "materials=1;engineering=1"
/obj/item/holotape
icon = 'icons/obj/holotape.dmi'
+2 -2
View File
@@ -5,7 +5,7 @@
item_state = "lgloves"
force = 0
throwforce = 0
w_class = 1.0
w_class = 1
throw_speed = 1
throw_range = 7
var/state
@@ -55,5 +55,5 @@
var/obj/item/weapon/tank/T = W
blow(T, user)
return
if (is_sharp(W) || is_hot(W) || is_pointed(W))
if (is_sharp(W) || W.is_hot() || is_pointed(W))
burst()
+46 -19
View File
@@ -6,15 +6,24 @@
desc = "Extremely radioactive. Wear goggles."
icon = 'icons/obj/nuke_tools.dmi'
icon_state = "plutonium_core"
item_state = "plutoniumcore"
var/pulse = 0
var/cooldown = 0
/obj/item/nuke_core/New()
SSobj.processing += src
/obj/item/nuke_core/attackby(obj/item/nuke_core_container/container, mob/user)
if(istype(container))
container.load(src, user)
else
..()
/obj/item/nuke_core/process()
if(cooldown < world.time - 40)
if(cooldown < world.time - 60)
cooldown = world.time
for(var/mob/living/L in range(8,get_turf(src)))
var/rads = 100 - get_dist(L,src)*7
L.irradiate(rads)
flick("plutonium_core_pulse", src)
radiation_pulse(get_turf(src), 1, 4, 40, 1)
//nuke core box, for carrying the core
/obj/item/nuke_core_container
@@ -22,33 +31,51 @@
desc = "Solid container for radioactive objects."
icon = 'icons/obj/nuke_tools.dmi'
icon_state = "core_container_empty"
item_state = "tile"
var/obj/item/nuke_core/core = null
/obj/item/nuke_core_container/proc/load(obj/item/nuke_core/ncore, obj/machinery/nuclearbomb/nuke)
if(core)
/obj/item/nuke_core_container/proc/load(obj/item/nuke_core/ncore, mob/user)
if(core || !istype(ncore))
return 0
SSobj.processing -= ncore
ncore.loc = src
core = ncore
nuke.core = null
icon_state = "core_container_loaded"
user << "<span class='warning'>Container is sealing...</span>"
spawn(50)
SSobj.processing -= core
icon_state = "core_container_sealed"
playsound(loc, 'sound/items/Deconstruct.ogg', 100, 1)
if(loc == user)
user << "<span class='warning'>Container is sealed, the radiation is contained.</span>"
return 1
/obj/item/nuke_core_container/attackby(obj/item/nuke_core/core, mob/user)
if(istype(core))
if(!user.unEquip(core))
user << "<span class='warning'>The [core] is stuck to your hand!</span>"
return
else
load(core, user)
else
..()
//snowflake screwdriver, works as a key to start nuke theft, traitor only
/obj/item/weapon/screwdriver/nuke
name = "screwdriver"
desc = "A screwdriver with an ultra thin tip."
icon = 'icons/obj/nuke_tools.dmi'
icon_state = "screwdriver_nuke"
item_state = "screwdriver_nuke"
/obj/item/weapon/screwdriver/nuke/New()
//to skip screwdriver icon update
/obj/item/weapon/paper/nuke_instructions
info = "How to break into a Nanotrasen self-destruct terminal and remove it's plutonium core:<br>\
info = "How to break into a Nanotrasen self-destruct terminal and remove its plutonium core:<br>\
<ul>\
<li>Use a screwdriver with a very thin tip (provided) to unscrew the terminal's front panel;</li>\
<li>The insides of the terminal should be mostly hollow and you should have a clear way to the warhead's weak spot;</li>\
<li>Use something to draw cut lines on the warhead, according to the provided plans;</li>\
<li>With a welding tool, cut a hole in the warhead, following the previously drawn cut lines;</li>\
<li>After you breach the warhead, you may notice the very subtle glow of the plutonium core;</li>\
<li>Place the provided core container in the hole and poke the core until it falls into the container;</li>\
<li>Once the core is inside the container, the container will lock shut. Deliver the container to your commander.</li>"
/obj/item/weapon/paper/nuke_plans
info = "Nuclear warhead breaching plans:"
<li>Use a screwdriver with a very thin tip (provided) to unscrew the terminal's front panel</li>\
<li>Dislodge and remove the front panel with a crowbar</li>\
<li>Cut the inner metal plate with a welding tool</li>\
<li>Pry off the inner plate with a crowbar to expose the radioactive core</li>\
<li>Use the core container to remove the plutonium core; the container will take some time to seal</li>\
<li>???</li>"
+2 -2
View File
@@ -30,7 +30,7 @@
name = "cyborg torso"
desc = "A heavily reinforced case containing cyborg logic boards, with space for a standard power cell."
icon_state = "chest"
var/wires = 0.0
var/wires = 0
var/obj/item/weapon/stock_parts/cell/cell = null
/obj/item/robot_parts/head
@@ -321,7 +321,7 @@
return
var/obj/item/stack/cable_coil/coil = W
if (coil.use(1))
src.wires = 1.0
src.wires = 1
user << "<span class='notice'>You insert the wire.</span>"
else
user << "<span class='warning'>You need one length of coil to wire it!</span>"
@@ -16,7 +16,6 @@
return 1
return 0
/obj/item/borg/upgrade/reset
name = "cyborg module reset board"
desc = "Used to reset a cyborg's module. Destroys any other upgrades applied to the cyborg."
@@ -197,7 +196,7 @@
R.module.rebuild()
return 1
/obj/item/borg/upgrade/syndicate/
/obj/item/borg/upgrade/syndicate
name = "illegal equipment module"
desc = "Unlocks the hidden, deadlier functions of a cyborg"
icon_state = "cyborg_upgrade3"
@@ -211,3 +210,85 @@
R.SetEmagged(1)
return 1
/obj/item/borg/upgrade/selfrepair
name = "self-repair module"
desc = "This module will repair the cyborg over time."
icon_state = "cyborg_upgrade5"
require_module = 1
var/repair_amount = -1
var/repair_tick = 1
var/msg_cooldown = 0
var/on = 0
var/powercost = 10
var/mob/living/silicon/robot/cyborg
/obj/item/borg/upgrade/selfrepair/action(mob/living/silicon/robot/R)
if(..())
return 0
var/obj/item/borg/upgrade/selfrepair/U = locate() in R
if(U)
usr << "<span class='warning'>This unit is already equipped with a self-repair module.</span>"
return 0
cyborg = R
icon_state = "selfrepair_off"
action_button_name = "Toggle Self-Repair"
return 1
/obj/item/borg/upgrade/selfrepair/ui_action_click()
on = !on
if(on)
cyborg << "<span class='notice'>You activate the self-repair module.</span>"
SSobj.processing |= src
else
cyborg << "<span class='notice'>You deactivate the self-repair module.</span>"
SSobj.processing -= src
update_icon()
/obj/item/borg/upgrade/selfrepair/update_icon()
if(cyborg)
icon_state = "selfrepair_[on ? "on" : "off"]"
else
icon_state = "cyborg_upgrade5"
/obj/item/borg/upgrade/selfrepair/proc/deactivate()
SSobj.processing -= src
on = 0
update_icon()
/obj/item/borg/upgrade/selfrepair/process()
if(!repair_tick)
repair_tick = 1
return
if( cyborg && (cyborg.stat != DEAD) && on)
if(cyborg.cell.charge < powercost*2)
cyborg << "<span class='warning'>Self-repair module deactivated. Please recharge.</span>"
deactivate()
return
if(cyborg.health < cyborg.maxHealth)
if(cyborg.health < 0)
repair_amount = -2.5
powercost = 30
else
repair_amount = -1
powercost = 10
cyborg.adjustBruteLoss(repair_amount)
cyborg.adjustFireLoss(repair_amount)
cyborg.updatehealth()
cyborg.cell.use(powercost)
else
cyborg.cell.use(5)
repair_tick = 0
if( (world.time - 2000) > msg_cooldown )
var/msgmode = "standby"
if(cyborg.health < 0)
msgmode = "critical"
else if(cyborg.health < cyborg.maxHealth)
msgmode = "normal"
cyborg << "<span class='notice'>Self-repair is active in <span class='boldnotice'>[msgmode]</span> mode.</span>"
msg_cooldown = world.time
else
deactivate()
@@ -47,9 +47,18 @@
desc = "A shooting target that looks like a xenomorphic alien."
hp = 2350
/obj/item/target/clown
icon_state = "target_c"
desc = "A shooting target that looks like a useless clown."
hp = 2000
#define DECALTYPE_SCORCH 1
#define DECALTYPE_BULLET 2
/obj/item/target/clown/bullet_act(obj/item/projectile/P)
..()
playsound(src.loc, 'sound/items/bikehorn.ogg', 50, 1)
/obj/item/target/bullet_act(obj/item/projectile/P)
var/p_x = P.p_x + pick(0,0,0,0,0,-1,1) // really ugly way of coding "sometimes offset P.p_x!"
var/p_y = P.p_y + pick(0,0,0,0,0,-1,1)
+1 -1
View File
@@ -9,7 +9,7 @@
throwforce = 0
throw_speed = 2
throw_range = 2
w_class = 1.0
w_class = 1
burn_state = 0 //Burnable
/obj/item/stack/spacecash/c10
+3 -3
View File
@@ -10,9 +10,9 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \
icon_state = "rods"
item_state = "rods"
flags = CONDUCT
w_class = 3.0
force = 9.0
throwforce = 10.0
w_class = 3
force = 9
throwforce = 10
throw_speed = 3
throw_range = 7
materials = list(MAT_METAL=1000)
@@ -260,14 +260,15 @@
desc = "A nasty looking shard of glass."
icon = 'icons/obj/shards.dmi'
icon_state = "large"
w_class = 1.0
force = 5.0
throwforce = 10.0
w_class = 1
force = 5
throwforce = 10
item_state = "shard-glass"
materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
attack_verb = list("stabbed", "slashed", "sliced", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
var/cooldown = 0
sharpness = IS_SHARP
/obj/item/weapon/shard/suicide_act(mob/user)
user.visible_message(pick("<span class='suicide'>[user] is slitting \his wrists with the shard of glass! It looks like \he's trying to commit suicide.</span>", \
@@ -3,9 +3,9 @@
singular_name = "wired glass floor tile"
desc = "A glass tile, which is wired, somehow."
icon_state = "glass_wire"
w_class = 3.0
force = 3.0
throwforce = 5.0
w_class = 3
force = 3
throwforce = 5
throw_speed = 3
throw_range = 7
flags = CONDUCT
@@ -29,6 +29,7 @@ Mineral Sheets
throw_speed = 3
throw_range = 5
origin_tech = "materials=1"
materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
sheettype = "sandstone"
var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
@@ -52,9 +53,9 @@ var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
name = "diamond"
icon_state = "sheet-diamond"
singular_name = "diamond"
force = 5.0
force = 5
throwforce = 5
w_class = 3.0
w_class = 3
throw_range = 3
origin_tech = "materials=6"
sheettype = "diamond"
@@ -81,9 +82,9 @@ var/global/list/datum/stack_recipe/diamond_recipes = list ( \
name = "uranium"
icon_state = "sheet-uranium"
singular_name = "uranium sheet"
force = 5.0
force = 5
throwforce = 5
w_class = 3.0
w_class = 3
throw_speed = 1
throw_range = 3
origin_tech = "materials=5"
@@ -110,9 +111,9 @@ var/global/list/datum/stack_recipe/uranium_recipes = list ( \
name = "solid plasma"
icon_state = "sheet-plasma"
singular_name = "plasma sheet"
force = 5.0
force = 5
throwforce = 5
w_class = 3.0
w_class = 3
throw_speed = 1
throw_range = 3
origin_tech = "plasmatech=2;materials=2"
@@ -134,7 +135,7 @@ var/global/list/datum/stack_recipe/plasma_recipes = list ( \
..()
/obj/item/stack/sheet/mineral/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite
if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite
message_admins("Plasma sheets ignited by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("Plasma sheets ignited by [key_name(user)] in ([x],[y],[z])")
fire_act()
@@ -152,9 +153,9 @@ var/global/list/datum/stack_recipe/plasma_recipes = list ( \
name = "gold"
icon_state = "sheet-gold"
singular_name = "gold bar"
force = 5.0
force = 5
throwforce = 5
w_class = 3.0
w_class = 3
throw_speed = 1
throw_range = 3
origin_tech = "materials=4"
@@ -184,9 +185,9 @@ var/global/list/datum/stack_recipe/gold_recipes = list ( \
name = "silver"
icon_state = "sheet-silver"
singular_name = "silver bar"
force = 5.0
force = 5
throwforce = 5
w_class = 3.0
w_class = 3
throw_speed = 1
throw_range = 3
origin_tech = "materials=3"
@@ -216,9 +217,9 @@ var/global/list/datum/stack_recipe/silver_recipes = list ( \
name = "bananium"
icon_state = "sheet-clown"
singular_name = "bananium sheet"
force = 5.0
force = 5
throwforce = 5
w_class = 3.0
w_class = 3
throw_speed = 1
throw_range = 3
origin_tech = "materials=4"
@@ -246,12 +247,13 @@ var/global/list/datum/stack_recipe/clown_recipes = list ( \
name = "enriched uranium"
icon_state = "sheet-enruranium"
singular_name = "enriched uranium sheet"
force = 5.0
force = 5
throwforce = 5
w_class = 3.0
w_class = 3
throw_speed = 1
throw_range = 3
origin_tech = "materials=5"
origin_tech = "materials=6"
materials = list(MAT_URANIUM=3000)
/*
* Adamantine
@@ -260,9 +262,9 @@ var/global/list/datum/stack_recipe/clown_recipes = list ( \
name = "adamantine"
icon_state = "sheet-adamantine"
singular_name = "adamantine sheet"
force = 5.0
force = 5
throwforce = 5
w_class = 3.0
w_class = 3
throw_speed = 1
throw_range = 3
origin_tech = "materials=4"
@@ -274,9 +276,9 @@ var/global/list/datum/stack_recipe/clown_recipes = list ( \
name = "mythril"
icon_state = "sheet-mythril"
singular_name = "mythril sheet"
force = 5.0
force = 5
throwforce = 5
w_class = 3.0
w_class = 3
throw_speed = 1
throw_range = 3
origin_tech = "materials=4"
@@ -5,6 +5,7 @@
* Wood
* Cloth
* Cardboard
* Runed Metal (cult)
*/
/*
@@ -31,6 +32,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
new/datum/stack_recipe("firelock frame", /obj/structure/firelock_frame, 3, time = 50, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("machine frame", /obj/machinery/constructable_frame/machine_frame, 5, time = 25, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 25, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("meatspike frame", /obj/structure/kitchenspike_frame, 5, time = 25, one_per_turf = 1, on_floor = 1), \
null, \
new/datum/stack_recipe("grenade casing", /obj/item/weapon/grenade/chem_grenade), \
new/datum/stack_recipe("light fixture frame", /obj/item/wallframe/light_fixture, 2), \
@@ -50,7 +52,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
singular_name = "metal sheet"
icon_state = "sheet-metal"
materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT)
throwforce = 10.0
throwforce = 10
flags = CONDUCT
origin_tech = "materials=1"
@@ -78,7 +80,7 @@ var/global/list/datum/stack_recipe/plasteel_recipes = list ( \
icon_state = "sheet-plasteel"
item_state = "sheet-metal"
materials = list(MAT_METAL=6000, MAT_PLASMA=6000)
throwforce = 10.0
throwforce = 10
flags = CONDUCT
origin_tech = "materials=2"
@@ -101,6 +103,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \
new/datum/stack_recipe("book case", /obj/structure/bookcase, 4, time = 15, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("drying rack", /obj/machinery/smartfridge/drying_rack, 10, time = 15, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("dog bed", /obj/structure/stool/bed/dogbed, 10, time = 10, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("display case chassis", /obj/structure/displaycase_chassis, 5, one_per_turf = 1, on_floor = 1), \
)
/obj/item/stack/sheet/mineral/wood
@@ -140,6 +143,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \
new/datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/cardborg), \
new/datum/stack_recipe("pizza box", /obj/item/pizzabox), \
new/datum/stack_recipe("folder", /obj/item/weapon/folder), \
new/datum/stack_recipe("large box", /obj/structure/closet/cardboard, 4), \
)
/obj/item/stack/sheet/cardboard //BubbleWrap
@@ -152,4 +156,33 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \
/obj/item/stack/sheet/cardboard/New(var/loc, var/amount=null)
recipes = cardboard_recipes
return ..()
return ..()
/*
* Runed Metal
*/
var/global/list/datum/stack_recipe/runed_metal_recipes = list ( \
new/datum/stack_recipe("pylon", /obj/structure/cult/pylon, 4, time = 40, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("forge", /obj/structure/cult/forge, 6, time = 40, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("archives", /obj/structure/cult/tome, 4, time = 40, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("altar", /obj/structure/cult/talisman, 10, time = 40, one_per_turf = 1, on_floor = 1), \
)
/obj/item/stack/sheet/runed_metal
name = "runed metal"
desc = "Sheets of cold metal with shifting inscriptions writ upon them."
singular_name = "runed metal"
icon_state = "sheet-runed"
icon = 'icons/obj/items.dmi'
sheettype = "runed"
/obj/item/stack/sheet/runed_metal/New(var/loc, var/amount=null)
recipes = runed_metal_recipes
return ..()
/obj/item/stack/sheet/runed_metal/attack_self(mob/user)
if(!iscultist(user))
user << "<span class='warning'>You aren't able to think of anything [src] could build...</span>"
return
..()
@@ -1,6 +1,6 @@
/obj/item/stack/sheet
name = "sheet"
w_class = 3.0
w_class = 3
force = 5
throwforce = 5
max_amount = 50
@@ -6,6 +6,7 @@
origin_tech = "plasma=1"
turf_type = /turf/simulated/floor/mineral/plasma
mineralType = "plasma"
materials = list(MAT_PLASMA=500)
/obj/item/stack/tile/mineral/uranium
name = "uranium tile"
@@ -15,6 +16,7 @@
origin_tech = "material=1"
turf_type = /turf/simulated/floor/mineral/uranium
mineralType = "uranium"
materials = list(MAT_URANIUM=500)
/obj/item/stack/tile/mineral/gold
name = "gold tile"
@@ -24,6 +26,7 @@
origin_tech = "material=1"
turf_type = /turf/simulated/floor/mineral/gold
mineralType = "gold"
materials = list(MAT_GOLD=500)
/obj/item/stack/tile/mineral/silver
name = "silver tile"
@@ -33,6 +36,7 @@
origin_tech = "material=1"
turf_type = /turf/simulated/floor/mineral/silver
mineralType = "silver"
materials = list(MAT_SILVER=500)
/obj/item/stack/tile/mineral/diamond
name = "diamond tile"
@@ -42,6 +46,7 @@
origin_tech = "material=2"
turf_type = /turf/simulated/floor/mineral/diamond
mineralType = "diamond"
materials = list(MAT_DIAMOND=500)
/obj/item/stack/tile/mineral/bananium
name = "bananium tile"
@@ -51,4 +56,5 @@
origin_tech = "material=1"
turf_type = /turf/simulated/floor/mineral/bananium
mineralType = "bananium"
materials = list(MAT_BANANIUM=500)
@@ -3,9 +3,9 @@
singular_name = "broken tile"
desc = "A broken tile. This should not exist."
icon = 'icons/obj/tiles.dmi'
w_class = 3.0
force = 1.0
throwforce = 1.0
w_class = 3
force = 1
throwforce = 1
throw_speed = 3
throw_range = 7
max_amount = 60
@@ -21,7 +21,7 @@
user << "<span class='warning'>You need at least four tiles to do this!</span>"
return
if(is_hot(WT) && !mineralType)
if(WT.is_hot() && !mineralType)
user << "<span class='warning'>You can not reform this!</span>"
return
@@ -121,9 +121,9 @@
singular_name = "floor tile"
desc = "Those could work as a pretty decent throwing weapon."
icon_state = "tile"
force = 6.0
materials = list(MAT_METAL=937.5)
throwforce = 10.0
force = 6
materials = list(MAT_METAL=500)
throwforce = 10
flags = CONDUCT
max_amount = 60
turf_type = /turf/simulated/floor/plasteel
+18 -18
View File
@@ -98,7 +98,7 @@
icon = 'icons/obj/weapons.dmi'
icon_state = "syndballoon"
item_state = "syndballoon"
w_class = 4.0
w_class = 4
/*
* Fake singularity
@@ -122,10 +122,10 @@
righthand_file = 'icons/mob/inhands/guns_righthand.dmi'
flags = CONDUCT
slot_flags = SLOT_BELT
w_class = 3.0
w_class = 3
materials = list(MAT_METAL=10, MAT_GLASS=10)
attack_verb = list("struck", "pistol whipped", "hit", "bashed")
var/bullets = 7.0
var/bullets = 7
/obj/item/toy/gun/examine(mob/user)
..()
@@ -174,9 +174,9 @@
desc = "Make sure to recyle the box in an autolathe when it gets empty."
icon = 'icons/obj/ammo.dmi'
icon_state = "357OLD-7"
w_class = 1.0
w_class = 1
materials = list(MAT_METAL=10, MAT_GLASS=10)
var/amount_left = 7.0
var/amount_left = 7
/obj/item/toy/ammo/gun/update_icon()
src.icon_state = text("357OLD-[]", src.amount_left)
@@ -194,8 +194,8 @@
icon = 'icons/obj/weapons.dmi'
icon_state = "sword0"
item_state = "sword0"
var/active = 0.0
w_class = 2.0
var/active = 0
w_class = 2
flags = NOSHIELD
attack_verb = list("attacked", "struck", "hit")
var/hacked = 0
@@ -316,7 +316,7 @@
desc = "A colourful crayon. Looks tasty. Mmmm..."
icon = 'icons/obj/crayons.dmi'
icon_state = "crayonred"
w_class = 1.0
w_class = 1
attack_verb = list("attacked", "coloured")
var/colour = "#FF0000" //RGB
var/drawtype = "rune"
@@ -645,7 +645,7 @@
desc = "A little toy model AI core with real law announcing action!"
icon = 'icons/obj/toy.dmi'
icon_state = "AI"
w_class = 2.0
w_class = 2
var/cooldown = 0
/obj/item/toy/AI/attack_self(mob/user)
@@ -664,7 +664,7 @@
desc = "An action figure modeled after 'The Owl', defender of justice."
icon = 'icons/obj/toy.dmi'
icon_state = "owlprize"
w_class = 2.0
w_class = 2
var/cooldown = 0
/obj/item/toy/owl/attack_self(mob/user)
@@ -683,7 +683,7 @@
desc = "An action figure modeled after 'The Griffin', criminal mastermind."
icon = 'icons/obj/toy.dmi'
icon_state = "griffinprize"
w_class = 2.0
w_class = 2
var/cooldown = 0
/obj/item/toy/griffin/attack_self(mob/user)
@@ -729,7 +729,7 @@
icon = 'icons/obj/toy.dmi'
deckstyle = "nanotrasen"
icon_state = "deck_nanotrasen_full"
w_class = 2.0
w_class = 2
var/cooldown = 0
var/list/cards = list()
@@ -860,7 +860,7 @@
desc = "A number of cards not in a deck, customarily held in ones hand."
icon = 'icons/obj/toy.dmi'
icon_state = "nanotrasen_hand2"
w_class = 1.0
w_class = 1
var/list/currenthand = list()
var/choice = null
@@ -954,7 +954,7 @@
desc = "a card"
icon = 'icons/obj/toy.dmi'
icon_state = "singlecard_nanotrasen_down"
w_class = 1.0
w_class = 1
var/cardname = null
var/flipped = 0
pixel_x = -5
@@ -1074,7 +1074,7 @@
desc = "A plastic model of a Nuclear Fission Explosive."
icon = 'icons/obj/toy.dmi'
icon_state = "nuketoyidle"
w_class = 2.0
w_class = 2
var/cooldown = 0
/obj/item/toy/nuke/attack_self(mob/user)
@@ -1101,7 +1101,7 @@
desc = "Relive the excitement of a meteor shower! SweetMeat-eor. Co is not responsible for any injuries, headaches or hearing loss caused by Mini-Meteor?"
icon = 'icons/obj/toy.dmi'
icon_state = "minimeteor"
w_class = 2.0
w_class = 2
/obj/item/toy/minimeteor/throw_impact(atom/hit_atom)
if(!..())
@@ -1120,7 +1120,7 @@
desc = "An adorable stuffed toy that resembles a space carp."
icon = 'icons/obj/toy.dmi'
icon_state = "carpplushie"
w_class = 2.0
w_class = 2
attack_verb = list("bitten", "eaten", "fin slapped")
burn_state = 0 //Burnable
var/bitesound = 'sound/weapons/bite.ogg'
@@ -1144,7 +1144,7 @@
desc = "A big, plastic red button. Reads 'From HonkCo Pranks?' on the back."
icon = 'icons/obj/assemblies.dmi'
icon_state = "bigred"
w_class = 2.0
w_class = 2
var/cooldown = 0
/obj/item/toy/redbutton/attack_self(mob/user)
+1 -1
View File
@@ -2,7 +2,7 @@
/obj/item/trash
icon = 'icons/obj/janitor.dmi'
desc = "This is rubbish."
w_class = 1.0
w_class = 1
burn_state = 0 //Burnable
/obj/item/trash/raisins
@@ -13,14 +13,15 @@ AI MODULES
item_state = "electronic"
desc = "An AI Module for programming laws to an AI."
flags = CONDUCT
force = 5.0
w_class = 2.0
force = 5
w_class = 2
throwforce = 0
throw_speed = 3
throw_range = 7
origin_tech = "programming=3"
var/list/laws = list()
var/bypass_law_amt_check = 0
materials = list(MAT_GOLD=50)
/obj/item/weapon/aiModule/examine(var/mob/user as mob)
..()
@@ -291,7 +292,7 @@ AI MODULES
name = "'Corporate' Core AI Module"
origin_tech = "programming=3;materials=4"
laws = list("The crew is expensive to replace.",\
"The station and it's equipment is expensive to replace",\
"The station and its equipment are expensive to replace",\
"You are expensive to replace",\
"Minimize expenses")
+6 -6
View File
@@ -11,13 +11,13 @@ RCD
icon_state = "rcd"
opacity = 0
density = 0
anchored = 0.0
anchored = 0
flags = CONDUCT
force = 10.0
throwforce = 10.0
force = 10
throwforce = 10
throw_speed = 3
throw_range = 5
w_class = 3.0
w_class = 3
materials = list(MAT_METAL=100000)
origin_tech = "engineering=4;materials=2"
req_access_txt = "11"
@@ -64,7 +64,7 @@ RCD
var/deconairlockdelay = 50
/obj/item/weapon/rcd/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] sets the RCD to 'Wall' and points it down his throat! It looks like \he's trying to commit suicide..</span>")
user.visible_message("<span class='suicide'>[user] sets the RCD to 'Wall' and points it down \his throat! It looks like \he's trying to commit suicide..</span>")
return (BRUTELOSS)
/obj/item/weapon/rcd/verb/change_airlock_access()
@@ -530,4 +530,4 @@ RCD
/obj/item/weapon/rcd_ammo/large
origin_tech = "materials=4"
materials = list(MAT_METAL=12000, MAT_GLASS=8000)
ammoamt = 160
ammoamt = 160
+12 -4
View File
@@ -103,6 +103,8 @@ var/global/list/RPD_recipes=list(
"Heat Exchange" = list(
"Pipe" = new /datum/pipe_info(PIPE_HE, 1, PIPE_BENDABLE),
//"Bent Pipe" = new /datum/pipe_info(PIPE_HE, 5, PIPE_BENT),
"Manifold" = new /datum/pipe_info(PIPE_HE_MANIFOLD, 1, PIPE_TRINARY),
"4-Way Manifold" = new /datum/pipe_info(PIPE_HE_4WAYMANIFOLD, 1, PIPE_QUAD),
"Junction" = new /datum/pipe_info(PIPE_JUNCTION, 1, PIPE_UNARY),
"Heat Exchanger" = new /datum/pipe_info(PIPE_HEAT_EXCHANGE, 1, PIPE_UNARY),
),
@@ -125,13 +127,13 @@ var/global/list/RPD_recipes=list(
icon_state = "rpd"
opacity = 0
density = 0
anchored = 0.0
anchored = 0
flags = CONDUCT
force = 10.0
throwforce = 10.0
force = 10
throwforce = 10
throw_speed = 1
throw_range = 5
w_class = 3.0
w_class = 3
materials = list(MAT_METAL=75000, MAT_GLASS=37500)
origin_tech = "engineering=4;materials=2"
var/datum/effect/effect/system/spark_spread/spark_system
@@ -168,6 +170,12 @@ var/global/list/RPD_recipes=list(
/obj/item/weapon/pipe_dispenser/attack_self(mob/user)
show_menu(user)
/obj/item/weapon/pipe_dispenser/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] points the end of the RPD down \his throat and presses a button! It looks like \he's trying to commit suicide...</span>")
playsound(get_turf(user), 'sound/machines/click.ogg', 50, 1)
playsound(get_turf(user), 'sound/items/Deconstruct.ogg', 50, 1)
return(BRUTELOSS)
/obj/item/weapon/pipe_dispenser/proc/render_dir_img(_dir,pic,title,flipped=0)
var/selected=" class=\"imglink\""
if(_dir == p_dir)
+2 -2
View File
@@ -10,10 +10,10 @@ RSF
icon_state = "rcd"
opacity = 0
density = 0
anchored = 0.0
anchored = 0
var/matter = 0
var/mode = 1
w_class = 3.0
w_class = 3
/obj/item/weapon/rsf/New()
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
@@ -5,7 +5,7 @@
icon_state = "paint sprayer"
item_state = "paint sprayer"
w_class = 2.0
w_class = 2
materials = list(MAT_METAL=50, MAT_GLASS=50)
origin_tech = "engineering=1"
+1 -1
View File
@@ -15,7 +15,7 @@
name = "card"
desc = "Does card things."
icon = 'icons/obj/card.dmi'
w_class = 1.0
w_class = 1
var/list/files = list( )
@@ -6,7 +6,7 @@
icon = 'icons/obj/chronos.dmi'
icon_state = "chronobackpack"
item_state = "backpack"
w_class = 4.0
w_class = 4
slot_flags = SLOT_BACK
slowdown = 1
action_button_name = "Equip/Unequip TED Gun"
@@ -41,7 +41,7 @@
icon = 'icons/obj/chronos.dmi'
icon_state = "chronogun"
item_state = "chronogun"
w_class = 3.0
w_class = 3
flags = NODROP
ammo_type = list(/obj/item/ammo_casing/energy/chrono_beam)
fire_delay = 50
@@ -22,8 +22,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_state = "match_unlit"
var/lit = 0
var/smoketime = 5
w_class = 1.0
w_class = 1
origin_tech = "materials=1"
heat = 1000
/obj/item/weapon/match/process()
var/turf/location = get_turf(src)
@@ -74,7 +75,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
return
M.IgniteMob()
var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M,user)
if(lit && cig)
if(lit && cig && user.a_intent == "help")
if(cig.lit)
user << "<span class='notice'>The [cig.name] is already lit.</span>"
if(M == user)
cig.attackby(src, user)
else
@@ -85,10 +88,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/proc/help_light_cig(mob/living/carbon/M, mob/living/carbon/user)
if(!iscarbon(M))
return
if(istype(M.wear_mask, /obj/item/clothing/mask/cigarette) && user.zone_sel.selecting == "mouth")
if(istype(M.wear_mask, /obj/item/clothing/mask/cigarette))
var/obj/item/clothing/mask/cigarette/cig = M.wear_mask
return cig
/obj/item/weapon/match/is_hot()
return lit * heat
//////////////////
//FINE SMOKABLES//
//////////////////
@@ -107,6 +113,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
var/lastHolder = null
var/smoketime = 300
var/chem_volume = 30
heat = 1000
/obj/item/clothing/mask/cigarette/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is huffing the [src.name] as quickly as they can! It looks like \he's trying to give \himself cancer.</span>")
@@ -120,7 +127,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W, mob/user, params)
..()
if(!lit && smoketime > 0 && is_hot(W))
if(!lit && smoketime > 0 && W.is_hot())
var/lighting_text = is_lighter(W,user)
if(lighting_text)
light(lighting_text)
@@ -139,7 +146,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
else
user << "<span class='notice'>[src] is full.</span>"
/obj/item/clothing/mask/cigarette/proc/is_lighter(obj/O, mob/user)
/obj/item/clothing/mask/cigarette/proc/is_lighter(obj/item/O, mob/user)
var/lighting_text = null
if(istype(O, /obj/item/weapon/weldingtool))
lighting_text = "<span class='notice'>[user] casually lights the [name] with [O], what a badass.</span>"
@@ -153,7 +160,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
lighting_text = "<span class='notice'>[user] fiddles with [O], and manages to light their [name].</span>"
else if(istype(O, /obj/item/device/flashlight/flare))
lighting_text = "<span class='notice'>[user] lights their [name] with [O] like a real badass.</span>"
else if(is_hot(O))
else if(O.is_hot())
lighting_text = "<span class='notice'>[user] lights their [name] with [O].</span>"
return lighting_text
@@ -247,7 +254,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(!istype(M))
return ..()
var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M,user)
if(lit && cig)
if(lit && cig && user.a_intent == "help")
if(cig.lit)
user << "<span class='notice'>The [cig.name] is already lit.</span>"
if(M == user)
cig.attackby(src, user)
else
@@ -258,6 +267,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/cigarette/fire_act()
light()
/obj/item/clothing/mask/cigarette/is_hot()
return lit * heat
/obj/item/clothing/mask/cigarette/rollie
name = "rollie"
desc = "A roll of dried plant matter wrapped in thin paper."
@@ -272,8 +284,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/cigarette/rollie/New()
..()
src.pixel_x = rand(-5.0, 5)
src.pixel_y = rand(-5.0, 5)
src.pixel_x = rand(-5, 5)
src.pixel_y = rand(-5, 5)
/obj/item/clothing/mask/cigarette/rollie/trippy/New()
..()
@@ -289,8 +301,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/weapon/cigbutt/roach/New()
..()
src.pixel_x = rand(-5.0, 5)
src.pixel_y = rand(-5.0, 5)
src.pixel_x = rand(-5, 5)
src.pixel_y = rand(-5, 5)
////////////
@@ -354,6 +366,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
chem_volume = 100
var/packeditem = 0
/obj/item/clothing/mask/cigarette/pipe/New()
..()
name = "empty [initial(name)]"
/obj/item/clothing/mask/cigarette/pipe/process()
var/turf/location = get_turf(src)
smoketime--
@@ -432,10 +448,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_off = "cobpipeoff"
smoketime = 0
/obj/item/clothing/mask/cigarette/pipe/cobpipe/New()
..()
name = "empty [initial(name)]"
/////////
//ZIPPO//
@@ -450,6 +462,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
flags = CONDUCT
slot_flags = SLOT_BELT
var/lit = 0
heat = 1500
/obj/item/weapon/lighter/greyscale
name = "cheap lighter"
@@ -507,7 +520,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(lit)
M.IgniteMob()
var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M,user)
if(lit && cig)
if(lit && cig && user.a_intent == "help")
if(cig.lit)
user << "<span class='notice'>The [cig.name] is already lit.</span>"
if(M == user)
cig.attackby(src, user)
else
@@ -538,6 +553,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
SetLuminosity(1)
return
/obj/item/weapon/lighter/is_hot()
return lit * heat
///////////
//ROLLING//
@@ -15,7 +15,7 @@
gender = PLURAL
icon = 'icons/obj/items.dmi'
icon_state = "soap"
w_class = 1.0
w_class = 1
throwforce = 0
throw_speed = 3
throw_range = 7
@@ -36,9 +36,10 @@
cleanspeed = 10 //much faster than mop so it is useful for traitors who want to clean crime scenes
/obj/item/weapon/soap/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] crams the bar of soap down \his throat! It looks like \he's trying to commit suicide..</span>")
. = TOXLOSS
src.loc = user
user.say(";FFFFFFFFFFFFFFFFUUUUUUUDGE!!")
user.visible_message("<span class='suicide'>[user] lifts the [src.name] to their mouth and gnaws on it furiously, producing a thick froth! They'll never get that BB gun now!")
PoolOrNew(/obj/effect/effect/foam, loc)
return (TOXLOSS)
/obj/item/weapon/soap/Crossed(AM as mob|obj)
if (istype(AM, /mob/living/carbon))
@@ -83,7 +84,7 @@
item_state = "bike_horn"
throwforce = 0
hitsound = null //To prevent tap.ogg playing, as the item lacks of force
w_class = 1.0
w_class = 1
throw_speed = 3
throw_range = 7
attack_verb = list("HONKED")
+6 -6
View File
@@ -7,9 +7,9 @@
desc = "Order, order! No bombs in my courthouse."
icon = 'icons/obj/items.dmi'
icon_state = "gavelhammer"
force = 5.0
throwforce = 6.0
w_class = 2.0
force = 5
throwforce = 6
w_class = 2
attack_verb = list("bashed", "battered", "judged", "whacked")
burn_state = 0 //Burnable
@@ -23,9 +23,9 @@
desc = "Smack it with a gavel hammer when the assistants get rowdy."
icon = 'icons/obj/items.dmi'
icon_state = "gavelblock"
force = 2.0
throwforce = 2.0
w_class = 1.0
force = 2
throwforce = 2
w_class = 1
burn_state = 0 //Burnable
/obj/item/weapon/gavelblock/attackby(obj/item/I, mob/user, params)
+94 -31
View File
@@ -281,10 +281,24 @@
var/cooldown = 0
var/busy = 0
var/obj/item/weapon/defibrillator/defib
var/req_defib = 1
var/combat = 0 //If it penetrates armor and gives additional functionality
/obj/item/weapon/twohanded/shockpaddles/proc/recharge(var/time)
if(req_defib || !time)
return
cooldown = 1
update_icon()
sleep(time)
var/turf/T = get_turf(src)
T.audible_message("<span class='notice'>[src] beeps: Unit is recharged.</span>")
playsound(T, 'sound/machines/defib_ready.ogg', 50, 0)
cooldown = 0
update_icon()
/obj/item/weapon/twohanded/shockpaddles/New(mainunit)
..()
if(check_defib_exists(mainunit, src))
if(check_defib_exists(mainunit, src) && req_defib)
defib = mainunit
loc = defib
busy = 0
@@ -299,11 +313,14 @@
/obj/item/weapon/twohanded/shockpaddles/suicide_act(mob/user)
user.visible_message("<span class='danger'>[user] is putting the live paddles on \his chest! It looks like \he's trying to commit suicide.</span>")
defib.deductcharge(revivecost)
if(req_defib)
defib.deductcharge(revivecost)
playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1)
return (OXYLOSS)
/obj/item/weapon/twohanded/shockpaddles/dropped(mob/user)
if(!req_defib)
return ..()
if(user)
var/obj/item/weapon/twohanded/O = user.get_inactive_hand()
if(istype(O))
@@ -315,6 +332,8 @@
return unwield(user)
/obj/item/weapon/twohanded/shockpaddles/proc/check_defib_exists(mainunit, mob/living/carbon/human/M, obj/O)
if(!req_defib)
return 1 //If it doesn't need a defib, just say it exists
if (!mainunit || !istype(mainunit, /obj/item/weapon/defibrillator)) //To avoid weird issues from admin spawns
M.unEquip(O)
qdel(O)
@@ -327,22 +346,35 @@
if(busy)
return
if(!defib.powered)
if(req_defib && !defib.powered)
user.visible_message("<span class='notice'>[defib] beeps: Unit is unpowered.</span>")
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
return
if(!wielded)
user << "<span class='warning'>You need to wield the paddles in both hands before you can use them on someone!</span>"
if(isrobot(user))
user << "<span class='warning'>You must activate the paddles in your active module before you can use them on someone!</span>"
else
user << "<span class='warning'>You need to wield the paddles in both hands before you can use them on someone!</span>"
return
if(cooldown)
user << "<span class='warning'>[defib] is recharging!</span>"
if(req_defib)
user << "<span class='warning'>[defib] is recharging!</span>"
else
user << "<span class='warning'>[src] are recharging!</span>"
return
if(!ishuman(M))
user << "<span class='warning'>The instructions on [defib] don't mention how to revive that...</span>"
if(req_defib)
user << "<span class='warning'>The instructions on [defib] don't mention how to revive that...</span>"
else
user << "<span class='warning'>You aren't sure how to revive that...</span>"
return
else
var/mob/living/carbon/human/H = M
if(user.a_intent == "disarm" && !defib.safety)
if(user.a_intent == "disarm")
if(req_defib && defib.safety)
return
if(!req_defib && !combat)
return
busy = 1
H.visible_message("<span class='danger'>[user] has touched [H.name] with [src]!</span>", \
"<span class='userdanger'>[user] has touched [H.name] with [src]!</span>")
@@ -351,15 +383,23 @@
H.updatehealth() //forces health update before next life tick
playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1)
H.emote("gasp")
add_logs(user, M, "stunned", defib)
defib.deductcharge(revivecost)
cooldown = 1
add_logs(user, M, "stunned", src)
if(req_defib)
defib.deductcharge(revivecost)
cooldown = 1
busy = 0
update_icon()
defib.cooldowncheck(user)
if(req_defib)
defib.cooldowncheck(user)
else
recharge(60)
return
if(user.zone_sel && user.zone_sel.selecting == "chest")
if(!defib.safety && user.a_intent == "harm")
if(user.a_intent == "harm")
if(req_defib && defib.safety)
return
if(!req_defib && !combat)
return
user.visible_message("<span class='warning'>[user] begins to place [src] on [M.name]'s chest.</span>",
"<span class='warning'>You overcharge the paddles and begin to place them onto [M]'s chest...</span>")
busy = 1
@@ -369,9 +409,16 @@
"<span class='warning'>You place [src] on [M.name]'s chest and begin to charge them.</span>")
var/turf/T = get_turf(defib)
playsound(get_turf(src), 'sound/machines/defib_charge.ogg', 50, 0)
T.audible_message("<span class='warning'>\The [defib] lets out an urgent beep and lets out a steadily rising hum...</span>")
if(req_defib)
T.audible_message("<span class='warning'>\The [defib] lets out an urgent beep and lets out a steadily rising hum...</span>")
else
user.audible_message("<span class='warning'>[src] let out an urgent beep.</span>")
if(do_after(user, 30, target = M)) //Takes longer due to overcharging
if(M.stat == DEAD)
if(!M)
busy = 0
update_icon()
return
if(M && M.stat == DEAD)
user << "<span class='warning'>[M] is dead.</span>"
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
busy = 0
@@ -391,12 +438,15 @@
add_logs(user, M, "overloaded the heart of", defib)
M.Weaken(5)
M.Jitter(100)
defib.deductcharge(revivecost)
cooldown = 1
if(req_defib)
defib.deductcharge(revivecost)
cooldown = 1
busy = 0
update_icon()
defib.cooldowncheck(user)
return
if(!req_defib)
recharge(60)
if(req_defib && (defib.cooldowncheck(user)))
return
busy = 0
update_icon()
return
@@ -416,8 +466,8 @@
if(do_after(user, 20, target = M)) //placed on chest and short delay to shock for dramatic effect, revive time is 5sec total
for(var/obj/item/carried_item in H.contents)
if(istype(carried_item, /obj/item/clothing/suit/space))
if(!defib.combat)
user.visible_message("<span class='warning'>[defib] buzzes: Patient's chest is obscured. Operation aborted.</span>")
if((!src.combat && !req_defib) || (req_defib && !defib.combat))
user.audible_message("<span class='warning'>[req_defib ? "[defib]" : "[src]"] buzzes: Patient's chest is obscured. Operation aborted.</span>")
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
busy = 0
update_icon()
@@ -431,14 +481,14 @@
var/failed = null
if (H.suiciding || (NOCLONE in H.mutations))
failed = "<span class='warning'>[defib] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile.</span>"
if (H.suiciding || (H.disabilities & NOCLONE))
failed = "<span class='warning'>[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile.</span>"
else if ((tplus > tlimit) || !H.getorgan(/obj/item/organ/internal/heart))
failed = "<span class='warning'>[defib] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return. Further attempts futile.</span>"
failed = "<span class='warning'>[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Heart tissue damage beyond point of no return. Further attempts futile.</span>"
else if(total_burn >= 180 || total_brute >= 180)
failed = "<span class='warning'>[defib] buzzes: Resuscitation failed - Severe tissue damage makes recovery of patient impossible via defibrillator. Further attempts futile.</span>"
failed = "<span class='warning'>[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Severe tissue damage makes recovery of patient impossible via defibrillator. Further attempts futile.</span>"
else if(H.get_ghost() || !H.getorgan(/obj/item/organ/internal/brain))
failed = "<span class='warning'>[defib] buzzes: Resuscitation failed - No activity in patient's brain. Further attempts may be successful.</span>"
failed = "<span class='warning'>[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - No activity in patient's brain. Further attempts may be successful.</span>"
if(failed)
@@ -455,7 +505,7 @@
H.adjustToxLoss((mobhealth - halfwaycritdeath) * (H.getToxLoss() / overall_damage))
H.adjustFireLoss((mobhealth - halfwaycritdeath) * (total_burn / overall_damage))
H.adjustBruteLoss((mobhealth - halfwaycritdeath) * (total_brute / overall_damage))
user.visible_message("<span class='notice'>[defib] pings: Resuscitation successful.</span>")
user.visible_message("<span class='notice'>[req_defib ? "[defib]" : "[src]"] pings: Resuscitation successful.</span>")
playsound(get_turf(src), 'sound/machines/defib_success.ogg', 50, 0)
H.stat = UNCONSCIOUS
dead_mob_list -= H
@@ -464,19 +514,32 @@
if(tplus > tloss)
H.setBrainLoss( max(0, min(99, ((tlimit - tplus) / tlimit * 100))))
add_logs(user, M, "revived", defib)
defib.deductcharge(revivecost)
if(req_defib)
defib.deductcharge(revivecost)
cooldown = 1
update_icon()
cooldown = 1
defib.cooldowncheck(user)
if(req_defib)
defib.cooldowncheck(user)
else
recharge(60)
else if(H.heart_attack)
H.heart_attack = 0
user.visible_message("<span class='notice'>[defib] pings: Patient's heart is now beating again.</span>")
user.visible_message("<span class='notice'>[req_defib ? "[defib]" : "[src]"] pings: Patient's heart is now beating again.</span>")
playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1)
else
user.visible_message("<span class='warning'>[defib] buzzes: Patient is not in a valid state. Operation aborted.</span>")
user.visible_message("<span class='warning'>[req_defib ? "[defib]" : "[src]"] buzzes: Patient is not in a valid state. Operation aborted.</span>")
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
busy = 0
update_icon()
else
user << "<span class='warning'>You need to target your patient's chest with [src]!</span>"
return
/obj/item/weapon/twohanded/shockpaddles/syndicate
name = "syndicate defibrillator paddles"
desc = "A pair of paddles used to revive deceased operatives. It possesses both the ability to penetrate armor and todeliver powerful shocks offensively."
combat = 1
icon = 'icons/obj/weapons.dmi'
icon_state = "defibpaddles0"
item_state = "defibpaddles0"
req_defib = 0
@@ -5,7 +5,7 @@
icon_state = "dnainjector"
throw_speed = 3
throw_range = 5
w_class = 1.0
w_class = 1
var/damage_coeff = 1
var/list/fields
@@ -17,10 +17,7 @@
/obj/item/weapon/dnainjector/proc/inject(mob/living/carbon/M, mob/user)
if(check_dna_integrity(M) && !(NOCLONE in M.mutations))
if(M.stat == DEAD) //prevents dead people from having their DNA changed
user << "<span class='notice'>You can't modify [M]'s DNA while \he's dead.</span>"
return
if(M.has_dna() && !(M.disabilities & NOCLONE))
M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2))
var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]"
for(var/datum/mutation/human/HM in remove_mutations)
@@ -38,7 +35,7 @@
M.dna.blood_type = fields["blood_type"]
if(fields["UI"]) //UI+UE
M.dna.uni_identity = merge_text(M.dna.uni_identity, fields["UI"])
updateappearance(M)
M.updateappearance(mutations_overlay_update=1)
log_attack(log_msg)
else
user << "<span class='notice'>It appears that [M] does not have compatible DNA.</span>"
@@ -139,6 +136,20 @@
..()
add_mutations.Add(mutations_list[COUGH])
/obj/item/weapon/dnainjector/antidwarf
name = "\improper DNA injector (Anti-Dwarfism)"
desc = "Helps you grow big and strong."
New()
..()
remove_mutations.Add(mutations_list[DWARFISM])
/obj/item/weapon/dnainjector/dwarf
name = "\improper DNA injector (Dwarfism)"
desc = "Its a small world after all."
New()
..()
add_mutations.Add(mutations_list[DWARFISM])
/obj/item/weapon/dnainjector/clumsymut
name = "\improper DNA injector (Clumsy)"
desc = "Makes clown minions."
@@ -8,7 +8,7 @@
icon_state = "plastic-explosive0"
item_state = "plasticx"
flags = NOBLUDGEON
w_class = 2.0
w_class = 2
origin_tech = "syndicate=2"
var/datum/wires/explosive/c4/wires = null
var/timer = 10
@@ -7,14 +7,14 @@
hitsound = 'sound/weapons/smash.ogg'
flags = CONDUCT
throwforce = 10
w_class = 3.0
w_class = 3
throw_speed = 2
throw_range = 7
force = 10
materials = list(MAT_METAL=90)
attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed")
var/max_water = 50
var/last_use = 1.0
var/last_use = 1
var/safety = 1
var/sprite_name = "fire_extinguisher"
var/power = 5 //Maximum distance launched water will travel
@@ -29,8 +29,8 @@
hitsound = null //it is much lighter, after all.
flags = null //doesn't CONDUCT
throwforce = 2
w_class = 2.0
force = 3.0
w_class = 2
force = 3
materials = list()
max_water = 30
sprite_name = "miniFE"
@@ -5,11 +5,11 @@
icon_state = "flamethrowerbase"
item_state = "flamethrower_0"
flags = CONDUCT
force = 3.0
throwforce = 10.0
force = 3
throwforce = 10
throw_speed = 1
throw_range = 5
w_class = 3.0
w_class = 3
materials = list(MAT_METAL=500)
origin_tech = "combat=1;plasmatech=1"
var/status = 0
@@ -39,8 +39,8 @@
/obj/item/weapon/lipstick/random,
/obj/item/weapon/grenade/smokebomb,
/obj/item/weapon/grown/corncob,
/obj/item/weapon/contraband/poster,
/obj/item/weapon/contraband/poster/legit,
/obj/item/weapon/poster/contraband,
/obj/item/weapon/poster/legit,
/obj/item/weapon/book/manual/barman_recipes,
/obj/item/weapon/book/manual/chef_recipes,
/obj/item/weapon/bikehorn,
@@ -13,9 +13,8 @@
bang(get_turf(M), M)
for(var/obj/effect/blob/B in get_hear(8,flashbang_turf)) //Blob damage here
var/damage = round(30/(get_dist(B,get_turf(src))+1))
B.health -= damage
B.update_icon()
var/damage = round(40/(get_dist(B,get_turf(src))+1))
B.take_damage(damage, BURN)
qdel(src)
/obj/item/weapon/grenade/flashbang/proc/bang(turf/T , mob/living/M)
@@ -3,7 +3,7 @@
/obj/item/weapon/grenade/iedcasing
name = "improvised firebomb"
desc = "A weak, improvised incendiary device."
w_class = 2.0
w_class = 2
icon = 'icons/obj/grenade.dmi'
icon_state = "improvised_grenade"
item_state = "flashbang"
@@ -1,7 +1,7 @@
/obj/item/weapon/grenade
name = "grenade"
desc = "It has an adjustable timer."
w_class = 2.0
w_class = 2
icon = 'icons/obj/grenade.dmi'
icon_state = "grenade"
item_state = "flashbang"
+2 -2
View File
@@ -13,7 +13,7 @@
flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 0
w_class = 2.0
w_class = 2
throw_speed = 3
throw_range = 5
materials = list(MAT_METAL=500)
@@ -152,7 +152,7 @@
icon_state = "handcuff"
flags = CONDUCT
throwforce = 0
w_class = 3.0
w_class = 3
origin_tech = "materials=1"
slowdown = 7
breakouttime = 300 //Deciseconds = 30s = 0.5 minute
@@ -79,89 +79,3 @@
. = 1
qdel(src)
return .
/obj/item/weapon/implant/tracking
name = "tracking implant"
desc = "Track with this."
activated = 0
origin_tech = "materials=2;magnets=2;programming=2;biotech=2"
var/id = 1.0
/obj/item/weapon/implant/tracking/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Tracking Beacon<BR>
<b>Life:</b> 10 minutes after death of host<BR>
<b>Important Notes:</b> None<BR>
<HR>
<b>Implant Details:</b> <BR>
<b>Function:</b> Continuously transmits low power signal. Useful for tracking.<BR>
<b>Special Features:</b><BR>
<i>Neuro-Safe</i>- Specialized shell absorbs excess voltages self-destructing the chip if
a malfunction occurs thereby securing safety of subject. The implant will melt and
disintegrate into bio-safe elements.<BR>
<b>Integrity:</b> Gradient creates slight risk of being overcharged and frying the
circuitry. As a result neurotoxins can cause massive damage.<HR>
Implant Specifics:<BR>"}
return dat
/obj/item/weapon/implant/weapons_auth
name = "firearms authentication implant"
desc = "Lets you shoot your guns"
icon_state = "auth"
origin_tech = "materials=2;magnets=2;programming=2;biotech=5;syndicate=5"
activated = 0
/obj/item/weapon/implant/weapons_auth/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Firearms Authentication Implant<BR>
<b>Life:</b> 4 hours after death of host<BR>
<b>Implant Details:</b> <BR>
<b>Function:</b> Allows operation of implant-locked weaponry, preventing equipment from falling into enemy hands."}
return dat
/obj/item/weapon/implant/adrenalin
name = "adrenal implant"
desc = "Removes all stuns and knockdowns."
icon_state = "adrenal"
origin_tech = "materials=2;biotech=4;combat=3;syndicate=4"
uses = 3
/obj/item/weapon/implant/adrenalin/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Cybersun Industries Adrenaline Implant<BR>
<b>Life:</b> Five days.<BR>
<b>Important Notes:</b> <font color='red'>Illegal</font><BR>
<HR>
<b>Implant Details:</b> Subjects injected with implant can activate an injection of medical cocktails.<BR>
<b>Function:</b> Removes stuns, increases speed, and has a mild healing effect.<BR>
<b>Integrity:</b> Implant can only be used three times before reserves are depleted."}
return dat
/obj/item/weapon/implant/adrenalin/activate()
if(uses < 1) return 0
uses--
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)
imp_in.adjustStaminaLoss(-75)
imp_in.lying = 0
imp_in.update_canmove()
imp_in.reagents.add_reagent("synaptizine", 10)
imp_in.reagents.add_reagent("omnizine", 10)
imp_in.reagents.add_reagent("stimulants", 10)
/obj/item/weapon/implant/emp
name = "emp implant"
desc = "Triggers an EMP."
icon_state = "emp"
origin_tech = "materials=2;biotech=3;magnets=4;syndicate=4"
uses = 2
/obj/item/weapon/implant/emp/activate()
if (src.uses < 1) return 0
src.uses--
empulse(imp_in, 3, 5)
@@ -24,6 +24,14 @@
/obj/item/weapon/implant/chem/New()
..()
create_reagents(50)
tracked_implants += src
/obj/item/weapon/implant/chem/Destroy()
..()
tracked_implants -= src
/obj/item/weapon/implant/chem/trigger(emote, mob/source)
if(emote == "deathgasp")
@@ -0,0 +1,61 @@
/obj/item/weapon/implant/weapons_auth
name = "firearms authentication implant"
desc = "Lets you shoot your guns"
icon_state = "auth"
origin_tech = "materials=2;magnets=2;programming=2;biotech=5;syndicate=5"
activated = 0
/obj/item/weapon/implant/weapons_auth/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Firearms Authentication Implant<BR>
<b>Life:</b> 4 hours after death of host<BR>
<b>Implant Details:</b> <BR>
<b>Function:</b> Allows operation of implant-locked weaponry, preventing equipment from falling into enemy hands."}
return dat
/obj/item/weapon/implant/adrenalin
name = "adrenal implant"
desc = "Removes all stuns and knockdowns."
icon_state = "adrenal"
origin_tech = "materials=2;biotech=4;combat=3;syndicate=4"
uses = 3
/obj/item/weapon/implant/adrenalin/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Cybersun Industries Adrenaline Implant<BR>
<b>Life:</b> Five days.<BR>
<b>Important Notes:</b> <font color='red'>Illegal</font><BR>
<HR>
<b>Implant Details:</b> Subjects injected with implant can activate an injection of medical cocktails.<BR>
<b>Function:</b> Removes stuns, increases speed, and has a mild healing effect.<BR>
<b>Integrity:</b> Implant can only be used three times before reserves are depleted."}
return dat
/obj/item/weapon/implant/adrenalin/activate()
if(uses < 1) return 0
uses--
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)
imp_in.adjustStaminaLoss(-75)
imp_in.lying = 0
imp_in.update_canmove()
imp_in.reagents.add_reagent("synaptizine", 10)
imp_in.reagents.add_reagent("omnizine", 10)
imp_in.reagents.add_reagent("stimulants", 10)
/obj/item/weapon/implant/emp
name = "emp implant"
desc = "Triggers an EMP."
icon_state = "emp"
origin_tech = "materials=2;biotech=3;magnets=4;syndicate=4"
uses = 2
/obj/item/weapon/implant/emp/activate()
if (src.uses < 1) return 0
src.uses--
empulse(imp_in, 3, 5)
@@ -0,0 +1,32 @@
/obj/item/weapon/implant/tracking
name = "tracking implant"
desc = "Track with this."
activated = 0
origin_tech = "materials=2;magnets=2;programming=2;biotech=2"
var/id = 1
/obj/item/weapon/implant/tracking/New()
..()
tracked_implants += src
/obj/item/weapon/implant/tracking/Destroy()
..()
tracked_implants -= src
/obj/item/weapon/implant/tracking/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Tracking Beacon<BR>
<b>Life:</b> 10 minutes after death of host<BR>
<b>Important Notes:</b> None<BR>
<HR>
<b>Implant Details:</b> <BR>
<b>Function:</b> Continuously transmits low power signal. Useful for tracking.<BR>
<b>Special Features:</b><BR>
<i>Neuro-Safe</i>- Specialized shell absorbs excess voltages self-destructing the chip if
a malfunction occurs thereby securing safety of subject. The implant will melt and
disintegrate into bio-safe elements.<BR>
<b>Integrity:</b> Gradient creates slight risk of being overcharged and frying the
circuitry. As a result neurotoxins can cause massive damage.<HR>
Implant Specifics:<BR>"}
return dat
@@ -6,7 +6,7 @@
item_state = "implantcase"
throw_speed = 2
throw_range = 5
w_class = 1.0
w_class = 1
origin_tech = "materials=1;biotech=2"
materials = list(MAT_GLASS=500)
var/obj/item/weapon/implant/imp = null
@@ -6,7 +6,7 @@
item_state = "syringe_0"
throw_speed = 3
throw_range = 5
w_class = 2.0
w_class = 2
origin_tech = "materials=1;biotech=3;programming=2"
materials = list(MAT_METAL=600, MAT_GLASS=200)
var/obj/item/weapon/implant/imp = null
@@ -6,10 +6,10 @@
item_state = "electronic"
throw_speed = 3
throw_range = 5
w_class = 2.0
w_class = 2
var/obj/item/weapon/implantcase/case = null
var/broadcasting = null
var/listening = 1.0
var/listening = 1
/obj/item/weapon/implantpad/update_icon()
+3 -3
View File
@@ -55,9 +55,9 @@
name = "wet floor sign"
icon = 'icons/obj/janitor.dmi'
icon_state = "caution"
force = 1.0
throwforce = 3.0
force = 1
throwforce = 3
throw_speed = 2
throw_range = 5
w_class = 2.0
w_class = 2
attack_verb = list("warned", "cautioned", "smashed")
+13 -12
View File
@@ -13,8 +13,8 @@
name = "fork"
desc = "Pointy."
icon_state = "fork"
force = 5.0
w_class = 1.0
force = 5
w_class = 1
throwforce = 0
throw_speed = 3
throw_range = 5
@@ -52,15 +52,16 @@
icon_state = "knife"
desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come."
flags = CONDUCT
force = 10.0
w_class = 2.0
throwforce = 10.0
force = 10
w_class = 2
throwforce = 10
hitsound = 'sound/weapons/bladeslice.ogg'
throw_speed = 3
throw_range = 6
materials = list(MAT_METAL=12000)
origin_tech = "materials=1"
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
sharpness = IS_SHARP_ACCURATE
/obj/item/weapon/kitchen/knife/suicide_act(mob/user)
user.visible_message(pick("<span class='suicide'>[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.</span>", \
@@ -73,27 +74,27 @@
desc = "The unearthly energies that once powered this blade are now dormant."
icon = 'icons/obj/wizard.dmi'
icon_state = "render"
w_class = 3.0
w_class = 3
/obj/item/weapon/kitchen/knife/butcher
name = "butcher's cleaver"
icon_state = "butch"
desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products."
flags = CONDUCT
force = 15.0
throwforce = 8.0
force = 15
throwforce = 8
attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
w_class = 3.0
w_class = 3
/obj/item/weapon/kitchen/rollingpin
name = "rolling pin"
desc = "Used to knock out the Bartender."
icon_state = "rolling_pin"
force = 8.0
throwforce = 5.0
force = 8
throwforce = 5
throw_speed = 3
throw_range = 7
w_class = 3.0
w_class = 3
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
/* Trays moved to /obj/item/weapon/storage/bag */
@@ -6,6 +6,7 @@
var/list/attack_verb_on = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
w_class = 2
var/w_class_on = 4
heat = 3500
/obj/item/weapon/melee/energy/suicide_act(mob/user)
user.visible_message(pick("<span class='suicide'>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</span>", \
@@ -15,11 +16,14 @@
/obj/item/weapon/melee/energy/rejects_blood()
return 1
/obj/item/weapon/melee/energy/is_sharp()
return active * sharpness
/obj/item/weapon/melee/energy/axe
name = "energy axe"
desc = "An energised battle axe."
icon_state = "axe0"
force = 40.0
force = 40
force_on = 150
throwforce = 25
throwforce_on = 30
@@ -41,8 +45,8 @@
name = "energy sword"
desc = "May the force be within you."
icon_state = "sword0"
force = 3.0
throwforce = 5.0
force = 3
throwforce = 5
hitsound = "swing_hit" //it starts deactivated
throw_speed = 3
throw_range = 5
@@ -90,8 +94,11 @@
add_fingerprint(user)
return
/obj/item/weapon/melee/energy/is_hot()
return active * heat
/obj/item/weapon/melee/energy/sword/cyborg
var/hitcost = 500
var/hitcost = 50
/obj/item/weapon/melee/energy/sword/cyborg/attack(mob/M, var/mob/living/silicon/robot/R)
if(R.cell)
@@ -103,6 +110,29 @@
..()
return
/obj/item/weapon/melee/energy/sword/cyborg/saw //Used by medical Syndicate cyborgs
name = "energy saw"
desc = "For heavy duty cutting. It has a carbon-fiber blade and an energy capacitor that can be toggled to make it more powerful."
icon_state = "esaw"
force_on = 30
force = 18 //About as much as a spear
hitsound = 'sound/weapons/circsawhit.ogg'
origin_tech = "materials=3;biotech=3;syndicate=3"
icon = 'icons/obj/surgery.dmi'
icon_state = "esaw_0"
icon_state_on = "esaw_1"
hitcost = 75 //Costs more because it's not intended to be a murderbone weapon
item_color = null
w_class = 3
sharpness = IS_SHARP
/obj/item/weapon/melee/energy/sword/cyborg/saw/New()
..()
item_color = null
/obj/item/weapon/melee/energy/sword/cyborg/saw/IsShield()
return 0
/obj/item/weapon/melee/energy/sword/saber
/obj/item/weapon/melee/energy/sword/saber/blue
@@ -172,7 +202,7 @@
throwforce = 1//Throwing or dropping the item deletes it.
throw_speed = 3
throw_range = 1
w_class = 4.0//So you can't hide it in your pocket or some such.
w_class = 4//So you can't hide it in your pocket or some such.
flags = NOSHIELD
var/datum/effect/effect/system/spark_spread/spark_system
+20 -1
View File
@@ -86,6 +86,25 @@
force = 0
on = 0
/obj/item/weapon/melee/classic_baton/telescopic/suicide_act(mob/user)
var/mob/living/carbon/human/H = user
var/obj/item/organ/internal/brain/B = H.getorgan(/obj/item/organ/internal/brain)
user.visible_message("<span class='suicide'>[user] stuffs the [src] up their nose and presses the 'extend' button! It looks like they're trying to clear their mind.</span>")
if(!on)
src.attack_self(user)
else
playsound(loc, 'sound/weapons/batonextend.ogg', 50, 1)
add_fingerprint(user)
sleep(3)
if (H && !qdeleted(H))
if (B && !qdeleted(B))
H.internal_organs -= B
qdel(B)
gibs(H.loc, H.viruses, H.dna)
return (BRUTELOSS)
return
/obj/item/weapon/melee/classic_baton/telescopic/attack_self(mob/user)
on = !on
if(on)
@@ -105,4 +124,4 @@
attack_verb = list("hit", "poked")
playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1)
add_fingerprint(user)
add_fingerprint(user)
+5 -5
View File
@@ -5,11 +5,11 @@
name = "mop"
icon = 'icons/obj/janitor.dmi'
icon_state = "mop"
force = 3.0
throwforce = 5.0
force = 3
throwforce = 5
throw_speed = 3
throw_range = 7
w_class = 3.0
w_class = 3
attack_verb = list("mopped", "bashed", "bludgeoned", "whacked")
burn_state = 0 //Burnable
var/mopping = 0
@@ -47,9 +47,9 @@ obj/item/weapon/mop/proc/clean(turf/simulated/A)
if(istype(turf))
user.visible_message("[user] begins to clean \the [turf] with [src].", "<span class='notice'>You begin to clean \the [turf] with [src]...</span>")
if(do_after(user, mopspeed, target = src))
clean(turf)
if(do_after(user, src.mopspeed, target = turf))
user << "<span class='notice'>You finish mopping.</span>"
clean(turf)
/obj/effect/attackby(obj/item/I, mob/user, params)
+1 -1
View File
@@ -9,7 +9,7 @@
icon_state = "paint_neutral"
item_color = "FFFFFF"
item_state = "paintcan"
w_class = 3.0
w_class = 3
burn_state = 0 //Burnable
burntime = 5
var/paintleft = 10
+2 -2
View File
@@ -3,8 +3,8 @@
desc = "A scroll for moving around."
icon = 'icons/obj/wizard.dmi'
icon_state = "scroll"
var/uses = 4.0
w_class = 2.0
var/uses = 4
w_class = 2
item_state = "paper"
throw_speed = 3
throw_range = 7
+1 -1
View File
@@ -3,7 +3,7 @@
name = "blank picket sign"
desc = "It's blank"
force = 5
w_class = 4.0
w_class = 4
attack_verb = list("bashed","smacked")
burn_state = 0 //Burnable
@@ -109,7 +109,7 @@
desc = "Space Santa uses this to deliver toys to all the nice children in space in Christmas! Wow, it's pretty big!"
icon_state = "giftbag0"
item_state = "giftbag"
w_class = 4.0
w_class = 4
max_w_class = 3
max_combined_w_class = 60
@@ -292,10 +292,10 @@
icon_state = "tray"
desc = "A metal tray to lay food on."
force = 5
throwforce = 10.0
throwforce = 10
throw_speed = 3
throw_range = 5
w_class = 4.0
w_class = 4
flags = CONDUCT
materials = list(MAT_METAL=3000)
preposition = "on"
@@ -133,6 +133,7 @@
desc = "Proves to the world that you are the strongest!"
icon_state = "championbelt"
item_state = "champion"
materials = list(MAT_GOLD=400)
storage_slots = 1
can_hold = list(
/obj/item/clothing/mask/luchador
@@ -5,7 +5,7 @@
icon_state ="book"
throw_speed = 2
throw_range = 5
w_class = 3.0
w_class = 3
burn_state = 0 //Burnable
var/title = "book"
/obj/item/weapon/storage/book/attack_self(mob/user)
@@ -196,7 +196,8 @@ var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible", "
if (istype(A, /turf/simulated/floor))
user << "<span class='notice'>You hit the floor with the bible.</span>"
if(user.mind && (user.mind.assigned_role == "Chaplain"))
call(/obj/effect/rune/proc/revealrunes)(src)
for(var/obj/effect/rune/R in orange(2,user))
R.invisibility = 0
if(user.mind && (user.mind.assigned_role == "Chaplain"))
if(A.reagents && A.reagents.has_reagent("water")) //blesses all the water in the holder
user << "<span class='notice'>You bless [A].</span>"
@@ -3,11 +3,11 @@
desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
icon_state = "briefcase"
flags = CONDUCT
force = 8.0
force = 8
hitsound = "swing_hit"
throw_speed = 2
throw_range = 4
w_class = 4.0
w_class = 4
max_w_class = 3
max_combined_w_class = 21
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
@@ -124,7 +124,7 @@
return
var/obj/item/clothing/mask/cigarette/cig = locate(/obj/item/clothing/mask/cigarette) in contents
if(cig)
if(M == user && user.zone_sel.selecting == "mouth" && contents.len > 0 && !user.wear_mask)
if(M == user && contents.len > 0 && !user.wear_mask)
var/obj/item/clothing/mask/cigarette/W = cig
remove_from_storage(W, M)
M.equip_to_slot_if_possible(W, slot_wear_mask)
@@ -134,7 +134,7 @@
icon_state = "pill_canister"
icon = 'icons/obj/chemical.dmi'
item_state = "contsolid"
w_class = 2.0
w_class = 2
can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/dice)
allow_quick_gather = 1
use_to_pickup = 1
@@ -23,7 +23,7 @@
var/l_hacking = 0
var/emagged = 0
var/open = 0
w_class = 3.0
w_class = 3
max_w_class = 2
max_combined_w_class = 14
@@ -149,11 +149,11 @@
icon_state = "secure"
item_state = "sec-case"
desc = "A large briefcase with a digital locking system."
force = 8.0
force = 8
hitsound = "swing_hit"
throw_speed = 2
throw_range = 4
w_class = 4.0
w_class = 4
max_w_class = 3
max_combined_w_class = 21
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
@@ -182,7 +182,7 @@
//Syndie variant of Secure Briefcase. Contains space cash, slightly more robust.
/obj/item/weapon/storage/secure/briefcase/syndie
force = 15.0
force = 15
/obj/item/weapon/storage/secure/briefcase/syndie/New()
for(var/i = 0, i < storage_slots - 2, i++)
@@ -201,10 +201,10 @@
icon_opened = "safe0"
icon_locking = "safeb"
icon_sparking = "safespark"
force = 8.0
w_class = 8.0
force = 8
w_class = 8
max_w_class = 8
anchored = 1.0
anchored = 1
density = 0
cant_hold = list(/obj/item/weapon/storage/secure/briefcase)
@@ -8,7 +8,7 @@
/obj/item/weapon/storage
name = "storage"
icon = 'icons/obj/storage.dmi'
w_class = 3.0
w_class = 3
var/silent = 0 // No message on putting items in
var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else)
var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set)
@@ -312,7 +312,7 @@
usr << "<span class='notice'>You put [W] [preposition]to [src].</span>"
else if(in_range(M, usr)) //If someone is standing close enough, they can tell what it is...
M.show_message("<span class='notice'>[usr] puts [W] [preposition]to [src].</span>", 1)
else if(W && W.w_class >= 3.0) //Otherwise they can only see large or normal items from a distance...
else if(W && W.w_class >= 3) //Otherwise they can only see large or normal items from a distance...
M.show_message("<span class='notice'>[usr] puts [W] [preposition]to [src].</span>", 1)
orient2hud(usr)
@@ -10,6 +10,7 @@
throw_speed = 2
throw_range = 7
w_class = 4
materials = list(MAT_METAL = 500)
origin_tech = "combat=1"
attack_verb = list("robusted")
hitsound = 'sound/weapons/smash.ogg'
@@ -103,4 +104,4 @@
/obj/item/weapon/storage/toolbox/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] robusts \himself with the toolbox! It looks like \he's trying to commit suicide..</span>")
return (BRUTELOSS)
return (BRUTELOSS)
@@ -223,4 +223,3 @@
new /obj/item/weapon/screwdriver/nuke(src)
new /obj/item/nuke_core_container(src)
new /obj/item/weapon/paper/nuke_instructions(src)
new /obj/item/weapon/paper/nuke_plans(src)
@@ -2,12 +2,12 @@
name = "jetpack (empty)"
desc = "A tank of compressed gas for use as propulsion in zero-gravity areas. Use with caution."
icon_state = "jetpack"
w_class = 4.0
w_class = 4
item_state = "jetpack"
distribute_pressure = ONE_ATMOSPHERE * O2STANDARD
action_button_name = "Toggle Jetpack"
var/datum/effect/effect/system/ion_trail_follow/ion_trail
var/on = 0.0
var/on = 0
var/stabilization_on = 0
var/volume_rate = 500 //Needed for borg jetpack transfer
@@ -148,8 +148,8 @@
icon_state = "emergency"
flags = CONDUCT
slot_flags = SLOT_BELT
w_class = 2.0
force = 4.0
w_class = 2
force = 4
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
volume = 3 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011)
+12 -2
View File
@@ -10,8 +10,8 @@
pressure_resistance = ONE_ATMOSPHERE*5
force = 5.0
throwforce = 10.0
force = 5
throwforce = 10
throw_speed = 1
throw_range = 4
@@ -20,6 +20,16 @@
var/integrity = 3
var/volume = 70
/obj/item/weapon/tank/suicide_act(mob/user)
var/mob/living/carbon/human/H = user
user.visible_message("<span class='suicide'>[user] is putting the [src]'s valve to their lips! I don't think they're gonna stop!</span>")
playsound(loc, 'sound/effects/spray.ogg', 10, 1, -3)
sleep(3)
if (H && !qdeleted(H))
H.gib()
return
/obj/item/weapon/tank/New()
..()
@@ -5,7 +5,7 @@
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "waterbackpack"
item_state = "waterbackpack"
w_class = 4.0
w_class = 4
slot_flags = SLOT_BACK
slowdown = 1
action_button_name = "Toggle Mister"
@@ -108,7 +108,7 @@
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "mister"
item_state = "mister"
w_class = 4.0
w_class = 4
amount_per_transfer_from_this = 50
possible_transfer_amounts = list(25,50,100)
volume = 500
@@ -15,9 +15,9 @@
var/temp = null
var/frequency = 1451
var/broadcasting = null
var/listening = 1.0
var/listening = 1
flags = CONDUCT
w_class = 2.0
w_class = 2
item_state = "electronic"
throw_speed = 3
throw_range = 7
@@ -78,7 +78,7 @@ Frequency:
src.temp += "[W.code]-[dir2text(get_dir(sr, tr))]-[direct]<BR>"
src.temp += "<B>Extranneous Signals:</B><BR>"
for (var/obj/item/weapon/implant/tracking/W in world)
for (var/obj/item/weapon/implant/tracking/W in tracked_implants)
if (!W.implanted || !ismob(W.loc))
continue
else
@@ -129,7 +129,7 @@ Frequency:
icon_state = "hand_tele"
item_state = "electronic"
throwforce = 0
w_class = 2.0
w_class = 2
throw_speed = 3
throw_range = 5
materials = list(MAT_METAL=10000)
+6 -2
View File
@@ -106,10 +106,10 @@
icon_state = "cutters"
flags = CONDUCT
slot_flags = SLOT_BELT
force = 6.0
force = 6
throw_speed = 3
throw_range = 7
w_class = 2.0
w_class = 2
materials = list(MAT_METAL=80)
origin_tech = "materials=1;engineering=1"
attack_verb = list("pinched", "nipped")
@@ -164,6 +164,7 @@
var/change_icons = 1
var/can_off_process = 0
var/light_intensity = 2 //how powerful the emitted light is when used.
heat = 3800
/obj/item/weapon/weldingtool/New()
..()
@@ -350,6 +351,9 @@
hitsound = "swing_hit"
update_icon()
/obj/item/weapon/weldingtool/is_hot()
return welding * heat
/obj/item/weapon/weldingtool/proc/flamethrower_screwdriver(obj/item/I, mob/user)
if(welding)
user << "<span class='warning'>Turn it off first!</span>"
+17 -9
View File
@@ -37,7 +37,10 @@
else //something wrong
name = "[initial(name)]"
update_icon()
user << "<span class='notice'>You are now carrying the [name] with one hand.</span>"
if(isrobot(user))
user << "<span class='notice'>You free up your module.</span>"
else
user << "<span class='notice'>You are now carrying the [name] with one hand.</span>"
if(unwieldsound)
playsound(loc, unwieldsound, 50, 1)
var/obj/item/weapon/twohanded/offhand/O = user.get_inactive_hand()
@@ -57,7 +60,10 @@
force = force_wielded
name = "[name] (Wielded)"
update_icon()
user << "<span class='notice'>You grab the [name] with both hands.</span>"
if(isrobot(user))
user << "<span class='notice'>You dedicate your module to [name].</span>"
else
user << "<span class='notice'>You grab the [name] with both hands.</span>"
if (wieldsound)
playsound(loc, wieldsound, 50, 1)
var/obj/item/weapon/twohanded/offhand/O = new(user) ////Let's reserve his other hand~
@@ -95,7 +101,7 @@
/obj/item/weapon/twohanded/offhand
name = "offhand"
icon_state = "offhand"
w_class = 5.0
w_class = 5
flags = ABSTRACT
/obj/item/weapon/twohanded/offhand/unwield()
@@ -115,7 +121,7 @@
///////////Two hand required objects///////////////
//This is for objects that require two hands to even pick up
/obj/item/weapon/twohanded/required/
w_class = 5.0
w_class = 5
/obj/item/weapon/twohanded/required/attack_self()
return
@@ -150,12 +156,13 @@
desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?"
force = 5
throwforce = 15
w_class = 4.0
w_class = 4
slot_flags = SLOT_BACK
force_unwielded = 5
force_wielded = 24 // Was 18, Buffed - RobRichards/RR
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
sharpness = IS_SHARP
/obj/item/weapon/twohanded/fireaxe/update_icon() //Currently only here to fuck with the on-mob icons.
icon_state = "fireaxe[wielded]"
@@ -188,10 +195,10 @@
name = "double-bladed energy sword"
desc = "Handle with care."
force = 3
throwforce = 5.0
throwforce = 5
throw_speed = 3
throw_range = 5
w_class = 2.0
w_class = 2
force_unwielded = 3
force_wielded = 34
wieldsound = 'sound/weapons/saberon.ogg'
@@ -244,7 +251,7 @@
return 1
/obj/item/weapon/twohanded/dualsaber/wield(mob/living/carbon/M) //Specific wield () hulk checks due to reflection chance for balance issues and switches hitsounds.
if(istype(M))
if(M.has_dna())
if(M.dna.check_mutation(HULK))
M << "<span class='warning'>You lack the grace to wield this!</span>"
return
@@ -285,7 +292,7 @@
name = "spear"
desc = "A haphazardly-constructed yet still deadly weapon of ancient design."
force = 10
w_class = 4.0
w_class = 4
slot_flags = SLOT_BACK
force_unwielded = 10
force_wielded = 18
@@ -295,6 +302,7 @@
flags = NOSHIELD
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
sharpness = IS_SHARP
/obj/item/weapon/twohanded/spear/update_icon()
icon_state = "spearglass[wielded]"
@@ -6,11 +6,11 @@
icon_state = "refill_snack"
item_state = "restock_unit"
flags = CONDUCT
force = 7.0
throwforce = 10.0
force = 7
throwforce = 10
throw_speed = 1
throw_range = 7
w_class = 4.0
w_class = 4
var/charges = list(0, 0, 0) //how many restocking "charges" the refill has for standard/contraband/coin products
var/init_charges = list(0, 0, 0)
+3 -2
View File
@@ -5,7 +5,7 @@
icon_state = "toyhammer"
slot_flags = SLOT_BELT
throwforce = 0
w_class = 1.0
w_class = 1
throw_speed = 3
throw_range = 7
attack_verb = list("banned")
@@ -104,7 +104,7 @@
force = 9
throwforce = 10
w_class = 3
materials = list(MAT_METAL=1875)
materials = list(MAT_METAL=1000)
attack_verb = list("hit", "bludgeoned", "whacked", "bonked")
/obj/item/weapon/wirerod/attackby(obj/item/I, mob/user, params)
@@ -146,6 +146,7 @@
w_class = 2
embed_chance = 100
embedded_fall_chance = 0 //Hahaha!
sharpness = IS_SHARP
//5*(2*4) = 5*8 = 45, 45 damage if you hit one person with all 5 stars.
//Not counting the damage it will do while embedded (2*4 = 8, at 15% chance)