Merge pull request #5519 from Mechoid/Mech_Equipment_Carepackage1

Mech Equipment Carepackage 1: Mainly Weapon Slots
This commit is contained in:
Anewbe
2018-08-26 12:48:32 -05:00
committed by GitHub
21 changed files with 691 additions and 115 deletions

View File

@@ -208,7 +208,7 @@ var/list/mining_overlay_cache = list()
/turf/simulated/mineral/bullet_act(var/obj/item/projectile/Proj)
// Emitter blasts
if(istype(Proj, /obj/item/projectile/beam/emitter))
if(istype(Proj, /obj/item/projectile/beam/emitter) || istype(Proj, /obj/item/projectile/beam/heavylaser/fakeemitter))
emitter_blasts_taken++
if(emitter_blasts_taken > 2) // 3 blasts per tile
mined_ore = 1

View File

@@ -110,6 +110,11 @@
/obj/item/projectile/arc/fragmentation/on_impact(turf/T)
fragmentate(T, fragment_amount, spread_range, fragment_types)
/obj/item/projectile/arc/fragmentation/mortar
icon_state = "mortar"
fragment_amount = 10
spread_range = 3
// EMP arc shot
/obj/item/projectile/arc/emp_blast
name = "emp blast"

View File

@@ -58,6 +58,16 @@
tracer_type = /obj/effect/projectile/laser_heavy/tracer
impact_type = /obj/effect/projectile/laser_heavy/impact
/obj/item/projectile/beam/heavylaser/fakeemitter
name = "emitter beam"
icon_state = "emitter"
fire_sound = 'sound/weapons/emitter.ogg'
light_color = "#00CC33"
muzzle_type = /obj/effect/projectile/emitter/muzzle
tracer_type = /obj/effect/projectile/emitter/tracer
impact_type = /obj/effect/projectile/emitter/impact
/obj/item/projectile/beam/heavylaser/cannon
damage = 80
armor_penetration = 50

View File

@@ -129,6 +129,11 @@
range_step = 1
spread_step = 10
/obj/item/projectile/bullet/pellet/shotgun/flak
damage = 2 //The main weapon using these fires four at a time, usually with different destinations. Usually.
range_step = 2
spread_step = 30
armor_penetration = 10
//EMP shotgun 'slug', it's basically a beanbag that pops a tiny emp when it hits. //Not currently used
/obj/item/projectile/bullet/shotgun/ion

View File

@@ -76,6 +76,10 @@
damage = 15
armor_penetration = 20
/obj/item/projectile/bullet/pellet/fragment/weak
damage = 4
armor_penetration = 40
// Tank rupture fragments
/obj/item/projectile/bullet/pellet/fragment/tank
name = "metal fragment"

View File

