Custom Kinetic Accelerators (#4802)

This is honestly one of my biggest and most ambitious projects. I hope people are happy with this.

Custom kinetic accelerators are special, customizable mining weapons that are meant to give a sense of progression, and a sense of pride and accomplishment while mining. Each custom KA is made up of 3 or 4 parts:

The Frame (5 to choose from)
The Cell (5 to choose from, +1 traitor)
The Barrel (5 to choose from, +1 traitor)
The Upgrade Chip (7 to choose from, +1 traitor)
The sprites change with each addon, they are truly dynamic and there are so many combinations of parts that a miner can have. You can have several different builds for each desired mining style, it's quite a robust system.

You can have a KA that shoots slowly, but delivers high-penetrating shots that go through several walls of rock. You can have a KA that shoots REALLY fast, but precisely destroys 1 rock at a time. You can have an absolute canon of a beast, that destroys rocks in a 3 tile radius around it.

The parts can be obtained via research, via abandoned crates, or via RNG in the cargo warehouse. There are some custom KAs that spawn on the raider's ship, on the mercs ship, and a laser one on the merc's headquarters. That laser one can also be bought from the traitor uplink as well.

ERT get a class 4 KA for use in special operations, if they choose to use it.
This commit is contained in:
BurgerLUA
2018-06-17 13:02:42 -07:00
committed by Erki
parent dd1ed0d21a
commit 9da929d4a1
30 changed files with 1316 additions and 355 deletions
+5 -1
View File
@@ -95,7 +95,11 @@
new/obj/item/weapon/pickaxe/gold(src)
if(81 to 82)
new/obj/item/weapon/gun/energy/plasmacutter(src)
if(83 to 84)
if(83)
new/obj/random/custom_ka(src)
new/obj/random/custom_ka(src)
new/obj/random/custom_ka(src)
if(84)
new/obj/item/toy/katana(src)
if(85)
new/obj/item/seeds/random(src)
+4 -16
View File
@@ -19,8 +19,7 @@
/obj/machinery/mineral/rigpress/attackby(obj/item/W, mob/user)
if(!pressing)
var/outcome_path
var/list/kinetic_mods = list()
var/kineticaccelerator
if(istype(W, /obj/item/clothing/glasses/material))
outcome_path = /obj/item/rig_module/vision/meson
@@ -33,13 +32,6 @@
if(istype(W, /obj/item/weapon/pickaxe/drill))
outcome_path = /obj/item/rig_module/device/basicdrill
if(istype(W, /obj/item/weapon/gun/energy/kinetic_accelerator))
outcome_path = /obj/item/rig_module/mounted/kinetic_accelerator
var/obj/item/weapon/gun/energy/kinetic_accelerator/KA = W
kineticaccelerator = 1
for(var/obj/item/borg/upgrade/modkit/kmod in KA.modkits)
kinetic_mods += kmod
if(istype(W, /obj/item/weapon/gun/energy/plasmacutter))
outcome_path = /obj/item/rig_module/mounted/plasmacutter
@@ -61,13 +53,9 @@
qdel(W)
spawn(300)
ping( "\The [src] pings, \"Module successfuly produced!\"" )
if(kineticaccelerator)
var/obj/item/rig_module/mounted/kinetic_accelerator/KA = new /obj/item/rig_module/mounted/kinetic_accelerator(src.loc)
var/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg/KGUN = KA.gun
for(var/obj/item/borg/upgrade/modkit/kmod in kinetic_mods)
KGUN.modkits += kmod
else
new outcome_path(src.loc)
new outcome_path(src.loc)
use_power(500)
pressing = 0
update_icon()
+3 -7
View File
@@ -17,12 +17,11 @@ var/global/list/minevendor_list = list( //keep in order of price
new /datum/data/mining_equipment("Lantern", /obj/item/device/flashlight/lantern, 10, 75),
new /datum/data/mining_equipment("Shovel", /obj/item/weapon/shovel, 15, 100),
new /datum/data/mining_equipment("Pickaxe", /obj/item/weapon/pickaxe, 10, 100),
new /datum/data/mining_equipment("KA White Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer, 40, 100),
new /datum/data/mining_equipment("Compressed rail cartridge", /obj/item/weapon/rrf_ammo, 50, 100),
new /datum/data/mining_equipment("Class E Kinetic Accelerator", /obj/item/weapon/gun/custom_ka/frame01/prebuilt, 12, 200),
new /datum/data/mining_equipment("Ore Box", /obj/structure/ore_box, -1, 150, 1),
new /datum/data/mining_equipment("Emergency Floodlight", /obj/item/weapon/floodlight_diy, -1, 150, 1),
new /datum/data/mining_equipment("Premium Cigar", /obj/item/clothing/mask/smokable/cigarette/cigar/havana, 30, 150),
new /datum/data/mining_equipment("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 30, 150),
new /datum/data/mining_equipment("Seismic Charge", /obj/item/weapon/plastique/seismic, 25, 150),
new /datum/data/mining_equipment("Lottery Chip", /obj/item/weapon/spacecash/ewallet/lotto, 50, 200),
new /datum/data/mining_equipment("Ripley Paint Kit", /obj/item/device/kit/paint/ripley/random, 15, 200),
@@ -30,6 +29,7 @@ var/global/list/minevendor_list = list( //keep in order of price
new /datum/data/mining_equipment("Mining Drill", /obj/item/weapon/pickaxe/drill, 10, 200),
new /datum/data/mining_equipment("Deep Ore Scanner", /obj/item/weapon/mining_scanner, 10, 250),
new /datum/data/mining_equipment("Magboots", /obj/item/clothing/shoes/magboots, 10, 300),
new /datum/data/mining_equipment("Class D Kinetic Accelerator", /obj/item/weapon/gun/custom_ka/frame02/prebuilt, 12, 400),
new /datum/data/mining_equipment("Autochisel", /obj/item/weapon/autochisel, 10, 400),
new /datum/data/mining_equipment("Jetpack", /obj/item/weapon/tank/jetpack, 10, 400),
new /datum/data/mining_equipment("Drone Drill Upgrade", /obj/item/device/mine_bot_ugprade, 10, 400),
@@ -45,20 +45,16 @@ var/global/list/minevendor_list = list( //keep in order of price
new /datum/data/mining_equipment("Minecart", /obj/vehicle/train/cargo/trolley/mining, -1, 600, 1),
new /datum/data/mining_equipment("Resonator", /obj/item/weapon/resonator, 10, 700),
new /datum/data/mining_equipment("Mining RIG", /obj/item/weapon/rig/industrial, 5, 750),
new /datum/data/mining_equipment("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 10, 750),
new /datum/data/mining_equipment("Jaunter", /obj/item/device/wormhole_jaunter, 20, 750),
new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator, 10, 750),
new /datum/data/mining_equipment("100 credits", /obj/item/weapon/spacecash/c100, -1, 1000),
new /datum/data/mining_equipment("Mass Driver", /obj/item/weapon/mass_driver_diy, 5, 800),
new /datum/data/mining_equipment("Mining Drone", /mob/living/silicon/robot/drone/mining, 15, 800),
new /datum/data/mining_equipment("Minecart Engine", /obj/vehicle/train/cargo/engine/mining, -1, 800, 1),
new /datum/data/mining_equipment("Drone Kinetic Accelerator Upgrade", /obj/item/device/mine_bot_ugprade/ka, 10, 800),
new /datum/data/mining_equipment("Drone KA Upgrade", /obj/item/device/mine_bot_ugprade/ka, 10, 800),
new /datum/data/mining_equipment("Ore Summoner", /obj/item/weapon/oreportal, 35, 800),
new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 15, 1000),
new /datum/data/mining_equipment("Lazarus Injector", /obj/item/weapon/lazarus_injector, 25, 1000),
new /datum/data/mining_equipment("Industrial Drill Head", /obj/machinery/mining/drill, -1, 1000, 1),
new /datum/data/mining_equipment("Super Resonator", /obj/item/weapon/resonator/upgraded, 10, 1250),
new /datum/data/mining_equipment("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/turfs, 15, 1500),
new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/weapon/pickaxe/diamond, 10, 1500),
new /datum/data/mining_equipment("Thermal Drill", /obj/item/weapon/gun/energy/vaurca/thermaldrill, 5, 3750)
)
+1
View File
@@ -27,6 +27,7 @@
new /obj/item/weapon/ore_radar(src)
new /obj/item/weapon/key/minecarts(src)
new /obj/item/device/gps/mining(src)
new /obj/item/weapon/book/manual/ka_custom(src)
/******************************Lantern*******************************/
+15
View File
@@ -53,8 +53,21 @@ var/list/mineral_can_smooth_with = list(
var/obj/effect/mineral/my_mineral
var/rock_health = 20 //10 to 20, in initialize
has_resources = 1
/turf/simulated/mineral/proc/kinetic_hit(var/damage,var/direction)
rock_health -= damage
if(rock_health <= 0)
var/turf/simulated/mineral/next_rock = get_step(src,direction)
if(istype(next_rock))
new /obj/effect/overlay/temp/kinetic_blast(next_rock)
next_rock.kinetic_hit(-rock_health,direction)
GetDrilled(1)
// Copypaste parent call for performance.
/turf/simulated/mineral/Initialize(mapload)
if (initialized)
@@ -83,6 +96,8 @@ var/list/mineral_can_smooth_with = list(
if (!mapload)
queue_smooth_neighbors(src)
rock_health = rand(10,20)
return INITIALIZE_HINT_NORMAL
/turf/simulated/mineral/examine(mob/user)