mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-28 10:01:58 +00:00
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request Surgery trays now have a small chance to become medical toolboxes. Autopsy trays can become coroner toolboxes.  They work basically the same, just that they can't be rolled around and don't slow you down when walking around. Medical toolboxes are fairly weak, but coroner toolboxes are pretty strong. Added a 1 in 1.000.000 chance for a toolbox to have four latches. <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> ## Why It's Good For The Game > Surgery trays now have a small chance to become medical toolboxes. Autopsy trays can become coroner toolboxes. > They work basically the same, just that they can't be rolled around and don't slow you down when walking around. The idea of going to the surgery room and finding a _medical toolbox_ instead of a surgery tray is inexplicably amusing to me. > Medical toolboxes are fairly weak, but coroner toolboxes are pretty strong. Healers and hurters! > Added a 1 in 1.000.000 chance for a toolbox to have four latches. peak absurdity is reached ~~next pr will include brown toolboxes, which clip to your belt~~ credit 2 @SmArtKar for sprites <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and its effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 carlarc, smartkar add: Surgery trays now have a small chance to become medical toolboxes. Autopsy trays can become coroner toolboxes. add: Added a 1 in 1.000.000 chance for a toolbox to have four latches. /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. -->
622 lines
22 KiB
Plaintext
622 lines
22 KiB
Plaintext
/obj/item/storage/toolbox
|
|
name = "toolbox"
|
|
desc = "Danger. Very robust."
|
|
icon = 'icons/obj/storage/toolbox.dmi'
|
|
icon_state = "toolbox_default"
|
|
inhand_icon_state = "toolbox_default"
|
|
lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi'
|
|
obj_flags = CONDUCTS_ELECTRICITY
|
|
force = 12
|
|
throwforce = 12
|
|
throw_speed = 2
|
|
throw_range = 7
|
|
demolition_mod = 1.25
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*5)
|
|
attack_verb_continuous = list("robusts")
|
|
attack_verb_simple = list("robust")
|
|
hitsound = 'sound/items/weapons/smash.ogg'
|
|
drop_sound = 'sound/items/handling/toolbox/toolbox_drop.ogg'
|
|
pickup_sound = 'sound/items/handling/toolbox/toolbox_pickup.ogg'
|
|
material_flags = MATERIAL_EFFECTS | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
|
|
var/latches = "single_latch"
|
|
var/has_latches = TRUE
|
|
wound_bonus = 5
|
|
/// How many interactions are we currently performing
|
|
var/current_interactions = 0
|
|
|
|
/obj/item/storage/toolbox/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
|
if(has_latches)
|
|
if(prob(10))
|
|
latches = "double_latch"
|
|
if(prob(1))
|
|
latches = "triple_latch"
|
|
if(prob(0.1))
|
|
latches = "quad_latch" // like winning the lottery, but worse
|
|
update_appearance()
|
|
atom_storage.open_sound = 'sound/items/handling/toolbox/toolbox_open.ogg'
|
|
atom_storage.rustle_sound = 'sound/items/handling/toolbox/toolbox_rustle.ogg'
|
|
AddElement(/datum/element/falling_hazard, damage = force, wound_bonus = wound_bonus, hardhat_safety = TRUE, crushes = FALSE, impact_sound = hitsound)
|
|
|
|
/obj/item/storage/toolbox/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
|
|
if (user.combat_mode || !user.has_hand_for_held_index(user.get_inactive_hand_index()))
|
|
return NONE
|
|
|
|
if (current_interactions)
|
|
var/obj/item/other_tool = user.get_inactive_held_item()
|
|
if (!istype(other_tool)) // what even
|
|
return NONE
|
|
INVOKE_ASYNC(src, PROC_REF(use_tool_on), interacting_with, user, modifiers, other_tool)
|
|
return ITEM_INTERACT_SUCCESS
|
|
|
|
if (user.get_inactive_held_item())
|
|
user.balloon_alert(user, "hands busy!")
|
|
return ITEM_INTERACT_BLOCKING
|
|
|
|
var/list/item_radial = list()
|
|
for (var/obj/item/tool in atom_storage.real_location)
|
|
if(is_type_in_list(tool, GLOB.tool_items))
|
|
item_radial[tool] = tool.appearance
|
|
break
|
|
|
|
if (!length(item_radial))
|
|
return NONE
|
|
|
|
playsound(user, 'sound/items/handling/toolbox/toolbox_open.ogg', 50)
|
|
var/obj/item/picked_item = show_radial_menu(user, interacting_with, item_radial, require_near = TRUE)
|
|
if (!picked_item)
|
|
return ITEM_INTERACT_BLOCKING
|
|
|
|
playsound(user, 'sound/items/handling/toolbox/toolbox_rustle.ogg', 50)
|
|
if (!user.put_in_inactive_hand(picked_item))
|
|
return ITEM_INTERACT_BLOCKING
|
|
|
|
atom_storage.animate_parent()
|
|
if (istype(picked_item, /obj/item/weldingtool))
|
|
var/obj/item/weldingtool/welder = picked_item
|
|
if (!welder.welding)
|
|
welder.attack_self(user)
|
|
|
|
if (istype(picked_item, /obj/item/spess_knife))
|
|
picked_item.attack_self(user)
|
|
|
|
INVOKE_ASYNC(src, PROC_REF(use_tool_on), interacting_with, user, modifiers, picked_item)
|
|
return ITEM_INTERACT_SUCCESS
|
|
|
|
/obj/item/storage/toolbox/proc/use_tool_on(atom/interacting_with, mob/living/user, list/modifiers, obj/item/picked_tool)
|
|
current_interactions += 1
|
|
picked_tool.melee_attack_chain(user, interacting_with, list2params(modifiers))
|
|
current_interactions -= 1
|
|
|
|
if (QDELETED(picked_tool) || picked_tool.loc != user || !user.CanReach(picked_tool))
|
|
current_interactions = 0
|
|
return
|
|
|
|
if (current_interactions)
|
|
return
|
|
|
|
if (istype(picked_tool, /obj/item/weldingtool))
|
|
var/obj/item/weldingtool/welder = picked_tool
|
|
if (welder.welding)
|
|
welder.attack_self(user)
|
|
|
|
atom_storage.attempt_insert(picked_tool, user)
|
|
|
|
/obj/item/storage/toolbox/update_overlays()
|
|
. = ..()
|
|
if(has_latches)
|
|
. += latches
|
|
|
|
/obj/item/storage/toolbox/suicide_act(mob/living/user)
|
|
user.visible_message(span_suicide("[user] robusts [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
|
|
return BRUTELOSS
|
|
|
|
/obj/item/storage/toolbox/emergency
|
|
name = "emergency toolbox"
|
|
icon_state = "red"
|
|
inhand_icon_state = "toolbox_red"
|
|
material_flags = NONE
|
|
throw_speed = 3 // red ones go faster
|
|
|
|
/obj/item/storage/toolbox/emergency/PopulateContents()
|
|
new /obj/item/crowbar/red(src)
|
|
new /obj/item/weldingtool/mini(src)
|
|
new /obj/item/extinguisher/mini(src)
|
|
switch(rand(1,3))
|
|
if(1)
|
|
new /obj/item/flashlight(src)
|
|
if(2)
|
|
new /obj/item/flashlight/glowstick(src)
|
|
if(3)
|
|
new /obj/item/flashlight/flare(src)
|
|
new /obj/item/radio/off(src)
|
|
|
|
/obj/item/storage/toolbox/emergency/old
|
|
name = "rusty red toolbox"
|
|
icon_state = "toolbox_red_old"
|
|
has_latches = FALSE
|
|
material_flags = NONE
|
|
|
|
/obj/item/storage/toolbox/mechanical
|
|
name = "mechanical toolbox"
|
|
icon_state = "blue"
|
|
inhand_icon_state = "toolbox_blue"
|
|
material_flags = NONE
|
|
/// If FALSE, someone with a ensouled soulstone can sacrifice a spirit to change the sprite of this toolbox.
|
|
var/has_soul = FALSE
|
|
|
|
/obj/item/storage/toolbox/mechanical/PopulateContents()
|
|
new /obj/item/screwdriver(src)
|
|
new /obj/item/wrench(src)
|
|
new /obj/item/weldingtool(src)
|
|
new /obj/item/crowbar(src)
|
|
new /obj/item/analyzer(src)
|
|
new /obj/item/wirecutters(src)
|
|
|
|
/obj/item/storage/toolbox/mechanical/old
|
|
name = "rusty blue toolbox"
|
|
icon_state = "toolbox_blue_old"
|
|
has_latches = FALSE
|
|
has_soul = TRUE
|
|
|
|
/obj/item/storage/toolbox/mechanical/old/heirloom
|
|
name = "toolbox" //this will be named "X family toolbox"
|
|
desc = "It's seen better days."
|
|
force = 5
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
|
|
/obj/item/storage/toolbox/mechanical/old/heirloom/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
|
|
|
/obj/item/storage/toolbox/mechanical/old/heirloom/PopulateContents()
|
|
return
|
|
|
|
/obj/item/storage/toolbox/mechanical/old/clean // the assistant traitor toolbox, damage scales with TC inside
|
|
name = "toolbox"
|
|
desc = "An old, blue toolbox, it looks robust."
|
|
icon_state = "oldtoolboxclean"
|
|
inhand_icon_state = "toolbox_blue"
|
|
has_latches = FALSE
|
|
force = 19
|
|
throwforce = 22
|
|
|
|
/obj/item/storage/toolbox/mechanical/old/clean/proc/calc_damage()
|
|
var/power = 0
|
|
for (var/obj/item/stack/telecrystal/stored_crystals in get_all_contents())
|
|
power += (stored_crystals.amount / 2)
|
|
force = 19 + power
|
|
throwforce = 22 + power
|
|
|
|
/obj/item/storage/toolbox/mechanical/old/clean/attack(mob/target, mob/living/user)
|
|
calc_damage()
|
|
..()
|
|
|
|
/obj/item/storage/toolbox/mechanical/old/clean/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
|
|
calc_damage()
|
|
..()
|
|
|
|
/obj/item/storage/toolbox/mechanical/old/clean/PopulateContents()
|
|
new /obj/item/screwdriver(src)
|
|
new /obj/item/wrench(src)
|
|
new /obj/item/weldingtool(src)
|
|
new /obj/item/crowbar(src)
|
|
new /obj/item/wirecutters(src)
|
|
new /obj/item/multitool(src)
|
|
new /obj/item/clothing/gloves/color/yellow(src)
|
|
|
|
/obj/item/storage/toolbox/electrical
|
|
name = "electrical toolbox"
|
|
icon_state = "yellow"
|
|
inhand_icon_state = "toolbox_yellow"
|
|
material_flags = NONE
|
|
|
|
/obj/item/storage/toolbox/electrical/PopulateContents()
|
|
var/pickedcolor = pick(GLOB.cable_colors)
|
|
new /obj/item/screwdriver(src)
|
|
new /obj/item/wirecutters(src)
|
|
new /obj/item/t_scanner(src)
|
|
new /obj/item/crowbar(src)
|
|
var/obj/item/stack/cable_coil/new_cable_one = new(src, MAXCOIL)
|
|
new_cable_one.set_cable_color(pickedcolor)
|
|
var/obj/item/stack/cable_coil/new_cable_two = new(src, MAXCOIL)
|
|
new_cable_two.set_cable_color(pickedcolor)
|
|
if(prob(5))
|
|
new /obj/item/clothing/gloves/color/yellow(src)
|
|
else
|
|
var/obj/item/stack/cable_coil/new_cable_three = new(src, MAXCOIL)
|
|
new_cable_three.set_cable_color(pickedcolor)
|
|
|
|
/obj/item/storage/toolbox/syndicate
|
|
name = "suspicious looking toolbox"
|
|
icon_state = "syndicate"
|
|
inhand_icon_state = "toolbox_syndi"
|
|
force = 15
|
|
throwforce = 18
|
|
material_flags = NONE
|
|
|
|
/obj/item/storage/toolbox/syndicate/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.silent = TRUE
|
|
|
|
/obj/item/storage/toolbox/syndicate/PopulateContents()
|
|
new /obj/item/screwdriver/nuke(src)
|
|
new /obj/item/wrench(src)
|
|
new /obj/item/weldingtool/largetank(src)
|
|
new /obj/item/crowbar/red(src)
|
|
new /obj/item/wirecutters(src, "red")
|
|
new /obj/item/multitool(src)
|
|
new /obj/item/clothing/gloves/combat(src)
|
|
|
|
/obj/item/storage/toolbox/drone
|
|
name = "mechanical toolbox"
|
|
icon_state = "blue"
|
|
inhand_icon_state = "toolbox_blue"
|
|
material_flags = NONE
|
|
|
|
/obj/item/storage/toolbox/drone/PopulateContents()
|
|
var/pickedcolor = pick("red","yellow","green","blue","pink","orange","cyan","white")
|
|
new /obj/item/screwdriver(src)
|
|
new /obj/item/wrench(src)
|
|
new /obj/item/weldingtool(src)
|
|
new /obj/item/crowbar(src)
|
|
new /obj/item/stack/cable_coil(src,MAXCOIL,pickedcolor)
|
|
new /obj/item/wirecutters(src)
|
|
new /obj/item/multitool(src)
|
|
|
|
/obj/item/storage/toolbox/artistic
|
|
name = "artistic toolbox"
|
|
desc = "A toolbox painted bright green. Why anyone would store art supplies in a toolbox is beyond you, but it has plenty of extra space."
|
|
icon_state = "green"
|
|
inhand_icon_state = "artistic_toolbox"
|
|
w_class = WEIGHT_CLASS_GIGANTIC //Holds more than a regular toolbox!
|
|
material_flags = NONE
|
|
|
|
/obj/item/storage/toolbox/artistic/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_total_storage = 20
|
|
atom_storage.max_slots = 11
|
|
|
|
/obj/item/storage/toolbox/artistic/PopulateContents()
|
|
new /obj/item/storage/crayons(src)
|
|
new /obj/item/crowbar(src)
|
|
new /obj/item/stack/pipe_cleaner_coil/red(src)
|
|
new /obj/item/stack/pipe_cleaner_coil/yellow(src)
|
|
new /obj/item/stack/pipe_cleaner_coil/blue(src)
|
|
new /obj/item/stack/pipe_cleaner_coil/green(src)
|
|
new /obj/item/stack/pipe_cleaner_coil/pink(src)
|
|
new /obj/item/stack/pipe_cleaner_coil/orange(src)
|
|
new /obj/item/stack/pipe_cleaner_coil/cyan(src)
|
|
new /obj/item/stack/pipe_cleaner_coil/white(src)
|
|
new /obj/item/stack/pipe_cleaner_coil/brown(src)
|
|
|
|
/obj/item/storage/toolbox/medical
|
|
name = "medical toolbox"
|
|
desc = "A toolbox painted soft white and light blue. This is getting ridiculous."
|
|
icon_state = "medical"
|
|
inhand_icon_state = "toolbox_medical"
|
|
attack_verb_continuous = list("treats", "surgeries", "tends", "tends wounds on")
|
|
attack_verb_simple = list("treat", "surgery", "tend", "tend wounds on")
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
material_flags = NONE
|
|
force = 5 // its for healing
|
|
wound_bonus = 25 // wounds are medical right?
|
|
/// Tray we steal the og contents from.
|
|
var/obj/item/surgery_tray/tray_type = /obj/item/surgery_tray
|
|
|
|
/obj/item/storage/toolbox/medical/Initialize(mapload)
|
|
. = ..()
|
|
// what do any of these numbers fucking mean
|
|
atom_storage.max_total_storage = 20
|
|
atom_storage.max_slots = 11
|
|
|
|
/obj/item/storage/toolbox/medical/PopulateContents()
|
|
var/atom/fake_tray = new tray_type(get_turf(src)) // not in src lest it fill storage that we need for its tools later
|
|
for(var/atom/movable/thingy in fake_tray)
|
|
thingy.forceMove(src)
|
|
qdel(fake_tray)
|
|
|
|
/obj/item/storage/toolbox/medical/full
|
|
tray_type = /obj/item/surgery_tray/full
|
|
|
|
/obj/item/storage/toolbox/medical/coroner
|
|
name = "coroner toolbox"
|
|
desc = "A toolbox painted soft white and dark grey. This is getting beyond ridiculous."
|
|
icon_state = "coroner"
|
|
inhand_icon_state = "toolbox_coroner"
|
|
attack_verb_continuous = list("dissects", "autopsies", "corones")
|
|
attack_verb_simple = list("dissect", "autopsy", "corone")
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
material_flags = NONE
|
|
force = 17 // it's not for healing
|
|
tray_type = /obj/item/surgery_tray/full/morgue
|
|
|
|
/obj/item/storage/toolbox/medical/coroner/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/bane, mob_biotypes = MOB_UNDEAD, damage_multiplier = 1) //Just in case one of the tennants get uppity
|
|
|
|
/obj/item/storage/toolbox/ammobox
|
|
name = "ammo canister"
|
|
desc = "A metal canister designed to hold ammunition"
|
|
icon_state = "ammobox"
|
|
inhand_icon_state = "ammobox"
|
|
lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi'
|
|
has_latches = FALSE
|
|
drop_sound = 'sound/items/handling/ammobox_drop.ogg'
|
|
pickup_sound = 'sound/items/handling/ammobox_pickup.ogg'
|
|
var/ammo_to_spawn
|
|
|
|
/obj/item/storage/toolbox/ammobox/PopulateContents()
|
|
if(!isnull(ammo_to_spawn))
|
|
for(var/i in 1 to 6)
|
|
new ammo_to_spawn(src)
|
|
|
|
/obj/item/storage/toolbox/ammobox/strilka310
|
|
name = ".310 Strilka ammo box (Surplus?)"
|
|
desc = "It contains a few clips. Goddamn, this thing smells awful. \
|
|
Has this been sitting in a warehouse for the last several centuries?"
|
|
ammo_to_spawn = /obj/item/ammo_box/strilka310
|
|
|
|
/obj/item/storage/toolbox/ammobox/strilka310/surplus
|
|
ammo_to_spawn = /obj/item/ammo_box/strilka310/surplus
|
|
|
|
/obj/item/storage/toolbox/ammobox/wt550m9
|
|
name = "4.6x30mm ammo box"
|
|
ammo_to_spawn = /obj/item/ammo_box/magazine/wt550m9
|
|
|
|
/obj/item/storage/toolbox/ammobox/wt550m9ap
|
|
name = "4.6x30mm AP ammo box"
|
|
ammo_to_spawn = /obj/item/ammo_box/magazine/wt550m9/wtap
|
|
|
|
/obj/item/storage/toolbox/maint_kit
|
|
name = "gun maintenance kit"
|
|
desc = "It contains some gun maintenance supplies"
|
|
icon_state = "maint_kit"
|
|
inhand_icon_state = "ammobox"
|
|
has_latches = FALSE
|
|
drop_sound = 'sound/items/handling/ammobox_drop.ogg'
|
|
pickup_sound = 'sound/items/handling/ammobox_pickup.ogg'
|
|
|
|
/obj/item/storage/toolbox/maint_kit/PopulateContents()
|
|
new /obj/item/gun_maintenance_supplies(src)
|
|
new /obj/item/gun_maintenance_supplies(src)
|
|
new /obj/item/gun_maintenance_supplies(src)
|
|
|
|
//repairbot assembly
|
|
/obj/item/storage/toolbox/tool_act(mob/living/user, obj/item/tool, list/modifiers)
|
|
if(!istype(tool, /obj/item/assembly/prox_sensor))
|
|
return ..()
|
|
var/static/list/allowed_toolbox = list(
|
|
/obj/item/storage/toolbox/artistic,
|
|
/obj/item/storage/toolbox/electrical,
|
|
/obj/item/storage/toolbox/emergency,
|
|
/obj/item/storage/toolbox/mechanical,
|
|
/obj/item/storage/toolbox/syndicate,
|
|
)
|
|
|
|
if(!is_type_in_list(src, allowed_toolbox) && (type != /obj/item/storage/toolbox))
|
|
return ITEM_INTERACT_BLOCKING
|
|
if(contents.len >= 1)
|
|
balloon_alert(user, "not empty!")
|
|
return ITEM_INTERACT_BLOCKING
|
|
var/static/list/toolbox_colors = list(
|
|
/obj/item/storage/toolbox = "#445eb3",
|
|
/obj/item/storage/toolbox/emergency = "#445eb3",
|
|
/obj/item/storage/toolbox/electrical = "#b77931",
|
|
/obj/item/storage/toolbox/artistic = "#378752",
|
|
/obj/item/storage/toolbox/syndicate = "#3d3d3d",
|
|
)
|
|
var/obj/item/bot_assembly/repairbot/repair = new
|
|
repair.toolbox = type
|
|
var/new_color = toolbox_colors[type] || "#445eb3"
|
|
repair.set_color(new_color)
|
|
user.put_in_hands(repair)
|
|
repair.update_appearance()
|
|
repair.balloon_alert(user, "sensor added!")
|
|
qdel(tool)
|
|
qdel(src)
|
|
return ITEM_INTERACT_SUCCESS
|
|
|
|
/obj/item/storage/toolbox/haunted
|
|
name = "old toolbox"
|
|
custom_materials = list(/datum/material/hauntium = SMALL_MATERIAL_AMOUNT*5)
|
|
|
|
/obj/item/storage/toolbox/guncase
|
|
name = "gun case"
|
|
desc = "A weapon's case. Has a blood-red 'S' stamped on the cover."
|
|
icon = 'icons/obj/storage/case.dmi'
|
|
icon_state = "infiltrator_case"
|
|
lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi'
|
|
inhand_icon_state = "infiltrator_case"
|
|
has_latches = FALSE
|
|
var/weapon_to_spawn = /obj/item/gun/ballistic/automatic/pistol
|
|
var/extra_to_spawn = /obj/item/ammo_box/magazine/m9mm
|
|
|
|
/obj/item/storage/toolbox/guncase/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY
|
|
atom_storage.max_total_storage = 7 //enough to hold ONE bulky gun and the ammo boxes
|
|
atom_storage.max_slots = 4
|
|
|
|
/obj/item/storage/toolbox/guncase/PopulateContents()
|
|
new weapon_to_spawn (src)
|
|
for(var/i in 1 to 3)
|
|
new extra_to_spawn (src)
|
|
|
|
/obj/item/storage/toolbox/guncase/bulldog
|
|
name = "bulldog gun case"
|
|
weapon_to_spawn = /obj/item/gun/ballistic/shotgun/bulldog
|
|
extra_to_spawn = /obj/item/ammo_box/magazine/m12g
|
|
|
|
/obj/item/storage/toolbox/guncase/c20r
|
|
name = "c-20r gun case"
|
|
weapon_to_spawn = /obj/item/gun/ballistic/automatic/c20r
|
|
extra_to_spawn = /obj/item/ammo_box/magazine/smgm45
|
|
|
|
/obj/item/storage/toolbox/guncase/smartgun
|
|
name = "adielle smartgun case"
|
|
weapon_to_spawn = /obj/item/gun/ballistic/automatic/smartgun
|
|
extra_to_spawn = /obj/item/ammo_box/magazine/smartgun
|
|
|
|
/obj/item/storage/toolbox/guncase/clandestine
|
|
name = "clandestine gun case"
|
|
weapon_to_spawn = /obj/item/gun/ballistic/automatic/pistol/clandestine
|
|
extra_to_spawn = /obj/item/ammo_box/magazine/m10mm
|
|
|
|
/obj/item/storage/toolbox/guncase/m90gl
|
|
name = "m-90gl gun case"
|
|
weapon_to_spawn = /obj/item/gun/ballistic/automatic/m90
|
|
extra_to_spawn = /obj/item/ammo_box/magazine/m223
|
|
|
|
/obj/item/storage/toolbox/guncase/m90gl/PopulateContents()
|
|
new weapon_to_spawn (src)
|
|
for(var/i in 1 to 2)
|
|
new extra_to_spawn (src)
|
|
new /obj/item/ammo_box/a40mm/rubber (src)
|
|
|
|
/obj/item/storage/toolbox/guncase/rocketlauncher
|
|
name = "rocket launcher gun case"
|
|
weapon_to_spawn = /obj/item/gun/ballistic/rocketlauncher
|
|
extra_to_spawn = /obj/item/ammo_box/rocket
|
|
|
|
/obj/item/storage/toolbox/guncase/rocketlauncher/PopulateContents()
|
|
new weapon_to_spawn (src)
|
|
new extra_to_spawn (src)
|
|
|
|
/obj/item/storage/toolbox/guncase/revolver
|
|
name = "revolver gun case"
|
|
weapon_to_spawn = /obj/item/gun/ballistic/revolver/badass/nuclear
|
|
extra_to_spawn = /obj/item/ammo_box/a357
|
|
|
|
/obj/item/storage/toolbox/guncase/sword_and_board
|
|
name = "energy sword and shield weapon case"
|
|
weapon_to_spawn = /obj/item/melee/energy/sword
|
|
extra_to_spawn = /obj/item/shield/energy
|
|
|
|
/obj/item/storage/toolbox/guncase/sword_and_board/PopulateContents()
|
|
new weapon_to_spawn (src)
|
|
new extra_to_spawn (src)
|
|
new /obj/item/clothing/head/costume/knight (src)
|
|
|
|
/obj/item/storage/toolbox/guncase/cqc
|
|
name = "\improper CQC equipment case"
|
|
weapon_to_spawn = /obj/item/book/granter/martial/cqc
|
|
extra_to_spawn = /obj/item/storage/box/syndie_kit/imp_stealth
|
|
|
|
/obj/item/storage/toolbox/guncase/cqc/PopulateContents()
|
|
new weapon_to_spawn (src)
|
|
new extra_to_spawn (src)
|
|
new /obj/item/clothing/head/costume/snakeeater (src)
|
|
new /obj/item/storage/fancy/cigarettes/cigpack_syndicate (src)
|
|
|
|
/obj/item/clothing/head/costume/snakeeater
|
|
name = "strange bandana"
|
|
desc = "A bandana. It seems to have a little carp embroidered on the inside, as well as the kanji '魚'."
|
|
icon_state = "snake_eater"
|
|
inhand_icon_state = null
|
|
clothing_traits = list(TRAIT_FISH_EATER)
|
|
|
|
/obj/item/clothing/head/costume/knight
|
|
name = "fake medieval helmet"
|
|
desc = "A classic metal helmet. Though, this one seems to be very obviously fake..."
|
|
icon = 'icons/obj/clothing/head/helmet.dmi'
|
|
worn_icon = 'icons/mob/clothing/head/helmet.dmi'
|
|
icon_state = "knight_green"
|
|
inhand_icon_state = "knight_helmet"
|
|
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT
|
|
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
|
dog_fashion = null
|
|
|
|
/obj/item/storage/toolbox/guncase/doublesword
|
|
name = "double-bladed energy sword weapon case"
|
|
weapon_to_spawn = /obj/item/dualsaber
|
|
extra_to_spawn = /obj/item/soap/syndie
|
|
|
|
/obj/item/storage/toolbox/guncase/doublesword/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY
|
|
atom_storage.max_total_storage = 10 //it'll hold enough
|
|
atom_storage.max_slots = 5
|
|
|
|
/obj/item/storage/toolbox/guncase/doublesword/PopulateContents()
|
|
new weapon_to_spawn (src)
|
|
new extra_to_spawn (src)
|
|
new /obj/item/mod/module/noslip (src)
|
|
new /obj/item/reagent_containers/hypospray/medipen/methamphetamine (src)
|
|
new /obj/item/clothing/under/rank/prisoner/nosensor (src)
|
|
|
|
/obj/item/storage/toolbox/guncase/soviet
|
|
name = "ancient gun case"
|
|
desc = "A weapon's case. Has the symbol of the Third Soviet Union stamped on the side."
|
|
icon_state = "sakhno_case"
|
|
inhand_icon_state = "sakhno_case"
|
|
weapon_to_spawn = /obj/effect/spawner/random/sakhno
|
|
extra_to_spawn = /obj/effect/spawner/random/sakhno/ammo
|
|
|
|
/obj/item/storage/toolbox/guncase/monkeycase
|
|
name = "monkey gun case"
|
|
desc = "Everything a monkey needs to truly go ape-shit. There's a paw-shaped hand scanner lock on the front of the case."
|
|
|
|
/obj/item/storage/toolbox/guncase/monkeycase/Initialize(mapload)
|
|
. = ..()
|
|
atom_storage.locked = STORAGE_SOFT_LOCKED
|
|
|
|
/obj/item/storage/toolbox/guncase/monkeycase/attack_self(mob/user, modifiers)
|
|
if(!monkey_check(user))
|
|
return
|
|
return ..()
|
|
|
|
/obj/item/storage/toolbox/guncase/monkeycase/attack_self_secondary(mob/user, modifiers)
|
|
attack_self(user, modifiers)
|
|
return
|
|
|
|
/obj/item/storage/toolbox/guncase/monkeycase/attack_hand(mob/user, list/modifiers)
|
|
if(!monkey_check(user))
|
|
return
|
|
return ..()
|
|
|
|
/obj/item/storage/toolbox/guncase/monkeycase/proc/monkey_check(mob/user)
|
|
if(atom_storage.locked == STORAGE_NOT_LOCKED)
|
|
return TRUE
|
|
|
|
if(is_simian(user))
|
|
atom_storage.locked = STORAGE_NOT_LOCKED
|
|
to_chat(user, span_notice("You place your paw on the paw scanner, and hear a soft click as [src] unlocks!"))
|
|
playsound(src, 'sound/items/click.ogg', 25, TRUE)
|
|
return TRUE
|
|
to_chat(user, span_warning("You put your hand on the hand scanner, and it rejects it with an angry chimpanzee screech!"))
|
|
playsound(src, SFX_SCREECH, 75, TRUE)
|
|
return FALSE
|
|
|
|
/obj/item/storage/toolbox/guncase/monkeycase/PopulateContents()
|
|
switch(rand(1, 3))
|
|
if(1)
|
|
// Uzi with a boxcutter.
|
|
new /obj/item/gun/ballistic/automatic/mini_uzi/chimpgun(src)
|
|
new /obj/item/ammo_box/magazine/uzim9mm(src)
|
|
new /obj/item/ammo_box/magazine/uzim9mm(src)
|
|
new /obj/item/boxcutter/extended(src)
|
|
if(2)
|
|
// Thompson with a boxcutter.
|
|
new /obj/item/gun/ballistic/automatic/tommygun/chimpgun(src)
|
|
new /obj/item/ammo_box/magazine/tommygunm45(src)
|
|
new /obj/item/ammo_box/magazine/tommygunm45(src)
|
|
new /obj/item/boxcutter/extended(src)
|
|
if(3)
|
|
// M1911 with a switchblade and an extra banana bomb.
|
|
new /obj/item/gun/ballistic/automatic/pistol/m1911/chimpgun(src)
|
|
new /obj/item/ammo_box/magazine/m45(src)
|
|
new /obj/item/ammo_box/magazine/m45(src)
|
|
new /obj/item/switchblade/extended(src)
|
|
new /obj/item/food/grown/banana/bunch/monkeybomb(src)
|
|
|
|
// Banana bomb! Basically a tiny flashbang for monkeys.
|
|
new /obj/item/food/grown/banana/bunch/monkeybomb(src)
|
|
// Somewhere to store it all.
|
|
new /obj/item/storage/backpack/messenger(src)
|