From 14045259fa104822141bac820d9b91bb44ed8fbc Mon Sep 17 00:00:00 2001 From: tralezab <40974010+tralezab@users.noreply.github.com> Date: Thu, 29 Jul 2021 02:17:03 -0700 Subject: [PATCH] Trash Cannons (#60476) --- code/_globalvars/lists/maintenance_loot.dm | 1 + code/datums/components/crafting/recipes.dm | 26 ++++ code/game/objects/items/granters.dm | 15 ++ code/game/objects/structures/cannon.dm | 103 ------------- .../game/objects/structures/cannons/cannon.dm | 138 ++++++++++++++++++ .../structures/cannons/cannon_instructions.dm | 20 +++ .../cannons}/cannonballs.dm | 12 ++ .../bullets/{cannon.dm => cannonball.dm} | 5 + icons/obj/cannons.dmi | Bin 0 -> 2516 bytes icons/obj/guns/projectiles.dmi | Bin 130382 -> 130608 bytes icons/obj/stack_objects.dmi | Bin 48683 -> 49289 bytes tgstation.dme | 7 +- 12 files changed, 221 insertions(+), 106 deletions(-) delete mode 100644 code/game/objects/structures/cannon.dm create mode 100644 code/game/objects/structures/cannons/cannon.dm create mode 100644 code/game/objects/structures/cannons/cannon_instructions.dm rename code/game/objects/{items/stacks => structures/cannons}/cannonballs.dm (83%) rename code/modules/projectiles/projectile/bullets/{cannon.dm => cannonball.dm} (91%) create mode 100644 icons/obj/cannons.dmi diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 14ba43ef0e8..530542d6581 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -314,6 +314,7 @@ GLOBAL_LIST_INIT(rarity_loot, list(//rare: really good items list(//misc /obj/item/disk/nuclear/fake = 1, /obj/item/book/granter/crafting_recipe/pipegun_prime = 1, + /obj/item/book/granter/crafting_recipe/trash_cannon = 1, ) = 1, )) diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm index ae175a8af4e..5a26c5ac75b 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -544,6 +544,32 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON +/datum/crafting_recipe/trash_cannon + name = "Trash Cannon" + always_available = FALSE + tool_behaviors = list(TOOL_WELDER, TOOL_SCREWDRIVER) + result = /obj/structure/cannon/trash + reqs = list( + /obj/item/melee/skateboard/improvised = 1, + /obj/item/tank/internals/oxygen/red = 1, + /datum/reagent/drug/maint/tar = 15, + /obj/item/restraints/handcuffs/cable = 1, + /obj/item/storage/toolbox = 1, + ) + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/trashball + name = "Trashball" + always_available = FALSE + result = /obj/item/stack/cannonball/trashball + reqs = list( + /obj/item/stack/sheet = 5, + /datum/reagent/consumable/space_cola = 10, + ) + category = CAT_WEAPONRY + subcategory = CAT_AMMO + /datum/crafting_recipe/chainsaw name = "Chainsaw" result = /obj/item/chainsaw diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 48d4e4005f6..5e8976e58df 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -444,3 +444,18 @@ /obj/item/book/granter/crafting_recipe/pipegun_prime/recoil(mob/living/carbon/user) to_chat(user, span_warning("The book turns to dust in your hands.")) qdel(src) + +/obj/item/book/granter/crafting_recipe/trash_cannon + name = "diary of a demoted engineer" + desc = "A lost journal. The engineer seems very deranged about their demotion." + crafting_recipe_types = list( + /datum/crafting_recipe/trash_cannon, + /datum/crafting_recipe/trashball, + ) + icon_state = "book1" + oneuse = TRUE + remarks = list("\"I'll show them! I'll build a CANNON!\"", "\"Gunpowder is ideal, but i'll have to improvise...\"", "\"I savor the look on the CE's face when I BLOW down the walls to engineering!\"", "\"If the supermatter gets loose from my rampage, so be it!\"", "\"I'VE GONE COMPLETELY MENTAL!\"") + +/obj/item/book/granter/crafting_recipe/trash_cannon/recoil(mob/living/carbon/user) + to_chat(user, span_warning("The book turns to dust in your hands.")) + qdel(src) diff --git a/code/game/objects/structures/cannon.dm b/code/game/objects/structures/cannon.dm deleted file mode 100644 index ce8b1807b82..00000000000 --- a/code/game/objects/structures/cannon.dm +++ /dev/null @@ -1,103 +0,0 @@ -/obj/structure/cannon - name = "cannon" - desc = "Holemaker Deluxe: A sporty model with a good stop power. Any cannon enthusiast should be expected to start here." - density = TRUE - anchored = TRUE - icon_state = "falconet_patina" - max_integrity = 300 - var/obj/item/stack/cannonball/loaded_cannonball = null - var/charge_ignited = FALSE - var/fire_delay = 15 - var/charge_size = 15 - var/fire_sound = 'sound/weapons/gun/general/cannon.ogg' - -/obj/structure/cannon/Initialize() - . = ..() - create_reagents(charge_size) - -/obj/structure/cannon/proc/fire() - for(var/mob/shaken_mob in urange(10, src)) - if(shaken_mob.stat == CONSCIOUS) - shake_camera(shaken_mob, 3, 1) - - playsound(src, fire_sound, 50, TRUE) - if(loaded_cannonball) - var/obj/projectile/fired_projectile = new loaded_cannonball.projectile_type(get_turf(src)) - QDEL_NULL(loaded_cannonball) - fired_projectile.firer = src - fired_projectile.fired_from = src - fired_projectile.fire(dir2angle(dir)) - reagents.remove_all() - charge_ignited = FALSE - -/obj/structure/cannon/attackby(obj/item/W, mob/user, params) - if(charge_ignited) - to_chat(user, span_danger("[src] is about to fire!")) - return - var/ignition_message = W.ignition_effect(src, user) - - if(istype(W, /obj/item/stack/cannonball)) - if(loaded_cannonball) - to_chat(user, span_warning("[src] is already loaded!")) - else - var/obj/item/stack/cannonball/cannoneers_balls = W - loaded_cannonball = new cannoneers_balls.type(src, 1) - loaded_cannonball.copy_evidences(cannoneers_balls) - to_chat(user, span_notice("You load a [cannoneers_balls.singular_name] into [src].")) - cannoneers_balls.use(1, transfer = TRUE) - return - - else if(ignition_message) - if(!reagents.has_reagent(/datum/reagent/gunpowder,15)) - to_chat(user, span_warning("[src] needs at least 15u of gunpowder to fire!")) - return - visible_message(ignition_message) - log_game("Cannon fired by [key_name(user)] in [AREACOORD(src)]") - addtimer(CALLBACK(src, .proc/fire), fire_delay) - charge_ignited = TRUE - return - - else if(istype(W, /obj/item/reagent_containers)) - var/obj/item/reagent_containers/powder_keg = W - if(!(powder_keg.reagent_flags & OPENCONTAINER)) - return ..() - if(istype(powder_keg, /obj/item/reagent_containers/glass/rag)) - return ..() - - if(!powder_keg.reagents.total_volume) - to_chat(user, span_warning("[powder_keg] is empty!")) - return - else if(!powder_keg.reagents.has_reagent(/datum/reagent/gunpowder, charge_size)) - to_chat(user, span_warning("[powder_keg] doesn't have at least 15u of gunpowder to fill [src]!")) - return - if(reagents.has_reagent(/datum/reagent/gunpowder, charge_size)) - to_chat(user, span_warning("[src] already contains a full charge of powder! It would be unwise to add more.")) - return - powder_keg.reagents.trans_id_to(src, /datum/reagent/gunpowder, amount = charge_size) - to_chat(user, span_notice("You load [src] with a charge of powder from [powder_keg].")) - return - if(W.tool_behaviour == TOOL_WRENCH) - if(default_unfasten_wrench(user, W, time = 2 SECONDS)) - return - ..() - -/obj/item/paper/crumpled/muddy/fluff/cannon_instructions - name = "Mast of Cannon's Past's Cannon Instructions" - desc = "A quickly written note detailing the basics of firing a cannon. Who wrote this?" - info = @{" - -Ye don't know how to load cannon, and ye call yerself a fearsome pirate? I think ye be more alike a space sailor under the space monarchy's flag! Alas, everyone must learn how to blast holes in enemy ships. And thus:
- -
HOW YE FIRES A CANNON:
- -BE STEP ONE: LOAD THE LEAD BALL O' YE CHOICE!
-BE STEP TWO: LOAD 15U PIRATE STANDARD CHARGE O' GUNPOWDER!
-BE STEP THREE: LIGHT THE FUSE WITH SOMETHING, AND LET ER' RIP!
- -
CANNONBALL TYPES:
- -REGULAR CANNONBALL: A fine choice for killing landlubbers! Will take off any limb it hits, and most certainly down anyone hit in the chest! If they are not directly hit, they will be at least hurt by the shrapnel!
-EXPLOSIVE SHELLBALL: The most elegant in breaching (er killin', if you're good at aimin') tools, ye be packing this shell with many scuppering chemicals! Just make sure to not fire it when ye be close to target!
-MALFUNCTION SHOT: A very gentle "cannonball" dart at first glance, but make no mistake: This is their worst nightmare! Enjoy an easy boarding process while all their machines are broken and all their weapons unloaded from an EMP!
-THE BIGGEST ONE: A shellball, but much bigger. Ye won't be seein' much of these as they were discontinued for sinkin' the firer's ship as often as it sunk the scallywag's ship. Very big boom! If ye have one, ye have been warned! - "} diff --git a/code/game/objects/structures/cannons/cannon.dm b/code/game/objects/structures/cannons/cannon.dm new file mode 100644 index 00000000000..395fb3b3147 --- /dev/null +++ b/code/game/objects/structures/cannons/cannon.dm @@ -0,0 +1,138 @@ +///how much projectile damage is lost when using a bad fuel +#define BAD_FUEL_DAMAGE_TAX 20 +///extra chance it explodes upon firing +#define BAD_FUEL_EXPLODE_PROBABILTY 10 + +/obj/structure/cannon + name = "cannon" + desc = "Holemaker Deluxe: A sporty model with a good stop power. Any cannon enthusiast should be expected to start here." + density = TRUE + anchored = TRUE + icon_state = "falconet_patina" + max_integrity = 300 + ///whether the cannon can be unwrenched from the ground. + var/anchorable_cannon = TRUE + var/obj/item/stack/cannonball/loaded_cannonball = null + var/charge_ignited = FALSE + var/fire_delay = 15 + var/charge_size = 15 + var/fire_sound = 'sound/weapons/gun/general/cannon.ogg' + +/obj/structure/cannon/Initialize() + . = ..() + create_reagents(charge_size) + +/obj/structure/cannon/examine(mob/user) + . = ..() + . += span_notice("[src] accepts gunpowder or welding fuel.") + . += span_warning("Using welding fuel will weaken the force of the projectile fired.") + +/obj/structure/cannon/proc/fire() + for(var/mob/shaken_mob in urange(10, src)) + if(shaken_mob.stat == CONSCIOUS) + shake_camera(shaken_mob, 3, 1) + + playsound(src, fire_sound, 50, TRUE) + flick(icon_state+"_fire", src) + if(loaded_cannonball) + var/obj/projectile/fired_projectile = new loaded_cannonball.projectile_type(get_turf(src)) + if(reagents.has_reagent(/datum/reagent/fuel, charge_size)) + fired_projectile.damage = max(2, fired_projectile.damage - BAD_FUEL_DAMAGE_TAX) + QDEL_NULL(loaded_cannonball) + fired_projectile.firer = src + fired_projectile.fired_from = src + fired_projectile.fire(dir2angle(dir)) + reagents.remove_all() + charge_ignited = FALSE + +/obj/structure/cannon/attackby(obj/item/used_item, mob/user, params) + if(charge_ignited) + balloon_alert(user, "it's gonna fire!") + return + var/ignition_message = used_item.ignition_effect(src, user) + + if(istype(used_item, /obj/item/stack/cannonball)) + if(loaded_cannonball) + balloon_alert(user, "already loaded!") + else + var/obj/item/stack/cannonball/cannoneers_balls = used_item + loaded_cannonball = new cannoneers_balls.type(src, 1) + loaded_cannonball.copy_evidences(cannoneers_balls) + balloon_alert(user, "loaded a [cannoneers_balls.singular_name]") + cannoneers_balls.use(1, transfer = TRUE) + return + + else if(ignition_message) + if(!reagents.has_reagent(/datum/reagent/gunpowder,charge_size) || !reagents.has_reagent(/datum/reagent/fuel,charge_size)) + balloon_alert(user, "needs [reagents.maximum_volume]u of charge!") + return + visible_message(ignition_message) + log_game("Cannon fired by [key_name(user)] in [AREACOORD(src)]") + addtimer(CALLBACK(src, .proc/fire), fire_delay) + charge_ignited = TRUE + return + + else if(istype(used_item, /obj/item/reagent_containers)) + var/obj/item/reagent_containers/powder_keg = used_item + if(!(powder_keg.reagent_flags & OPENCONTAINER)) + return ..() + if(istype(powder_keg, /obj/item/reagent_containers/glass/rag)) + return ..() + + if(!powder_keg.reagents.total_volume) + balloon_alert(user, "[powder_keg] is empty!") + return + if(reagents.total_volume == reagents.maximum_volume) + balloon_alert(user, "[src] is full!") + return + var/has_enough_gunpowder = powder_keg.reagents.has_reagent(/datum/reagent/gunpowder, charge_size) + var/has_enough_alt_fuel = powder_keg.reagents.has_reagent(/datum/reagent/fuel, charge_size) + if(!has_enough_gunpowder && !has_enough_alt_fuel) + balloon_alert(user, "[powder_keg] needs 15u of charge to load!") + to_chat(user, span_warning("[powder_keg] doesn't have at least 15u of gunpowder to fill [src]!")) + return + if(has_enough_gunpowder) + powder_keg.reagents.trans_id_to(src, /datum/reagent/gunpowder, amount = charge_size) + balloon_alert(user, "[src] loaded with gunpowder") + return + if(has_enough_alt_fuel) + powder_keg.reagents.trans_id_to(src, /datum/reagent/fuel, amount = charge_size) + balloon_alert(user, "[src] loaded with welding fuel") + return + if(anchorable_cannon && used_item.tool_behaviour == TOOL_WRENCH) + if(default_unfasten_wrench(user, used_item, time = 2 SECONDS)) + return + ..() + +/obj/structure/cannon/trash + name = "trash cannon" + desc = "Okay, sure, you could call it a toolbox welded to an opened oxygen tank cabled to a skateboard, but it's a TRASH CANNON to us." + icon_state = "garbagegun" + anchored = FALSE + anchorable_cannon = FALSE + var/fires_before_deconstruction = 5 + +/obj/structure/cannon/trash/fire() + var/explode_chance = 10 + var/used_alt_fuel = reagents.has_reagent(/datum/reagent/fuel, charge_size) + if(used_alt_fuel) + explode_chance += BAD_FUEL_EXPLODE_PROBABILTY + . = ..() + fires_before_deconstruction-- + if(used_alt_fuel) + fires_before_deconstruction-- + if(prob(explode_chance)) + visible_message(span_userdanger("[src] explodes!")) + explosion(src, heavy_impact_range = 1, light_impact_range = 5, flame_range = 5) + return + if(fires_before_deconstruction <= 0) + visible_message(span_warning("[src] falls apart from operation!")) + qdel(src) + +/obj/structure/cannon/trash/Destroy() + new /obj/item/stack/sheet/iron/five(src.loc) + new /obj/item/stack/rods(src.loc) + . = ..() + +#undef BAD_FUEL_DAMAGE_TAX +#undef BAD_FUEL_EXPLODE_PROBABILTY diff --git a/code/game/objects/structures/cannons/cannon_instructions.dm b/code/game/objects/structures/cannons/cannon_instructions.dm new file mode 100644 index 00000000000..1ae484598d0 --- /dev/null +++ b/code/game/objects/structures/cannons/cannon_instructions.dm @@ -0,0 +1,20 @@ +/obj/item/paper/crumpled/muddy/fluff/cannon_instructions + name = "Mast of Cannon's Past's Cannon Instructions" + desc = "A quickly written note detailing the basics of firing a cannon. Who wrote this?" + info = @{" + +Ye don't know how to load cannon, and ye call yerself a fearsome pirate? I think ye be more alike a space sailor under the space monarchy's flag! Alas, everyone must learn how to blast holes in enemy ships. And thus:
+ +
HOW YE FIRES A CANNON:
+ +BE STEP ONE: LOAD THE LEAD BALL O' YE CHOICE!
+BE STEP TWO: LOAD 15U PIRATE STANDARD CHARGE O' GUNPOWDER!
+BE STEP THREE: LIGHT THE FUSE WITH SOMETHING, AND LET ER' RIP!
+ +
CANNONBALL TYPES:
+ +REGULAR CANNONBALL: A fine choice for killing landlubbers! Will take off any limb it hits, and most certainly down anyone hit in the chest! If they are not directly hit, they will be at least hurt by the shrapnel!
+EXPLOSIVE SHELLBALL: The most elegant in breaching (er killin', if you're good at aimin') tools, ye be packing this shell with many scuppering chemicals! Just make sure to not fire it when ye be close to target!
+MALFUNCTION SHOT: A very gentle "cannonball" dart at first glance, but make no mistake: This is their worst nightmare! Enjoy an easy boarding process while all their machines are broken and all their weapons unloaded from an EMP!
+THE BIGGEST ONE: A shellball, but much bigger. Ye won't be seein' much of these as they were discontinued for sinkin' the firer's ship as often as it sunk the scallywag's ship. Very big boom! If ye have one, ye have been warned! + "} diff --git a/code/game/objects/items/stacks/cannonballs.dm b/code/game/objects/structures/cannons/cannonballs.dm similarity index 83% rename from code/game/objects/items/stacks/cannonballs.dm rename to code/game/objects/structures/cannons/cannonballs.dm index 4f66129932f..62a05a270aa 100644 --- a/code/game/objects/items/stacks/cannonballs.dm +++ b/code/game/objects/structures/cannons/cannonballs.dm @@ -56,3 +56,15 @@ /obj/item/stack/cannonball/the_big_one/five amount = 5 + +/obj/item/stack/cannonball/trashball + name = "trashballs" + singular_name = "trashball" + desc = "A clump of tightly packed garbage. It'll work as a cannonball, but it may be unhealthy to actually put this in a real cannon." + max_amount = 4 + icon_state = "trashballs" + merge_type = /obj/item/stack/cannonball/trashball + projectile_type = /obj/projectile/bullet/cannonball/trashball + +/obj/item/stack/cannonball/trashball/four + amount = 4 diff --git a/code/modules/projectiles/projectile/bullets/cannon.dm b/code/modules/projectiles/projectile/bullets/cannonball.dm similarity index 91% rename from code/modules/projectiles/projectile/bullets/cannon.dm rename to code/modules/projectiles/projectile/bullets/cannonball.dm index b879e80bf97..9ee931e7f1f 100644 --- a/code/modules/projectiles/projectile/bullets/cannon.dm +++ b/code/modules/projectiles/projectile/bullets/cannonball.dm @@ -57,3 +57,8 @@ if(projectile_piercing == NONE) explosion(target, devastation_range = GLOB.MAX_EX_DEVESTATION_RANGE, heavy_impact_range = GLOB.MAX_EX_HEAVY_RANGE, light_impact_range = GLOB.MAX_EX_LIGHT_RANGE, flash_range = GLOB.MAX_EX_FLASH_RANGE) . = ..() + +/obj/projectile/bullet/cannonball/trashball + name = "trashball" + icon_state = "trashball" + damage = 90 //better than the biggest one but no explosion, so kinda just a worse normal cannonball diff --git a/icons/obj/cannons.dmi b/icons/obj/cannons.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f0e37c5310ac6df930f04db8881eeba4f3064d52 GIT binary patch literal 2516 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 DuyQm% diff --git a/icons/obj/stack_objects.dmi b/icons/obj/stack_objects.dmi index 1878898028432179504efa2df9eadc2d2bf7559d..e739ad63c7be6135204cb09d61eec1b3c4bf3bea 100644 GIT binary patch delta 7525 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 AmjD0& delta 6913 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 JEQOf){U3?<&gK9B diff --git a/tgstation.dme b/tgstation.dme index 06d0043836d..f1232291af1 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1343,7 +1343,6 @@ #include "code\game\objects\items\robot\robot_upgrades.dm" #include "code\game\objects\items\stacks\ammonia_crystals.dm" #include "code\game\objects\items\stacks\bscrystal.dm" -#include "code\game\objects\items\stacks\cannonballs.dm" #include "code\game\objects\items\stacks\cash.dm" #include "code\game\objects\items\stacks\license_plates.dm" #include "code\game\objects\items\stacks\medical.dm" @@ -1398,7 +1397,6 @@ #include "code\game\objects\structures\artstuff.dm" #include "code\game\objects\structures\barsigns.dm" #include "code\game\objects\structures\bedsheet_bin.dm" -#include "code\game\objects\structures\cannon.dm" #include "code\game\objects\structures\chess.dm" #include "code\game\objects\structures\destructible_structures.dm" #include "code\game\objects\structures\displaycase.dm" @@ -1464,6 +1462,9 @@ #include "code\game\objects\structures\beds_chairs\chair.dm" #include "code\game\objects\structures\beds_chairs\pew.dm" #include "code\game\objects\structures\beds_chairs\sofa.dm" +#include "code\game\objects\structures\cannons\cannon.dm" +#include "code\game\objects\structures\cannons\cannon_instructions.dm" +#include "code\game\objects\structures\cannons\cannonballs.dm" #include "code\game\objects\structures\construction_console\construction_actions.dm" #include "code\game\objects\structures\construction_console\construction_console.dm" #include "code\game\objects\structures\construction_console\construction_console_aux.dm" @@ -3159,7 +3160,7 @@ #include "code\modules\projectiles\projectile\bullets.dm" #include "code\modules\projectiles\projectile\magic.dm" #include "code\modules\projectiles\projectile\bullets\_incendiary.dm" -#include "code\modules\projectiles\projectile\bullets\cannon.dm" +#include "code\modules\projectiles\projectile\bullets\cannonball.dm" #include "code\modules\projectiles\projectile\bullets\dart_syringe.dm" #include "code\modules\projectiles\projectile\bullets\dnainjector.dm" #include "code\modules\projectiles\projectile\bullets\grenade.dm"