Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gau rework this time for real ;) #5068

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 0 additions & 22 deletions code/datums/ammo/shrapnel.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
80 changes: 39 additions & 41 deletions code/modules/cm_marines/dropship_ammo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
. = ..()
Expand All @@ -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
Expand Down
Loading