Blacksmithing 2 (#20004)
* more dorf stuff - Chains, hammers, chainmail * blacksmithing start * A little more TLC * Moves the anvil into the blacksmithing folder. Adds a function to override whether a mob can push an atom/movable (used in anvil) * Adds pickaxe and hammer heads to iron recipes, and misc item handles to wood recipes Changes the hammer sprite to something a bit more aesthetically pleasing than my usual noisebombs * forge time * more forge stuff * Removes copypasting Adds dorfify proc, requiring a /datum/material as its argument. * Fixes res_amount not working for things that aren't a sheet subtype * chainmail added
@@ -132,6 +132,8 @@
|
||||
|
||||
#define iswelder(A) istype(A, /obj/item/weapon/weldingtool)
|
||||
|
||||
#define ishammer(A) is_type_in_list(A, list(/obj/item/weapon/hammer, /obj/item/weapon/storage/toolbox))
|
||||
|
||||
#define iscablecoil(A) istype(A, /obj/item/stack/cable_coil)
|
||||
|
||||
#define iscoin(A) is_type_in_list(A, list(/obj/item/weapon/coin, /obj/item/weapon/reagent_containers/food/snacks/chococoin))
|
||||
@@ -241,6 +243,7 @@
|
||||
|
||||
#define isERT(H) (H.mind && H.mind.GetRole(RESPONDER))
|
||||
|
||||
#define hasanvil(H) (isturf(H) && (locate(/obj/item/anvil) in H))
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -37,9 +37,17 @@
|
||||
|
||||
#define MELTPOINT_GLASS (1500+T0C)
|
||||
#define MELTPOINT_STEEL (1510+T0C)
|
||||
#define MELTPOINT_PLASMA (MELTPOINT_STEEL+500)
|
||||
#define MELTPOINT_SILICON 1687 // KELVIN
|
||||
#define MELTPOINT_PLASTIC (180+T0C)
|
||||
#define MELTPOINT_SNOW 304.15 //about 30°C
|
||||
#define MELTPOINT_CARBON (T0C+3550)
|
||||
#define MELTPOINT_GOLD (T0C+1064)
|
||||
#define MELTPOINT_SILVER (T0C+961.8)
|
||||
#define MELTPOINT_URANIUM (T0C+1132)
|
||||
#define MELTPOINT_POTASSIUM (T0C+63.5)
|
||||
#define MELTPOINT_BRASS (T0C+940)
|
||||
#define MELTPOINT_MITHRIL (T0C+893) //Using sterling silver (because silver steel) as base
|
||||
|
||||
// The highest number supported is a signed 32-bit floating point number.
|
||||
// Integers beyond the 24 bit range are represented as single-precision floating points, and thus will lose accuracy beyond the range of +/- 16777216
|
||||
|
||||
@@ -399,6 +399,7 @@
|
||||
#define TEMPERATURE_FLAME 700
|
||||
#define TEMPERATURE_WELDER 3480
|
||||
#define TEMPERATURE_PLASMA 4500
|
||||
#define TEMPERATURE_ETHANOL (T0C+1560)
|
||||
#define HEAT_TRANSFER_MULTIPLIER 7 //Multiplies the numbers above when heating a reagent container. A truly magical number.
|
||||
|
||||
// By defining the effect multiplier this way, it'll exactly adjust
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/** Anvil
|
||||
Is treated as an item that can not be picked up, unless you are incredibly strong.
|
||||
|
||||
Is treated as an item that can not be picked up, pushed, or pulled, unless you are incredibly strong.
|
||||
Can place blacksmithing placeholders onto it like a table. Necessary to actually hammer them into shape.
|
||||
**/
|
||||
|
||||
/obj/item/anvil
|
||||
@@ -10,6 +10,7 @@
|
||||
icon = 'icons/obj/blacksmithing.dmi'
|
||||
icon_state = "anvil"
|
||||
impactsound = 'sound/misc/clang.ogg'
|
||||
layer = TABLE_LAYER
|
||||
flags = FPRINT | TWOHANDABLE | MUSTTWOHAND
|
||||
density = 1
|
||||
throwforce = 40
|
||||
@@ -30,4 +31,13 @@
|
||||
/obj/item/anvil/check_airflow_movable(n)
|
||||
if(n > 1000)
|
||||
return TRUE
|
||||
return FALSE
|
||||
return FALSE
|
||||
|
||||
/obj/item/anvil/can_be_pushed(mob/living/user)
|
||||
return user.get_strength() >= 2
|
||||
|
||||
/obj/item/anvil/attackby(obj/item/W, mob/user, params)
|
||||
if(user.drop_item(W, src.loc))
|
||||
if(W.loc == src.loc && params)
|
||||
W.setPixelOffsetsFromParams(params, user)
|
||||
return 1
|
||||
125
code/WorkInProgress/MadmanMartian/blacksmithing/blacksmithing.dm
Normal file
@@ -0,0 +1,125 @@
|
||||
/**
|
||||
Put /obj/smithing_placeholder into a heatsource that is 90% of the melting temperature of that material to heat it up temporarily (spawn 10 seconds)
|
||||
|
||||
If struck by a blunt object (preferably a hammer, but a toolbox can work) enough times before it cools, it will make the object.
|
||||
|
||||
Can then choose to keep striking it to potentially increase its quality, but each time doubles the chance of failure per swing.
|
||||
**/
|
||||
|
||||
/obj/item/smithing_placeholder
|
||||
name = "placeholder"
|
||||
desc = "An incomplete object, that requires forging and striking."
|
||||
var/obj/result
|
||||
var/malleable = FALSE
|
||||
var/strikes_required
|
||||
var/strikes
|
||||
|
||||
/obj/item/smithing_placeholder/Destroy()
|
||||
result = null
|
||||
..()
|
||||
|
||||
/obj/item/smithing_placeholder/New(loc, var/obj/item/stack/S, var/obj/R, var/required_strikes)
|
||||
..()
|
||||
if(istype(S, /obj/item/stack/sheet/))
|
||||
var/obj/item/stack/sheet/SS = S
|
||||
var/datum/materials/materials_list = new
|
||||
material_type = materials_list.getMaterial(SS.mat_type)
|
||||
qdel(materials_list)
|
||||
else if(S.material_type)
|
||||
material_type = S.material_type
|
||||
result = R
|
||||
R.forceMove(null)
|
||||
var/obj/item/stack/sheet/mineral/M = material_type.sheettype
|
||||
appearance = initial(M.appearance)
|
||||
desc = initial(desc)
|
||||
strikes_required = required_strikes
|
||||
|
||||
/obj/item/smithing_placeholder/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class = 'notice'>[strikes?"It looks like it has been struck [strikes] times.":"It has not been struck yet."]<br>It is [malleable?"malleable":"not malleable"].[strikes_required<strikes?"<br>It looks to be finished, and just needs quenching.":""]")
|
||||
|
||||
|
||||
/obj/item/smithing_placeholder/afterattack(atom/A, mob/user, proximity_flag, click_parameters)
|
||||
if(!proximity_flag)
|
||||
return
|
||||
if(isobj(A))
|
||||
var/obj/O = A
|
||||
if(O.is_hot())
|
||||
heat(O.is_hot(), O, user)
|
||||
if(O.is_open_container() && O.reagents.has_reagent(WATER, 60))
|
||||
quench(O, user)
|
||||
if(istype(A, /mob/living/simple_animal/hostile/asteroid/magmaw)) //Until we have flameslimes, lavalizards, crimson pyromancers, or flaming skeletons, this will be hardcoded
|
||||
var/mob/living/simple_animal/hostile/asteroid/magmaw/M = A
|
||||
if(M.isDead())
|
||||
return
|
||||
var/temperature
|
||||
switch(M.fire_extremity)
|
||||
if(0)
|
||||
temperature = MELTPOINT_GOLD
|
||||
if(1)
|
||||
temperature = MELTPOINT_STEEL
|
||||
if(2)
|
||||
temperature = MELTPOINT_MITHRIL
|
||||
heat(temperature, M, user)
|
||||
|
||||
/obj/item/smithing_placeholder/attackby(obj/item/I, mob/user)
|
||||
if(ishammer(I))
|
||||
strike(I, user)
|
||||
user.delayNextAttack(1 SECONDS)
|
||||
else if (I.is_hot())
|
||||
heat(I.is_hot(), I, user)
|
||||
|
||||
/obj/item/smithing_placeholder/attempt_heating(var/atom/A, mob/user)
|
||||
if(user)
|
||||
to_chat(user, "<span class = 'notice'>You attempt to heat \the [src] with \the [A].</span>")
|
||||
heat(A.is_hot(), A, user)
|
||||
|
||||
/obj/item/smithing_placeholder/proc/heat(var/temperature, var/atom/A, mob/user)
|
||||
if(malleable)
|
||||
return
|
||||
if(temperature < ((material_type.melt_temperature/10)*9))
|
||||
if(user)
|
||||
to_chat(user, "<span class = 'warning'>\The [A] is not hot enough.</span>")
|
||||
return
|
||||
if(!do_after(user, A, 4 SECONDS))
|
||||
return
|
||||
if(user)
|
||||
to_chat(user, "<span class = 'notice'>You heat \the [src].</span>")
|
||||
malleable = TRUE
|
||||
|
||||
|
||||
/obj/item/smithing_placeholder/proc/strike(atom/A, mob/user)
|
||||
if(!malleable)
|
||||
to_chat(user, "<span class = 'warning'>\The [src] has gone cool. It can not be manipulated in this state.</span>")
|
||||
return
|
||||
if(!hasanvil(loc))
|
||||
to_chat(user, "<span class = 'warning'>There is no anvil to shape \the [src] over.</span>")
|
||||
return
|
||||
playsound(loc, 'sound/items/hammer_strike.ogg', 50, 1)
|
||||
if(istype(A,/obj/item/weapon/hammer))
|
||||
strikes++
|
||||
else if(istype(A,/obj/item/weapon/storage/toolbox))
|
||||
strikes+=0.25
|
||||
if(strikes == strikes_required)
|
||||
to_chat(user, "<span class = 'notice'>\The [src] seems to have taken shape nicely.</span>")
|
||||
if(strikes > strikes_required)
|
||||
if(prob(5*(strikes/strikes_required)))
|
||||
to_chat(user, "<span class = 'warning'>\The [src] becomes brittle and unmalleable.</span>")
|
||||
var/obj/item/weapon/ore/slag/S = new /obj/item/weapon/ore/slag(get_turf(src))
|
||||
recycle(S.mats)
|
||||
result.recycle(S.mats)
|
||||
qdel(result)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/item/smithing_placeholder/proc/quench(obj/O, mob/user)
|
||||
if(strikes < strikes_required)
|
||||
to_chat(user, "<span class = 'warning'>\The [src] is not finished yet!</span>")
|
||||
return 0
|
||||
playsound(loc, 'sound/machines/hiss.ogg', 50, 1)
|
||||
O.reagents.remove_reagent(WATER, 20)
|
||||
var/datum/material/mat = material_type
|
||||
if(mat)
|
||||
result.dorfify(mat)
|
||||
result.forceMove(get_turf(src))
|
||||
qdel(src)
|
||||
111
code/WorkInProgress/MadmanMartian/blacksmithing/forge.dm
Normal file
@@ -0,0 +1,111 @@
|
||||
/**
|
||||
Blacksmithing forge
|
||||
Takes chunks of plasma ore, or plasma sheets, to generate high temperatures for molding or melting metal.
|
||||
**/
|
||||
|
||||
/obj/structure/forge
|
||||
name = "forge"
|
||||
desc = "A fire contained within heat-proof stone. This lets the internal temperature develop enough to make metal malleable or liquid."
|
||||
icon = 'icons/obj/blacksmithing.dmi'
|
||||
icon_state = "furnace_off"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
var/status = FALSE //Whether the forge is lit
|
||||
var/obj/item/heating //What is contained within the forge, and is being heated
|
||||
var/fuel_time //How long is left, in deciseconds
|
||||
var/current_temp
|
||||
var/current_thermal_energy
|
||||
|
||||
/obj/structure/forge/update_icon()
|
||||
if(status)
|
||||
icon_state = "furnace_on"
|
||||
else
|
||||
icon_state = "furnace_off"
|
||||
|
||||
/obj/structure/forge/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
heating.forceMove(get_turf(src))
|
||||
heating = null
|
||||
for(var/obj/I in contents)
|
||||
qdel(I)
|
||||
..()
|
||||
|
||||
/obj/structure/forge/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/stack/sheet/mineral/plasma))
|
||||
var/obj/item/stack/sheet/mineral/plasma/P = I
|
||||
if(P.use(1))
|
||||
to_chat(user, "<span class = 'notice'>You toss a sheet of \the [I] into \the [src].</span>")
|
||||
if(current_temp < TEMPERATURE_PLASMA)
|
||||
current_temp = TEMPERATURE_PLASMA
|
||||
fuel_time+= 60 SECONDS
|
||||
return
|
||||
else if(istype(I, /obj/item/weapon/ore/plasma))
|
||||
to_chat(user, "<span class = 'notice'>You toss \the [I] into \the [src].</span>")
|
||||
user.drop_item(I)
|
||||
qdel(I)
|
||||
if(current_temp < MELTPOINT_STEEL)
|
||||
current_temp = MELTPOINT_STEEL
|
||||
fuel_time += 20 SECONDS
|
||||
return
|
||||
else if(I.is_hot() && status == FALSE)
|
||||
to_chat(user, "<span class = 'notice'>You attempt to light \the [src] with \the [I].</span>")
|
||||
if(do_after(user, I, 3 SECONDS))
|
||||
if(!has_fuel())
|
||||
to_chat(user, "<span class = 'warning'>\The [src] does not light.</span>")
|
||||
return
|
||||
toggle_lit()
|
||||
else if(!heating)
|
||||
if(user.drop_item(I, src))
|
||||
to_chat(user, "<span class = 'notice'>You place \the [I] into \the [src].</span>")
|
||||
heating = I
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/structure/forge/proc/toggle_lit()
|
||||
switch(status)
|
||||
if(TRUE) //turning it off
|
||||
status = FALSE
|
||||
processing_objects.Remove(src)
|
||||
if(FALSE)//turning it on
|
||||
status = TRUE
|
||||
processing_objects.Add(src)
|
||||
on_fire = status
|
||||
update_icon()
|
||||
return status
|
||||
|
||||
/obj/structure/forge/attack_hand(mob/user)
|
||||
if(heating)
|
||||
to_chat(user, "<span class = 'notice'>You retrieve \the [heating] from \the [src].</span>")
|
||||
user.put_in_hands(heating)
|
||||
heating = null
|
||||
|
||||
|
||||
/obj/structure/forge/examine(mob/user)
|
||||
..()
|
||||
if(heating)
|
||||
to_chat(user, "<span class = 'notice'>There is currently \a [heating] in \the [src].</span>")
|
||||
to_chat(user, "<span class = 'notice'>\The [src] is [status?"lit":"unlit"][fuel_time>1?" and has fuel.":""]</span>")
|
||||
|
||||
/obj/structure/forge/process()
|
||||
if(!has_fuel())
|
||||
return
|
||||
if(heating)
|
||||
heating.attempt_heating(src, null)
|
||||
|
||||
|
||||
//Prefer to burn through sheets over ores
|
||||
/obj/structure/forge/proc/has_fuel()
|
||||
fuel_time = max(0, fuel_time-1)
|
||||
if(fuel_time <= 0 && status)
|
||||
toggle_lit()
|
||||
return fuel_time
|
||||
|
||||
/obj/structure/forge/is_hot()
|
||||
return current_temp
|
||||
|
||||
/obj/structure/forge/thermal_energy_transfer()
|
||||
return current_thermal_energy
|
||||
|
||||
/obj/structure/forge/extinguish()
|
||||
if(status)
|
||||
toggle_lit()
|
||||
@@ -0,0 +1,37 @@
|
||||
/obj/item/item_head
|
||||
icon = 'icons/obj/misc_components.dmi'
|
||||
var/obj/item/result
|
||||
|
||||
/obj/item/item_head/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/item_handle))
|
||||
to_chat(user, "<span class = 'notice'>You begin to attach \the [I] to \the [src].</span>")
|
||||
if(do_after(user, src, 4 SECONDS))
|
||||
user.drop_item(I)
|
||||
user.drop_item(src)
|
||||
result = new result
|
||||
var/datum/material/mat = material_type
|
||||
if(mat)
|
||||
result.dorfify(mat)
|
||||
qdel(I)
|
||||
qdel(src)
|
||||
user.put_in_hands(result)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/item_head/hammer_head
|
||||
name = "hammer head"
|
||||
icon_state = "hammer_head"
|
||||
desc = "unlike the shark, this one lacks bite."
|
||||
result = /obj/item/weapon/hammer
|
||||
|
||||
/obj/item/item_head/pickaxe_head
|
||||
name = "pickaxe head"
|
||||
icon_state = "pickaxe_head"
|
||||
desc = "To strike the earth, you will need a handle on the situation"
|
||||
result = /obj/item/weapon/pickaxe
|
||||
|
||||
/obj/item/item_handle
|
||||
name = "item handle"
|
||||
icon = 'icons/obj/misc_components.dmi'
|
||||
icon_state = "item_handle"
|
||||
desc = "a generic handle, with no purpose."
|
||||
@@ -938,3 +938,9 @@ its easier to just keep the beam vertical.
|
||||
to_chat(user, "<span class='warning'>\The [src] is full.</span>")
|
||||
return INJECTION_RESULT_FAIL
|
||||
return INJECTION_RESULT_SUCCESS
|
||||
|
||||
/atom/proc/is_hot()
|
||||
return
|
||||
|
||||
/atom/proc/thermal_energy_transfer()
|
||||
return
|
||||
@@ -1020,3 +1020,6 @@
|
||||
if(Lag > 0)
|
||||
set_glide_size(DELAY2GLIDESIZE(Lag))
|
||||
walk_to(src,Trg,Min,Lag,Speed)
|
||||
|
||||
/atom/movable/proc/can_be_pushed(mob/user)
|
||||
return 1
|
||||
@@ -1297,3 +1297,17 @@ var/global/list/image/blood_overlays = list()
|
||||
|
||||
/obj/item/proc/pre_throw()
|
||||
return
|
||||
|
||||
/**
|
||||
Attempt to heat this object from a presumed heat source.
|
||||
@args:
|
||||
A: Atom: The source of the heat
|
||||
user: mob: Whomever may be trying to heat this object
|
||||
|
||||
@return:
|
||||
TRUE if succesful
|
||||
FALSE if not succesful
|
||||
NULL if override not defined
|
||||
**/
|
||||
/obj/item/proc/attempt_heating(atom/A, mob/user)
|
||||
return
|
||||
@@ -143,3 +143,24 @@
|
||||
to_chat(user, "<span class='notice'>You assembled a grille!</span>")
|
||||
Grille.add_fingerprint(user)
|
||||
use(2)
|
||||
|
||||
|
||||
/obj/item/stack/chains
|
||||
name = "chain"
|
||||
desc = "link by link, my chain got longer."
|
||||
icon_state = "chains"
|
||||
max_amount = 20
|
||||
|
||||
/obj/item/stack/chains/can_stack_with(var/obj/item/other_stack)
|
||||
if(!ispath(other_stack) && istype(other_stack) && other_stack.material_type == material_type)
|
||||
return ..()
|
||||
return 0
|
||||
|
||||
/obj/item/stack/chains/New(var/loc, var/amount=null)
|
||||
recipes = chain_recipes
|
||||
..()
|
||||
|
||||
var/list/datum/stack_recipe/chain_recipes = list (
|
||||
new/datum/stack_recipe/blacksmithing("Suit of Chainmail", /obj/item/clothing/suit/armor/vest/chainmail, 10, time = 100,required_strikes = 15),
|
||||
new/datum/stack_recipe/blacksmithing("Chainmail Coif", /obj/item/clothing/head/helmet/chainmail, 5, time = 100,required_strikes = 15),
|
||||
)
|
||||
@@ -88,8 +88,8 @@ var/list/datum/stack_recipe/sandstone_recipes = list ( \
|
||||
var/list/datum/stack_recipe/diamond_recipes = list ( \
|
||||
new/datum/stack_recipe("diamond floor tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20), \
|
||||
new/datum/stack_recipe("diamond door", /obj/machinery/door/mineral/transparent/diamond, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe/dorf("dorf chair",/obj/structure/bed/chair, 20, one_per_turf = 1, on_floor = 1, inherit_material = TRUE),
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 12, time = 12, on_floor = 1, inherit_material = TRUE)
|
||||
new/datum/stack_recipe/dorf("dorf chair",/obj/structure/bed/chair, 20, one_per_turf = 1, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE),
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 12, time = 12, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE)
|
||||
)
|
||||
|
||||
/obj/item/stack/sheet/mineral/diamond/New(var/loc, var/amount=null)
|
||||
@@ -118,8 +118,8 @@ var/list/datum/stack_recipe/diamond_recipes = list ( \
|
||||
var/list/datum/stack_recipe/uranium_recipes = list ( \
|
||||
new/datum/stack_recipe("uranium floor tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20), \
|
||||
new/datum/stack_recipe("uranium door", /obj/machinery/door/mineral/uranium, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe/dorf("dorf chair",/obj/structure/bed/chair, 20, one_per_turf = 1, on_floor = 1, inherit_material = TRUE),
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 12, time = 12, on_floor = 1, inherit_material = TRUE)
|
||||
new/datum/stack_recipe/dorf("dorf chair",/obj/structure/bed/chair, 20, one_per_turf = 1, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE),
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 12, time = 12, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE)
|
||||
)
|
||||
|
||||
/obj/item/stack/sheet/mineral/uranium/New(var/loc, var/amount=null)
|
||||
@@ -148,8 +148,8 @@ var/list/datum/stack_recipe/uranium_recipes = list ( \
|
||||
var/list/datum/stack_recipe/plasma_recipes = list ( \
|
||||
new/datum/stack_recipe("plasma floor tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20), \
|
||||
new/datum/stack_recipe("plasma door", /obj/machinery/door/mineral/transparent/plasma, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe/dorf("dorf chair",/obj/structure/bed/chair, 20, one_per_turf = 1, on_floor = 1, inherit_material = TRUE),
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 12, time = 12, on_floor = 1, inherit_material = TRUE)
|
||||
new/datum/stack_recipe/dorf("dorf chair",/obj/structure/bed/chair, 20, one_per_turf = 1, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE),
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 12, time = 12, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE)
|
||||
)
|
||||
|
||||
/obj/item/stack/sheet/mineral/plasma/New(var/loc, var/amount=null)
|
||||
@@ -225,8 +225,9 @@ var/list/datum/stack_recipe/gold_recipes = list ( \
|
||||
new/datum/stack_recipe("golden floor tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20), \
|
||||
new/datum/stack_recipe("golden door", /obj/machinery/door/mineral/gold, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("gold tooth", /obj/item/stack/teeth/gold, 1, 1, 20), \
|
||||
new/datum/stack_recipe/dorf("dorf chair",/obj/structure/bed/chair, 20,one_per_turf = 1, on_floor = 1, inherit_material = TRUE),\
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 12, time = 12, on_floor = 1, inherit_material = TRUE)
|
||||
new/datum/stack_recipe/dorf("dorf chair",/obj/structure/bed/chair, 20,one_per_turf = 1, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE),\
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 12, time = 12, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE),
|
||||
new/datum/stack_recipe/dorf("chain", /obj/item/stack/chains, 2, 1, 20, 5, inherit_material = TRUE)
|
||||
)
|
||||
|
||||
/obj/item/stack/sheet/mineral/gold/New(var/loc, var/amount=null)
|
||||
@@ -238,8 +239,8 @@ var/list/datum/stack_recipe/gold_recipes = list ( \
|
||||
*/
|
||||
var/list/datum/stack_recipe/phazon_recipes = list( \
|
||||
new/datum/stack_recipe("phazon floor tile", /obj/item/stack/tile/mineral/phazon, 1, 40, 20), \
|
||||
new/datum/stack_recipe/dorf("dorf chair",/obj/structure/bed/chair, 20,one_per_turf = 1, on_floor = 1, inherit_material = TRUE),\
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 12, time = 12, on_floor = 1, inherit_material = TRUE)
|
||||
new/datum/stack_recipe/dorf("dorf chair",/obj/structure/bed/chair, 20,one_per_turf = 1, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE),\
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 12, time = 12, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE)
|
||||
)
|
||||
|
||||
/obj/item/stack/sheet/mineral/phazon
|
||||
@@ -283,8 +284,9 @@ var/list/datum/stack_recipe/phazon_recipes = list( \
|
||||
var/list/datum/stack_recipe/silver_recipes = list ( \
|
||||
new/datum/stack_recipe("silver floor tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20), \
|
||||
new/datum/stack_recipe("silver door", /obj/machinery/door/mineral/silver, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe/dorf("dorf chair",/obj/structure/bed/chair, 20,one_per_turf = 1, on_floor = 1, inherit_material = TRUE),\
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 12, time = 12, on_floor = 1, inherit_material = TRUE)
|
||||
new/datum/stack_recipe/dorf("dorf chair",/obj/structure/bed/chair, 20,one_per_turf = 1, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE),\
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 12, time = 12, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE),
|
||||
new/datum/stack_recipe/dorf("chain", /obj/item/stack/chains, 2, 1, 20, 5, inherit_material = TRUE)
|
||||
)
|
||||
|
||||
/obj/item/stack/sheet/mineral/silver/New(var/loc, var/amount=null)
|
||||
@@ -311,8 +313,8 @@ var/list/datum/stack_recipe/silver_recipes = list ( \
|
||||
|
||||
var/list/datum/stack_recipe/clown_recipes = list ( \
|
||||
new/datum/stack_recipe("bananium floor tile", /obj/item/stack/tile/mineral/clown, 1, 40, 20), \
|
||||
new/datum/stack_recipe/dorf("dorf chair",/obj/structure/bed/chair, 20, one_per_turf = 1, on_floor = 1, inherit_material = TRUE),\
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 12, time = 12, on_floor = 1, inherit_material = TRUE)
|
||||
new/datum/stack_recipe/dorf("dorf chair",/obj/structure/bed/chair, 20, one_per_turf = 1, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE),\
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 12, time = 12, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE)
|
||||
)
|
||||
|
||||
/obj/item/stack/sheet/mineral/clown/New(var/loc, var/amount=null)
|
||||
|
||||
@@ -210,13 +210,14 @@
|
||||
var/obj/item/stack/S = O
|
||||
S.update_materials()
|
||||
else
|
||||
O = new R.result_type( usr.loc )
|
||||
for(var/i = 1 to (R.max_res_amount>1 ? R.res_amount*multiplier : 1))
|
||||
O = new R.result_type( usr.loc )
|
||||
|
||||
O.dir = usr.dir
|
||||
if(R.start_unanchored)
|
||||
var/obj/A = O
|
||||
A.anchored = 0
|
||||
R.finish_building(usr, src, O)
|
||||
var/put_in_hand = R.finish_building(usr, src, O)
|
||||
|
||||
//if (R.max_res_amount>1)
|
||||
// var/obj/item/stack/new_item = O
|
||||
@@ -231,7 +232,7 @@
|
||||
//src = null //dont kill proc after del()
|
||||
usr.before_take_item(oldsrc)
|
||||
returnToPool(oldsrc)
|
||||
if (istype(O,/obj/item))
|
||||
if (put_in_hand && istype(O,/obj/item))
|
||||
usr.put_in_hands(O)
|
||||
O.add_fingerprint(usr)
|
||||
//BubbleWrap - so newly formed boxes are empty //This is pretty shitcode but I'm not fixing it because even if sloth is a sin I am already going to hell anyways
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
return 1
|
||||
|
||||
/datum/stack_recipe/proc/finish_building(var/mob/usr, var/obj/item/stack/S, var/R) //This will be called after the recipe is done building, useful for doing something to the result if you want.
|
||||
return
|
||||
return 1
|
||||
|
||||
//Recipe list datum
|
||||
/datum/stack_recipe_list
|
||||
@@ -86,34 +86,31 @@
|
||||
if(istype(S, /obj/item/stack/sheet/))
|
||||
var/obj/item/stack/sheet/SS = S
|
||||
mat = materials_list.getMaterial(SS.mat_type)
|
||||
if(mat)
|
||||
var/icon/original = icon(R.icon, R.icon_state)
|
||||
if(mat.color)
|
||||
original.ColorTone(mat.color)
|
||||
var/obj/item/I = R
|
||||
if(istype(I))
|
||||
var/icon/t_state
|
||||
for(var/hand in list("left_hand", "right_hand"))
|
||||
t_state = icon(I.inhand_states[hand], I.item_state)
|
||||
t_state.ColorTone(mat.color)
|
||||
I.inhand_states[hand] = t_state
|
||||
else if(mat.color_matrix)
|
||||
R.color = mat.color_matrix
|
||||
R.icon = original
|
||||
R.alpha = mat.alpha
|
||||
R.material_type = mat
|
||||
R.sheet_type = mat.sheettype
|
||||
//if(gen_quality)
|
||||
R.gen_quality()
|
||||
if(R.quality > SUPERIOR)
|
||||
R.gen_description()
|
||||
if(!findtext(lowertext(R.name), lowertext(mat.name)))
|
||||
R.name = "[R.quality == NORMAL ? "": "[lowertext(qualityByString[R.quality])] "][lowertext(mat.name)] [R.name]"
|
||||
else if(S.material_type)
|
||||
mat = S.material_type
|
||||
R.dorfify(mat)
|
||||
return 1
|
||||
|
||||
|
||||
/datum/stack_recipe/blacksmithing
|
||||
var/req_strikes = 15
|
||||
|
||||
/datum/stack_recipe/blacksmithing/New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1, time = 0, one_per_turf = 0, on_floor = 0, start_unanchored = 0, other_reqs = list(), inherit_material = FALSE, gen_quality = FALSE, required_strikes = 0)
|
||||
..()
|
||||
src.req_strikes = required_strikes
|
||||
|
||||
/datum/stack_recipe/blacksmithing/finish_building(mob/usr, var/obj/item/stack/S, var/obj/R)
|
||||
//Yeah nah let's put you in a blacksmith_placeholder
|
||||
var/obj/item/I = new /obj/item/smithing_placeholder(usr.loc,S, R, req_strikes)
|
||||
I.name = "unforged [R.name]"
|
||||
return 0
|
||||
|
||||
|
||||
var/list/datum/stack_recipe/metal_recipes = list (
|
||||
new/datum/stack_recipe("floor tile", /obj/item/stack/tile/plasteel, 1, 4, 60),
|
||||
new/datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60),
|
||||
new/datum/stack_recipe("conveyor belt", /obj/item/stack/conveyor_assembly, 2, 1, 20),
|
||||
new/datum/stack_recipe/dorf("chain", /obj/item/stack/chains, 2, 1, 20, 5, inherit_material = TRUE),
|
||||
null,
|
||||
new/datum/stack_recipe("computer frame", /obj/structure/computerframe, 5, time = 25, one_per_turf = 1 ),
|
||||
new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
@@ -135,7 +132,7 @@ var/list/datum/stack_recipe/metal_recipes = list (
|
||||
new/datum/stack_recipe/chair("chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1),
|
||||
new/datum/stack_recipe/chair("folding chair", /obj/structure/bed/chair/folding, one_per_turf = 1, on_floor = 1),
|
||||
new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = 1, on_floor = 1),
|
||||
new/datum/stack_recipe/dorf("dorf chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, inherit_material = TRUE),
|
||||
new/datum/stack_recipe/dorf("dorf chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE),
|
||||
)),
|
||||
new/datum/stack_recipe_list("couch parts", list(
|
||||
new/datum/stack_recipe/chair("beige couch left end", /obj/structure/bed/chair/comfy/couch/left/beige, 2, one_per_turf = 1, on_floor = 1),
|
||||
@@ -227,7 +224,11 @@ var/list/datum/stack_recipe/metal_recipes = list (
|
||||
null,
|
||||
new/datum/stack_recipe("iron door", /obj/machinery/door/mineral/iron, 20, one_per_turf = 1, on_floor = 1),
|
||||
new/datum/stack_recipe("stove", /obj/machinery/space_heater/campfire/stove, 5, time = 25, one_per_turf = 1, on_floor = 1),
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 4, time = 12, on_floor = 1, inherit_material = TRUE),
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 4, time = 12, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE),
|
||||
null,
|
||||
new/datum/stack_recipe/blacksmithing("hammer head", /obj/item/item_head/hammer_head, 4, time = 5 SECONDS, required_strikes = 6),
|
||||
new/datum/stack_recipe/blacksmithing("pickaxe head", /obj/item/item_head/pickaxe_head, 4, time = 5 SECONDS, required_strikes = 8),
|
||||
new/datum/stack_recipe/blacksmithing("sword blade", /obj/item/weapon/metal_blade, 8, time = 8 SECONDS, required_strikes = 13),
|
||||
)
|
||||
|
||||
/* ========================================================================
|
||||
@@ -243,7 +244,7 @@ var/list/datum/stack_recipe/plasteel_recipes = list (
|
||||
new/datum/stack_recipe("Fireaxe cabinet", /obj/item/mounted/frame/fireaxe_cabinet_frame, 2, time = 50 ),
|
||||
null,
|
||||
new/datum/stack_recipe("Vault Door assembly", /obj/structure/door_assembly/door_assembly_vault, 8, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
new/datum/stack_recipe/dorf("dorf chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, inherit_material = TRUE),
|
||||
new/datum/stack_recipe/dorf("dorf chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE),
|
||||
)
|
||||
|
||||
/* ====================================================================
|
||||
@@ -257,7 +258,7 @@ var/list/datum/stack_recipe/wood_recipes = list (
|
||||
null,
|
||||
new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts/wood, 2 ),
|
||||
new/datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood/normal, 1, time = 10, one_per_turf = 1, on_floor = 1),
|
||||
new/datum/stack_recipe/dorf("dorf chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, inherit_material = TRUE),
|
||||
new/datum/stack_recipe/dorf("dorf chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE),
|
||||
new/datum/stack_recipe("throne", /obj/structure/bed/chair/wood/throne, 40, time = 100, one_per_turf = 1, on_floor = 1),
|
||||
new/datum/stack_recipe("bookcase", /obj/structure/bookcase, 5, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
new/datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1),
|
||||
@@ -280,8 +281,9 @@ var/list/datum/stack_recipe/wood_recipes = list (
|
||||
null,
|
||||
new/datum/stack_recipe("boomerang", /obj/item/weapon/boomerang, 6, time = 50 ),
|
||||
new/datum/stack_recipe("buckler", /obj/item/weapon/shield/riot/buckler, 5, time = 50 ),
|
||||
new/datum/stack_recipe("item handle", /obj/item/item_handle, 1,2,20, time = 2 SECONDS ),
|
||||
new/datum/stack_recipe("wooden paddle", /obj/item/weapon/macuahuitl, 1, time = 50 ),
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 4, time = 12, on_floor = 1, inherit_material = TRUE)
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 4, time = 12, on_floor = 1, inherit_material = TRUE, gen_quality = TRUE)
|
||||
)
|
||||
|
||||
/* =========================================================================
|
||||
@@ -316,6 +318,7 @@ var/list/datum/stack_recipe/cardboard_recipes = list (
|
||||
R.name = "[L.source_string ? "[L.source_string]" : ""] [R.name]"
|
||||
else
|
||||
R.name = "[L.source_string ? "[L.source_string] leather " : ""] [R.name]"
|
||||
return 1
|
||||
|
||||
var/list/datum/stack_recipe/leather_recipes = list (
|
||||
new/datum/stack_recipe/leather("Bullwhip", /obj/item/weapon/bullwhip, 10, time = 100,),
|
||||
@@ -337,8 +340,8 @@ var/list/datum/stack_recipe/brass_recipes = list (
|
||||
new/datum/stack_recipe("brass full window", /obj/structure/window/full/reinforced/clockwork, 4, time = 20, one_per_turf = TRUE, on_floor = TRUE, other_reqs = list(/obj/item/stack/sheet/ralloy = 1)),
|
||||
new/datum/stack_recipe("brass table parts", /obj/item/weapon/table_parts/clockwork, 4),
|
||||
new/datum/stack_recipe("clockwork girders", /obj/structure/girder/clockwork, 3, time = 70, one_per_turf = TRUE, on_floor = TRUE, other_reqs = list(/obj/item/stack/sheet/ralloy = 3)),
|
||||
new/datum/stack_recipe/dorf("dorf chair", /obj/structure/bed/chair, one_per_turf = TRUE, on_floor = TRUE, inherit_material = TRUE),
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 4, time = 12, on_floor = TRUE, inherit_material = TRUE),
|
||||
new/datum/stack_recipe/dorf("dorf chair", /obj/structure/bed/chair, one_per_turf = TRUE, on_floor = TRUE, inherit_material = TRUE, gen_quality = TRUE),
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 4, time = 12, on_floor = TRUE, inherit_material = TRUE, gen_quality = TRUE),
|
||||
)
|
||||
|
||||
/* ========================================================================
|
||||
@@ -347,6 +350,6 @@ var/list/datum/stack_recipe/brass_recipes = list (
|
||||
|
||||
var/list/datum/stack_recipe/ralloy_recipes = list (
|
||||
new/datum/stack_recipe("replicant grille", /obj/structure/grille/replicant, 2, time = 10, one_per_turf = TRUE, on_floor = TRUE),
|
||||
new/datum/stack_recipe/dorf("dorf chair", /obj/structure/bed/chair, one_per_turf = TRUE, on_floor = TRUE, inherit_material = TRUE),
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 4, time = 12, on_floor = TRUE, inherit_material = TRUE),
|
||||
new/datum/stack_recipe/dorf("dorf chair", /obj/structure/bed/chair, one_per_turf = TRUE, on_floor = TRUE, inherit_material = TRUE, gen_quality = TRUE),
|
||||
new/datum/stack_recipe/dorf("training sword", /obj/item/weapon/melee/training_sword, 4, time = 12, on_floor = TRUE, inherit_material = TRUE, gen_quality = TRUE),
|
||||
)
|
||||
|
||||
@@ -466,3 +466,11 @@ obj/item/weapon/banhammer/admin
|
||||
// base_overlay.appearance = appearance
|
||||
// base_overlay.plane = FLOAT_PLANE
|
||||
// overlays += base_overlay
|
||||
|
||||
|
||||
/obj/item/weapon/hammer
|
||||
name = "smithing hammer"
|
||||
desc = "for those with a predeliction for applying concussive maintenance"
|
||||
icon_state = "hammer"
|
||||
force = 8
|
||||
hitsound = 'sound/weapons/toolbox.ogg'
|
||||
|
||||
@@ -223,10 +223,10 @@ var/global/list/reagents_to_log = list(FUEL, PLASMA, PACID, SACID, AMUTATIONTOXI
|
||||
/obj/proc/is_sharp()
|
||||
return sharpness
|
||||
|
||||
/obj/proc/is_hot() //This returns the temperature of the object if possible
|
||||
/obj/is_hot() //This returns the temperature of the object if possible
|
||||
return source_temperature
|
||||
|
||||
/obj/proc/thermal_energy_transfer()
|
||||
/obj/thermal_energy_transfer()
|
||||
if(is_hot())
|
||||
return heat_production
|
||||
return 0
|
||||
@@ -634,7 +634,7 @@ a {
|
||||
var/mob/M = loc
|
||||
M.regenerate_icons()
|
||||
|
||||
/obj/proc/gen_quality()
|
||||
/obj/proc/gen_quality(var/modifier = 0)
|
||||
var/material_mod = material_type ? material_type.quality_mod : 1
|
||||
var/turf/T = get_turf(src)
|
||||
var/surrounding_mod = 1
|
||||
@@ -642,7 +642,7 @@ a {
|
||||
for(var/obj/I in get_step(T, dir))
|
||||
if(I.quality > NORMAL || I.quality < NORMAL)
|
||||
surrounding_mod *= I.quality/rand(1,3)
|
||||
var/initial_quality = round((rand(1,3)*surrounding_mod)*material_mod)
|
||||
var/initial_quality = round(((rand(1,3)*surrounding_mod)*material_mod)+modifier)
|
||||
quality = Clamp(initial_quality, AWFUL, LEGENDARY)
|
||||
|
||||
/obj/proc/gen_description(mob/user)
|
||||
@@ -670,5 +670,29 @@ a {
|
||||
if(additional_description)
|
||||
desc = "[initial(desc)] \n [additional_description]"
|
||||
|
||||
/obj/proc/dorfify(var/datum/material/mat)
|
||||
if(mat)
|
||||
var/icon/original = icon(icon, icon_state)
|
||||
if(mat.color)
|
||||
original.ColorTone(mat.color)
|
||||
var/obj/item/I = src
|
||||
if(istype(I))
|
||||
var/icon/t_state
|
||||
for(var/hand in list("left_hand", "right_hand"))
|
||||
t_state = icon(I.inhand_states[hand], I.item_state)
|
||||
t_state.ColorTone(mat.color)
|
||||
I.inhand_states[hand] = t_state
|
||||
else if(mat.color_matrix)
|
||||
color = mat.color_matrix
|
||||
icon = original
|
||||
alpha = mat.alpha
|
||||
material_type = mat
|
||||
sheet_type = mat.sheettype
|
||||
gen_quality()
|
||||
if(quality > SUPERIOR)
|
||||
gen_description()
|
||||
if(!findtext(lowertext(name), lowertext(mat.name)))
|
||||
name = "[quality == NORMAL ? "": "[lowertext(qualityByString[quality])] "][lowertext(mat.name)] [name]"
|
||||
|
||||
/obj/proc/check_uplink_validity()
|
||||
return TRUE
|
||||
|
||||
@@ -264,4 +264,13 @@
|
||||
desc = "A fancy helmet for a fancy policeman."
|
||||
icon_state = "police_helmet"
|
||||
item_state = "police_helmet"
|
||||
body_parts_covered = HEAD
|
||||
body_parts_covered = HEAD
|
||||
|
||||
/obj/item/clothing/head/helmet/chainmail
|
||||
name = "chainmail coif"
|
||||
desc = "chains fashioned together to be a hood to wear over your head"
|
||||
icon_state = "chainmail_head"
|
||||
item_state = "chainmail_head"
|
||||
armor = list(melee = 10, bullet = 15, laser = 2,energy = 2, bomb = 2, bio = 2, rad = 0)
|
||||
flags = FPRINT
|
||||
siemens_coefficient = 1
|
||||
@@ -50,6 +50,13 @@
|
||||
icon_state = "nr_vest"
|
||||
item_state = "nr_vest"
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/chainmail
|
||||
name = "chainmail"
|
||||
desc = "A series of chains linked together in a way to look like a suit."
|
||||
icon_state = "chainmail_torso"
|
||||
item_state = "chainmail_torso"
|
||||
armor = list(melee = 20, bullet = 35, laser = 10, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/armor/riot
|
||||
name = "Riot Suit"
|
||||
desc = "A suit of armor with heavy padding to protect against melee attacks. Looks like it might impair movement."
|
||||
|
||||
@@ -136,6 +136,7 @@ var/global/list/initial_materials //Stores all the matids = 0 in helping New
|
||||
var/brunt_damage_mod = 1
|
||||
var/sharpness_mod = 1
|
||||
var/quality_mod = 1
|
||||
var/melt_temperature
|
||||
|
||||
/datum/material/New()
|
||||
if(processed_name=="")
|
||||
@@ -159,6 +160,7 @@ var/global/list/initial_materials //Stores all the matids = 0 in helping New
|
||||
brunt_damage_mod = 1.1
|
||||
sharpness_mod = 0.8
|
||||
quality_mod = 1.1
|
||||
melt_temperature = MELTPOINT_STEEL
|
||||
|
||||
/datum/material/glass
|
||||
name="Sand"
|
||||
@@ -172,6 +174,7 @@ var/global/list/initial_materials //Stores all the matids = 0 in helping New
|
||||
alpha = 122
|
||||
brunt_damage_mod = 0.7
|
||||
sharpness_mod = 1.4
|
||||
melt_temperature = MELTPOINT_GLASS
|
||||
|
||||
/datum/material/glass/on_use(obj/source)
|
||||
if(!..())
|
||||
@@ -195,6 +198,7 @@ var/global/list/initial_materials //Stores all the matids = 0 in helping New
|
||||
brunt_damage_mod = 1.4
|
||||
sharpness_mod = 1.6
|
||||
quality_mod = 2
|
||||
melt_temperature = MELTPOINT_CARBON
|
||||
|
||||
/datum/material/plasma
|
||||
name="Plasma"
|
||||
@@ -226,6 +230,7 @@ var/global/list/initial_materials //Stores all the matids = 0 in helping New
|
||||
brunt_damage_mod = 0.5
|
||||
sharpness_mod = 0.5
|
||||
quality_mod = 1.7
|
||||
melt_temperature = MELTPOINT_GOLD
|
||||
|
||||
/datum/material/silver
|
||||
name="Silver"
|
||||
@@ -238,6 +243,7 @@ var/global/list/initial_materials //Stores all the matids = 0 in helping New
|
||||
brunt_damage_mod = 0.7
|
||||
sharpness_mod = 0.7
|
||||
quality_mod = 1.5
|
||||
melt_temperature = MELTPOINT_SILVER
|
||||
|
||||
|
||||
/datum/material/uranium
|
||||
@@ -251,6 +257,7 @@ var/global/list/initial_materials //Stores all the matids = 0 in helping New
|
||||
brunt_damage_mod = 1.8
|
||||
sharpness_mod = 0.2
|
||||
quality_mod = 1.4
|
||||
melt_temperature = MELTPOINT_URANIUM
|
||||
|
||||
|
||||
/datum/material/uranium/on_use(obj/source, atom/target, mob/user)
|
||||
@@ -267,6 +274,7 @@ var/global/list/initial_materials //Stores all the matids = 0 in helping New
|
||||
oretype=/obj/item/weapon/ore/clown
|
||||
sheettype=/obj/item/stack/sheet/mineral/clown
|
||||
cointype=/obj/item/weapon/coin/clown
|
||||
melt_temperature = MELTPOINT_POTASSIUM
|
||||
|
||||
/datum/material/clown/New()
|
||||
if(!..())
|
||||
@@ -352,6 +360,7 @@ var/global/list/initial_materials //Stores all the matids = 0 in helping New
|
||||
cointype = null
|
||||
cc_per_sheet = CC_PER_SHEET_METAL
|
||||
color = "#A97F1B"
|
||||
melt_temperature = MELTPOINT_BRASS
|
||||
|
||||
/datum/material/ralloy
|
||||
name = "Replicant Alloy"
|
||||
|
||||
@@ -1321,7 +1321,7 @@ Thanks.
|
||||
if (!now_pushing)
|
||||
now_pushing = 1
|
||||
|
||||
if (!AM.anchored)
|
||||
if (!AM.anchored && AM.can_be_pushed(src))
|
||||
var/t = get_dir(src, AM)
|
||||
if(AM.flow_flags & ON_BORDER && !t)
|
||||
t = AM.dir
|
||||
|
||||
@@ -374,9 +374,8 @@ var/list/LOGGED_SPLASH_REAGENTS = list(FUEL, THERMITE)
|
||||
..()
|
||||
attempt_heating(I, user)
|
||||
|
||||
/obj/item/weapon/reagent_containers/proc/attempt_heating(obj/item/I, mob/user)
|
||||
var/temperature = I.is_hot()
|
||||
var/thermal_energy = I.thermal_energy_transfer()
|
||||
/obj/item/weapon/reagent_containers/attempt_heating(atom/A, mob/user)
|
||||
var/temperature = A.is_hot()
|
||||
if(temperature && reagents)
|
||||
reagents.heating(thermal_energy, temperature)
|
||||
to_chat(user, "<span class='notice'>You heat [src] with [I].</span>")
|
||||
reagents.heating(A.thermal_energy_transfer(), temperature)
|
||||
to_chat(user, "<span class='notice'>You heat \the [src] with \the [A].</span>")
|
||||
|
||||
|
Before Width: | Height: | Size: 255 KiB After Width: | Height: | Size: 255 KiB |
|
Before Width: | Height: | Size: 504 KiB After Width: | Height: | Size: 505 KiB |
|
Before Width: | Height: | Size: 378 B After Width: | Height: | Size: 998 B |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 166 KiB |
|
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 107 KiB |
BIN
icons/obj/misc_components.dmi
Normal file
|
After Width: | Height: | Size: 546 B |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
BIN
sound/items/hammer_strike.ogg
Normal file
@@ -728,7 +728,6 @@
|
||||
#include "code\game\objects\effects\spawners\gibspawner.dm"
|
||||
#include "code\game\objects\effects\spawners\vaultspawner.dm"
|
||||
#include "code\game\objects\items\airbag.dm"
|
||||
#include "code\game\objects\items\anvil.dm"
|
||||
#include "code\game\objects\items\ashtray.dm"
|
||||
#include "code\game\objects\items\beacon.dm"
|
||||
#include "code\game\objects\items\blueprints.dm"
|
||||
@@ -2381,6 +2380,10 @@
|
||||
#include "code\WorkInProgress\Cib\MedicalSideEffects.dm"
|
||||
#include "code\WorkInProgress\Cutelilduck\human_resources.dm"
|
||||
#include "code\WorkInProgress\kilakk\fax.dm"
|
||||
#include "code\WorkInProgress\MadmanMartian\blacksmithing\anvil.dm"
|
||||
#include "code\WorkInProgress\MadmanMartian\blacksmithing\blacksmithing.dm"
|
||||
#include "code\WorkInProgress\MadmanMartian\blacksmithing\forge.dm"
|
||||
#include "code\WorkInProgress\MadmanMartian\blacksmithing\misc_components.dm"
|
||||
#include "code\WorkInProgress\Mini\ATM.dm"
|
||||
#include "code\WorkInProgress\Mini\atmos_control.dm"
|
||||
#include "code\WorkInProgress\pomf\spacepods\actions.dm"
|
||||
|
||||