From 724c1dd2b337e825226eba9190a9ce06d1c78246 Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Tue, 13 Feb 2024 22:13:06 +0100 Subject: [PATCH 1/9] first pass --- code/datums/ammo/bullet/sniper.dm | 13 +++++++++++++ code/datums/components/bonus_damage_stack.dm | 14 +++++++++----- code/modules/projectiles/magazines/rifles.dm | 8 ++++++++ .../weapons/guns/ammo_by_faction/uscm.dmi | Bin 23981 -> 24361 bytes 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/code/datums/ammo/bullet/sniper.dm b/code/datums/ammo/bullet/sniper.dm index a82f00631608..ccc887c8614d 100644 --- a/code/datums/ammo/bullet/sniper.dm +++ b/code/datums/ammo/bullet/sniper.dm @@ -139,6 +139,19 @@ BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating/heavy) )) +/datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target + name = "holo-targetting anti-materiel sniper bullet" + damage = 80 //it's a big bullet but it's purpose is to support marines, not kill enemies by itself + var/bonus_damage_cap_increase = 400 // the result will be a 1.5 damage multiplier + var/holo_stacks = 500 + +/datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) + . = ..() + hit_mob.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time, bonus_damage_cap_increase) + playsound(hit_mob, 'sound/effects/supercapacitors_charging.ogg', 75) + to_chat(hit_mob, isxeno(hit_mob) ? SPAN_XENOHIGHDANGER("It feels as if we were MARKED FOR DEATH!") : SPAN_HIGHDANGER("It feels like you were MARKED FOR DEATH!")) + + /datum/ammo/bullet/sniper/elite name = "supersonic sniper bullet" diff --git a/code/datums/components/bonus_damage_stack.dm b/code/datums/components/bonus_damage_stack.dm index faf4813541b8..12e0dd704472 100644 --- a/code/datums/components/bonus_damage_stack.dm +++ b/code/datums/components/bonus_damage_stack.dm @@ -15,10 +15,13 @@ var/bonus_damage_cap = 100 /// Last world.time that the afflicted was hit by a holo-targeting round. var/last_stack + /// extra cap limit added by more powerful bullets + var/bonus_damage_cap_increase = 0 -/datum/component/bonus_damage_stack/Initialize(bonus_damage_stacks, time) +/datum/component/bonus_damage_stack/Initialize(bonus_damage_stacks, time, bonus_damage_cap_increase) . = ..() src.bonus_damage_stacks = bonus_damage_stacks + src.bonus_damage_cap = initial(bonus_damage_cap) + bonus_damage_cap_increase // this way it will never increase over the intended limit if(!time) time = world.time src.last_stack = time @@ -42,12 +45,12 @@ qdel(src) var/color = COLOR_BONUS_DAMAGE - var/intensity = bonus_damage_stacks / (bonus_damage_cap * 2) - color += num2text(BONUS_DAMAGE_MAX_ALPHA * intensity, 2, 16) + var/intensity = bonus_damage_stacks / (initial(bonus_damage_cap) * 2) + // color += num2text(BONUS_DAMAGE_MAX_ALPHA * intensity, 1, 16) if(parent) var/atom/A = parent - A.add_filter("bonus_damage_stacks", 2, list("type" = "outline", "color" = color, "size" = 1)) + A.add_filter("bonus_damage_stacks", 2, list("type" = "outline", "color" = color, "size" = 1+round(intensity, 1))) /datum/component/bonus_damage_stack/RegisterWithParent() START_PROCESSING(SSdcs, src) @@ -67,8 +70,9 @@ SIGNAL_HANDLER L += "Bonus Damage Taken: [bonus_damage_stacks * 0.1]%" -/datum/component/bonus_damage_stack/proc/get_bonus_damage(mob/M, list/damage_data) // 10% damage bonus at most +/datum/component/bonus_damage_stack/proc/get_bonus_damage(mob/M, list/damage_data) // 10% damage bonus in most instances SIGNAL_HANDLER + var/bonu_damage = min(bonus_damage_stacks, bonus_damage_cap) / 1000 damage_data["bonus_damage"] = damage_data["damage"] * (min(bonus_damage_stacks, bonus_damage_cap) / 1000) #undef COLOR_BONUS_DAMAGE diff --git a/code/modules/projectiles/magazines/rifles.dm b/code/modules/projectiles/magazines/rifles.dm index bfc411a2ea63..9264efe24f07 100644 --- a/code/modules/projectiles/magazines/rifles.dm +++ b/code/modules/projectiles/magazines/rifles.dm @@ -457,6 +457,14 @@ max_rounds = 4 gun_type = /obj/item/weapon/gun/boltaction/vulture w_class = SIZE_MEDIUM // maybe small? This shit's >4 inches long mind you + ammo_band_icon = "+vulture_band" + ammo_band_icon_empty = "+vulture_band_e" + +/obj/item/ammo_magazine/rifle/boltaction/vulture/holo_target + name = "\improper M707 \"Vulture\" holo-target magazine (20x102mm)" + desc = "A magazine for the M707 \"Vulture\" anti-matieriel rifle. Contains up to 4 massively oversized holo-target rounds which excel at marking heavy targets for ground troops. The logistical requirements for such a capability have severely hampered the bullet's ballistic performance." + default_ammo = /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target + ammo_band_color = AMMO_BAND_COLOR_HOLOTARGETING //=ROYAL MARINES=\\ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi index e60e9463b8a2d317451813b45602c78fbbafa04d..0402554428b612c61be448e3bd6f07a87a5a992b 100644 GIT binary patch literal 24361 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 literal 23981 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 z34 Date: Tue, 13 Feb 2024 23:59:03 +0100 Subject: [PATCH 2/9] gun case, some little touch ups, sfx --- code/datums/ammo/bullet/sniper.dm | 12 +++++---- code/datums/components/bonus_damage_stack.dm | 7 +++-- code/modules/cm_marines/equipment/guncases.dm | 24 ++++++++++++++++++ code/modules/projectiles/guns/boltaction.dm | 6 +++++ .../weapons/guns/ammo_by_faction/uscm.dmi | Bin 24361 -> 24370 bytes sound/weapons/gun_vulture_mark.ogg | Bin 0 -> 15100 bytes 6 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 sound/weapons/gun_vulture_mark.ogg diff --git a/code/datums/ammo/bullet/sniper.dm b/code/datums/ammo/bullet/sniper.dm index ccc887c8614d..c277fb7d4212 100644 --- a/code/datums/ammo/bullet/sniper.dm +++ b/code/datums/ammo/bullet/sniper.dm @@ -141,16 +141,18 @@ /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target name = "holo-targetting anti-materiel sniper bullet" - damage = 80 //it's a big bullet but it's purpose is to support marines, not kill enemies by itself - var/bonus_damage_cap_increase = 400 // the result will be a 1.5 damage multiplier - var/holo_stacks = 500 + damage = 60 //it's a big bullet but it's purpose is to support marines, not kill enemies by itself + var/bonus_damage_cap_increase = 233 // the result will be a 1.33 damage multiplier + var/holo_stacks = 333 /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) - . = ..() hit_mob.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time, bonus_damage_cap_increase) - playsound(hit_mob, 'sound/effects/supercapacitors_charging.ogg', 75) + playsound(hit_mob, 'sound/weapons/gun_vulture_mark.ogg', 75) to_chat(hit_mob, isxeno(hit_mob) ? SPAN_XENOHIGHDANGER("It feels as if we were MARKED FOR DEATH!") : SPAN_HIGHDANGER("It feels like you were MARKED FOR DEATH!")) + hit_mob.balloon_alert_to_viewers("marked for death!") +// the effect should be limited to one target +/datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target/set_bullet_traits() /datum/ammo/bullet/sniper/elite name = "supersonic sniper bullet" diff --git a/code/datums/components/bonus_damage_stack.dm b/code/datums/components/bonus_damage_stack.dm index 12e0dd704472..21e6d83b83f0 100644 --- a/code/datums/components/bonus_damage_stack.dm +++ b/code/datums/components/bonus_damage_stack.dm @@ -46,11 +46,11 @@ var/color = COLOR_BONUS_DAMAGE var/intensity = bonus_damage_stacks / (initial(bonus_damage_cap) * 2) - // color += num2text(BONUS_DAMAGE_MAX_ALPHA * intensity, 1, 16) - + //if intensity is too high of a value, the hex code will become invalid + color += num2text(BONUS_DAMAGE_MAX_ALPHA * clamp(intensity, 0, 0.5), 1, 16) if(parent) var/atom/A = parent - A.add_filter("bonus_damage_stacks", 2, list("type" = "outline", "color" = color, "size" = 1+round(intensity, 1))) + A.add_filter("bonus_damage_stacks", 2, list("type" = "outline", "color" = color, "size" = 1 + clamp(intensity, 0, 1))) /datum/component/bonus_damage_stack/RegisterWithParent() START_PROCESSING(SSdcs, src) @@ -72,7 +72,6 @@ /datum/component/bonus_damage_stack/proc/get_bonus_damage(mob/M, list/damage_data) // 10% damage bonus in most instances SIGNAL_HANDLER - var/bonu_damage = min(bonus_damage_stacks, bonus_damage_cap) / 1000 damage_data["bonus_damage"] = damage_data["damage"] * (min(bonus_damage_stacks, bonus_damage_cap) / 1000) #undef COLOR_BONUS_DAMAGE diff --git a/code/modules/cm_marines/equipment/guncases.dm b/code/modules/cm_marines/equipment/guncases.dm index 0cf097cb9b4c..f01876fc93c1 100644 --- a/code/modules/cm_marines/equipment/guncases.dm +++ b/code/modules/cm_marines/equipment/guncases.dm @@ -348,6 +348,30 @@ new /obj/item/device/vulture_spotter_scope/skillless(src, WEAKREF(rifle)) new /obj/item/tool/screwdriver(src) // Spotter scope needs a screwdriver to disassemble +/obj/item/storage/box/guncase/vulture/holo_target + name = "\improper M707 holo-targetting anti-materiel rifle case" + desc = "A gun case containing the M707 \"Vulture\" anti-materiel rifle and its requisite spotting tools. This variant is pre-loaded with holo-targetting rounds." + +/obj/item/storage/box/guncase/vulture/holo_target/fill_preset_inventory() + var/obj/item/weapon/gun/boltaction/vulture/holo_target/rifle = new(src) + new /obj/item/ammo_magazine/rifle/boltaction/vulture/holo_target(src) + new /obj/item/device/vulture_spotter_tripod(src) + new /obj/item/device/vulture_spotter_scope(src, WEAKREF(rifle)) + new /obj/item/tool/screwdriver(src) + new /obj/item/pamphlet/trait/vulture(src) + new /obj/item/pamphlet/trait/vulture(src) + +/obj/item/storage/box/guncase/vulture/holo_target/skillless + storage_slots = 5 + +/obj/item/storage/box/guncase/vulture/holo_target/skillless/fill_preset_inventory() + var/obj/item/weapon/gun/boltaction/vulture/holo_target/skillless/rifle = new(src) + new /obj/item/ammo_magazine/rifle/boltaction/vulture/holo_target(src) + new /obj/item/device/vulture_spotter_tripod(src) + new /obj/item/device/vulture_spotter_scope/skillless(src, WEAKREF(rifle)) + new /obj/item/tool/screwdriver(src) + + /obj/item/storage/box/guncase/xm51 name = "\improper XM51 breaching scattergun case" desc = "A gun case containing the XM51 Breaching Scattergun. Comes with two spare magazines, two spare shell boxes, an optional stock and a belt to holster the weapon." diff --git a/code/modules/projectiles/guns/boltaction.dm b/code/modules/projectiles/guns/boltaction.dm index a06131f98ce0..16ccb3438e23 100644 --- a/code/modules/projectiles/guns/boltaction.dm +++ b/code/modules/projectiles/guns/boltaction.dm @@ -279,3 +279,9 @@ /obj/item/weapon/gun/boltaction/vulture/skillless bypass_trait = TRUE + +/obj/item/weapon/gun/boltaction/vulture/holo_target + current_mag = /obj/item/ammo_magazine/rifle/boltaction/vulture/holo_target + +/obj/item/weapon/gun/boltaction/vulture/holo_target/skillless + bypass_trait = TRUE diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi index 0402554428b612c61be448e3bd6f07a87a5a992b..118dae3b7c7ea8460baffdc5938aff90a1fb91f3 100644 GIT binary patch delta 23384 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 H+J^iOT9yY? delta 23394 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 literal 0 HcmV?d00001 From 41dc41316d5caff099a1f137e53be806ff709d13 Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Wed, 14 Feb 2024 10:36:44 +0100 Subject: [PATCH 3/9] faster stack loss --- code/datums/ammo/bullet/sniper.dm | 7 ++++--- code/datums/components/bonus_damage_stack.dm | 6 ++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/code/datums/ammo/bullet/sniper.dm b/code/datums/ammo/bullet/sniper.dm index c277fb7d4212..4867268a1732 100644 --- a/code/datums/ammo/bullet/sniper.dm +++ b/code/datums/ammo/bullet/sniper.dm @@ -141,12 +141,13 @@ /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target name = "holo-targetting anti-materiel sniper bullet" - damage = 60 //it's a big bullet but it's purpose is to support marines, not kill enemies by itself + damage = 60 // it's a big bullet but its purpose is to support marines, not kill enemies by itself var/bonus_damage_cap_increase = 233 // the result will be a 1.33 damage multiplier - var/holo_stacks = 333 + var/holo_stacks = 333 // inflicts max holo stacks in one hit + var/stack_loss_multiplier = 2 // instead of taking 1 minute to wear off, it will now take 30 seconds /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) - hit_mob.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time, bonus_damage_cap_increase) + hit_mob.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time, bonus_damage_cap_increase, stack_loss_multiplier) playsound(hit_mob, 'sound/weapons/gun_vulture_mark.ogg', 75) to_chat(hit_mob, isxeno(hit_mob) ? SPAN_XENOHIGHDANGER("It feels as if we were MARKED FOR DEATH!") : SPAN_HIGHDANGER("It feels like you were MARKED FOR DEATH!")) hit_mob.balloon_alert_to_viewers("marked for death!") diff --git a/code/datums/components/bonus_damage_stack.dm b/code/datums/components/bonus_damage_stack.dm index 21e6d83b83f0..5e65a860654a 100644 --- a/code/datums/components/bonus_damage_stack.dm +++ b/code/datums/components/bonus_damage_stack.dm @@ -17,10 +17,12 @@ var/last_stack /// extra cap limit added by more powerful bullets var/bonus_damage_cap_increase = 0 + var/stack_loss_multiplier = 1 -/datum/component/bonus_damage_stack/Initialize(bonus_damage_stacks, time, bonus_damage_cap_increase) +/datum/component/bonus_damage_stack/Initialize(bonus_damage_stacks, time, bonus_damage_cap_increase, stack_loss_multiplier) . = ..() src.bonus_damage_stacks = bonus_damage_stacks + src.stack_loss_multiplier = stack_loss_multiplier src.bonus_damage_cap = initial(bonus_damage_cap) + bonus_damage_cap_increase // this way it will never increase over the intended limit if(!time) time = world.time @@ -39,7 +41,7 @@ /datum/component/bonus_damage_stack/process(delta_time) if(last_stack + 5 SECONDS < world.time) - bonus_damage_stacks = bonus_damage_stacks - BONUS_DAMAGE_STACK_LOSS_PER_SECOND * delta_time + bonus_damage_stacks = bonus_damage_stacks - BONUS_DAMAGE_STACK_LOSS_PER_SECOND * stack_loss_multiplier * delta_time if(bonus_damage_stacks <= 0) qdel(src) From b124b949bec81b2cdfc2283a9611f50acbcd2c86 Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Wed, 14 Feb 2024 11:05:54 +0100 Subject: [PATCH 4/9] impact text change --- code/datums/ammo/bullet/sniper.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/ammo/bullet/sniper.dm b/code/datums/ammo/bullet/sniper.dm index 4867268a1732..cc58e23d937f 100644 --- a/code/datums/ammo/bullet/sniper.dm +++ b/code/datums/ammo/bullet/sniper.dm @@ -149,7 +149,7 @@ /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) hit_mob.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time, bonus_damage_cap_increase, stack_loss_multiplier) playsound(hit_mob, 'sound/weapons/gun_vulture_mark.ogg', 75) - to_chat(hit_mob, isxeno(hit_mob) ? SPAN_XENOHIGHDANGER("It feels as if we were MARKED FOR DEATH!") : SPAN_HIGHDANGER("It feels like you were MARKED FOR DEATH!")) + to_chat(hit_mob, isxeno(hit_mob) ? SPAN_XENOHIGHDANGER("It feels as if we were MARKED FOR DEATH!") : SPAN_HIGHDANGER("It feels as if you were MARKED FOR DEATH!")) hit_mob.balloon_alert_to_viewers("marked for death!") // the effect should be limited to one target From 8568e8f3230859cda6aec6a9bbc9874944104898 Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Thu, 15 Feb 2024 11:36:57 +0100 Subject: [PATCH 5/9] adds zonespace's suggestions, adds more checks if different holotargetting bullets hit the same mob --- code/datums/ammo/bullet/rifle.dm | 6 ++++-- code/datums/ammo/bullet/sniper.dm | 9 +++++---- code/datums/ammo/bullet/special_ammo.dm | 6 ++++-- code/datums/ammo/shrapnel.dm | 8 ++++++-- code/datums/components/bonus_damage_stack.dm | 17 ++++++++++++++--- 5 files changed, 33 insertions(+), 13 deletions(-) diff --git a/code/datums/ammo/bullet/rifle.dm b/code/datums/ammo/bullet/rifle.dm index 0be6f1db8ff4..1ba415ebb027 100644 --- a/code/datums/ammo/bullet/rifle.dm +++ b/code/datums/ammo/bullet/rifle.dm @@ -22,10 +22,12 @@ name = "holo-targeting rifle bullet" damage = 30 var/holo_stacks = 10 + var/bonus_damage_cap_increase = 0 + var/stack_loss_multiplier = 1 -/datum/ammo/bullet/rifle/holo_target/on_hit_mob(mob/M, obj/projectile/P) +/datum/ammo/bullet/rifle/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) . = ..() - M.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time) + hit_mob.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time, bonus_damage_cap_increase, stack_loss_multiplier) /datum/ammo/bullet/rifle/holo_target/hunting name = "holo-targeting hunting bullet" diff --git a/code/datums/ammo/bullet/sniper.dm b/code/datums/ammo/bullet/sniper.dm index cc58e23d937f..91763a3e400b 100644 --- a/code/datums/ammo/bullet/sniper.dm +++ b/code/datums/ammo/bullet/sniper.dm @@ -141,10 +141,10 @@ /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target name = "holo-targetting anti-materiel sniper bullet" - damage = 60 // it's a big bullet but its purpose is to support marines, not kill enemies by itself - var/bonus_damage_cap_increase = 233 // the result will be a 1.33 damage multiplier - var/holo_stacks = 333 // inflicts max holo stacks in one hit - var/stack_loss_multiplier = 2 // instead of taking 1 minute to wear off, it will now take 30 seconds + damage = 60 // it's a big bullet but its purpose is to support marines, not to kill enemies by itself + var/holo_stacks = 333 // inflicts max holo stacks in one hit. this equates to a 33% damage bonus + var/bonus_damage_cap_increase = 233 // increases the default holo stack cap of 100 by 233, to 333 in total. + var/stack_loss_multiplier = 2 // multiplies the default holo stack drain of 5 stacks per second to 10 /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) hit_mob.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time, bonus_damage_cap_increase, stack_loss_multiplier) @@ -154,6 +154,7 @@ // the effect should be limited to one target /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target/set_bullet_traits() + return /datum/ammo/bullet/sniper/elite name = "supersonic sniper bullet" diff --git a/code/datums/ammo/bullet/special_ammo.dm b/code/datums/ammo/bullet/special_ammo.dm index 3d53c6b0c0d0..9797e3d33364 100644 --- a/code/datums/ammo/bullet/special_ammo.dm +++ b/code/datums/ammo/bullet/special_ammo.dm @@ -48,10 +48,12 @@ damage = 30 ///Stuff for the HRP holotargetting stacks var/holo_stacks = 15 + var/bonus_damage_cap_increase = 1 + var/stack_loss_multiplier = 1 -/datum/ammo/bullet/smartgun/holo_target/on_hit_mob(mob/M, obj/projectile/P) +/datum/ammo/bullet/smartgun/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) . = ..() - M.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time) + hit_mob.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time, bonus_damage_cap_increase, stack_loss_multiplier) /datum/ammo/bullet/smartgun/holo_target/ap name = "armor-piercing smartgun bullet" diff --git a/code/datums/ammo/shrapnel.dm b/code/datums/ammo/shrapnel.dm index e27caa4b277d..15787ca8d364 100644 --- a/code/datums/ammo/shrapnel.dm +++ b/code/datums/ammo/shrapnel.dm @@ -43,10 +43,14 @@ shrapnel_chance = 0 shell_speed = AMMO_SPEED_TIER_3//she fast af boi penetration = ARMOR_PENETRATION_TIER_5 + var/holo_stacks = 10 + var/bonus_damage_cap_increase = 1 + var/stack_loss_multiplier = 1 -/datum/ammo/bullet/shrapnel/hornet_rounds/on_hit_mob(mob/M, obj/projectile/P) +/datum/ammo/bullet/shrapnel/hornet_rounds/on_hit_mob(mob/hit_mob, obj/projectile/bullet) . = ..() - M.AddComponent(/datum/component/bonus_damage_stack, 10, world.time) + hit_mob.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time, bonus_damage_cap_increase, stack_loss_multiplier) + /datum/ammo/bullet/shrapnel/incendiary name = "flaming shrapnel" diff --git a/code/datums/components/bonus_damage_stack.dm b/code/datums/components/bonus_damage_stack.dm index 5e65a860654a..af8fdbd4314f 100644 --- a/code/datums/components/bonus_damage_stack.dm +++ b/code/datums/components/bonus_damage_stack.dm @@ -17,6 +17,7 @@ var/last_stack /// extra cap limit added by more powerful bullets var/bonus_damage_cap_increase = 0 + /// multiplies the BONUS_DAMAGE_STACK_LOSS_PER_SECOND calculation, modifying how fast we lose holo stacks var/stack_loss_multiplier = 1 /datum/component/bonus_damage_stack/Initialize(bonus_damage_stacks, time, bonus_damage_cap_increase, stack_loss_multiplier) @@ -28,7 +29,7 @@ time = world.time src.last_stack = time -/datum/component/bonus_damage_stack/InheritComponent(datum/component/bonus_damage_stack/BDS, i_am_original, bonus_damage_stacks, time) +/datum/component/bonus_damage_stack/InheritComponent(datum/component/bonus_damage_stack/BDS, i_am_original, bonus_damage_stacks, time, bonus_damage_cap_increase, stack_loss_multiplier) . = ..() if(!BDS) src.bonus_damage_stacks += bonus_damage_stacks @@ -37,7 +38,17 @@ src.bonus_damage_stacks += BDS.bonus_damage_stacks src.last_stack = BDS.last_stack - src.bonus_damage_stacks = min(src.bonus_damage_stacks, bonus_damage_cap) + // if a different type of holo targetting bullet hits a mob and has a bigger bonus cap, it will get applied. + if(src.bonus_damage_cap_increase < bonus_damage_cap_increase) + src.bonus_damage_cap_increase = bonus_damage_cap_increase + src.bonus_damage_cap = initial(bonus_damage_cap) + src.bonus_damage_cap_increase + + // however, if it has a worse stack_loss_multiplier, it will get applied instead. + // this way, if a weapon is meant to have a big bonus cap that rapidly depletes, it will not be messed up by a weapon that a low stack_loss_multiplier. + if(src.stack_loss_multiplier < stack_loss_multiplier) + src.stack_loss_multiplier = stack_loss_multiplier + + src.bonus_damage_stacks = min(src.bonus_damage_stacks, src.bonus_damage_cap) /datum/component/bonus_damage_stack/process(delta_time) if(last_stack + 5 SECONDS < world.time) @@ -48,7 +59,7 @@ var/color = COLOR_BONUS_DAMAGE var/intensity = bonus_damage_stacks / (initial(bonus_damage_cap) * 2) - //if intensity is too high of a value, the hex code will become invalid + // if intensity is too high of a value, the hex code will become invalid color += num2text(BONUS_DAMAGE_MAX_ALPHA * clamp(intensity, 0, 0.5), 1, 16) if(parent) var/atom/A = parent From abbd67b5043ea6837a9ce9311e2ad5c18f078136 Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Thu, 15 Feb 2024 19:57:10 +0100 Subject: [PATCH 6/9] adds IFF to the ammo, some minor text changes --- code/datums/ammo/bullet/sniper.dm | 6 ++++-- code/datums/components/bonus_damage_stack.dm | 2 +- code/modules/cm_marines/equipment/guncases.dm | 2 +- code/modules/projectiles/magazines/rifles.dm | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/code/datums/ammo/bullet/sniper.dm b/code/datums/ammo/bullet/sniper.dm index 91763a3e400b..119aab174385 100644 --- a/code/datums/ammo/bullet/sniper.dm +++ b/code/datums/ammo/bullet/sniper.dm @@ -152,9 +152,11 @@ to_chat(hit_mob, isxeno(hit_mob) ? SPAN_XENOHIGHDANGER("It feels as if we were MARKED FOR DEATH!") : SPAN_HIGHDANGER("It feels as if you were MARKED FOR DEATH!")) hit_mob.balloon_alert_to_viewers("marked for death!") -// the effect should be limited to one target +// the effect should be limited to one target, with IFF to compensate how hard it will be to hit these shots /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target/set_bullet_traits() - return + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) + )) /datum/ammo/bullet/sniper/elite name = "supersonic sniper bullet" diff --git a/code/datums/components/bonus_damage_stack.dm b/code/datums/components/bonus_damage_stack.dm index af8fdbd4314f..78da5e036ce4 100644 --- a/code/datums/components/bonus_damage_stack.dm +++ b/code/datums/components/bonus_damage_stack.dm @@ -44,7 +44,7 @@ src.bonus_damage_cap = initial(bonus_damage_cap) + src.bonus_damage_cap_increase // however, if it has a worse stack_loss_multiplier, it will get applied instead. - // this way, if a weapon is meant to have a big bonus cap that rapidly depletes, it will not be messed up by a weapon that a low stack_loss_multiplier. + // this way, if a weapon is meant to have a big bonus cap but holo stacks that rapidly deplete, it will not be messed up by a weapon that a low stack_loss_multiplier. if(src.stack_loss_multiplier < stack_loss_multiplier) src.stack_loss_multiplier = stack_loss_multiplier diff --git a/code/modules/cm_marines/equipment/guncases.dm b/code/modules/cm_marines/equipment/guncases.dm index f01876fc93c1..c853f74a70d1 100644 --- a/code/modules/cm_marines/equipment/guncases.dm +++ b/code/modules/cm_marines/equipment/guncases.dm @@ -350,7 +350,7 @@ /obj/item/storage/box/guncase/vulture/holo_target name = "\improper M707 holo-targetting anti-materiel rifle case" - desc = "A gun case containing the M707 \"Vulture\" anti-materiel rifle and its requisite spotting tools. This variant is pre-loaded with holo-targetting rounds." + desc = "A gun case containing the M707 \"Vulture\" anti-materiel rifle and its requisite spotting tools. This variant is pre-loaded with IFF-CAPABLE holo-targetting rounds." /obj/item/storage/box/guncase/vulture/holo_target/fill_preset_inventory() var/obj/item/weapon/gun/boltaction/vulture/holo_target/rifle = new(src) diff --git a/code/modules/projectiles/magazines/rifles.dm b/code/modules/projectiles/magazines/rifles.dm index 9264efe24f07..d12f390ccd95 100644 --- a/code/modules/projectiles/magazines/rifles.dm +++ b/code/modules/projectiles/magazines/rifles.dm @@ -462,7 +462,7 @@ /obj/item/ammo_magazine/rifle/boltaction/vulture/holo_target name = "\improper M707 \"Vulture\" holo-target magazine (20x102mm)" - desc = "A magazine for the M707 \"Vulture\" anti-matieriel rifle. Contains up to 4 massively oversized holo-target rounds which excel at marking heavy targets for ground troops. The logistical requirements for such a capability have severely hampered the bullet's ballistic performance." + desc = "A magazine for the M707 \"Vulture\" anti-matieriel rifle. Contains up to 4 massively oversized IFF-CAPABLE holo-targeting rounds, which excel at marking heavy targets to be attacked by allied ground forces. The logistical requirements for such capabilities heavily hinder the performance and stopping power of this round." default_ammo = /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target ammo_band_color = AMMO_BAND_COLOR_HOLOTARGETING From b4b74855af2457c0c49f9da2a5470869fcec5346 Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Thu, 15 Feb 2024 20:09:16 +0100 Subject: [PATCH 7/9] replace "holo-targetting" with "holo-targeting" --- code/datums/ammo/bullet/sniper.dm | 2 +- code/modules/cm_marines/equipment/guncases.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/ammo/bullet/sniper.dm b/code/datums/ammo/bullet/sniper.dm index 119aab174385..cbe01c929d55 100644 --- a/code/datums/ammo/bullet/sniper.dm +++ b/code/datums/ammo/bullet/sniper.dm @@ -140,7 +140,7 @@ )) /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target - name = "holo-targetting anti-materiel sniper bullet" + name = "holo-targeting anti-materiel sniper bullet" damage = 60 // it's a big bullet but its purpose is to support marines, not to kill enemies by itself var/holo_stacks = 333 // inflicts max holo stacks in one hit. this equates to a 33% damage bonus var/bonus_damage_cap_increase = 233 // increases the default holo stack cap of 100 by 233, to 333 in total. diff --git a/code/modules/cm_marines/equipment/guncases.dm b/code/modules/cm_marines/equipment/guncases.dm index c853f74a70d1..22999e97fda2 100644 --- a/code/modules/cm_marines/equipment/guncases.dm +++ b/code/modules/cm_marines/equipment/guncases.dm @@ -350,7 +350,7 @@ /obj/item/storage/box/guncase/vulture/holo_target name = "\improper M707 holo-targetting anti-materiel rifle case" - desc = "A gun case containing the M707 \"Vulture\" anti-materiel rifle and its requisite spotting tools. This variant is pre-loaded with IFF-CAPABLE holo-targetting rounds." + desc = "A gun case containing the M707 \"Vulture\" anti-materiel rifle and its requisite spotting tools. This variant is pre-loaded with IFF-CAPABLE holo-targeting rounds." /obj/item/storage/box/guncase/vulture/holo_target/fill_preset_inventory() var/obj/item/weapon/gun/boltaction/vulture/holo_target/rifle = new(src) From 26bb74e74dd80b1338cc4f3129f14c68234fb99b Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Mon, 19 Feb 2024 15:15:06 +0100 Subject: [PATCH 8/9] actually codedocs the reviewed stuff --- code/datums/ammo/bullet/rifle.dm | 6 +++--- code/datums/ammo/bullet/sniper.dm | 8 ++++---- code/datums/ammo/bullet/special_ammo.dm | 6 +++--- code/datums/ammo/shrapnel.dm | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/code/datums/ammo/bullet/rifle.dm b/code/datums/ammo/bullet/rifle.dm index 98852d0d769b..959b74a29950 100644 --- a/code/datums/ammo/bullet/rifle.dm +++ b/code/datums/ammo/bullet/rifle.dm @@ -21,9 +21,9 @@ /datum/ammo/bullet/rifle/holo_target name = "holo-targeting rifle bullet" damage = 30 - var/holo_stacks = 10 - var/bonus_damage_cap_increase = 0 - var/stack_loss_multiplier = 1 + var/holo_stacks = 10 /// inflicts this many holo stacks per bullet hit + var/bonus_damage_cap_increase = 0 /// modifies the default cap limit of 100 by this amount + var/stack_loss_multiplier = 1 /// multiplies the default drain of 5 holo stacks per second by this amount /datum/ammo/bullet/rifle/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) . = ..() diff --git a/code/datums/ammo/bullet/sniper.dm b/code/datums/ammo/bullet/sniper.dm index cbe01c929d55..48c14846af43 100644 --- a/code/datums/ammo/bullet/sniper.dm +++ b/code/datums/ammo/bullet/sniper.dm @@ -142,13 +142,13 @@ /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target name = "holo-targeting anti-materiel sniper bullet" damage = 60 // it's a big bullet but its purpose is to support marines, not to kill enemies by itself - var/holo_stacks = 333 // inflicts max holo stacks in one hit. this equates to a 33% damage bonus - var/bonus_damage_cap_increase = 233 // increases the default holo stack cap of 100 by 233, to 333 in total. - var/stack_loss_multiplier = 2 // multiplies the default holo stack drain of 5 stacks per second to 10 + var/holo_stacks = 333 /// inflicts this many holo stacks per bullet hit + var/bonus_damage_cap_increase = 233 /// modifies the default cap limit of 100 by this amount + var/stack_loss_multiplier = 2 /// multiplies the default drain of 5 holo stacks per second by this amount /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) hit_mob.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time, bonus_damage_cap_increase, stack_loss_multiplier) - playsound(hit_mob, 'sound/weapons/gun_vulture_mark.ogg', 75) + playsound(hit_mob, 'sound/weapons/gun_vulture_mark.ogg', 40) to_chat(hit_mob, isxeno(hit_mob) ? SPAN_XENOHIGHDANGER("It feels as if we were MARKED FOR DEATH!") : SPAN_HIGHDANGER("It feels as if you were MARKED FOR DEATH!")) hit_mob.balloon_alert_to_viewers("marked for death!") diff --git a/code/datums/ammo/bullet/special_ammo.dm b/code/datums/ammo/bullet/special_ammo.dm index 9797e3d33364..df0e923ffe98 100644 --- a/code/datums/ammo/bullet/special_ammo.dm +++ b/code/datums/ammo/bullet/special_ammo.dm @@ -47,9 +47,9 @@ name = "holo-targeting smartgun bullet" damage = 30 ///Stuff for the HRP holotargetting stacks - var/holo_stacks = 15 - var/bonus_damage_cap_increase = 1 - var/stack_loss_multiplier = 1 + var/holo_stacks = 15 /// inflicts this many holo stacks per bullet hit + var/bonus_damage_cap_increase = 0 /// modifies the default cap limit of 100 by this amount + var/stack_loss_multiplier = 1 /// multiplies the default drain of 5 holo stacks per second by this amount /datum/ammo/bullet/smartgun/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) . = ..() diff --git a/code/datums/ammo/shrapnel.dm b/code/datums/ammo/shrapnel.dm index 15787ca8d364..c3e807a44770 100644 --- a/code/datums/ammo/shrapnel.dm +++ b/code/datums/ammo/shrapnel.dm @@ -43,9 +43,9 @@ shrapnel_chance = 0 shell_speed = AMMO_SPEED_TIER_3//she fast af boi penetration = ARMOR_PENETRATION_TIER_5 - var/holo_stacks = 10 - var/bonus_damage_cap_increase = 1 - var/stack_loss_multiplier = 1 + var/holo_stacks = 10 /// inflicts this many holo stacks per bullet hit + var/bonus_damage_cap_increase = 0 /// modifies the default cap limit of 100 by this amount + var/stack_loss_multiplier = 1 /// multiplies the default drain of 5 holo stacks per second by this amount /datum/ammo/bullet/shrapnel/hornet_rounds/on_hit_mob(mob/hit_mob, obj/projectile/bullet) . = ..() From b8755d4bf03abb0dfd1126b668ade411d2f8ff7a Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Tue, 20 Feb 2024 09:55:17 +0100 Subject: [PATCH 9/9] PROPERLY code docs stuff --- code/datums/ammo/bullet/rifle.dm | 9 ++++++--- code/datums/ammo/bullet/sniper.dm | 9 ++++++--- code/datums/ammo/bullet/special_ammo.dm | 10 ++++++---- code/datums/ammo/shrapnel.dm | 9 ++++++--- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/code/datums/ammo/bullet/rifle.dm b/code/datums/ammo/bullet/rifle.dm index 959b74a29950..279a828ed786 100644 --- a/code/datums/ammo/bullet/rifle.dm +++ b/code/datums/ammo/bullet/rifle.dm @@ -21,9 +21,12 @@ /datum/ammo/bullet/rifle/holo_target name = "holo-targeting rifle bullet" damage = 30 - var/holo_stacks = 10 /// inflicts this many holo stacks per bullet hit - var/bonus_damage_cap_increase = 0 /// modifies the default cap limit of 100 by this amount - var/stack_loss_multiplier = 1 /// multiplies the default drain of 5 holo stacks per second by this amount + /// inflicts this many holo stacks per bullet hit + var/holo_stacks = 10 + /// modifies the default cap limit of 100 by this amount + var/bonus_damage_cap_increase = 0 + /// multiplies the default drain of 5 holo stacks per second by this amount + var/stack_loss_multiplier = 1 /datum/ammo/bullet/rifle/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) . = ..() diff --git a/code/datums/ammo/bullet/sniper.dm b/code/datums/ammo/bullet/sniper.dm index 48c14846af43..22371972e623 100644 --- a/code/datums/ammo/bullet/sniper.dm +++ b/code/datums/ammo/bullet/sniper.dm @@ -142,9 +142,12 @@ /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target name = "holo-targeting anti-materiel sniper bullet" damage = 60 // it's a big bullet but its purpose is to support marines, not to kill enemies by itself - var/holo_stacks = 333 /// inflicts this many holo stacks per bullet hit - var/bonus_damage_cap_increase = 233 /// modifies the default cap limit of 100 by this amount - var/stack_loss_multiplier = 2 /// multiplies the default drain of 5 holo stacks per second by this amount + /// inflicts this many holo stacks per bullet hit + var/holo_stacks = 333 + /// modifies the default cap limit of 100 by this amount + var/bonus_damage_cap_increase = 233 + /// multiplies the default drain of 5 holo stacks per second by this amount + var/stack_loss_multiplier = 2 /datum/ammo/bullet/sniper/anti_materiel/vulture/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) hit_mob.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time, bonus_damage_cap_increase, stack_loss_multiplier) diff --git a/code/datums/ammo/bullet/special_ammo.dm b/code/datums/ammo/bullet/special_ammo.dm index df0e923ffe98..97c1bf5735f9 100644 --- a/code/datums/ammo/bullet/special_ammo.dm +++ b/code/datums/ammo/bullet/special_ammo.dm @@ -46,10 +46,12 @@ /datum/ammo/bullet/smartgun/holo_target //Royal marines smartgun bullet has only diff between regular ammo is this one does holostacks name = "holo-targeting smartgun bullet" damage = 30 - ///Stuff for the HRP holotargetting stacks - var/holo_stacks = 15 /// inflicts this many holo stacks per bullet hit - var/bonus_damage_cap_increase = 0 /// modifies the default cap limit of 100 by this amount - var/stack_loss_multiplier = 1 /// multiplies the default drain of 5 holo stacks per second by this amount + /// inflicts this many holo stacks per bullet hit + var/holo_stacks = 15 + /// modifies the default cap limit of 100 by this amount + var/bonus_damage_cap_increase = 0 + /// multiplies the default drain of 5 holo stacks per second by this amount + var/stack_loss_multiplier = 1 /datum/ammo/bullet/smartgun/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) . = ..() diff --git a/code/datums/ammo/shrapnel.dm b/code/datums/ammo/shrapnel.dm index c3e807a44770..39b0813fad25 100644 --- a/code/datums/ammo/shrapnel.dm +++ b/code/datums/ammo/shrapnel.dm @@ -43,9 +43,12 @@ shrapnel_chance = 0 shell_speed = AMMO_SPEED_TIER_3//she fast af boi penetration = ARMOR_PENETRATION_TIER_5 - var/holo_stacks = 10 /// inflicts this many holo stacks per bullet hit - var/bonus_damage_cap_increase = 0 /// modifies the default cap limit of 100 by this amount - var/stack_loss_multiplier = 1 /// multiplies the default drain of 5 holo stacks per second by this amount + /// inflicts this many holo stacks per bullet hit + var/holo_stacks = 10 + /// modifies the default cap limit of 100 by this amount + var/bonus_damage_cap_increase = 0 + /// multiplies the default drain of 5 holo stacks per second by this amount + var/stack_loss_multiplier = 1 /datum/ammo/bullet/shrapnel/hornet_rounds/on_hit_mob(mob/hit_mob, obj/projectile/bullet) . = ..()