From 509addffdf7c924abea66dfac19fa0dc03712e02 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Thu, 23 Aug 2018 20:06:51 -0700 Subject: [PATCH] Adds a whole bunch of Exosuit weapons and other miscellaneous parts. --- code/game/mecha/combat/gygax.dm | 2 +- code/game/mecha/equipment/mecha_equipment.dm | 11 +- .../mecha/equipment/tools/medical_tools.dm | 1 + code/game/mecha/equipment/tools/tools.dm | 84 ++++- code/game/mecha/equipment/weapons/weapons.dm | 301 +++++++++++++++--- code/game/mecha/mecha.dm | 140 ++++---- .../items/weapons/grenades/concussion.dm | 85 +++++ .../items/weapons/grenades/explosive.dm | 13 + code/game/objects/structures/loot_piles.dm | 4 +- code/modules/mining/mine_turfs.dm | 2 +- code/modules/projectiles/projectile/arc.dm | 5 + code/modules/projectiles/projectile/beams.dm | 10 + .../modules/projectiles/projectile/bullets.dm | 5 + code/modules/research/mechfab_designs.dm | 85 ++++- code/modules/shieldgen/directional_shield.dm | 47 ++- html/changelogs/Mechoid - MechaWeapons.yml | 7 + icons/mecha/mecha_equipment.dmi | Bin 24965 -> 34360 bytes icons/obj/grenade.dmi | Bin 4027 -> 4156 bytes icons/obj/projectiles.dmi | Bin 57684 -> 58493 bytes polaris.dme | 1 + 20 files changed, 689 insertions(+), 114 deletions(-) create mode 100644 code/game/objects/items/weapons/grenades/concussion.dm create mode 100644 html/changelogs/Mechoid - MechaWeapons.yml diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index 22b52e6203..591351032b 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -48,7 +48,7 @@ ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot ME.attach(src) - ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang + ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/teleporter ME.attach(src) diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 1c1bfdff22..16c6dd72f5 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -19,6 +19,7 @@ var/salvageable = 1 var/required_type = /obj/mecha //may be either a type or a list of allowed types var/equip_type = null //mechaequip2 + var/allow_duplicate = 0 /obj/item/mecha_parts/mecha_equipment/proc/do_after_cooldown(target=1) sleep(equip_cooldown) @@ -103,15 +104,19 @@ return 0 return 1 +/obj/item/mecha_parts/mecha_equipment/proc/handle_movement_action() //Any modules that have special effects or needs when moving. + return + /obj/item/mecha_parts/mecha_equipment/proc/action(atom/target) return /obj/item/mecha_parts/mecha_equipment/proc/can_attach(obj/mecha/M as obj) //if(M.equipment.len >= M.max_equip) // return 0 - for(var/obj/item/mecha_parts/mecha_equipment/ME in M.equipment) //Exact duplicate components aren't allowed. - if(ME.type == src.type) - return 0 + if(!allow_duplicate) + for(var/obj/item/mecha_parts/mecha_equipment/ME in M.equipment) //Exact duplicate components aren't allowed. + if(ME.type == src.type) + return 0 if(equip_type == EQUIP_HULL && M.hull_equipment.len < M.max_hull_equip) return 1 if(equip_type == EQUIP_WEAPON && M.weapon_equipment.len < M.max_weapon_equip) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 70edf23665..ae01d0c6b5 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -12,6 +12,7 @@ var/inject_amount = 5 required_type = /obj/mecha/medical salvageable = 0 + allow_duplicate = 1 /obj/item/mecha_parts/mecha_equipment/tool/sleeper/New() ..() diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index e5e7c929f7..da9d052cc2 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -236,7 +236,6 @@ /obj/item/mecha_parts/mecha_equipment/tool/extinguisher/on_reagent_change() return - /obj/item/mecha_parts/mecha_equipment/tool/rcd name = "mounted RCD" desc = "An exosuit-mounted Rapid Construction Device. (Can be attached to: Any exosuit)" @@ -827,6 +826,88 @@ A.use_power(delta*ER.coeff, pow_chan) return +/obj/item/mecha_parts/mecha_equipment/combat_shield + name = "linear combat shield" + desc = "A shield generator that forms a rectangular, unidirectionally projectile-blocking wall in front of the exosuit." + icon_state = "shield" + origin_tech = list(TECH_PHORON = 3, TECH_MAGNET = 6, TECH_ILLEGAL = 4) + equip_cooldown = 5 + energy_drain = 20 + range = 0 + + var/obj/item/shield_projector/line/exosuit/my_shield = null + var/my_shield_type = /obj/item/shield_projector/line/exosuit + var/icon/drone_overlay + + equip_type = EQUIP_HULL + +/obj/item/mecha_parts/mecha_equipment/combat_shield/New() + ..() + my_shield = new my_shield_type + my_shield.shield_regen_delay = equip_cooldown + my_shield.my_tool = src + return + +/obj/item/mecha_parts/mecha_equipment/combat_shield/critfail() + ..() + my_shield.adjust_health(-200) + return + +/obj/item/mecha_parts/mecha_equipment/combat_shield/Destroy() + chassis.overlays -= drone_overlay + my_shield.forceMove(src) + my_shield.destroy_shields() + my_shield.my_tool = null + my_shield.my_mecha = null + qdel(my_shield) + my_shield = null + ..() + +/obj/item/mecha_parts/mecha_equipment/combat_shield/attach(obj/mecha/M as obj) + ..() + if(chassis) + my_shield.shield_health = my_shield.shield_health / 2 + my_shield.my_mecha = chassis + my_shield.forceMove(chassis) + + drone_overlay = new(src.icon, icon_state = "shield_droid") + M.overlays += drone_overlay + return + +/obj/item/mecha_parts/mecha_equipment/combat_shield/detach() + chassis.overlays -= drone_overlay + ..() + my_shield.destroy_shields() + my_shield.my_mecha = null + my_shield.shield_health = my_shield.max_shield_health + my_shield.forceMove(src) + return + +/obj/item/mecha_parts/mecha_equipment/combat_shield/handle_movement_action() + if(chassis) + my_shield.update_shield_positions() + return + +/obj/item/mecha_parts/mecha_equipment/combat_shield/proc/toggle_shield() + ..() + if(chassis) + my_shield.attack_self(chassis.occupant) + if(my_shield.active) + set_ready_state(0) + log_message("Activated.") + else + set_ready_state(1) + log_message("Deactivated.") + +/obj/item/mecha_parts/mecha_equipment/combat_shield/Topic(href, href_list) + ..() + if(href_list["toggle_shield"]) + toggle_shield() + return + +/obj/item/mecha_parts/mecha_equipment/combat_shield/get_equip_info() + if(!chassis) return + return "* [src.name] - [my_shield.active?"Dea":"A"]ctivate" /obj/item/mecha_parts/mecha_equipment/generator @@ -1072,6 +1153,7 @@ var/mob/living/carbon/occupant = null var/door_locked = 1 salvageable = 0 + allow_duplicate = 1 equip_type = EQUIP_HULL diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 7ffc0dd49b..23419b4eba 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -47,13 +47,45 @@ if(auto_rearm) projectiles = projectiles_per_shot // set_ready_state(0) + + var/target_for_log + if(ismob(target)) + target_for_log = target + else + target_for_log = "[target.name]" + + add_attack_logs(chassis.occupant,target_for_log,"Fired exosuit weapon [src.name] (MANUAL)") + do_after_cooldown() + return /obj/item/mecha_parts/mecha_equipment/weapon/proc/Fire(atom/A, atom/target) var/obj/item/projectile/P = A + P.dispersion = deviation + process_accuracy(P, chassis.occupant, target) P.launch(target) +/obj/item/mecha_parts/mecha_equipment/weapon/proc/process_accuracy(obj/projectile, mob/living/user, atom/target) + var/obj/item/projectile/P = projectile + if(!istype(P)) + return + + // Certain statuses make it harder to aim, blindness especially. Same chances as melee, however guns accuracy uses multiples of 15. + if(user.eye_blind) + P.accuracy -= 75 + if(user.eye_blurry) + P.accuracy -= 30 + if(user.confused) + P.accuracy -= 45 + + // Some modifiers make it harder or easier to hit things. + for(var/datum/modifier/M in user.modifiers) + if(!isnull(M.accuracy)) + P.accuracy += M.accuracy + if(!isnull(M.accuracy_dispersion)) + P.dispersion = max(P.dispersion + M.accuracy_dispersion, 0) + /obj/item/mecha_parts/mecha_equipment/weapon/energy name = "general energy weapon" auto_rearm = 1 @@ -61,42 +93,111 @@ /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser equip_cooldown = 8 name = "\improper CH-PS \"Immolator\" laser" + desc = "A laser carbine's firing system mounted on a high-powered exosuit weapon socket." icon_state = "mecha_laser" energy_drain = 30 projectile = /obj/item/projectile/beam fire_sound = 'sound/weapons/Laser.ogg' + origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 3, TECH_MAGNET = 3) + +/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray + equip_cooldown = 6 + name = "\improper CH-XS \"Penetrator\" laser" + desc = "A large, mounted variant of the anti-armor xray rifle." + icon_state = "mecha_xray" + energy_drain = 150 + projectile = /obj/item/projectile/beam/xray + fire_sound = 'sound/weapons/eluger.ogg' + + origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3, TECH_PHORON = 3, TECH_POWER = 3) + +/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray/rigged + equip_cooldown = 12 + name = "jury-rigged xray rifle" + desc = "A modified wormhole modulation array and meson-scanning control system allow this abomination to produce concentrated blasts of xrays." + energy_drain = 175 + icon_state = "mecha_xray-rig" + + equip_type = EQUIP_UTILITY + /obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser - equip_cooldown = 30 + equip_cooldown = 15 name = "jury-rigged welder-laser" desc = "While not regulation, this inefficient weapon can be attached to working exo-suits in desperate, or malicious, times." icon_state = "mecha_laser-rig" - energy_drain = 80 + energy_drain = 60 projectile = /obj/item/projectile/beam fire_sound = 'sound/weapons/Laser.ogg' required_type = list(/obj/mecha/combat, /obj/mecha/working) equip_type = EQUIP_UTILITY + origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 2, TECH_MAGNET = 2) + /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy equip_cooldown = 15 name = "\improper CH-LC \"Solaris\" laser cannon" + desc = "In the Solaris, the lasing medium is enclosed in a tube lined with plutonium-239 and subjected to extreme neutron flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with massive laser volumes!" icon_state = "mecha_laser" energy_drain = 60 projectile = /obj/item/projectile/beam/heavylaser fire_sound = 'sound/weapons/lasercannonfire.ogg' + origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 4, TECH_MAGNET = 4) + +/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy/rigged + equip_cooldown = 25 + name = "jury-rigged emitter cannon" + desc = "While not regulation, this mining tool can be used as an inefficient weapon on working exo-suits in desperate, or malicious, times." + icon_state = "mecha_emitter" + energy_drain = 80 + projectile = /obj/item/projectile/beam/heavylaser/fakeemitter + fire_sound = 'sound/weapons/emitter.ogg' + + equip_type = EQUIP_UTILITY + + origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4, TECH_PHORON = 3, TECH_ILLEGAL = 1) + +/obj/item/mecha_parts/mecha_equipment/weapon/energy/phase + equip_cooldown = 6 + name = "\improper NT-PE \"Scorpio\" phase-emitter" + desc = "A specialist energy weapon intended for use against hostile wildlife." + description_fluff = "Essentially an Orion mounted inside a modified Gaia case." + icon_state = "mecha_phase" + energy_drain = 25 + projectile = /obj/item/projectile/energy/phase + fire_sound = 'sound/weapons/Taser.ogg' + + equip_type = EQUIP_UTILITY + + origin_tech = list(TECH_MATERIAL = 1, TECH_COMBAT = 2, TECH_MAGNET = 2) + /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion equip_cooldown = 40 name = "mkIV ion heavy cannon" + desc = "An upscaled variant of anti-mechanical weaponry constructed by NT, such as the EW Halicon." icon_state = "mecha_ion" energy_drain = 120 projectile = /obj/item/projectile/ion fire_sound = 'sound/weapons/Laser.ogg' + origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 4, TECH_MAGNET = 4) + +/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion/rigged + equip_cooldown = 30 + name = "jury-rigged ion cannon" + desc = "A tesla coil modified to amplify an ionic wave, and use it as a projectile." + icon_state = "mecha_ion-rig" + energy_drain = 100 + projectile = /obj/item/projectile/ion/pistol + + equip_type = EQUIP_UTILITY + /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse equip_cooldown = 30 name = "eZ-13 mk2 heavy pulse rifle" + desc = "An experimental Anti-Everything weapon." icon_state = "mecha_pulse" energy_drain = 120 origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 6, TECH_POWER = 4) @@ -108,24 +209,34 @@ icon_state = "pulse1_bl" var/life = 20 - Bump(atom/A) - A.bullet_act(src, def_zone) - src.life -= 10 - if(life <= 0) - qdel(src) - return +/obj/item/projectile/beam/pulse/heavy/Bump(atom/A) + A.bullet_act(src, def_zone) + src.life -= 10 + if(life <= 0) + qdel(src) + return /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser name = "\improper PBT \"Pacifier\" mounted taser" + desc = "A large taser of similar design as those used in standard NT turrets, for use on an Exosuit." icon_state = "mecha_taser" energy_drain = 20 equip_cooldown = 8 projectile = /obj/item/projectile/beam/stun fire_sound = 'sound/weapons/Taser.ogg' +/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser/rigged + name = "jury-rigged static rifle" + desc = "A vaguely functional taser analog, inside an extinguisher casing." + icon_state = "mecha_taser-rig" + energy_drain = 30 + projectile = /obj/item/projectile/beam/stun/weak + + equip_type = EQUIP_UTILITY /obj/item/mecha_parts/mecha_equipment/weapon/honker name = "sound emission device" + desc = "A perfectly normal bike-horn, for your exosuit." icon_state = "mecha_honker" energy_drain = 300 equip_cooldown = 150 @@ -133,7 +244,7 @@ equip_type = EQUIP_SPECIAL -/obj/item/mecha_parts/mecha_equipment/honker/action(target) +/obj/item/mecha_parts/mecha_equipment/weapon/honker/action(target) if(!chassis) return 0 if(energy_drain && chassis.get_charge() < energy_drain) @@ -165,41 +276,78 @@ name = "general ballisic weapon" var/projectile_energy_cost - get_equip_info() - return "[..()]\[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - Rearm":null]" +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/get_equip_info() + return "[..()]\[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - Rearm":null]" - proc/rearm() - if(projectiles < initial(projectiles)) - var/projectiles_to_add = initial(projectiles) - projectiles - while(chassis.get_charge() >= projectile_energy_cost && projectiles_to_add) - projectiles++ - projectiles_to_add-- - chassis.use_power(projectile_energy_cost) - send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) - log_message("Rearmed [src.name].") - return +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/proc/rearm() + if(projectiles < initial(projectiles)) + var/projectiles_to_add = initial(projectiles) - projectiles + while(chassis.get_charge() >= projectile_energy_cost && projectiles_to_add) + projectiles++ + projectiles_to_add-- + chassis.use_power(projectile_energy_cost) + send_byjax(chassis.occupant,"exosuit.browser","\ref[src]",src.get_equip_info()) + log_message("Rearmed [src.name].") + return - Topic(href, href_list) - ..() - if (href_list["rearm"]) - src.rearm() - return +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/Topic(href, href_list) + ..() + if (href_list["rearm"]) + src.rearm() + return +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/mortar + name = "\improper HEP RC 4 \"Skyfall\"" + desc = "A Hephaestus exosuit-mounted mortar for use on planetary-or-similar bodies." + description_info = "This weapon cannot be fired indoors, underground, or on-station." + icon_state = "mecha_mortar" + equip_cooldown = 30 + fire_sound = 'sound/weapons/cannon.ogg' + fire_volume = 100 + projectiles = 3 + deviation = 0.6 + projectile = /obj/item/projectile/arc/fragmentation/mortar + projectile_energy_cost = 600 + + origin_tech = list(TECH_MATERIAL = 4, TECH_COMBAT = 5, TECH_ILLEGAL = 3) + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/mortar/action_checks(atom/target) + var/turf/MT = get_turf(chassis) + var/turf/TT = get_turf(target) + if(!MT.outdoors || !TT.outdoors) + to_chat(chassis.occupant, "\The [src]'s control system prevents you from firing due to a blocked firing arc.") + return 0 + return ..() /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot name = "\improper LBX AC 10 \"Scattershot\"" + desc = "A massive shotgun designed to fill a large area with pellets." icon_state = "mecha_scatter" equip_cooldown = 20 - projectile = /obj/item/projectile/bullet/pistol/medium - fire_sound = 'sound/weapons/Gunshot.ogg' + projectile = /obj/item/projectile/bullet/pellet/shotgun/flak + fire_sound = 'sound/weapons/gunshot/shotgun.ogg' fire_volume = 80 projectiles = 40 projectiles_per_shot = 4 deviation = 0.7 projectile_energy_cost = 25 + origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 4) + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot/rigged + name = "jury-rigged shrapnel cannon" + desc = "The remains of some unfortunate RCD now doomed to kill, rather than construct." + icon_state = "mecha_scatter-rig" + equip_cooldown = 30 + fire_volume = 100 + projectiles = 20 + deviation = 1 + + equip_type = EQUIP_UTILITY + /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg name = "\improper Ultra AC 2" + desc = "A superior version of the standard Solgov Autocannon MK2 design." icon_state = "mecha_uac2" equip_cooldown = 10 projectile = /obj/item/projectile/bullet/pistol/medium @@ -210,6 +358,16 @@ projectile_energy_cost = 20 fire_cooldown = 2 +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg/rigged + name = "jury-rigged machinegun" + desc = "The cross between a jackhammer and a whole lot of zipguns." + icon_state = "mecha_uac2-rig" + equip_cooldown = 12 + projectile = /obj/item/projectile/bullet/pistol + deviation = 0.5 + + equip_type = EQUIP_UTILITY + /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack var/missile_speed = 2 var/missile_range = 30 @@ -219,6 +377,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flare name = "\improper BNI Flare Launcher" + desc = "A flare-gun, but bigger." icon_state = "mecha_flaregun" projectile = /obj/item/device/flashlight/flare fire_sound = 'sound/weapons/tablehit1.ogg' @@ -239,6 +398,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive name = "\improper SRM-8 missile rack" + desc = "A missile battery that holds eight missiles." icon_state = "mecha_missilerack" projectile = /obj/item/missile fire_sound = 'sound/weapons/rpg.ogg' @@ -256,17 +416,40 @@ icon_state = "missile" var/primed = null throwforce = 15 + var/devastation = 0 + var/heavy_blast = 1 + var/light_blast = 2 + var/flash_blast = 4 + +/obj/item/missile/proc/warhead_special(var/target) + explosion(target, devastation, heavy_blast, light_blast, flash_blast) + return /obj/item/missile/throw_impact(atom/hit_atom) if(primed) - explosion(hit_atom, 0, 1, 2, 4) + warhead_special(hit_atom) qdel(src) else ..() return -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang +/obj/item/missile/light + throwforce = 10 + heavy_blast = 0 + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive/rigged + name = "jury-rigged rocket pod" + desc = "A series of pipes, tubes, and cables that resembles a rocket pod." + icon_state = "mecha_missilerack-rig" + projectile = /obj/item/missile/light + projectiles = 3 + projectile_energy_cost = 800 + + equip_type = EQUIP_UTILITY + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade name = "\improper SGL-6 grenade launcher" + desc = "A grenade launcher produced for SWAT use; fires flashbangs." icon_state = "mecha_grenadelnchr" projectile = /obj/item/weapon/grenade/flashbang fire_sound = 'sound/effects/bang.ogg' @@ -276,22 +459,64 @@ equip_cooldown = 60 var/det_time = 20 -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/Fire(atom/movable/AM, atom/target, turf/aimloc) - ..() - var/obj/item/weapon/grenade/flashbang/F = AM - spawn(det_time) - F.detonate() +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/rigged + name = "jury-rigged pneumatic flashlauncher" + desc = "A grenade launcher constructed out of estranged blueprints; fires flashbangs." + icon_state = "mecha_grenadelnchr-rig" + projectiles = 3 + missile_speed = 1 + det_time = 25 -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang//Because I am a heartless bastard -Sieve +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/Fire(atom/movable/AM, atom/target, turf/aimloc) + var/obj/item/weapon/grenade/G = AM + if(istype(G)) + G.det_time = det_time + G.activate(chassis.occupant) //Grenades actually look primed and dangerous, handle their own stuff. + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang//Because I am a heartless bastard -Sieve name = "\improper SOP-6 grenade launcher" + desc = "A grenade launcher produced for use by government uprising subjugation forces, or that's what you might guess; fires matryoshka flashbangs." projectile = /obj/item/weapon/grenade/flashbang/clusterbang -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited/get_equip_info()//Limited version of the clusterbang launcher that can't reload + origin_tech = list(TECH_COMBAT= 5, TECH_MATERIAL = 5, TECH_ILLEGAL = 3) + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang/limited/get_equip_info()//Limited version of the clusterbang launcher that can't reload return "* [chassis.selected==src?"":""][src.name][chassis.selected==src?"":""]\[[src.projectiles]\]" -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited/rearm() +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang/limited/rearm() return//Extra bit of security +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/concussion + name = "\improper SGL-9 grenade launcher" + desc = "A military-grade grenade launcher that fires disorienting concussion grenades." + icon_state = "mecha_grenadelnchr" + projectile = /obj/item/weapon/grenade/concussion + missile_speed = 1 + projectile_energy_cost = 900 + equip_cooldown = 50 + det_time = 25 + + origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_ILLEGAL = 1) + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/frag + name = "\improper HEP-I 5 grenade launcher" + desc = "A military-grade grenade launcher that fires anti-personnel fragmentation grenades." + icon_state = "mecha_fraglnchr" + projectile = /obj/item/weapon/grenade/explosive + projectiles = 4 + missile_speed = 1 + + origin_tech = list(TECH_COMBAT = 5, TECH_ENGINEERING = 5, TECH_MATERIAL = 5, TECH_ILLEGAL = 3) + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/frag/mini + name = "\improper HEP-MI 6 grenade launcher" + desc = "A military-grade grenade launcher that fires miniaturized anti-personnel fragmentation grenades." + projectile = /obj/item/weapon/grenade/explosive/mini + projectile_energy_cost = 500 + equip_cooldown = 25 + + origin_tech = list(TECH_COMBAT = 4, TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_ILLEGAL = 2) + ////////////// //Fire-based// ////////////// diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 0812602eeb..1a1bee23c3 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -395,6 +395,7 @@ return domove(direction) /obj/mecha/proc/domove(direction) + return call((proc_res["dyndomove"]||src), "dyndomove")(direction) /obj/mecha/proc/dyndomove(direction) @@ -423,6 +424,12 @@ return 1 return 0 +/obj/mecha/proc/handle_equipment_movement() + for(var/obj/item/mecha_parts/mecha_equipment/ME in equipment) + if(ME.chassis == src) //Sanity + ME.handle_movement_action() + return + /obj/mecha/proc/mechturn(direction) set_dir(direction) playsound(src,'sound/mecha/mechturn.ogg',40,1) @@ -432,6 +439,7 @@ var/result = step(src,direction) if(result) playsound(src,"mechstep",40,1) + handle_equipment_movement() return result @@ -439,6 +447,7 @@ var/result = step_rand(src) if(result) playsound(src,"mechstep",40,1) + handle_equipment_movement() return result /obj/mecha/Bump(var/atom/obstacle) @@ -1877,81 +1886,82 @@ /datum/global_iterator/mecha_tank_give_air delay = 15 - process(var/obj/mecha/mecha) - if(mecha.internal_tank) - var/datum/gas_mixture/tank_air = mecha.internal_tank.return_air() - var/datum/gas_mixture/cabin_air = mecha.cabin_air +/datum/global_iterator/mecha_tank_give_air/process(var/obj/mecha/mecha) + if(mecha.internal_tank) + var/datum/gas_mixture/tank_air = mecha.internal_tank.return_air() + var/datum/gas_mixture/cabin_air = mecha.cabin_air - var/release_pressure = mecha.internal_tank_valve - var/cabin_pressure = cabin_air.return_pressure() - var/pressure_delta = min(release_pressure - cabin_pressure, (tank_air.return_pressure() - cabin_pressure)/2) - var/transfer_moles = 0 - if(pressure_delta > 0) //cabin pressure lower than release pressure - if(tank_air.temperature > 0) - transfer_moles = pressure_delta*cabin_air.volume/(cabin_air.temperature * R_IDEAL_GAS_EQUATION) - var/datum/gas_mixture/removed = tank_air.remove(transfer_moles) - cabin_air.merge(removed) - else if(pressure_delta < 0) //cabin pressure higher than release pressure - var/datum/gas_mixture/t_air = mecha.get_turf_air() - pressure_delta = cabin_pressure - release_pressure + var/release_pressure = mecha.internal_tank_valve + var/cabin_pressure = cabin_air.return_pressure() + var/pressure_delta = min(release_pressure - cabin_pressure, (tank_air.return_pressure() - cabin_pressure)/2) + var/transfer_moles = 0 + if(pressure_delta > 0) //cabin pressure lower than release pressure + if(tank_air.temperature > 0) + transfer_moles = pressure_delta*cabin_air.volume/(cabin_air.temperature * R_IDEAL_GAS_EQUATION) + var/datum/gas_mixture/removed = tank_air.remove(transfer_moles) + cabin_air.merge(removed) + else if(pressure_delta < 0) //cabin pressure higher than release pressure + var/datum/gas_mixture/t_air = mecha.get_turf_air() + pressure_delta = cabin_pressure - release_pressure + if(t_air) + pressure_delta = min(cabin_pressure - t_air.return_pressure(), pressure_delta) + if(pressure_delta > 0) //if location pressure is lower than cabin pressure + transfer_moles = pressure_delta*cabin_air.volume/(cabin_air.temperature * R_IDEAL_GAS_EQUATION) + var/datum/gas_mixture/removed = cabin_air.remove(transfer_moles) if(t_air) - pressure_delta = min(cabin_pressure - t_air.return_pressure(), pressure_delta) - if(pressure_delta > 0) //if location pressure is lower than cabin pressure - transfer_moles = pressure_delta*cabin_air.volume/(cabin_air.temperature * R_IDEAL_GAS_EQUATION) - var/datum/gas_mixture/removed = cabin_air.remove(transfer_moles) - if(t_air) - t_air.merge(removed) - else //just delete the cabin gas, we're in space or some shit - qdel(removed) - else - return stop() - return + t_air.merge(removed) + else //just delete the cabin gas, we're in space or some shit + qdel(removed) + else + return stop() + return /datum/global_iterator/mecha_intertial_movement //inertial movement in space delay = 7 - process(var/obj/mecha/mecha as obj,direction) - if(direction) - if(!step(mecha, direction)||mecha.check_for_support()) - src.stop() - else +/datum/global_iterator/mecha_intertial_movement/process(var/obj/mecha/mecha as obj,direction) + if(direction) + if(!step(mecha, direction)||mecha.check_for_support()) src.stop() - return + mecha.handle_equipment_movement() + else + src.stop() + return /datum/global_iterator/mecha_internal_damage // processing internal damage - process(var/obj/mecha/mecha) - if(!mecha.hasInternalDamage()) - return stop() - if(mecha.hasInternalDamage(MECHA_INT_FIRE)) - if(!mecha.hasInternalDamage(MECHA_INT_TEMP_CONTROL) && prob(5)) - mecha.clearInternalDamage(MECHA_INT_FIRE) - if(mecha.internal_tank) - if(mecha.internal_tank.return_pressure()>mecha.internal_tank.maximum_pressure && !(mecha.hasInternalDamage(MECHA_INT_TANK_BREACH))) - mecha.setInternalDamage(MECHA_INT_TANK_BREACH) - var/datum/gas_mixture/int_tank_air = mecha.internal_tank.return_air() - if(int_tank_air && int_tank_air.volume>0) //heat the air_contents - int_tank_air.temperature = min(6000+T0C, int_tank_air.temperature+rand(10,15)) - if(mecha.cabin_air && mecha.cabin_air.volume>0) - mecha.cabin_air.temperature = min(6000+T0C, mecha.cabin_air.temperature+rand(10,15)) - if(mecha.cabin_air.temperature>mecha.max_temperature/2) - mecha.take_damage(4/round(mecha.max_temperature/mecha.cabin_air.temperature,0.1),"fire") - if(mecha.hasInternalDamage(MECHA_INT_TEMP_CONTROL)) //stop the mecha_preserve_temp loop datum - mecha.pr_int_temp_processor.stop() - if(mecha.hasInternalDamage(MECHA_INT_TANK_BREACH)) //remove some air from internal tank - if(mecha.internal_tank) - var/datum/gas_mixture/int_tank_air = mecha.internal_tank.return_air() - var/datum/gas_mixture/leaked_gas = int_tank_air.remove_ratio(0.10) - if(mecha.loc && hascall(mecha.loc,"assume_air")) - mecha.loc.assume_air(leaked_gas) - else - qdel(leaked_gas) - if(mecha.hasInternalDamage(MECHA_INT_SHORT_CIRCUIT)) - if(mecha.get_charge()) - mecha.spark_system.start() - mecha.cell.charge -= min(20,mecha.cell.charge) - mecha.cell.maxcharge -= min(20,mecha.cell.maxcharge) - return +/datum/global_iterator/mecha_internal_damage/process(var/obj/mecha/mecha) + if(!mecha.hasInternalDamage()) + return stop() + if(mecha.hasInternalDamage(MECHA_INT_FIRE)) + if(!mecha.hasInternalDamage(MECHA_INT_TEMP_CONTROL) && prob(5)) + mecha.clearInternalDamage(MECHA_INT_FIRE) + if(mecha.internal_tank) + if(mecha.internal_tank.return_pressure()>mecha.internal_tank.maximum_pressure && !(mecha.hasInternalDamage(MECHA_INT_TANK_BREACH))) + mecha.setInternalDamage(MECHA_INT_TANK_BREACH) + var/datum/gas_mixture/int_tank_air = mecha.internal_tank.return_air() + if(int_tank_air && int_tank_air.volume>0) //heat the air_contents + int_tank_air.temperature = min(6000+T0C, int_tank_air.temperature+rand(10,15)) + if(mecha.cabin_air && mecha.cabin_air.volume>0) + mecha.cabin_air.temperature = min(6000+T0C, mecha.cabin_air.temperature+rand(10,15)) + if(mecha.cabin_air.temperature>mecha.max_temperature/2) + mecha.take_damage(4/round(mecha.max_temperature/mecha.cabin_air.temperature,0.1),"fire") + if(mecha.hasInternalDamage(MECHA_INT_TEMP_CONTROL)) //stop the mecha_preserve_temp loop datum + mecha.pr_int_temp_processor.stop() + if(mecha.hasInternalDamage(MECHA_INT_TANK_BREACH)) //remove some air from internal tank + if(mecha.internal_tank) + var/datum/gas_mixture/int_tank_air = mecha.internal_tank.return_air() + var/datum/gas_mixture/leaked_gas = int_tank_air.remove_ratio(0.10) + if(mecha.loc && hascall(mecha.loc,"assume_air")) + mecha.loc.assume_air(leaked_gas) + else + qdel(leaked_gas) + if(mecha.hasInternalDamage(MECHA_INT_SHORT_CIRCUIT)) + if(mecha.get_charge()) + mecha.spark_system.start() + mecha.cell.charge -= min(20,mecha.cell.charge) + mecha.cell.maxcharge -= min(20,mecha.cell.maxcharge) + return ///////////// diff --git a/code/game/objects/items/weapons/grenades/concussion.dm b/code/game/objects/items/weapons/grenades/concussion.dm new file mode 100644 index 0000000000..073b5ed9d1 --- /dev/null +++ b/code/game/objects/items/weapons/grenades/concussion.dm @@ -0,0 +1,85 @@ +//Concussion, or 'dizzyness' grenades. + +/obj/item/weapon/grenade/concussion + name = "concussion grenade" + desc = "A polymer concussion grenade, optimized for disorienting personnel without causing large amounts of injury." + icon_state = "concussion" + item_state = "grenade" + + var/blast_radius = 5 + +/obj/item/weapon/grenade/concussion/detonate() + ..() + concussion_blast(get_turf(src), blast_radius) + qdel(src) + return + +/obj/proc/concussion_blast(atom/target, var/radius = 5) + var/turf/T = get_turf(target) + if(is_below_sound_pressure(T)) + visible_message("Whump.") + return + playsound(src.loc, 'sound/effects/bang.ogg', 75, 1, -3) + if(istype(T)) + for(var/mob/living/L in orange(T, radius)) + if(ishuman(L)) + var/mob/living/carbon/human/H = L + to_chat(H, "WHUMP.") + + var/ear_safety = 0 + + H.get_ear_protection() + + var/bang_effectiveness = H.species.sound_mod + + if((get_dist(H, T) <= round(radius * 0.3 * bang_effectiveness) || src.loc == H.loc || src.loc == H)) + if(ear_safety > 0) + H.Confuse(2) + else + H.Confuse(8) + H.Weaken(1) + if ((prob(14) || (H == src.loc && prob(70)))) + H.ear_damage += rand(1, 10) + else + H.ear_damage += rand(0, 5) + H.ear_deaf = max(H.ear_deaf,15) + if(H.client) + if(prob(50)) + H.client.spinleft() + else + H.client.spinright() + + else if(get_dist(H, T) <= round(radius * 0.5 * bang_effectiveness)) + if(!ear_safety) + H.Confuse(6) + H.ear_damage += rand(0, 3) + H.ear_deaf = max(H.ear_deaf,10) + + if(H.client) + if(prob(50)) + H.client.spinleft() + else + H.client.spinright() + + else if(!ear_safety && get_dist(H, T) <= (radius * bang_effectiveness)) + H.Confuse(4) + H.ear_damage += rand(0, 1) + H.ear_deaf = max(H.ear_deaf,5) + + if(H.ear_damage >= 15) + to_chat(H, "Your ears start to ring badly!") + + if(prob(H.ear_damage - 5)) + to_chat(H, "You can't hear anything!") + H.sdisabilities |= DEAF + else if(H.ear_damage >= 5) + to_chat(H, "Your ears start to ring!") + if(istype(L, /mob/living/silicon/robot)) + var/mob/living/silicon/robot/R = L + if(L.client) + if(prob(50)) + L.client.spinleft() + else + L.client.spinright() + to_chat(R, "Gyroscopic failure.") + return \ No newline at end of file diff --git a/code/game/objects/items/weapons/grenades/explosive.dm b/code/game/objects/items/weapons/grenades/explosive.dm index a45348e3b9..f38fba5720 100644 --- a/code/game/objects/items/weapons/grenades/explosive.dm +++ b/code/game/objects/items/weapons/grenades/explosive.dm @@ -31,6 +31,10 @@ damage = 15 armor_penetration = 20 +/obj/item/projectile/bullet/pellet/fragment/weak + damage = 4 + armor_penetration = 40 + /obj/item/weapon/grenade/explosive name = "fragmentation grenade" desc = "A fragmentation grenade, optimized for harming personnel without causing massive structural damage." @@ -98,3 +102,12 @@ num_fragments = 200 //total number of fragments produced by the grenade //The radius of the circle used to launch projectiles. Lower values mean less projectiles are used but if set too low gaps may appear in the spread pattern + +/obj/item/weapon/grenade/explosive/mini + name = "mini fragmentation grenade" + desc = "A miniaturized fragmentation grenade, this one poses relatively little threat on its own." + icon_state = "minifrag" + fragment_types = list(/obj/item/projectile/bullet/pellet/fragment) + num_fragments = 20 + spread_range = 3 + explosion_size = 1 diff --git a/code/game/objects/structures/loot_piles.dm b/code/game/objects/structures/loot_piles.dm index 60807e253d..f8d9977823 100644 --- a/code/game/objects/structures/loot_piles.dm +++ b/code/game/objects/structures/loot_piles.dm @@ -744,7 +744,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh uncommon_loot = list( /obj/item/mecha_parts/mecha_equipment/shocker, - /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang, + /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade, /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser, /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser, /obj/item/device/kit/paint/gygax, @@ -784,7 +784,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh uncommon_loot = list( /obj/item/mecha_parts/mecha_equipment/shocker, - /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang, + /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade, /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser, /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster, /obj/item/device/kit/paint/durand, diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 843edf3f7f..5c441f1e28 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -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 diff --git a/code/modules/projectiles/projectile/arc.dm b/code/modules/projectiles/projectile/arc.dm index 6e434b1e99..1cd86cc5cf 100644 --- a/code/modules/projectiles/projectile/arc.dm +++ b/code/modules/projectiles/projectile/arc.dm @@ -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" diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 0cd8e69013..ee2ccc437c 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -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 diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 36a93a89b0..1e1d8b5413 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -189,6 +189,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 diff --git a/code/modules/research/mechfab_designs.dm b/code/modules/research/mechfab_designs.dm index 8464c3efc3..17ae15f7be 100644 --- a/code/modules/research/mechfab_designs.dm +++ b/code/modules/research/mechfab_designs.dm @@ -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." diff --git a/code/modules/shieldgen/directional_shield.dm b/code/modules/shieldgen/directional_shield.dm index 1892a3f3ad..4f49aa8890 100644 --- a/code/modules/shieldgen/directional_shield.dm +++ b/code/modules/shieldgen/directional_shield.dm @@ -344,4 +344,49 @@ create_shield(temp_T, i == length_to_build ? turn(dir, -45) : dir) // Finished. update_shield_colors() - return TRUE \ No newline at end of file + 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, "You can't seem to deactivate \the [src].") + return + + destroy_shields() + else + if(istype(user.loc, /obj/mecha)) + set_dir(user.loc.dir) + else + set_dir(user.dir) + create_shields() + visible_message("\The [user] [!active ? "de":""]activates \the [src].") + +/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) diff --git a/html/changelogs/Mechoid - MechaWeapons.yml b/html/changelogs/Mechoid - MechaWeapons.yml new file mode 100644 index 0000000000..15d0abc8f7 --- /dev/null +++ b/html/changelogs/Mechoid - MechaWeapons.yml @@ -0,0 +1,7 @@ + +author: Mechoid + +delete-after: True + +changes: + - rscadd: "A large number of Mech weapon modules and their jury rigged versions." diff --git a/icons/mecha/mecha_equipment.dmi b/icons/mecha/mecha_equipment.dmi index 32157734034b836626bac5e3cd116570fd67cc9b..2b96c7d4922adea663ea0f436a938c819a1160f4 100644 GIT binary patch literal 34360 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 a;p)x9SU&fIwl?VfpNxcpc!j88(EkCm5X#X2 literal 24965 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 LNkvXXu0mjf-NtF? diff --git a/icons/obj/grenade.dmi b/icons/obj/grenade.dmi index bcd64a33feb5dbdf93808d56dc066df6517f0739..e312da52b9a76fe924c02265378a5f77e421304b 100644 GIT binary patch delta 3727 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 delta 3597 zcmV+o4)XE5AiE#1(gA;GdQ@0+L}hbha%pgMX>V=-0C=38Ro!lbAQZmVr!eiUSvu$K zZk9GnFVL@pHntbK!-X~klbD@ zF;m6Hg-bDPdN-)oR#|}iSa%>V^;~f%Dbem_3`lIzp+r87XgsA=+`ZT5kw#ONFF59^ z*~4rlT}GST`uqp~0|voM3**M#-~a#&VM#!K6-+Gi8l)q@ zoI$C8>=!0ZfCj2oK6n6QY|>W7XuU-{DVogH?HJig;wy36GN(cLKwB&zD?V!_Xji&? z_y9`x%e(|z{-vS;l-`-vJLM>zm_+9HM?0Zov{-+Eta`e2jBnW4qvaz9$eO@xke2U` zkhyiUN!oV05t9~m5^gawNOuq*f|3L=s6zS30VYatl+V}G(rxe8!$6B1>!DvOI}t$! zr6ObyT|RgKHCe(%`D#)6_$10IPIfjHX;G^pGHs#*jQ!zyR%x3Xb zC;+;LofYH&=`upzH04=@tCLlmX*r}+0J;jY7}Ru&xNbFBI#v8^3u>hTn4!}ERN#M0 zqW%eeQQbe{3WY?EAP9mW1dB}5IN}VB+$!L#%*`g+{K#_dHN z^1PCM+Je`AA^A5~J>~yISpHKbeX4&ZU`1v;-X8un( ze`Yef1~rH>5ZCL^zv-aqD|MG2!TC?QjvMSd|EBKp7ZpL?@^8p42=*nQ=aqNo>Av%C zDh=YS^0@|i&cCU48Nex@tyj2^t26(m_VRfK`Od$ob}PavAIR{prkmsY%)fuh$|rAT zIpwn=$antDY|9~YmQOVxdYj`p|HgOuG)n#?lEC+(y6^I7eAmi%`82*;&v*HPAP9mW z2rG?Ti4mBE&G-4PM8K%F`6mv!>2|v+iQ6sXk$VfO|8e!8>2}xFR6A~A4;Iw5Yxs&A zPY;^z_1^V0l_V`Q3aMwFaXWu>jmV#2>H*Weu377;mVLekI0QcRT$moMKO12wbl!9m zKboFOv_VNbaT=tad+x@K8_1JKp03pMiE+?;oloDe`o`S*Z(4oRp&NfPhm1iR6(gr2YZmQxJhzMcm zwt>?YbT%=mZ%pWp5F+>An$WijdUtz!DuzsgN!M`>8^jpH(X$?qwjg8>rf*E>kU`k~ zn-hAmk9B)J?a*2;^~is8v1I86*$~fL5b6TH^zOECNL#dK{jp;ZVh{vRPn+1ZAT~%N z`o>sC25Dsf&9Pn{q@@FFk_7zEIrWHXddFwzWYHf9f{KUh1d+1*dm2e=OTT0P%nFXR7D{V?t;gLHaD5 z{;V|J3x71?PZ=9S8RCzNZfcR4$$VEORMI(K>=6V(5ClPR(%k#aB_a7SIFcWOLFdOX zX?FTdh5Q%_VmFnv&_8sdbiesaRq|sf1BmzU?DYHn9YpW%?(X&($FKGMK;`@xM*+5l zUqEVL{*)BfQ-gnCJvE3pKCD*L=XA)CA5%Vj*7u+@Se6b!jt$lFo1D1vW6Jwye-#X# zz>;(bQm5Y^)B^foF+V0zu0J9sPaq~DfNM}pL=dG@?+4Q54_#Y0q)xzo zdRC1FWygmgb?WUeh(VM2F$Q(rWe^o1OVS}o{eydZ^BR9Nl^0Hxbm z4AJc@M(+=i?+@w>gQoLi?7yebAVwFP&X0i%YI+x|@ctk$f~NCh3=V^uKFzn|!C-*z z4@b~cevJG1S?w<{s$Gw7-ki^%Vt$PK@w7R>M~Dhi`Yl4=taX2uK@<5gh(TdTNNruL zkRJo&H*kONg?#J0{H7}TG2HbW?s5lre;!rxW0(t4%{FKW`7zuGWUokasXafY?j=)7 z7X(2N1VIo4K@b{<@0&^AIz`?2H=*k^+|S=?x=v9of9C1cBWlq*%a1|wXQ=#|M(gIW zMlyI2daiNt*aIwp`}tgf>#0HDgP$zGFoSrXt`vW~ZVbR9$fVw322trF4cDV+kSH{Q z#GnB>N=p~hpb%jsfB1l9ijpx|{Pf>s{$0bXJd29=^F2!bF8f*>@Oecu%b9m=5LQfd(}2e>?Z zdBuMn+CRWUXn45d1|1xsAv8QbT=5V(`sfiRYlD~}H#jvK2sDFm#$E|y96LAIKRB}EmqBlGeCLko zi;gYTy^rDfAA5T|{r+uS-`ZmBuR{dyCoX+||KPw}Kb`3Qcc_igU+&)3UtQOf>fSxm zLg4X@0WAIgeO%WDarU3fplCXRj7vI#v^@@g;&he(>le5VcA<+6FuB4Ql+6-g1p|NA z>05~k24Up0L{oKQ8jlErs$T~+Ri`cl$qPve-x0u%AnI0vxD}!B9Rd6Z;@)c!_>KU6 z1d+=b_;Lt^&5uE+*|2qb79$qaNT~dn&~<3}`t+GOKQM!gqmNF{Pfs6Z=pVHgGwIWSt4@!fJo$|7X`n-?4ugN|>a(Bw zyaqO4etk4L|HAnw!~Qtkktn_J#2zx}@fTnF(wCn^5!A_Y9fHsYH@~u{89)XMzWTMV zYhe8w-~5)wrRxCs_W5as`LSpat`CPVrzszYht?(Y`0=Q`y#4q)uf6`po8NsaddpqG zu?|4#X%~T$G#R>{pUzLemtlW;Q^_Dq*Y@N|LpFct@bJVuKsq?spZ4hcKY0C(AO7g= zA43L>bpT3NKl$m;G_V2l>!b16XC9OcLiM3}B55M%_!TUI-ud}2e)+3k|K=UYps@}> z>2;1lJcBBZLBD!> zaRe-0FB|ZPFbJLIq3fW3{rf-v{oi}=eoTEF0gKlcY!JwMn)>uwBWTKj)3QOh9tO2W zP=QhLLK@ctp~mEoQIQ#SK@bE%5ClOG1VIp*3iWaouHJN1(rP8xf(utyt@$e#0_O9` zu@59SpJ$GJpm_zo*%5!X1cS6i^ViQaYK$K}bd+kh<9+^9e@(M8Fn=gAgZOE(I>aNxtV_7olbujRW1EX-R%8ax6<$Z z*>oGBwtJb6=yK?xQ@266o~*C0I}Hq-y1Q7eYlDC;7&>(i(s}faxKSNt}R2VP0}sYQd)@J66)*8K!0$1-FtpHI*44D3Bt zZ*Z37D4W*4``2IUpt%Yn0BB({i>#}=rNe1^dsGVYMlYV9lUxx8wt$l3>4qsyzAiQiGj$)#BrC3)p)MP7bF@Z)Ntb!G%vd^Oh}(2 zKUYV;zgUoV!CEA4(cqj=&$IGxXwzKeKhz4m#z{BXfeH7`TLAP;*X8VJ!mM`bsUO`Q zjQmHg4{kL!6>w%&A{5IfQ`y29bo2}*38wPff0=qc4xvdS*&lRvB3-M=#!SqS+Gyr^ z4$Y{P^w&q(#&dI3SdzSJa;Y{uJVPGW?yvde`}6xPd~?X`IJWz7!r+o@SW%?F{z!El zKh5u64dj%%-+E$~FG-OM$-i3=7TEJ!5C{ZjyDS{_N^XS3kCvwl`pL>7{LE*AvxWq& zcxO+HuV~2nSD&T-DOhBS{&N}z&st%vK6F4D;6^;3dJe7#IGRpkX{AwUxRmJOZRllE zLZnV-6!Z?K;E0E%8*@^$tVB~jV~$t4${0TXDnQ|xJ`DTdJ#LP8w@dr7z%B~ijRZrH zoRNM;fQZ@01s}??N?<>#K3cPWq&0sYe>Usi(jx!*ORMbOs>0Crv)1DB=hl`Zz2}o! zU^178G=8F0 z)kN*c$)h|goTxZRItiw7<_Q<-#kIQ-==qw9&vGu9(RfNSoNy6|&L{kZmW1#rx&Hcc zRfHI3V3OV%5%Gd&K=>_jei*zmRo?Vw_7iDX5&`=XNl}Fq3Nw7M5#I5hftwp6r*nyD zV`VM3&5xJCjI;gKwGY4cV7}1`R`4+}SY-{i?e+@whpsvIBuo*VxngWi(C8XG5U&-K z`4O!vgqO!KVQIw@W<^li9ygXSZoa zI(OEwS}J|jjzN0e&G=it3JqyqTvU*UC9#Epw%ZW=cvGU@?yJqrHv5#+1_{yZ7RH+w~Sl3jk zSK`XU&dnOu*79AaO2*SQZIlH?D__P5!8BckUY#wIg~3PU zfB1p#I)ag=*Y$EImq`eKd{}QJFx&WFj&K(O*x_{Ef$&3V#R5J){OFPP)wCOIPBUb9 zxjmlk(J02QY$|VJGuo7EcjXQHO?BRyJ7mb+IDFBBW9{(Cj}#Gn5d{ButESWJeS{I^ zb_7k4WmUX3uYd_r;O*CIDr4d;3m|0={Jc%wqBWjt(G45O@c_IZ;OO*+j`l5LYjsPt z*k%erHI9m`5}5ojcp*FKs8R(D3YNi~>i872h%aGg%t;(oH1&mI^PPH!=KZIKo$Sz; zJzh8l`itUzd=LReN1)s9KUEViVgdQ5^X7is-&+Do+1&50uhq3{_=EnI5_iYxV~Wr~=)TxUr2O4+)!CP(*3`??epqOVE#~z<;I(D~21Q6nAP)4=w%g zKCB4`E)*4FFnN?Z3Km?pZtY^}+=|OwO=FUOwP`2A|6`7hYEboWPZC0$CW z5!6ZW7@6B0Sl{PpYZ$qjs%uF0N!-3sN$><-aK_;+xp)O!E_BuDuYCx%&tL?S!KWea zBKs^{%Ven!otl$aw?O@bjrHTk4KLb-#WEIqv4_O>`PV+Dy@APnu&xM#Z8tcBcaQAAl?tby(!^He z*Q>$E`9>*p5y2RQ@L}*ARR~N}kZ?XK?<+YH75L#6V2A*o;9>-Z>nROVRm(&^ zlCIwea=l^@d_k`^cWlU7Wau1QQzO#($rs#G-1civKYT^-Q5ng{=m2ZySwllwf#Nm@x4D1tw74ai}!SD@&8guY`A1magb@(Vrhbn5E;=jssCJu*-|cEHvik)H?i z$!{FhTWg<5orA$pyIC-(ToX{mk2!0^ZVm3YTft6v#SgP*$Kd)g4;!7nGSg=Kb+D5xr zkZN?bE|zhi_krkJY*PRv0MI$KJr?~tUblpo6S!LzgDc(z*8c@YybhVC0ic(S-5Y?mbX`h2!vGxHR%WCH^%W@+GS`w}Sd zajblOuW-R|ypInqZNRdxVP*y?*4|2E^q)7&J0th=DmbtPc1N#E4>_oU&UhhC;{{`v z&SWz6Iu{#!-ORWPe!A_P?odn1cM->h9a8DZv7;fcd*Ro+0xALDB|)&jWxB1Ds9iT0 zk7i3i$`8thNLo574Y5ROX*{f*fNE`p4IWHFl|=oxGrZxK1zj7qtjQ$Ov22Xg-o~~J z_w~_tqaz~s4aHpE%K5G8j#!nh5oQ;tH3>ior-D8Q_U(iqUX#WU(uJ(?K81cVZ5cE( z_=gZ_>98BC3;2U=)CLZExnlEcXYyFH0_*Jotq8{Er|PMBB|KoQPe>c65-~l8cd1g= z9(je*?du)>SV4HWJTS$G&bKwXkC%suEU-i)_l0##S=PGM!k!a$Pa@`Hd$!~ect%D>7Z?M_=-!H8T#IzY3jRqg zyQ$Q&lAi=iFZHchLdU-t3E|$8lzX?fP zJk{Mf06ja{pq1^v8mVUKe#YcHw=^ikJUDfhU&NUllHDIL-d1(1-FhvdsayK!11EYr zfdDE2`oOiZfh>UCJ}3UmWP#`D!d0hFa}l`tRMS*t3sL(3_TvM+NyTFh?M@{}UD9?1 za&rw9yE4vZpa*Mi`@8QU9~nr=!7#UnKm~Z*5yM&e5GuQQ6RhrMQxE2GaLxr2Do<$4 z=AW?2_86Yv8r8e1PgsvL3Y@2J5PUqr#-p3G8*(kSy@l3C-vx^gf%`?u zS`6r9M25iojS6pkxc@jkGR?PIvl6{ZW%%{=UcvLKY>?!r9I(w3W%?mkb7h+vm=l7n zk6Z81-rLa?_*TCU{LA`kxWzJ^1j+&8RZ>^3%645~Q3v-lJv0&`D>3L82pA(r>@h7t zNrIeB{ruMQC2*y7F_J*1qleYD-|&A>gEp#E*FVl+`dm#)xq9UPUXe3@{SU-YGlQje zNn8VXG3O!pUV2OAAFuN}C^>!Hgua|)#By{Qlns?bns2rK-x zvf>zl0x{V^#u=#|V|c_Q5D;Uk`2z}Iu3JS6u12PH9vB=%XmDJ60tGi zEx}@28>$G72+zj-XQ{p=jt&4Hf1(Kem($r-5^W1RMOsW1+GABLJ^EX<@tU*Gnvuu8 zv`+teyRTD}bU~J4s80V#D%14LOt3Y#?&5S6%<4%)?%m~*Lm;VbUXP^G!&!u?{Lf)! zX678R?Xoxuw6EX^_5VJJJ&rk2B-^@>Wr!wT%S}6 z@=!rsT1IiRlonk#YZR-GGJ{KhPqzr0Os)1?4OboCJZom2ca|`^_1lUAf{AdqaW%Ee zZ};N`gy8PYK%KRu{=Tf~V6*e}cD~>Kj1A!Lnaorfi}q%`4?7|<{aS0P@}9Q!g?zR} z=;;vH=!Ioj`_~0_7O=u_$W9-aKQ$=puy14uy)C~Xdq|sRIDg_g8|7VbKrvy}?TK33 z^j0$;7|+=djs{5;Ot-l&)qMN*4f;8zM$Bnr$!ce3r--)SX|3fpXskqL{7i3LNn_+#Oqq8y1U-PH(ZWuhkspl5CC-C_C7G%uM-$f~YQbdLdkMI%z zOlJTe){_0Qm^wE^Ht(MiG%NLy$g>deP~ovq;k(()jtLElqc?zdhlaYk^lvefaUq7= zLO52qk2UX<0oaOZUyC9o-A{_;E|kgbH|&b$9}NRJIC`UhC}m`(hE}}`(R5F%wD<3< z7#A?tBSe-O$fY!!s=PbSlJ>Ut7A2@t0wscDi_;OK`%SZ^t?RD;P8aC>{&MqI?VoL$ zPUpDxo@Fqsz8WMd}u zwb>-s6=`iF?KOPCxF-n!t4(xVJ802#jZO3dKUk9bVB>LIyK5SpgVnNXEs?EM+?NP@ z+~E9*?9-UoN7I&N8+eDcszj`cAR53uxA2uYyZR@GNSWOXC9_VyaWE#R~# z==^Pv$U#5Uee=fW4!UlI*AVwTpZ;A)6^`&ehyTNgX=j;+EO@}j*T)C7QQ`YXDnv{G zR5h)~igwlc`^^gJz>iOlgF+Lvfdpbnpj_+wbX`B2z07e-kqz1e9J9TsY5~Z5H~fn? z{Xn?N(4u?;85tRy#q8(2MQLg4eG(%NW=QNl!dFEl?JOPh3i+> zsEgB}Y8yq0EOI-}Y}5NL99eKfOG1MPM9!%VF*>#ooCJ30w+71;sKEju-9Zpnj*@?0 z0;gKETE07kS$07h-OnihQ!5(NGJKf|_ka_Ulzw9EG0Fxn>QvdfHRz}Y6 zl~iCS;0%~!+i2+m?}D@R>KO&w zgD`y6><3d^y|nuA13{?*wUikPU1iQU`(UX_>2IMYkZC_L zs?$nd5w$z_@rZTN=Yyd{G5V_v#4@=jjBXRw8s?~o2Aps~o1&w=4T3R{1!T8PnCkp0 zUn^!g(DLfT+;>zbUZRN~%rgB>sK)eHRDSsnZFM9gmcAQUX|Z}AoUjNSX^{m12=d5) z^78TVd0TVTLp-Jc>&4G&K>g-bzJ)X6)gX{JO3m<4)66jwxrU zK0`0-p7tYqh_OV|$rN{}bUQkS`;Vg@bJw&xu!}eg87Ri!^MV2%?%uu+UWh|k%H1g8 zp$-b$8u|+rN}7!F!--x>PgP2R2t|!^C%sxvPP$4`)wJlR`6i6M`?D_{^e6 z@_EU@I3C^D+ZDJ*M|aB+pSW?*=d{RFcqt~WphM>D6_ue1lnElyyq_c3^S$mRLuz(mQZFeX-j-f{! zr}=5^ik)RNyF1@c+ja3M$$9d))8O(n)1rU-ZfcD7>*AH@>5lH6wWs9MS|ku!CewB_ zWgvtas%9=Z$t%#0Z-UAl`p0}fDuEh;y)(t6-Tc=b1tN}0_@QYd`Ig=b`92*}A`t~w zCk9dza#FCUWdITRb)Rty;dmQ5MR5x&JnGrxf?9;Z3|E>$snI1n3M}WkX89^93rJf2 zY~lvKuxiDy)HZ6ONdd}~2_-Vr4Artp&>~fySlY+9c*gl9BsMJ`kE1={dx7aB`t-SH zA~9?y=P;`Hq3r>8=pS%fDpJENk$i~x^vK&emBrQsV!#{{;dDJ67uqN(w#h=TREOpY z7TjoEv$}jpmf z)U>yM2`!0UkRq}NKfV(G&3mJF#8J*I>&WK5he&k+Daz07F!y*D&DpHy?>7Yr?Ecgw z`he-|1prD8x060{TfTJ#Lv~yK_hiQ_{&OE2JoWQkXZC9jmXKZfI}yf9IBb(p6386C zFYAw&_Y0ELcHkZseIWM)B+oIU2Cxc6FgtGT(*2D&Wy4`&$oXI?0MMC zu{g%G0#~J6BbSh8p1O~Xj#@*NYVslZ1HL*3_{2LN8Mlax#5SJ?1BWJ!R6FW1mCj>w zx9(&pP_`-_Y97#_rs9_%i?UVr>A^Rx@i41q0%}AilYF*T<4O28v(bKXHK8A-a=M+X zw^DMrmL1hb{H%giFUJp3O5mqXs%#@3aQ^Uht;O|%QM&!>0-eG>u z*ZJCm5P07cb|LfxWD{6_4?V~v4@NMu{rG}Mwqn?ZE4TG5tIy+9 z?{t42M?>01Jo37Al)SUi=B)UJcGf+Jt>t^~_b}^t$TppA+jDhKbn&z(a;0+oEU=|} z4Q=?m-K5tsvUvPq4Yc7e`Z5EP&|fUMbvUGgC)XB4X##PVeQapwxq$|xe9LJd2D=@r zN$Jtz>ht6^hu1z^_sf>pm=?6Qk1}SC{6M011FYS8me}>L5Nkt!thPx$3L4;b8<(wv zF;aAmJhI0>iQexF39igfz_0yTlP4ytJ9vVBA}f1fGaP@rs0dHHf%Ti$^ZcH5z-vhQ zJzMnj3ZcZ+{u+kKGBsx8PX|OmhBT2$gc(+h9|^Kb%l&{)>Mo%hpT&i}Fm4|Kw-yhY z(qqSCa+g>jfTNUq*$EGIVrv=$*WRgKU!hDLiUdoolM7dG>+AERikg`*v66^{EreC@ zTRFe4d06S|vtThR&8e_)i;fRtjQdF9h!bW9+L8!#9-Y4c=QP>99Tx!N7y0}P@m_(V z2$fFR@puxw1hPZf7Ne`vTpftxPC4QyQS;9AuTLy{El0NBb^tuak4oH z?KRCU1~Y}hGiP+Z2ef!u`)Yn7IIxgrT08VTICWxPC`suVoWGotTs0y%^+ihv7;F%w z=r_L3Vv?cZEHT}K0eotgcs*>VcRwe5!=61PmZtfs%Jt!@JQ0HyG?{IUV&;1=KMG9t zTm4a(;(0_j%w7zMg)!Xv6NnMuja@pRkoV$CmO>_dhS_#34W#hyaV``chrK2(o1RD| zHyR-~EKjwLzr8jt!>`_xO;mT=o((JZ29Is{+BXzu=OL!w{(%XFpK+3Kd(#{0>I%%e zl@Zz+q8fojpO*@h9tyD=?$#;6ZRx>Z9?V47#tzjeWH!1XtQ&%L1M0Gd^Ol2~;mObmofiUf{x z$EeAYbv~0<+Qk-(9h{o+!}>U|E*+1cz2^F1p*vbC5?5MFKcos(Bzl8Z z!}@z>SLwZ}Y^6WO!>A>F=i{Ph%En7Ilt}!GEL5NrVAT4W!PF7CJ=KuA*+C z>q+d@Y+!@yvkSU;Q-Hc$xd^R)hFpH(a$-w`&KD3gIeo*ikw3i3L<~Q$?Y}Tw%7M|W zq8tOTQfBrD(N*SN9!1#Ma}|}9^NWiIr*h*ClrHgmHgf{VoG?VTh21fg%t-4H3ba3P zk=d;-O6Xn{YvTxFT&r}(9dd~b0N(xt@vYOu4nd{n1)m86isT*zI_Y05P@_;02VFFE;^@L8Wa%gC*#;U2aMf_(zOiY-vGo7} zSeAB>vWVl5BJ7xh#7=C39g+WhddM==xKk(_&@ z=-GkRJkG?Z)rUbFSFU|CzNXgvLZ+mea*rEFA#-QSryr=pD=>{m#dAUP5nF5UJ5|{{UT}}E7f(<5LBHQg9szf52j&YFSAyUtkjtV%K8=| zE^g|!8@+WY;vJMA83JrkGAk+>Hv>=$yexwjqm=`2-DrPZd1!JKpQmo++?o$0($%Im zUGhxSyUFNOBrf|CUPO`6w8la<)}Xz;ka0?pnnL1XVy~x&Qxmm0fXIjbD9(T)18ZF- zs`a17`^2Ks#HBdV3pA7Hc`iy!`_1NVNY}sRtq1oG)`HznDc^PHsPFy^{Py{5zhB}n zajMIsm%zKY%&zVfB8fA?wlpuYf(j+;xEv`zA83s=1qw;Jgsy<5cQl*mP5R>3Kj5o4 zBj&16BGm|04Z{U90|8f3cKyTdYax$26Hu4q=V=!lIeTyeN8*L(sO%u7%=_1&=0xsd^03*JiR1<(9y+x?%@Ifav zT*H4EM*l5m0=|bGbX}nc?ciA74OEwu;t2&QXDsJtvKW_bAA-A>=&QABh@k?hIc{5-L0tXo=KToT z!2pcHM?YaF9Q{hTz)n1_UWtoweCJBKAnE0>@2n!~a&XslmQz!6fi8Jize9Y!yihFHiE?-S<2%gwJDAZ^ zjviKUS!mA>Q#BG8lb#(n(WJ^xYzM7RjCo_&@BBU~_|GmOnHS43lBZ;UWKaqH&G5}_ zMctFDLhZavDR>O3Q}nn>lrgWmNc+>EX!->|i(C-X{ODt4hdh04C>+`Rj3D^SEKMmA zaH0sq+NqrC6n##u23}GD`fZ}E$%D4Qj7wVUtopj;pn8-VZhXJCgqpbM- zZwl4FbR-*FIneue)X1AC6lo1G^^rer9yU>UPvoamGjp80S--#z?DR&^K^ZXyg%XD} z=3ynX!d)#($hP=(jbU0&+->!Zxe(hp_Ngz2QEbSy-2_=A0JoV;-g1S8V*C4c0G9`{ zsEnZJigk$Di&HYF?maE%O(=F+{AW%Jx5q=ZiU+`44+ zX2>8D6R8*$EGStH9~P=+gN9yps+xO#)6vcILD^XFOc^Ct5*n#H#5+h@vBi9dE3nLk zVc+|eUxX@f>V4O8Y(nyQ8pLd_Pham|K1f5QnxazYX0l8aGREQT{iC6MdLc^Bx4YGq)E8mG8< z6K!=d19y;@_exS%t{Wx|N;QfRr^sF0-w2?GRg^rj@ns5ZzvDhdB+A?dP!MHjC}W8{ z#jvX(pSxGs9`|() zb3tfFw9vG2K~nGe&VsLvtlED~FI#puYdNm|qW|>4XkG~XCAhRvqg7LL_E!wq2CY-x!+zc{B?>|VA7WiCUsheaY`=i-smAeSyhAK&_u^nn{6 zt@Iy)CvDKInVQ!+LFlH=*M~Os_M-4C=%M_K^YSHzz=oAM*7z*p>Lv%;O3uWhU=+g& ztvt3bq4_>ofZ!RF8ypU(FuyKdmyS|z%F?eeGuR`rPSHY1J=BR|-#9ohdo z74CdA@&rKA4GTIVu68(#SSk;WU9F_0$pNP#o72`srT#RAu1Jwhw~|9ha>6kARfY#s z>2jkKoB#M)T;0_PJ${<+OZXC%-)F9MQsQL#_XBEtN6h`e^X0@4(hZ-A+20e?bp=4t ztgZrSWSM_^mQ>N*voLuxj6NwF_RlOU;<(TSuM!2%ws;Q}%xHc>j$Bg;nCVjY>b}X@ z)fG!wB{q)?#v1F+B;X5IXq*c2r~wNnJDT?uyL3JqxesT|&Xup1yL>kpM?{c0DwT#@ z-#%Y40u<_m3I??H2V}(wiR))hc1|E<2fs6s6c!VI(~v#n@GD%xC9irae=vEcTuIme zG!q=9@O&(Ieb}QhLS&NSIhy(w>gJyDaZu{`tD3QsCD0HiKN-|5$^Rk{8w3h%E}tem z9c1HsebI{jSjSC~)ffaeI%u-a1|OYU-qBI@a8F0wyegZK2hyZamILxif9{z-ycTf+ z{Vj(b)Y55vF2A;z(c#{2c|Qx23qt{mbZcV$R84~zCRe*<1OxzSXIlIYoEC`gj~Ri2 zH~Wqu^8FmS>F-C`hn55%u*1(H7-zPnh|<}ANQrUu)Ze990`xHjo*Txx1GSQnP`>=t zz5n{=$I`{&*DcT{5Zk=vIhacfKu47!b>!}zs^h{HzbWwZJiSNn-{>zJ=JHz2>T;IA z9|+GUc-^6<^^w8S@C&R%EC#UC))lZ`h2ZBHe&3C3*h%)FvI5n0pTemw16WXw`2Gh=q z@=Dv1diU2@K1w-r-}~$c;&0HDfj4h3UTZyA2~y!d7KvzL49C_}ZbPwgOr#o;8--f! z0%_Dc*LU1Skd4n9#;l4Kw@0eP8r)SV-G$oDRJ0d_|Gu#0hE7K>UmK~=?@4MO9&{$7 zw0+a%8rwMowByh6&Wq65zym)Aqi0!^F4}wv-U^Yii^-&1UzALAE|A@*2NPW5$K5j8_8_9iQhXvpPU92RR+%yC$J$nK-qBi?Ji zV@h?v7nge_`$?G?ah328<$TN&U;Oba+4qm`n8kyFfb(!c!sH87RA!(EFKu7&fk}rG z;kyAKI!)cM51TR{*f3$CKFl8LJnYAG9=T+u#H2MJkRcB)LiRqB306}?sOp?Ec4 zRDLeVYsbo&WfC{|bz!3rrCak$0!E#nK0DE`)TQMB%}|SVy)|JRlau!O(=U{$np)kH zb;FX{KzmA#GqpahJl~btFVz`>;Zon)M(5p9R>S)OSrl?#SIij)5nF{-$@i?tg}!fT zj49mGu1DG6cX5I&(XLGUzM60EnjD|QoJB$&+$)zJ1ZLlGMi;4EjvV@aNN?Fjo7vwO z`!MD{8fdeB7yWZArQiqZ@#Xlr;FIfDgf-&y2JDkO`ij^moWB^!;DH`muYt2CV7tnA z?wMj&1rD}w6{DK*=9n@^|FIxwX2{fMpKHbh`!G5r z#dt7j@q5-TxEg%4LDIp=3@y_zD^y@-Joci}x%bNx@un6X1-GAjeRaSiqA**4)Pwh~ z%*Y`eIOzOsl47rys52{$vwkqBB7BAoU9L?GF`P^dM1SydEkbMPby7OqfD5mTX5w>+ z-8Y%p^KgSWaXl#$%@;WFc)dkJJdkupo9T1SpVUFL`MNYISQ`JbI(yaVf}pbm0`B0cq46}^%O2vtmnm$)rE9%du+ddtkcZ;RF{J%1!d z)!mPzK_@sib-TO69u0TSJ0v|&MqDiq%TuZ1mIuiFtZZC`ZH3*O0Q7BOqk^$)7#aGG zOr0i3BI)B{M#w;W9dww_O)A2^-GVevzc3J1le+rINwWl_%}!CK58Y|vI|V}DzRji! zR-wFEtp^ESMb`K5fGD^4%0|kf{5CO0z=GF)CoOsF!=6TiqUA)zIBGAKOD2MAyZtve z1cvs9Jxdn^>&Moi0F$c;`NfM@*>g+B;iuh|bz8bcTEu)w-oLRrlo39V9o|+Ja$912 z@Fdk%gsTF7{>!#4RQPu5PM%V@r7r&FSRh6?5z+Kz4?Ai4$FDn1PwfW=H>|X5UW5hU zSLy-y7s%Lymc&l*l4`ghQOIVz4WCZtHQgDu@J=(m_jfX2xR%b@!vtXh8OICUP9Ly$ z+3ouR`}B>^_-e{WvE!N%J58zk^l6>xj3p`kb1r0~%XKe2j2tmr(No(n-@(@ekG^x-#h&zDM_?HaPEtJp+>19P1BCn>D+N%1M*r zL2SFw-@5K;kO@EN9|R@c9Uv zqb%K`5lukeukXFdI1GDxp+p%~a`Z+yVlR6peO338`8(qTJ`7R4$86uPUg*OT6^#0B z@Qfrz*xGP5Tr9Xc&=3VaVEt=jCO}~eHqLu+m460cO>loepCFtIW&aE<*DrNs$w!YnBS`og~wzG%7-HU=|8#ckd5=Rr? z_s>ND;aZOqgA?#{Qpyza-oo*}1}kRc5?0Gis=7_d1eWc=vpcAt#Um6EjF>%J)o0;+ zviTPWp!MgK-X0k~5Ble-HTplT$k~;7-}@}Ah%PR$oBYxwv|nni8Lw`{G_I;3djFSs z{tQYkUcl3%sE9qh%FzqxZtAkbo7{*{0dgQrNcBW(x3gV*Ee_U%QWr<2wi&JBBw#lx zN4=5Ggm48%rucxjuI4$BDL{TLn`f*XI)>u*O}cABNF3s?%#QkWxoViYbSq&lb)(4e zK@0ShV4F&i1{>H)&TYIE=HZ%∈}{M;y{}6aKJ$N`5J&t<-^7Yv_0Bk?;Wga*)S1 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 SDFpTMQl~x6yVtwn(*F%Fz_qae diff --git a/polaris.dme b/polaris.dme index bbe642cdd1..fc5e08e9ec 100644 --- a/polaris.dme +++ b/polaris.dme @@ -977,6 +977,7 @@ #include "code\game\objects\items\weapons\circuitboards\machinery\unary_atmos.dm" #include "code\game\objects\items\weapons\grenades\anti_photon_grenade.dm" #include "code\game\objects\items\weapons\grenades\chem_grenade.dm" +#include "code\game\objects\items\weapons\grenades\concussion.dm" #include "code\game\objects\items\weapons\grenades\emgrenade.dm" #include "code\game\objects\items\weapons\grenades\explosive.dm" #include "code\game\objects\items\weapons\grenades\flashbang.dm"