Merge pull request #14608 from TheObserver-sys/TheHoldoutUpdate
The Holdout Update: How I learned to stop whining, and aim a pocket pistol.
This commit is contained in:
@@ -351,6 +351,75 @@
|
||||
if(!contents.len)
|
||||
. += "[icon_state]_empty"
|
||||
|
||||
//Derringer "Cigarettes"//
|
||||
/obj/item/storage/fancy/cigarettes/derringer
|
||||
name = "\improper Robust packet"
|
||||
desc = "Smoked by the robust."
|
||||
icon_state = "robust"
|
||||
spawn_type = /obj/item/gun/ballistic/derringer/traitor
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/derringer/ComponentInitialize()
|
||||
. = ..()
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.max_items = 6
|
||||
STR.can_hold = typecacheof(list(/obj/item/clothing/mask/cigarette, /obj/item/lighter, /obj/item/gun/ballistic/derringer, /obj/item/ammo_casing/c38, /obj/item/ammo_casing/a357, /obj/item/ammo_casing/g4570))
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/derringer/AltClick(mob/living/carbon/user)
|
||||
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
|
||||
return
|
||||
var/obj/item/W = (locate(/obj/item/ammo_casing/a357) in contents) || (locate(/obj/item/clothing/mask/cigarette) in contents) || locate(/obj/item/ammo_casing/g4570) //Easy access smokes and bullets
|
||||
if(W && contents.len > 0)
|
||||
SEND_SIGNAL(src, COMSIG_TRY_STORAGE_TAKE, W, user)
|
||||
user.put_in_hands(W)
|
||||
contents -= W
|
||||
to_chat(user, "<span class='notice'>You take \a [W] out of the pack.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>There are no items left in the pack.</span>")
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/derringer/PopulateContents()
|
||||
new spawn_type(src)
|
||||
new /obj/item/ammo_casing/a357(src)
|
||||
new /obj/item/ammo_casing/a357(src)
|
||||
new /obj/item/ammo_casing/a357(src)
|
||||
new /obj/item/ammo_casing/a357(src)
|
||||
new /obj/item/clothing/mask/cigarette/syndicate(src)
|
||||
|
||||
//For traitors with luck/class
|
||||
/obj/item/storage/fancy/cigarettes/derringer/gold
|
||||
name = "\improper Robust Gold packet"
|
||||
desc = "Smoked by the truly robust."
|
||||
icon_state = "robustg"
|
||||
spawn_type = /obj/item/gun/ballistic/derringer/gold
|
||||
|
||||
//For operatives, bound in a ka-tet.
|
||||
/obj/item/storage/fancy/cigarettes/derringer/midworld
|
||||
name = "\improper Midworld's Lime Bend"
|
||||
desc = "The wheel of Ka turns, Gunslinger."
|
||||
icon_state = "slime"
|
||||
spawn_type = /obj/item/gun/ballistic/derringer/nukeop
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/derringer/midworld/PopulateContents()
|
||||
new spawn_type(src)
|
||||
new /obj/item/ammo_casing/g4570(src)
|
||||
new /obj/item/ammo_casing/g4570(src)
|
||||
new /obj/item/ammo_casing/g4570(src)
|
||||
new /obj/item/ammo_casing/g4570(src)
|
||||
new /obj/item/clothing/mask/cigarette/xeno(src)
|
||||
|
||||
//For Cargomen, looking for a good deal on arms, with no quarrels as to where they're from.
|
||||
/obj/item/storage/fancy/cigarettes/derringer/smuggled
|
||||
name = "\improper Shady Jim's Super Slims packet"
|
||||
desc = "If you get caught with this, we don't know you, capiche?"
|
||||
icon_state = "shadyjim"
|
||||
spawn_type = /obj/item/gun/ballistic/derringer
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/derringer/smuggled/PopulateContents()
|
||||
new spawn_type(src)
|
||||
new /obj/item/ammo_casing/c38/lethal(src)
|
||||
new /obj/item/ammo_casing/c38/lethal(src)
|
||||
new /obj/item/ammo_casing/c38/lethal(src)
|
||||
new /obj/item/ammo_casing/c38/lethal(src)
|
||||
new /obj/item/clothing/mask/cigarette/shadyjims (src)
|
||||
/////////////
|
||||
//CIGAR BOX//
|
||||
/////////////
|
||||
|
||||
@@ -46,7 +46,8 @@
|
||||
/obj/item/instrument/harmonica,
|
||||
/obj/item/mining_voucher,
|
||||
/obj/item/suit_voucher,
|
||||
/obj/item/reagent_containers/pill))
|
||||
/obj/item/reagent_containers/pill,
|
||||
/obj/item/gun/ballistic/derringer))
|
||||
|
||||
/obj/item/storage/wallet/Exited(atom/movable/AM)
|
||||
. = ..()
|
||||
|
||||
@@ -48,3 +48,12 @@
|
||||
price_max = 300
|
||||
stock_max = 3
|
||||
availability_prob = 40
|
||||
|
||||
/datum/blackmarket_item/weapon/derringer
|
||||
name = ".38 Derringer"
|
||||
desc = "Compact safety! Now at a premium!"
|
||||
item = /obj/item/gun/ballistic/derringer
|
||||
price_min = 500
|
||||
price_max = 1500
|
||||
stock_max = 3
|
||||
availability_prob = 30
|
||||
|
||||
@@ -232,3 +232,35 @@
|
||||
desc = "Contains one hellgun, an old pattern of laser gun infamous for its ability to horribly disfigure targets with burns. Technically violates the Space Geneva Convention when used on humanoids."
|
||||
cost = 1500
|
||||
contains = list(/obj/item/gun/energy/laser/hellgun)
|
||||
|
||||
/datum/supply_pack/security/armory/derringerclassic
|
||||
name = "Holdout Crate"
|
||||
crate_name = "dented crate"
|
||||
desc = "Hey kid.. c'mere. Boss says we need to offload these, to any buyer, no questions asked. You pay us, we give you three of these guns, no strings attached. Locks are to ensure they get to PAYING customers."
|
||||
cost = 2000
|
||||
contraband = TRUE
|
||||
can_private_buy = TRUE
|
||||
contains = list(/obj/item/storage/fancy/cigarettes/derringer/smuggled,
|
||||
/obj/item/storage/fancy/cigarettes/derringer/smuggled,
|
||||
/obj/item/storage/fancy/cigarettes/derringer/smuggled,
|
||||
/obj/item/storage/wallet)
|
||||
|
||||
/datum/supply_pack/security/armory/esoteric_arms
|
||||
name = "Esoteric Armory Shipment"
|
||||
desc = "Well.. you're an agent of taste, I can tell that much. For the right price.. we could see our way clear to send you one of our more... unique weapons."
|
||||
hidden = TRUE
|
||||
cost = 10000
|
||||
can_private_buy = TRUE
|
||||
crate_name = "dusty crate"
|
||||
var/num_contained = 1
|
||||
contains = list(/obj/item/gun/ballistic/shotgun/leveraction,
|
||||
/obj/item/storage/fancy/cigarettes/derringer/gold,
|
||||
/obj/item/gun/ballistic/revolver/nagant,
|
||||
/obj/item/gun/ballistic/automatic/pistol/APS,
|
||||
/obj/item/gun/ballistic/revolver/golden)
|
||||
|
||||
/datum/supply_pack/security/armory/esoteric_arms/fill(obj/structure/closet/crate/C)
|
||||
var/list/L = contains.Copy()
|
||||
for(var/i in 1 to num_contained)
|
||||
var/item = pick_n_take(L)
|
||||
new item(C)
|
||||
|
||||
@@ -81,3 +81,4 @@
|
||||
desc = "Contains one standard epinephrine medipen and one standard emergency first-aid kit medipen. For when you want to prepare for the worst."
|
||||
cost = 500
|
||||
contains = list(/obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/hypospray/medipen/ekit)
|
||||
|
||||
|
||||
@@ -73,3 +73,11 @@
|
||||
name = ".38 DumDum bullet casing"
|
||||
desc = "A .38 DumDum bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/c38/dumdum
|
||||
|
||||
//.45-70 GOVT (Gunslinger's Derringer)
|
||||
|
||||
/obj/item/ammo_casing/g4570
|
||||
name= ".45-70 Govt bullet casing"
|
||||
desc = "An exceedingly rare .45-70 Govt bullet casing."
|
||||
caliber = "45-70g"
|
||||
projectile_type = /obj/item/projectile/bullet/g4570
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
/obj/item/ammo_box/magazine/internal/derringer
|
||||
name = "derringer muzzle"
|
||||
ammo_type = /obj/item/ammo_casing/c38
|
||||
caliber = "38"
|
||||
max_ammo = 2
|
||||
multiload = FALSE
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/derringer/ammo_count(countempties = 1)
|
||||
if (!countempties)
|
||||
var/boolets = 0
|
||||
for(var/obj/item/ammo_casing/bullet in stored_ammo)
|
||||
if(bullet.BB)
|
||||
boolets++
|
||||
return boolets
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/derringer/a357
|
||||
name = "\improper derringer muzzle"
|
||||
ammo_type = /obj/item/ammo_casing/a357
|
||||
caliber = "357"
|
||||
max_ammo = 2
|
||||
multiload = FALSE
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/derringer/g4570
|
||||
name = "\improper derringer muzzle"
|
||||
ammo_type = /obj/item/ammo_casing/g4570
|
||||
caliber = "45-70g"
|
||||
max_ammo = 2
|
||||
multiload = FALSE
|
||||
74
code/modules/projectiles/guns/ballistic/derringer.dm
Normal file
74
code/modules/projectiles/guns/ballistic/derringer.dm
Normal file
@@ -0,0 +1,74 @@
|
||||
/obj/item/gun/ballistic/derringer
|
||||
name = "\improper .38 Derringer"
|
||||
desc = "A easily concealable derringer. Uses .38 ammo"
|
||||
icon = 'icons/obj/guns/projectile.dmi'
|
||||
icon_state = "derringer"
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/derringer
|
||||
obj_flags = UNIQUE_RENAME
|
||||
fire_sound = 'sound/weapons/revolvershot.ogg'
|
||||
casing_ejector = FALSE
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/gun/ballistic/derringer/Initialize()
|
||||
..()
|
||||
transform *= 0.8 //Spriter too lazy to make icons smaller than default revolvers, local coder hacks in solution.
|
||||
|
||||
/obj/item/gun/ballistic/derringer/get_ammo(countchambered = FALSE, countempties = TRUE)
|
||||
var/boolets = 0 //legacy var name maturity
|
||||
if (chambered && countchambered)
|
||||
boolets++
|
||||
if (magazine)
|
||||
boolets += magazine.ammo_count(countempties)
|
||||
return boolets
|
||||
|
||||
/obj/item/gun/ballistic/derringer/attackby(obj/item/A, mob/user, params)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
var/num_loaded = magazine.attackby(A, user, params, 1)
|
||||
if(num_loaded)
|
||||
to_chat(user, "<span class='notice'>You load [num_loaded] shell\s into \the [src].</span>")
|
||||
playsound(user, 'sound/weapons/bulletinsert.ogg', 60, 1)
|
||||
A.update_icon()
|
||||
update_icon()
|
||||
chamber_round(0)
|
||||
|
||||
|
||||
/obj/item/gun/ballistic/derringer/attack_self(mob/living/user)
|
||||
var/num_unloaded = 0
|
||||
while (get_ammo() > 0)
|
||||
var/obj/item/ammo_casing/CB
|
||||
CB = magazine.get_round(0)
|
||||
chambered = null
|
||||
CB.forceMove(drop_location())
|
||||
CB.update_icon()
|
||||
num_unloaded++
|
||||
if (num_unloaded)
|
||||
to_chat(user, "<span class='notice'>You break open \the [src] and unload [num_unloaded] bullets\s.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
|
||||
/obj/item/gun/ballistic/derringer/examine(mob/user)
|
||||
. = ..()
|
||||
var/live_ammo = get_ammo(FALSE, FALSE)
|
||||
. += "[live_ammo ? live_ammo : "None"] of those are live rounds."
|
||||
|
||||
/obj/item/gun/ballistic/derringer/traitor
|
||||
name = "\improper .357 Syndicate Derringer"
|
||||
desc = "An easily concealable derriger, if not for the bright red and black. Uses .357 ammo"
|
||||
icon_state = "derringer_syndie"
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/derringer/a357
|
||||
|
||||
/obj/item/gun/ballistic/derringer/gold
|
||||
name = "\improper Golden Derringer"
|
||||
desc = "The golden sheen is somewhat counterintuitive as a stealth weapon, but it looks cool. Uses .357 ammo"
|
||||
icon_state = "derringer_gold"
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/derringer/a357
|
||||
fire_sound = 'sound/weapons/resonator_blast.ogg'
|
||||
|
||||
/obj/item/gun/ballistic/derringer/nukeop
|
||||
name = "\improper Gunslinger's Derringer"
|
||||
desc = "Sandalwood grip, wellkempt blue-grey steel barrels, and a crash like thunder itself. Uses the exceedingly rare 45-70 Govt. ammo"
|
||||
icon_state = "derringer"
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/derringer/g4570
|
||||
fire_sound = 'sound/weapons/gunshotshotgunshot.ogg'
|
||||
@@ -138,3 +138,13 @@
|
||||
embedding = list(embed_chance=90, fall_chance=2, jostle_chance=5, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=5, jostle_pain_mult=6, rip_time=10)
|
||||
wound_falloff_tile = -1
|
||||
embed_falloff_tile = -5
|
||||
|
||||
//.45-70 GOVT (Gunslinger's Derringer)
|
||||
//0bserver here. For all that is holy, do me a flavor, and do NOT allow people easy access to this ammo. This is meant for extremely lucky traitors, and nuclear operatives.
|
||||
|
||||
/obj/item/projectile/bullet/g4570
|
||||
name = ".45-70 Govt bullet"
|
||||
damage = 60
|
||||
armour_penetration = 40
|
||||
wound_bonus = -80
|
||||
|
||||
|
||||
@@ -45,6 +45,26 @@
|
||||
item = /obj/item/toy/plush/carpplushie/dehy_carp
|
||||
cost = 1
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/derringerpack
|
||||
name = "Compact Derringer"
|
||||
desc = "An easily concealable handgun capable of firing .357 rounds. Comes in an inconspicuious packet of cigarettes with additional munitions."
|
||||
item = /obj/item/storage/fancy/cigarettes/derringer
|
||||
cost = 8
|
||||
surplus = 30
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/derringerpack/purchase(mob/user, datum/component/uplink/U)
|
||||
if(prob(1)) //For the 1%
|
||||
item = /obj/item/storage/fancy/cigarettes/derringer/gold
|
||||
..()
|
||||
|
||||
/datum/uplink_item/stalthy_weapons/derringerpack_nukie
|
||||
name = "Antique Derringer"
|
||||
desc = "An easy to conceal, yet extremely deadly handgun, capable of firing .45-70 Govt rounds. Comes in a unique pack of cigarettes with additional munitions."
|
||||
item = /obj/item/storage/fancy/cigarettes/derringer/midworld
|
||||
include_modes = list(/datum/game_mode/nuclear)
|
||||
cost = 10
|
||||
surplus = 2
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/edagger
|
||||
name = "Energy Dagger"
|
||||
desc = "A dagger made of energy that looks and functions as a pen when off."
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 49 KiB |
@@ -3092,6 +3092,7 @@
|
||||
#include "code\modules\projectiles\boxes_magazines\internal\_cylinder.dm"
|
||||
#include "code\modules\projectiles\boxes_magazines\internal\_internal.dm"
|
||||
#include "code\modules\projectiles\boxes_magazines\internal\bow.dm"
|
||||
#include "code\modules\projectiles\boxes_magazines\internal\derringer.dm"
|
||||
#include "code\modules\projectiles\boxes_magazines\internal\grenade.dm"
|
||||
#include "code\modules\projectiles\boxes_magazines\internal\misc.dm"
|
||||
#include "code\modules\projectiles\boxes_magazines\internal\revolver.dm"
|
||||
@@ -3103,6 +3104,7 @@
|
||||
#include "code\modules\projectiles\guns\magic.dm"
|
||||
#include "code\modules\projectiles\guns\ballistic\automatic.dm"
|
||||
#include "code\modules\projectiles\guns\ballistic\bow.dm"
|
||||
#include "code\modules\projectiles\guns\ballistic\derringer.dm"
|
||||
#include "code\modules\projectiles\guns\ballistic\laser_gatling.dm"
|
||||
#include "code\modules\projectiles\guns\ballistic\launchers.dm"
|
||||
#include "code\modules\projectiles\guns\ballistic\magweapon.dm"
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
108
tgui/.yarn/releases/yarn-2.4.0.cjs
vendored
108
tgui/.yarn/releases/yarn-2.4.0.cjs
vendored
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user