Rebalancing and adjusting divisors for all weapon damage values.

This commit is contained in:
Zuhayr
2015-05-17 16:28:03 +09:30
parent a540e97e1b
commit ed34aa2466
16 changed files with 98 additions and 151 deletions

View File

@@ -37,7 +37,7 @@ var/datum/antagonist/highlander/highlanders
player.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(player), slot_w_uniform)
player.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(player), slot_l_ear)
player.equip_to_slot_or_del(new /obj/item/clothing/head/beret(player), slot_head)
player.equip_to_slot_or_del(new /obj/item/weapon/material/claymore(player), slot_l_hand)
player.equip_to_slot_or_del(new /obj/item/weapon/material/sword(player), slot_l_hand)
player.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(player), slot_shoes)
player.equip_to_slot_or_del(new /obj/item/weapon/pinpointer(get_turf(player)), slot_l_store)

View File

@@ -21,7 +21,7 @@
new /obj/item/weapon/book/tome(loc)
..()
/obj/item/weapon/material/claymore/cultify()
/obj/item/weapon/material/sword/cultify()
new /obj/item/weapon/melee/cultblade(loc)
..()

View File

@@ -4,18 +4,12 @@
icon_state = "metalbat0"
base_icon = "metalbat"
item_state = "metalbat"
sharp = 0
edge = 0
w_class = 3
force = 10
throw_speed = 3
throw_range = 7
throwforce = 7
attack_verb = list("smashed", "beaten", "slammed", "smacked", "struck", "battered", "bonked")
hitsound = 'sound/weapons/genhit3.ogg'
force_wielded = 20
health = 10
default_material = "wood"
force_divisor = 1.35 // 27 when wielded with weight 20 (steel)
unwielded_force_divisor = 0.7 // 18 when unwielded based on above.
//Predefined materials go here.
/obj/item/weapon/material/twohanded/baseballbat/metal/New(var/newloc)

View File

