workies!!
This commit is contained in:
@@ -26,11 +26,12 @@
|
||||
anchored = TRUE
|
||||
var/workpiece_state = FALSE
|
||||
var/datum/material/workpiece_material
|
||||
var/anvilquality = 0
|
||||
var/qualitymod = 0
|
||||
var/currentquality = 0
|
||||
var/currentsteps = 0
|
||||
var/strengthstepcostmod = 1
|
||||
var/stepsdone = 0
|
||||
var/stepsdone = ""
|
||||
var/list/smithrecipes = list(RECIPE_AXE = /obj/item/smithing/axehead,
|
||||
RECIPE_HAMMER = /obj/item/smithing/hammerhead,
|
||||
RECIPE_SCYTHE = /obj/item/smithing/scytheblade,
|
||||
@@ -44,7 +45,9 @@
|
||||
RECIPE_BROADSWORD = /obj/item/smithing/broadblade,
|
||||
RECIPE_HALBERD = /obj/item/smithing/halberdhead)
|
||||
|
||||
|
||||
/obj/structure/anvil/Initialize()
|
||||
..()
|
||||
qualitymod = anvilquality
|
||||
|
||||
/obj/structure/anvil/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/ingot))
|
||||
@@ -64,8 +67,9 @@
|
||||
return
|
||||
else if(istype(I, /obj/item/melee/smith/hammer))
|
||||
var/obj/item/melee/smith/hammer/hammertime = I
|
||||
if(workpiece_state == WORKPIECE_PRESENT || WORKPIECE_INPROGRESS)
|
||||
if(workpiece_state == WORKPIECE_PRESENT || workpiece_state == WORKPIECE_INPROGRESS)
|
||||
do_shaping(user, hammertime.qualitymod)
|
||||
return
|
||||
else
|
||||
to_chat(user, "You can't work an empty anvil!")
|
||||
return FALSE
|
||||
@@ -119,24 +123,38 @@
|
||||
stepsdone += "u"
|
||||
currentsteps += 1
|
||||
qualitymod -= 2
|
||||
to_chat(user, "You [stepdone] the metal.")
|
||||
currentquality += qualitymod
|
||||
to_chat(user, stepsdone)
|
||||
if(length(stepsdone) >= 3)
|
||||
if(currentsteps > STEPS_CAP)
|
||||
to_chat(user, "You overwork the metal, causing it to turn into useless slag!")
|
||||
tryfinish(user)
|
||||
|
||||
/obj/structure/anvil/proc/tryfinish(mob/user)
|
||||
if(currentsteps > STEPS_CAP)
|
||||
to_chat(user, "You overwork the metal, causing it to turn into useless slag!")
|
||||
var/turf/T = get_turf(user)
|
||||
workpiece_state = FALSE
|
||||
new /obj/item/stack/ore/slag(T)
|
||||
currentquality = 0
|
||||
qualitymod = anvilquality
|
||||
stepsdone = ""
|
||||
currentsteps = 0
|
||||
for(var/i in smithrecipes)
|
||||
to_chat(user, "comparing [i] to [stepsdone]")
|
||||
if(i == stepsdone)
|
||||
var/turf/T = get_turf(user)
|
||||
var/obj/item/smithing/create = smithrecipes[stepsdone]
|
||||
var/obj/item/smithing/finisheditem = new create(T)
|
||||
to_chat(user, "You finish your [finisheditem]!")
|
||||
workpiece_state = FALSE
|
||||
new /obj/item/stack/ore/slag(T)
|
||||
finisheditem.quality = currentquality
|
||||
finisheditem.set_custom_materials(workpiece_material)
|
||||
currentquality = qualitymod
|
||||
for(var/solutions in smithrecipes)
|
||||
if(!solutions == stepsdone)
|
||||
return FALSE
|
||||
else
|
||||
var/obj/item/smithing/finisheditem = smithrecipes[stepsdone]
|
||||
var/turf/T = get_turf(user)
|
||||
workpiece_state = FALSE
|
||||
finisheditem.set_custom_materials(workpiece_material)
|
||||
to_chat(user, "You finish your [finisheditem]!")
|
||||
new finisheditem(T)
|
||||
currentquality = qualitymod
|
||||
qualitymod = anvilquality
|
||||
stepsdone = ""
|
||||
currentsteps = 0
|
||||
break
|
||||
|
||||
|
||||
#undef WORKPIECE_PRESENT
|
||||
#undef WORKPIECE_INPROGRESS
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
icon_state = "mace_greyscale"
|
||||
item_state = "mace_greyscale"
|
||||
material_flags = MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
|
||||
force = 10
|
||||
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
|
||||
var/quality
|
||||
@@ -12,13 +13,26 @@
|
||||
|
||||
|
||||
/obj/item/melee/smith/Initialize()
|
||||
..()
|
||||
desc = "A handmade [name]."
|
||||
. = ..()
|
||||
overlay = mutable_appearance(icon, overlay_state)
|
||||
overlay.appearance_flags = RESET_COLOR
|
||||
add_overlay(overlay)
|
||||
if(force < 0)
|
||||
force = 0
|
||||
|
||||
|
||||
/obj/item/melee/smith/twohand
|
||||
var/wielded_mult = 1.75
|
||||
|
||||
|
||||
/obj/item/melee/smith/twohand/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/butchering, 100, 70) //decent in a pinch, but pretty bad.
|
||||
AddComponent(/datum/component/jousting)
|
||||
AddElement(/datum/element/sword_point)
|
||||
var/fw = force*wielded_mult
|
||||
AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=fw, icon_wielded="[icon_state]_wield")
|
||||
|
||||
|
||||
///////////////////////////
|
||||
@@ -51,13 +65,21 @@
|
||||
///////////////////////////
|
||||
|
||||
|
||||
/obj/item/melee/smith/halberd
|
||||
|
||||
|
||||
/obj/item/melee/smith/javelin
|
||||
/obj/item/melee/smith/twohand/halberd
|
||||
name = "halberd"
|
||||
|
||||
/obj/item/melee/smith/twohand/halberd/Initialize()
|
||||
..()
|
||||
throwforce = force/3
|
||||
|
||||
|
||||
/obj/item/melee/smith/twohand/javelin
|
||||
name = "javelin"
|
||||
wielded_mult = 1.5
|
||||
|
||||
/obj/item/melee/smith/twohand/javelin/Initialize()
|
||||
..()
|
||||
throwforce = force*2
|
||||
|
||||
|
||||
//////////////////////////
|
||||
@@ -65,14 +87,23 @@
|
||||
///////////////////////////
|
||||
|
||||
/obj/item/melee/smith/axe
|
||||
name = "axe"
|
||||
|
||||
/obj/item/melee/smith/hammer//blacksmithing, not warhammer.
|
||||
name = "hammer"
|
||||
var/qualitymod = 0
|
||||
|
||||
/obj/item/scythe/smithed //we need to inherit scythecode
|
||||
/obj/item/scythe/smithed //we need to inherit scythecode, but that's about it.
|
||||
material_flags = MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
|
||||
|
||||
|
||||
/obj/item/melee/smith/cogheadclub
|
||||
name = "coghead club"
|
||||
|
||||
/obj/item/melee/smith/shortsword
|
||||
name = "shortsword"
|
||||
|
||||
/obj/item/melee/smith/shortsword
|
||||
/obj/item/melee/smith/twohand/broadsword
|
||||
name = "broadsword"
|
||||
force = 15
|
||||
wielded_mult = 1.8
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/item/smithing
|
||||
name = "base class /obj/item/smithing"
|
||||
icon = 'icons/obj/smith.dmi'
|
||||
@@ -5,7 +9,7 @@
|
||||
material_flags = MATERIAL_COLOR | MATERIAL_ADD_PREFIX
|
||||
var/quality = 0 //quality. Changed by the smithing process.
|
||||
var/obj/item/finishingitem = /obj/item/stick //What this item needs to be hit by to create finalitem
|
||||
var/obj/item/finalitem = /obj/item/melee/smith
|
||||
var/obj/item/finalitem
|
||||
|
||||
/obj/item/ingot
|
||||
name = "ingot"
|
||||
@@ -18,20 +22,22 @@
|
||||
custom_materials = list(/datum/material/iron=12000)
|
||||
|
||||
/obj/item/smithing/Initialize()
|
||||
..()
|
||||
desc = "A [src]. Hit it with a [finishingitem] to create a [finalitem]."
|
||||
|
||||
|
||||
/obj/item/smithing/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, finishingitem))
|
||||
to_chat(user, "You finish the [src].")
|
||||
qdel(I)
|
||||
dofinish()
|
||||
startfinish()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/smithing/proc/startfinish()
|
||||
dofinish()
|
||||
|
||||
/obj/item/smithing/proc/dofinish()
|
||||
var/turf/T = get_turf(src)
|
||||
. = new finalitem(T)
|
||||
finalitem.set_custom_materials(custom_materials)
|
||||
visible_message("The finishing of [src].")
|
||||
var/qualname
|
||||
switch(quality)
|
||||
if(-1000 to -5)
|
||||
@@ -54,33 +60,39 @@
|
||||
qualname = "above-average"
|
||||
var/datum/material/mat = custom_materials[1]
|
||||
mat = mat.name
|
||||
finalitem.name = "[qualname] [mat] [finalitem.name]."
|
||||
finalitem.name = "[qualname] [mat] [finalitem.name]"
|
||||
finalitem.forceMove(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/smithing/axehead
|
||||
name = "smithed axe head"
|
||||
finalitem = /obj/item/melee/smith/axe
|
||||
|
||||
/obj/item/smithing/axehead/dofinish()
|
||||
/obj/item/smithing/axehead/startfinish()
|
||||
finalitem = new /obj/item/melee/smith/axe(src)
|
||||
finalitem.force += quality
|
||||
..()
|
||||
|
||||
/obj/item/smithing/hammerhead
|
||||
name = "smithed hammer head"
|
||||
var/obj/item/melee/smith/hammer/finalforreal = /obj/item/melee/smith/hammer
|
||||
finalitem = /obj/item/melee/smith/hammer
|
||||
|
||||
/obj/item/smithing/hammerhead/dofinish()
|
||||
/obj/item/smithing/hammerhead/startfinish()
|
||||
var/obj/item/melee/smith/hammer/finalforreal = new /obj/item/melee/smith/hammer(src)
|
||||
finalforreal.force += quality/2
|
||||
finalforreal.qualitymod = quality/4
|
||||
finalitem = finalforreal
|
||||
..()
|
||||
|
||||
|
||||
|
||||
/obj/item/smithing/scytheblade
|
||||
name = "smithed scythe head"
|
||||
finalitem = /obj/item/scythe/smithed
|
||||
|
||||
/obj/item/smithing/scytheblade/dofinish()
|
||||
/obj/item/smithing/scytheblade/startfinish()
|
||||
finalitem = new /obj/item/scythe/smithed(src)
|
||||
finalitem.force += quality
|
||||
..()
|
||||
|
||||
@@ -88,16 +100,19 @@
|
||||
name = "smithed shovel head"
|
||||
finalitem = /obj/item/shovel/smithed
|
||||
|
||||
/obj/item/smithing/shovelhead/dofinish()
|
||||
/obj/item/smithing/shovelhead/startfinish()
|
||||
finalitem = new /obj/item/shovel/smithed(src)
|
||||
finalitem.force += quality/2
|
||||
finalitem.toolspeed /= quality
|
||||
if(quality)
|
||||
finalitem.toolspeed /= quality
|
||||
..()
|
||||
|
||||
/obj/item/smithing/cogheadclubhead
|
||||
name = "smithed coghead club head"
|
||||
finalitem = /obj/item/melee/smith/cogheadclub
|
||||
|
||||
/obj/item/smithing/cogheadclubhead/dofinish()
|
||||
/obj/item/smithing/cogheadclubhead/startfinish()
|
||||
finalitem = new /obj/item/melee/smith/cogheadclub(src)
|
||||
finalitem.force += quality
|
||||
..()
|
||||
|
||||
@@ -105,17 +120,21 @@
|
||||
name = "smithed javelin head"
|
||||
finalitem = /obj/item/melee/smith/javelin
|
||||
|
||||
/obj/item/smithing/javelinhead/dofinish()
|
||||
/obj/item/smithing/javelinhead/startfinish()
|
||||
finalitem = new /obj/item/melee/smith/javelin(src)
|
||||
finalitem.force += quality
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/smithing/pickaxehead
|
||||
name = "smithed pickaxe head"
|
||||
var/obj/item/pickaxe/smithed/finalforreal = /obj/item/pickaxe/smithed
|
||||
finalitem = /obj/item/pickaxe/smithed
|
||||
|
||||
/obj/item/smithing/pickaxehead/dofinish()
|
||||
/obj/item/smithing/pickaxehead/startfinish()
|
||||
var/obj/item/pickaxe/smithed/finalforreal = new /obj/item/pickaxe/smithed(src)
|
||||
finalforreal.force += quality/2
|
||||
finalforreal.toolspeed /= quality
|
||||
if(quality)
|
||||
finalforreal.toolspeed /= quality
|
||||
switch(quality)
|
||||
if(10 to INFINITY)
|
||||
finalforreal.digrange = 4
|
||||
@@ -126,22 +145,27 @@
|
||||
finalitem = finalforreal
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/smithing/prospectingpickhead
|
||||
name = "smithed prospector's pickaxe head"
|
||||
var/obj/item/mining_scanner/prospector/finalforreal = /obj/item/mining_scanner/prospector
|
||||
finalitem = /obj/item/mining_scanner/prospector
|
||||
|
||||
/obj/item/smithing/prospectingpickhead/dofinish()
|
||||
/obj/item/smithing/prospectingpickhead/startfinish()
|
||||
var/obj/item/mining_scanner/prospector/finalforreal = new /obj/item/mining_scanner/prospector(src)
|
||||
finalforreal.range = 2 + quality
|
||||
finalforreal.cooldown = 100/quality
|
||||
if(quality)
|
||||
finalforreal.cooldown = 100/quality
|
||||
finalitem = finalforreal
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/smithing/shortswordblade
|
||||
name = "smithed shortsword blade"
|
||||
finishingitem = /obj/item/swordhandle
|
||||
finalitem = /obj/item/melee/smith/shortsword
|
||||
|
||||
/obj/item/smithing/shortswordblade/dofinish()
|
||||
/obj/item/smithing/shortswordblade/startfinish()
|
||||
finalitem = new /obj/item/melee/smith/shortsword(src)
|
||||
finalitem.force += quality
|
||||
..()
|
||||
|
||||
@@ -150,16 +174,18 @@
|
||||
finishingitem = /obj/item/swordhandle
|
||||
finalitem = /obj/item/kitchen/knife
|
||||
|
||||
/obj/item/smithing/knifehead/dofinish()
|
||||
/obj/item/smithing/knifehead/startfinish()
|
||||
finalitem = new /obj/item/kitchen/knife(src)
|
||||
finalitem.force += quality/2
|
||||
..()
|
||||
|
||||
/obj/item/smithing/broadblade
|
||||
name = "smithed broadsword blade"
|
||||
finishingitem = /obj/item/swordhandle
|
||||
finalitem = /obj/item/melee/smith/shortsword
|
||||
finalitem = /obj/item/melee/smith/broadsword
|
||||
|
||||
/obj/item/smithing/broadblade/dofinish()
|
||||
/obj/item/smithing/broadblade/startfinish()
|
||||
finalitem = new /obj/item/melee/smith/broadsword(src)
|
||||
finalitem.force += quality
|
||||
..()
|
||||
|
||||
@@ -167,7 +193,8 @@
|
||||
name = "smithed halberd head"
|
||||
finalitem = /obj/item/melee/smith/halberd
|
||||
|
||||
/obj/item/smithing/halberdhead/dofinish()
|
||||
/obj/item/smithing/halberdhead/startfinish()
|
||||
finalitem = new /obj/item/melee/smith/halberd(src)
|
||||
finalitem.force += quality
|
||||
..()
|
||||
|
||||
@@ -182,4 +209,4 @@
|
||||
name = "sword handle"
|
||||
desc = "It's a rod, suitable for use of a handle of a tool. Also could serve as a weapon, in a pinch."
|
||||
icon = 'icons/obj/smith.dmi'
|
||||
icon_state = "stick"
|
||||
icon_state = "stick"
|
||||
|
||||
Reference in New Issue
Block a user