Skip to content
Open
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
1 change: 1 addition & 0 deletions code/datums/world_factions/mountain.dm
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,7 @@
/datum/supply_pack/luxury/talkstone,
/datum/supply_pack/luxury/gold_plaque_belt,
/datum/supply_pack/weapons/ranged/puffer,
/datum/supply_pack/weapons/ranged/blunderbuss,
/datum/supply_pack/weapons/ammo/bullets,
/datum/supply_pack/weapons/ranged/musket
)
Expand Down
26 changes: 26 additions & 0 deletions code/game/objects/items/coins.dm
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
var/quantity = 1
var/plural_name
var/rigged_outcome = 0 //1 for heads, 2 for tails
var/pellet_type = null

/obj/item/coin/get_carry_weight(atom/carrier)
. = item_weight * quantity
Expand Down Expand Up @@ -122,6 +123,9 @@
. += span_info("[quantity_to_words(quantity)] [denomination] ([get_real_price()] mammon)")
return

if(pellet_type && quantity >= 6 && GET_MOB_SKILL_VALUE(user, /datum/attribute/skill/combat/firearms) >= SKILL_LEVEL_NOVICE)
. += span_info("It looks like you could rig this up to be fired as ammunition.")

if(HAS_TRAIT(user, TRAIT_COIN_ILLITERATE))
if(quantity <= 1)
. += span_info("A coin.")
Expand Down Expand Up @@ -309,6 +313,25 @@
INVOKE_ASYNC(src, PROC_REF(rig_coin), user)
return TRUE

//turn coins into pellets! fucking fuck whoever snowflaked coins quantity...
if(pellet_type && quantity >= 6 && GET_MOB_SKILL_VALUE(user, /datum/attribute/skill/combat/firearms) >= 10)
Comment thread
Singul0 marked this conversation as resolved.
Comment thread
Singul0 marked this conversation as resolved.
//crafting timer
to_chat(user, span_notice("You start rigging up [src] to be fired as ammunition..."))
playsound(src, 'sound/foley/lockrattle.ogg', 100, TRUE, -2)
if(!do_after(user, 3 SECONDS, src))
to_chat(user, span_warning("You stop rigging up [src]."))
return

quantity -= 6
if(!quantity)
qdel(src)
return

var/obj/item/ammo_casing/caseless/pelletshot/coin/new_pellet = new pellet_type(get_turf(user))
user.put_in_hands(new_pellet)
playsound(src, 'sound/foley/coins1.ogg', 100, TRUE, -2)


/obj/item/coin/attack_hand_secondary(mob/user, list/modifiers)
. = ..()
if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN)
Expand Down Expand Up @@ -419,6 +442,7 @@
base_type = CTYPE_GOLD
plural_name = "zenarii"
item_weight = 9 GRAMS
pellet_type = /obj/item/ammo_casing/caseless/pelletshot/coin/zenar


// SILVER
Expand All @@ -430,6 +454,7 @@
base_type = CTYPE_SILV
plural_name = "ziliquae"
item_weight = 11 GRAMS
pellet_type = /obj/item/ammo_casing/caseless/pelletshot/coin/zil


// COPPER
Expand All @@ -440,6 +465,7 @@
sellprice = 1
base_type = CTYPE_COPP
plural_name = "zennies"
pellet_type = /obj/item/ammo_casing/caseless/pelletshot/coin/zenny

/obj/item/coin/copper/pile/Initialize(mapload, coin_amount)
. = ..()
Expand Down
5 changes: 5 additions & 0 deletions code/modules/cargo/supply_packs/weapons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,11 @@
cost = 500
contains = /obj/item/gun/ballistic/powder/wheellock/puffer

/datum/supply_pack/weapons/ranged/blunderbuss
name = "Smuggled Blunderbuss"
cost = 650
contains = /obj/item/gun/ballistic/powder/wheellock/blunderbuss

/datum/supply_pack/weapons/ranged/musket
name = "Smuggled Musket"
cost = 750 //needs balancing
Expand Down
8 changes: 8 additions & 0 deletions code/modules/clothing/belt/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,14 @@
/obj/item/ammo_casing/caseless/bullet,
)

/obj/item/storage/belt/pouch/pellets
populate_contents = list(
/obj/item/ammo_casing/caseless/pelletshot,
/obj/item/ammo_casing/caseless/pelletshot,
/obj/item/ammo_casing/caseless/pelletshot,
/obj/item/ammo_casing/caseless/pelletshot,
)

/obj/item/storage/belt/pouch/cloth
name = "cloth pouch"
desc = "Usually used for holding small amount of coins."
Expand Down
2 changes: 1 addition & 1 deletion code/modules/clothing/quivers/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
item_state = "dartpouch"
slot_flags = ITEM_SLOT_HIP|ITEM_SLOT_NECK
max_storage = 10
ammo_type = list(/obj/item/ammo_casing/caseless/bullet)
ammo_type = list(/obj/item/ammo_casing/caseless/bullet, /obj/item/ammo_casing/caseless/pelletshot)