@@ -291,6 +291,11 @@
id = "mech_taser"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
/datum/design/item/mecha/rigged_taser
name = "Jury-Rigged Taser"
id = "mech_taser-r"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser/rigged
/datum/design/item/mecha/shocker
name = "Exosuit Electrifier"
desc = "A device to electrify the external portions of a mecha in order to increase its defensive capabilities."
@@ -304,6 +309,11 @@
id = "mech_lmg"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg
/datum/design/item/mecha/rigged_lmg
name = "Jury-Rigged Machinegun"
id = "mech_lmg-r"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg/rigged
/datum/design/item/mecha/weapon
req_tech = list(TECH_COMBAT = 3)
materials = list(DEFAULT_WALL_MATERIAL = 8000, "glass" = 2000)
@@ -316,6 +326,13 @@
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
materials = list(DEFAULT_WALL_MATERIAL = 8000, "glass" = 3000, "plastic" = 2000, "silver" = 2500)
/datum/design/item/mecha/weapon/rigged_scattershot
name = "Jury-Rigged Shrapnel Cannon"
id = "mech_scattershot-r"
req_tech = list(TECH_COMBAT = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot/rigged
materials = list(DEFAULT_WALL_MATERIAL = 7000, "glass" = 2000, "plastic" = 2000, "silver" = 2000)
/datum/design/item/mecha/weapon/laser
name = "CH-PS \"Immolator\" Laser"
id = "mech_laser"
@@ -337,6 +354,34 @@
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 3000, "diamond" = 2000, "osmium" = 5000, "plastic" = 2000)
/datum/design/item/mecha/weapon/rigged_laser_heavy
name = "Jury-Rigged Emitter Cannon"
id = "mech_laser_heavy-r"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4, TECH_PHORON = 3, TECH_ILLEGAL = 1)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy/rigged
materials = list(DEFAULT_WALL_MATERIAL = 8000, "glass" = 4000, "diamond" = 1500, "osmium" = 4000, "plastic" = 2000)
/datum/design/item/mecha/weapon/laser_xray
name = "CH-XS \"Penetrator\" Laser"
id = "mech_laser_xray"
req_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3, TECH_PHORON = 3, TECH_POWER = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray
materials = list(DEFAULT_WALL_MATERIAL = 9000, "glass" = 3000, "phoron" = 1000, "silver" = 1500, "gold" = 2500, "plastic" = 2000)
/datum/design/item/mecha/weapon/rigged_laser_xray
name = "Jury-Rigged Xray Rifle"
id = "mech_laser_xray-r"
req_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3, TECH_PHORON = 3, TECH_POWER = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray/rigged
materials = list(DEFAULT_WALL_MATERIAL = 8500, "glass" = 2500, "phoron" = 1000, "silver" = 1250, "gold" = 2000, "plastic" = 2000)
/datum/design/item/mecha/weapon/phase
name = "NT-PE \"Scorpio\" Phase-Emitter"
id = "mech_phase"
req_tech = list(TECH_MATERIAL = 1, TECH_COMBAT = 2, TECH_MAGNET = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/phase
materials = list(DEFAULT_WALL_MATERIAL = 6000, "glass" = 3000, "plastic" = 3000)
/datum/design/item/mecha/weapon/ion
name = "MK-IV Ion Heavy Cannon"
id = "mech_ion"
@@ -344,20 +389,48 @@
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
materials = list(DEFAULT_WALL_MATERIAL = 15000, "uranium" = 2000, "silver" = 2000, "osmium" = 4500, "plastic" = 2000)
/datum/design/item/mecha/weapon/rigged_ion
name = "Jury-Rigged Ion Cannon"
id = "mech_ion-r"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion/rigged
materials = list(DEFAULT_WALL_MATERIAL = 13000, "uranium" = 1000, "silver" = 1000, "osmium" = 3000, "plastic" = 2000)
/datum/design/item/mecha/weapon/grenade_launcher
name = "SGL-6 Grenade Launcher"
id = "mech_grenade_launcher"
req_tech = list(TECH_COMBAT = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade
materials = list(DEFAULT_WALL_MATERIAL = 7000, "gold" = 2000, "plastic" = 3000)
/datum/design/item/mecha/weapon/rigged_grenade_launcher
name = "Jury-Rigged Pneumatic Flashlauncher"
id = "mech_grenade_launcher-rig"
req_tech = list(TECH_COMBAT = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/rigged
materials = list(DEFAULT_WALL_MATERIAL = 5000, "gold" = 2000, "plastic" = 2000)
/datum/design/item/mecha/weapon/clusterbang_launcher
name = "SOP-6 Grenade Launcher"
desc = "A weapon that violates the Geneva Convention at 6 rounds per minute."
id = "clusterbang_launcher"
req_tech = list(TECH_COMBAT= 5, TECH_MATERIAL = 5, TECH_ILLEGAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 15000, "gold" = 4500, "uranium" = 4500)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang/limited
/datum/design/item/mecha/weapon/conc_grenade_launcher
name = "SGL-9 Grenade Launcher"
id = "mech_grenade_launcher_conc"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_ILLEGAL = 1)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/concussion
materials = list(DEFAULT_WALL_MATERIAL = 9000, "gold" = 1000, "osmium" = 1000, "plastic" = 3000)
/datum/design/item/mecha/weapon/frag_grenade_launcher
name = "HEP-MI 6 Grenade Launcher"
id = "mech_grenade_launcher_frag"
req_tech = list(TECH_COMBAT = 4, TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_ILLEGAL = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/frag/mini
materials = list(DEFAULT_WALL_MATERIAL = 10000, "gold" = 2500, "uranium" = 3000, "osmium" = 3000, "plastic" = 3000)
/datum/design/item/mecha/weapon/flamer
name = "CR-3 Mark 8 Flamethrower"
@@ -422,6 +495,14 @@
materials = list(DEFAULT_WALL_MATERIAL = 7500, "gold" = 750, "silver" = 1500, "glass" = 3750)
build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid
/datum/design/item/mecha/shield_drone
name = "Shield Drone"
desc = "Manual shield drone. Deploys a large, familiar, and rectangular shield in one direction at a time."
id = "mech_shield_droid"
req_tech = list(TECH_PHORON = 3, TECH_MAGNET = 6, TECH_ILLEGAL = 4)
materials = list(DEFAULT_WALL_MATERIAL = 8000, "gold" = 2000, "silver" = 3000, "phoron" = 5000, "glass" = 3750)
build_path = /obj/item/mecha_parts/mecha_equipment/combat_shield
/datum/design/item/mecha/jetpack
name = "Ion Jetpack"
desc = "Using directed ion bursts and cunning solar wind reflection technique, this device enables controlled space flight."

View File

@@ -344,4 +344,49 @@
create_shield(temp_T, i == length_to_build ? turn(dir, -45) : dir)
// Finished.
update_shield_colors()
return TRUE
return TRUE
/obj/item/shield_projector/line/exosuit //Variant for Exosuit design.
name = "linear exosuit shield projector"
offset_from_center = 1 //Snug against the exosuit.
max_shield_health = 200
var/obj/mecha/my_mecha = null
var/obj/item/mecha_parts/mecha_equipment/combat_shield/my_tool = null
/obj/item/shield_projector/line/exosuit/process()
..()
if((my_tool && loc != my_tool) && (my_mecha && loc != my_mecha))
forceMove(my_tool)
if(active)
my_tool.set_ready_state(0)
if(my_mecha.has_charge(my_tool.energy_drain * 100)) //Stops at around 2000 charge.
my_mecha.use_power(my_tool.energy_drain)
else
destroy_shields()
my_tool.set_ready_state(1)
my_tool.log_message("Power lost.")
else
my_tool.set_ready_state(1)
/obj/item/shield_projector/line/exosuit/attack_self(var/mob/living/user)
if(active)
if(always_on)
to_chat(user, "<span class='warning'>You can't seem to deactivate \the [src].</span>")
return
destroy_shields()
else
if(istype(user.loc, /obj/mecha))
set_dir(user.loc.dir)
else
set_dir(user.dir)
create_shields()
visible_message("<span class='notice'>\The [user] [!active ? "de":""]activates \the [src].</span>")
/obj/item/shield_projector/line/exosuit/adjust_health(amount)
..()
my_mecha.use_power(my_tool.energy_drain)
if(!active && shield_health < shield_regen_amount)
my_tool.log_message("Shield overloaded.")
my_mecha.use_power(my_tool.energy_drain * 4)