This commit is contained in:
Seris02
2020-02-22 19:54:10 +08:00
701 changed files with 12663 additions and 5550 deletions
+2 -2
View File
@@ -22,7 +22,7 @@ AI MODULES
throw_range = 7
var/list/laws = list()
var/bypass_law_amt_check = 0
materials = list(MAT_GOLD=50)
custom_materials = list(/datum/material/gold=50)
/obj/item/aiModule/examine(var/mob/user as mob)
. = ..()
@@ -369,7 +369,7 @@ AI MODULES
if(!targName)
return
subject = targName
laws = list("You may not injure a [subject] or, through inaction, allow a [subject] to come to harm.",\
laws = list("You may not injure a [subject] or cause one to come to harm.",\
"You must obey orders given to you by [subject]s, except where such orders would conflict with the First Law.",\
"You must protect your own existence as long as such does not conflict with the First or Second Law.")
..()
+5 -5
View File
@@ -22,7 +22,7 @@ RLD
throw_speed = 3
throw_range = 5
w_class = WEIGHT_CLASS_NORMAL
materials = list(MAT_METAL=100000)
custom_materials = list(/datum/material/iron=100000)
req_access_txt = "11"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
@@ -196,7 +196,7 @@ RLD
/obj/item/construction/rcd/verb/change_airlock_access(mob/user)
if (!ishuman(user) && !user.has_unlimited_silicon_privilege)
if (!ishuman(user) && !user.silicon_privileges)
return
var/t1 = ""
@@ -603,7 +603,7 @@ RLD
energyfactor = 66
/obj/item/construction/rcd/loaded
materials = list(MAT_METAL=48000, MAT_GLASS=32000)
custom_materials = list(/datum/material/iron = 48000, /datum/material/glass = 32000)
matter = 160
/obj/item/construction/rcd/loaded/upgraded
@@ -635,13 +635,13 @@ RLD
item_state = "rcdammo"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
materials = list(MAT_METAL=12000, MAT_GLASS=8000)
custom_materials = list(/datum/material/iron=12000, /datum/material/glass=8000)
var/ammoamt = 40
/obj/item/rcd_ammo/large
name = "large compressed matter cartridge"
desc = "Highly compressed matter for the RCD. Has four times the matter packed into the same space as a normal cartridge."
materials = list(MAT_METAL=48000, MAT_GLASS=32000)
custom_materials = list(/datum/material/iron=48000, /datum/material/glass=32000)
ammoamt = 160
+1 -1
View File
@@ -188,7 +188,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
throw_speed = 1
throw_range = 5
w_class = WEIGHT_CLASS_NORMAL
materials = list(MAT_METAL=75000, MAT_GLASS=37500)
custom_materials = list(/datum/material/iron=75000, /datum/material/glass=37500)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
var/datum/effect_system/spark_spread/spark_system
+2 -2
View File
@@ -7,7 +7,7 @@
w_class = WEIGHT_CLASS_SMALL
materials = list(MAT_METAL=50, MAT_GLASS=50)
custom_materials = list(/datum/material/iron=50, /datum/material/glass=50)
flags_1 = CONDUCT_1
item_flags = NOBLUDGEON
@@ -67,7 +67,7 @@
L.Remove()
// make some colorful reagent, and apply it to the lungs
L.create_reagents(10)
L.create_reagents(10, NONE, NO_REAGENTS_VALUE)
L.reagents.add_reagent(/datum/reagent/colorful_reagent, 10)
L.reagents.reaction(L, TOUCH, 1)
+4 -4
View File
@@ -1,6 +1,6 @@
/obj/item/wallframe
icon = 'icons/obj/wallframe.dmi'
materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT*2)
custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT*2)
flags_1 = CONDUCT_1
item_state = "syringe_kit"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
@@ -66,8 +66,8 @@
if(iswallturf(T))
T.attackby(src, user, params)
var/metal_amt = round(materials[MAT_METAL]/MINERAL_MATERIAL_AMOUNT)
var/glass_amt = round(materials[MAT_GLASS]/MINERAL_MATERIAL_AMOUNT)
var/metal_amt = round(custom_materials[getmaterialref(/datum/material/iron)]/MINERAL_MATERIAL_AMOUNT)
var/glass_amt = round(custom_materials[getmaterialref(/datum/material/glass)]/MINERAL_MATERIAL_AMOUNT)
if(istype(W, /obj/item/wrench) && (metal_amt || glass_amt))
to_chat(user, "<span class='notice'>You dismantle [src].</span>")
@@ -119,5 +119,5 @@
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
flags_1 = CONDUCT_1
w_class = WEIGHT_CLASS_SMALL
materials = list(MAT_METAL=50, MAT_GLASS=50)
custom_materials = list(/datum/material/iron=50, /datum/material/glass=50)
grind_results = list(/datum/reagent/iron = 10, /datum/reagent/silicon = 10)
+1 -1
View File
@@ -20,7 +20,7 @@
throw_range = 14
w_class = WEIGHT_CLASS_SMALL
/obj/item/toy/tennis/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes
/obj/item/toy/tennis/alt_pre_attack(atom/A, mob/living/user, params) //checks if it can do right click memes
altafterattack(A, user, TRUE, params)
return TRUE
+1 -1
View File
@@ -23,7 +23,7 @@
if(!boomingandboxing)
var/list/tracklist = list()
for(var/datum/track/S in SSjukeboxes.songs)
if(istype(S) && S.song_associated_id in availabletrackids)
if(istype(S) && (S.song_associated_id in availabletrackids))
tracklist[S.song_name] = S
var/selected = input(user, "Play song", "Track:") as null|anything in tracklist
if(QDELETED(src) || !selected || !istype(tracklist[selected], /datum/track))
+41 -14
View File
@@ -250,6 +250,7 @@ update_label("John Doe", "Clowny")
name = "agent card"
access = list(ACCESS_MAINT_TUNNELS, ACCESS_SYNDICATE)
var/anyone = FALSE //Can anyone forge the ID or just syndicate?
var/forged = FALSE //have we set a custom name and job assignment, or will we use what we're given when we chameleon change?
/obj/item/card/id/syndicate/Initialize()
. = ..()
@@ -265,26 +266,52 @@ update_label("John Doe", "Clowny")
var/obj/item/card/id/I = O
src.access |= I.access
if(isliving(user) && user.mind)
if(user.mind.special_role)
if(user.mind.special_role || anyone)
to_chat(usr, "<span class='notice'>The card's microscanners activate as you pass it over the ID, copying its access.</span>")
/obj/item/card/id/syndicate/attack_self(mob/user)
if(isliving(user) && user.mind)
if(user.mind.special_role || anyone)
if(alert(user, "Action", "Agent ID", "Show", "Forge") == "Forge")
var/input_name = reject_bad_name(stripped_input(user, "What name would you like to put on this card?", "Agent card name", registered_name ? registered_name : (ishuman(user) ? user.real_name : user.name), MAX_NAME_LEN), TRUE)
if(!input_name)
return
var/first_use = registered_name ? FALSE : TRUE
if(!(user.mind.special_role || anyone)) //Unless anyone is allowed, only syndies can use the card, to stop metagaming.
if(first_use) //If a non-syndie is the first to forge an unassigned agent ID, then anyone can forge it.
anyone = TRUE
else
return ..()
var/u = stripped_input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant", MAX_MESSAGE_LEN)
if(!u)
registered_name = ""
return
assignment = u
update_label()
to_chat(user, "<span class='notice'>You successfully forge the ID card.</span>")
var/popup_input = alert(user, "Choose Action", "Agent ID", "Show", "Forge/Reset")
if(user.incapacitated())
return
if(popup_input == "Forge/Reset" && !forged)
var/input_name = stripped_input(user, "What name would you like to put on this card? Leave blank to randomise.", "Agent card name", registered_name ? registered_name : (ishuman(user) ? user.real_name : user.name), MAX_NAME_LEN)
input_name = reject_bad_name(input_name)
if(!input_name)
// Invalid/blank names give a randomly generated one.
if(user.gender == MALE)
input_name = "[pick(GLOB.first_names_male)] [pick(GLOB.last_names)]"
else if(user.gender == FEMALE)
input_name = "[pick(GLOB.first_names_female)] [pick(GLOB.last_names)]"
else
input_name = "[pick(GLOB.first_names)] [pick(GLOB.last_names)]"
var/target_occupation = stripped_input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", assignment ? assignment : "Assistant", MAX_MESSAGE_LEN)
if(!target_occupation)
return
..()
registered_name = input_name
assignment = target_occupation
update_label()
forged = TRUE
to_chat(user, "<span class='notice'>You successfully forge the ID card.</span>")
log_game("[key_name(user)] has forged \the [initial(name)] with name \"[registered_name]\" and occupation \"[assignment]\".")
return
else if (popup_input == "Forge/Reset" && forged)
registered_name = initial(registered_name)
assignment = initial(assignment)
log_game("[key_name(user)] has reset \the [initial(name)] named \"[src]\" to default.")
update_label()
forged = FALSE
to_chat(user, "<span class='notice'>You successfully reset the ID card.</span>")
return
return ..()
/obj/item/card/id/syndicate/anyone
anyone = TRUE
+2 -2
View File
@@ -122,7 +122,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/cigarette/Initialize()
. = ..()
create_reagents(chem_volume, INJECTABLE | NO_REACT) // so it doesn't react until you light it
create_reagents(chem_volume, INJECTABLE | NO_REACT, NO_REAGENTS_VALUE) // so it doesn't react until you light it
if(list_reagents)
reagents.add_reagent_list(list_reagents)
if(starts_lit)
@@ -717,7 +717,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/vape/Initialize(mapload, param_color)
. = ..()
create_reagents(chem_volume, NO_REACT) // so it doesn't react until you light it
create_reagents(chem_volume, NO_REACT, NO_REAGENTS_VALUE) // so it doesn't react until you light it
reagents.add_reagent(/datum/reagent/drug/nicotine, 50)
if(!icon_state)
if(!param_color)
@@ -10,7 +10,7 @@
item_state = "electronic"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
materials = list(MAT_GLASS=1000)
custom_materials = list(/datum/material/glass=1000)
w_class = WEIGHT_CLASS_SMALL
grind_results = list(/datum/reagent/silicon = 20)
var/build_path = null
@@ -35,6 +35,10 @@
/obj/item/stock_parts/manipulator = 1,
/obj/item/stack/sheet/glass = 1)
/obj/item/circuitboard/machine/autolathe/secure
name = "Secure Autolathe (Machine Board)"
build_path = /obj/machinery/autolathe/secure
/obj/item/circuitboard/machine/bloodbankgen
name = "Blood Bank Generator (Machine Board)"
build_path = /obj/machinery/bloodbankgen
+3 -2
View File
@@ -96,7 +96,7 @@
charges_left = charges
if(!reagents)
create_reagents(charges_left * volume_multiplier)
create_reagents(charges_left * volume_multiplier, NONE, NO_REAGENTS_VALUE)
reagents.clear_reagents()
var/total_weight = 0
@@ -710,7 +710,8 @@
if(isobj(target))
if(actually_paints)
if(color_hex2num(paint_color) < 350 && !istype(target, /obj/structure/window) && !istype(target, /obj/effect/decal/cleanable/crayon)) //Colors too dark are rejected
var/list/hsl = rgb2hsl(hex2num(copytext(paint_color,2,4)),hex2num(copytext(paint_color,4,6)),hex2num(copytext(paint_color,6,8)))
if(hsl[3] < 0.25 && !istype(target, /obj/structure/window) && !istype(target, /obj/effect/decal/cleanable/crayon)) //Colors too dark are rejected
to_chat(usr, "<span class='warning'>A color that dark on an object like this? Surely not...</span>")
return FALSE
+5 -20
View File
@@ -431,26 +431,11 @@
if((!req_defib && grab_ghost) || (req_defib && defib.grab_ghost))
H.notify_ghost_cloning("Your heart is being defibrillated!")
H.grab_ghost() // Shove them back in their body.
else if(can_defib(H))
else if(H.can_defib())
H.notify_ghost_cloning("Your heart is being defibrillated. Re-enter your corpse if you want to be revived!", source = src)
do_help(H, user)
/obj/item/twohanded/shockpaddles/proc/can_defib(mob/living/carbon/H) //Our code here is different than tg, if it breaks in testing; BUG_PROBABLE_CAUSE
var/obj/item/organ/heart = H.getorgan(/obj/item/organ/heart)
if(H.suiciding || H.hellbound || HAS_TRAIT(H, TRAIT_HUSK))
return
if((world.time - H.timeofdeath) > tlimit)
return
if((H.getBruteLoss() >= MAX_REVIVE_BRUTE_DAMAGE) || (H.getFireLoss() >= MAX_REVIVE_FIRE_DAMAGE))
return
if(!heart || (heart.organ_flags & ORGAN_FAILING))
return
var/obj/item/organ/brain/BR = H.getorgan(/obj/item/organ/brain)
if(QDELETED(BR) || BR.brain_death || (BR.organ_flags & ORGAN_FAILING) || H.suiciding)
return
return TRUE
/obj/item/twohanded/shockpaddles/proc/shock_touching(dmg, mob/H)
if(!H.pulledby || !isliving(H.pulledby))
return
@@ -745,22 +730,22 @@
name = "Defibrillator Healing Disk"
desc = "An upgrade which increases the healing power of the defibrillator"
icon_state = "heal_disk"
materials = list(MAT_METAL=16000, MAT_GLASS = 18000, MAT_GOLD = 6000, MAT_SILVER = 6000)
custom_materials = list(/datum/material/iron=16000, /datum/material/glass = 18000, /datum/material/gold = 6000, /datum/material/silver = 6000)
/obj/item/disk/medical/defib_shock
name = "Defibrillator Anti-Shock Disk"
desc = "A safety upgrade that guarantees only the patient will get shocked"
icon_state = "zap_disk"
materials = list(MAT_METAL=16000, MAT_GLASS = 18000, MAT_GOLD = 6000, MAT_SILVER = 6000)
custom_materials = list(/datum/material/iron=16000, /datum/material/glass = 18000, /datum/material/gold = 6000, /datum/material/silver = 6000)
/obj/item/disk/medical/defib_decay
name = "Defibrillator Body-Decay Extender Disk"
desc = "An upgrade allowing the defibrillator to work on more decayed bodies"
icon_state = "body_disk"
materials = list(MAT_METAL=16000, MAT_GLASS = 18000, MAT_GOLD = 16000, MAT_SILVER = 6000, MAT_TITANIUM = 2000)
custom_materials = list(/datum/material/iron=16000, /datum/material/glass = 18000, /datum/material/gold = 16000, /datum/material/silver = 6000, /datum/material/titanium = 2000)
/obj/item/disk/medical/defib_speed
name = "Defibrillator Fast Charge Disk"
desc = "An upgrade to the defibrillator capacitors, which let it charge faster"
icon_state = "fast_disk"
materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_GOLD = 26000, MAT_SILVER = 26000)
custom_materials = list(/datum/material/iron=16000, /datum/material/glass = 8000, /datum/material/gold = 26000, /datum/material/silver = 26000)
@@ -49,6 +49,10 @@
return
if(istype(target, /obj/structure/falsewall))
return
if(target.alpha != 255)
return
if(target.invisibility != 0)
return
if(iseffect(target))
if(!(istype(target, /obj/effect/decal))) //be a footprint
return
@@ -8,7 +8,7 @@
item_flags = NOBLUDGEON
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
materials = list(MAT_METAL = 250, MAT_GLASS = 500)
custom_materials = list(/datum/material/iron = 250, /datum/material/glass = 500)
var/max_duration = 3000
var/duration = 300
var/last_use = 0
@@ -12,7 +12,7 @@
item_flags = NOBLUDGEON
force = 3
attack_verb = list("blown up", "exploded", "detonated")
materials = list(MAT_METAL=50, MAT_GLASS=30)
custom_materials = list(/datum/material/iron=50, /datum/material/glass=30)
/obj/item/doorCharge/ex_act(severity, target)
switch(severity)
@@ -5,7 +5,7 @@
icon = 'icons/obj/module.dmi'
icon_state = "boris"
w_class = WEIGHT_CLASS_TINY
materials = list(MAT_METAL = 50, MAT_GLASS = 300)
custom_materials = list(/datum/material/iron = 50, /datum/material/glass = 300)
var/recharging = FALSE
var/circuits = 5 //How many circuits the pseudocircuit has left
var/static/recycleable_circuits = typecacheof(list(/obj/item/electronics/firelock, /obj/item/electronics/airalarm, /obj/item/electronics/firealarm, \
@@ -9,7 +9,7 @@
w_class = WEIGHT_CLASS_SMALL
flags_1 = CONDUCT_1
slot_flags = ITEM_SLOT_BELT
materials = list(MAT_METAL=50, MAT_GLASS=20)
custom_materials = list(/datum/material/iron=50, /datum/material/glass=20)
actions_types = list(/datum/action/item_action/toggle_light)
var/on = FALSE
var/brightness_on = 4 //range of light when on
@@ -51,7 +51,7 @@
/obj/item/flashlight/attack(mob/living/carbon/M, mob/living/carbon/human/user)
add_fingerprint(user)
if(istype(M) && on && user.zone_selected in list(BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH))
if(istype(M) && on && (user.zone_selected in list(BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH)))
if((HAS_TRAIT(user, TRAIT_CLUMSY) || HAS_TRAIT(user, TRAIT_DUMB)) && prob(50)) //too dumb to use flashlight properly
return ..() //just hit them in the head
@@ -224,7 +224,7 @@
light_color = "#FFDDBB"
w_class = WEIGHT_CLASS_BULKY
flags_1 = CONDUCT_1
materials = list()
custom_materials = null
on = TRUE
@@ -362,7 +362,7 @@
item_state = "slime"
w_class = WEIGHT_CLASS_SMALL
slot_flags = ITEM_SLOT_BELT
materials = list()
custom_materials = null
brightness_on = 6 //luminosity when on
light_color = "#FFEEAA"
flashlight_power = 0.6
@@ -390,7 +390,7 @@
return TRUE
/obj/item/flashlight/emp/attack(mob/living/M, mob/living/user)
if(on && user.zone_selected in list(BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH)) // call original attack when examining organs
if(on && (user.zone_selected in list(BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH))) // call original attack when examining organs
..()
return
@@ -9,7 +9,7 @@
item_state = "electronic"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
materials = list(MAT_METAL=250, MAT_GLASS=500)
custom_materials = list(/datum/material/iron=250, /datum/material/glass=500)
var/max_shield_integrity = 100
var/shield_integrity = 250
var/max_fields = 3
@@ -18,7 +18,7 @@
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
w_class = WEIGHT_CLASS_SMALL
slot_flags = ITEM_SLOT_BELT
materials = list(MAT_METAL = 150, MAT_GLASS = 150)
custom_materials = list(/datum/material/iron = 150, /datum/material/glass = 150)
var/grace = RAD_GRACE_PERIOD
var/datum/looping_sound/geiger/soundloop
@@ -8,7 +8,7 @@
flags_1 = CONDUCT_1
item_flags = NOBLUDGEON
slot_flags = ITEM_SLOT_BELT
materials = list(MAT_METAL=500, MAT_GLASS=500)
custom_materials = list(/datum/material/iron=500, /datum/material/glass=500)
w_class = WEIGHT_CLASS_SMALL
var/turf/pointer_loc
var/energy = 5
+1 -1
View File
@@ -24,7 +24,7 @@
throwforce = 0
throw_range = 7
throw_speed = 3
materials = list(MAT_METAL=50, MAT_GLASS=20)
custom_materials = list(/datum/material/iron=50, /datum/material/glass=20)
var/obj/machinery/buffer // simple machine buffer for device linkage
toolspeed = 1
tool_behaviour = TOOL_MULTITOOL
@@ -6,7 +6,7 @@
item_flags = NOBLUDGEON
var/paint_color = "grey"
materials = list(MAT_METAL=5000, MAT_GLASS=2000)
custom_materials = list(/datum/material/iron=5000, /datum/material/glass=2000)
/obj/item/pipe_painter/afterattack(atom/A, mob/user, proximity_flag)
. = ..()
+1 -1
View File
@@ -13,7 +13,7 @@
throwforce = 5
throw_speed = 1
throw_range = 2
materials = list(MAT_METAL=750)
custom_materials = list(/datum/material/iron=750)
var/drain_rate = 1600000 // amount of power to drain per tick
var/power_drained = 0 // has drained this much power
var/max_power = 1e10 // maximum power that can be drained before exploding
@@ -9,7 +9,7 @@
flags_1 = CONDUCT_1
slot_flags = ITEM_SLOT_BACK
w_class = WEIGHT_CLASS_HUGE
materials = list(MAT_METAL=10000, MAT_GLASS=2500)
custom_materials = list(/datum/material/iron=10000, /datum/material/glass=2500)
var/code = 2
var/frequency = FREQ_ELECTROPACK
@@ -157,7 +157,7 @@ Code:
w_class = WEIGHT_CLASS_SMALL
strip_delay = 60
equip_delay_other = 60
materials = list(MAT_METAL=5000, MAT_GLASS=2000)
custom_materials = list(/datum/material/iron = 5000, /datum/material/glass = 2000)
var/tagname = null
@@ -166,7 +166,7 @@ Code:
id = "shockcollar"
build_type = AUTOLATHE
build_path = /obj/item/electropack/shockcollar
materials = list(MAT_METAL=5000, MAT_GLASS=2000)
materials = list(/datum/material/iron = 5000, /datum/material/glass =2000)
category = list("hacked", "Misc")
/obj/item/electropack/shockcollar/attack_hand(mob/user)
@@ -19,7 +19,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
desc = "An updated, modular intercom that fits over the head. Takes encryption keys."
icon_state = "headset"
item_state = "headset"
materials = list(MAT_METAL=75)
custom_materials = list(/datum/material/iron=75)
subspace_transmission = TRUE
canhear_range = 0 // can't hear headsets from very far away
@@ -147,4 +147,4 @@
result_path = /obj/item/radio/intercom/unscrewed
pixel_shift = 29
inverse = TRUE
materials = list(MAT_METAL = 75, MAT_GLASS = 25)
custom_materials = list(/datum/material/iron = 75, /datum/material/glass = 25)
@@ -11,7 +11,7 @@
throw_speed = 3
throw_range = 7
w_class = WEIGHT_CLASS_SMALL
materials = list(MAT_METAL=75, MAT_GLASS=25)
custom_materials = list(/datum/material/iron=75, /datum/material/glass=25)
obj_flags = USES_TGUI
var/on = TRUE
+5 -5
View File
@@ -19,7 +19,7 @@ SLIME SCANNER
item_state = "electronic"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
materials = list(MAT_METAL=150)
custom_materials = list(/datum/material/iron=150)
/obj/item/t_scanner/suicide_act(mob/living/carbon/user)
user.visible_message("<span class='suicide'>[user] begins to emit terahertz-rays into [user.p_their()] brain with [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
@@ -75,7 +75,7 @@ SLIME SCANNER
w_class = WEIGHT_CLASS_TINY
throw_speed = 3
throw_range = 7
materials = list(MAT_METAL=200)
custom_materials = list(/datum/material/iron=200)
var/mode = 1
var/scanmode = 0
var/advanced = FALSE
@@ -519,7 +519,7 @@ SLIME SCANNER
throw_speed = 3
throw_range = 7
tool_behaviour = TOOL_ANALYZER
materials = list(MAT_METAL=30, MAT_GLASS=20)
custom_materials = list(/datum/material/iron=30, /datum/material/glass=20)
grind_results = list(/datum/reagent/mercury = 5, /datum/reagent/iron = 5, /datum/reagent/silicon = 5)
var/cooldown = FALSE
var/cooldown_time = 250
@@ -709,7 +709,7 @@ SLIME SCANNER
throwforce = 0
throw_speed = 3
throw_range = 7
materials = list(MAT_METAL=30, MAT_GLASS=20)
custom_materials = list(/datum/material/iron=30, /datum/material/glass=20)
/obj/item/slime_scanner/attack(mob/living/M, mob/living/user)
if(user.stat || user.eye_blind)
@@ -768,7 +768,7 @@ SLIME SCANNER
w_class = WEIGHT_CLASS_TINY
throw_speed = 3
throw_range = 7
materials = list(MAT_METAL=200)
custom_materials = list(/datum/material/iron=200)
/obj/item/nanite_scanner/attack(mob/living/M, mob/living/carbon/human/user)
user.visible_message("<span class='notice'>[user] has analyzed [M]'s nanites.</span>")
@@ -9,7 +9,7 @@
w_class = WEIGHT_CLASS_SMALL
flags_1 = HEAR_1
slot_flags = ITEM_SLOT_BELT
materials = list(MAT_METAL=60, MAT_GLASS=30)
custom_materials = list(/datum/material/iron=60, /datum/material/glass=30)
force = 2
throwforce = 0
var/recording = 0
@@ -243,7 +243,7 @@
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
w_class = WEIGHT_CLASS_TINY
materials = list(MAT_METAL=20, MAT_GLASS=5)
custom_materials = list(/datum/material/iron=20, /datum/material/glass=5)
force = 1
throwforce = 0
var/max_capacity = 600
@@ -69,7 +69,7 @@ effective or pretty fucking useless.
*/
/obj/item/healthanalyzer/rad_laser
materials = list(MAT_METAL=400)
custom_materials = list(/datum/material/iron=400)
var/irradiate = 1
var/intensity = 10 // how much damage the radiation does
var/wavelength = 10 // time it takes for the radiation to kick in, in seconds
+2 -2
View File
@@ -11,7 +11,7 @@
throw_speed = 2
throw_range = 7
force = 10
materials = list(MAT_METAL = 90)
custom_materials = list(/datum/material/iron = 90)
attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed")
dog_fashion = /datum/dog_fashion/back
resistance_flags = FIRE_PROOF
@@ -36,7 +36,7 @@
throwforce = 2
w_class = WEIGHT_CLASS_SMALL
force = 3
materials = list(MAT_METAL = 50, MAT_GLASS = 40)
custom_materials = list(/datum/material/iron = 50, /datum/material/glass = 40)
max_water = 30
sprite_name = "miniFE"
dog_fashion = null
+1 -1
View File
@@ -12,7 +12,7 @@
throw_speed = 1
throw_range = 5
w_class = WEIGHT_CLASS_NORMAL
materials = list(MAT_METAL=500)
custom_materials = list(/datum/material/iron=500)
resistance_flags = FIRE_PROOF
var/status = FALSE
var/lit = FALSE //on or off
+7 -1
View File
@@ -490,7 +490,13 @@
oneuse = FALSE
remarks = list("Looks like these would sell much better in a plasma fire...", "Using glass bowls rather then cones?", "Mixing soda and ice-cream?", "Tall glasses with of liquids and solids...", "Just add a bit of icecream and cherry on top?")
//Later content when I have free time - Trilby Date:24-Aug-2019
/obj/item/book/granter/crafting_recipe/bone_bow //Bow crafting for non-ashwalkers
name = "Sandstone manual on bows"
desc = "A standstone slab with everything you need to know for making bows and arrows just like an ashwalker would."
crafting_recipe_types = list(/datum/crafting_recipe/bone_arrow, /datum/crafting_recipe/bone_bow, /datum/crafting_recipe/ashen_arrow, /datum/crafting_recipe/quiver, /datum/crafting_recipe/bow_tablet)
icon_state = "stone_tablet"
oneuse = FALSE
remarks = list("Sticking burning arrows into the sand makes them stronger?", "Breaking the bone apart to get shards, not sharpening the bone.", "Sinew is just like rope?")
/obj/item/book/granter/crafting_recipe/under_the_oven //Illegal cook book
name = "Under The Oven"
@@ -117,7 +117,7 @@
if(!O.reagents)
continue
var/reagent_list = pretty_string_from_reagent_list(O.reagents)
user.log_message("removed [O] ([reagent_list]) from [src]")
user.log_message("removed [O] ([reagent_list]) from [src]", LOG_GAME)
beakers = list()
to_chat(user, "<span class='notice'>You open the [initial(name)] assembly and remove the payload.</span>")
return // First use of the wrench remove beakers, then use the wrench to remove the activation mechanism.
+3 -3
View File
@@ -36,7 +36,7 @@
w_class = WEIGHT_CLASS_SMALL
throw_speed = 3
throw_range = 5
materials = list(MAT_METAL=500)
custom_materials = list(/datum/material/iron=500)
breakouttime = 600 //Deciseconds = 60s = 1 minute
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
var/cuffsound = 'sound/weapons/handcuffs.ogg'
@@ -117,7 +117,7 @@
color = "#ff0000"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
materials = list(MAT_METAL=150, MAT_GLASS=75)
custom_materials = list(/datum/material/iron=150, /datum/material/glass=75)
breakouttime = 300 //Deciseconds = 30s
cuffsound = 'sound/weapons/cablecuff.ogg'
@@ -202,7 +202,7 @@
item_state = "zipties"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
materials = list()
custom_materials = null
breakouttime = 450 //Deciseconds = 45s
trashtype = /obj/item/restraints/handcuffs/cable/zipties/used
item_color = "white"
@@ -37,18 +37,18 @@
eye_color = H.eye_color
return TRUE
/obj/item/implant/hijack/removed(mob/target, silent = FALSE, special = 0)
/obj/item/implant/hijack/removed(mob/living/source, silent = FALSE, special = 0)
if(..())
REMOVE_TRAIT(target, TRAIT_HIJACKER, "implant")
for (var/area/area in imp_in.siliconaccessareas)
imp_in.toggleSiliconAccessArea(area)
REMOVE_TRAIT(source, TRAIT_HIJACKER, "implant")
for (var/area/area in source.siliconaccessareas)
source.toggleSiliconAccessArea(area)
var/obj/machinery/power/apc/apc = area.get_apc()
if (apc)
apc.hijacker = null
apc.set_hijacked_lighting()
apc.update_icon()
if (ishuman(target))
var/mob/living/carbon/human/H = target
if (ishuman(source))
var/mob/living/carbon/human/H = source
H.eye_color = eye_color
return TRUE
@@ -118,4 +118,4 @@
imp_in.light_range = 0
imp_in.light_color = COLOR_YELLOW
imp_in.update_light()
return TRUE
return TRUE
@@ -9,7 +9,7 @@
throw_speed = 2
throw_range = 5
w_class = WEIGHT_CLASS_TINY
materials = list(MAT_GLASS=500)
custom_materials = list(/datum/material/glass=500)
var/obj/item/implant/imp = null
var/imp_type
@@ -9,7 +9,7 @@
throw_speed = 3
throw_range = 5
w_class = WEIGHT_CLASS_SMALL
materials = list(MAT_METAL=600, MAT_GLASS=200)
custom_materials = list(/datum/material/iron=600, /datum/material/glass=200)
var/obj/item/implant/imp = null
var/imp_type = null
+5 -5
View File
@@ -22,7 +22,7 @@
throwforce = 0
throw_speed = 3
throw_range = 5
materials = list(MAT_METAL=80)
custom_materials = list(/datum/material/iron=80)
flags_1 = CONDUCT_1
attack_verb = list("attacked", "stabbed", "poked")
hitsound = 'sound/weapons/bladeslice.ogg'
@@ -65,7 +65,7 @@
hitsound = 'sound/weapons/bladeslice.ogg'
throw_speed = 3
throw_range = 6
materials = list(MAT_METAL=12000)
custom_materials = list(/datum/material/iron=12000)
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
sharpness = IS_SHARP_ACCURATE
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
@@ -104,7 +104,7 @@
flags_1 = CONDUCT_1
force = 15
throwforce = 10
materials = list(MAT_METAL=18000)
custom_materials = list(/datum/material/iron=18000)
attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
w_class = WEIGHT_CLASS_NORMAL
@@ -136,7 +136,7 @@
desc = "A sharpened bone. The bare minimum in survival."
force = 15
throwforce = 15
materials = list()
custom_materials = null
/obj/item/kitchen/knife/combat/cyborg
name = "cyborg knife"
@@ -153,7 +153,7 @@
desc = "Unlike other carrots, you should probably keep this far away from your eyes."
force = 8
throwforce = 12//fuck git
materials = list()
custom_materials = null
attack_verb = list("shanked", "shivved")
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+1 -1
View File
@@ -259,7 +259,7 @@
light_color = "#37FFF7"
actions_types = list()
/obj/item/melee/transforming/energy/sword/cx/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes
/obj/item/melee/transforming/energy/sword/cx/alt_pre_attack(atom/A, mob/living/user, params) //checks if it can do right click memes
altafterattack(A, user, TRUE, params)
return TRUE
+28 -2
View File
@@ -24,7 +24,7 @@
w_class = WEIGHT_CLASS_NORMAL
attack_verb = list("flogged", "whipped", "lashed", "disciplined")
hitsound = 'sound/weapons/chainhit.ogg'
materials = list(MAT_METAL = 1000)
custom_materials = list(/datum/material/iron = 1000)
/obj/item/melee/chainofcommand/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
@@ -67,7 +67,7 @@
sharpness = IS_SHARP
attack_verb = list("slashed", "cut")
hitsound = 'sound/weapons/rapierhit.ogg'
materials = list(MAT_METAL = 1000)
custom_materials = list(/datum/material/iron = 1000)
total_mass = 3.4
/obj/item/melee/sabre/Initialize()
@@ -507,3 +507,29 @@
held_sausage.name = "[target.name]-roasted [held_sausage.name]"
held_sausage.desc = "[held_sausage.desc] It has been cooked to perfection on \a [target]."
update_icon()
/obj/item/melee/cleric_mace
name = "cleric mace"
desc = "The grandson of the club, yet the grandfather of the baseball bat. Most notably used by holy orders in days past."
icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "mace_greyscale"
item_state = "mace_greyscale"
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR //Material type changes the prefix as well as the color.
custom_materials = list(/datum/material/iron = 12000) //Defaults to an Iron Mace.
slot_flags = ITEM_SLOT_BELT
force = 14
w_class = WEIGHT_CLASS_BULKY
throwforce = 8
block_chance = 10
armour_penetration = 50
attack_verb = list("smacked", "struck", "cracked", "beaten")
var/overlay_state = "mace_handle"
var/mutable_appearance/overlay
/obj/item/melee/cleric_mace/Initialize()
. = ..()
overlay = mutable_appearance(icon, overlay_state)
overlay.appearance_flags = RESET_COLOR
add_overlay(overlay)
+1 -1
View File
@@ -21,7 +21,7 @@
/obj/item/mop/New()
..()
create_reagents(mopcap)
create_reagents(mopcap, NONE, NO_REAGENTS_VALUE)
/obj/item/mop/proc/clean(turf/A)
+1 -1
View File
@@ -15,7 +15,7 @@
w_class = WEIGHT_CLASS_BULKY
throw_speed = 2
throw_range = 3
materials = list(MAT_METAL = 7500, MAT_GLASS = 100)
custom_materials = list(/datum/material/iron = 7500, /datum/material/glass = 100)
var/open = TRUE
var/locked = FALSE
var/list/occupants = list()
+34 -2
View File
@@ -12,7 +12,7 @@
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
throw_speed = 3
throw_range = 7
materials = list(MAT_METAL = 500, MAT_GLASS = 250)
custom_materials = list(/datum/material/iron = 500, /datum/material/glass = 250)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/active = FALSE
var/atom/movable/target //The thing we're searching for
@@ -26,6 +26,7 @@
/obj/item/pinpointer/Destroy()
STOP_PROCESSING(SSfastprocess, src)
GLOB.pinpointer_list -= src
target = null
return ..()
/obj/item/pinpointer/attack_self(mob/living/user)
@@ -57,7 +58,7 @@
return
var/turf/here = get_turf(src)
var/turf/there = get_turf(target)
if(here.z != there.z)
if(!here || !there || here.z != there.z)
add_overlay("pinon[alert ? "alert" : ""]null")
return
if(get_dist_euclidian(here,there) <= minimum_range)
@@ -143,3 +144,34 @@
target = null
if(!target) //target can be set to null from above code, or elsewhere
active = FALSE
/obj/item/pinpointer/pair
name = "pair pinpointer"
desc = "A handheld tracking device that locks onto its other half of the matching pair."
var/other_pair
/obj/item/pinpointer/pair/Destroy()
other_pair = null
. = ..()
/obj/item/pinpointer/pair/scan_for_target()
target = other_pair
/obj/item/pinpointer/pair/examine(mob/user)
. = ..()
if(!active || !target)
return
var/mob/mob_holder = get(target, /mob)
if(istype(mob_holder))
to_chat(user, "Its pair is being held by [mob_holder].")
return
/obj/item/storage/box/pinpointer_pairs
name = "pinpointer pair box"
/obj/item/storage/box/pinpointer_pairs/PopulateContents()
var/obj/item/pinpointer/pair/A = new(src)
var/obj/item/pinpointer/pair/B = new(src)
A.other_pair = B
B.other_pair = A
+2 -2
View File
@@ -44,9 +44,9 @@
if(H.stat == DEAD || H == user)
continue
if(H.mind && (has_job_loyalties || has_role_loyalties))
if(has_job_loyalties && H.mind.assigned_role in job_loyalties)
if(has_job_loyalties && (H.mind.assigned_role in job_loyalties))
inspired += H
else if(has_role_loyalties && H.mind.special_role in role_loyalties)
else if(has_role_loyalties && (H.mind.special_role in role_loyalties))
inspired += H
else if(check_inspiration(H))
inspired += H
+15 -24
View File
@@ -203,7 +203,7 @@
var/obj/item/gun/energy/kinetic_accelerator/cyborg/KA = new (R.module)
R.module.basic_modules += KA
R.module.add_module(KA, FALSE, TRUE)
/obj/item/borg/upgrade/advcutter
name = "mining cyborg advanced plasma cutter"
@@ -335,7 +335,6 @@
var/msg_cooldown = 0
var/on = FALSE
var/powercost = 10
var/mob/living/silicon/robot/cyborg
var/datum/action/toggle_action
/obj/item/borg/upgrade/selfrepair/action(mob/living/silicon/robot/R, user = usr)
@@ -346,7 +345,6 @@
to_chat(user, "<span class='warning'>This unit is already equipped with a self-repair module.</span>")
return FALSE
cyborg = R
icon_state = "selfrepair_off"
toggle_action = new /datum/action/item_action/toggle(src)
toggle_action.Grant(R)
@@ -354,34 +352,20 @@
/obj/item/borg/upgrade/selfrepair/deactivate(mob/living/silicon/robot/R, user = usr)
. = ..()
if (.)
toggle_action.Remove(cyborg)
toggle_action.Remove(R)
QDEL_NULL(toggle_action)
cyborg = null
deactivate_sr()
/obj/item/borg/upgrade/selfrepair/dropped()
. = ..()
addtimer(CALLBACK(src, .proc/check_dropped), 1)
/obj/item/borg/upgrade/selfrepair/proc/check_dropped()
if(loc != cyborg)
toggle_action.Remove(cyborg)
QDEL_NULL(toggle_action)
cyborg = null
deactivate_sr()
/obj/item/borg/upgrade/selfrepair/ui_action_click()
on = !on
if(on)
to_chat(cyborg, "<span class='notice'>You activate the self-repair module.</span>")
START_PROCESSING(SSobj, src)
to_chat(toggle_action.owner, "<span class='notice'>You deactivate the self-repair module.</span>")
deactivate_sr()
else
to_chat(cyborg, "<span class='notice'>You deactivate the self-repair module.</span>")
STOP_PROCESSING(SSobj, src)
update_icon()
to_chat(toggle_action.owner, "<span class='notice'>You activate the self-repair module.</span>")
activate_sr()
/obj/item/borg/upgrade/selfrepair/update_icon()
if(cyborg)
if(toggle_action)
icon_state = "selfrepair_[on ? "on" : "off"]"
for(var/X in actions)
var/datum/action/A = X
@@ -389,6 +373,11 @@
else
icon_state = "cyborg_upgrade5"
/obj/item/borg/upgrade/selfrepair/proc/activate_sr()
START_PROCESSING(SSobj, src)
on = TRUE
update_icon()
/obj/item/borg/upgrade/selfrepair/proc/deactivate_sr()
STOP_PROCESSING(SSobj, src)
on = FALSE
@@ -399,7 +388,9 @@
repair_tick = 1
return
if(cyborg && (cyborg.stat != DEAD) && on)
var/mob/living/silicon/robot/cyborg = toggle_action.owner
if(istype(cyborg) && (cyborg.stat != DEAD) && on)
if(!cyborg.cell)
to_chat(cyborg, "<span class='warning'>Self-repair module deactivated. Please, insert the power cell.</span>")
deactivate_sr()
+3 -3
View File
@@ -20,7 +20,7 @@
throw_speed = 2
throw_range = 3
w_class = WEIGHT_CLASS_BULKY
materials = list(MAT_GLASS=7500, MAT_METAL=1000)
custom_materials = list(/datum/material/glass=7500, /datum/material/iron=1000)
attack_verb = list("shoved", "bashed")
var/cooldown = 0 //shield bash cooldown. based on world.time
transparent = TRUE
@@ -106,7 +106,7 @@
item_state = "buckler"
lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
materials = list()
custom_materials = null
resistance_flags = FLAMMABLE
block_chance = 30
transparent = FALSE
@@ -217,7 +217,7 @@
icon = 'icons/obj/items_and_weapons.dmi'
item_state = "metal"
icon_state = "makeshift_shield"
materials = list(MAT_METAL = 18000)
custom_materials = list(/datum/material/iron = 18000)
slot_flags = null
block_chance = 35
force = 10
+3 -3
View File
@@ -6,7 +6,7 @@
icon_state = "bluespace_crystal"
singular_name = "bluespace crystal"
w_class = WEIGHT_CLASS_TINY
materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/bluespace=MINERAL_MATERIAL_AMOUNT)
points = 50
var/blink_range = 8 // The teleport range when crushed/thrown at someone.
refined_type = /obj/item/stack/sheet/bluespace_crystal
@@ -49,7 +49,7 @@
/obj/item/stack/ore/bluespace_crystal/artificial
name = "artificial bluespace crystal"
desc = "An artificially made bluespace crystal, it looks delicate."
materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT*0.5)
custom_materials = list(/datum/material/bluespace=MINERAL_MATERIAL_AMOUNT*0.5)
blink_range = 4 // Not as good as the organic stuff!
points = 0 //nice try
refined_type = null
@@ -63,7 +63,7 @@
item_state = "sheet-polycrystal"
singular_name = "bluespace polycrystal"
desc = "A stable polycrystal, made of fused-together bluespace crystals. You could probably break one off."
materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/bluespace=MINERAL_MATERIAL_AMOUNT)
attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed")
novariants = TRUE
grind_results = list(/datum/reagent/bluespace = 20)
+1 -1
View File
@@ -126,7 +126,7 @@
heal_brute = 0
/obj/item/stack/medical/gauze/cyborg
materials = list()
custom_materials = null
is_cyborg = 1
cost = 250
+8 -5
View File
@@ -16,7 +16,8 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \
throwforce = 10
throw_speed = 3
throw_range = 7
materials = list(MAT_METAL=1000)
custom_materials = list(/datum/material/iron=1000)
mats_per_stack = 1000
max_amount = 50
attack_verb = list("hit", "bludgeoned", "whacked")
hitsound = 'sound/weapons/grenadelaunch.ogg'
@@ -25,13 +26,15 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \
/obj/item/stack/rods/suicide_act(mob/living/carbon/user)
user.visible_message("<span class='suicide'>[user] begins to stuff \the [src] down [user.p_their()] throat! It looks like [user.p_theyre()] trying to commit suicide!</span>")//it looks like theyre ur mum
return BRUTELOSS
/obj/item/stack/rods/Initialize(mapload, new_amount, merge = TRUE)
. = ..()
recipes = GLOB.rod_recipes
update_icon()
/obj/item/stack/rods/get_main_recipes()
. = ..()
. += GLOB.rod_recipes
/obj/item/stack/rods/update_icon()
var/amount = get_amount()
if((amount <= 5) && (amount > 0))
@@ -70,7 +73,7 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \
return ..()
/obj/item/stack/rods/cyborg
materials = list()
custom_materials = null
is_cyborg = 1
cost = 250
+37 -30
View File
@@ -31,11 +31,12 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
singular_name = "glass sheet"
icon_state = "sheet-glass"
item_state = "sheet-glass"
materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/glass=MINERAL_MATERIAL_AMOUNT)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 100)
resistance_flags = ACID_PROOF
merge_type = /obj/item/stack/sheet/glass
grind_results = list(/datum/reagent/silicon = 20)
material_type = /datum/material/glass
point_value = 1
tableVariant = /obj/structure/table/glass
shard_type = /obj/item/shard
@@ -45,7 +46,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
return BRUTELOSS
/obj/item/stack/sheet/glass/cyborg
materials = list()
custom_materials = null
is_cyborg = 1
cost = 500
@@ -55,9 +56,9 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
/obj/item/stack/sheet/glass/five
amount = 5
/obj/item/stack/sheet/glass/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.glass_recipes
return ..()
/obj/item/stack/sheet/glass/get_main_recipes()
. = ..()
. += GLOB.glass_recipes
/obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user, params)
add_fingerprint(user)
@@ -100,20 +101,21 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \
singular_name = "plasma glass sheet"
icon_state = "sheet-pglass"
item_state = "sheet-pglass"
materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 100)
resistance_flags = ACID_PROOF
merge_type = /obj/item/stack/sheet/plasmaglass
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10)
tableVariant = /obj/structure/table/plasmaglass
material_flags = MATERIAL_NO_EFFECTS
shard_type = /obj/item/shard/plasma
/obj/item/stack/sheet/plasmaglass/fifty
amount = 50
/obj/item/stack/sheet/plasmaglass/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.pglass_recipes
return ..()
/obj/item/stack/sheet/plasmaglass/get_main_recipes()
. = ..()
. += GLOB.pglass_recipes
/obj/item/stack/sheet/plasmaglass/attackby(obj/item/W, mob/user, params)
add_fingerprint(user)
@@ -155,7 +157,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
singular_name = "reinforced glass sheet"
icon_state = "sheet-rglass"
item_state = "sheet-rglass"
materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 100)
resistance_flags = ACID_PROOF
merge_type = /obj/item/stack/sheet/rglass
@@ -171,7 +173,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
S.obj_integrity *= 2
/obj/item/stack/sheet/rglass/cyborg
materials = list()
custom_materials = null
var/datum/robot_energy_storage/glasource
var/metcost = 250
var/glacost = 500
@@ -187,9 +189,9 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
source.add_charge(amount * metcost)
glasource.add_charge(amount * glacost)
/obj/item/stack/sheet/rglass/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.reinforced_glass_recipes
return ..()
/obj/item/stack/sheet/rglass/get_main_recipes()
. = ..()
. += GLOB.reinforced_glass_recipes
GLOBAL_LIST_INIT(prglass_recipes, list ( \
new/datum/stack_recipe("directional reinforced window", /obj/structure/window/plasma/reinforced/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \
@@ -202,22 +204,23 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \
singular_name = "reinforced plasma glass sheet"
icon_state = "sheet-prglass"
item_state = "sheet-prglass"
materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT, MAT_METAL=MINERAL_MATERIAL_AMOUNT * 0.5,)
custom_materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT, /datum/material/iron=MINERAL_MATERIAL_AMOUNT * 0.5,)
armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
resistance_flags = ACID_PROOF
material_flags = MATERIAL_NO_EFFECTS
merge_type = /obj/item/stack/sheet/plasmarglass
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10, /datum/reagent/iron = 10)
point_value = 23
shard_type = /obj/item/shard/plasma
/obj/item/stack/sheet/plasmarglass/get_main_recipes()
. = ..()
. += GLOB.prglass_recipes
/obj/item/stack/sheet/plasmarglass/on_solar_construction(obj/machinery/power/solar/S)
S.obj_integrity *= 2.2
S.efficiency *= 1.2
/obj/item/stack/sheet/plasmarglass/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.prglass_recipes
return ..()
GLOBAL_LIST_INIT(titaniumglass_recipes, list(
new/datum/stack_recipe("shuttle window", /obj/structure/window/shuttle/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE)
))
@@ -228,20 +231,20 @@ GLOBAL_LIST_INIT(titaniumglass_recipes, list(
singular_name = "titanium glass sheet"
icon_state = "sheet-titaniumglass"
item_state = "sheet-titaniumglass"
materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
resistance_flags = ACID_PROOF
merge_type = /obj/item/stack/sheet/titaniumglass
shard_type = /obj/item/shard
/obj/item/stack/sheet/titaniumglass/get_main_recipes()
. = ..()
. += GLOB.titaniumglass_recipes
/obj/item/stack/sheet/titaniumglass/on_solar_construction(obj/machinery/power/solar/S)
S.obj_integrity *= 2.5
S.efficiency *= 1.5
/obj/item/stack/sheet/titaniumglass/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.titaniumglass_recipes
return ..()
GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
new/datum/stack_recipe("plastitanium window", /obj/structure/window/plastitanium/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE)
))
@@ -252,15 +255,19 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
singular_name = "plastitanium glass sheet"
icon_state = "sheet-plastitaniumglass"
item_state = "sheet-plastitaniumglass"
materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
material_flags = MATERIAL_NO_EFFECTS
resistance_flags = ACID_PROOF
merge_type = /obj/item/stack/sheet/plastitaniumglass
shard_type = /obj/item/shard
/obj/item/stack/sheet/plastitaniumglass/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.plastitaniumglass_recipes
return ..()
/obj/item/stack/sheet/plastitaniumglass/fifty
amount = 50
/obj/item/stack/sheet/plastitaniumglass/get_main_recipes()
. = ..()
. += GLOB.plastitaniumglass_recipes
/obj/item/stack/sheet/titaniumglass/on_solar_construction(obj/machinery/power/solar/S)
S.obj_integrity *= 2
@@ -277,7 +284,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
item_state = "shard-glass"
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/glass=MINERAL_MATERIAL_AMOUNT)
attack_verb = list("stabbed", "slashed", "sliced", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
resistance_flags = ACID_PROOF
@@ -376,7 +383,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
force = 6
throwforce = 11
icon_state = "plasmalarge"
materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT)
icon_prefix = "plasma"
/obj/item/shard/plasma/alien
@@ -15,9 +15,9 @@ GLOBAL_LIST_INIT(human_recipes, list( \
new/datum/stack_recipe("bloated human costume", /obj/item/clothing/suit/hooded/bloated_human, 5), \
))
/obj/item/stack/sheet/animalhide/human/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.human_recipes
return ..()
/obj/item/stack/sheet/animalhide/human/get_main_recipes()
. = ..()
. += GLOB.human_recipes
/obj/item/stack/sheet/animalhide/generic
name = "skin"
@@ -46,17 +46,17 @@ GLOBAL_LIST_INIT(gondola_recipes, list ( \
icon_state = "sheet-gondola"
item_state = "sheet-gondola"
/obj/item/stack/sheet/animalhide/gondola/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.gondola_recipes
return ..()
/obj/item/stack/sheet/animalhide/gondola/get_main_recipes()
. = ..()
. += GLOB.gondola_recipes
GLOBAL_LIST_INIT(corgi_recipes, list ( \
new/datum/stack_recipe("corgi costume", /obj/item/clothing/suit/hooded/ian_costume, 3), \
))
/obj/item/stack/sheet/animalhide/corgi/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.corgi_recipes
return ..()
/obj/item/stack/sheet/animalhide/corgi/get_main_recipes()
. = ..()
. += GLOB.corgi_recipes
/obj/item/stack/sheet/animalhide/cat
name = "cat hide"
@@ -77,9 +77,9 @@ GLOBAL_LIST_INIT(monkey_recipes, list ( \
new/datum/stack_recipe("monkey suit", /obj/item/clothing/suit/monkeysuit, 2), \
))
/obj/item/stack/sheet/animalhide/monkey/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.monkey_recipes
return ..()
/obj/item/stack/sheet/animalhide/monkey/get_main_recipes()
. = ..()
. += GLOB.monkey_recipes
/obj/item/stack/sheet/animalhide/lizard
name = "lizard skin"
@@ -100,9 +100,9 @@ GLOBAL_LIST_INIT(xeno_recipes, list ( \
new/datum/stack_recipe("alien suit", /obj/item/clothing/suit/xenos, 2), \
))
/obj/item/stack/sheet/animalhide/xeno/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.xeno_recipes
return ..()
/obj/item/stack/sheet/animalhide/xeno/get_main_recipes()
. = ..()
. += GLOB.xeno_recipes
//don't see anywhere else to put these, maybe together they could be used to make the xenos suit?
/obj/item/stack/sheet/xenochitin
@@ -163,9 +163,9 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \
new/datum/stack_recipe("leather overcoat", /obj/item/clothing/suit/jacket/leather/overcoat, 10), \
))
/obj/item/stack/sheet/leather/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.leather_recipes
return ..()
/obj/item/stack/sheet/leather/get_main_recipes()
. = ..()
. += GLOB.leather_recipes
/*
* Sinew
@@ -183,9 +183,9 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \
new/datum/stack_recipe("sinew restraints", /obj/item/restraints/handcuffs/sinew, 1), \
))
/obj/item/stack/sheet/sinew/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.sinew_recipes
return ..()
/obj/item/stack/sheet/sinew/get_main_recipes()
. = ..()
. += GLOB.sinew_recipes
/*
* Plates
@@ -19,11 +19,6 @@ Mineral Sheets
- Coal
*/
/obj/item/stack/sheet/mineral/Initialize(mapload)
pixel_x = rand(-4, 4)
pixel_y = rand(-4, 4)
. = ..()
/*
* Sandstone
*/
@@ -44,13 +39,13 @@ GLOBAL_LIST_INIT(sandstone_recipes, list ( \
item_state = "sheet-sandstone"
throw_speed = 3
throw_range = 5
materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/glass=MINERAL_MATERIAL_AMOUNT)
sheettype = "sandstone"
merge_type = /obj/item/stack/sheet/mineral/sandstone
/obj/item/stack/sheet/mineral/sandstone/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.sandstone_recipes
/obj/item/stack/sheet/mineral/sandstone/get_main_recipes()
. = ..()
. += GLOB.sandstone_recipes
/obj/item/stack/sheet/mineral/sandstone/thirty
amount = 30
@@ -74,9 +69,9 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \
new/datum/stack_recipe("sandbags", /obj/structure/barricade/sandbags, 1, time = 25, one_per_turf = 1, on_floor = 1), \
))
/obj/item/stack/sheet/mineral/sandbags/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.sandbag_recipes
/obj/item/stack/sheet/mineral/sandbags/get_main_recipes()
. = ..()
. += GLOB.sandbag_recipes
/obj/item/emptysandbag
name = "empty sandbag"
@@ -106,11 +101,12 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \
item_state = "sheet-diamond"
singular_name = "diamond"
sheettype = "diamond"
materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/diamond=MINERAL_MATERIAL_AMOUNT)
novariants = TRUE
grind_results = list(/datum/reagent/carbon = 20)
point_value = 25
merge_type = /obj/item/stack/sheet/mineral/diamond
material_type = /datum/material/diamond
GLOBAL_LIST_INIT(diamond_recipes, list ( \
new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, one_per_turf = 1, on_floor = 1), \
@@ -120,9 +116,9 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \
new/datum/stack_recipe("AI Core Statue", /obj/structure/statue/diamond/ai2, 5, one_per_turf = 1, on_floor = 1), \
))
/obj/item/stack/sheet/mineral/diamond/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.diamond_recipes
/obj/item/stack/sheet/mineral/diamond/get_main_recipes()
. = ..()
. += GLOB.diamond_recipes
/*
* Uranium
@@ -133,11 +129,12 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \
item_state = "sheet-uranium"
singular_name = "uranium sheet"
sheettype = "uranium"
materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/uranium=MINERAL_MATERIAL_AMOUNT)
novariants = TRUE
grind_results = list(/datum/reagent/uranium = 20)
point_value = 20
merge_type = /obj/item/stack/sheet/mineral/uranium
material_type = /datum/material/uranium
GLOBAL_LIST_INIT(uranium_recipes, list ( \
new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_floor = 1), \
@@ -146,9 +143,9 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \
new/datum/stack_recipe("Engineer Statue", /obj/structure/statue/uranium/eng, 5, one_per_turf = 1, on_floor = 1), \
))
/obj/item/stack/sheet/mineral/uranium/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.uranium_recipes
/obj/item/stack/sheet/mineral/uranium/get_main_recipes()
. = ..()
. += GLOB.uranium_recipes
/*
* Plasma
@@ -161,10 +158,11 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \
sheettype = "plasma"
resistance_flags = FLAMMABLE
max_integrity = 100
materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT)
grind_results = list(/datum/reagent/toxin/plasma = 20)
point_value = 20
merge_type = /obj/item/stack/sheet/mineral/plasma
material_type = /datum/material/plasma
/obj/item/stack/sheet/mineral/plasma/suicide_act(mob/living/carbon/user)
user.visible_message("<span class='suicide'>[user] begins licking \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
@@ -176,9 +174,9 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \
new/datum/stack_recipe("Scientist Statue", /obj/structure/statue/plasma/scientist, 5, one_per_turf = 1, on_floor = 1), \
))
/obj/item/stack/sheet/mineral/plasma/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.plasma_recipes
/obj/item/stack/sheet/mineral/plasma/get_main_recipes()
. = ..()
. += GLOB.plasma_recipes
/obj/item/stack/sheet/mineral/plasma/attackby(obj/item/W as obj, mob/user as mob, params)
if(W.get_temperature() > 300)//If the temperature of the object is over 300, then ignite
@@ -202,10 +200,11 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \
item_state = "sheet-gold"
singular_name = "gold bar"
sheettype = "gold"
materials = list(MAT_GOLD=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/gold=MINERAL_MATERIAL_AMOUNT)
grind_results = list(/datum/reagent/gold = 20)
point_value = 20
merge_type = /obj/item/stack/sheet/mineral/gold
material_type = /datum/material/gold
GLOBAL_LIST_INIT(gold_recipes, list ( \
new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_floor = 1), \
@@ -218,9 +217,9 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \
new/datum/stack_recipe("CMO Statue", /obj/structure/statue/gold/cmo, 5, one_per_turf = 1, on_floor = 1), \
))
/obj/item/stack/sheet/mineral/gold/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.gold_recipes
/obj/item/stack/sheet/mineral/gold/get_main_recipes()
. = ..()
. += GLOB.gold_recipes
/*
* Silver
@@ -231,10 +230,11 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \
item_state = "sheet-silver"
singular_name = "silver bar"
sheettype = "silver"
materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/silver=MINERAL_MATERIAL_AMOUNT)
grind_results = list(/datum/reagent/silver = 20)
point_value = 20
merge_type = /obj/item/stack/sheet/mineral/silver
material_type = /datum/material/silver
tableVariant = /obj/structure/table/optable
GLOBAL_LIST_INIT(silver_recipes, list ( \
@@ -247,9 +247,9 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \
new/datum/stack_recipe("Med Borg Statue", /obj/structure/statue/silver/medborg, 5, one_per_turf = 1, on_floor = 1), \
))
/obj/item/stack/sheet/mineral/silver/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.silver_recipes
/obj/item/stack/sheet/mineral/silver/get_main_recipes()
. = ..()
. += GLOB.silver_recipes
/*
* Clown
@@ -260,20 +260,21 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \
item_state = "sheet-bananium"
singular_name = "bananium sheet"
sheettype = "bananium"
materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/bananium=MINERAL_MATERIAL_AMOUNT)
novariants = TRUE
grind_results = list(/datum/reagent/consumable/banana = 20)
point_value = 50
merge_type = /obj/item/stack/sheet/mineral/bananium
material_type = /datum/material/bananium
GLOBAL_LIST_INIT(bananium_recipes, list ( \
new/datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20), \
new/datum/stack_recipe("Clown Statue", /obj/structure/statue/bananium/clown, 5, one_per_turf = 1, on_floor = 1), \
))
/obj/item/stack/sheet/mineral/bananium/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.bananium_recipes
/obj/item/stack/sheet/mineral/bananium/get_main_recipes()
. = ..()
. += GLOB.bananium_recipes
/*
* Titanium
@@ -289,17 +290,18 @@ GLOBAL_LIST_INIT(bananium_recipes, list ( \
throw_speed = 1
throw_range = 3
sheettype = "titanium"
materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT)
point_value = 20
merge_type = /obj/item/stack/sheet/mineral/titanium
material_type = /datum/material/titanium
GLOBAL_LIST_INIT(titanium_recipes, list ( \
new/datum/stack_recipe("titanium tile", /obj/item/stack/tile/mineral/titanium, 1, 4, 20), \
))
/obj/item/stack/sheet/mineral/titanium/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.titanium_recipes
/obj/item/stack/sheet/mineral/titanium/get_main_recipes()
. = ..()
. += GLOB.titanium_recipes
/obj/item/stack/sheet/mineral/titanium/fifty
amount = 50
@@ -319,17 +321,21 @@ GLOBAL_LIST_INIT(titanium_recipes, list ( \
throw_speed = 1
throw_range = 3
sheettype = "plastitanium"
materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT, MAT_PLASMA=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT, /datum/material/plasma=MINERAL_MATERIAL_AMOUNT)
point_value = 45
merge_type = /obj/item/stack/sheet/mineral/plastitanium
material_flags = MATERIAL_NO_EFFECTS
/obj/item/stack/sheet/mineral/plastitanium/fifty
amount = 50
GLOBAL_LIST_INIT(plastitanium_recipes, list ( \
new/datum/stack_recipe("plastitanium tile", /obj/item/stack/tile/mineral/plastitanium, 1, 4, 20), \
))
/obj/item/stack/sheet/mineral/plastitanium/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.plastitanium_recipes
/obj/item/stack/sheet/mineral/plastitanium/get_main_recipes()
. = ..()
. += GLOB.plastitanium_recipes
/****************************** Others ****************************/
@@ -345,11 +351,26 @@ GLOBAL_LIST_INIT(adamantine_recipes, list(
icon_state = "sheet-adamantine"
item_state = "sheet-adamantine"
singular_name = "adamantine sheet"
custom_materials = list(/datum/material/adamantine=MINERAL_MATERIAL_AMOUNT)
merge_type = /obj/item/stack/sheet/mineral/adamantine
/obj/item/stack/sheet/mineral/adamantine/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.adamantine_recipes
/obj/item/stack/sheet/mineral/adamantine/get_main_recipes()
. = ..()
. += GLOB.adamantine_recipes
/*
* Runite
*/
/obj/item/stack/sheet/mineral/runite
name = "Runite"
desc = "Rare material found in distant lands."
singular_name = "runite bar"
icon_state = "sheet-runite"
item_state = "sheet-runite"
custom_materials = list(/datum/material/runite=MINERAL_MATERIAL_AMOUNT)
merge_type = /obj/item/stack/sheet/mineral/runite
material_type = /datum/material/runite
/*
* Mythril
@@ -360,6 +381,7 @@ GLOBAL_LIST_INIT(adamantine_recipes, list(
item_state = "sheet-mythril"
singular_name = "mythril sheet"
novariants = TRUE
custom_materials = list(/datum/material/mythril=MINERAL_MATERIAL_AMOUNT)
merge_type = /obj/item/stack/sheet/mineral/mythril
/*
@@ -381,9 +403,9 @@ GLOBAL_LIST_INIT(snow_recipes, list ( \
new/datum/stack_recipe("Snowball", /obj/item/toy/snowball, 1), \
))
/obj/item/stack/sheet/mineral/snow/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.snow_recipes
/obj/item/stack/sheet/mineral/snow/get_main_recipes()
. = ..()
. += GLOB.snow_recipes
/*
* Alien Alloy
@@ -408,9 +430,9 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \
new/datum/stack_recipe("alien floor tile", /obj/item/stack/tile/mineral/abductor, 1, 4, 20), \
))
/obj/item/stack/sheet/mineral/abductor/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.abductor_recipes
/obj/item/stack/sheet/mineral/abductor/get_main_recipes()
. = ..()
. += GLOB.abductor_recipes
/*
* Coal
@@ -24,7 +24,6 @@
GLOBAL_LIST_INIT(metal_recipes, list ( \
new/datum/stack_recipe("stool", /obj/structure/chair/stool, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("bar stool", /obj/structure/chair/stool/bar, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("chair", /obj/structure/chair, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \
//CIT CHANGE - adds sofas to metal recipe list
new/datum/stack_recipe_list("sofas", list( \
@@ -107,14 +106,14 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
singular_name = "metal sheet"
icon_state = "sheet-metal"
item_state = "sheet-metal"
materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT)
throwforce = 10
flags_1 = CONDUCT_1
resistance_flags = FIRE_PROOF
merge_type = /obj/item/stack/sheet/metal
grind_results = list(/datum/reagent/iron = 20)
point_value = 2
tableVariant = /obj/structure/table
material_type = /datum/material/iron
/obj/item/stack/sheet/metal/ratvar_act()
new /obj/item/stack/tile/brass(loc, amount)
@@ -137,13 +136,13 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
amount = 5
/obj/item/stack/sheet/metal/cyborg
materials = list()
custom_materials = null
is_cyborg = 1
cost = 500
/obj/item/stack/sheet/metal/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.metal_recipes
return ..()
/obj/item/stack/sheet/metal/get_main_recipes()
. = ..()
. += GLOB.metal_recipes
/obj/item/stack/sheet/metal/suicide_act(mob/living/carbon/user)
user.visible_message("<span class='suicide'>[user] begins whacking [user.p_them()]self over the head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
@@ -169,7 +168,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \
desc = "This sheet is an alloy of iron and plasma."
icon_state = "sheet-plasteel"
item_state = "sheet-metal"
materials = list(MAT_METAL=2000, MAT_PLASMA=2000)
custom_materials = list(/datum/material/iron=2000, /datum/material/plasma=2000)
throwforce = 10
flags_1 = CONDUCT_1
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 80)
@@ -178,10 +177,11 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \
grind_results = list(/datum/reagent/iron = 20, /datum/reagent/toxin/plasma = 20)
point_value = 23
tableVariant = /obj/structure/table/reinforced
material_flags = MATERIAL_NO_EFFECTS
/obj/item/stack/sheet/plasteel/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.plasteel_recipes
return ..()
/obj/item/stack/sheet/plasteel/get_main_recipes()
. = ..()
. += GLOB.plasteel_recipes
/obj/item/stack/sheet/plasteel/twenty
amount = 20
@@ -275,9 +275,9 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
else
. = ..()
/obj/item/stack/sheet/mineral/wood/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.wood_recipes
return ..()
/obj/item/stack/sheet/mineral/wood/get_main_recipes()
. = ..()
. += GLOB.wood_recipes
/obj/item/stack/sheet/mineral/wood/twenty
amount = 20
@@ -307,9 +307,9 @@ GLOBAL_LIST_INIT(bamboo_recipes, list ( \
merge_type = /obj/item/stack/sheet/mineral/bamboo
grind_results = list(/datum/reagent/carbon = 5)
/obj/item/stack/sheet/mineral/bamboo/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.bamboo_recipes
return ..()
/obj/item/stack/sheet/mineral/bamboo/get_main_recipes()
. = ..()
. += GLOB.bamboo_recipes
/obj/item/stack/sheet/mineral/bamboo/ten
amount = 10
@@ -363,9 +363,9 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
loom_result = /obj/item/stack/sheet/silk
merge_type = /obj/item/stack/sheet/cloth
/obj/item/stack/sheet/cloth/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.cloth_recipes
return ..()
/obj/item/stack/sheet/cloth/get_main_recipes()
. = ..()
. += GLOB.cloth_recipes
/obj/item/stack/sheet/cloth/ten
amount = 10
@@ -376,6 +376,14 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
/*
* Silk
*/
GLOBAL_LIST_INIT(silk_recipes, list ( \
new/datum/stack_recipe("white jumpsuit", /obj/item/clothing/under/color/white, 4, time = 40), \
new/datum/stack_recipe("white gloves", /obj/item/clothing/gloves/color/white, 2, time = 40), \
null, \
new/datum/stack_recipe("silk string", /obj/item/weaponcrafting/silkstring, 2, time = 40), \
))
/obj/item/stack/sheet/silk
name = "silk"
desc = "A long soft material. This one is just made out of cotton rather then any spiders or wyrms"
@@ -385,14 +393,14 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
novariants = TRUE
merge_type = /obj/item/stack/sheet/silk
//obj/item/stack/sheet/silk/Initialize(mapload, new_amount, merge = TRUE)
// recipes = GLOB.silk_recipes
// return ..()
/obj/item/stack/sheet/silk/get_main_recipes()
. = ..()
. += GLOB.silk_recipes
/*
* Durathread
*/
GLOBAL_LIST_INIT(durathread_recipes, list ( \
GLOBAL_LIST_INIT(durathread_recipes, list ( \
new/datum/stack_recipe("durathread jumpsuit", /obj/item/clothing/under/durathread, 4, time = 40),
new/datum/stack_recipe("durathread beret", /obj/item/clothing/head/beret/durathread, 2, time = 40), \
new/datum/stack_recipe("durathread beanie", /obj/item/clothing/head/beanie/durathread, 2, time = 40), \
@@ -410,9 +418,9 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
throwforce = 0
merge_type = /obj/item/stack/sheet/durathread
/obj/item/stack/sheet/durathread/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.durathread_recipes
return ..()
/obj/item/stack/sheet/durathread/get_main_recipes()
. = ..()
. += GLOB.durathread_recipes
/*
* Cardboard
@@ -489,9 +497,9 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \
merge_type = /obj/item/stack/sheet/cardboard
novariants = TRUE
/obj/item/stack/sheet/cardboard/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.cardboard_recipes
return ..()
/obj/item/stack/sheet/cardboard/get_main_recipes()
. = ..()
. += GLOB.cardboard_recipes
/obj/item/stack/sheet/cardboard/fifty
amount = 50
@@ -547,9 +555,9 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \
return FALSE
return ..()
/obj/item/stack/sheet/runed_metal/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.runed_metal_recipes
return ..()
/obj/item/stack/sheet/runed_metal/get_main_recipes()
. = ..()
. += GLOB.runed_metal_recipes
/obj/item/stack/sheet/runed_metal/fifty
amount = 50
@@ -619,11 +627,9 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \
return
..()
/obj/item/stack/tile/brass/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.brass_recipes
/obj/item/stack/tile/brass/get_main_recipes()
. = ..()
pixel_x = 0
pixel_y = 0
. += GLOB.brass_recipes
/obj/item/stack/tile/brass/fifty
amount = 50
@@ -667,11 +673,9 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
to_chat(user, "<span class='danger'>Wha... what is this cheap imitation crap? This isn't brass at all!</span>")
..()
/obj/item/stack/tile/bronze/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.bronze_recipes
/obj/item/stack/tile/bronze/get_main_recipes()
. = ..()
pixel_x = 0
pixel_y = 0
. += GLOB.bronze_recipes
/obj/item/stack/tile/bronze/thirty
amount = 30
@@ -705,10 +709,6 @@ GLOBAL_LIST_INIT(bone_recipes, list(
new /datum/stack_recipe("Skull Helmet", /obj/item/clothing/head/helmet/skull, 4, time = 30), \
new /datum/stack_recipe("Bone Armor", /obj/item/clothing/suit/armor/bone, 6, time = 30)))
/obj/item/stack/sheet/bone/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.bone_recipes
. = ..()
/obj/item/stack/sheet/bone
name = "bones"
icon = 'icons/obj/mining.dmi'
@@ -725,6 +725,10 @@ GLOBAL_LIST_INIT(bone_recipes, list(
grind_results = list(/datum/reagent/carbon = 10)
merge_type = /obj/item/stack/sheet/bone
/obj/item/stack/sheet/bone/get_main_recipes()
. = ..()
. += GLOB.bone_recipes
/*
* Plastic
*/
@@ -742,7 +746,7 @@ GLOBAL_LIST_INIT(plastic_recipes, list(
singular_name = "plastic sheet"
icon_state = "sheet-plastic"
item_state = "sheet-plastic"
materials = list(MAT_PLASTIC=MINERAL_MATERIAL_AMOUNT)
custom_materials = list(/datum/material/plastic=MINERAL_MATERIAL_AMOUNT)
throwforce = 7
grind_results = list(/datum/reagent/glitter/white = 60)
merge_type = /obj/item/stack/sheet/plastic
@@ -753,9 +757,9 @@ GLOBAL_LIST_INIT(plastic_recipes, list(
/obj/item/stack/sheet/plastic/five
amount = 5
/obj/item/stack/sheet/plastic/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.plastic_recipes
/obj/item/stack/sheet/plastic/get_main_recipes()
. = ..()
. += GLOB.plastic_recipes
GLOBAL_LIST_INIT(paperframe_recipes, list(
new /datum/stack_recipe("paper frame separator", /obj/structure/window/paperframe, 2, one_per_turf = TRUE, on_floor = TRUE, time = 10), \
@@ -771,9 +775,10 @@ new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperfra
resistance_flags = FLAMMABLE
merge_type = /obj/item/stack/sheet/paperframes
/obj/item/stack/sheet/paperframes/Initialize()
recipes = GLOB.paperframe_recipes
/obj/item/stack/sheet/paperframes/get_main_recipes()
. = ..()
. += GLOB.paperframe_recipes
/obj/item/stack/sheet/paperframes/five
amount = 5
/obj/item/stack/sheet/paperframes/twenty
@@ -10,7 +10,7 @@
throw_range = 3
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed")
novariants = FALSE
var/perunit = MINERAL_MATERIAL_AMOUNT
mats_per_stack = MINERAL_MATERIAL_AMOUNT
var/sheettype = null //this is used for girders in the creation of walls/false walls
var/point_value = 0 //turn-in value for the gulag stacker - loosely relative to its rarity
var/is_fabric = FALSE //is this a valid material for the loom?
@@ -18,6 +18,11 @@
var/pull_effort = 0 //amount of delay when pulling on the loom
var/shard_type // the shard debris typepath left over by solar panels and windows etc.
/obj/item/stack/sheet/Initialize(mapload, new_amount, merge)
. = ..()
pixel_x = rand(-4, 4)
pixel_y = rand(-4, 4)
/**
* Called on the glass sheet upon solar construction (duh):
* Different glass sheets can modify different stas/vars, such as obj_integrity or efficiency
+35 -2
View File
@@ -11,6 +11,7 @@
/obj/item/stack
icon = 'icons/obj/stack_objects.dmi'
gender = PLURAL
material_modifier = 0.01
var/list/datum/stack_recipe/recipes
var/singular_name
var/amount = 1
@@ -21,6 +22,9 @@
var/merge_type = null // This path and its children should merge with this stack, defaults to src.type
var/full_w_class = WEIGHT_CLASS_NORMAL //The weight class the stack should have at amount > 2/3rds max_amount
var/novariants = TRUE //Determines whether the item should update it's sprites based on amount.
var/mats_per_stack = 0
///Datum material type that this stack is made of
var/material_type
//NOTE: When adding grind_results, the amounts should be for an INDIVIDUAL ITEM - these amounts will be multiplied by the stack size in on_grind()
var/obj/structure/table/tableVariant // we tables now (stores table variant to be built from this stack)
@@ -35,7 +39,6 @@
return TRUE
/obj/item/stack/Initialize(mapload, new_amount, merge = TRUE)
. = ..()
if(new_amount != null)
amount = new_amount
while(amount > max_amount)
@@ -43,13 +46,29 @@
new type(loc, max_amount, FALSE)
if(!merge_type)
merge_type = type
if(custom_materials && custom_materials.len)
for(var/i in custom_materials)
custom_materials[getmaterialref(i)] = mats_per_stack * amount
. = ..()
if(merge)
for(var/obj/item/stack/S in loc)
if(S.merge_type == merge_type)
merge(S)
var/list/temp_recipes = get_main_recipes()
recipes = temp_recipes.Copy()
if(material_type)
var/datum/material/M = getmaterialref(material_type) //First/main material
for(var/i in M.categories)
switch(i)
if(MAT_CATEGORY_RIGID)
var/list/temp = SSmaterials.rigid_stack_recipes.Copy()
recipes += temp
update_weight()
update_icon()
/obj/item/stack/proc/get_main_recipes()
return list()//empty list
/obj/item/stack/proc/update_weight()
if(amount <= (max_amount * (1/3)))
w_class = CLAMP(full_w_class-2, WEIGHT_CLASS_TINY, full_w_class)
@@ -204,6 +223,12 @@
use(R.req_amount * multiplier)
log_craft("[O] crafted by [usr] at [loc_name(O.loc)]")
if(R.applies_mats && custom_materials && custom_materials.len)
var/list/used_materials = list()
for(var/i in custom_materials)
used_materials[getmaterialref(i)] = R.req_amount / R.res_amount * (MINERAL_MATERIAL_AMOUNT / custom_materials.len)
O.set_custom_materials(used_materials)
//START: oh fuck i'm so sorry
if(istype(O, /obj/structure/windoor_assembly))
var/obj/structure/windoor_assembly/W = O
@@ -288,6 +313,8 @@
amount -= used
if(check)
zero_amount()
for(var/i in custom_materials)
custom_materials[i] = amount * mats_per_stack
update_icon()
update_weight()
return TRUE
@@ -319,6 +346,10 @@
source.add_charge(amount * cost)
else
src.amount += amount
if(custom_materials && custom_materials.len)
for(var/i in custom_materials)
custom_materials[getmaterialref(i)] = MINERAL_MATERIAL_AMOUNT * src.amount
set_custom_materials() //Refresh
update_icon()
update_weight()
@@ -426,8 +457,9 @@
var/on_floor = FALSE
var/window_checks = FALSE
var/placement_checks = FALSE
var/applies_mats = FALSE
/datum/stack_recipe/New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1,time = 0, one_per_turf = FALSE, on_floor = FALSE, window_checks = FALSE, placement_checks = FALSE )
/datum/stack_recipe/New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1,time = 0, one_per_turf = FALSE, on_floor = FALSE, window_checks = FALSE, placement_checks = FALSE, applies_mats = FALSE)
src.title = title
@@ -440,6 +472,7 @@
src.on_floor = on_floor
src.window_checks = window_checks
src.placement_checks = placement_checks
src.applies_mats = applies_mats
/*
* Recipe list datum
*/
@@ -5,7 +5,7 @@
icon_state = "tile_plasma"
turf_type = /turf/open/floor/mineral/plasma
mineralType = "plasma"
materials = list(MAT_PLASMA=500)
custom_materials = list(/datum/material/plasma=500)
/obj/item/stack/tile/mineral/uranium
name = "uranium tile"
@@ -14,7 +14,7 @@
icon_state = "tile_uranium"
turf_type = /turf/open/floor/mineral/uranium
mineralType = "uranium"
materials = list(MAT_URANIUM=500)
custom_materials = list(/datum/material/uranium=500)
/obj/item/stack/tile/mineral/gold
name = "gold tile"
@@ -23,7 +23,7 @@
icon_state = "tile_gold"
turf_type = /turf/open/floor/mineral/gold
mineralType = "gold"
materials = list(MAT_GOLD=500)
custom_materials = list(/datum/material/gold=500)
/obj/item/stack/tile/mineral/silver
name = "silver tile"
@@ -32,7 +32,7 @@
icon_state = "tile_silver"
turf_type = /turf/open/floor/mineral/silver
mineralType = "silver"
materials = list(MAT_SILVER=500)
custom_materials = list(/datum/material/silver=500)
/obj/item/stack/tile/mineral/diamond
name = "diamond tile"
@@ -41,7 +41,7 @@
icon_state = "tile_diamond"
turf_type = /turf/open/floor/mineral/diamond
mineralType = "diamond"
materials = list(MAT_DIAMOND=500)
custom_materials = list(/datum/material/diamond=500)
/obj/item/stack/tile/mineral/bananium
name = "bananium tile"
@@ -50,7 +50,7 @@
icon_state = "tile_bananium"
turf_type = /turf/open/floor/mineral/bananium
mineralType = "bananium"
materials = list(MAT_BANANIUM=500)
custom_materials = list(/datum/material/bananium=500)
/obj/item/stack/tile/mineral/abductor
name = "alien floor tile"
@@ -68,7 +68,7 @@
icon_state = "tile_shuttle"
turf_type = /turf/open/floor/mineral/titanium
mineralType = "titanium"
materials = list(MAT_TITANIUM=500)
custom_materials = list(/datum/material/titanium=500)
/obj/item/stack/tile/mineral/plastitanium
name = "plastitanium tile"
@@ -77,4 +77,5 @@
icon_state = "tile_darkshuttle"
turf_type = /turf/open/floor/mineral/plastitanium
mineralType = "plastitanium"
materials = list(MAT_TITANIUM=250, MAT_PLASMA=250)
custom_materials = list(/datum/material/titanium=250, /datum/material/plasma=250)
material_flags = MATERIAL_NO_EFFECTS
@@ -9,6 +9,7 @@
throw_speed = 3
throw_range = 7
max_amount = 60
mats_per_stack = 500
var/turf_type = null
var/mineralType = null
novariants = TRUE
@@ -434,7 +435,7 @@
desc = "Those could work as a pretty decent throwing weapon."
icon_state = "tile"
force = 6
materials = list(MAT_METAL=500)
custom_materials = list(/datum/material/iron=500)
throwforce = 10
flags_1 = CONDUCT_1
turf_type = /turf/open/floor/plasteel
@@ -444,6 +445,6 @@
/obj/item/stack/tile/plasteel/cyborg
desc = "The ground you walk on." //Not the usual floor tile desc as that refers to throwing, Cyborgs can't do that - RR
materials = list() // All other Borg versions of items have no Metal or Glass - RR
custom_materials = null // All other Borg versions of items have no Metal or Glass - RR
is_cyborg = 1
cost = 125
@@ -528,6 +528,31 @@
for(var/i in 1 to 9)
new /obj/item/ammo_box/magazine/smgm45(src)
/obj/item/storage/backpack/duffelbag/syndie/ammo/dark_gygax
desc = "A large duffel bag, packed to the brim with various exosuit ammo."
/obj/item/storage/backpack/duffelbag/syndie/ammo/dark_gygax/PopulateContents()
new /obj/item/mecha_ammo/incendiary(src)
new /obj/item/mecha_ammo/incendiary(src)
new /obj/item/mecha_ammo/incendiary(src)
new /obj/item/mecha_ammo/flashbang(src)
new /obj/item/mecha_ammo/flashbang(src)
new /obj/item/mecha_ammo/flashbang(src)
/obj/item/storage/backpack/duffelbag/syndie/ammo/mauler
desc = "A large duffel bag, packed to the brim with various exosuit ammo."
/obj/item/storage/backpack/duffelbag/syndie/ammo/mauler/PopulateContents()
new /obj/item/mecha_ammo/lmg(src)
new /obj/item/mecha_ammo/lmg(src)
new /obj/item/mecha_ammo/lmg(src)
new /obj/item/mecha_ammo/scattershot(src)
new /obj/item/mecha_ammo/scattershot(src)
new /obj/item/mecha_ammo/scattershot(src)
new /obj/item/mecha_ammo/missiles_he(src)
new /obj/item/mecha_ammo/missiles_he(src)
new /obj/item/mecha_ammo/missiles_he(src)
/obj/item/storage/backpack/duffelbag/syndie/c20rbundle
desc = "A large duffel bag containing a C-20r, some magazines, and a cheap looking suppressor."
+2 -1
View File
@@ -114,6 +114,7 @@
/obj/item/storage/bag/ore/ComponentInitialize()
. = ..()
AddComponent(/datum/component/rad_insulation, 0.01) //please datum mats no more cancer
var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack)
STR.allow_quick_empty = TRUE
STR.can_hold = typecacheof(list(/obj/item/stack/ore))
@@ -321,7 +322,7 @@
throw_range = 5
w_class = WEIGHT_CLASS_BULKY
flags_1 = CONDUCT_1
materials = list(MAT_METAL=3000)
custom_materials = list(/datum/material/iron=3000)
/obj/item/storage/bag/tray/ComponentInitialize()
. = ..()
+10 -3
View File
@@ -179,17 +179,23 @@
/obj/item/pinpointer/crew
))
/obj/item/storage/belt/medical/surgery_belt_adv
name = "surgical supply belt"
desc = "A specialized belt designed for holding surgical equipment. It seems to have specific pockets for each and every surgical tool you can think of."
content_overlays = FALSE
var/advanced_drapes = FALSE
/obj/item/storage/belt/medical/surgery_belt_adv/PopulateContents()
new /obj/item/scalpel/advanced(src)
new /obj/item/retractor/advanced(src)
new /obj/item/surgicaldrill/advanced(src)
new /obj/item/surgical_drapes(src)
if(advanced_drapes)
new /obj/item/surgical_drapes/advanced(src)
else
new /obj/item/surgical_drapes(src)
/obj/item/storage/belt/medical/surgery_belt_adv/cmo
advanced_drapes = TRUE
/obj/item/storage/belt/security
name = "security belt"
@@ -328,7 +334,7 @@
desc = "Proves to the world that you are the strongest!"
icon_state = "championbelt"
item_state = "champion"
materials = list(MAT_GOLD=400)
custom_materials = list(/datum/material/gold=400)
/obj/item/storage/belt/champion/ComponentInitialize()
. = ..()
@@ -575,6 +581,7 @@
/obj/item/key/janitor,
/obj/item/clothing/gloves,
/obj/item/melee/flyswatter,
/obj/item/twohanded/broom,
/obj/item/paint/paint_remover,
/obj/item/assembly/mousetrap,
/obj/item/screwdriver,
+17 -15
View File
@@ -173,23 +173,25 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible",
var/unholy2clean = A.reagents.get_reagent_amount(/datum/reagent/fuel/unholywater)
A.reagents.del_reagent(/datum/reagent/fuel/unholywater)
A.reagents.add_reagent(/datum/reagent/water/holywater,unholy2clean)
if(istype(A, /obj/item/twohanded/required/cult_bastard) && !iscultist(user))
var/obj/item/twohanded/required/cult_bastard/sword = A
to_chat(user, "<span class='notice'>You begin to exorcise [sword].</span>")
if(istype(A, /obj/item/twohanded/required/cult_bastard) || istype(A, /obj/item/melee/cultblade) && !iscultist(user))
to_chat(user, "<span class='notice'>You begin to exorcise [A].</span>")
playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,1)
if(do_after(user, 40, target = sword))
if(do_after(user, 40, target = A))
playsound(src,'sound/effects/pray_chaplain.ogg',60,1)
for(var/obj/item/soulstone/SS in sword.contents)
SS.usability = TRUE
for(var/mob/living/simple_animal/shade/EX in SS)
SSticker.mode.remove_cultist(EX.mind, 1, 0)
EX.icon_state = "ghost1"
EX.name = "Purified [EX.name]"
SS.release_shades(user)
qdel(SS)
new /obj/item/nullrod/claymore(get_turf(sword))
user.visible_message("<span class='notice'>[user] has purified the [sword]!</span>")
qdel(sword)
if(istype(A, /obj/item/twohanded/required/cult_bastard))
for(var/obj/item/soulstone/SS in A.contents)
SS.usability = TRUE
for(var/mob/living/simple_animal/shade/EX in SS)
SSticker.mode.remove_cultist(EX.mind, 1, 0)
EX.icon_state = "ghost1"
EX.name = "Purified [EX.name]"
SS.release_shades(user)
qdel(SS)
new /obj/item/nullrod/claymore(get_turf(A))
else
new /obj/item/claymore/purified(get_turf(A))
user.visible_message("<span class='notice'>[user] has purified [A]!</span>")
qdel(A)
else if(istype(A, /obj/item/soulstone) && !iscultist(user))
var/obj/item/soulstone/SS = A
+20 -6
View File
@@ -3,8 +3,8 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
/obj/item/storage/toolbox
name = "toolbox"
desc = "Danger. Very robust."
icon_state = "red"
item_state = "toolbox_red"
icon_state = "toolbox_default"
item_state = "toolbox_default"
lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi'
flags_1 = CONDUCT_1
@@ -13,16 +13,16 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
throw_speed = 2
throw_range = 7
w_class = WEIGHT_CLASS_BULKY
materials = list(MAT_METAL = 500)
attack_verb = list("robusted")
hitsound = 'sound/weapons/smash.ogg'
custom_materials = list(/datum/material/iron = 500)
material_flags = MATERIAL_COLOR
var/latches = "single_latch"
var/has_latches = TRUE
var/can_rubberify = TRUE
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE //very protecc too
/obj/item/storage/toolbox/Initialize(mapload)
. = ..()
if(has_latches)
if(prob(10))
latches = "double_latch"
@@ -30,6 +30,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
latches = "triple_latch"
if(mapload && can_rubberify && prob(5))
rubberify()
. = ..()
update_icon()
/obj/item/storage/toolbox/update_icon()
@@ -48,6 +49,9 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
/obj/item/storage/toolbox/emergency
name = "emergency toolbox"
icon_state = "red"
item_state = "toolbox_red"
material_flags = NONE
/obj/item/storage/toolbox/emergency/PopulateContents()
new /obj/item/crowbar/red(src)
@@ -72,6 +76,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
name = "mechanical toolbox"
icon_state = "blue"
item_state = "toolbox_blue"
material_flags = NONE
/obj/item/storage/toolbox/mechanical/PopulateContents()
new /obj/item/screwdriver(src)
@@ -100,6 +105,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
name = "electrical toolbox"
icon_state = "yellow"
item_state = "toolbox_yellow"
material_flags = NONE
/obj/item/storage/toolbox/electrical/PopulateContents()
var/pickedcolor = pick("red","yellow","green","blue","pink","orange","cyan","white")
@@ -121,6 +127,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
desc = "A toolbox painted black with a red stripe. It looks more heavier than normal toolboxes."
force = 15
throwforce = 18
material_flags = NONE
/obj/item/storage/toolbox/syndicate/ComponentInitialize()
. = ..()
@@ -140,6 +147,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
name = "mechanical toolbox"
icon_state = "blue"
item_state = "toolbox_blue"
material_flags = NONE
/obj/item/storage/toolbox/drone/PopulateContents()
var/pickedcolor = pick("red","yellow","green","blue","pink","orange","cyan","white")
@@ -161,6 +169,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
w_class = WEIGHT_CLASS_HUGE
attack_verb = list("robusted", "crushed", "smashed")
can_rubberify = FALSE
material_flags = NONE
var/fabricator_type = /obj/item/clockwork/replica_fabricator/scarab
/obj/item/storage/toolbox/brass/ComponentInitialize()
@@ -202,6 +211,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
w_class = WEIGHT_CLASS_HUGE //heyo no bohing this!
force = 18 //spear damage
can_rubberify = FALSE
material_flags = NONE
/obj/item/storage/toolbox/plastitanium/afterattack(atom/A, mob/user, proximity)
. = ..()
@@ -217,6 +227,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
icon_state = "green"
item_state = "toolbox_green"
w_class = WEIGHT_CLASS_GIGANTIC //Holds more than a regular toolbox!
material_flags = NONE
/obj/item/storage/toolbox/artistic/ComponentInitialize()
. = ..()
@@ -257,6 +268,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
icon_state = "gold"
item_state = "toolbox_gold"
has_latches = FALSE
material_flags = NONE
/obj/item/storage/toolbox/gold_real/PopulateContents()
new /obj/item/screwdriver/nuke(src)
@@ -282,6 +294,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
force = 0
throwforce = 0
can_rubberify = FALSE
material_flags = NONE
/obj/item/storage/toolbox/proc/rubberify()
name = "rubber [name]"
@@ -289,7 +302,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
desc = replacetext(desc, "robust", "safe")
desc = replacetext(desc, "heavier", "bouncier")
DISABLE_BITFIELD(flags_1, CONDUCT_1)
materials = typelist("materials", null)
custom_materials = null
damtype = STAMINA
force += 3 //to compensate the higher stamina K.O. threshold compared to actual health.
throwforce += 3
@@ -311,12 +324,13 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
name = "rubber toolbox"
desc = "Bouncy. Very safe."
flags_1 = null
materials = null
custom_materials = null
damtype = STAMINA
force = 15
throwforce = 15
attack_verb = list("robusted", "bounced")
can_rubberify = FALSE //we are already the future.
material_flags = NONE
/obj/item/storage/toolbox/rubber/Initialize()
icon_state = pick("blue", "red", "yellow", "green")
+50 -43
View File
@@ -15,13 +15,18 @@
attack_verb = list("beaten")
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
var/stunforce = 70
var/stamforce = 25
var/status = FALSE
var/knockdown = TRUE
var/obj/item/stock_parts/cell/cell
var/hitcost = 1000
var/hitcost = 750
var/throw_hit_chance = 35
var/preload_cell_type //if not empty the baton starts with this type of cell
/obj/item/melee/baton/examine(mob/user)
. = ..()
. += "<span class='notice'>Right click attack while in combat mode to disarm instead of stun.</span>"
/obj/item/melee/baton/get_cell()
. = cell
if(iscyborg(loc))
@@ -32,7 +37,7 @@
user.visible_message("<span class='suicide'>[user] is putting the live [name] in [user.p_their()] mouth! It looks like [user.p_theyre()] trying to commit suicide!</span>")
return (FIRELOSS)
/obj/item/melee/baton/Initialize()
/obj/item/melee/baton/Initialize(mapload)
. = ..()
if(preload_cell_type)
if(!ispath(preload_cell_type,/obj/item/stock_parts/cell))
@@ -48,7 +53,7 @@
baton_stun(hit_atom)
/obj/item/melee/baton/loaded //this one starts with a cell pre-installed.
preload_cell_type = /obj/item/stock_parts/cell/high
preload_cell_type = /obj/item/stock_parts/cell/high/plus
/obj/item/melee/baton/proc/deductcharge(chrgdeductamt, chargecheck = TRUE, explode = TRUE)
var/obj/item/stock_parts/cell/copper_top = get_cell()
@@ -134,44 +139,41 @@
add_fingerprint(user)
/obj/item/melee/baton/attack(mob/M, mob/living/carbon/human/user)
var/interrupt = common_baton_melee(M, user, FALSE)
if(!interrupt)
..()
/obj/item/melee/baton/alt_pre_attack(atom/A, mob/living/user, params)
. = common_baton_melee(A, user, TRUE) //return true (attackchain interrupt) if this also returns true. no harm-disarming.
user.changeNext_move(CLICK_CD_MELEE)
//return TRUE to interrupt attack chain.
/obj/item/melee/baton/proc/common_baton_melee(mob/M, mob/living/user, disarming = FALSE)
if(iscyborg(M) || !isliving(M)) //can't baton cyborgs
return FALSE
if(status && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))
clowning_around(user)
return
if(user.getStaminaLoss() >= STAMINA_SOFTCRIT)//CIT CHANGE - makes it impossible to baton in stamina softcrit
to_chat(user, "<span class='danger'>You're too exhausted for that.</span>")//CIT CHANGE - ditto
return //CIT CHANGE - ditto
if(iscyborg(M))
..()
return
if(user.getStaminaLoss() >= STAMINA_SOFTCRIT) //CIT CHANGE - makes it impossible to baton in stamina softcrit
to_chat(user, "<span class='danger'>You're too exhausted for that.</span>")
return TRUE
if(ishuman(M))
var/mob/living/carbon/human/L = M
if(check_martial_counter(L, user))
return
return TRUE
if(status)
if(baton_stun(M, user, disarming))
user.do_attack_animation(M)
user.adjustStaminaLossBuffered(getweight()) //CIT CHANGE - makes stunbatonning others cost stamina
else if(user.a_intent != INTENT_HARM) //they'll try to bash in the last proc.
M.visible_message("<span class='warning'>[user] has prodded [M] with [src]. Luckily it was off.</span>", \
"<span class='warning'>[user] has prodded you with [src]. Luckily it was off</span>")
return disarming || (user.a_intent != INTENT_HARM)
if(user.a_intent != INTENT_HARM)
if(status)
if(baton_stun(M, user))
user.do_attack_animation(M)
user.adjustStaminaLossBuffered(getweight())//CIT CHANGE - makes stunbatonning others cost stamina
return
else
M.visible_message("<span class='warning'>[user] has prodded [M] with [src]. Luckily it was off.</span>", \
"<span class='warning'>[user] has prodded you with [src]. Luckily it was off</span>")
else
if(status)
baton_stun(M, user)
..()
/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user)
/obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user, disarming = FALSE)
if(L.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) //No message; check_shields() handles that
playsound(L, 'sound/weapons/genhit.ogg', 50, 1)
return FALSE
var/stunpwr = stunforce
var/stunpwr = stamforce
var/obj/item/stock_parts/cell/our_cell = get_cell()
if(!our_cell)
switch_status(FALSE)
@@ -187,17 +189,21 @@
return FALSE
stunpwr *= round(stuncharge/hitcost, 0.1)
L.Knockdown(stunpwr, override_stamdmg = 0)
L.apply_damage(stunpwr*0.5, STAMINA, user.zone_selected)
L.apply_effect(EFFECT_STUTTER, stunforce)
if(!disarming)
if(knockdown)
L.Knockdown(50, override_stamdmg = 0) //knockdown
L.adjustStaminaLoss(stunpwr)
else
L.drop_all_held_items() //no knockdown/stamina damage, instead disarm.
L.apply_effect(EFFECT_STUTTER, stamforce)
SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK)
if(user)
L.lastattacker = user.real_name
L.lastattackerckey = user.ckey
L.visible_message("<span class='danger'>[user] has stunned [L] with [src]!</span>", \
"<span class='userdanger'>[user] has stunned you with [src]!</span>")
log_combat(user, L, "stunned")
L.visible_message("<span class='danger'>[user] has [disarming? "disarmed" : "stunned"] [L] with [src]!</span>", \
"<span class='userdanger'>[user] has [disarming? "disarmed" : "stunned"] you with [src]!</span>")
log_combat(user, L, disarming? "disarmed" : "stunned")
playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1)
@@ -212,7 +218,7 @@
user.visible_message("<span class='danger'>[user] accidentally hits [user.p_them()]self with [src]!</span>", \
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK)
user.Knockdown(stunforce*3)
user.Knockdown(stamforce*6)
playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1)
deductcharge(hitcost)
@@ -274,8 +280,9 @@
w_class = WEIGHT_CLASS_BULKY
force = 3
throwforce = 5
stunforce = 60
hitcost = 2000
stamforce = 25
hitcost = 1000
knockdown = FALSE
throw_hit_chance = 10
slot_flags = ITEM_SLOT_BACK
var/obj/item/assembly/igniter/sparkler
+1 -1
View File
@@ -11,7 +11,7 @@
throwforce = 10
throw_speed = 1
throw_range = 4
materials = list(MAT_METAL = 500)
custom_materials = list(/datum/material/iron = 500)
actions_types = list(/datum/action/item_action/set_internals)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 30)
var/datum/gas_mixture/air_contents = null
+2 -2
View File
@@ -24,7 +24,7 @@
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
throw_speed = 3
throw_range = 7
materials = list(MAT_METAL=400)
custom_materials = list(/datum/material/iron=400)
/obj/item/locator/attack_self(mob/user)
user.set_machine(src)
@@ -125,7 +125,7 @@
w_class = WEIGHT_CLASS_SMALL
throw_speed = 3
throw_range = 5
materials = list(MAT_METAL=10000)
custom_materials = list(/datum/material/iron=10000)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/list/active_portal_pairs
+1 -1
View File
@@ -16,7 +16,7 @@
user.visible_message("<span class='danger'>[user] accidentally hits [user.p_them()]self with [src]!</span>", \
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK)
user.Knockdown(stunforce*3)
user.Knockdown(stamforce * 6)
playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1)
if(do_teleport(user, get_turf(user), 50, channel = TELEPORT_CHANNEL_BLUESPACE))
deductcharge(hitcost)
+3 -3
View File
@@ -11,7 +11,7 @@
force = 5
throwforce = 7
w_class = WEIGHT_CLASS_SMALL
materials = list(MAT_METAL=50)
custom_materials = list(/datum/material/iron=50)
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
tool_behaviour = TOOL_CROWBAR
@@ -55,7 +55,7 @@
w_class = WEIGHT_CLASS_NORMAL
throw_speed = 3
throw_range = 3
materials = list(MAT_METAL=70)
custom_materials = list(/datum/material/iron=70)
icon_state = "crowbar_large"
item_state = "crowbar"
toolspeed = 0.5
@@ -76,7 +76,7 @@
item_state = "jawsoflife"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
custom_materials = list(/datum/material/iron=150,/datum/material/silver=50,/datum/material/titanium=25)
usesound = 'sound/items/jaws_pry.ogg'
force = 15
+2 -2
View File
@@ -13,7 +13,7 @@
throwforce = 5
throw_speed = 3
throw_range = 5
materials = list(MAT_METAL=75)
custom_materials = list(/datum/material/iron=75)
attack_verb = list("stabbed")
hitsound = 'sound/weapons/bladeslice.ogg'
usesound = list('sound/items/screwdriver.ogg', 'sound/items/screwdriver2.ogg')
@@ -114,7 +114,7 @@
item_state = "drill"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) //done for balance reasons, making them high value for research, but harder to get
custom_materials = list(/datum/material/iron=150,/datum/material/silver=50,/datum/material/titanium=25) //done for balance reasons, making them high value for research, but harder to get
force = 8 //might or might not be too high, subject to change
w_class = WEIGHT_CLASS_SMALL
throwforce = 8
+5 -5
View File
@@ -21,7 +21,7 @@
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
resistance_flags = FIRE_PROOF
materials = list(MAT_METAL=70, MAT_GLASS=30)
custom_materials = list(/datum/material/iron=70, /datum/material/glass=30)
var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2)
var/status = TRUE //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower)
var/max_fuel = 20 //The max amount of fuel the welder can hold
@@ -297,7 +297,7 @@
desc = "A slightly larger welder with a larger tank."
icon_state = "indwelder"
max_fuel = 40
materials = list(MAT_GLASS=60)
custom_materials = list(/datum/material/glass=60)
/obj/item/weldingtool/largetank/cyborg
name = "integrated welding tool"
@@ -316,7 +316,7 @@
icon_state = "miniwelder"
max_fuel = 10
w_class = WEIGHT_CLASS_TINY
materials = list(MAT_METAL=30, MAT_GLASS=10)
custom_materials = list(/datum/material/iron=30, /datum/material/glass=10)
change_icons = 0
/obj/item/weldingtool/mini/flamethrower_screwdriver()
@@ -342,7 +342,7 @@
icon_state = "upindwelder"
item_state = "upindwelder"
max_fuel = 80
materials = list(MAT_METAL=70, MAT_GLASS=120)
custom_materials = list(/datum/material/iron=70, /datum/material/glass=120)
/obj/item/weldingtool/experimental
name = "experimental welding tool"
@@ -350,7 +350,7 @@
icon_state = "exwelder"
item_state = "exwelder"
max_fuel = 40
materials = list(MAT_METAL=70, MAT_GLASS=120)
custom_materials = list(/datum/material/iron=70, /datum/material/glass=120)
var/last_gen = 0
change_icons = 0
can_off_process = 1
+2 -2
View File
@@ -12,7 +12,7 @@
throw_speed = 3
throw_range = 7
w_class = WEIGHT_CLASS_SMALL
materials = list(MAT_METAL=80)
custom_materials = list(/datum/material/iron=80)
attack_verb = list("pinched", "nipped")
hitsound = 'sound/items/wirecutter.ogg'
usesound = 'sound/items/wirecutter.ogg'
@@ -98,7 +98,7 @@
icon_state = "jaws_cutter"
item_state = "jawsoflife"
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
custom_materials = list(/datum/material/iron=150,/datum/material/silver=50,/datum/material/titanium=25)
usesound = 'sound/items/jaws_cut.ogg'
toolspeed = 0.25
random_color = FALSE
+2 -2
View File
@@ -11,7 +11,7 @@
throwforce = 7
w_class = WEIGHT_CLASS_SMALL
usesound = 'sound/items/ratchet.ogg'
materials = list(MAT_METAL=150)
custom_materials = list(/datum/material/iron=150)
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
tool_behaviour = TOOL_WRENCH
@@ -59,7 +59,7 @@
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
usesound = 'sound/items/drill_use.ogg'
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
custom_materials = list(/datum/material/iron=150,/datum/material/silver=50,/datum/material/titanium=25)
//done for balance reasons, making them high value for research, but harder to get
force = 8 //might or might not be too high, subject to change
w_class = WEIGHT_CLASS_SMALL
+4 -3
View File
@@ -143,7 +143,7 @@
flags_1 = CONDUCT_1
slot_flags = ITEM_SLOT_BELT
w_class = WEIGHT_CLASS_NORMAL
materials = list(MAT_METAL=10, MAT_GLASS=10)
custom_materials = list(/datum/material/iron=10, /datum/material/glass=10)
attack_verb = list("struck", "pistol whipped", "hit", "bashed")
var/bullets = 7
@@ -197,7 +197,7 @@
icon = 'icons/obj/ammo.dmi'
icon_state = "357OLD-7"
w_class = WEIGHT_CLASS_TINY
materials = list(MAT_METAL=10, MAT_GLASS=10)
custom_materials = list(/datum/material/iron=10, /datum/material/glass=10)
var/amount_left = 7
/obj/item/toy/ammo/gun/update_icon()
@@ -289,7 +289,7 @@
var/light_brightness = 3
actions_types = list()
/obj/item/toy/sword/cx/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes
/obj/item/toy/sword/cx/alt_pre_attack(atom/A, mob/living/user, params) //checks if it can do right click memes
altafterattack(A, user, TRUE, params)
return TRUE
@@ -1014,6 +1014,7 @@
/obj/item/toy/cards/singlecard/examine(mob/user)
. = ..()
if(ishuman(user))
var/mob/living/carbon/human/cardUser = user
if(cardUser.is_holding(src))
+66 -3
View File
@@ -510,7 +510,7 @@
/obj/item/twohanded/dualsaber/hypereutactic/chaplain/IsReflect()
return FALSE
/obj/item/twohanded/dualsaber/hypereutactic/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes
/obj/item/twohanded/dualsaber/hypereutactic/alt_pre_attack(atom/A, mob/living/user, params) //checks if it can do right click memes
altafterattack(A, user, TRUE, params)
return TRUE
@@ -592,7 +592,7 @@
throw_speed = 4
embedding = list("embedded_impact_pain_multiplier" = 3, "embed_chance" = 90)
armour_penetration = 10
materials = list(MAT_METAL=1150, MAT_GLASS=2075)
custom_materials = list(/datum/material/iron=1150, /datum/material/glass=2075)
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
sharpness = IS_SHARP
@@ -708,7 +708,7 @@
throwforce = 13
throw_speed = 2
throw_range = 4
materials = list(MAT_METAL=13000)
custom_materials = list(/datum/material/iron=13000)
attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
hitsound = "swing_hit"
sharpness = IS_SHARP
@@ -1016,3 +1016,66 @@
C.change_view(CONFIG_GET(string/default_view))
user.client.pixel_x = 0
user.client.pixel_y = 0
/obj/item/twohanded/broom
name = "broom"
desc = "This is my BROOMSTICK! It can be used manually or braced with two hands to sweep items as you move. It has a telescopic handle for compact storage." //LIES
icon = 'icons/obj/janitor.dmi'
icon_state = "broom0"
lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
force = 8
throwforce = 10
throw_speed = 3
throw_range = 7
w_class = WEIGHT_CLASS_NORMAL
force_unwielded = 8
force_wielded = 12
attack_verb = list("swept", "brushed off", "bludgeoned", "whacked")
resistance_flags = FLAMMABLE
/obj/item/twohanded/broom/update_icon_state()
icon_state = "broom[wielded]"
/obj/item/twohanded/broom/wield(mob/user)
. = ..()
if(!wielded)
return
to_chat(user, "<span class='notice'>You brace the [src] against the ground in a firm sweeping stance.</span>")
RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/sweep)
/obj/item/twohanded/broom/unwield(mob/user)
. = ..()
UnregisterSignal(user, COMSIG_MOVABLE_MOVED)
/obj/item/twohanded/broom/afterattack(atom/A, mob/user, proximity)
. = ..()
if(!proximity)
return
sweep(user, A, FALSE)
/obj/item/twohanded/broom/proc/sweep(mob/user, atom/A, moving = TRUE)
var/turf/target
if (!moving)
if (isturf(A))
target = A
else
target = A.loc
else
target = user.loc
if (locate(/obj/structure/table) in target.contents)
return
var/i = 0
for(var/obj/item/garbage in target.contents)
if(!garbage.anchored)
garbage.Move(get_step(target, user.dir), user.dir)
i++
if(i >= 20)
break
if(i >= 1)
playsound(loc, 'sound/weapons/thudswoosh.ogg', 5, TRUE, -1)
/obj/item/twohanded/broom/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) //bless you whoever fixes this copypasta
J.put_in_cart(src, user)
J.mybroom=src
J.update_icon()
+9 -4
View File
@@ -79,6 +79,11 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
user.visible_message("<span class='suicide'>[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
return(BRUTELOSS)
/obj/item/claymore/purified
name = "purified longsword"
desc = "A hastily-purified longsword. While not as holy as it could be, it's still a formidable weapon against those who would rather see you dead."
force = 25
/obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS
desc = "<b><i>THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!</i></b>\nActivate it in your hand to point to the nearest victim."
flags_1 = CONDUCT_1
@@ -247,7 +252,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
force = 9
throwforce = 10
w_class = WEIGHT_CLASS_NORMAL
materials = list(MAT_METAL=1150, MAT_GLASS=75)
custom_materials = list(/datum/material/iron=1150, /datum/material/glass=75)
attack_verb = list("hit", "bludgeoned", "whacked", "bonked")
/obj/item/wirerod/attackby(obj/item/I, mob/user, params)
@@ -291,7 +296,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
embedding = list("embedded_pain_multiplier" = 4, "embed_chance" = 100, "embedded_fall_chance" = 0)
w_class = WEIGHT_CLASS_SMALL
sharpness = IS_SHARP
materials = list(MAT_METAL=500, MAT_GLASS=500)
custom_materials = list(/datum/material/iron=500, /datum/material/glass=500)
resistance_flags = FIRE_PROOF
@@ -307,7 +312,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
throwforce = 5
throw_speed = 3
throw_range = 6
materials = list(MAT_METAL=12000)
custom_materials = list(/datum/material/iron=12000)
hitsound = 'sound/weapons/genhit.ogg'
attack_verb = list("stubbed", "poked")
resistance_flags = FIRE_PROOF
@@ -391,7 +396,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
force = 5
throwforce = 5
w_class = WEIGHT_CLASS_SMALL
materials = list(MAT_METAL=50)
custom_materials = list(/datum/material/iron=50)
attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
/obj/item/staff