/obj/item/ammo_holder/bullet/bullets
fill_type = /obj/item/ammo_casing/caseless/bullet
Expand Down
8 changes: 8 additions & 0 deletions code/modules/crafting/artificer/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,14 @@
craftdiff = 2
created_amount = 4

/datum/artificer_recipe/ammo/lead_pellet
name = "Pellet shots 4x"
hammers_per_item = 4
created_item = /obj/item/ammo_casing/caseless/pelletshot
required_item = /obj/item/ingot/tin
craftdiff = 2
created_amount = 4

/datum/artificer_recipe/ammo/bolts
name = "Crossbow Bolts 5x (+1 Iron)"
required_item = /obj/item/natural/wood/plank
Expand Down
5 changes: 4 additions & 1 deletion code/modules/crafting/quality_of_crafting/_base.dm
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@
///sound we use for crafting
var/crafting_sound
var/sound_volume = 40
///do we reward experience on craft?
var/reward_experience = TRUE

/datum/repeatable_crafting_recipe/New()
. = ..()
Expand Down Expand Up @@ -866,7 +868,8 @@

clean_up_items(to_delete)

add_skill_experience(user)
if(reward_experience)
add_skill_experience(user)

move_products(outputs, user)

Expand Down
29 changes: 29 additions & 0 deletions code/modules/crafting/quality_of_crafting/pellets.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/datum/repeatable_crafting_recipe/ammo
abstract_type = /datum/repeatable_crafting_recipe/ammo
category = "Ammunition"
subtypes_allowed = TRUE
craftdiff = 0
crafting_message = "starts shaping ammunition"
skillcraft = /datum/attribute/skill/combat/firearms
Comment thread
Singul0 marked this conversation as resolved.
minimum_skill_level = 1
reward_experience = FALSE //stops people from farming xp

/datum/repeatable_crafting_recipe/ammo/shardshot
name = "shard pellet"
requirements = list(
/obj/item/natural/glass/shard = 2,
)
attacked_atom = /obj/item/natural/glass/shard
starting_atom = /obj/item/natural/glass/shard
output = /obj/item/ammo_casing/caseless/pelletshot/glass
craftdiff = 1

/datum/repeatable_crafting_recipe/ammo/saltshot
name = "salt pellet"
requirements = list(
/obj/item/reagent_containers/powder/salt = 2,
)
attacked_atom = /obj/item/reagent_containers/powder/salt
starting_atom = /obj/item/reagent_containers/powder/salt
output = /obj/item/ammo_casing/caseless/pelletshot/salt
craftdiff = 1
10 changes: 10 additions & 0 deletions code/modules/inquisitor_supplies/general.dm
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,16 @@
new /obj/item/storage/belt/pouch/bullets(src)
new /obj/item/reagent_containers/glass/bottle/aflask(src)

/datum/inqports/equipment/blunderbuss
name = "1 Blunderbuss, 4 lead pellets and powder flask"
item_type = /obj/structure/closet/crate/chest/inqcrate/equipment/blunderbuss
marquescost = 16
maximum = 1

