From 04b9394d34f2ff722689b8bd12810fef4ad8a826 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sat, 1 Jul 2017 01:44:02 -0400 Subject: [PATCH] last tweaks --- code/datums/spells/summonitem.dm | 2 +- code/game/objects/items.dm | 1 - code/game/objects/items/weapons/kitchen.dm | 1 - .../objects/items/weapons/melee/energy.dm | 1 - code/game/objects/items/weapons/shards.dm | 25 +----------------- code/game/objects/items/weapons/twohanded.dm | 5 ---- .../mob/living/carbon/human/human_defense.dm | 16 +---------- .../living/silicon/robot/drone/drone_items.dm | 4 --- code/modules/projectiles/guns/alien.dm | 1 - .../projectiles/guns/throw/crossbow.dm | 2 -- code/modules/projectiles/projectile.dm | 1 - .../modules/projectiles/projectile/bullets.dm | 10 ------- code/modules/projectiles/projectile/force.dm | 1 - .../projectiles/projectile/reusable.dm | 1 - icons/obj/shards.dmi | Bin 3883 -> 4132 bytes 15 files changed, 3 insertions(+), 68 deletions(-) diff --git a/code/datums/spells/summonitem.dm b/code/datums/spells/summonitem.dm index bb650eb17f9..7524e7f31d6 100644 --- a/code/datums/spells/summonitem.dm +++ b/code/datums/spells/summonitem.dm @@ -83,7 +83,7 @@ var/obj/item/organ/external/part = X if(item_to_retrive in part.embedded_objects) part.embedded_objects -= item_to_retrive - to_chat(C, "The [item_to_retrive] that was embedded in your [part] has myseriously vanished. How fortunate!") + to_chat(C, "The [item_to_retrive] that was embedded in your [part] has mysteriously vanished. How fortunate!") if(!C.has_embedded_objects()) C.clear_alert("embeddedobject") break diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 030d073781f..294dda0d674 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -4,7 +4,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d name = "item" icon = 'icons/obj/items.dmi' var/discrete = 0 // used in item_attack.dm to make an item not show an attack message to viewers - var/no_embed = 0 // For use in item_attack.dm var/image/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite var/blood_overlay_color = null var/item_state = null diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 13bc85999e0..e61ca62831c 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -98,7 +98,6 @@ throw_range = 6 materials = list(MAT_METAL=12000) attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - no_embed = 1 sharp = 1 edge = 1 diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index edd07bef05a..6177c999393 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -6,7 +6,6 @@ var/w_class_on = WEIGHT_CLASS_BULKY var/icon_state_on = "axe1" var/list/attack_verb_on = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - no_embed = 1 // Physically impossible for energy weapons to embed themselves into people, this should fix that. -- Dave hitsound = 'sound/weapons/blade1.ogg' // Probably more appropriate than the previous hitsound. -- Dave usesound = 'sound/weapons/blade1.ogg' toolspeed = 1 diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm index 8129eca79dc..272e66ee11a 100644 --- a/code/game/objects/items/weapons/shards.dm +++ b/code/game/objects/items/weapons/shards.dm @@ -88,27 +88,4 @@ if(affecting.take_damage(5, 0)) H.UpdateDamageIcon() H.updatehealth() - ..() - -// Shrapnel - -/obj/item/weapon/shard/shrapnel - name = "shrapnel" - icon = 'icons/obj/shards.dmi' - icon_state = "shrapnellarge" - desc = "A bunch of tiny bits of shattered metal." - embedded_fall_chance = 0 - -/obj/item/weapon/shard/shrapnel/New() - ..() - icon_state = pick("shrapnellarge", "shrapnelmedium", "shrapnelsmall") - switch(icon_state) - if("shrapnelsmall") - pixel_x = rand(-12, 12) - pixel_y = rand(-12, 12) - if("shrapnelmedium") - pixel_x = rand(-8, 8) - pixel_y = rand(-8, 8) - if("shrapnellarge") - pixel_x = rand(-5, 5) - pixel_y = rand(-5, 5) \ No newline at end of file + ..() \ No newline at end of file diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index cdd8b8a5de1..9f4ebf36611 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -210,7 +210,6 @@ block_chance = 75 sharp = 1 edge = 1 - no_embed = 1 // Like with the single-handed esword, this shouldn't be embedding in people. /obj/item/weapon/twohanded/dualsaber/New() blade_color = pick("red", "blue", "green", "purple") @@ -500,7 +499,6 @@ attack_verb = list("sawed", "cut", "hacked", "carved", "cleaved", "butchered", "felled", "timbered") sharp = 1 edge = 1 - no_embed = 1 /obj/item/weapon/twohanded/chainsaw/update_icon() if(wielded) @@ -539,7 +537,6 @@ icon_state = "mjollnir0" flags = CONDUCT slot_flags = SLOT_BACK - no_embed = 1 force = 5 force_unwielded = 5 force_wielded = 20 @@ -604,7 +601,6 @@ icon_state = "mjollnir0" flags = CONDUCT slot_flags = SLOT_BACK - no_embed = 1 force = 5 force_unwielded = 5 force_wielded = 25 @@ -652,7 +648,6 @@ icon_state = "knighthammer0" flags = CONDUCT slot_flags = SLOT_BACK - no_embed = 1 force = 5 force_unwielded = 5 force_wielded = 30 diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index b5f5f0f5ef2..917d9d9b0f7 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -8,7 +8,7 @@ emp_act */ -/mob/living/carbon/human/bullet_act(var/obj/item/projectile/P, var/def_zone) +/mob/living/carbon/human/bullet_act(obj/item/projectile/P, def_zone) if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) if(check_reflect(def_zone)) // Checks if you've passed a reflection% check @@ -41,20 +41,6 @@ emp_act . = bullet_act(P, "chest") //act on chest instead return - //Shrapnel - if(P.damage_type == BRUTE) - var/armor = getarmor_organ(organ, "bullet") - if((P.embed && prob(20 + max(P.damage - armor, -10)))) - var/obj/item/weapon/shard/shrapnel/SP = new() - SP.name = "[P.name] shrapnel" - if(P.ammo_casing && P.ammo_casing.caliber) - SP.desc = "[SP.desc] It looks like it is a [P.ammo_casing.caliber] caliber round." - else - SP.desc = "[SP.desc] The round's caliber is unidentifiable." - throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) - organ.embedded_objects |= SP - SP.forceMove(src) - organ.add_autopsy_data(P.name, P.damage) // Add the bullet's name to the autopsy data return (..(P , def_zone)) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index 16c8f1a3ef0..3454a6597ab 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -260,10 +260,6 @@ stored_comms["glass"]++ else if(istype(W,/obj/item/ammo_casing)) stored_comms["metal"]++ - else if(istype(W,/obj/item/weapon/shard/shrapnel)) - stored_comms["metal"]++ - stored_comms["metal"]++ - stored_comms["metal"]++ else if(istype(W,/obj/item/weapon/shard)) stored_comms["glass"]++ stored_comms["glass"]++ diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index f541ca2a94a..5900e9a249e 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -101,6 +101,5 @@ flag = "bullet" pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE - embed = 0 weaken = 5 stun = 5 diff --git a/code/modules/projectiles/guns/throw/crossbow.dm b/code/modules/projectiles/guns/throw/crossbow.dm index 77d3e89eade..a06aac35be5 100644 --- a/code/modules/projectiles/guns/throw/crossbow.dm +++ b/code/modules/projectiles/guns/throw/crossbow.dm @@ -170,8 +170,6 @@ /obj/item/weapon/arrow/rod/removed() if(superheated) // The rod has been superheated - we don't want it to be useable when removed from the bow. visible_message("[src] shatters into a scattering of overstressed metal shards as it leaves the crossbow.") - var/obj/item/weapon/shard/shrapnel/S = new /obj/item/weapon/shard/shrapnel - S.loc = get_turf(src) qdel(src) #undef XBOW_TENSION_20 diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 4a3afd18684..20957e18786 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -48,7 +48,6 @@ var/drowsy = 0 var/stamina = 0 var/jitter = 0 - var/embed = 0 // whether or not the projectile can embed itself in the mob var/forcedodge = 0 //to pass through everything var/dismemberment = 0 //The higher the number, the greater the bonus to dismembering. 0 will not dismember at all. diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 7434038eb91..2c55431fba0 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -4,7 +4,6 @@ damage = 60 damage_type = BRUTE flag = "bullet" - embed = 1 sharp = 1 hitsound_wall = "ricochet" @@ -14,11 +13,9 @@ stamina = 80 /obj/item/projectile/bullet/weakbullet/rubber //beanbag that shells that don't embed - embed = 0 sharp = 0 /obj/item/projectile/bullet/weakbullet/booze - embed = 0 /obj/item/projectile/bullet/weakbullet/booze/on_hit(atom/target, blocked = 0) if(..(target, blocked)) @@ -45,7 +42,6 @@ icon_state = "bullet-r" /obj/item/projectile/bullet/weakbullet2/rubber //detective's bullets that don't embed - embed = 0 sharp = 0 /obj/item/projectile/bullet/weakbullet3 @@ -56,7 +52,6 @@ damage = 5 stamina = 30 icon_state = "bullet-r" - embed = 0 sharp = 0 /obj/item/projectile/bullet/toxinbullet @@ -145,7 +140,6 @@ name = "rubber pellet" damage = 3 stamina = 25 - embed = 0 sharp = 0 icon_state = "bullet-r" @@ -157,7 +151,6 @@ stutter = 5 jitter = 20 range = 7 - embed = 0 sharp = 0 icon_state = "spark" color = "#FFFF00" @@ -209,7 +202,6 @@ stun = 5 forcedodge = 1 nodamage = 1 - embed = 0 sharp = 0 pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE hitsound = 'sound/items/bikehorn.ogg' @@ -244,7 +236,6 @@ name = "dart" icon_state = "cbbolt" damage = 6 - embed = 0 sharp = 0 var/piercing = 0 @@ -307,7 +298,6 @@ name = "cap" damage = 0 nodamage = 1 - embed = 0 sharp = 0 /obj/item/projectile/bullet/cap/fire() diff --git a/code/modules/projectiles/projectile/force.dm b/code/modules/projectiles/projectile/force.dm index 4e5c6d27700..4d62550a852 100644 --- a/code/modules/projectiles/projectile/force.dm +++ b/code/modules/projectiles/projectile/force.dm @@ -4,7 +4,6 @@ icon_state = "ice_1" damage = 20 flag = "energy" - embed = 1 /obj/item/projectile/forcebolt/strong name = "force bolt" diff --git a/code/modules/projectiles/projectile/reusable.dm b/code/modules/projectiles/projectile/reusable.dm index a223f415165..8592a7a46ee 100644 --- a/code/modules/projectiles/projectile/reusable.dm +++ b/code/modules/projectiles/projectile/reusable.dm @@ -36,7 +36,6 @@ range = 10 var/obj/item/weapon/pen/pen = null edge = 0 - embed = 0 log_override = TRUE//it won't log even when there's a pen inside, but since the damage will be so low, I don't think there's any point in making it any more complex /obj/item/projectile/bullet/reusable/foam_dart/handle_drop() diff --git a/icons/obj/shards.dmi b/icons/obj/shards.dmi index 1b979682adc2ffe3365b26cba90c15b9c897d2ef..5ce7113bf88eaea10b10d73daebc8eb122dbefd9 100644 GIT binary patch literal 4132 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 Ux?cPSfBOM_ZDXx!4F}x+0Uv0$+W-In literal 3883 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 G