@@ -5,15 +5,14 @@
* Utensils
*/
/obj/item/weapon/material/kitchen/utensil
force = 5
w_class = 1
throwforce = 5
throw_speed = 3
throw_range = 5
flags = CONDUCT
thrown_force_divisor = 1
origin_tech = "materials=1"
attack_verb = list("attacked", "stabbed", "poked")
sharp = 0
sharp = 1
edge = 1
force_divisor = 0.1 // 6 when wielded with hardness 60 (steel)
thrown_force_divisor = 0.25 // 5 when thrown with weight 20 (steel)
var/loaded //Descriptive string for currently loaded food object.
/obj/item/weapon/material/kitchen/utensil/New()
@@ -60,6 +59,9 @@
desc = "It's a spoon. You can see your own upside-down face in it."
icon_state = "spoon"
attack_verb = list("attacked", "poked")
edge = 0
sharp = 0
force_divisor = 0.25 //5 when wielded with weight 20 (steel)
/obj/item/weapon/material/kitchen/utensil/spoon/plastic
default_material = "plastic"
@@ -71,23 +73,13 @@
name = "knife"
desc = "Can cut through any food."
icon_state = "knife"
force = 10.0
throwforce = 10.0
sharp = 1
edge = 1
/obj/item/weapon/material/kitchen/utensil/knife/suicide_act(mob/user)
viewers(user) << pick("\red <b>[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.</b>", \
"\red <b>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</b>")
return (BRUTELOSS)
force_divisor = 0.2 // 12 when wielded with hardness 60 (steel)
/obj/item/weapon/material/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob)
if ((CLUMSY in user.mutations) && prob(50))
user << "\red You accidentally cut yourself with the [src]."
user.take_organ_damage(20)
return
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return ..()
/obj/item/weapon/material/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob)
@@ -95,7 +87,6 @@
user << "\red You somehow managed to cut yourself with the [src]."
user.take_organ_damage(20)
return
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return ..()
/obj/item/weapon/material/kitchen/utensil/knife/plastic
@@ -109,13 +100,10 @@
name = "rolling pin"
desc = "Used to knock out the Bartender."
icon_state = "rolling_pin"
force = 8.0
throwforce = 10.0
throw_speed = 2
throw_range = 7
w_class = 3.0
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") //I think the rollingpin attackby will end up ignoring this anyway.
default_material = "wood"
force_divisor = 0.7 // 10 when wielded with weight 15 (wood)
thrown_force_divisor = 1 // as above
/obj/item/weapon/material/kitchen/rollingpin/attack(mob/living/M as mob, mob/living/user as mob)
if ((CLUMSY in user.mutations) && prob(50))
@@ -123,30 +111,4 @@
user.take_organ_damage(10)
user.Paralyse(2)
return
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
msg_admin_attack("[user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
var/t = user:zone_sel.selecting
if (t == "head")
if(ishuman(M))
var/mob/living/carbon/human/H = M
if (H.stat < 2 && H.health < 50 && prob(90))
// ******* Check
if (istype(H, /obj/item/clothing/head) && H.flags & 8 && prob(80))
H << "\red The helmet protects you from being hit hard in the head!"
return
var/time = rand(2, 6)
if (prob(75))
H.Paralyse(time)
else
H.Stun(time)
if(H.stat != 2) H.stat = 1
user.visible_message("\red <B>[H] has been knocked unconscious!</B>", "\red <B>You knock [H] unconscious!</B>")
return
else
H.visible_message("\red [user] tried to knock [H] unconscious!", "\red [user] tried to knock you unconscious!")
H.eye_blurry += 3
return ..()

View File

@@ -6,20 +6,16 @@
hitsound = null
var/active = 0
w_class = 2
force = 2
sharp = 0
edge = 0
throw_speed = 3
throw_range = 4
throwforce = 7
attack_verb = list("patted", "tapped")
force_divisor = 0.25 // 15 when wielded with hardness 60 (steel)
thrown_force_divisor = 0.25 // 5 when thrown with weight 20 (steel)
/obj/item/weapon/material/butterfly/update_force()
if(active)
..() //Updates force.
throwforce = max(3,force-3)
edge = 1
sharp = 1
..() //Updates force.
throwforce = max(3,force-3)
hitsound = initial(hitsound)
icon_state += "_open"
w_class = 3
@@ -60,11 +56,7 @@
flags = CONDUCT
sharp = 1
edge = 1
force = 10
w_class = 3
throwforce = 8
throw_speed = 3
throw_range = 6
force_divisor = 0.15 // 9 when wielded with hardness 60 (steel)
matter = list(DEFAULT_WALL_MATERIAL = 12000)
origin_tech = "materials=1"
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
@@ -94,5 +86,5 @@
icon = 'icons/obj/kitchen.dmi'
icon_state = "butch"
desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products."
force = 15
force_divisor = 0.25 // 15 when wielded with hardness 60 (steel)
attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")

View File

@@ -2,10 +2,16 @@
health = 10
hitsound = 'sound/weapons/bladeslice.ogg'
gender = NEUTER
throw_speed = 3
throw_range = 7
w_class = 3
sharp = 0
edge = 0
var/applies_material_colour = 1
var/unbreakable
var/damage_divisor = 0.5
var/force_divisor = 0.5
var/thrown_force_divisor = 0.5
var/default_material = DEFAULT_WALL_MATERIAL
var/material/material
@@ -16,7 +22,14 @@
set_material(material_key)
/obj/item/weapon/material/proc/update_force()
force = round(material.get_blunt_damage()*damage_divisor)
if(edge || sharp)
force = material.get_edge_damage()
else
force = material.get_blunt_damage()
force = round(force*force_divisor)
throwforce = round(material.get_blunt_damage()*thrown_force_divisor)
//spawn(1)
// world << "[src] has force [force] and throwforce [throwforce] when made from default material [material.name]"
/obj/item/weapon/material/proc/set_material(var/new_material)
material = get_material_by_name(new_material)

View File

@@ -1,13 +1,11 @@
/obj/item/weapon/material/harpoon
name = "harpoon"
sharp = 1
edge = 0
edge = 1
desc = "Tharr she blows!"
icon_state = "harpoon"
item_state = "harpoon"
force = 20
throwforce = 15
w_class = 3
force_divisor = 0.3 // 18 with hardness 60 (steel)
attack_verb = list("jabbed","stabbed","ripped")
/obj/item/weapon/material/hatchet
@@ -15,15 +13,11 @@
desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood."
icon = 'icons/obj/weapons.dmi'
icon_state = "hatchet"
flags = CONDUCT
force = 12.0
force_divisor = 0.2 // 12 with hardness 60 (steel)
thrown_force_divisor = 0.75 // 15 with weight 20 (steel)
w_class = 2
throwforce = 15
throw_speed = 4
throw_range = 4
sharp = 1
edge = 1
matter = list(DEFAULT_WALL_MATERIAL = 15000)
origin_tech = "materials=2;combat=1"
attack_verb = list("chopped", "torn", "cut")
applies_material_colour = 0
@@ -34,7 +28,6 @@
icon = 'icons/obj/weapons.dmi'
icon_state = "unathiknife"
attack_verb = list("ripped", "torn", "cut")
default_material = "bone"
/obj/item/weapon/material/hatchet/tacknife
name = "tactical knife"
@@ -52,18 +45,19 @@
icon_state = "hoe"
item_state = "hoe"
flags = CONDUCT | NOBLUDGEON
force = 5
throwforce = 7
force_divisor = 0.25 // 5 with weight 20 (steel)
thrown_force_divisor = 0.25 // as above
w_class = 2
matter = list(DEFAULT_WALL_MATERIAL = 50)
attack_verb = list("slashed", "sliced", "cut", "clawed")
/obj/item/weapon/material/scythe
icon_state = "scythe0"
name = "scythe"
desc = "A sharp and curved blade on a long fibremetal handle, this tool makes it easy to reap what you sow."
force = 13
throwforce = 5
force_divisor = 0.275 // 16 with hardness 60 (steel)
thrown_force_divisor = 0.25 // 5 with weight 20 (steel)
sharp = 1
edge = 1
throw_speed = 1
throw_range = 3
w_class = 4

View File

@@ -3,18 +3,17 @@
/obj/item/weapon/material/shard
name = "shard"
icon = 'icons/obj/shards.dmi'
desc = "Made of nothing. How does this even exist?" // set based on material, if this desc is visible it's a bug (shards default to being made of glass)
icon_state = "large"
sharp = 1
edge = 1
desc = "Made of nothing. How does this even exist?" // set based on material, if this desc is visible it's a bug (shards default to being made of glass)
w_class = 2
force = 5
throwforce = 8
force_divisor = 0.2 // 6 with hardness 30 (glass)
thrown_force_divisor = 0.4 // 4 with weight 15 (glass)
item_state = "shard-glass"
attack_verb = list("stabbed", "slashed", "sliced", "cut")
default_material = "glass"
unbreakable = 1 //It's already broken.
damage_divisor = 0.1 //So tiny.
/obj/item/weapon/material/shard/suicide_act(mob/user)
viewers(user) << pick("\red <b>[user] is slitting \his wrists with \the [src]! It looks like \he's trying to commit suicide.</b>", \
@@ -42,7 +41,6 @@
else
qdel(src)
/obj/item/weapon/material/shard/update_icon()
if(material)
color = material.icon_colour

View File

@@ -1,43 +1,30 @@
/obj/item/weapon/material/claymore
/obj/item/weapon/material/sword
name = "claymore"
desc = "What are you standing around staring at this for? Get to killing!"
icon_state = "claymore"
item_state = "claymore"
flags = CONDUCT
slot_flags = SLOT_BELT
force = 40
throwforce = 10
force_divisor = 0.7 // 42 when wielded with hardnes 60 (steel)
thrown_force_divisor = 0.5 // 10 when thrown with weight 20 (steel)
sharp = 1
edge = 1
w_class = 3
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
/obj/item/weapon/material/claymore/IsShield()
/obj/item/weapon/material/sword/IsShield()
return 1
/obj/item/weapon/material/claymore/suicide_act(mob/user)
/obj/item/weapon/material/sword/suicide_act(mob/user)
viewers(user) << "<span class='danger'>[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.</span>"
return(BRUTELOSS)
/obj/item/weapon/material/katana
/obj/item/weapon/material/sword/katana
name = "katana"
desc = "Woefully underpowered in D20"
icon_state = "katana"
item_state = "katana"
flags = CONDUCT
slot_flags = SLOT_BELT | SLOT_BACK
force = 40
throwforce = 10
sharp = 1
edge = 1
w_class = 3
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
/obj/item/weapon/material/katana/suicide_act(mob/user)
/obj/item/weapon/material/sword/katana/suicide_act(mob/user)
viewers(user) << "<span class='danger'>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</span>"
return(BRUTELOSS)
/obj/item/weapon/material/katana/IsShield()
return 1

View File

@@ -2,13 +2,12 @@
name = "shuriken"
desc = "A sharp, perfectly weighted piece of metal."
icon_state = "star"
force = 5
force_divisor = 0.1 // 6 with hardness 60 (steel)
thrown_force_divisor = 0.75 // 15 with weight 20 (steel)
throw_speed = 10
throwforce = 15
throw_range = 15
sharp = 1
edge = 1
matter = list(DEFAULT_WALL_MATERIAL = 500)
/obj/item/weapon/material/star/New()
..()

View File

@@ -17,6 +17,7 @@
* Twohanded
*/
/obj/item/weapon/material/twohanded
w_class = 4
var/wielded = 0
var/force_wielded = 0
var/force_unwielded
@@ -24,6 +25,7 @@
var/unwieldsound = null
var/base_icon
var/base_name
var/unwielded_force_divisor = 0.25
/obj/item/weapon/material/twohanded/proc/unwield()
wielded = 0
@@ -39,8 +41,15 @@
/obj/item/weapon/material/twohanded/update_force()
base_name = name
force_unwielded = force
force_wielded = material.get_blunt_damage()
if(sharp || edge)
force_wielded = material.get_edge_damage()
else
force_wielded = material.get_blunt_damage()
force_wielded = round(force_wielded*force_divisor)
force_unwielded = round(force_wielded*unwielded_force_divisor)
force = force_unwielded
throwforce = round(force*thrown_force_divisor)
//world << "[src] has unwielded force [force_unwielded], wielded force [force_wielded] and throwforce [throwforce] when made from default material [material.name]"
/obj/item/weapon/material/twohanded/New()
..()
@@ -51,7 +60,6 @@
if(wielded)
M << "<span class='warning'>Unwield the [base_name] first!</span>"
return 0
return ..()
/obj/item/weapon/material/twohanded/dropped(mob/user as mob)
@@ -114,7 +122,7 @@
///////////OFFHAND///////////////
/obj/item/weapon/material/twohanded/offhand
w_class = 5.0
w_class = 5
icon_state = "offhand"
name = "offhand"
default_material = "placeholder"
@@ -136,12 +144,11 @@
base_icon = "fireaxe"
name = "fire axe"
desc = "Truly, the weapon of a madman. Who would think to fight fire with an axe?"
force = 15
unwielded_force_divisor = 0.25
force_divisor = 0.7 // 10/42 with hardness 60 (steel) and 0.25 unwielded divisor
sharp = 1
edge = 1
w_class = 4.0
slot_flags = SLOT_BACK
force_wielded = 30
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
applies_material_colour = 0
@@ -153,9 +160,12 @@
var/obj/structure/window/W = A
W.shatter()
/*
/*
* Double-Bladed Energy Swords - Cheridan
*/
// Not sure what to do with this one, it won't work nicely with the material system,
// but I don't want to copypaste all the twohanded procs..
/obj/item/weapon/material/twohanded/dualsaber
icon_state = "dualsaber0"
base_icon = "dualsaber"
@@ -193,6 +203,7 @@
return 1
else
return 0
*/
//spears, bay edition
/obj/item/weapon/material/twohanded/spear
@@ -200,13 +211,12 @@
base_icon = "spearglass"
name = "spear"
desc = "A haphazardly-constructed yet still deadly weapon of ancient design."
force = 10
w_class = 4.0
slot_flags = SLOT_BACK
force_wielded = 22 // Was 13, Buffed - RR
throwforce = 20
force_wielded = 0.75 // 22 when wielded with hardness 15 (glass)
unwielded_force_divisor = 0.65 // 14 when unwielded based on above
thrown_force_divisor = 1.5 // 20 when thrown with weight 15 (glass)
throw_speed = 3
edge = 0
edge = 1
sharp = 1
flags = NOSHIELD
hitsound = 'sound/weapons/bladeslice.ogg'

View File

@@ -17,7 +17,7 @@
can_buckle = 1
buckle_lying = 1
var/material/material
var/apply_cosmentics = 1
var/apply_cosmetics = 1
/obj/structure/bed/New(var/newloc, var/new_material)
..(newloc)
@@ -28,7 +28,7 @@
if(!istype(material))
qdel(src)
return
if(apply_cosmentics)
if(apply_cosmetics)
color = material.icon_colour
name = "[material.display_name] [initial(name)]"
desc = "[initial(desc)] It's made of [material.display_name]."
@@ -73,7 +73,7 @@
name = "psychiatrist's couch"
desc = "For prime comfort during psychiatric evaluations."
icon_state = "psychbed"
apply_cosmentics = 0
apply_cosmetics = 0
/obj/structure/bed/psych/New(var/newloc)
..(newloc,"leather")
@@ -82,7 +82,7 @@
name = "resting contraption"
desc = "This looks similar to contraptions from earth. Could aliens be stealing our technology?"
icon_state = "abed"
apply_cosmentics = 0
apply_cosmetics = 0
/obj/structure/bed/alien/New(var/newloc)
@@ -96,7 +96,7 @@
icon = 'icons/obj/rollerbed.dmi'
icon_state = "down"
anchored = 0
apply_cosmentics = 0
apply_cosmetics = 0
/obj/structure/bed/roller/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/roller_holder))

