diff --git a/code/datums/ammo/shrapnel.dm b/code/datums/ammo/shrapnel.dm index e27caa4b277d..52649da9e27e 100644 --- a/code/datums/ammo/shrapnel.dm +++ b/code/datums/ammo/shrapnel.dm @@ -133,25 +133,3 @@ /datum/ammo/bullet/shrapnel/jagged/on_hit_mob(mob/M, obj/projectile/P) if(isxeno(M)) M.apply_effect(0.4, SLOW) - -/* -//======== - CAS 30mm impacters -//======== -*/ -/datum/ammo/bullet/shrapnel/gau //for the GAU to have a impact bullet instead of firecrackers - name = "30mm Multi-Purpose shell" - - damage = 1 // ALL DAMAGE IS IN dropship_ammo SO WE CAN DEAL DAMAGE TO RESTING MOBS, these will still remain however so that we can get cause_data and status effects. - damage_type = BRUTE - penetration = ARMOR_PENETRATION_TIER_2 - accuracy = HIT_ACCURACY_TIER_MAX - max_range = 0 - shrapnel_chance = 100 //the least of your problems - -/datum/ammo/bullet/shrapnel/gau/at - name = "30mm Anti-Tank shell" - - damage = 1 // ALL DAMAGE IS IN dropship_ammo SO WE CAN DEAL DAMAGE TO RESTING MOBS, these will still remain however so that we can get cause_data and status effects. - penetration = ARMOR_PENETRATION_TIER_8 - accuracy = HIT_ACCURACY_TIER_MAX diff --git a/code/modules/cm_marines/dropship_ammo.dm b/code/modules/cm_marines/dropship_ammo.dm index 53a22051299b..6f6a0dca0f8d 100644 --- a/code/modules/cm_marines/dropship_ammo.dm +++ b/code/modules/cm_marines/dropship_ammo.dm @@ -138,16 +138,24 @@ icon_state = "30mm_crate" desc = "A crate full of PGU-100 30mm Multi-Purpose ammo designed to penetrate light (non reinforced) structures, as well as shred infantry, IAVs, LAVs, IMVs, and MRAPs. Works in large areas for use on Class 4 and superior alien insectoid infestations, as well as fitting within the armaments allowed for use against a tier 4 insurgency as well as higher tiers. However, it lacks armor penetrating capabilities, for which Anti-Tank 30mm ammo is needed. Can be loaded into the GAU-21 30mm cannon." equipment_type = /obj/structure/dropship_equipment/weapon/heavygun - ammo_count = 400 - max_ammo_count = 400 + ammo_count = 600 + max_ammo_count = 600 transferable_ammo = TRUE - ammo_used_per_firing = 40 + ammo_used_per_firing = 30 point_cost = 275 - fire_mission_delay = 2 - var/bullet_spread_range = 4 //how far from the real impact turf can bullets land - var/shrapnel_type = /datum/ammo/bullet/shrapnel/gau //For siming 30mm bullet impacts. - var/directhit_damage = 105 //how much damage is to be inflicted to a mob, this is here so that we can hit resting mobs. + fire_mission_delay = 1 + travelling_time = 30 + var/bullet_spread_range = 3 //3 from 4 + var/directhit_damage = 80 //how much damage is to be inflicted to a mob, this is here so that we can hit resting mobs. var/penetration = 10 //AP value pretty much + var/holo_stacks = 100 + var/slow_duration = 3 + var/acid_per_hit = 10 + var/max_armor_reduction = 0.2 + var/plasma_drain_hit = 200 + var/interference_duration = 10 + var/healing_reduction_duration = 10 + var/max_interference = 10 /obj/structure/ship_ammo/heavygun/get_examine_text(mob/user) . = ..() @@ -162,51 +170,41 @@ /obj/structure/ship_ammo/heavygun/detonate_on(turf/impact) set waitfor = 0 var/list/turf_list = list() - for(var/turf/T in range(bullet_spread_range, impact)) - turf_list += T + for(var/turf/turf in range(bullet_spread_range, impact)) + turf_list += turf var/soundplaycooldown = 0 var/debriscooldown = 0 + var/list/affected_atom = list() for(var/i = 1 to ammo_used_per_firing) - var/turf/impact_tile = pick(turf_list) - sleep(1) - var/datum/cause_data/cause_data = create_cause_data(initial(name), source_mob) - impact_tile.ex_act(EXPLOSION_THRESHOLD_VLOW, pick(GLOB.alldirs), cause_data) - create_shrapnel(impact_tile,1,0,0,shrapnel_type,cause_data,FALSE,100) //simulates a bullet - for(var/atom/movable/explosion_effect in impact_tile) - if(iscarbon(explosion_effect)) - var/mob/living/carbon/bullet_effect = explosion_effect - explosion_effect.ex_act(EXPLOSION_THRESHOLD_VLOW, null, cause_data) - bullet_effect.apply_armoured_damage(directhit_damage,ARMOR_BULLET,BRUTE,null,penetration) - else - explosion_effect.ex_act(EXPLOSION_THRESHOLD_VLOW) - if(!soundplaycooldown) //so we don't play the same sound 20 times very fast. - playsound(impact_tile, 'sound/effects/gauimpact.ogg',40,1,20) - soundplaycooldown = 3 - soundplaycooldown-- + var/turf/impact_tile = pick(turf_list) //no sleep + turf_list -= impact_tile//moved it from here + for(var/atom/movable/atom in impact_tile) + affected_atom += atom if(!debriscooldown) impact_tile.ceiling_debris_check(1) debriscooldown = 6 debriscooldown-- new /obj/effect/particle_effect/expl_particles(impact_tile) - sleep(11) //speed of sound simulation + var/datum/cause_data/cause_data = create_cause_data(initial(name), source_mob) + for(var/atom/movable/explosion_effect in affected_atom) + if(iscarbon(explosion_effect)) + var/mob/living/carbon/bullet_effect = explosion_effect + bullet_effect.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time) + bullet_effect.adjust_effect(slow_duration, SUPERSLOW) + if(isxeno(bullet_effect)) + var/mob/living/carbon/xenomorph/xenomorph = bullet_effect + xenomorph.AddComponent(/datum/component/toxic_buildup,acid_per_hit, xenomorph.armor_deflection*max_armor_reduction) + xenomorph.plasma_stored = max(xenomorph.plasma_stored - plasma_drain_hit, 0) + if(xenomorph.interference < max_interference) + xenomorph.interference = max(max_interference, xenomorph.interference) + xenomorph.AddComponent(/datum/component/healing_reduction, healing_reduction_duration) + bullet_effect.apply_armoured_damage(directhit_damage,ARMOR_BULLET,BRUTE,null,penetration) + else + explosion_effect.ex_act(EXPLOSION_THRESHOLD_VLOW)//moved this + explosion_effect.throw_random_direction(1) playsound(impact, 'sound/effects/gau.ogg',100,1,60) -/obj/structure/ship_ammo/heavygun/antitank - name = "\improper PGU-105 30mm Anti-tank ammo crate" - icon_state = "30mm_crate_hv" - desc = "A crate full of PGU-105 Specialized 30mm APFSDS Titanium-Tungsten alloy penetrators, made for countering peer and near peer APCs, IFVs, and MBTs in CAS support. It is designed to penetrate up to the equivalent 1350mm of RHA when launched from a GAU-21. It is much less effective against soft targets however, in which case 30mm ball ammunition is recommended. WARNING: discarding petals from the ammunition can be harmful if the dropship does not pull out at the needed speeds. Please consult page 3574 of the manual, available for order at any ARMAT store. Can be loaded into the GAU-21 30mm cannon." - travelling_time = 60 - ammo_count = 400 - max_ammo_count = 400 - ammo_used_per_firing = 40 - bullet_spread_range = 4 - point_cost = 325 - fire_mission_delay = 2 - shrapnel_type = /datum/ammo/bullet/shrapnel/gau/at - directhit_damage = 80 //how much damage is to be inflicted to a mob, this is here so that we can hit resting mobs. - penetration = 40 //AP value pretty much - //laser battery /obj/structure/ship_ammo/laser_battery