diff --git a/_maps/map_files/Sunnyvale/Sunnyvale-Underground-1.dmm b/_maps/map_files/Sunnyvale/Sunnyvale-Underground-1.dmm index f9e9dc3ad4..4ff735ff46 100644 --- a/_maps/map_files/Sunnyvale/Sunnyvale-Underground-1.dmm +++ b/_maps/map_files/Sunnyvale/Sunnyvale-Underground-1.dmm @@ -1372,9 +1372,9 @@ dir = 4 }, /obj/item/gun/ballistic/revolver/grenadelauncher, -/obj/item/ammo_box/a40mm, -/obj/item/ammo_box/a40mm, -/obj/item/ammo_box/a40mm, +/obj/item/ammo_box/a40mmHE, +/obj/item/ammo_box/a40mmHE, +/obj/item/ammo_box/a40mmHEDP, /turf/open/floor/f13{ icon_state = "neutralrustyfull" }, diff --git a/code/datums/components/crafting/recipes/recipes_explosives.dm b/code/datums/components/crafting/recipes/recipes_explosives.dm index bd922bf0dc..4373e5b939 100644 --- a/code/datums/components/crafting/recipes/recipes_explosives.dm +++ b/code/datums/components/crafting/recipes/recipes_explosives.dm @@ -287,9 +287,9 @@ always_available = FALSE granting_trait = TRAIT_ADVANCED_EXPLOSIVE_CRAFTING -/datum/crafting_recipe/a40mm - name = "40mm grenade" - result = /obj/item/ammo_casing/a40mm +/datum/crafting_recipe/a40mmHE + name = "40mm HE grenade" + result = /obj/item/ammo_casing/a40mmHE category = CAT_EXPLOSIVE reqs = list( /obj/item/stack/sheet/metal = 10, @@ -305,9 +305,9 @@ always_available = FALSE granting_trait = list(list(TRAIT_EXPLOSIVE_CRAFTING, TRAIT_ADVANCED_EXPLOSIVE_CRAFTING)) -/datum/crafting_recipe/a40mm_box - name = "Ammo box (40mm grenades)" - result = /obj/item/ammo_box/a40mm +/datum/crafting_recipe/a40mmHE_box + name = "Ammo box (40mmHE grenades)" + result = /obj/item/ammo_box/a40mmHE category = CAT_EXPLOSIVE reqs = list( /obj/item/stack/sheet/metal = 40, @@ -323,6 +323,216 @@ always_available = FALSE granting_trait = list(list(TRAIT_EXPLOSIVE_CRAFTING, TRAIT_ADVANCED_EXPLOSIVE_CRAFTING)) +/datum/crafting_recipe/a40mmHEDP + name = "40mm HEDP grenade" + result = /obj/item/ammo_casing/a40mmHEDP + category = CAT_EXPLOSIVE + reqs = list( + /obj/item/stack/sheet/metal = 10, + /obj/item/stack/sheet/mineral/titanium = 5, + /obj/item/stack/crafting/metalparts = 2, + /obj/item/stack/crafting/goodparts = 8, + /obj/item/stack/crafting/electronicparts = 20, + /obj/item/stack/ore/blackpowder = 10, + /obj/item/assembly/igniter = 1 + ) + tools = list(TOOL_AWORKBENCH) + time = 5 + always_available = FALSE + granting_trait = list(list(TRAIT_EXPLOSIVE_CRAFTING, TRAIT_ADVANCED_EXPLOSIVE_CRAFTING)) + +/datum/crafting_recipe/a40mmHEDP_box + name = "Ammo box (40mmHEDP grenades)" + result = /obj/item/ammo_box/a40mmHEDP + category = CAT_EXPLOSIVE + reqs = list( + /obj/item/stack/sheet/metal = 40, + /obj/item/stack/sheet/mineral/titanium = 20, + /obj/item/stack/crafting/metalparts = 8, + /obj/item/stack/crafting/goodparts = 32, + /obj/item/stack/crafting/electronicparts = 80, + /obj/item/stack/ore/blackpowder = 40, + /obj/item/assembly/igniter = 4 + ) + tools = list(TOOL_AWORKBENCH) + time = 20 + always_available = FALSE + granting_trait = list(list(TRAIT_EXPLOSIVE_CRAFTING, TRAIT_ADVANCED_EXPLOSIVE_CRAFTING)) + +/datum/crafting_recipe/a40mmS + name = "40mm SMOKE grenade" + result = /obj/item/ammo_casing/a40mmS + category = CAT_EXPLOSIVE + reqs = list( + /obj/item/stack/sheet/metal = 10, + /obj/item/stack/sheet/mineral/titanium = 5, + /obj/item/stack/crafting/metalparts = 5, + /obj/item/stack/crafting/goodparts = 2, + /obj/item/stack/crafting/electronicparts = 10, + /obj/item/stack/ore/blackpowder = 5, + /obj/item/assembly/igniter = 1 + ) + tools = list(TOOL_AWORKBENCH) + time = 5 + always_available = FALSE + granting_trait = list(list(TRAIT_EXPLOSIVE_CRAFTING, TRAIT_ADVANCED_EXPLOSIVE_CRAFTING)) + +/datum/crafting_recipe/a40mmS_box + name = "Ammo box (40mmSMOKE grenades)" + result = /obj/item/ammo_box/a40mmS + category = CAT_EXPLOSIVE + reqs = list( + /obj/item/stack/sheet/metal = 40, + /obj/item/stack/sheet/mineral/titanium = 20, + /obj/item/stack/crafting/metalparts = 20, + /obj/item/stack/crafting/goodparts = 8, + /obj/item/stack/crafting/electronicparts = 40, + /obj/item/stack/ore/blackpowder = 20, + /obj/item/assembly/igniter = 4 + ) + tools = list(TOOL_AWORKBENCH) + time = 20 + always_available = FALSE + granting_trait = list(list(TRAIT_EXPLOSIVE_CRAFTING, TRAIT_ADVANCED_EXPLOSIVE_CRAFTING)) + +/datum/crafting_recipe/a40mmCS + name = "40mm CS grenade" + result = /obj/item/ammo_casing/a40mmCS + category = CAT_EXPLOSIVE + reqs = list( + /obj/item/stack/sheet/metal = 10, + /obj/item/stack/sheet/mineral/titanium = 5, + /obj/item/stack/crafting/metalparts = 5, + /obj/item/stack/crafting/goodparts = 2, + /obj/item/stack/crafting/electronicparts = 10, + /obj/item/stack/ore/blackpowder = 8, + /obj/item/assembly/igniter = 1 + ) + tools = list(TOOL_AWORKBENCH) + time = 5 + always_available = FALSE + granting_trait = list(list(TRAIT_EXPLOSIVE_CRAFTING, TRAIT_ADVANCED_EXPLOSIVE_CRAFTING)) + +/datum/crafting_recipe/a40mmCS_box + name = "Ammo box (40mmCS grenades)" + result = /obj/item/ammo_box/a40mmCS + category = CAT_EXPLOSIVE + reqs = list( + /obj/item/stack/sheet/metal = 40, + /obj/item/stack/sheet/mineral/titanium = 20, + /obj/item/stack/crafting/metalparts = 20, + /obj/item/stack/crafting/goodparts = 8, + /obj/item/stack/crafting/electronicparts = 40, + /obj/item/stack/ore/blackpowder = 32, + /obj/item/assembly/igniter = 4 + ) + tools = list(TOOL_AWORKBENCH) + time = 20 + always_available = FALSE + granting_trait = list(list(TRAIT_EXPLOSIVE_CRAFTING, TRAIT_ADVANCED_EXPLOSIVE_CRAFTING)) + +/datum/crafting_recipe/a40mmM + name = "40mm METAL grenade" + result = /obj/item/ammo_casing/a40mmM + category = CAT_EXPLOSIVE + reqs = list( + /obj/item/stack/sheet/metal = 20, + /obj/item/stack/sheet/mineral/titanium = 10, + /obj/item/stack/crafting/metalparts = 10, + /obj/item/stack/crafting/goodparts = 5, + ) + tools = list(TOOL_AWORKBENCH) + time = 5 + always_available = FALSE + granting_trait = list(list(TRAIT_EXPLOSIVE_CRAFTING, TRAIT_ADVANCED_EXPLOSIVE_CRAFTING)) + +/datum/crafting_recipe/a40mmM_box + name = "Ammo box (40mm METAL grenades)" + result = /obj/item/ammo_box/a40mmM + category = CAT_EXPLOSIVE + reqs = list( + /obj/item/stack/sheet/metal = 80, + /obj/item/stack/sheet/mineral/titanium = 40, + /obj/item/stack/crafting/metalparts = 40, + /obj/item/stack/crafting/goodparts = 20, + ) + tools = list(TOOL_AWORKBENCH) + time = 20 + always_available = FALSE + granting_trait = list(list(TRAIT_EXPLOSIVE_CRAFTING, TRAIT_ADVANCED_EXPLOSIVE_CRAFTING)) + +/datum/crafting_recipe/a40mmF + name = "40mm FLASH grenade" + result = /obj/item/ammo_casing/a40mmF + category = CAT_EXPLOSIVE + reqs = list( + /obj/item/stack/sheet/metal = 10, + /obj/item/stack/sheet/mineral/titanium = 5, + /obj/item/stack/crafting/metalparts = 8, + /obj/item/stack/crafting/goodparts = 2, + /obj/item/stack/crafting/electronicparts = 15, + /obj/item/stack/ore/blackpowder = 15, + /obj/item/assembly/igniter = 1 + ) + tools = list(TOOL_AWORKBENCH) + time = 5 + always_available = FALSE + granting_trait = list(list(TRAIT_EXPLOSIVE_CRAFTING, TRAIT_ADVANCED_EXPLOSIVE_CRAFTING)) + +/datum/crafting_recipe/a40mmF_box + name = "Ammo box (40mm FLASH grenades)" + result = /obj/item/ammo_box/a40mmF + category = CAT_EXPLOSIVE + reqs = list( + /obj/item/stack/sheet/metal = 40, + /obj/item/stack/sheet/mineral/titanium = 20, + /obj/item/stack/crafting/metalparts = 32, + /obj/item/stack/crafting/goodparts = 8, + /obj/item/stack/crafting/electronicparts = 60, + /obj/item/stack/ore/blackpowder = 60, + /obj/item/assembly/igniter = 4 + ) + tools = list(TOOL_AWORKBENCH) + time = 20 + always_available = FALSE + granting_trait = list(list(TRAIT_EXPLOSIVE_CRAFTING, TRAIT_ADVANCED_EXPLOSIVE_CRAFTING)) + +/datum/crafting_recipe/a40mmI + name = "40mm INCENDARY grenade" + result = /obj/item/ammo_casing/a40mmI + category = CAT_EXPLOSIVE + reqs = list( + /obj/item/stack/sheet/metal = 10, + /obj/item/stack/sheet/mineral/titanium = 5, + /obj/item/stack/crafting/metalparts = 8, + /obj/item/stack/crafting/goodparts = 1, + /obj/item/stack/crafting/electronicparts = 15, + /obj/item/stack/ore/blackpowder = 8, + /obj/item/assembly/igniter = 1 + ) + tools = list(TOOL_AWORKBENCH) + time = 5 + always_available = FALSE + granting_trait = list(list(TRAIT_EXPLOSIVE_CRAFTING, TRAIT_ADVANCED_EXPLOSIVE_CRAFTING)) + +/datum/crafting_recipe/a40mmI_box + name = "Ammo box (40mm INCENDARY grenades)" + result = /obj/item/ammo_box/a40mmI + category = CAT_EXPLOSIVE + reqs = list( + /obj/item/stack/sheet/metal = 40, + /obj/item/stack/sheet/mineral/titanium = 20, + /obj/item/stack/crafting/metalparts = 32, + /obj/item/stack/crafting/goodparts = 4, + /obj/item/stack/crafting/electronicparts = 60, + /obj/item/stack/ore/blackpowder = 32, + /obj/item/assembly/igniter = 4 + ) + tools = list(TOOL_AWORKBENCH) + time = 20 + always_available = FALSE + granting_trait = list(list(TRAIT_EXPLOSIVE_CRAFTING, TRAIT_ADVANCED_EXPLOSIVE_CRAFTING)) + /datum/crafting_recipe/rocket_base name = "Empty rocket shell" result = /obj/item/rocketshell diff --git a/code/game/objects/effects/spawners/f13lootdrop.dm b/code/game/objects/effects/spawners/f13lootdrop.dm index 5a34460bd1..9d1cbbcbca 100644 --- a/code/game/objects/effects/spawners/f13lootdrop.dm +++ b/code/game/objects/effects/spawners/f13lootdrop.dm @@ -1671,7 +1671,7 @@ name = "grenade launcher and ammo spawner" items = list( /obj/item/gun/ballistic/revolver/grenadelauncher, - /obj/item/ammo_box/a40mm + /obj/item/ammo_box/a40mmHE ) @@ -1754,7 +1754,11 @@ /obj/item/ammo_box/a762/doublestacked, /obj/item/stock_parts/cell/ammo/mfc, /obj/item/ammo_casing/caseless/rocket, - /obj/item/ammo_box/a40mm + /obj/item/ammo_box/a40mmHE, + /obj/item/ammo_box/a40mmS, + /obj/item/ammo_box/a40mmCS, + /obj/item/ammo_box/a40mmF, + /obj/item/ammo_box/a40mmM, ) /obj/effect/spawner/lootdrop/f13/weapon/gun/ammo/tier4/Initialize(mapload) //on mapload, pick how many shit to spawn @@ -1775,7 +1779,13 @@ /obj/item/ammo_casing/caseless/rocket/big, /obj/item/ammo_casing/caseless/rocket/incendiary = 10, /obj/item/ammo_casing/caseless/rocket/chem = 3, - /obj/item/ammo_box/a40mm + /obj/item/ammo_box/a40mmHE, + /obj/item/ammo_box/a40mmHEDP, + /obj/item/ammo_box/a40mmS, + /obj/item/ammo_box/a40mmCS, + /obj/item/ammo_box/a40mmM, + /obj/item/ammo_box/a40mmF, + /obj/item/ammo_box/a40mmI, ) /obj/effect/spawner/lootdrop/f13/weapon/gun/ammo/tier5/Initialize(mapload) //on mapload, pick how many shit to spawn diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 6325831411..d4efd3c416 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -885,7 +885,7 @@ traitname = "explosive crafting" remarks = list("If you want to get started making bombs, you're going to need a lot of igniters and black powder.", "Did a Follower write this book, or something?", "All thermite takes is some aluminum and iron.", "Coconut shells make acceptable grenade casings in a pinch.") crafting_recipe_types = list(/datum/crafting_recipe/frag_shrapnel, /datum/crafting_recipe/stinger, /datum/crafting_recipe/flashbang, -/datum/crafting_recipe/smokebomb, /datum/crafting_recipe/a40mm, /datum/crafting_recipe/a40mm_box, /datum/crafting_recipe/rocket_base, /datum/crafting_recipe/weakrocket) +/datum/crafting_recipe/smokebomb, /datum/crafting_recipe/a40mmHE, /datum/crafting_recipe/a40mmHE_box, /datum/crafting_recipe/a40mmHEDP, /datum/crafting_recipe/a40mmHEDP_box, /datum/crafting_recipe/a40mmS, /datum/crafting_recipe/a40mmS_box, /datum/crafting_recipe/a40mmCS, /datum/crafting_recipe/a40mmCS_box, /datum/crafting_recipe/a40mmM, /datum/crafting_recipe/a40mmM_box, /datum/crafting_recipe/a40mmF, /datum/crafting_recipe/a40mmF_box, /datum/crafting_recipe/a40mmI, /datum/crafting_recipe/a40mmI_box, /datum/crafting_recipe/rocket_base, /datum/crafting_recipe/weakrocket) /obj/item/book/granter/trait/explosives_advanced name = "Advanced Techniques for Winning at Postal Chess" @@ -894,7 +894,7 @@ traitname = "advanced explosive crafting" remarks = list("Is this actually a legal chess move...?", "If you hook electronic parts up to a flux capacitor-oh, that makes a lot of sense, actually.", "Radium? What would you use radium f-oh no.", "Why would anyone actually publish this?") crafting_recipe_types = list(/datum/crafting_recipe/incendiary, /obj/item/grenade/f13/he_grenade, /datum/crafting_recipe/radgrenade, /datum/crafting_recipe/empgrenade, /datum/crafting_recipe/incendiaryrocket, /datum/crafting_recipe/strongrocket, /datum/crafting_recipe/frag_shrapnel, /datum/crafting_recipe/stinger, /datum/crafting_recipe/flashbang, -/datum/crafting_recipe/smokebomb, /datum/crafting_recipe/a40mm, /datum/crafting_recipe/a40mm_box, /datum/crafting_recipe/rocket_base, /datum/crafting_recipe/weakrocket) +/datum/crafting_recipe/smokebomb, /datum/crafting_recipe/a40mmHE, /datum/crafting_recipe/a40mmHE_box, /datum/crafting_recipe/a40mmHEDP, /datum/crafting_recipe/a40mmHEDP_box, /datum/crafting_recipe/a40mmS, /datum/crafting_recipe/a40mmS_box, /datum/crafting_recipe/a40mmCS, /datum/crafting_recipe/a40mmCS_box, /datum/crafting_recipe/a40mmM, /datum/crafting_recipe/a40mmM_box, /datum/crafting_recipe/a40mmF, /datum/crafting_recipe/a40mmF_box, /datum/crafting_recipe/a40mmI, /datum/crafting_recipe/a40mmI_box, /datum/crafting_recipe/rocket_base, /datum/crafting_recipe/weakrocket) /obj/item/book/granter/trait/gunslinger name = "Tycho: Life of a Lawman" diff --git a/code/modules/jobs/job_types/legion.dm b/code/modules/jobs/job_types/legion.dm index d7c2974b5c..db32c240d1 100644 --- a/code/modules/jobs/job_types/legion.dm +++ b/code/modules/jobs/job_types/legion.dm @@ -436,7 +436,8 @@ Weapons Lever shotgun, Grease gun, Repeater carbines, Revolvers, simple guns al name = "Loud Prime Decanus" suit_store = /obj/item/gun/ballistic/revolver/grenadelauncher backpack_contents = list( - /obj/item/ammo_box/a40mm = 2, + /obj/item/ammo_box/a40mmHE = 1, + /obj/item/ammo_box/a40mmHEDP = 1, /obj/item/gun/ballistic/revolver/m29 = 1, /obj/item/ammo_box/m44 = 3, /obj/item/grenade/f13/frag = 2, diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm index 5332da71c5..4fd8b331c8 100644 --- a/code/modules/projectiles/ammunition/ballistic/rifle.dm +++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm @@ -72,12 +72,54 @@ projectile_type = /obj/item/projectile/bullet/m5mm/shock // 40mm (Grenade Launcher) -/obj/item/ammo_casing/a40mm +/obj/item/ammo_casing/a40mmHE name = "40mm HE shell" desc = "A cased high explosive grenade that can only be activated once fired out of a grenade launcher." caliber = "40mm" icon_state = "40mmHE" - projectile_type = /obj/item/projectile/bullet/a40mm + projectile_type = /obj/item/projectile/bullet/rocket/a40mmHE + +/obj/item/ammo_casing/a40mmCS + name = "40mm CS shell" + desc = "A thin, cased tear gas grenade. Only activates once it impacts the ground at high speed." + caliber = "40mmg" + icon_state = "40mmTG" + projectile_type = /obj/item/projectile/bullet/a40mmCS + +/obj/item/ammo_casing/a40mmS + name = "40mm Smoke shell" + desc = "A thin, cased tear gas grenade. Only activates once it impacts the ground at high speed." + caliber = "40mmg" + icon_state = "40mmTG" + projectile_type = /obj/item/projectile/bullet/a40mmS + +/obj/item/ammo_casing/a40mmHEDP + name = "40mm HEDP shell" + desc = "A cased high explosive grenade that can only be activated once fired out of a grenade launcher." + caliber = "40mm" + icon_state = "40mmHE" + projectile_type = /obj/item/projectile/bullet/rocket/a40mmHEDP + +/obj/item/ammo_casing/a40mmM + name = "40mm METAL shell" + desc = "A cased high explosive grenade that can only be activated once fired out of a grenade launcher." + caliber = "40mm" + icon_state = "40mmHE" + projectile_type = /obj/item/projectile/bullet/rocket/a40mmM + +/obj/item/ammo_casing/a40mmF + name = "40mm FLASH shell" + desc = "A cased high explosive grenade that can only be activated once fired out of a grenade launcher." + caliber = "40mm" + icon_state = "40mmHE" + projectile_type = /obj/item/projectile/bullet/rocket/a40mmF + +/obj/item/ammo_casing/a40mmI + name = "40mm INCENDARY shell" + desc = "A cased high explosive grenade that can only be activated once fired out of a grenade launcher." + caliber = "40mm" + icon_state = "40mmHE" + projectile_type = /obj/item/projectile/bullet/rocket/a40mmI // 2mm EC /obj/item/ammo_casing/c2mm diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm index 71f532e42c..ba916cc26a 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm @@ -532,14 +532,55 @@ custom_materials = list(MAT_METAL = 1000) w_class = WEIGHT_CLASS_NORMAL -/obj/item/ammo_box/a40mm - name = "ammo box (40mm grenades)" +/obj/item/ammo_box/a40mmHE + name = "ammo box (40mm HE grenades)" caliber = "40mm" icon_state = "40mm" - ammo_type = /obj/item/ammo_casing/a40mm + ammo_type = /obj/item/ammo_casing/a40mmHE max_ammo = 4 multiple_sprites = 1 +/obj/item/ammo_box/a40mmHEDP + name = "ammo box (40mm HEDP grenades)" + caliber = "40mm" + icon_state = "40mmHEDP" + ammo_type = /obj/item/ammo_casing/a40mmHEDP + max_ammo = 4 + multiple_sprites = 1 + +/obj/item/ammo_box/a40mmCS + name = "ammo box (40mm CS grenades)" + icon_state = "40mmCS" + ammo_type = /obj/item/ammo_casing/a40mmCS + multiple_sprites = 1 + +/obj/item/ammo_box/a40mmS + name = "ammo box (40mm SMOKE grenades)" + icon_state = "40mmSmoke" + ammo_type = /obj/item/ammo_casing/a40mmS + max_ammo = 4 + multiple_sprites = 1 + +/obj/item/ammo_box/a40mmM + name = "ammo box (40mm METAL grenades)" + icon_state = "40mmShot" + ammo_type = /obj/item/ammo_casing/a40mmM + max_ammo = 4 + multiple_sprites = 1 + +/obj/item/ammo_box/a40mmF + name = "ammo box (40mm FLASH grenades)" + icon_state = "40mmFlash" + ammo_type = /obj/item/ammo_casing/a40mmF + max_ammo = 4 + multiple_sprites = 1 + +/obj/item/ammo_box/a40mmI + name = "ammo box (40mm INCENDARY grenades)" + icon_state = "40mmIncen" + ammo_type = /obj/item/ammo_casing/a40mmI + max_ammo = 4 + multiple_sprites = 1 //////////////// //SPEEDLOADERS// diff --git a/code/modules/projectiles/boxes_magazines/internal/grenade.dm b/code/modules/projectiles/boxes_magazines/internal/grenade.dm index 8b2ec9fca3..bdb0d01d0e 100644 --- a/code/modules/projectiles/boxes_magazines/internal/grenade.dm +++ b/code/modules/projectiles/boxes_magazines/internal/grenade.dm @@ -1,12 +1,48 @@ /obj/item/ammo_box/magazine/internal/cylinder/grenademulti name = "grenade launcher internal magazine" - ammo_type = /obj/item/ammo_casing/a40mm + ammo_type = /obj/item/ammo_casing/a40mmHE caliber = "40mm" max_ammo = 6 /obj/item/ammo_box/magazine/internal/grenadelauncher name = "grenade launcher internal magazine" - ammo_type = /obj/item/ammo_casing/a40mm + ammo_type = /obj/item/ammo_casing/a40mmHE + caliber = "40mm" + max_ammo = 1 + +/obj/item/ammo_box/magazine/internal/grenadelauncher + name = "grenade launcher internal magazine" + ammo_type = /obj/item/ammo_casing/a40mmCS + caliber = "40mm" + max_ammo = 1 + +/obj/item/ammo_box/magazine/internal/grenadelauncher + name = "grenade launcher internal magazine" + ammo_type = /obj/item/ammo_casing/a40mmHEDP + caliber = "40mm" + max_ammo = 1 + +/obj/item/ammo_box/magazine/internal/grenadelauncher + name = "grenade launcher internal magazine" + ammo_type = /obj/item/ammo_casing/a40mmS + caliber = "40mm" + max_ammo = 1 + +/obj/item/ammo_box/magazine/internal/grenadelauncher + name = "grenade launcher internal magazine" + ammo_type = /obj/item/ammo_casing/a40mmM + caliber = "40mm" + max_ammo = 1 + +/obj/item/ammo_box/magazine/internal/grenadelauncher + name = "grenade launcher internal magazine" + ammo_type = /obj/item/ammo_casing/a40mmF + caliber = "40mm" + max_ammo = 1 + +/obj/item/ammo_box/magazine/internal/grenadelauncher + name = "grenade launcher internal magazine" + ammo_type = /obj/item/ammo_casing/a40mmI caliber = "40mm" max_ammo = 1 diff --git a/code/modules/projectiles/projectile/bullets/grenade.dm b/code/modules/projectiles/projectile/bullets/grenade.dm index c00211ac4c..f3f0f20d9a 100644 --- a/code/modules/projectiles/projectile/bullets/grenade.dm +++ b/code/modules/projectiles/projectile/bullets/grenade.dm @@ -1,15 +1,120 @@ // 40mm (Grenade Launcher -/obj/item/projectile/bullet/a40mm - name ="40mm grenade" +/obj/item/projectile/bullet/rocket/a40mmHE + name ="40mm HE grenade" desc = "Oh no." icon_state= "bolter" - damage = 5 - armour_penetration = 0.01 + damage = 30 + armour_penetration = 0.25 pixels_per_second = TILES_TO_PIXELS(10) //slower than bullets -/obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = FALSE) +/obj/item/projectile/bullet/rocket/on_hit(atom/target, blocked = FALSE) ..() - explosion(target, -1, -1, 3, 3, 0, flame_range = 3) + explosion(target, 0, 4, 4, 0, 0, flame_range = 4) + new /obj/effect/temp_visual/explosion(get_turf(target)) + return BULLET_ACT_HIT + +//40mm tear gas + +/obj/item/projectile/bullet/a40mmCS + name ="40mm CS grenade" + icon_state = "bolter" + damage_type = STAMINA + damage = 80//If you get hit with this directly? Ouch... + pixels_per_second = TILES_TO_PIXELS(10) //slower than bullets + var/datum/effect_system/smoke_spread/bad/smoke + +/obj/item/projectile/bullet/a40mmCS/Initialize() + . = ..() + src.smoke = new /datum/effect_system/smoke_spread/bad + src.smoke.attach(src) + smoke.set_up(4, src) + +/obj/item/projectile/bullet/a40mmCS/Destroy() + QDEL_NULL(smoke) + return ..() + +/obj/item/projectile/bullet/a40mmg/on_hit(atom/target, blocked = FALSE) + +// 40mm HEDP (Grenade Launcher + +/obj/item/projectile/bullet/rocket/a40mmHEDP + name ="40mm HEDP grenade" + desc = "Oh no." + icon_state= "bolter" + damage = 30 + armour_penetration = 0.75 + pixels_per_second = TILES_TO_PIXELS(10) //slower than bullets + +/obj/item/projectile/bullet/rocket/on_hit(atom/target, blocked = FALSE) + ..() + explosion(target, 1, 2, 4, 1, 0, flame_range = 4) + new /obj/effect/temp_visual/explosion(get_turf(target)) + return BULLET_ACT_HIT + +// 40mm Smoke + +/obj/item/projectile/bullet/a40mmS + name ="40mm Smoke grenade" + icon_state = "bolter" + damage_type = STAMINA + damage = 80//If you get hit with this directly? Ouch... + pixels_per_second = TILES_TO_PIXELS(10) //slower than bullets + var/datum/effect_system/smoke_spread/bad/smoke + +/obj/item/projectile/bullet/a40mmS/Initialize() + . = ..() + src.smoke = new /datum/effect_system/smoke_spread/bad + src.smoke.attach(src) + smoke.set_up(4, src) + +/obj/item/projectile/bullet/a40mmS/Destroy() + QDEL_NULL(smoke) + return ..() + +/obj/item/projectile/bullet/a40mmg/on_hit(atom/target, blocked = FALSE) + +// 40mm Baton + +/obj/item/projectile/bullet/rocket/a40mmM + name ="40mm METAL grenade" + desc = "Oh no." + icon_state= "bolter" + damage = 80 + pixels_per_second = TILES_TO_PIXELS(10) //slower than bullets + +/obj/item/projectile/bullet/rocket/on_hit(atom/target, blocked = FALSE) + ..() + explosion(target, 0, 0, 0, 0, 0, flame_range = 0) + new /obj/effect/temp_visual/explosion(get_turf(target)) + return BULLET_ACT_HIT + +// 40mm Flashbang + +/obj/item/projectile/bullet/rocket/a40mmF + name ="40mm Flash grenade" + desc = "Oh no." + icon_state= "bolter" + damage = 20 + pixels_per_second = TILES_TO_PIXELS(10) //slower than bullets + +/obj/item/projectile/bullet/rocket/on_hit(atom/target, blocked = FALSE) + ..() + explosion(target, 0, 0, 8, 0, 0, flame_range = 0) + new /obj/effect/temp_visual/explosion(get_turf(target)) + return BULLET_ACT_HIT + +// 40mm Incend + +/obj/item/projectile/bullet/rocket/a40mmI + name ="40mm INCENDARY grenade" + desc = "Oh no." + icon_state= "bolter" + damage = 20 + pixels_per_second = TILES_TO_PIXELS(10) //slower than bullets + +/obj/item/projectile/bullet/rocket/on_hit(atom/target, blocked = FALSE) + ..() + explosion(target, 0, 2, 5, 7, 0, flame_range = 8) new /obj/effect/temp_visual/explosion(get_turf(target)) return BULLET_ACT_HIT diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index 5950d55a1b..a13b10dbb9 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