From 01eaea5e5798c626cfb805d839f1b3903962b3f2 Mon Sep 17 00:00:00 2001 From: Critawakets Date: Mon, 6 Jan 2025 16:49:23 -0500 Subject: [PATCH] Adds in Specialty OPS Ammo --- code/modules/cargo/packs/_packs.dm | 2 + .../file_system/programs/dept_order.dm | 2 + maplestation.dme | 3 + .../code/modules/cargo/packs.dm | 21 ++++++ .../ammunition/ballistic/revolver.dm | 9 +++ .../projectiles/boxes_magazines/ammo_boxes.dm | 11 +++ .../projectile/bullets/revolver.dm | 66 ++++++++++++++++++ .../icons/obj/storage/crates.dmi | Bin 0 -> 2572 bytes .../icons/obj/weapons/guns/ammo.dmi | Bin 0 -> 318 bytes .../icons/obj/weapons/guns/projectiles.dmi | Bin 0 -> 532 bytes 10 files changed, 114 insertions(+) create mode 100644 maplestation_modules/code/modules/projectiles/ammunition/ballistic/revolver.dm create mode 100644 maplestation_modules/code/modules/projectiles/boxes_magazines/ammo_boxes.dm create mode 100644 maplestation_modules/code/modules/projectiles/projectile/bullets/revolver.dm create mode 100644 maplestation_modules/icons/obj/storage/crates.dmi create mode 100644 maplestation_modules/icons/obj/weapons/guns/ammo.dmi create mode 100644 maplestation_modules/icons/obj/weapons/guns/projectiles.dmi diff --git a/code/modules/cargo/packs/_packs.dm b/code/modules/cargo/packs/_packs.dm index 9257d2d1e3d2..edf3e6ebc253 100644 --- a/code/modules/cargo/packs/_packs.dm +++ b/code/modules/cargo/packs/_packs.dm @@ -41,6 +41,8 @@ var/goody = FALSE /// Can coupons target this pack? If so, how rarely? var/discountable = SUPPLY_PACK_NOT_DISCOUNTABLE + /// NON-MODULE CHANGE : Does this override departmental orders to be unavailable from them? + var/no_departmental_orders = FALSE /datum/supply_pack/New() id = type diff --git a/code/modules/modular_computers/file_system/programs/dept_order.dm b/code/modules/modular_computers/file_system/programs/dept_order.dm index c905ac7cd3af..951dcbae6d3b 100644 --- a/code/modules/modular_computers/file_system/programs/dept_order.dm +++ b/code/modules/modular_computers/file_system/programs/dept_order.dm @@ -124,6 +124,8 @@ return FALSE if(to_check.goody) return FALSE + if(to_check.no_departmental_orders) // NON-MODULE CHANGE : non-departmental order crates + return FALSE return TRUE /// Looks through all possible departments and finds one this ID card "corresponds" to. diff --git a/maplestation.dme b/maplestation.dme index 9ecb5505e104..1e0319262e5b 100644 --- a/maplestation.dme +++ b/maplestation.dme @@ -6501,8 +6501,11 @@ #include "maplestation_modules\code\modules\paperwork\stamps.dm" #include "maplestation_modules\code\modules\pixel_shift\code\pixel_shift_component.dm" #include "maplestation_modules\code\modules\pixel_shift\code\pixel_shift_keybind.dm" +#include "maplestation_modules\code\modules\projectiles\ammunition\ballistic\revolver.dm" +#include "maplestation_modules\code\modules\projectiles\boxes_magazines\ammo_boxes.dm" #include "maplestation_modules\code\modules\projectiles\projectile\bullets\autocannon.dm" #include "maplestation_modules\code\modules\projectiles\projectile\bullets\gauss.dm" +#include "maplestation_modules\code\modules\projectiles\projectile\bullets\revolver.dm" #include "maplestation_modules\code\modules\projectiles\projectile\bullets\shotgun.dm" #include "maplestation_modules\code\modules\projectiles\projectile\energy\laser.dm" #include "maplestation_modules\code\modules\projectiles\projectile\energy\ppc.dm" diff --git a/maplestation_modules/code/modules/cargo/packs.dm b/maplestation_modules/code/modules/cargo/packs.dm index 68d4ab146825..4cc07fb9e065 100644 --- a/maplestation_modules/code/modules/cargo/packs.dm +++ b/maplestation_modules/code/modules/cargo/packs.dm @@ -313,3 +313,24 @@ /obj/item/seeds/starfruit = 2, /obj/item/book/manual/starfruit = 1, ) + +/datum/supply_pack/security/specialty_c38_ammo + name = "Specialty OPS .38 Ammo" + desc = "A pack of specialty ammo produced by OPS Industries, a partner high-end equipment workshop. Contains two speedloaders of .38 HV-DS and .38 Maginull rounds. \ + Cannot be department ordered." + cost = PAYCHECK_COMMAND * 50 + no_departmental_orders = TRUE // intentionally harder to get and requires spending + crate_type = /obj/structure/closet/crate/secure/ops_industries + contains = list( + /obj/item/ammo_box/c38/dual_stage, + /obj/item/ammo_box/c38/dual_stage, + /obj/item/ammo_box/c38/maginull, + /obj/item/ammo_box/c38/maginull, + ) + +/obj/structure/closet/crate/secure/ops_industries + name = "OPS Industries crate" + desc = "A secure crate with the logo of OPS Industries." + icon = 'maplestation_modules/icons/obj/storage/crates.dmi' + icon_state = "opscrate" + base_icon_state = "opscrate" diff --git a/maplestation_modules/code/modules/projectiles/ammunition/ballistic/revolver.dm b/maplestation_modules/code/modules/projectiles/ammunition/ballistic/revolver.dm new file mode 100644 index 000000000000..e4f4d99d0696 --- /dev/null +++ b/maplestation_modules/code/modules/projectiles/ammunition/ballistic/revolver.dm @@ -0,0 +1,9 @@ +/obj/item/ammo_casing/c38/dual_stage + name = ".38 HV-DS bullet casing" + desc = "A .38 High-Velocity Dual-Stage bullet casing." + projectile_type = /obj/projectile/bullet/c38/dual_stage + +/obj/item/ammo_casing/c38/maginull + name = ".38 Maginull bullet casing" + desc = "A .38 Maginull bullet casing." + projectile_type = /obj/projectile/bullet/c38/maginull diff --git a/maplestation_modules/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/maplestation_modules/code/modules/projectiles/boxes_magazines/ammo_boxes.dm new file mode 100644 index 000000000000..bdc916f4a042 --- /dev/null +++ b/maplestation_modules/code/modules/projectiles/boxes_magazines/ammo_boxes.dm @@ -0,0 +1,11 @@ +/obj/item/ammo_box/c38/dual_stage + name = "speed loader (.38 HV-DS)" + desc = "Designed to quickly reload revolvers. These rounds are made with an expensive dual-stage propulsion process, leading to much faster velocity of the bullet." + ammo_type = /obj/item/ammo_casing/c38/dual_stage + ammo_band_color = "#dcddff" + +/obj/item/ammo_box/c38/maginull + name = "speed loader (.38 Maginull)" + desc = "Designed to quickly reload revolvers. These rounds contain a hollow-point gold and obsidian core, embedding itself into a target and then draining all their mana." + ammo_type = /obj/item/ammo_casing/c38/maginull + ammo_band_color = "#4b007c" diff --git a/maplestation_modules/code/modules/projectiles/projectile/bullets/revolver.dm b/maplestation_modules/code/modules/projectiles/projectile/bullets/revolver.dm new file mode 100644 index 000000000000..51e760bde855 --- /dev/null +++ b/maplestation_modules/code/modules/projectiles/projectile/bullets/revolver.dm @@ -0,0 +1,66 @@ +/obj/projectile/bullet/c38/dual_stage + name = ".38 dual-stage bullet" + icon = 'maplestation_modules/icons/obj/weapons/guns/projectiles.dmi' + icon_state = "dual_stage" + damage = 20 + speed = 1.2 // make the effect look cooler + armour_penetration = 10 + ricochets_max = 0 + ricochet_chance = 0 + wound_bonus = -30 + embedding = list(embed_chance=20, fall_chance=2, jostle_chance=2, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=3, jostle_pain_mult=5, rip_time=1 SECONDS) + embed_falloff_tile = -1.5 + +/obj/projectile/bullet/c38/dual_stage/fire(angle, atom/direct_target) + . = ..() + addtimer(CALLBACK(src, PROC_REF(speed_up)), 0.4 SECONDS) + +/obj/projectile/bullet/c38/dual_stage/proc/speed_up() + speed /= 2.5 + icon_state = "dual_stage-fast" + wound_bonus += 30 + armour_penetration += 20 + new /obj/item/ammo_casing/spent/dual_stage_booster(get_turf(src)) + +/obj/item/ammo_casing/spent/dual_stage_booster + name = "spent dual-stage bullet booster" + desc = "A bullet booster." + icon = 'maplestation_modules/icons/obj/weapons/guns/ammo.dmi' + icon_state = "dual_stage_junk" + +/obj/item/ammo_casing/spent/dual_stage_booster/Initialize(mapload) + . = ..() + bounce_away(still_warm = TRUE, bounce_delay = 3) + +/obj/item/ammo_casing/spent/dual_stage_booster/update_icon_state() + icon_state = "dual_stage_junk" + return ..() + +/obj/projectile/bullet/c38/maginull + name = ".38 maginull bullet" + damage = 20 + ricochets_max = 0 // do you expect hollow-point gold and obsidian to endure a ricochet? + ricochet_chance = 0 + weak_against_armour = TRUE + wound_bonus = -30 + embedding = list(embed_chance=50, fall_chance=1, jostle_chance=0, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.2, pain_mult=1, jostle_pain_mult=2, remove_pain_mult = 2, rip_time=1 SECONDS) + embed_falloff_tile = -2.5 + shrapnel_type = /obj/item/shrapnel/bullet/maginull + +/obj/item/shrapnel/bullet/maginull + var/mob/living/carbon/spiked_mob + +/obj/item/shrapnel/bullet/maginull/embedded(atom/embedded_target, obj/item/bodypart/part) + . = ..() + if(iscarbon(embedded_target)) + spiked_mob = embedded_target + START_PROCESSING(SSprocessing, src) + +/obj/item/shrapnel/bullet/maginull/process(seconds_per_tick) + if(spiked_mob?.mana_pool) + spiked_mob.safe_adjust_personal_mana(-1.5 * seconds_per_tick) + +/obj/item/shrapnel/bullet/maginull/unembedded() + spiked_mob = null + STOP_PROCESSING(SSprocessing, src) + . = ..() diff --git a/maplestation_modules/icons/obj/storage/crates.dmi b/maplestation_modules/icons/obj/storage/crates.dmi new file mode 100644 index 0000000000000000000000000000000000000000..fb8d46fc3bb3aac92deea1acd235a5f51e64e433 GIT binary patch literal 2572 zcmc&$`9IWq7ymM@nQO^R+(g-v3L#hOnHaJRlF3pc(Y0jBmKcoPU?>_TH?o!oA?su* z%SelTYwV1XCCfD9X3UtujA!oi7d$^aujl#Ue9q^*&+oLqtA}jPg0=E!+JQ={q*& znia3_FADpeu5|BK^2~{orAgUmhulqmD!Dribj^!hTq&MIX1f}mJ$+;! zJeA|6x^&sZJ>S40#Q7#oDdDQV-joo0=FX;OKS+kEZGsK zYKgaKttOj14mf~95vx1$&tB-!z_@_HP_QZ8ZEhVyV9m3-ad2D*U3f>H!evOz;Dk1z zk|?^ts}wYT1DRzVw)Obv4ie=JHd7#fHbzt)xVfo6fg9edpS$!3}XkLj>Gw zX{sZ9^?f(=@|JU)+Ab(GyY}CR&Vjq(x3i$d*EH449$v9G2kW{()qr9Z0&@qJYH9_$ z{792x!1lu_S4dt#LG@tlImbM%=VK43iS-Z8N4kkWDEQ~184SkZ?H7J4Tw9b6{=BH= zL6mwN08C6wcMkuIXTNykC#XT6td%>Iz@sZ?On z(5(t+NFqzANjKh-t`I6U@qxT7A5r$)gh>P;V(thV^}jk#O&(Ra3lv#za;`Q9>5fW7 zjo@@dCHcVF1Z&L?8}7rQYYO1{JTW; z0NV)0+f&;D1vhvsh+Y`O3-q-`w`M|V?G zyQfeHS9L>>vnZNc;oLCZE`tJx6Nv{bt$OZ7T$9kluCFR0F>7U_YCGwTF&kg+S?=FO z+T6yFnN5$hzAL2luu=E~_8}vw=ZL@pI!daGH7HS@-q^nLSJGI=+VghY-Jy~s9k!V% zzrU4&Rogq}j5b9=q5h;x>=JFsPK2Al$fX6dqucFCqJIeZQe-~K3H+5{Oo8(&T~rE~ z=t_mVIVJ{Z`~r12pQkrtct!C)nhC$WmpRm~^1Qz>+Iw?(+0$ftYb&HbfZP!SKc{bd z7_d0|yed-MPb=HXEF~pnd7}E3&GcZNzG}8rZ%>a!Kg~>4NCTI2xuB_wpmm>`j}y|*|^OfcXZQ_eoKgX z1_dtg?77YP3Yg6)By95oxsPRQ0xbB1LBWyfvVs7z9E{Kflrv<2N*$1qUWP6(DWKdH zquxa=z-~!$c~t)!C_+`8tT!MC6<}3E`01LOe$@)PKv8dJ`jTk;>+wDAF2>y4{Kfpk zkqj9{KP5##hq2*Q#Ne!Te{A5be3%UCXg~HkFe(_mt78Q*N^iqVsPQ57+CpY8JNF_C zCWFvbquwgIxDtE0uB9c%XEku7_=vQ$%6*l5h(M~`j+nNN-l>)BFI(u9kasgayV&B} z_o@u&!pT~!!nke6k6^s|o)n(7AUHx;gtB<5fsQ{akB)b!L;vT;@JC3mnCjM))_6&C}^Mg!aLz zLchitZTl(bb_?cyUO`F&LHZEA*-(A-{ZyC~MK`{;6jfixKGlbHGd)pY)4cD}-{9%v zvvy}zB@h?8wVdWHSB@(B)8R~5i^SE93dEs0jVn#f9YGZ_uqOoR*!gSU=XoudM2!z! zNBEC>1}3IjR5&~h{fB0$o#jvgeDdpg)cJ%)MT^d=pG= z4M!Ck#>isYdp#Szfq2@W(2@IKqBb4~HOeW!H0qRg`Q@GW63{2Pxw$W5WFIUn`iMQnhgY458SHmQh%W=lyO&K@d?%##>h`ivUQX89{3u3;p~)*-Ror&s=URQ%k;}i zon5U|>aNcy^|d|ZfdzZzq@$e9i$5%nKCYAZ>|^;mZ^u)|r!4%aW~#dV<71(_2|#W2 z{V{UZYTGB30G-g}>Eaj?(faoCLCymTJggV;UnqGJ9OI&X@}TXldAFSTb3<2f z{GZQaxR1qDQ?=)e(U&qN4uu8=CJu%T+hjIfo3;G!oX`KZUYjFq@p$ij7Z!#Et2h)x z%&)Kt2wFT3@XB0wku@Onh{XD@?;EB~yl?zmdCkwXd`UY-kRc5Z8<^$eWxq}SJ-Hv~ O8U{~SKbLh*2~7YrRetXP literal 0 HcmV?d00001 diff --git a/maplestation_modules/icons/obj/weapons/guns/projectiles.dmi b/maplestation_modules/icons/obj/weapons/guns/projectiles.dmi new file mode 100644 index 0000000000000000000000000000000000000000..08a94886810ec1cbf0ec235e5dddae7128720977 GIT binary patch literal 532 zcmV+v0_**WP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex7wuvIWN;^NFm z%}mcIfpCgT5=&AQY!#GJN)vP9i%SyIQJp@xj55`5_3}_Y%EH3(-MnI zaH&^TaP@OhaPjrz0szz!Dz+XO2kHO-0Z~arK~!jg?U^xdgFp~PKao%1o`TBK7BuMt zb?!jx8>A#0z&A*{XP}?ZyG3%d6!g9VDJ&u@N+Rz}V6^eRYNVBBKYzYcOnn0=GCwY3&RgeGrmW6Yk@i=BXB7+|gatjn_G zwqh{>$0l#