View File

@@ -70,7 +70,7 @@
icon_state = "wooden_chair"
name = "wooden chair"
desc = "Old is never too old to not be in fashion."
apply_cosmentics = 0
apply_cosmetics = 0
/obj/structure/bed/chair/wood/New(var/newloc)
..(newloc, "wood")
@@ -84,7 +84,7 @@
icon_state = "comfychair"
color = rgb(255,255,255)
var/image/armrest = null
apply_cosmentics = 0
apply_cosmetics = 0
/obj/structure/bed/chair/comfy/New()
armrest = image("icons/obj/objects.dmi", "comfychair_armrest")
@@ -125,7 +125,7 @@
/obj/structure/bed/chair/office
anchored = 0
buckle_movable = 1
apply_cosmentics = 0
apply_cosmetics = 0
/obj/structure/bed/chair/comfy/lime
color = rgb(255,251,0)

View File

@@ -75,12 +75,12 @@ var/list/name_to_material
/material/proc/get_blunt_damage()
return weight //todo
/material/proc/get_edge_damage()
return hardness //todo
/material/proc/can_open_material_door(var/mob/living/user)
return 1
/material/proc/get_edge_damage()
return round(hardness/4) //todo
/material/proc/products_need_process()
return (radioactivity>0) //todo
@@ -213,7 +213,7 @@ var/list/name_to_material
integrity = 100
shard_type = SHARD_SHARD
tableslam_noise = 'sound/effects/Glasshit.ogg'
hardness = 15
hardness = 30
weight = 15
door_icon_base = "stone"
@@ -224,8 +224,6 @@ var/list/name_to_material
ignition_point = 300
integrity = 200 // idk why but phoron windows are strong, so.
icon_colour = "#FC2BC5"
hardness = 10
weight = 10
stack_origin_tech = "materials=3;phorontech=2"
/material/glass/phoron/reinforced
@@ -243,8 +241,8 @@ var/list/name_to_material
integrity = 100
shard_type = SHARD_SHARD
tableslam_noise = 'sound/effects/Glasshit.ogg'
hardness = 15
weight = 15
hardness = 40
weight = 30
stack_origin_tech = "materials=2"
composite_material = list() //todo

View File

@@ -109,7 +109,7 @@
if(91)
new/obj/item/device/soulstone(src)
if(92)
new/obj/item/weapon/material/katana(src)
new/obj/item/weapon/material/sword/katana(src)
if(93)
new/obj/item/weapon/dnainjector/xraymut(src) // Probably the least OP
if(94) // Why the hell not

View File

@@ -294,7 +294,7 @@
new_item.desc = ""
if(19)
apply_prefix = 0
new_item = new /obj/item/weapon/material/claymore(src.loc)
new_item = new /obj/item/weapon/material/sword(src.loc)
new_item.force = 10
item_type = new_item.name
if(20)
@@ -337,7 +337,7 @@
apply_material_decorations = 0
if(25)
apply_prefix = 0
new_item = new /obj/item/weapon/material/katana(src.loc)
new_item = new /obj/item/weapon/material/sword/katana(src.loc)
new_item.force = 10
item_type = new_item.name
if(26)