Files
2025-09-24 10:55:43 -04:00

219 lines
8.8 KiB
Plaintext

#define CALIBRE_14MM "14mm"
/obj/item/gun/ballistic/revolver/ocelot
name = "Colt Peacemaker revolver"
desc = "A modified Peacemaker revolver that chambers .357 ammo. Less powerful than the regular .357, but ricochets a lot more." // We need tension...conflict. The world today has become too soft. We're living in an age where true feelings are suppressed. So we're going to shake things up a bit. We'll create a world dripping with tension... ...a world filled with greed and suspicion, bravery and cowardice.
// this could probably be made funnier by reducing its damage multiplier but also making it so that every fired bullet has the wacky ricochets
// but that's a different plate of cookies for a different glass of milk
icon_state = "c38_panther"
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/cylinder
/obj/item/ammo_casing/c357/peacemaker
name = ".357 Peacemaker bullet casing"
desc = "A .357 Peacemaker bullet casing."
caliber = CALIBER_357
projectile_type = /obj/projectile/bullet/c357/peacemaker
/obj/projectile/bullet/c357/peacemaker
name = ".357 Peacemaker bullet"
damage = 25
wound_bonus = 0
ricochets_max = 6
ricochet_chance = 200
ricochet_auto_aim_angle = 50
ricochet_auto_aim_range = 6
ricochet_incidence_leeway = 80
ricochet_decay_chance = 1
/datum/design/c357/peacemaker
name = "Speed Loader (.357 Peacemaker)"
id = "a357PM"
build_type = AUTOLATHE
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2,
)
build_path = /obj/item/ammo_box/speedloader/c357/peacemaker
category = list(
RND_CATEGORY_HACKED,
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO,
)
/obj/item/ammo_box/speedloader/c357/peacemaker
name = "speed loader (.357 Peacemaker)"
desc = "Designed to quickly reload revolvers."
icon_state = "357"
ammo_type = /obj/item/ammo_casing/c357/peacemaker
max_ammo = 7
multiple_sprites = AMMO_BOX_PER_BULLET
item_flags = NO_MAT_REDEMPTION
/obj/item/clothing/head/hats/sus_bowler
name = "odd bowler"
desc = "A deep black bowler. Inside the hat, there is a sleek red S, with a smaller X insignia embroidered within. On closer inspection, the brim feels oddly weighted..."
icon_state = "bowler"
force = 10
throwforce = 45
throw_speed = 5
throw_range = 9
w_class = WEIGHT_CLASS_SMALL
armour_penetration = 30 //5 points less then a double esword!
sharpness = SHARP_POINTY
attack_verb_continuous = list("slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
///obj/item/clothing/head/hats/sus_bowler/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
//var/caught = hit_atom.hitby(src, FALSE, FALSE, throwingdatum=throwingdatum)
//if(thrownby && !caught)
//addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, throw_at), thrownby, throw_range+2, throw_speed, null, TRUE), 0.1 SECONDS)
//else
//return ..()
///obj/item/clothing/head/hats/sus_bowler/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, force, gentle = FALSE, quickstart = TRUE)
//if(ishuman(thrower))
//var/mob/living/carbon/human/I = thrower
//I.throw_mode_off(THROW_MODE_TOGGLE) //so they can catch it on the return.
//return ..()
/*
* Malorian Arms 3516 14MM
* If you have this, you're a badass.
*/
/obj/item/gun/ballistic/automatic/pistol/robohand
name = "Malorian Arms 3516"
desc = "The Malorian Arms 3516 is a 14mm heavy pistol, sporting a titanium frame and unique wooden grip. A custom Dyna-porting and \
direct integral cyber-interlink means only someone with a cyberarm and smartgun link can take full advantage of the pistol's features."
icon = 'modular_skyrat/modules/moretraitoritems/icons/3516.dmi'
icon_state = "3516"
w_class = WEIGHT_CLASS_NORMAL
accepted_magazine_type = /obj/item/ammo_box/magazine/m14mm
can_suppress = FALSE
fire_sound = 'modular_skyrat/modules/moretraitoritems/sound/fire2.ogg'
load_sound = 'modular_skyrat/modules/moretraitoritems/sound/reload.ogg'
load_empty_sound = 'modular_skyrat/modules/moretraitoritems/sound/reload.ogg'
eject_sound = 'modular_skyrat/modules/moretraitoritems/sound/release.ogg'
eject_empty_sound = 'modular_skyrat/modules/moretraitoritems/sound/release.ogg'
vary_fire_sound = FALSE
rack_sound = 'modular_skyrat/modules/moretraitoritems/sound/slide.ogg'
fire_sound_volume = 100
bolt_wording = "fuckin' slide"
reload_time = 0 //FAST AS FUCK BOIS!
var/unrestricted = FALSE
/obj/item/gun/ballistic/automatic/pistol/robohand/unrestricted
unrestricted = TRUE
/obj/item/gun/ballistic/automatic/pistol/robohand/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(can_use(user) == ITEM_INTERACT_SUCCESS)
return ..()
return ITEM_INTERACT_BLOCKING
/obj/item/gun/ballistic/automatic/pistol/robohand/ranged_interact_with_atom_secondary(atom/interacting_with, mob/living/user, list/modifiers)
if(can_use(user) == ITEM_INTERACT_SUCCESS)
return ..()
return ITEM_INTERACT_BLOCKING
/// Checks if we have the roboarm to use the robo gun. Well, unless it's unrestricted
/obj/item/gun/ballistic/automatic/pistol/robohand/proc/can_use(mob/living/carbon/human/user)
if(unrestricted)
return ITEM_INTERACT_SUCCESS
if(!istype(user))
return ITEM_INTERACT_BLOCKING
var/obj/item/bodypart/selected_hand = user.get_active_hand()
if(IS_ORGANIC_LIMB(selected_hand))
to_chat(user, span_warning("You can't seem to figure out how to use [src], perhaps you need to check the manual?"))
return ITEM_INTERACT_BLOCKING
return ITEM_INTERACT_SUCCESS
/obj/item/gun/ballistic/automatic/pistol/robohand/insert_magazine(mob/user, obj/item/ammo_box/magazine/inserted_mag, display_message)
if(!istype(inserted_mag, accepted_magazine_type))
to_chat(user, span_warning("\The [inserted_mag] doesn't seem to fit into \the [src]..."))
return FALSE
if(!user.transferItemToLoc(inserted_mag, src))
to_chat(user, span_warning("You cannot seem to get \the [src] out of your hands!"))
return FALSE
magazine = inserted_mag
if(display_message)
to_chat(user, span_notice("You load a new [magazine_wording] into \the [src]."))
playsound(src, load_empty_sound, load_sound_volume, load_sound_vary)
if(bolt_type == BOLT_TYPE_OPEN && !bolt_locked)
chamber_round(TRUE)
drop_bolt(user)
update_appearance()
animate(src, 0.2 SECONDS, 1, transform = turn(matrix(), 120)) //Le johnny robohand woosh woosh twirl
animate(time = 0.2 SECONDS, transform = turn(matrix(), 240))
animate(time = 0.2 SECONDS, transform = null)
return TRUE
/obj/item/gun/ballistic/automatic/pistol/robohand/eject_magazine(mob/user, display_message, obj/item/ammo_box/magazine/tac_load)
if(bolt_type == BOLT_TYPE_OPEN)
chambered = null
if(magazine.ammo_count())
playsound(src, eject_sound, eject_sound_volume, eject_sound_volume) //This is why we've copied this proc, it should play the eject sound when ejecting.
else
playsound(src, eject_empty_sound, eject_sound_volume, eject_sound_volume)
magazine.forceMove(drop_location())
var/obj/item/ammo_box/magazine/old_mag = magazine
if(tac_load)
if (insert_magazine(user, tac_load, FALSE))
to_chat(user, span_notice("You perform an elite tactical reload on \the [src]."))
else
to_chat(user, span_warning("You dropped the old [magazine_wording], but the new one doesn't fit. How embarassing."))
magazine = null
else
magazine = null
user.put_in_hands(old_mag)
old_mag.update_appearance()
if(display_message)
to_chat(user, span_notice("You pull the [magazine_wording] out of \the [src]."))
update_appearance()
animate(src, transform = turn(matrix(), 120), time = 0.2 SECONDS, loop = 1) //Le johnny robohand again
animate(transform = turn(matrix(), 240), time = 0.2 SECONDS)
animate(transform = null, time = 0.2 SECONDS)
//Magazine stuff
/obj/item/ammo_box/magazine/m14mm
name = "pistol magazine (14mm)"
icon = 'modular_skyrat/modules/moretraitoritems/icons/3516_mag.dmi'
icon_state = "14mm"
base_icon_state = "14mm"
ammo_type = /obj/item/ammo_casing/c14mm
caliber = CALIBRE_14MM
max_ammo = 10
multiple_sprites = AMMO_BOX_FULL_EMPTY
/obj/item/ammo_casing/c14mm
name = "14mm bullet casing"
desc = "A 14mm bullet casing. Badass."
caliber = CALIBRE_14MM
projectile_type = /obj/projectile/bullet/c14mm
/obj/projectile/bullet/c14mm
name = "14mm bullet"
damage = 60
embed_type = /datum/embedding/c14mm
dismemberment = 50
pierces = 1
projectile_piercing = PASSCLOSEDTURF|PASSGRILLE|PASSGLASS
/datum/embedding/c14mm
embed_chance = 90
fall_chance = 3
jostle_chance = 4
ignore_throwspeed_threshold = TRUE
pain_stam_pct = 0.4
pain_mult = 5
jostle_pain_mult = 9
rip_time = 10
//nullrod katana
/obj/item/katana/weak/curator //This has the same stats as the curator's claymore
desc = "An ancient Katana. Forged by... Well, it doesn't really say, but surely it's authentic! And sharp to boot!"
force = 15
block_chance = 30
armour_penetration = 5
#undef CALIBRE_14MM