From 9db34eae866be313b178b7962a540e8932c86dc1 Mon Sep 17 00:00:00 2001 From: Neerti Date: Sun, 19 Nov 2017 23:59:17 -0500 Subject: [PATCH] Adds Hunting Rounds Adds a system for projectiles to inflict additional damage on specific kinds of simple animals. Adds special bullets for certain rifles which are very effective against 'animal' SAs such as giant spiders, bears, carp, and such. The bullets do less damage to other targets such as humanoids. Replaces the southern cross gun locker regular ammo with hunting ammo. --- code/datums/autolathe/arms.dm | 14 +++++++++++ .../mob/living/simple_animal/simple_animal.dm | 5 +++- .../projectiles/ammunition/magazines.dm | 24 +++++++++++++++++++ code/modules/projectiles/ammunition/rounds.dm | 8 +++++++ code/modules/projectiles/projectile.dm | 2 ++ .../modules/projectiles/projectile/bullets.dm | 10 ++++++++ .../southern_cross/structures/closets/misc.dm | 2 +- 7 files changed, 63 insertions(+), 2 deletions(-) diff --git a/code/datums/autolathe/arms.dm b/code/datums/autolathe/arms.dm index a33adbae29a..c52c904bc58 100644 --- a/code/datums/autolathe/arms.dm +++ b/code/datums/autolathe/arms.dm @@ -147,17 +147,27 @@ name = "rifle magazine (5.45mm practice)" path =/obj/item/ammo_magazine/m545/practice +/datum/category_item/autolathe/arms/rifle_545_hunter + name = "rifle magazine (5.45mm hunting)" + path =/obj/item/ammo_magazine/m545/hunter + /datum/category_item/autolathe/arms/machinegun_545 name = "machinegun box magazine (5.56)" path =/obj/item/ammo_magazine/m545saw hidden = 1 +/datum/category_item/autolathe/arms/machinegun_545_hunter + name = "machinegun box magazine (5.56 hunting)" + path =/obj/item/ammo_magazine/m545saw/hunter + hidden = 1 + /////// 7.62 /datum/category_item/autolathe/arms/rifle_762 name = "rifle magazine (7.62mm)" path =/obj/item/ammo_magazine/m762 hidden = 1 + /* /datum/category_item/autolathe/arms/rifle_small_762 name = "rifle magazine (7.62mm)" @@ -384,6 +394,10 @@ path =/obj/item/ammo_magazine/clip/c762 hidden = 1 +/datum/category_item/autolathe/arms/rifle_clip_762_hunter + name = "ammo clip (7.62mm hunting)" + path =/obj/item/ammo_magazine/clip/c762/hunter + /datum/category_item/autolathe/arms/rifle_clip_762_practice name = "ammo clip (7.62mm practice)" path =/obj/item/ammo_magazine/clip/c762/practice diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index c21ab59deff..231db2866a8 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -504,7 +504,10 @@ stun_effect_act(0, Proj.agony) if(!Proj.nodamage) - adjustBruteLoss(Proj.damage) + var/true_damage = Proj.damage + if(!Proj.SA_vulnerability || Proj.SA_vulnerability == intelligence_level) + true_damage += Proj.SA_bonus_damage + adjustBruteLoss(true_damage) if(Proj.firer) react_to_attack(Proj.firer) diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 10a4b5ead94..207044c1995 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -356,6 +356,14 @@ name = "extended magazine (5.45mm armor-piercing)" max_ammo = 30 +/obj/item/ammo_magazine/m545/hunter + name = "magazine (5.45mm hunting)" + ammo_type = /obj/item/ammo_casing/a545/hunter + +/obj/item/ammo_magazine/m545/hunter/ext + name = "extended magazine (5.45mm hunting)" + max_ammo = 30 + /obj/item/ammo_magazine/m545/small name = "reduced magazine (5.45mm)" icon_state = "m545-small" @@ -373,6 +381,10 @@ name = "magazine (5.45mm armor-piercing)" ammo_type = /obj/item/ammo_casing/a545/ap +/obj/item/ammo_magazine/m545/small/hunter + name = "magazine (5.45mm hunting)" + ammo_type = /obj/item/ammo_casing/a545/hunter + /obj/item/ammo_magazine/clip/c545 name = "ammo clip (5.45mm)" icon_state = "clip_rifle" @@ -386,6 +398,10 @@ name = "rifle clip (5.45mm armor-piercing)" ammo_type = /obj/item/ammo_casing/a545/ap +/obj/item/ammo_magazine/clip/c545/hunter + name = "rifle clip (5.45mm hunting)" + ammo_type = /obj/item/ammo_casing/a545/hunter + /obj/item/ammo_magazine/clip/c545/practice name = "rifle clip (5.45mm practice)" ammo_type = /obj/item/ammo_casing/a545 @@ -406,6 +422,10 @@ name = "magazine box (5.45mm armor-piercing)" ammo_type = /obj/item/ammo_casing/a545/ap +/obj/item/ammo_magazine/m545saw/hunter + name = "magazine box (5.45mm hunting)" + ammo_type = /obj/item/ammo_casing/a545/hunter + /obj/item/ammo_magazine/m545saw/empty initial_ammo = 0 @@ -505,6 +525,10 @@ name = "rifle clip (7.62mm practice)" ammo_type = /obj/item/ammo_casing/a762p +/obj/item/ammo_magazine/clip/c762/hunter + name = "rifle clip (7.62mm hunting)" + ammo_type = /obj/item/ammo_casing/a762/hunter + /obj/item/ammo_magazine/m762svd name = "\improper SVD magazine (7.62mm)" icon_state = "SVD" diff --git a/code/modules/projectiles/ammunition/rounds.dm b/code/modules/projectiles/ammunition/rounds.dm index ed06df7cc26..330e11d89b2 100644 --- a/code/modules/projectiles/ammunition/rounds.dm +++ b/code/modules/projectiles/ammunition/rounds.dm @@ -258,6 +258,10 @@ desc = "A 7.62mm hollow-point bullet casing." projectile_type = /obj/item/projectile/bullet/rifle/a762/hollow +/obj/item/ammo_casing/a762/hunter + desc = "A 7.62mm hunting bullet casing." + projectile_type = /obj/item/projectile/bullet/rifle/a762/hunter + /* * 14.5mm (anti-materiel rifle round) */ @@ -298,6 +302,10 @@ desc = "A 5.45mm hollow-point bullet casing." projectile_type = /obj/item/projectile/bullet/rifle/a545/hollow +/obj/item/ammo_casing/a545/hunter + desc = "A 5.45mm hunting bullet casing." + projectile_type = /obj/item/projectile/bullet/rifle/a545/hunter + /* * Misc */ diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index fdc5a445b98..2040b0a7784 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -38,6 +38,8 @@ var/damage = 10 var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE, HALLOSS are the only things that should be in here + var/SA_bonus_damage = 0 // Some bullets inflict extra damage on simple animals. + var/SA_vulnerability = null // What kind of simple animal the above bonus damage should be applied to. Set to null to apply to all SAs. var/nodamage = 0 //Determines if the projectile will skip any damage inflictions var/taser_effect = 0 //If set then the projectile will apply it's agony damage using stun_effect_act() to mobs it hits, and other damage will be ignored var/check_armour = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 283e487272b..a7132fa43ba 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -209,6 +209,11 @@ armor_penetration = -50 penetrating = 0 +/obj/item/projectile/bullet/rifle/a762/hunter // Optimized for killing simple animals and not people, because Balance. + damage = 20 + SA_bonus_damage = 50 // 70 total on animals. + SA_vulnerability = SA_ANIMAL + /obj/item/projectile/bullet/rifle/a545 damage = 25 @@ -221,6 +226,11 @@ armor_penetration = -50 penetrating = 0 +/obj/item/projectile/bullet/rifle/a545/hunter + damage = 15 + SA_bonus_damage = 35 // 50 total on animals. + SA_vulnerability = SA_ANIMAL + /obj/item/projectile/bullet/rifle/a145 damage = 80 stun = 3 diff --git a/maps/southern_cross/structures/closets/misc.dm b/maps/southern_cross/structures/closets/misc.dm index 5e1e4c69e23..d6600686133 100644 --- a/maps/southern_cross/structures/closets/misc.dm +++ b/maps/southern_cross/structures/closets/misc.dm @@ -11,5 +11,5 @@ name = "rifle cabinet" will_contain = list( /obj/item/weapon/gun/projectile/shotgun/pump/rifle = 3, - /obj/item/ammo_magazine/clip/c762 = 9 + /obj/item/ammo_magazine/clip/c762/hunting = 9 ) \ No newline at end of file