diff --git a/code/game/objects/structures/loot_pile.dm b/code/game/objects/structures/loot_pile.dm index dc3971fdd2..1f779f74cd 100644 --- a/code/game/objects/structures/loot_pile.dm +++ b/code/game/objects/structures/loot_pile.dm @@ -53,8 +53,9 @@ SCAVENGING_SPAWN_MOUSE = 10, SCAVENGING_SPAWN_MICE = 5, SCAVENGING_SPAWN_TOM = 1, - /obj/item/clothing/gloves/color/yellow = 0.5) - unique_loot = list(/obj/item/clothing/gloves/color/yellow = 5, SCAVENGING_SPAWN_TOM = 1) + /obj/item/clothing/gloves/color/yellow = 0.5, + /obj/item/book/granter/crafting_recipe/trash_cannon = 0.1) + unique_loot = list(/obj/item/clothing/gloves/color/yellow = 5, SCAVENGING_SPAWN_TOM = 1, /obj/item/book/granter/crafting_recipe/trash_cannon = 1) /obj/structure/loot_pile/maint/ComponentInitialize() var/static/safe_maint_items diff --git a/modular_sand/code/modules/clothing/suits/armor.dm b/modular_sand/code/modules/clothing/suits/armor.dm index 6d3fcd7df8..a1b24ca513 100644 --- a/modular_sand/code/modules/clothing/suits/armor.dm +++ b/modular_sand/code/modules/clothing/suits/armor.dm @@ -6,6 +6,8 @@ mutantrace_variation = NONE icon_state = "armorstripper" item_state = "armorstripper" + mob_overlay_icon = 'modular_splurt/icons/mob/clothing/suit.dmi' + mutantrace_variation = NONE armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) dog_fashion = null diff --git a/modular_splurt/code/datums/components/crafting/recipes/recipes_misc.dm b/modular_splurt/code/datums/components/crafting/recipes/recipes_misc.dm index 3b8f69936f..ddde719602 100644 --- a/modular_splurt/code/datums/components/crafting/recipes/recipes_misc.dm +++ b/modular_splurt/code/datums/components/crafting/recipes/recipes_misc.dm @@ -11,3 +11,29 @@ tools = list(TOOL_CROWBAR) subcategory = CAT_MISCELLANEOUS category = CAT_MISCELLANEOUS + +/datum/crafting_recipe/trash_cannon + name = "Trash Cannon" + always_availible = FALSE + tools = list(TOOL_WELDER, TOOL_SCREWDRIVER) + result = /obj/structure/cannon/trash + reqs = list( + /obj/item/melee/skateboard/improvised = 1, + /obj/item/tank/internals/oxygen = 1, + /datum/reagent/drug/maint/tar = 15, + /obj/item/restraints/handcuffs/cable = 1, + /obj/item/storage/toolbox = 1, + ) + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/trashball + name = "Trashball" + always_availible = FALSE + result = /obj/item/stack/cannonball/trashball + reqs = list( + /obj/item/stack/sheet = 5, + /datum/reagent/consumable/space_cola = 10, + ) + category = CAT_WEAPONRY + subcategory = CAT_AMMO diff --git a/modular_splurt/code/game/object/items/granters.dm b/modular_splurt/code/game/object/items/granters.dm new file mode 100644 index 0000000000..24eb239c8a --- /dev/null +++ b/modular_splurt/code/game/object/items/granters.dm @@ -0,0 +1,14 @@ +/obj/item/book/granter/crafting_recipe/trash_cannon + name = "diary of a demoted engineer" + desc = "A lost journal. The engineer seems very deranged about their demotion." + crafting_recipe_types = list( + /datum/crafting_recipe/trash_cannon, + /datum/crafting_recipe/trashball, + ) + icon_state = "book1" + oneuse = TRUE + remarks = list("\"I'll show them! I'll build a CANNON!\"", "\"Gunpowder is ideal, but i'll have to improvise...\"", "\"I savor the look on the CE's face when I BLOW down the walls to engineering!\"", "\"If the supermatter gets loose from my rampage, so be it!\"", "\"I'VE GONE COMPLETELY MENTAL!\"") + +/obj/item/book/granter/crafting_recipe/trash_cannon/recoil(mob/living/carbon/user) + to_chat(user, span_warning("The book turns to dust in your hands.")) + qdel(src) diff --git a/modular_splurt/code/game/object/structures/cannons/cannon.dm b/modular_splurt/code/game/object/structures/cannons/cannon.dm new file mode 100644 index 0000000000..ff31f69626 --- /dev/null +++ b/modular_splurt/code/game/object/structures/cannons/cannon.dm @@ -0,0 +1,138 @@ +///how much projectile damage is lost when using a bad fuel +#define BAD_FUEL_DAMAGE_TAX 20 +///extra chance it explodes upon firing +#define BAD_FUEL_EXPLODE_PROBABILTY 10 + +/obj/structure/cannon + name = "cannon" + desc = "Holemaker Deluxe: A sporty model with a good stop power. Any cannon enthusiast should be expected to start here." + density = TRUE + anchored = TRUE + icon = 'modular_splurt/icons/obj/structures/cannons.dmi' + icon_state = "falconet_patina" + max_integrity = 300 + ///whether the cannon can be unwrenched from the ground. + var/anchorable_cannon = TRUE + var/obj/item/stack/cannonball/loaded_cannonball = null + var/charge_ignited = FALSE + var/fire_delay = 15 + var/charge_size = 15 + var/fire_sound = 'modular_splurt/sound/weapons/gun/general/cannon.ogg' + +/obj/structure/cannon/Initialize(mapload) + . = ..() + create_reagents(charge_size) + +/obj/structure/cannon/examine(mob/user) + . = ..() + . += "[src] accepts gunpowder or welding fuel." + . += "Using welding fuel will weaken the force of the projectile fired." + +/obj/structure/cannon/proc/fire() + for(var/mob/shaken_mob in urange(10, src)) + if(shaken_mob.stat == CONSCIOUS) + shake_camera(shaken_mob, 3, 1) + + playsound(src, fire_sound, 50, TRUE) + flick(icon_state+"_fire", src) + if(loaded_cannonball) + var/obj/item/projectile/fired_projectile = new loaded_cannonball.projectile_type(get_turf(src)) + if(reagents.has_reagent(/datum/reagent/fuel, charge_size)) + fired_projectile.damage = max(2, fired_projectile.damage - BAD_FUEL_DAMAGE_TAX) + QDEL_NULL(loaded_cannonball) + fired_projectile.firer = src + fired_projectile.fired_from = src + fired_projectile.fire(dir2angle(dir)) + reagents.remove_all() + charge_ignited = FALSE + +/obj/structure/cannon/attackby(obj/item/used_item, mob/user, params) + if(charge_ignited) + to_chat(user, "It's gonna fire!") + return + var/ignition_message = used_item.ignition_effect(src, user) + + if(istype(used_item, /obj/item/stack/cannonball)) + if(loaded_cannonball) + to_chat(user, "[src] is already loaded!") + else + var/obj/item/stack/cannonball/cannoneers_balls = used_item + loaded_cannonball = new cannoneers_balls.type(src, 1) + loaded_cannonball.copy_evidences(cannoneers_balls) + to_chat(user, "You load a [cannoneers_balls.singular_name] into \the [src].") + cannoneers_balls.use(1, transfer = TRUE) + return + + else if(ignition_message) + if(!reagents.has_reagent(/datum/reagent/blackpowder,charge_size) && !reagents.has_reagent(/datum/reagent/fuel,charge_size)) + to_chat(user, "[src] needs [reagents.maximum_volume]u of charge!") + return + visible_message(ignition_message) + log_game("Cannon fired by [key_name(user)] in [AREACOORD(src)]") + addtimer(CALLBACK(src, .proc/fire), fire_delay) + charge_ignited = TRUE + return + + else if(istype(used_item, /obj/item/reagent_containers)) + var/obj/item/reagent_containers/powder_keg = used_item + if(!(powder_keg.reagent_flags & OPENCONTAINER)) + return ..() + if(istype(powder_keg, /obj/item/reagent_containers/rag)) + return ..() + + if(!powder_keg.reagents.total_volume) + to_chat(user, "[powder_keg] is empty!") + return + if(reagents.total_volume >= reagents.maximum_volume) + to_chat(user, "") + return + var/has_enough_gunpowder = powder_keg.reagents.has_reagent(/datum/reagent/blackpowder, charge_size) + var/has_enough_alt_fuel = powder_keg.reagents.has_reagent(/datum/reagent/fuel, charge_size) + if(!has_enough_gunpowder && !has_enough_alt_fuel) + to_chat(user, "[powder_keg] doesn't have at least 15u of fuel to fill [src]!") + return + if(has_enough_gunpowder) + powder_keg.reagents.trans_id_to(src, /datum/reagent/blackpowder, amount = charge_size) + to_chat(user, "You load [src] with gunpowder.") + return + if(has_enough_alt_fuel) + powder_keg.reagents.trans_id_to(src, /datum/reagent/fuel, amount = charge_size) + to_chat(user, "You load [src] with welding fuel.") + return + if(anchorable_cannon && used_item.tool_behaviour == TOOL_WRENCH) + if(default_unfasten_wrench(user, used_item, time = 2 SECONDS)) + return + ..() + +/obj/structure/cannon/trash + name = "trash cannon" + desc = "Okay, sure, you could call it a toolbox welded to an opened oxygen tank cabled to a skateboard, but it's a TRASH CANNON to us." + icon_state = "garbagegun" + anchored = FALSE + anchorable_cannon = FALSE + var/fires_before_deconstruction = 5 + +/obj/structure/cannon/trash/fire() + var/explode_chance = 10 + var/used_alt_fuel = reagents.has_reagent(/datum/reagent/fuel, charge_size) + if(used_alt_fuel) + explode_chance += BAD_FUEL_EXPLODE_PROBABILTY + . = ..() + fires_before_deconstruction-- + if(used_alt_fuel) + fires_before_deconstruction-- + if(prob(explode_chance)) + visible_message("[src] explodes!") + explosion(src, heavy_impact_range = 1, light_impact_range = 5, flame_range = 5) + return + if(fires_before_deconstruction <= 0) + visible_message("[src] falls apart from operation!") + qdel(src) + +/obj/structure/cannon/trash/Destroy() + new /obj/item/stack/sheet/metal/five(src.loc) + new /obj/item/stack/rods(src.loc) + . = ..() + +#undef BAD_FUEL_DAMAGE_TAX +#undef BAD_FUEL_EXPLODE_PROBABILTY diff --git a/modular_splurt/code/game/object/structures/cannons/cannonballs.dm b/modular_splurt/code/game/object/structures/cannons/cannonballs.dm new file mode 100644 index 0000000000..d0a9a7de1b --- /dev/null +++ b/modular_splurt/code/game/object/structures/cannons/cannonballs.dm @@ -0,0 +1,70 @@ +/obj/item/stack/cannonball + name = "cannonballs" + desc = "A stack of heavy plasteel cannonballs. Gunnery for the space age!" + icon = 'modular_splurt/icons/obj/stack_objects.dmi' + icon_state = "cannonballs" + max_amount = 14 + singular_name = "cannonball" + merge_type = /obj/item/stack/cannonball + throwforce = 10 + flags_1 = CONDUCT_1 + custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT, /datum/material/plasma=MINERAL_MATERIAL_AMOUNT) + resistance_flags = FIRE_PROOF + throw_speed = 5 + throw_range = 3 + ///the type of projectile this type of cannonball item turns into. + var/obj/item/projectile/projectile_type = /obj/item/projectile/bullet/cannonball + +/obj/item/stack/cannonball/update_icon_state() + . = ..() + icon_state = (amount == 1) ? "[initial(icon_state)]" : "[initial(icon_state)]_[min(amount, 14)]" + +/obj/item/stack/cannonball/fourteen + amount = 14 + +/obj/item/stack/cannonball/shellball + name = "explosive shellballs" + singular_name = "explosive shellball" + desc = "An explosive anti-material and counter-battery projectile cannonball. Makes great work out of any wall, for easy entrances." + color = "#FF0000" + merge_type = /obj/item/stack/cannonball/shellball + projectile_type = /obj/item/projectile/bullet/cannonball/explosive + +/obj/item/stack/cannonball/shellball/seven + amount = 7 + +/obj/item/stack/cannonball/shellball/fourteen + amount = 14 + +/obj/item/stack/cannonball/emp + name = "malfunction shots" + singular_name = "malfunction shot" + icon_state = "emp_cannonballs" + desc = "A shot filled with two chambers that combine on impact, creating a chemical EMP. What does any of that mean? Who knows. Modern piracy really lost its soul with these newfangled things." + max_amount = 4 + merge_type = /obj/item/stack/cannonball/emp + projectile_type = /obj/item/projectile/bullet/cannonball/emp + +/obj/item/stack/cannonball/the_big_one + name = "\"The Biggest Ones\"" + singular_name = "\"The Biggest One\"" + desc = "An insane amount of explosives jammed into a massive cannonball. The last cannonball you'll ever fire in a fight, mostly because there'll be nothing left to shoot at afterwards." + max_amount = 5 + icon_state = "biggest_cannonballs" + merge_type = /obj/item/stack/cannonball/the_big_one + projectile_type = /obj/item/projectile/bullet/cannonball/biggest_one + +/obj/item/stack/cannonball/the_big_one/five + amount = 5 + +/obj/item/stack/cannonball/trashball + name = "trashballs" + singular_name = "trashball" + desc = "A clump of tightly packed garbage. It'll work as a cannonball, but it may be unhealthy to actually put this in a real cannon." + max_amount = 4 + icon_state = "trashballs" + merge_type = /obj/item/stack/cannonball/trashball + projectile_type = /obj/item/projectile/bullet/cannonball/trashball + +/obj/item/stack/cannonball/trashball/four + amount = 4 diff --git a/modular_splurt/code/modules/antagonists/wizard/equipment/spellbook.dm b/modular_splurt/code/modules/antagonists/wizard/equipment/spellbook.dm new file mode 100644 index 0000000000..79774dc766 --- /dev/null +++ b/modular_splurt/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -0,0 +1,4 @@ +/datum/spellbook_entry/summonsoap + name = "Summon Soap" + spell_type = /obj/effect/proc_holder/spell/targeted/conjure_item/soap + category = "Defensive" diff --git a/modular_splurt/code/modules/mob/eros_emotes.dm b/modular_splurt/code/modules/mob/eros_emotes.dm index f7248898a0..91c59f8b8d 100644 --- a/modular_splurt/code/modules/mob/eros_emotes.dm +++ b/modular_splurt/code/modules/mob/eros_emotes.dm @@ -182,3 +182,15 @@ else message = "makes a very loud noise." . = ..() + +/datum/emote/living/monkeytwerk + key = "twerk" + key_third_person = "twerk" + message = "shakes it harder than James Russle himself!" + emote_type = EMOTE_AUDIBLE + muzzle_ignore = TRUE + restraint_check = FALSE + +/datum/emote/living/monkeytwerk/run_emote(mob/user, params, type_override, intentional) + . = ..() + playsound(user, 'modular_splurt/sound/misc/monkey_twerk.ogg', 50, 1) diff --git a/modular_splurt/code/modules/projectiles/projectile/bullets/cannonball.dm b/modular_splurt/code/modules/projectiles/projectile/bullets/cannonball.dm new file mode 100644 index 0000000000..6b0f6b9405 --- /dev/null +++ b/modular_splurt/code/modules/projectiles/projectile/bullets/cannonball.dm @@ -0,0 +1,66 @@ +/obj/item/projectile/bullet/cannonball + name = "cannonball" + icon = 'modular_splurt/icons/obj/guns/projectiles.dmi' + icon_state = "cannonball" + damage = 110 //gets set to 100 before first mob impact. + movement_type = FLYING | UNSTOPPABLE + sharpness = NONE + wound_bonus = 0 + dismemberment = 0 + knockdown = 5 SECONDS + stutter = 10 SECONDS + embedding = null + hitsound = 'sound/effects/meteorimpact.ogg' + hitsound_wall = 'sound/weapons/sonic_jackhammer.ogg' + +/obj/item/projectile/bullet/cannonball/prehit(atom/target) + damage -= 10 + if(damage < 40) + movement_type &= ~(UNSTOPPABLE) + return ..() + +/obj/item/projectile/bullet/cannonball/on_hit(atom/target, blocked = FALSE) + if(blocked == 100) + return ..() + if(isobj(target)) + var/obj/hit_object = target + hit_object.take_damage(80, BRUTE, sound_effect = FALSE) + else if(isclosedturf(target)) + damage -= max(damage - 30, 10) //lose extra momentum from busting through a wall + if(!isindestructiblewall(target)) + var/turf/closed/hit_turf = target + hit_turf.ScrapeAway() + return ..() + +/obj/item/projectile/bullet/cannonball/explosive + name = "explosive shell" + color = "#FF0000" + damage = 40 //set to 30 before first mob impact, but they're gonna be gibbed by the explosion + +/obj/item/projectile/bullet/cannonball/explosive/prehit(atom/target) + . = ..() + explosion(target, devastation_range = 2, heavy_impact_range = 3, light_impact_range = 4) + +/obj/item/projectile/bullet/cannonball/emp + name = "malfunction shot" + icon_state = "emp_cannonball" + damage = 15 //very low + +/obj/item/projectile/bullet/cannonball/emp/prehit(atom/target) + . = ..() + empulse(src, 4, 10) + +/obj/item/projectile/bullet/cannonball/biggest_one + name = "\"The Biggest One\"" + icon_state = "biggest_one" + damage = 70 //low pierce + +/obj/item/projectile/bullet/cannonball/biggest_one/prehit(atom/target) + . = ..() + if(damage < 50) + explosion(target, GLOB.MAX_EX_DEVESTATION_RANGE, GLOB.MAX_EX_HEAVY_RANGE, GLOB.MAX_EX_LIGHT_RANGE, GLOB.MAX_EX_FLASH_RANGE) + +/obj/item/projectile/bullet/cannonball/trashball + name = "trashball" + icon_state = "trashball" + damage = 90 //better than the biggest one but no explosion, so kinda just a worse normal cannonball diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/drug_reagents.dm new file mode 100644 index 0000000000..537850a5b7 --- /dev/null +++ b/modular_splurt/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -0,0 +1,22 @@ +/datum/reagent/drug/maint/tar + name = "Maintenance Tar" + description = "An unknown tar that you most likely gotten from an assistant, a bored chemist... or cooked yourself." + reagent_state = LIQUID + color = "#000000" + overdose_threshold = 30 + +/datum/reagent/drug/maint/tar/on_mob_life(mob/living/carbon/M, delta_time, times_fired) + . = ..() + + M.AdjustStun(-10 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + M.AdjustKnockdown(-10 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + M.AdjustUnconscious(-10 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + M.AdjustParalyzed(-10 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + M.AdjustImmobilized(-10 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + M.adjustOrganLoss(ORGAN_SLOT_LIVER, 1.5 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + +/datum/reagent/drug/maint/tar/overdose_process(mob/living/M, delta_time, times_fired) + . = ..() + + M.adjustToxLoss(5 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + M.adjustOrganLoss(ORGAN_SLOT_LIVER, 3 * REAGENTS_EFFECT_MULTIPLIER * delta_time) diff --git a/modular_splurt/code/modules/reagents/chemistry/recipes/drugs.dm b/modular_splurt/code/modules/reagents/chemistry/recipes/drugs.dm new file mode 100644 index 0000000000..2d83e4b5bd --- /dev/null +++ b/modular_splurt/code/modules/reagents/chemistry/recipes/drugs.dm @@ -0,0 +1,7 @@ +/datum/chemical_reaction/maint_tar1 + results = list(/datum/reagent/toxin/acid = 1 ,/datum/reagent/drug/maint/tar = 3) + required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/phenol = 1 , /datum/reagent/fuel = 1) + +/datum/chemical_reaction/maint_tar2 + results = list(/datum/reagent/toxin/acid = 1 ,/datum/reagent/drug/maint/tar = 3) + required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/consumable/enzyme = 3 , /datum/reagent/fuel = 1) diff --git a/modular_splurt/code/modules/spell/spell_types/conjure.dm b/modular_splurt/code/modules/spell/spell_types/conjure.dm new file mode 100644 index 0000000000..4a8a3980d6 --- /dev/null +++ b/modular_splurt/code/modules/spell/spell_types/conjure.dm @@ -0,0 +1,8 @@ +/obj/effect/proc_holder/spell/targeted/conjure_item/soap + name = "Summon Soap" + desc = "For El Trollage. And maybe a bit of crew's anger too." + charge_max = 100 + action_icon = 'icons/obj/items_and_weapons.dmi' + action_icon_state = "soapdeluxe" + item_type = /obj/item/soap/deluxe + delete_old = FALSE diff --git a/modular_splurt/icons/mob/clothing/suit.dmi b/modular_splurt/icons/mob/clothing/suit.dmi new file mode 100644 index 0000000000..912a162d55 Binary files /dev/null and b/modular_splurt/icons/mob/clothing/suit.dmi differ diff --git a/modular_splurt/icons/obj/guns/projectiles.dmi b/modular_splurt/icons/obj/guns/projectiles.dmi new file mode 100644 index 0000000000..10d1a09a21 Binary files /dev/null and b/modular_splurt/icons/obj/guns/projectiles.dmi differ diff --git a/modular_splurt/icons/obj/stack_objects.dmi b/modular_splurt/icons/obj/stack_objects.dmi index 105943ce7c..7eee2eab4a 100644 Binary files a/modular_splurt/icons/obj/stack_objects.dmi and b/modular_splurt/icons/obj/stack_objects.dmi differ diff --git a/modular_splurt/icons/obj/structures/cannons.dmi b/modular_splurt/icons/obj/structures/cannons.dmi new file mode 100644 index 0000000000..f0e37c5310 Binary files /dev/null and b/modular_splurt/icons/obj/structures/cannons.dmi differ diff --git a/modular_splurt/sound/misc/monkey_twerk.ogg b/modular_splurt/sound/misc/monkey_twerk.ogg new file mode 100644 index 0000000000..ae80337f8d Binary files /dev/null and b/modular_splurt/sound/misc/monkey_twerk.ogg differ diff --git a/modular_splurt/sound/weapons/gun/general/cannon.ogg b/modular_splurt/sound/weapons/gun/general/cannon.ogg new file mode 100644 index 0000000000..feb30293b6 Binary files /dev/null and b/modular_splurt/sound/weapons/gun/general/cannon.ogg differ diff --git a/tgstation.dme b/tgstation.dme index 2028569bb5..67905c6c7b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4183,10 +4183,12 @@ #include "modular_splurt\code\game\areas\centcom.dm" #include "modular_splurt\code\game\areas\shuttles.dm" #include "modular_splurt\code\game\gamemodes\objectives.dm" +#include "modular_splurt\code\game\machinery\chem_alert.dm" #include "modular_splurt\code\game\machinery\computer\slavery.dm" #include "modular_splurt\code\game\object\effects\landmarks.dm" #include "modular_splurt\code\game\object\items\cards_ids.dm" #include "modular_splurt\code\game\object\items\cosmetics.dm" +#include "modular_splurt\code\game\object\items\granters.dm" #include "modular_splurt\code\game\object\items\mesmetron.dm" #include "modular_splurt\code\game\object\items\circuitboards\computer_circuitboards.dm" #include "modular_splurt\code\game\object\items\devices\radio\electropack.dm" @@ -4208,12 +4210,14 @@ #include "modular_splurt\code\game\object\structures\tables_racks.dm" #include "modular_splurt\code\game\object\structures\bed_chairs\beds.dm" #include "modular_splurt\code\game\object\structures\bed_chairs\chairs.dm" +#include "modular_splurt\code\game\object\structures\cannons\cannon.dm" +#include "modular_splurt\code\game\object\structures\cannons\cannonballs.dm" #include "modular_splurt\code\game\object\structures\crates_lockers\closets\slaver.dm" #include "modular_splurt\code\game\object\structures\crates_lockers\crates\wooden.dm" #include "modular_splurt\code\game\turfs\simulated\floor\fancy_floor.dm" #include "modular_splurt\code\game\turfs\simulated\wall\mineral_walls.dm" -#include "modular_splurt\code\modules\admin\verbs\discordbunker.dm" #include "modular_splurt\code\modules\admin\playtimes.dm" +#include "modular_splurt\code\modules\admin\verbs\discordbunker.dm" #include "modular_splurt\code\modules\admin\verbs\one_click_antag.dm" #include "modular_splurt\code\modules\admin\verbs\randomverbs.dm" #include "modular_splurt\code\modules\antagonists\ashwalker.dm" @@ -4267,9 +4271,12 @@ #include "modular_splurt\code\modules\mob\living\carbon\human\species_types\ashwalker.dm" #include "modular_splurt\code\modules\power\cell.dm" #include "modular_splurt\code\modules\projectiles\guns\ballistic\automatic.dm" +#include "modular_splurt\code\modules\projectiles\projectile\bullets\cannonball.dm" #include "modular_splurt\code\modules\reagents\chemistry\reagents\alcohol_reagents.dm" #include "modular_splurt\code\modules\reagents\chemistry\reagents\cit_reagents.dm" +#include "modular_splurt\code\modules\reagents\chemistry\reagents\drug_reagents.dm" #include "modular_splurt\code\modules\reagents\chemistry\reagents\food_reagents.dm" +#include "modular_splurt\code\modules\reagents\chemistry\recipes\drugs.dm" #include "modular_splurt\code\modules\reagents\chemistry\recipes\lewd.dm" #include "modular_splurt\code\modules\research\designs\biogenerator_designs.dm" #include "modular_splurt\code\modules\research\designs\power_designs.dm" @@ -4279,7 +4286,7 @@ #include "modular_splurt\code\modules\smithing\anvil.dm" #include "modular_splurt\code\modules\smithing\finished_items.dm" #include "modular_splurt\code\modules\smithing\smithed_items.dm" +#include "modular_splurt\code\modules\spell\spell_types\conjure.dm" #include "modular_splurt\code\modules\vending\clothesmate.dm" #include "tools\Redirector\textprocs.dm" -#include "modular_splurt\code\game\machinery\chem_alert.dm" // END_INCLUDE