/obj/structure/closet/crate/chest/inqcrate/equipment/blunderbuss/populate_contents()
new /obj/item/gun/ballistic/powder/wheellock/blunderbuss(src)
new /obj/item/storage/belt/pouch/pellets(src)
new /obj/item/reagent_containers/glass/bottle/aflask(src)
/*
//Added this and then realized it wasn't actually in the bounty and I'm just stupid. It's staying here incase somebody wants it.

Expand Down
14 changes: 12 additions & 2 deletions code/modules/jobs/job_types/other/merc_classes/grenzelhoftgun.dm
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,7 @@
belt = /obj/item/storage/belt/leather/mercenary
shirt = /obj/item/clothing/shirt/grenzelhoft
backl = /obj/item/storage/backpack/satchel/musketeer
backr = /obj/item/gun/ballistic/powder/musket
beltl = /obj/item/weapon/sword/sabre/dec
beltr = /obj/item/ammo_holder/bullet/bullets
head = /obj/item/clothing/head/helmet/skullcap/grenzelhoft
armor = /obj/item/clothing/armor/cuirass/grenzelhoft //bad stats so they cna keep the strong armor

Expand All @@ -50,6 +48,18 @@
H.underwear_color = CLOTHING_SOOT_BLACK
H.update_body()

/datum/job/advclass/mercenary/grenzelhoftgun/on_roundstart(mob/living/carbon/human/spawned, client/player_client)
. = ..()
var/static/list/weapons = list("Musket", "Blunderbuss")
var/weapon_choice = tgui_input_list(player_client,"CHOOSE YOUR WEAPON.", "GO EARN SOME COIN.", weapons)
switch(weapon_choice)
if("Musket")
spawned.equip_to_slot_or_del(new /obj/item/gun/ballistic/powder/musket, ITEM_SLOT_BACK_R, TRUE)
spawned.equip_to_slot_or_del(new /obj/item/ammo_holder/bullet/bullets, ITEM_SLOT_BELT_R, TRUE)
if("Blunderbuss")
spawned.equip_to_slot_or_del(new /obj/item/gun/ballistic/powder/wheellock/blunderbuss, ITEM_SLOT_BACK_R, TRUE)
spawned.equip_to_slot_or_del(new /obj/item/storage/belt/pouch/pellets, ITEM_SLOT_BELT_R, TRUE)

/datum/job/advclass/mercenary/grenzelhoftgun/after_spawn(mob/living/carbon/human/H)
. = ..()
H.merctype = 2
Expand Down
71 changes: 71 additions & 0 deletions code/modules/projectiles/ammunition/caseless/bullet.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,77 @@
force = DAMAGE_KNIFE - 7
item_weight = 75 GRAMS

/obj/item/ammo_casing/caseless/pelletshot
Comment thread
Singul0 marked this conversation as resolved.
name = "pelletshot"
desc = "A handful of pellet shots, made to punch many holes into a packed bunch of enemies."
icon = 'icons/roguetown/weapons/ammo.dmi'
icon_state = "pellets"
projectile_type = /obj/projectile/bullet/pellet
caliber = "blundershot" //shotgun variant of lead balls essentially
dropshrink = 0.5
possible_item_intents = list(INTENT_USE)
pellets = 6
variance = 10
randomspread = TRUE

force = DAMAGE_KNIFE - 7
item_weight = 75 GRAMS

/obj/item/ammo_casing/caseless/pelletshot/coin
var/coin_type = null

/obj/item/ammo_casing/caseless/pelletshot/coin/examine(mob/user)
. = ..()
. += span_info("It looks like you could rig this back up to regular coins.")

/obj/item/ammo_casing/caseless/pelletshot/coin/attack_self_secondary(mob/user, list/modifiers)
. = ..()
if(!coin_type)
return
if(!do_after(user, 3 SECONDS, src))
to_chat(user, span_warning("You stop rigging back [src]."))
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
var/obj/item/coin/coin_new = new coin_type(get_turf(src))
coin_new.set_quantity(pellets)
user.equip_to_slot_if_possible(coin_new, ITEM_SLOT_HANDS)
qdel(src)
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN

/obj/item/ammo_casing/caseless/pelletshot/coin/zenar
name = "zenarshot"
desc = "A handful of pellet shots out of zenars, made to punch many holes into a packed bunch of enemies."
icon_state = "pellets_zenar"
projectile_type = /obj/projectile/bullet/pellet/zenar
coin_type = /obj/item/coin/gold

/obj/item/ammo_casing/caseless/pelletshot/coin/zil
name = "zilshot"
desc = "A handful of pellet shots out of zils, made to punch many holes into a packed bunch of enemies."
icon_state = "pellets_zenarii"
projectile_type = /obj/projectile/bullet/pellet/zil
coin_type = /obj/item/coin/silver

/obj/item/ammo_casing/caseless/pelletshot/coin/zenny
name = "zennyshot"
desc = "A handful of pellet shots out of zennies, made to punch many holes into a packed bunch of enemies."
icon_state = "pellets_zenny"
projectile_type = /obj/projectile/bullet/pellet/zenny
coin_type = /obj/item/coin/copper

/obj/item/ammo_casing/caseless/pelletshot/glass
name = "glasshot"
desc = "A handful of pellet shots out of glass shards, made to bleed a packed bunch of enemies."
icon_state = "pellets_shard"
projectile_type = /obj/projectile/bullet/pellet/glass
pellets = 9

/obj/item/ammo_casing/caseless/pelletshot/salt
name = "saltshot"
desc = "A handful of pellet shots out of salt, made to incapacitate a packed bunch of enemies."
icon_state = "pellets_salt"
projectile_type = /obj/projectile/bullet/pellet/salt
pellets = 9

/obj/item/ammo_casing/caseless/cball
name = "large cannonball"
desc = "A round lead ball. Complex and still spherical."
Expand Down
10 changes: 10 additions & 0 deletions code/modules/projectiles/boxes_magazines/internal/single.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,16 @@
ammo_type = /obj/item/ammo_casing/caseless/bullet
caliber = "musketball"

//I mean, blunderbusses are mechanically just shotguns if you squint enough
/obj/item/ammo_box/magazine/internal/shotgun
name = "barrel"
max_ammo = 1
ammo_type = /obj/item/ammo_casing/caseless/pelletshot
caliber = "blundershot"

/obj/item/ammo_box/magazine/internal/shotgun/empty
start_empty = TRUE

/obj/item/ammo_box/magazine/internal/barrel/empty
start_empty = TRUE

Expand Down
2 changes: 2 additions & 0 deletions code/modules/projectiles/guns/ballistic/_powder.dm
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,8 @@
if(M_turf)
M.playsound_local(M_turf, fire_sound, 100, 1, get_rand_frequency())

bullet_rammed = FALSE

/obj/item/gun/ballistic/powder/postfire_empty_checks(last_shot_succeeded)
. = ..()
if(last_shot_succeeded)
Expand Down
Loading
Loading