mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-02 21:52:48 +00:00
This commit adds glass tables (credit to WalterJe of -tg-'s fourms for the sprites) to the game. These can be constructed with two metal sheets, and two glass sheets. Flipping the table causes it to shatter and deconstruct itself. You can deconstruct the table at any stage with a wrench.
932 lines
27 KiB
Plaintext
932 lines
27 KiB
Plaintext
/obj/item/weapon/phone
|
|
name = "red phone"
|
|
desc = "Should anything ever go wrong..."
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "red_phone"
|
|
flags = CONDUCT
|
|
force = 3.0
|
|
throwforce = 2.0
|
|
throw_speed = 1
|
|
throw_range = 4
|
|
w_class = 2
|
|
attack_verb = list("called", "rang")
|
|
hitsound = 'sound/weapons/ring.ogg'
|
|
|
|
/obj/item/weapon/rsp
|
|
name = "\improper Rapid-Seed-Producer (RSP)"
|
|
desc = "A device used to rapidly deploy seeds."
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "rcd"
|
|
opacity = 0
|
|
density = 0
|
|
anchored = 0.0
|
|
var/matter = 0
|
|
var/mode = 1
|
|
w_class = 3.0
|
|
|
|
/obj/item/weapon/bananapeel
|
|
name = "banana peel"
|
|
desc = "A peel from a banana."
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "banana_peel"
|
|
item_state = "banana_peel"
|
|
w_class = 1.0
|
|
throwforce = 0
|
|
throw_speed = 4
|
|
throw_range = 20
|
|
|
|
/obj/item/weapon/corncob
|
|
name = "corn cob"
|
|
desc = "A reminder of meals gone by."
|
|
icon = 'icons/obj/harvest.dmi'
|
|
icon_state = "corncob"
|
|
item_state = "corncob"
|
|
w_class = 1.0
|
|
throwforce = 0
|
|
throw_speed = 4
|
|
throw_range = 20
|
|
|
|
/obj/item/weapon/soap
|
|
name = "soap"
|
|
desc = "A cheap bar of soap. Doesn't smell."
|
|
gender = PLURAL
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "soap"
|
|
w_class = 1.0
|
|
throwforce = 0
|
|
throw_speed = 4
|
|
throw_range = 20
|
|
discrete = 1
|
|
var/cleanspeed = 50 //slower than mop
|
|
|
|
/obj/item/weapon/soap/nanotrasen
|
|
desc = "A Nanotrasen brand bar of soap. Smells of plasma."
|
|
icon_state = "soapnt"
|
|
|
|
/obj/item/weapon/soap/deluxe
|
|
icon_state = "soapdeluxe"
|
|
|
|
/obj/item/weapon/soap/deluxe/New()
|
|
desc = "A deluxe Waffle Co. brand bar of soap. Smells of comdoms."
|
|
cleanspeed = 40 //same speed as mop because deluxe -- captain gets one of these
|
|
|
|
/obj/item/weapon/soap/syndie
|
|
desc = "An untrustworthy bar of soap made of strong chemical agents that dissolve blood faster."
|
|
icon_state = "soapsyndie"
|
|
cleanspeed = 10 //much faster than mop so it is useful for traitors who want to clean crime scenes
|
|
|
|
/obj/item/weapon/bikehorn
|
|
name = "bike horn"
|
|
desc = "A horn off of a bicycle."
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "bike_horn"
|
|
item_state = "bike_horn"
|
|
hitsound = 'sound/items/bikehorn.ogg'
|
|
throwforce = 3
|
|
w_class = 1.0
|
|
throw_speed = 3
|
|
throw_range = 15
|
|
attack_verb = list("HONKED")
|
|
var/spam_flag = 0
|
|
|
|
|
|
/obj/item/weapon/c_tube
|
|
name = "cardboard tube"
|
|
desc = "A tube... of cardboard."
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "c_tube"
|
|
throwforce = 1
|
|
w_class = 1.0
|
|
throw_speed = 4
|
|
throw_range = 5
|
|
|
|
|
|
/obj/item/weapon/cane
|
|
name = "cane"
|
|
desc = "A cane used by a true gentlemen. Or a clown."
|
|
icon = 'icons/obj/weapons.dmi'
|
|
icon_state = "cane"
|
|
item_state = "stick"
|
|
flags = CONDUCT
|
|
force = 5.0
|
|
throwforce = 7.0
|
|
w_class = 2.0
|
|
m_amt = 50
|
|
attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
|
|
|
|
/obj/item/weapon/disk
|
|
name = "disk"
|
|
icon = 'icons/obj/items.dmi'
|
|
|
|
/obj/item/weapon/disk/nuclear
|
|
name = "nuclear authentication disk"
|
|
desc = "Better keep this safe."
|
|
icon_state = "nucleardisk"
|
|
item_state = "card-id"
|
|
w_class = 1.0
|
|
|
|
/*
|
|
/obj/item/weapon/disk/nuclear/pickup(mob/living/user as mob)
|
|
if(issyndicate(user))
|
|
set_security_level(3)*/ //Nuke Ops rework makes stealth approach significantly harder; this makes it damn near impossible; besides, it's horrendously meta.
|
|
|
|
/*
|
|
/obj/item/weapon/game_kit
|
|
name = "Gaming Kit"
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "game_kit"
|
|
var/selected = null
|
|
var/board_stat = null
|
|
var/data = ""
|
|
var/base_url = "http://svn.slurm.us/public/spacestation13/misc/game_kit"
|
|
item_state = "sheet-metal"
|
|
w_class = 5.0
|
|
*/
|
|
|
|
/obj/item/weapon/gift
|
|
name = "gift"
|
|
desc = "A wrapped item."
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "gift3"
|
|
var/size = 3.0
|
|
var/obj/item/gift = null
|
|
item_state = "gift"
|
|
w_class = 4.0
|
|
|
|
/obj/item/weapon/legcuffs
|
|
name = "legcuffs"
|
|
desc = "Use this to keep prisoners in line."
|
|
gender = PLURAL
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "handcuff"
|
|
flags = CONDUCT
|
|
throwforce = 0
|
|
w_class = 3.0
|
|
origin_tech = "materials=1"
|
|
var/breakouttime = 300 //Deciseconds = 30s = 0.5 minute
|
|
|
|
/obj/item/weapon/legcuffs/beartrap
|
|
name = "bear trap"
|
|
throw_speed = 1
|
|
throw_range = 1
|
|
icon_state = "beartrap0"
|
|
desc = "A trap used to catch bears and other legged creatures."
|
|
var/armed = 0
|
|
var/obj/item/weapon/grenade/iedcasing/IED = null
|
|
|
|
suicide_act(mob/user)
|
|
viewers(user) << "<span class='suicide'>[user] is putting the [src.name] on \his head! It looks like \he's trying to commit suicide.</span>"
|
|
return (BRUTELOSS)
|
|
|
|
/obj/item/weapon/legcuffs/beartrap/attack_self(mob/user as mob)
|
|
..()
|
|
if(ishuman(user) && !user.stat && !user.restrained())
|
|
armed = !armed
|
|
icon_state = "beartrap[armed]"
|
|
user << "<span class='notice'>[src] is now [armed ? "armed" : "disarmed"]</span>"
|
|
|
|
/obj/item/weapon/legcuffs/beartrap/attackby(var/obj/item/I, mob/user as mob) //Let's get explosive.
|
|
if(istype(I, /obj/item/weapon/grenade/iedcasing))
|
|
if(IED)
|
|
user << "<span class='warning'>This beartrap already has an IED hooked up to it!</span>"
|
|
return
|
|
IED = I
|
|
switch(IED.assembled)
|
|
if(0,1) //if it's not fueled/hooked up
|
|
user << "<span class='warning'>You haven't prepared this IED yet!</span>"
|
|
IED = null
|
|
return
|
|
if(2,3)
|
|
user.drop_item(src)
|
|
I.loc = src
|
|
var/turf/bombturf = get_turf(src)
|
|
var/area/A = get_area(bombturf)
|
|
var/log_str = "[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A> has rigged a beartrap with an IED at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>."
|
|
message_admins(log_str)
|
|
log_game(log_str)
|
|
user << "<span class='notice'>You sneak the [IED] underneath the pressure plate and connect the trigger wire.</span>"
|
|
desc = "A trap used to catch bears and other legged creatures. <span class='warning'>There is an IED hooked up to it.</span>"
|
|
else
|
|
user << "<span class='danger'>You shouldn't be reading this message! Contact a coder or someone, something broke!</span>"
|
|
IED = null
|
|
return
|
|
if(istype(I, /obj/item/weapon/screwdriver))
|
|
if(IED)
|
|
IED.loc = get_turf(src.loc)
|
|
IED = null
|
|
user << "<span class='notice'>You remove the IED from the [src].</span>"
|
|
return
|
|
..()
|
|
|
|
/obj/item/weapon/legcuffs/beartrap/Crossed(AM as mob|obj)
|
|
if(armed)
|
|
if(IED && isturf(src.loc))
|
|
IED.active = 1
|
|
IED.overlays -= image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled")
|
|
IED.icon_state = initial(icon_state) + "_active"
|
|
IED.assembled = 3
|
|
var/turf/bombturf = get_turf(src)
|
|
var/area/A = get_area(bombturf)
|
|
var/log_str = "[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[AM]'>?</A> has triggered an IED-rigged [name] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>."
|
|
message_admins(log_str)
|
|
log_game(log_str)
|
|
spawn(IED.det_time)
|
|
IED.prime()
|
|
if(ishuman(AM))
|
|
if(isturf(src.loc))
|
|
var/mob/living/carbon/H = AM
|
|
if(H.m_intent == "run")
|
|
if(H.lying)
|
|
H.apply_damage(20,BRUTE,"chest")
|
|
else
|
|
H.apply_damage(20,BRUTE,(pick("l_leg", "r_leg")))
|
|
armed = 0
|
|
icon_state = "beartrap0"
|
|
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
|
|
H.visible_message("<span class='danger'>[H] triggers \the [src].</span>", \
|
|
"<span class='userdanger'>You trigger \the [src]!</span>")
|
|
H.legcuffed = src
|
|
src.loc = H
|
|
H.update_inv_legcuffed()
|
|
H << "<span class='danger'>You step on \the [src]!</span>"
|
|
if(IED && IED.active)
|
|
H << "<span class='danger'>The [src]'s IED has been activated!</span>"
|
|
feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart.
|
|
for(var/mob/O in viewers(H, null))
|
|
if(O == H)
|
|
continue
|
|
O.show_message("\red <B>[H] steps on \the [src].</B>", 1)
|
|
if(isanimal(AM) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator))
|
|
armed = 0
|
|
icon_state = "beartrap0"
|
|
var/mob/living/simple_animal/SA = AM
|
|
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
|
|
SA.visible_message("<span class='danger'>[SA] triggers \the [src].</span>", \
|
|
"<span class='userdanger'>You trigger \the [src]!</span>")
|
|
SA.health -= 20
|
|
..()
|
|
|
|
/obj/item/weapon/holosign_creator
|
|
name = "holographic sign projector"
|
|
desc = "A handy-dandy hologaphic projector that displays a janitorial sign."
|
|
icon = 'icons/obj/janitor.dmi'
|
|
icon_state = "signmaker"
|
|
item_state = "electronic"
|
|
force = 5
|
|
w_class = 2
|
|
throwforce = 0
|
|
throw_speed = 3
|
|
throw_range = 7
|
|
origin_tech = "programming=3"
|
|
var/list/signs = list()
|
|
var/max_signs = 10
|
|
|
|
/obj/item/weapon/holosign_creator/afterattack(atom/target, mob/user, flag)
|
|
if(flag)
|
|
var/turf/T = get_turf(target)
|
|
var/obj/effect/overlay/holograph/H = locate() in T
|
|
if(H)
|
|
user << "<span class='notice'>You use [src] to destroy [H].</span>"
|
|
signs -= H
|
|
qdel(H)
|
|
else
|
|
if(signs.len < max_signs)
|
|
H = new(get_turf(target))
|
|
signs += H
|
|
user << "<span class='notice'>You create \a [H] with [src].</span>"
|
|
else
|
|
user << "<span class='notice'>[src] is projecting at max capacity!</span>"
|
|
|
|
/obj/item/weapon/holosign_creator/attack(mob/living/carbon/human/M, mob/user)
|
|
return
|
|
|
|
/obj/item/weapon/holosign_creator/attack_self(mob/user)
|
|
if(signs.len)
|
|
var/list/L = signs.Copy()
|
|
for(var/sign in L)
|
|
qdel(sign)
|
|
signs -= sign
|
|
user << "<span class='notice'>You clear all active holograms.</span>"
|
|
|
|
/obj/effect/overlay/holograph
|
|
name = "wet floor sign"
|
|
desc = "The words flicker as if they mean nothing."
|
|
icon = 'icons/obj/janitor.dmi'
|
|
icon_state = "holosign"
|
|
anchored = 1
|
|
|
|
/obj/item/weapon/caution
|
|
desc = "Caution! Wet Floor!"
|
|
name = "wet floor sign"
|
|
icon = 'icons/obj/janitor.dmi'
|
|
icon_state = "caution"
|
|
force = 1.0
|
|
throwforce = 3.0
|
|
throw_speed = 1
|
|
throw_range = 5
|
|
w_class = 2.0
|
|
attack_verb = list("warned", "cautioned", "smashed")
|
|
|
|
proximity_sign
|
|
var/timing = 0
|
|
var/armed = 0
|
|
var/timepassed = 0
|
|
|
|
attack_self(mob/user as mob)
|
|
if(ishuman(user))
|
|
var/mob/living/carbon/human/H = user
|
|
if(H.mind.assigned_role != "Janitor")
|
|
return
|
|
if(armed)
|
|
armed = 0
|
|
user << "\blue You disarm \the [src]."
|
|
return
|
|
timing = !timing
|
|
if(timing)
|
|
processing_objects.Add(src)
|
|
else
|
|
armed = 0
|
|
timepassed = 0
|
|
H << "\blue You [timing ? "activate \the [src]'s timer, you have 15 seconds." : "de-activate \the [src]'s timer."]"
|
|
|
|
process()
|
|
if(!timing)
|
|
processing_objects.Remove(src)
|
|
timepassed++
|
|
if(timepassed >= 15 && !armed)
|
|
armed = 1
|
|
timing = 0
|
|
|
|
HasProximity(atom/movable/AM as mob|obj)
|
|
if(armed)
|
|
if(istype(AM, /mob/living/carbon) && !istype(AM, /mob/living/carbon/brain))
|
|
var/mob/living/carbon/C = AM
|
|
if(C.m_intent != "walk")
|
|
src.visible_message("The [src.name] beeps, \"Running on wet floors is hazardous to your health.\"")
|
|
explosion(src.loc,-1,0,2)
|
|
if(ishuman(C))
|
|
dead_legs(C)
|
|
if(src)
|
|
qdel(src)
|
|
|
|
proc/dead_legs(mob/living/carbon/human/H as mob)
|
|
var/obj/item/organ/external/l = H.get_organ("l_leg")
|
|
var/obj/item/organ/external/r = H.get_organ("r_leg")
|
|
if(l && !(l.status & ORGAN_DESTROYED))
|
|
l.status |= ORGAN_DESTROYED
|
|
if(r && !(r.status & ORGAN_DESTROYED))
|
|
r.status |= ORGAN_DESTROYED
|
|
|
|
/obj/item/weapon/caution/cone
|
|
desc = "This cone is trying to warn you of something!"
|
|
name = "warning cone"
|
|
icon_state = "cone"
|
|
|
|
/obj/item/weapon/rack_parts
|
|
name = "rack parts"
|
|
desc = "Parts of a rack."
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "rack_parts"
|
|
flags = CONDUCT
|
|
m_amt = 3750
|
|
|
|
/*/obj/item/weapon/syndicate_uplink
|
|
name = "station bounced radio"
|
|
desc = "Remain silent about this..."
|
|
icon = 'icons/obj/radio.dmi'
|
|
icon_state = "radio"
|
|
var/temp = null
|
|
var/uses = 10.0
|
|
var/selfdestruct = 0.0
|
|
var/traitor_frequency = 0.0
|
|
var/mob/currentUser = null
|
|
var/obj/item/device/radio/origradio = null
|
|
flags = CONDUCT | ONBELT
|
|
w_class = 2.0
|
|
item_state = "radio"
|
|
throw_speed = 4
|
|
throw_range = 20
|
|
m_amt = 100
|
|
origin_tech = "magnets=2;syndicate=3"*/
|
|
|
|
/obj/item/weapon/SWF_uplink
|
|
name = "station-bounced radio"
|
|
desc = "used to comunicate it appears."
|
|
icon = 'icons/obj/radio.dmi'
|
|
icon_state = "radio"
|
|
var/temp = null
|
|
var/uses = 4.0
|
|
var/selfdestruct = 0.0
|
|
var/traitor_frequency = 0.0
|
|
var/obj/item/device/radio/origradio = null
|
|
flags = CONDUCT
|
|
slot_flags = SLOT_BELT
|
|
item_state = "radio"
|
|
throwforce = 5
|
|
w_class = 2.0
|
|
throw_speed = 4
|
|
throw_range = 20
|
|
m_amt = 100
|
|
origin_tech = "magnets=1"
|
|
|
|
/obj/item/weapon/staff
|
|
name = "wizards staff"
|
|
desc = "Apparently a staff used by the wizard."
|
|
icon = 'icons/obj/wizard.dmi'
|
|
icon_state = "staff"
|
|
force = 3.0
|
|
throwforce = 5.0
|
|
throw_speed = 1
|
|
throw_range = 5
|
|
w_class = 2.0
|
|
flags = NOSHIELD
|
|
attack_verb = list("bludgeoned", "whacked", "disciplined")
|
|
|
|
/obj/item/weapon/staff/broom
|
|
name = "broom"
|
|
desc = "Used for sweeping, and flying into the night while cackling. Black cat not included."
|
|
icon = 'icons/obj/wizard.dmi'
|
|
icon_state = "broom"
|
|
|
|
/obj/item/weapon/staff/stick
|
|
name = "stick"
|
|
desc = "A great tool to drag someone else's drinks across the bar."
|
|
icon = 'icons/obj/weapons.dmi'
|
|
icon_state = "stick"
|
|
item_state = "stick"
|
|
force = 3.0
|
|
throwforce = 5.0
|
|
throw_speed = 1
|
|
throw_range = 5
|
|
w_class = 2.0
|
|
flags = NOSHIELD
|
|
|
|
/obj/item/weapon/table_parts
|
|
name = "table parts"
|
|
desc = "Parts of a table. Poor table."
|
|
gender = PLURAL
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "table_parts"
|
|
m_amt = 3750
|
|
flags = CONDUCT
|
|
attack_verb = list("slammed", "bashed", "battered", "bludgeoned", "thrashed", "whacked")
|
|
|
|
/obj/item/weapon/table_parts/reinforced
|
|
name = "reinforced table parts"
|
|
desc = "Hard table parts. Well...harder..."
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "reinf_tableparts"
|
|
m_amt = 7500
|
|
flags = CONDUCT
|
|
|
|
/obj/item/weapon/table_parts/wood
|
|
name = "wooden table parts"
|
|
desc = "Keep away from fire."
|
|
icon_state = "wood_tableparts"
|
|
flags = null
|
|
|
|
/obj/item/weapon/table_parts/glass
|
|
name = "glass table parts"
|
|
desc = "fragile!"
|
|
icon_state = "glass_tableparts"
|
|
flags = null
|
|
|
|
/obj/item/weapon/wire
|
|
desc = "This is just a simple piece of regular insulated wire."
|
|
name = "wire"
|
|
icon = 'icons/obj/power.dmi'
|
|
icon_state = "item_wire"
|
|
var/amount = 1.0
|
|
var/laying = 0.0
|
|
var/old_lay = null
|
|
m_amt = 40
|
|
attack_verb = list("whipped", "lashed", "disciplined", "tickled")
|
|
|
|
suicide_act(mob/user)
|
|
viewers(user) << "\red <b>[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.</b>"
|
|
return (OXYLOSS)
|
|
|
|
/obj/item/weapon/module
|
|
icon = 'icons/obj/module.dmi'
|
|
icon_state = "std_module"
|
|
w_class = 2.0
|
|
item_state = "electronic"
|
|
flags = CONDUCT
|
|
var/mtype = 1 // 1=electronic 2=hardware
|
|
|
|
/obj/item/weapon/module/card_reader
|
|
name = "card reader module"
|
|
icon_state = "card_mod"
|
|
desc = "An electronic module for reading data and ID cards."
|
|
|
|
/obj/item/weapon/module/power_control
|
|
name = "power control module"
|
|
icon_state = "power_mod"
|
|
desc = "Heavy-duty switching circuits for power control."
|
|
|
|
/obj/item/weapon/module/id_auth
|
|
name = "\improper ID authentication module"
|
|
icon_state = "id_mod"
|
|
desc = "A module allowing secure authorization of ID cards."
|
|
|
|
/obj/item/weapon/module/cell_power
|
|
name = "power cell regulator module"
|
|
icon_state = "power_mod"
|
|
desc = "A converter and regulator allowing the use of power cells."
|
|
|
|
/obj/item/weapon/module/cell_power
|
|
name = "power cell charger module"
|
|
icon_state = "power_mod"
|
|
desc = "Charging circuits for power cells."
|
|
|
|
/obj/item/weapon/hatchet
|
|
name = "hatchet"
|
|
desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood."
|
|
icon = 'icons/obj/weapons.dmi'
|
|
icon_state = "hatchet"
|
|
flags = CONDUCT
|
|
force = 12.0
|
|
sharp = 1
|
|
edge = 1
|
|
w_class = 2.0
|
|
throwforce = 15.0
|
|
throw_speed = 4
|
|
throw_range = 4
|
|
m_amt = 15000
|
|
origin_tech = "materials=2;combat=1"
|
|
attack_verb = list("chopped", "torn", "cut")
|
|
hitsound = 'sound/weapons/bladeslice.ogg'
|
|
|
|
/obj/item/weapon/hatchet/unathiknife
|
|
name = "duelling knife"
|
|
desc = "A length of leather-bound wood studded with razor-sharp teeth. How crude."
|
|
icon = 'icons/obj/weapons.dmi'
|
|
icon_state = "unathiknife"
|
|
attack_verb = list("ripped", "torn", "cut")
|
|
|
|
/obj/item/weapon/scythe
|
|
icon_state = "scythe0"
|
|
name = "scythe"
|
|
desc = "A sharp and curved blade on a long fibremetal handle, this tool makes it easy to reap what you sow."
|
|
force = 13.0
|
|
throwforce = 5.0
|
|
sharp = 1
|
|
edge = 1
|
|
throw_speed = 2
|
|
throw_range = 3
|
|
w_class = 4.0
|
|
flags = NOSHIELD
|
|
slot_flags = SLOT_BACK
|
|
origin_tech = "materials=2;combat=2"
|
|
attack_verb = list("chopped", "sliced", "cut", "reaped")
|
|
hitsound = 'sound/weapons/bladeslice.ogg'
|
|
|
|
/obj/item/weapon/scythe/afterattack(atom/A, mob/user as mob, proximity)
|
|
if(!proximity) return
|
|
if(istype(A, /obj/effect/plantsegment))
|
|
for(var/obj/effect/plantsegment/B in orange(A,1))
|
|
if(prob(80))
|
|
qdel(B)
|
|
qdel(A)
|
|
|
|
/*
|
|
/obj/item/weapon/cigarpacket
|
|
name = "Pete's Cuban Cigars"
|
|
desc = "The most robust cigars on the planet."
|
|
icon = 'icons/obj/cigarettes.dmi'
|
|
icon_state = "cigarpacket"
|
|
item_state = "cigarpacket"
|
|
w_class = 1
|
|
throwforce = 2
|
|
var/cigarcount = 6
|
|
flags = ONBELT */
|
|
|
|
/obj/item/weapon/pai_cable
|
|
desc = "A flexible coated cable with a universal jack on one end."
|
|
name = "data cable"
|
|
icon = 'icons/obj/power.dmi'
|
|
icon_state = "wire1"
|
|
|
|
var/obj/machinery/machine
|
|
|
|
///////////////////////////////////////Stock Parts /////////////////////////////////
|
|
|
|
/obj/item/weapon/storage/part_replacer
|
|
name = "Rapid Part Exchange Device"
|
|
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
|
|
icon_state = "RPED"
|
|
item_state = "RPED"
|
|
icon_override = 'icons/mob/in-hand/tools.dmi'
|
|
w_class = 5
|
|
can_hold = list("/obj/item/weapon/stock_parts")
|
|
storage_slots = 50
|
|
use_to_pickup = 1
|
|
allow_quick_gather = 1
|
|
allow_quick_empty = 1
|
|
collection_mode = 1
|
|
max_w_class = 3
|
|
max_combined_w_class = 100
|
|
|
|
/obj/item/weapon/storage/part_replacer/proc/play_rped_sound()
|
|
//Plays the sound for RPED exchanging or installing parts.
|
|
playsound(src, 'sound/items/rped.ogg', 40, 1)
|
|
|
|
/obj/item/weapon/stock_parts
|
|
name = "stock part"
|
|
desc = "What?"
|
|
gender = PLURAL
|
|
icon = 'icons/obj/stock_parts.dmi'
|
|
w_class = 2.0
|
|
var/rating = 1
|
|
New()
|
|
src.pixel_x = rand(-5.0, 5)
|
|
src.pixel_y = rand(-5.0, 5)
|
|
|
|
//Rank 1
|
|
|
|
/obj/item/weapon/stock_parts/console_screen
|
|
name = "console screen"
|
|
desc = "Used in the construction of computers and other devices with a interactive console."
|
|
icon_state = "screen"
|
|
origin_tech = "materials=1"
|
|
g_amt = 200
|
|
|
|
/obj/item/weapon/stock_parts/capacitor
|
|
name = "capacitor"
|
|
desc = "A basic capacitor used in the construction of a variety of devices."
|
|
icon_state = "capacitor"
|
|
origin_tech = "powerstorage=1"
|
|
m_amt = 50
|
|
g_amt = 50
|
|
|
|
/obj/item/weapon/stock_parts/scanning_module
|
|
name = "scanning module"
|
|
desc = "A compact, high resolution scanning module used in the construction of certain devices."
|
|
icon_state = "scan_module"
|
|
origin_tech = "magnets=1"
|
|
m_amt = 50
|
|
g_amt = 20
|
|
|
|
/obj/item/weapon/stock_parts/manipulator
|
|
name = "micro-manipulator"
|
|
desc = "A tiny little manipulator used in the construction of certain devices."
|
|
icon_state = "micro_mani"
|
|
origin_tech = "materials=1;programming=1"
|
|
m_amt = 30
|
|
|
|
/obj/item/weapon/stock_parts/micro_laser
|
|
name = "micro-laser"
|
|
desc = "A tiny laser used in certain devices."
|
|
icon_state = "micro_laser"
|
|
origin_tech = "magnets=1"
|
|
m_amt = 10
|
|
g_amt = 20
|
|
|
|
/obj/item/weapon/stock_parts/matter_bin
|
|
name = "matter bin"
|
|
desc = "A container for hold compressed matter awaiting re-construction."
|
|
icon_state = "matter_bin"
|
|
origin_tech = "materials=1"
|
|
m_amt = 80
|
|
|
|
//Rank 2
|
|
|
|
/obj/item/weapon/stock_parts/capacitor/adv
|
|
name = "advanced capacitor"
|
|
desc = "An advanced capacitor used in the construction of a variety of devices."
|
|
icon_state = "adv_capacitor"
|
|
origin_tech = "powerstorage=3"
|
|
rating = 2
|
|
m_amt = 50
|
|
g_amt = 50
|
|
|
|
/obj/item/weapon/stock_parts/scanning_module/adv
|
|
name = "advanced scanning module"
|
|
desc = "A compact, high resolution scanning module used in the construction of certain devices."
|
|
icon_state = "adv_scan_module"
|
|
origin_tech = "magnets=3"
|
|
rating = 2
|
|
m_amt = 50
|
|
g_amt = 20
|
|
|
|
/obj/item/weapon/stock_parts/manipulator/nano
|
|
name = "nano-manipulator"
|
|
desc = "A tiny little manipulator used in the construction of certain devices."
|
|
icon_state = "nano_mani"
|
|
origin_tech = "materials=3,programming=2"
|
|
rating = 2
|
|
m_amt = 30
|
|
|
|
/obj/item/weapon/stock_parts/micro_laser/high
|
|
name = "high-power micro-laser"
|
|
desc = "A tiny laser used in certain devices."
|
|
icon_state = "high_micro_laser"
|
|
origin_tech = "magnets=3"
|
|
rating = 2
|
|
m_amt = 10
|
|
g_amt = 20
|
|
|
|
/obj/item/weapon/stock_parts/matter_bin/adv
|
|
name = "advanced matter bin"
|
|
desc = "A container for hold compressed matter awaiting re-construction."
|
|
icon_state = "advanced_matter_bin"
|
|
origin_tech = "materials=3"
|
|
rating = 2
|
|
m_amt = 80
|
|
|
|
//Rating 3
|
|
|
|
/obj/item/weapon/stock_parts/capacitor/super
|
|
name = "super capacitor"
|
|
desc = "A super-high capacity capacitor used in the construction of a variety of devices."
|
|
icon_state = "super_capacitor"
|
|
origin_tech = "powerstorage=5;materials=4"
|
|
rating = 3
|
|
m_amt = 50
|
|
g_amt = 50
|
|
|
|
/obj/item/weapon/stock_parts/scanning_module/phasic
|
|
name = "phasic scanning module"
|
|
desc = "A compact, high resolution phasic scanning module used in the construction of certain devices."
|
|
icon_state = "super_scan_module"
|
|
origin_tech = "magnets=5"
|
|
rating = 3
|
|
m_amt = 50
|
|
g_amt = 20
|
|
|
|
/obj/item/weapon/stock_parts/manipulator/pico
|
|
name = "pico-manipulator"
|
|
desc = "A tiny little manipulator used in the construction of certain devices."
|
|
icon_state = "pico_mani"
|
|
origin_tech = "materials=5,programming=2"
|
|
rating = 3
|
|
m_amt = 30
|
|
|
|
/obj/item/weapon/stock_parts/micro_laser/ultra
|
|
name = "ultra-high-power micro-laser"
|
|
icon_state = "ultra_high_micro_laser"
|
|
desc = "A tiny laser used in certain devices."
|
|
origin_tech = "magnets=5"
|
|
rating = 3
|
|
m_amt = 10
|
|
g_amt = 20
|
|
|
|
/obj/item/weapon/stock_parts/matter_bin/super
|
|
name = "super matter bin"
|
|
desc = "A container for hold compressed matter awaiting re-construction."
|
|
icon_state = "super_matter_bin"
|
|
origin_tech = "materials=5"
|
|
rating = 3
|
|
m_amt = 80
|
|
|
|
// Subspace stock parts
|
|
|
|
/obj/item/weapon/stock_parts/subspace/ansible
|
|
name = "subspace ansible"
|
|
icon_state = "subspace_ansible"
|
|
desc = "A compact module capable of sensing extradimensional activity."
|
|
origin_tech = "programming=2;magnets=3;materials=2;bluespace=1"
|
|
m_amt = 30
|
|
g_amt = 10
|
|
|
|
/obj/item/weapon/stock_parts/subspace/filter
|
|
name = "hyperwave filter"
|
|
icon_state = "hyperwave_filter"
|
|
desc = "A tiny device capable of filtering and converting super-intense radiowaves."
|
|
origin_tech = "programming=2;magnets=1"
|
|
m_amt = 30
|
|
g_amt = 10
|
|
|
|
/obj/item/weapon/stock_parts/subspace/amplifier
|
|
name = "subspace amplifier"
|
|
icon_state = "subspace_amplifier"
|
|
desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
|
|
origin_tech = "programming=2;magnets=2;materials=1;bluespace=1"
|
|
m_amt = 30
|
|
g_amt = 10
|
|
|
|
/obj/item/weapon/stock_parts/subspace/treatment
|
|
name = "subspace treatment disk"
|
|
icon_state = "treatment_disk"
|
|
desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
|
|
origin_tech = "programming=2;magnets=1;materials=3;bluespace=1"
|
|
m_amt = 30
|
|
g_amt = 10
|
|
|
|
/obj/item/weapon/stock_parts/subspace/analyzer
|
|
name = "subspace wavelength analyzer"
|
|
icon_state = "wavelength_analyzer"
|
|
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
|
|
origin_tech = "programming=2;magnets=2;materials=2;bluespace=1"
|
|
m_amt = 30
|
|
g_amt = 10
|
|
|
|
/obj/item/weapon/stock_parts/subspace/crystal
|
|
name = "ansible crystal"
|
|
icon_state = "ansible_crystal"
|
|
desc = "A crystal made from pure glass used to transmit laser databursts to subspace."
|
|
origin_tech = "magnets=2;materials=2;bluespace=1"
|
|
g_amt = 50
|
|
|
|
/obj/item/weapon/stock_parts/subspace/transmitter
|
|
name = "subspace transmitter"
|
|
icon_state = "subspace_transmitter"
|
|
desc = "A large piece of equipment used to open a window into the subspace dimension."
|
|
origin_tech = "magnets=3;materials=3;bluespace=2"
|
|
m_amt = 50
|
|
|
|
/obj/item/weapon/research//Makes testing much less of a pain -Sieve
|
|
name = "research"
|
|
icon = 'icons/obj/stock_parts.dmi'
|
|
icon_state = "capacitor"
|
|
desc = "A debug item for research."
|
|
origin_tech = "materials=8;programming=8;magnets=8;powerstorage=8;bluespace=8;combat=8;biotech=8;syndicate=8"
|
|
|
|
|
|
/////////Random shit////////
|
|
|
|
/obj/item/weapon/lightning
|
|
name = "lightning"
|
|
icon = 'icons/obj/lightning.dmi'
|
|
icon_state = "lightning"
|
|
desc = "test lightning"
|
|
|
|
New()
|
|
icon = midicon
|
|
icon_state = "1"
|
|
|
|
afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params)
|
|
var/angle = get_angle(A, user)
|
|
//world << angle
|
|
angle = round(angle) + 45
|
|
if(angle > 180)
|
|
angle -= 180
|
|
else
|
|
angle += 180
|
|
|
|
if(!angle)
|
|
angle = 1
|
|
//world << "adjusted [angle]"
|
|
icon_state = "[angle]"
|
|
//world << "[angle] [(get_dist(user, A) - 1)]"
|
|
user.Beam(A, "lightning", 'icons/obj/zap.dmi', 50, 15)
|
|
/*Testing
|
|
proc/get_angle(atom/a, atom/b)
|
|
return atan2(b.y - a.y, b.x - a.x)
|
|
proc/atan2(x, y)
|
|
if(!x && !y) return 0
|
|
return y >= 0 ? arccos(x / sqrt(x * x + y * y)) : -arccos(x / sqrt(x * x + y * y))
|
|
proc
|
|
// creates an /icon object with 360 states of rotation
|
|
rotate_icon(file, state, step = 1, aa = FALSE)
|
|
var icon/base = icon(file, state)
|
|
|
|
var w, h, w2, h2
|
|
if(aa)
|
|
aa ++
|
|
w = base.Width()
|
|
w2 = w * aa
|
|
h = base.Height()
|
|
h2 = h * aa
|
|
|
|
var icon{result = icon(base); temp}
|
|
|
|
for(var/angle in 0 to 360 step step)
|
|
if(angle == 0 ) continue
|
|
if(angle == 360) continue
|
|
|
|
temp = icon(base)
|
|
|
|
if(aa) temp.Scale(w2, h2)
|
|
temp.Turn(angle)
|
|
if(aa) temp.Scale(w, h)
|
|
|
|
result.Insert(temp, "[angle]")
|
|
|
|
return result*/
|
|
|
|
|
|
/obj/item/weapon/fan
|
|
name = "desk fan"
|
|
icon = 'icons/obj/decorations.dmi'
|
|
icon_state = "fan"
|
|
desc = "A smal desktop fan. Button seems to be stuck in the 'on' position."
|
|
|
|
/obj/item/weapon/newton
|
|
name = "newton cradle"
|
|
icon = 'icons/obj/decorations.dmi'
|
|
icon_state = "newton"
|
|
desc = "A device bored paper pushers use to remind themselves that the time did not stop yet. Contains gravity."
|
|
|
|
/obj/item/weapon/balltoy
|
|
name = "ball toy"
|
|
icon = 'icons/obj/decorations.dmi'
|
|
icon_state = "rollball"
|
|
desc = "A device bored paper pushers use to remind themselves that the time did not stop yet."
|
|
|
|
/obj/item/weapon/kidanglobe
|
|
name = "Kidan homeworld globe"
|
|
icon = 'icons/obj/decorations.dmi'
|
|
icon_state = "kidanglobe"
|
|
desc = "A globe of the Kidan homeworld."
|