diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 74353835d33..e05b93216be 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -2493,7 +2493,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; - req_access_txt = "12" + req_access_txt = "0"; + req_one_access_txt = "32;47;48" }, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -9688,7 +9689,7 @@ /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, /obj/item/clothing/suit/suspenders, -/obj/effect/landmark/costume, +/obj/effect/spawner/lootdrop/costume, /turf/open/floor/plasteel/redblue, /area/maintenance/fpmaint2/fore_port_maintenance) "atx" = ( @@ -32058,7 +32059,7 @@ /area/space) "bjo" = ( /obj/structure/rack, -/obj/effect/landmark/costume, +/obj/effect/spawner/lootdrop/costume, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; name = "2maintenance loot spawner" @@ -38443,10 +38444,13 @@ /turf/closed/wall/r_wall, /area/engine/break_room) "bvt" = ( -/obj/machinery/computer/atmos_control, /obj/machinery/status_display{ pixel_x = -32 }, +/obj/structure/cable/white{ + icon_state = "0-4" + }, +/obj/machinery/modular_computer/console/preset/engineering, /turf/open/floor/plasteel/caution{ dir = 8 }, @@ -38466,6 +38470,9 @@ name = "Atmospheric Technician" }, /obj/effect/turf_decal/bot, +/obj/structure/cable/white{ + icon_state = "1-8" + }, /turf/open/floor/plasteel, /area/atmos) "bvw" = ( @@ -57270,9 +57277,6 @@ /turf/open/floor/plating, /area/engine/engineering) "cde" = ( -/obj/machinery/computer/monitor{ - name = "Engineering Power Monitoring Console" - }, /obj/machinery/firealarm{ dir = 8; pixel_x = -24; @@ -57289,6 +57293,7 @@ dir = 1; name = "engineering camera" }, +/obj/machinery/modular_computer/console/preset/engineering, /turf/open/floor/plasteel/vault, /area/engine/engineering) "cdf" = ( @@ -97079,8 +97084,8 @@ }) "dAG" = ( /obj/structure/rack, -/obj/effect/landmark/costume, -/obj/effect/landmark/costume, +/obj/effect/spawner/lootdrop/costume, +/obj/effect/spawner/lootdrop/costume, /obj/item/clothing/neck/tie/black, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral/side{ @@ -97796,8 +97801,8 @@ "dBY" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, -/obj/effect/landmark/costume, -/obj/effect/landmark/costume, +/obj/effect/spawner/lootdrop/costume, +/obj/effect/spawner/lootdrop/costume, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral/side{ @@ -98551,7 +98556,7 @@ }) "dDp" = ( /obj/structure/closet/crate, -/obj/effect/landmark/costume, +/obj/effect/spawner/lootdrop/costume, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, @@ -103451,7 +103456,7 @@ /area/maintenance/fpmaint2/aft_port_maintenance) "dMJ" = ( /obj/structure/closet, -/obj/effect/landmark/costume, +/obj/effect/spawner/lootdrop/costume, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -111346,7 +111351,7 @@ /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, /obj/item/clothing/shoes/jackboots, -/obj/effect/landmark/costume, +/obj/effect/spawner/lootdrop/costume, /obj/structure/sign/poster/contraband/random{ pixel_y = -32 }, @@ -112886,6 +112891,15 @@ /area/engine/gravity_generator{ name = "Atmospherics Engine" }) +"ehz" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/neutral, +/area/atmos) (1,1,1) = {" aaa @@ -139729,7 +139743,7 @@ bqf brq bsD aZq -bvu +ehz bvu byX aIZ diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 7c61f5d7e3d..c26ba78c62c 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -9905,7 +9905,7 @@ /area/maintenance/starboard) "arI" = ( /obj/structure/rack, -/obj/effect/landmark/costume, +/obj/effect/spawner/lootdrop/costume, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/starboard) @@ -23791,9 +23791,6 @@ d2 = 4; icon_state = "0-4" }, -/obj/machinery/computer/monitor{ - name = "Engineering Power Monitoring Console" - }, /obj/machinery/status_display{ density = 0; layer = 4; @@ -23805,6 +23802,7 @@ dir = 2; network = list("SS13") }, +/obj/machinery/modular_computer/console/preset/engineering, /turf/open/floor/plasteel/vault, /area/engine/engineering) "aPX" = ( @@ -24416,8 +24414,8 @@ /area/crew_quarters/locker) "aRa" = ( /obj/structure/rack, -/obj/effect/landmark/costume, -/obj/effect/landmark/costume, +/obj/effect/spawner/lootdrop/costume, +/obj/effect/spawner/lootdrop/costume, /obj/item/clothing/mask/balaclava, /obj/machinery/airalarm{ dir = 8; @@ -51223,8 +51221,8 @@ dir = 8; layer = 2.9 }, -/obj/effect/landmark/costume, -/obj/effect/landmark/costume, +/obj/effect/spawner/lootdrop/costume, +/obj/effect/spawner/lootdrop/costume, /turf/open/floor/plating, /area/maintenance/fpmaint2{ name = "Port Maintenance" @@ -51235,8 +51233,8 @@ dir = 8; layer = 2.9 }, -/obj/effect/landmark/costume, -/obj/effect/landmark/costume, +/obj/effect/spawner/lootdrop/costume, +/obj/effect/spawner/lootdrop/costume, /turf/open/floor/plating, /area/maintenance/fpmaint2{ name = "Port Maintenance" @@ -81754,7 +81752,7 @@ }) "cJY" = ( /obj/structure/rack, -/obj/effect/landmark/costume, +/obj/effect/spawner/lootdrop/costume, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; name = "2maintenance loot spawner" diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 5a1b933d94c..acc7e47806a 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -776,9 +776,10 @@ tag = "icon-0-2"; icon_state = "0-2" }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, +/obj/machinery/modular_computer/console/preset/command, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, /area/bridge) "abo" = ( /turf/open/floor/plasteel/vault{ @@ -21889,12 +21890,12 @@ icon_state = "1-2" }, /obj/effect/turf_decal/bot, +/obj/structure/cable/white{ + icon_state = "2-4" + }, /turf/open/floor/plasteel, /area/engine/engineering) "aIx" = ( -/obj/machinery/computer/monitor{ - name = "Engineering Power Monitoring Console" - }, /obj/machinery/light_switch{ pixel_x = 38; pixel_y = 24 @@ -21907,6 +21908,7 @@ req_access_txt = "10" }, /obj/effect/turf_decal/bot, +/obj/machinery/modular_computer/console/preset/engineering, /turf/open/floor/plasteel, /area/engine/engineering) "aIy" = ( @@ -41983,6 +41985,16 @@ }, /turf/open/floor/circuit/green, /area/engine/engineering) +"buW" = ( +/obj/structure/cable/white{ + tag = "icon-0-2"; + icon_state = "0-2" + }, +/obj/machinery/modular_computer/console/preset/research, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/bridge) (1,1,1) = {" aaa @@ -84210,7 +84222,7 @@ aav aaH aaQ abb -abn +buW abF ack adc diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 13827c71fde..94b70c5c371 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -45713,13 +45713,11 @@ }, /area/engine/engineering) "bME" = ( -/obj/machinery/computer/monitor{ - name = "Engineering Power Monitoring Console" - }, /obj/structure/cable{ icon_state = "0-2"; d2 = 2 }, +/obj/machinery/modular_computer/console/preset/engineering, /turf/open/floor/plasteel/yellow/side{ dir = 1 }, diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 3bdd86ae399..bc5816dbb91 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -1,6 +1,12 @@ //These are all the different status effects. Use the paths for each effect in the defines. +#define STATUS_EFFECT_MULTIPLE 0 //if it allows multiple instances of the effect + +#define STATUS_EFFECT_UNIQUE 1 //if it allows only one, preventing new instances + +#define STATUS_EFFECT_REPLACE 2 //if it allows only one, but new instances replace + #define BASIC_STATUS_EFFECT /datum/status_effect //Has no effect. /////////// diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 1cf1c184c97..7f14d9d5b12 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -214,7 +214,7 @@ Proc for attack log creation, because really why not stoplag() if (progress) progbar.update(world.time - starttime) - if(!user || !target) + if(QDELETED(user) || QDELETED(target)) . = 0 break if(uninterruptible) @@ -266,11 +266,11 @@ Proc for attack log creation, because really why not drifting = 0 Uloc = user.loc - if(!user || user.stat || user.weakened || user.stunned || (!drifting && user.loc != Uloc) || (extra_checks && !extra_checks.Invoke())) + if(QDELETED(user) || user.stat || user.weakened || user.stunned || (!drifting && user.loc != Uloc) || (extra_checks && !extra_checks.Invoke())) . = 0 break - if(Tloc && (!target || Tloc != target.loc)) + if(!QDELETED(Tloc) && (QDELETED(target) || Tloc != target.loc)) if((Uloc != Tloc || Tloc != user) && !drifting) . = 0 break @@ -316,7 +316,7 @@ Proc for attack log creation, because really why not sleep(1) if(progress) progbar.update(world.time - starttime) - if(!user || !targets) + if(QDELETED(user) || !targets) . = 0 break if(uninterruptible) @@ -327,7 +327,7 @@ Proc for attack log creation, because really why not user_loc = user.loc for(var/atom/target in targets) - if((!drifting && user_loc != user.loc) || originalloc[target] != target.loc || user.get_active_held_item() != holding || user.incapacitated() || user.lying || (extra_checks && !extra_checks.Invoke())) + if((!drifting && user_loc != user.loc) || QDELETED(target) || originalloc[target] != target.loc || user.get_active_held_item() != holding || user.incapacitated() || user.lying || (extra_checks && !extra_checks.Invoke())) . = 0 break mainloop if(progbar) diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index ec2bd2812bb..932d61793f2 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -81,12 +81,25 @@ SUBSYSTEM_DEF(persistence) var/saved_messages = json_decode(saved_json) for(var/item in saved_messages) - var/turf/T = locate(item["x"], item["y"], ZLEVEL_STATION) + if(!islist(item)) + continue + + var/xvar = item["x"] + var/yvar = item["y"] + var/zvar = item["z"] + + if(!xvar || !yvar || !zvar) + continue + + var/turf/T = locate(xvar, yvar, zvar) if(!isturf(T)) continue + if(locate(/obj/structure/chisel_message) in T) continue + var/obj/structure/chisel_message/M = new(T) + M.unpack(item) if(!M.loc) M.persists = FALSE diff --git a/code/datums/action.dm b/code/datums/action.dm index 57ef56d8732..db459b2aabd 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -333,6 +333,10 @@ /datum/action/item_action/hands_free/shift_nerves name = "Shift Nerves" +/datum/action/item_action/explosive_implant + check_flags = 0 + name = "Activate Explosive Implant" + /datum/action/item_action/toggle_research_scanner name = "Toggle Research Scanner" button_icon_state = "scan_mode" @@ -467,4 +471,4 @@ /datum/action/item_action/bhop name = "Activate Jump Boots" desc = "Activates the jump boot's internal propulsion system, allowing the user to dash over 4-wide gaps." - button_icon_state = "jetboot" \ No newline at end of file + button_icon_state = "jetboot" diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 1078dbfaebc..918df017562 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -44,6 +44,7 @@ id = "vanguard" duration = 200 tick_interval = 0 //tick as fast as possible + status_type = STATUS_EFFECT_REPLACE alert_type = /obj/screen/alert/status_effect/vanguard var/datum/progressbar/progbar @@ -58,7 +59,8 @@ if(istype(L)) //this is probably more safety than actually needed var/vanguard = L.stun_absorption["vanguard"] desc = initial(desc) - desc += "
[vanguard["stuns_absorbed"] * 2] seconds of stuns held back.
[round(min(vanguard["stuns_absorbed"] * 0.25, 20)) * 2] seconds of stun will affect you." + desc += "
[vanguard["stuns_absorbed"] * 2] seconds of stuns held back.\ + [ratvar_awakens ? "":"
[round(min(vanguard["stuns_absorbed"] * 0.25, 20)) * 2] seconds of stun will affect you."]" ..() /datum/status_effect/vanguard_shield/Destroy() diff --git a/code/datums/status_effects/gas.dm b/code/datums/status_effects/gas.dm index 7ab9022848a..c2c070dbece 100644 --- a/code/datums/status_effects/gas.dm +++ b/code/datums/status_effects/gas.dm @@ -1,7 +1,7 @@ /datum/status_effect/freon id = "frozen" duration = 100 - unique = TRUE + status_type = STATUS_EFFECT_UNIQUE alert_type = /obj/screen/alert/status_effect/freon var/icon/cube diff --git a/code/datums/status_effects/status_effect.dm b/code/datums/status_effects/status_effect.dm index 38f3de0b242..c6e8f8e3b7a 100644 --- a/code/datums/status_effects/status_effect.dm +++ b/code/datums/status_effects/status_effect.dm @@ -9,7 +9,7 @@ var/global/list/all_status_effects = list() //a list of all status effects, if f var/duration = -1 //How long the status effect lasts in DECISECONDS. Enter -1 for an effect that never ends unless removed through some means. var/tick_interval = 10 //How many deciseconds between ticks, approximately. Leave at 10 for every second. var/mob/living/owner //The mob affected by the status effect. - var/unique = TRUE //If there can be multiple status effects of this type on one mob. + var/status_type = STATUS_EFFECT_UNIQUE //How many of the effect can be on one mob, and what happens when you try to add another var/alert_type = /obj/screen/alert/status_effect //the alert thrown by the status effect, contains name and description /datum/status_effect/New(mob/living/new_owner) @@ -57,6 +57,11 @@ var/global/list/all_status_effects = list() //a list of all status effects, if f /datum/status_effect/proc/on_apply() //Called whenever the buff is applied. /datum/status_effect/proc/tick() //Called every tick. /datum/status_effect/proc/on_remove() //Called whenever the buff expires or is removed. +/datum/status_effect/proc/be_replaced() //Called instead of on_remove when a status effect is replaced by itself + owner.clear_alert(id) + LAZYREMOVE(owner.status_effects, src) + owner = null + qdel(src) //////////////// // ALERT HOOK // @@ -76,8 +81,11 @@ var/global/list/all_status_effects = list() //a list of all status effects, if f var/datum/status_effect/S1 = effect LAZYINITLIST(status_effects) for(var/datum/status_effect/S in status_effects) - if(S.id == initial(S1.id) && initial(S1.unique)) - return + if(S.id == initial(S1.id) && S.status_type) + if(S.status_type == STATUS_EFFECT_REPLACE) + S.be_replaced() + else + return S1 = new effect(src) . = S1 diff --git a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm b/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm index 26575d881e6..b8bef0e1b6d 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm +++ b/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm @@ -112,7 +112,7 @@ /obj/effect/clockwork/spatial_gateway/Bumped(atom/A) ..() - if(isliving(A) || istype(A, /obj/item)) + if(A && !QDELETED(A)) pass_through_gateway(A) /obj/effect/clockwork/spatial_gateway/proc/pass_through_gateway(atom/movable/A, no_cost) diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm index c5de8550e9b..74bfbc3186c 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm @@ -17,11 +17,20 @@ timeout_time = 50 /datum/clockwork_scripture/ranged_ability/linked_vanguard/check_special_requirements() - if(islist(invoker.stun_absorption) && invoker.stun_absorption["vanguard"] && invoker.stun_absorption["vanguard"]["end_time"] > world.time) + if(!ratvar_awakens && islist(invoker.stun_absorption) && invoker.stun_absorption["vanguard"] && invoker.stun_absorption["vanguard"]["end_time"] > world.time) to_chat(invoker, "You are already shielded by a Vanguard!") return FALSE return TRUE +/datum/clockwork_scripture/ranged_ability/linked_vanguard/scripture_effects() + if(ratvar_awakens) //hey, ratvar's up! give everybody stun immunity. + for(var/mob/living/L in view(7, get_turf(invoker))) + if(L.stat != DEAD && is_servant_of_ratvar(L)) + L.apply_status_effect(STATUS_EFFECT_VANGUARD) + CHECK_TICK + return TRUE + return ..() + //Judicial Marker: places a judicial marker at a target location /datum/clockwork_scripture/ranged_ability/judicial_marker name = "Judicial Marker" diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm index 009e3f3089d..cb343802422 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm @@ -74,13 +74,19 @@ quickbind_desc = "Allows you to temporarily absorb stuns. All stuns absorbed will affect you when disabled." /datum/clockwork_scripture/vanguard/check_special_requirements() - if(islist(invoker.stun_absorption) && invoker.stun_absorption["vanguard"] && invoker.stun_absorption["vanguard"]["end_time"] > world.time) + if(!ratvar_awakens && islist(invoker.stun_absorption) && invoker.stun_absorption["vanguard"] && invoker.stun_absorption["vanguard"]["end_time"] > world.time) to_chat(invoker, "You are already shielded by a Vanguard!") return FALSE return TRUE /datum/clockwork_scripture/vanguard/scripture_effects() - invoker.apply_status_effect(STATUS_EFFECT_VANGUARD) + if(ratvar_awakens) + for(var/mob/living/L in view(7, get_turf(invoker))) + if(L.stat != DEAD && is_servant_of_ratvar(L)) + L.apply_status_effect(STATUS_EFFECT_VANGUARD) + CHECK_TICK + else + invoker.apply_status_effect(STATUS_EFFECT_VANGUARD) return TRUE diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index 9ada010732c..ca2d421e0fa 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -37,9 +37,11 @@ active_apc.update_icon() active_apc = null -/obj/machinery/computer/apc_control/attack_ai(mob/living/AI) //You already have APC access, cheater! - AI << "[src] does not support AI control." - return +/obj/machinery/computer/apc_control/attack_ai(mob/living/AI) + if(!IsAdminGhost(src)) + to_chat(AI,"[src] does not support AI control.") //You already have APC access, cheater! + return + ..(AI) /obj/machinery/computer/apc_control/proc/check_apc(obj/machinery/power/apc/APC) return APC.z == z && !APC.malfhack && !APC.aidisabled && !APC.emagged && !APC.stat && !istype(APC.area, /area/ai_monitored) && !APC.area.outdoors diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 3019528f8bb..da1950c041a 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -34,7 +34,6 @@ /obj/item/toy/redbutton = 2, /obj/item/toy/talking/owl = 2, /obj/item/toy/talking/griffin = 2, - /obj/item/toy/talking/skeleton = 2, /obj/item/weapon/coin/antagtoken = 2, /obj/item/stack/tile/fakespace/loaded = 2, /obj/item/stack/tile/fakepit/loaded = 2, diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index d446603fabb..c81900c1cdb 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -12,7 +12,7 @@ var/const/SAFETY_COOLDOWN = 100 var/icon_name = "grinder-o" var/blood = 0 var/eat_dir = WEST - var/amount_produced = 1 + var/amount_produced = 50 var/datum/material_container/materials var/crush_damage = 1000 var/eat_victim_items = TRUE @@ -40,9 +40,9 @@ var/const/SAFETY_COOLDOWN = 100 mat_mod = 2 * B.rating mat_mod *= 50000 for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) - amt_made = 25 * M.rating //% of materials salvaged + amt_made = 12.5 * M.rating //% of materials salvaged materials.max_amount = mat_mod - amount_produced = min(100, amt_made) + amount_produced = min(50, amt_made) + 50 /obj/machinery/recycler/examine(mob/user) ..() diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index 95afbfeb0c7..66c85a1784b 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -33,7 +33,7 @@ light_color = LIGHT_COLOR_BROWN -/obj/machinery/computer/slot_machine/New() +/obj/machinery/computer/slot_machine/Initialize() ..() jackpots = rand(1, 4) //false hope plays = rand(75, 200) @@ -47,9 +47,8 @@ toggle_reel_spin(0) for(var/cointype in typesof(/obj/item/weapon/coin)) - var/obj/item/weapon/coin/C = new cointype(src) - coinvalues["[cointype]"] = C.value - qdel(C) + var/obj/item/weapon/coin/C = cointype + coinvalues["[cointype]"] = initial(C.value) /obj/machinery/computer/slot_machine/Destroy() if(balance) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index d8f42849c04..696cc09ba47 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -528,6 +528,7 @@ if(icon_vend) //Show the vending animation if needed flick(icon_vend,src) new R.product_path(get_turf(src)) + feedback_add_details("vending_machine_usage","[R.product_path]|[src.type]") vend_ready = 1 return diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index b981b7da38d..d2c75e57cc1 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -84,153 +84,6 @@ start_landmarks_list -= src return ..() -//Costume spawner landmarks - -/obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears - - var/list/options = typesof(/obj/effect/landmark/costume) - var/PICK= options[rand(1,options.len)] - new PICK(src.loc) - qdel(src) - -//SUBCLASSES. Spawn a bunch of items and disappear likewise -/obj/effect/landmark/costume/chicken/New() - new /obj/item/clothing/suit/chickensuit(src.loc) - new /obj/item/clothing/head/chicken(src.loc) - new /obj/item/weapon/reagent_containers/food/snacks/egg(src.loc) - qdel(src) - -/obj/effect/landmark/costume/gladiator/New() - new /obj/item/clothing/under/gladiator(src.loc) - new /obj/item/clothing/head/helmet/gladiator(src.loc) - qdel(src) - -/obj/effect/landmark/costume/madscientist/New() - new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc) - new /obj/item/clothing/head/flatcap(src.loc) - new /obj/item/clothing/suit/toggle/labcoat/mad(src.loc) - qdel(src) - -/obj/effect/landmark/costume/elpresidente/New() - new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc) - new /obj/item/clothing/head/flatcap(src.loc) - new /obj/item/clothing/mask/cigarette/cigar/havana(src.loc) - new /obj/item/clothing/shoes/jackboots(src.loc) - qdel(src) - -/obj/effect/landmark/costume/nyangirl/New() - new /obj/item/clothing/under/schoolgirl(src.loc) - new /obj/item/clothing/head/kitty(src.loc) - new /obj/item/clothing/glasses/sunglasses/blindfold(src.loc) - qdel(src) - -/obj/effect/landmark/costume/maid/New() - new /obj/item/clothing/under/skirt/black(src.loc) - var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears ) - new CHOICE(src.loc) - new /obj/item/clothing/glasses/sunglasses/blindfold(src.loc) - qdel(src) - -/obj/effect/landmark/costume/butler/New() - new /obj/item/clothing/tie/waistcoat(src.loc) - new /obj/item/clothing/under/suit_jacket(src.loc) - new /obj/item/clothing/head/that(src.loc) - qdel(src) - -/obj/effect/landmark/costume/highlander/New() - new /obj/item/clothing/under/kilt(src.loc) - new /obj/item/clothing/head/beret(src.loc) - qdel(src) - -/obj/effect/landmark/costume/prig/New() - new /obj/item/clothing/tie/waistcoat(src.loc) - new /obj/item/clothing/glasses/monocle(src.loc) - var/CHOICE= pick( /obj/item/clothing/head/bowler, /obj/item/clothing/head/that) - new CHOICE(src.loc) - new /obj/item/clothing/shoes/sneakers/black(src.loc) - new /obj/item/weapon/cane(src.loc) - new /obj/item/clothing/under/sl_suit(src.loc) - new /obj/item/clothing/mask/fakemoustache(src.loc) - qdel(src) - -/obj/effect/landmark/costume/plaguedoctor/New() - new /obj/item/clothing/suit/bio_suit/plaguedoctorsuit(src.loc) - new /obj/item/clothing/head/plaguedoctorhat(src.loc) - new /obj/item/clothing/mask/gas/plaguedoctor(src.loc) - qdel(src) - -/obj/effect/landmark/costume/nightowl/New() - new /obj/item/clothing/suit/toggle/owlwings(src.loc) - new /obj/item/clothing/under/owl(src.loc) - new /obj/item/clothing/mask/gas/owl_mask(src.loc) - qdel(src) - -/obj/effect/landmark/costume/thegriffin/New() - new /obj/item/clothing/suit/toggle/owlwings/griffinwings(src.loc) - new /obj/item/clothing/shoes/griffin(src.loc) - new /obj/item/clothing/under/griffin(src.loc) - new /obj/item/clothing/head/griffin(src.loc) - qdel(src) - -/obj/effect/landmark/costume/waiter/New() - new /obj/item/clothing/under/waiter(src.loc) - var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears) - new CHOICE(src.loc) - new /obj/item/clothing/suit/apron(src.loc) - qdel(src) - -/obj/effect/landmark/costume/pirate/New() - new /obj/item/clothing/under/pirate(src.loc) - new /obj/item/clothing/suit/pirate(src.loc) - var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana ) - new CHOICE(src.loc) - new /obj/item/clothing/glasses/eyepatch(src.loc) - qdel(src) - -/obj/effect/landmark/costume/commie/New() - new /obj/item/clothing/under/soviet(src.loc) - new /obj/item/clothing/head/ushanka(src.loc) - qdel(src) - -/obj/effect/landmark/costume/imperium_monk/New() - new /obj/item/clothing/suit/imperium_monk(src.loc) - if (prob(25)) - new /obj/item/clothing/mask/gas/cyborg(src.loc) - qdel(src) - -/obj/effect/landmark/costume/holiday_priest/New() - new /obj/item/clothing/suit/holidaypriest(src.loc) - qdel(src) - -/obj/effect/landmark/costume/marisawizard/fake/New() - new /obj/item/clothing/shoes/sandal/marisa(src.loc) - new /obj/item/clothing/head/wizard/marisa/fake(src.loc) - new/obj/item/clothing/suit/wizrobe/marisa/fake(src.loc) - qdel(src) - -/obj/effect/landmark/costume/cutewitch/New() - new /obj/item/clothing/under/sundress(src.loc) - new /obj/item/clothing/head/witchwig(src.loc) - new /obj/item/weapon/staff/broom(src.loc) - qdel(src) - -/obj/effect/landmark/costume/fakewizard/New() - new /obj/item/clothing/shoes/sandal(src.loc) - new /obj/item/clothing/suit/wizrobe/fake(src.loc) - new /obj/item/clothing/head/wizard/fake(src.loc) - new /obj/item/weapon/staff/(src.loc) - qdel(src) - -/obj/effect/landmark/costume/sexyclown/New() - new /obj/item/clothing/mask/gas/sexyclown(src.loc) - new /obj/item/clothing/under/rank/clown/sexy(src.loc) - qdel(src) - -/obj/effect/landmark/costume/sexymime/New() - new /obj/item/clothing/mask/gas/sexymime(src.loc) - new /obj/item/clothing/under/sexymime(src.loc) - qdel(src) - //Department Security spawns /obj/effect/landmark/start/depsec diff --git a/code/game/objects/effects/spawners/bundle.dm b/code/game/objects/effects/spawners/bundle.dm new file mode 100644 index 00000000000..c272c383e98 --- /dev/null +++ b/code/game/objects/effects/spawners/bundle.dm @@ -0,0 +1,170 @@ +/obj/effect/spawner/bundle + name = "bundle spawner" + icon = 'icons/mob/screen_gen.dmi' + icon_state = "x2" + color = "#00FF00" + + var/list/items + +/obj/effect/spawner/bundle/Initialize(mapload) + ..() + if(items && items.len) + var/turf/T = get_turf(src) + for(var/path in items) + new path(T) + qdel(src) + +/obj/effect/spawner/bundle/costume/chicken + name = "chicken costume spawner" + items = list( + /obj/item/clothing/suit/chickensuit, + /obj/item/clothing/head/chicken, + /obj/item/weapon/reagent_containers/food/snacks/egg) + +/obj/effect/spawner/bundle/costume/gladiator + name = "gladitator costume spawner" + items = list( + /obj/item/clothing/under/gladiator, + /obj/item/clothing/head/helmet/gladiator) + +/obj/effect/spawner/bundle/costume/madscientist + name = "mad scientist costume spawner" + items = list( + /obj/item/clothing/under/gimmick/rank/captain/suit, + /obj/item/clothing/head/flatcap, + /obj/item/clothing/suit/toggle/labcoat/mad) + +/obj/effect/spawner/bundle/costume/elpresidente + name = "el presidente costume spawner" + items = list( + /obj/item/clothing/under/gimmick/rank/captain/suit, + /obj/item/clothing/head/flatcap, + /obj/item/clothing/mask/cigarette/cigar/havana, + /obj/item/clothing/shoes/jackboots) + +/obj/effect/spawner/bundle/costume/nyangirl + name = "nyangirl costume spawner" + items = list( + /obj/item/clothing/under/schoolgirl, + /obj/item/clothing/head/kitty, + /obj/item/clothing/glasses/sunglasses/blindfold) + +/obj/effect/spawner/bundle/costume/maid + name = "maid costume spawner" + items = list( + /obj/item/clothing/under/skirt/black, + /obj/effect/spawner/lootdrop/minor/beret_or_rabbitears, + /obj/item/clothing/glasses/sunglasses/blindfold) + + +/obj/effect/spawner/bundle/costume/butler + name = "butler costume spawner" + items = list( + /obj/item/clothing/tie/waistcoat, + /obj/item/clothing/under/suit_jacket, + /obj/item/clothing/head/that) + +/obj/effect/spawner/bundle/costume/highlander + name = "highlander costume spawner" + items = list( + /obj/item/clothing/under/kilt, + /obj/item/clothing/head/beret) + +/obj/effect/spawner/bundle/costume/prig + name = "prig costume spawner" + items = list( + /obj/item/clothing/tie/waistcoat, + /obj/item/clothing/glasses/monocle, + /obj/effect/spawner/lootdrop/minor/bowler_or_that, + /obj/item/clothing/shoes/sneakers/black, + /obj/item/weapon/cane, + /obj/item/clothing/under/sl_suit, + /obj/item/clothing/mask/fakemoustache) + +/obj/effect/spawner/bundle/costume/plaguedoctor + name = "plague doctor costume spawner" + items = list( + /obj/item/clothing/suit/bio_suit/plaguedoctorsuit, + /obj/item/clothing/head/plaguedoctorhat, + /obj/item/clothing/mask/gas/plaguedoctor) + +/obj/effect/spawner/bundle/costume/nightowl + name = "night owl costume spawner" + items = list( + /obj/item/clothing/suit/toggle/owlwings, + /obj/item/clothing/under/owl, + /obj/item/clothing/mask/gas/owl_mask) + +/obj/effect/spawner/bundle/costume/griffin + name = "griffin costume spawner" + items = list( + /obj/item/clothing/suit/toggle/owlwings/griffinwings, + /obj/item/clothing/shoes/griffin, + /obj/item/clothing/under/griffin, + /obj/item/clothing/head/griffin) + +/obj/effect/spawner/bundle/costume/waiter + name = "waiter costume spawner" + items = list( + /obj/item/clothing/under/waiter, + /obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, + /obj/item/clothing/suit/apron) + +/obj/effect/spawner/bundle/costume/pirate + name = "pirate costume spawner" + items = list( + /obj/item/clothing/under/pirate, + /obj/item/clothing/suit/pirate, + /obj/effect/spawner/lootdrop/minor/pirate_or_bandana, + /obj/item/clothing/glasses/eyepatch) + +/obj/effect/spawner/bundle/costume/commie + name = "commie costume spawner" + items = list( + /obj/item/clothing/under/soviet, + /obj/item/clothing/head/ushanka) + +/obj/effect/spawner/bundle/costume/imperium_monk + name = "imperium monk costume spawner" + items = list( + /obj/item/clothing/suit/imperium_monk, + /obj/effect/spawner/lootdrop/minor/twentyfive_percent_cyborg_mask) + +/obj/effect/spawner/bundle/costume/holiday_priest + name = "holiday priest costume spawner" + items = list( + /obj/item/clothing/suit/holidaypriest) + +/obj/effect/spawner/bundle/costume/marisawizard + name = "marisa wizard costume spawner" + items = list( + /obj/item/clothing/shoes/sandal/marisa, + /obj/item/clothing/head/wizard/marisa/fake, + /obj/item/clothing/suit/wizrobe/marisa/fake) + +/obj/effect/spawner/bundle/costume/cutewitch + name = "cute witch costume spawner" + items = list( + /obj/item/clothing/under/sundress, + /obj/item/clothing/head/witchwig, + /obj/item/weapon/staff/broom) + +/obj/effect/spawner/bundle/costume/wizard + name = "wizard costume spawner" + items = list( + /obj/item/clothing/shoes/sandal, + /obj/item/clothing/suit/wizrobe/fake, + /obj/item/clothing/head/wizard/fake, + /obj/item/weapon/staff) + +/obj/effect/spawner/bundle/costume/sexyclown + name = "sexy clown costume spawner" + items = list( + /obj/item/clothing/mask/gas/sexyclown, + /obj/item/clothing/under/rank/clown/sexy) + +/obj/effect/spawner/bundle/costume/sexymime + name = "sexy mime costume spawner" + items = list( + /obj/item/clothing/mask/gas/sexymime, + /obj/item/clothing/under/sexymime) diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 2b2db8b172a..2118edb57c8 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -3,24 +3,27 @@ icon_state = "x2" color = "#00FF00" var/lootcount = 1 //how many items will be spawned - var/lootdoubles = 1 //if the same item can be spawned twice + var/lootdoubles = TRUE //if the same item can be spawned twice var/list/loot //a list of possible items to spawn e.g. list(/obj/item, /obj/structure, /obj/effect) -/obj/effect/spawner/lootdrop/New() +/obj/effect/spawner/lootdrop/Initialize(mapload) + ..() + if(loot && loot.len) - for(var/i = lootcount, i > 0, i--) - if(!loot.len) break + var/turf/T = get_turf(src) + while(lootcount && loot.len) var/lootspawn = pickweight(loot) if(!lootdoubles) loot.Remove(lootspawn) if(lootspawn) - new lootspawn(get_turf(src)) + new lootspawn(T) + lootcount-- qdel(src) /obj/effect/spawner/lootdrop/armory_contraband name = "armory contraband gun spawner" - lootdoubles = 0 + lootdoubles = FALSE loot = list( /obj/item/weapon/gun/ballistic/automatic/pistol = 8, @@ -144,7 +147,7 @@ /obj/item/weapon/wirecutters = 1, /obj/item/weapon/wrench = 4, /obj/item/weapon/relic = 3, - /obj/item/weaponcrafting/reciever = 2, + /obj/item/weaponcrafting/receiver = 2, /obj/item/clothing/head/cone = 2, /obj/item/weapon/grenade/smokebomb = 2, /obj/item/device/geiger_counter = 3, @@ -165,7 +168,7 @@ /obj/effect/spawner/lootdrop/crate_spawner name = "lootcrate spawner" //USE PROMO CODE "SELLOUT" FOR 20% OFF! - lootdoubles = 0 + lootdoubles = FALSE loot = list( /obj/structure/closet/crate/secure/loot = 20, @@ -194,3 +197,44 @@ loot = list( /obj/effect/decal/remains/xeno = 49, /obj/effect/spawner/xeno_egg_delivery = 1) + +/obj/effect/spawner/lootdrop/costume + name = "random costume spawner" + +/obj/effect/spawner/lootdrop/costume/Initialize() + loot = list() + for(var/path in subtypesof(/obj/effect/spawner/bundle/costume)) + loot[path] = TRUE + ..() + +// Minor lootdrops follow + +/obj/effect/spawner/lootdrop/minor/beret_or_rabbitears + name = "beret or rabbit ears spawner" + loot = list( + /obj/item/clothing/head/beret = 1, + /obj/item/clothing/head/rabbitears = 1) + +/obj/effect/spawner/lootdrop/minor/bowler_or_that + name = "bowler or top hat spawner" + loot = list( + /obj/item/clothing/head/bowler = 1, + /obj/item/clothing/head/that = 1) + +/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears + name = "kitty ears or rabbit ears spawner" + loot = list( + /obj/item/clothing/head/kitty = 1, + /obj/item/clothing/head/rabbitears = 1) + +/obj/effect/spawner/lootdrop/minor/pirate_or_bandana + name = "pirate hat or bandana spawner" + loot = list( + /obj/item/clothing/head/pirate = 1, + /obj/item/clothing/head/bandana = 1) + +/obj/effect/spawner/lootdrop/minor/twentyfive_percent_cyborg_mask + name = "25% cyborg mask spawner" + loot = list( + /obj/item/clothing/mask/gas/cyborg = 25, + "" = 75) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 732206e93ce..c6c940c623b 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -721,7 +721,7 @@ var/global/list/obj/item/device/pda/PDAs = list() var/mob/M = loc M.put_in_hands(inserted_item) else - inserted_item.forceMove(loc) + inserted_item.forceMove(get_turf(src)) to_chat(usr, "You remove \the [inserted_item] from \the [src].") inserted_item = null update_icon() diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 56fc3f30477..faa45a7e55f 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -300,7 +300,9 @@ return -/obj/item/device/radio/headset/AltClick(mob/user) +/obj/item/device/radio/headset/AltClick(mob/living/user) + if(!istype(user) || !Adjacent(user) || user.incapacitated()) + return if (command) use_command = !use_command - to_chat(user, "You toggle high-volume mode.") \ No newline at end of file + to_chat(user, "You toggle high-volume mode [use_command ? "on" : "off"].") \ No newline at end of file diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 8f5cbf5e75e..a2218658651 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -554,81 +554,6 @@ chattering = TRUE phomeme = "griffin" -/obj/item/toy/talking/skeleton - name = "skeleton action figure" - desc = "An action figure modeled after 'Oh-cee', the original content \ - skeleton.\nNot suitable for infants or assistants under 36 months \ - of age." - icon_state = "skeletonprize" - attack_verb = list("boned", "dunked on", "worked down to the bone") - chattering = TRUE - - var/list/regular_messages = list( - "Why was the skeleton such a bad liar? \ - Because you can see right through him!", - "When does a skeleton laugh? When something tickles his funny bone!", - "Why couldn't the skeleton win the beauty contest? \ - Because he had no body!", - "What do you call a skeleton in the winter? A numbskull!", - "What did the skeleton say before eating? Bone appetit!", - "What type of art do skeletons like? Skulltures!", - "What instrument do skeletons play? The trom-bone!", - "Why are skeletons always so calm? \ - Because nothing gets under their skin!", - "How did the skeleton know it was going to rain? \ - He could feel it in his bones.", - "Why did the skeleton go to the hospital? \ - To get his ghoul stones removed.", - "Why can't skeletons play music in churches? \ - Because they have no organs.", - "There's a skeleton inside everyone! Except slime people I guess...", - "The birds are too busy to notice me acting in the shadows!", - "Giraffes have the same number of bones in their necks as humans. \ - You should never trust a giraffe.", - "When I meet a dog in the street, I always offer it a bone!", - "In corsetry, a bone is one of the rigid parts of a corset that \ - forms its frame and gives it rigidity.", - "A person who plays the trombone is called a trombonist or \ - trombone player.", - "Remember, compromise is for those without backbones!", - "If you go up to the captain and say the word 'bone' repeatedly, \ - eventually he'll brig you.", - "Yo ho ho, shiver me bones!", - "So what you're saying is, you only love me for my legs?", - "You will never again find socks that match!", - "BONES! BONES! BONES!", - "Bones absorb x-rays, which is why radiation gives you superpowers.", - "Oh-cee! The ORIGINAL CONTENT SKELETON. Suitable for ages 36 months \ - and up.", - "I just don't have the heart to judge you.", - "I don't have the stomach for this.", - "I'm a fighter, not a liver.", - "How can I see without eyeballs?", - "Ask your parents about 'boning', before you get pregnant.", - "Remember, a dog is for life, not just for christmas.") - -/obj/item/toy/talking/skeleton/suicide_act(mob/user) - user.visible_message("[user] is trying to commit suicide with [src].") - - if(ishuman(user)) - var/mob/living/carbon/human/H = user - H.set_species(/datum/species/skeleton) - - toy_talk(user, "RATTLE ME BONES") - - user.Stun(5) - sleep(20) - return OXYLOSS - -/obj/item/toy/talking/skeleton/generate_messages() - return list(pick(regular_messages)) - -/obj/item/toy/talking/skeleton/toy_talk(user, message) - phomeme = pick("sans", "papyrus") - - span = "danger [phomeme]" - ..() - /* || A Deck of Cards for playing various games of chance || */ diff --git a/code/game/objects/items/weapons/implants/implant_explosive.dm b/code/game/objects/items/weapons/implants/implant_explosive.dm index 9e93d3fb3eb..c6e558533a7 100644 --- a/code/game/objects/items/weapons/implants/implant_explosive.dm +++ b/code/game/objects/items/weapons/implants/implant_explosive.dm @@ -3,10 +3,13 @@ desc = "And boom goes the weasel." icon_state = "explosive" origin_tech = "materials=2;combat=3;biotech=4;syndicate=4" + actions_types = list(/datum/action/item_action/explosive_implant) + // Explosive implant action is always availible. var/weak = 2 var/medium = 0.8 var/heavy = 0.4 var/delay = 7 + var/popup = FALSE // is the DOUWANNABLOWUP window open? /obj/item/weapon/implant/explosive/get_data() var/dat = {"Implant Specifications:
@@ -27,8 +30,12 @@ /obj/item/weapon/implant/explosive/activate(cause) if(!cause || !imp_in) return 0 - if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your [name]? This will cause you to explode!", "[name] Confirmation", "Yes", "No") != "Yes") - return 0 + if(cause == "action_button" || !popup) + popup = TRUE + var/response = alert(imp_in, "Are you sure you want to activate your [name]? This will cause you to explode!", "[name] Confirmation", "Yes", "No") + popup = FALSE + if(response == "No") + return 0 heavy = round(heavy) medium = round(medium) weak = round(weak) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index ba82c6177d1..fc221ea968d 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -81,7 +81,11 @@ /obj/structure/flora/tree/jungle name = "tree" + icon_state = "tree" desc = "It's seriously hampering your view of the jungle." + icon = 'icons/obj/flora/jungletrees.dmi' + pixel_x = -48 + pixel_y = -20 /obj/structure/flora/tree/jungle/Initialize() icon_state = "[icon_state][rand(1, 3)]" @@ -335,12 +339,13 @@ /obj/structure/flora/rock/jungle icon_state = "pile of rocks" desc = "A pile of rocks." + icon_state = "rocks" icon = 'icons/obj/flora/jungleflora.dmi' density = FALSE /obj/structure/flora/rock/jungle/Initialize() ..() - icon_state = "[icon_state][rand(1,5)]" + icon_state = "[initial(icon_state)][rand(1,5)]" //Jungle bushes @@ -364,9 +369,17 @@ icon_state = "bush" icon = 'icons/obj/flora/largejungleflora.dmi' pixel_x = -16 + pixel_y = -12 layer = ABOVE_ALL_MOB_LAYER /obj/structure/flora/rock/pile/largejungle name = "rocks" + icon_state = "rocks" icon = 'icons/obj/flora/largejungleflora.dmi' density = FALSE + pixel_x = -16 + pixel_y = -16 + +/obj/structure/flora/rock/jungle/Initialize() + ..() + icon_state = "[initial(icon_state)][rand(1,3)]" \ No newline at end of file diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 312f6c32dcb..3138c7cbcc6 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -9,7 +9,7 @@ obj_integrity = 50 max_integrity = 50 layer = LATTICE_LAYER //under pipes - var/obj/item/stack/rods/stored + var/number_of_rods = 1 canSmoothWith = list(/obj/structure/lattice, /turf/open/floor, /turf/closed/wall, @@ -17,26 +17,20 @@ smooth = SMOOTH_MORE // flags = CONDUCT -/obj/structure/lattice/New() +/obj/structure/lattice/Initialize(mapload) ..() - for(var/obj/structure/lattice/LAT in src.loc) + for(var/obj/structure/lattice/LAT in loc) if(LAT != src) qdel(LAT) - stored = new/obj/item/stack/rods(src) - -/obj/structure/lattice/Destroy() - qdel(stored) - stored = null - return ..() /obj/structure/lattice/blob_act(obj/structure/blob/B) return /obj/structure/lattice/ratvar_act() if(IsEven(x + y)) - new/obj/structure/lattice/clockwork(loc) + new /obj/structure/lattice/clockwork(loc) else - new/obj/structure/lattice/clockwork/large(loc) + new /obj/structure/lattice/clockwork/large(loc) /obj/structure/lattice/attackby(obj/item/C, mob/user, params) if(istype(C, /obj/item/weapon/wirecutters)) @@ -48,8 +42,7 @@ /obj/structure/lattice/deconstruct(disassembled = TRUE) if(!(flags & NODECONSTRUCT)) - stored.forceMove(get_turf(src)) - stored = null + new /obj/item/stack/rods(get_turf(src), amount=number_of_rods) qdel(src) /obj/structure/lattice/singularity_pull(S, current_size) @@ -61,15 +54,15 @@ desc = "A lightweight support lattice. These hold the Justicar's station together." icon = 'icons/obj/smooth_structures/lattice_clockwork.dmi' -/obj/structure/lattice/clockwork/New() +/obj/structure/lattice/clockwork/Initialize(mapload) ..() ratvar_act() /obj/structure/lattice/clockwork/ratvar_act() if(IsOdd(x+y)) - new/obj/structure/lattice/clockwork/large(loc) + new /obj/structure/lattice/clockwork/large(loc) // deletes old one -/obj/structure/lattice/clockwork/large/New() +/obj/structure/lattice/clockwork/large/Initialize(mapload) ..() icon = 'icons/obj/smooth_structures/lattice_clockwork_large.dmi' pixel_x = -9 @@ -77,7 +70,7 @@ /obj/structure/lattice/clockwork/large/ratvar_act() if(IsEven(x + y)) - new/obj/structure/lattice/clockwork(loc) + new /obj/structure/lattice/clockwork(loc) /obj/structure/lattice/catwalk name = "catwalk" @@ -87,13 +80,12 @@ smooth = SMOOTH_TRUE canSmoothWith = null -/obj/structure/lattice/catwalk/New() +/obj/structure/lattice/catwalk/Initialize(mapload) ..() - stored.amount++ - stored.update_icon() + number_of_rods++ /obj/structure/lattice/catwalk/ratvar_act() - new/obj/structure/lattice/catwalk/clockwork(loc) + new /obj/structure/lattice/catwalk/clockwork(loc) /obj/structure/lattice/catwalk/Move() var/turf/T = loc @@ -111,7 +103,7 @@ name = "clockwork catwalk" icon = 'icons/obj/smooth_structures/catwalk_clockwork.dmi' -/obj/structure/lattice/catwalk/clockwork/New() +/obj/structure/lattice/catwalk/clockwork/Initialize(mapload) ..() new /obj/effect/overlay/temp/ratvar/floor/catwalk(loc) new /obj/effect/overlay/temp/ratvar/beam/catwalk(loc) diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm index 2b32864aecf..90500f14db7 100644 --- a/code/game/objects/structures/traps.dm +++ b/code/game/objects/structures/traps.dm @@ -1,5 +1,5 @@ /obj/structure/trap - name = "IT'S A TARP" + name = "IT'S A TRAP" desc = "stepping on me is a guaranteed bad day" icon = 'icons/obj/hand_of_god_structures.dmi' icon_state = "trap" diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 9a6c368ef92..fc8b7e21bc7 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1592,7 +1592,6 @@ /obj/item/toy/talking/AI, /obj/item/toy/talking/owl, /obj/item/toy/talking/griffin, - /obj/item/toy/talking/skeleton, /obj/item/toy/nuke, /obj/item/toy/minimeteor, /obj/item/toy/carpplushie, diff --git a/code/modules/crafting/guncrafting.dm b/code/modules/crafting/guncrafting.dm index eba8c301972..d96be9be106 100644 --- a/code/modules/crafting/guncrafting.dm +++ b/code/modules/crafting/guncrafting.dm @@ -2,11 +2,11 @@ // PARTS // -/obj/item/weaponcrafting/reciever +/obj/item/weaponcrafting/receiver name = "modular receiver" desc = "A prototype modular receiver and trigger assembly for a firearm." icon = 'icons/obj/improvised.dmi' - icon_state = "reciever" + icon_state = "receiver" /obj/item/weaponcrafting/stock name = "rifle stock" diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index c9e71abf0bb..d1a663cfb2a 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -254,7 +254,7 @@ /datum/crafting_recipe/ishotgun name = "Improvised Shotgun" result = /obj/item/weapon/gun/ballistic/revolver/doublebarrel/improvised - reqs = list(/obj/item/weaponcrafting/reciever = 1, + reqs = list(/obj/item/weaponcrafting/receiver = 1, /obj/item/pipe = 1, /obj/item/weaponcrafting/stock = 1, /obj/item/stack/packageWrap = 5) diff --git a/code/modules/library/soapstone.dm b/code/modules/library/soapstone.dm index ba81f65344d..424f3756c0c 100644 --- a/code/modules/library/soapstone.dm +++ b/code/modules/library/soapstone.dm @@ -192,10 +192,14 @@ var/turf/T = get_turf(src) data["x"] = T.x data["y"] = T.y + data["z"] = T.z data["like_keys"] = like_keys data["dislike_keys"] = dislike_keys /obj/structure/chisel_message/proc/unpack(list/data) + if(!islist(data)) + return + hidden_message = data["hidden_message"] creator_name = data["creator_name"] creator_key = data["creator_key"] @@ -209,8 +213,10 @@ var/x = data["x"] var/y = data["y"] - var/turf/newloc = locate(x, y, ZLEVEL_STATION) - forceMove(newloc) + var/z = data["z"] + var/turf/newloc = locate(x, y, z) + if(isturf(newloc)) + forceMove(newloc) update_icon() /obj/structure/chisel_message/examine(mob/user) diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index aec6d00b603..f061fee1d76 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -270,7 +270,7 @@ explosion(src.loc,-1,1,3,adminlog = notify_admins) qdel(src) -/obj/item/weapon/ore/New() +/obj/item/weapon/ore/Initialize() ..() pixel_x = rand(0,16)-8 pixel_y = rand(0,8)-8 @@ -297,68 +297,73 @@ var/cooldown = 0 var/value = 1 -/obj/item/weapon/coin/New() +/obj/item/weapon/coin/Initialize() ..() pixel_x = rand(0,16)-8 pixel_y = rand(0,8)-8 - icon_state = "coin_[cmineral]_heads" - if(cmineral) - name = "[cmineral] coin" - /obj/item/weapon/coin/examine(mob/user) ..() if(value) to_chat(user, "It's worth [value] credit\s.") /obj/item/weapon/coin/gold + name = "gold coin" cmineral = "gold" icon_state = "coin_gold_heads" value = 50 materials = list(MAT_GOLD = MINERAL_MATERIAL_AMOUNT*0.2) /obj/item/weapon/coin/silver + name = "silver coin" cmineral = "silver" icon_state = "coin_silver_heads" value = 20 materials = list(MAT_SILVER = MINERAL_MATERIAL_AMOUNT*0.2) /obj/item/weapon/coin/diamond + name = "diamond coin" cmineral = "diamond" icon_state = "coin_diamond_heads" value = 500 materials = list(MAT_DIAMOND = MINERAL_MATERIAL_AMOUNT*0.2) /obj/item/weapon/coin/iron + name = "iron coin" cmineral = "iron" icon_state = "coin_iron_heads" value = 1 materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT*0.2) /obj/item/weapon/coin/plasma + name = "plasma coin" cmineral = "plasma" icon_state = "coin_plasma_heads" value = 100 materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT*0.2) /obj/item/weapon/coin/uranium + name = "uranium coin" cmineral = "uranium" icon_state = "coin_uranium_heads" value = 80 materials = list(MAT_URANIUM = MINERAL_MATERIAL_AMOUNT*0.2) /obj/item/weapon/coin/clown + name = "bananium coin" cmineral = "bananium" icon_state = "coin_bananium_heads" value = 1000 //makes the clown cry materials = list(MAT_BANANIUM = MINERAL_MATERIAL_AMOUNT*0.2) /obj/item/weapon/coin/adamantine + name = "adamantine coin" cmineral = "adamantine" icon_state = "coin_adamantine_heads" value = 1500 /obj/item/weapon/coin/mythril + name = "mythril coin" cmineral = "mythril" icon_state = "coin_mythril_heads" value = 3000 @@ -379,9 +384,6 @@ sideslist = list("valid", "salad") value = 0 -/obj/item/weapon/coin/antagtoken/New() - return - /obj/item/weapon/coin/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/CC = W @@ -411,12 +413,12 @@ else ..() /obj/item/weapon/coin/attack_self(mob/user) - if(cooldown < world.time - 15) + if(cooldown > world.time) if(string_attached) //does the coin have a wire attached to_chat(user, "The coin won't flip very well with something attached!" ) return //do not flip the coin var/coinflip = pick(sideslist) - cooldown = world.time + cooldown = world.time + 15 flick("coin_[cmineral]_flip", src) icon_state = "coin_[cmineral]_[coinflip]" playsound(user.loc, 'sound/items/coinflip.ogg', 50, 1) diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index c368d75ec5d..45007140dc4 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -7,6 +7,8 @@ species_traits = list(MUTCOLORS,EYECOLOR,LIPS) mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs") mutant_organs = list(/obj/item/organ/tongue/lizard) + coldmod = 1.5 + heatmod = 0.67 default_features = list("mcolor" = "0F0", "tail" = "Smooth", "snout" = "Round", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs") attack_verb = "slash" attack_sound = 'sound/weapons/slash.ogg' @@ -38,4 +40,4 @@ name = "Ash Walker" id = "ashlizard" limbs_id = "lizard" - species_traits = list(MUTCOLORS,EYECOLOR,LIPS,NOBREATH,NOGUNS,DIGITIGRADE) \ No newline at end of file + species_traits = list(MUTCOLORS,EYECOLOR,LIPS,NOBREATH,NOGUNS,DIGITIGRADE) diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index dfc44b4eb4f..e940081db39 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -164,7 +164,7 @@ M.emote("scream") /datum/reagent/blob/blazing_oil/extinguish_reaction(obj/structure/blob/B) - B.take_damage(rand(1, 3), BURN, "energy") + B.take_damage(1.5, BURN, "energy") /datum/reagent/blob/blazing_oil/damage_reaction(obj/structure/blob/B, damage, damage_type, damage_flag) if(damage_type == BURN && damage_flag != "energy") diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 040997da874..28b5a893a98 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -616,6 +616,14 @@ build_path = /obj/item/weapon/restraints/handcuffs category = list("hacked", "Security") +/datum/design/receiver + name = "Modular Receiver" + id = "reciever" + build_type = AUTOLATHE + materials = list(MAT_METAL = 15000) + build_path = /obj/item/weaponcrafting/receiver + category = list("hacked", "Security") + /datum/design/shotgun_slug name = "Shotgun slug" id = "shotgun_slug" diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 500f61beff4..80863259e85 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -177,16 +177,6 @@ build_path = /obj/item/weapon/gun/energy/wormhole_projector category = list("Weapons") -/datum/design/reciever - name = "Modular Receiver" - desc = "A prototype modular receiver and trigger assembly for a variety of firearms." - id = "reciever" - req_tech = list("combat" = 4, "materials" = 4) - build_type = PROTOLATHE - materials = list(MAT_METAL = 6500, MAT_SILVER = 500) - build_path = /obj/item/weaponcrafting/reciever - category = list("Weapons") - //WT550 Mags /datum/design/mag_oldsmg diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm index daca4d2ffea..686c54e3dd7 100644 --- a/code/modules/shuttle/arrivals.dm +++ b/code/modules/shuttle/arrivals.dm @@ -66,12 +66,12 @@ /obj/docking_port/mobile/arrivals/check() . = ..() - + if(perma_docked) if(mode != SHUTTLE_CALL) sound_played = FALSE mode = SHUTTLE_IDLE - else + else SendToStation() return @@ -79,7 +79,7 @@ if(!CheckTurfsPressure()) damaged = FALSE if(console) - console.say("Repairs complete, launching soon.") + console.say("Repairs complete, launching soon.") return //If this proc is high on the profiler add a cooldown to the stuff after this line @@ -93,7 +93,7 @@ if(mode != SHUTTLE_CALL) sound_played = FALSE mode = SHUTTLE_IDLE - else + else SendToStation() return @@ -130,7 +130,7 @@ var/dockTime = config.arrivals_shuttle_dock_window if(mode == SHUTTLE_CALL && timeLeft(1) > dockTime) if(console) - console.say(damaged ? "Initiating emergency docking for repairs!" : "Now approaching: [SSmapping.config.map_name].") + console.say(damaged ? "Initiating emergency docking for repairs!" : "Now approaching: [station_name()].") hyperspace_sound(HYPERSPACE_LAUNCH, areas) //for the new guy setTimer(dockTime) @@ -174,7 +174,7 @@ /obj/docking_port/mobile/arrivals/proc/RequireUndocked(mob/user) if(mode == SHUTTLE_CALL || damaged) return - + Launch(TRUE) user << "Calling your shuttle. One moment..." diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 6e84add5037..455eb38202c 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -651,10 +651,6 @@ if("papyrus") . |= SPAN_PAPYRUS -/obj/item/organ/tongue/bone/chatter - name = "chattering bone \"tongue\"" - chattering = TRUE - /obj/item/organ/tongue/robot name = "robotic voicebox" desc = "A voice synthesizer that can interface with organic lifeforms." diff --git a/html/changelog.html b/html/changelog.html index e6cb447c149..8194585f874 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,48 @@ -->
+

24 March 2017

+

BeeSting12 updated:

+ +

Cyberboss updated:

+ +

Fox McCloud updated:

+ +

Joan updated:

+ +

Penguaro updated:

+ +

coiax updated:

+ +

rock updated:

+ +

23 March 2017

Joan updated:

- -

20 January 2017

-

CoreOverload updated:

- -

Joan updated:

- -

MrStonedOne updated:

- -

Tofa01 updated:

- -

XDTM updated:

-
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 3767d2846e3..692780c9970 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -10301,3 +10301,41 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - tweak: Alt-clicking a command headset toggles HIGH VOLUME mode. coiax: - bugfix: A dead AI no longer counts as an "unconverted AI" for clockcult. +2017-03-24: + BeeSting12: + - bugfix: Auxiliary base maintenance airlock now requires the proper access. Sorry + greyshirts, no loot for you! + Cyberboss: + - tweak: The recycler's base reclaim rate has been buffed from 1% to 50%. Manipulator + upgrades now give +12.5% per level instead of +25% + - bugfix: You can now successfully remove a pen from a PDA while it's in a container + Fox McCloud: + - rscadd: Modular receiver removed from the protolathe to autolathe + - tweak: Modular receiver cost is now 15,000 metal + Joan: + - bugfix: Fixes structures being unable to go through spatial gateways. + - tweak: Blazing Oil blobs take 33% less damage from water. + Penguaro: + - rscadd: '[Meta] Replaced Power Monitoring Console in Engineering with Modular + Engineering Console' + - rscadd: '[Pubby] Replaced Power Monitoring Console in Engineering with Modular + Engineering Console' + - rscadd: '[Omega] Replaced Power Monitoring Console in Engineering with Modular + Engineering Console' + - rscadd: '[Omega] Added RD and Command Modular Consoles to Bridge' + - rscadd: '[Delta] Replaced Power Monitoring Console in Engineering with Modular + Engineering Console' + - rscadd: '[Delta] Replaced duplicate Atmospherics Monitoring Console in Atmo with + Modular Engineering Console' + coiax: + - rscadd: Destroying a lich's body does not destroy the lich permanently, provided + the phylactery is intact. + - rscadd: A lich will respawn three minutes after its death, provided the phylactery + is intact. + - rscadd: The Soul Bind spell is forgotten after cast, respawn is now automatic. + - rscdel: Stationloving objects like the nuke disk are not valid objects for a phylactery. + - rscadd: Explosive implants can always be triggered via action button, even if + unconscious. + rock: + - tweak: lizards are hurt slightly more by cold but less by heat. this does not + mean they are more resistant to being lasered, fortunately. diff --git a/html/changelogs/AutoChangeLog-pr-25360.yml b/html/changelogs/AutoChangeLog-pr-25360.yml deleted file mode 100644 index 47a960cbe39..00000000000 --- a/html/changelogs/AutoChangeLog-pr-25360.yml +++ /dev/null @@ -1,11 +0,0 @@ -author: "coiax" -delete-after: True -changes: - - rscadd: "Destroying a lich's body does not destroy the lich permanently, -provided the phylactery is intact." - - rscadd: "A lich will respawn three minutes after its death, provided the -phylactery is intact." - - rscadd: "The Soul Bind spell is forgotten after cast, respawn is now -automatic." - - rscdel: "Stationloving objects like the nuke disk are not valid objects for -a phylactery." diff --git a/icons/minimaps/BirdboatStation_1.png b/icons/minimaps/BirdboatStation_1.png deleted file mode 100644 index a6c1a4dd932..00000000000 Binary files a/icons/minimaps/BirdboatStation_1.png and /dev/null differ diff --git a/icons/minimaps/DreamStation_1.png b/icons/minimaps/DreamStation_1.png deleted file mode 100644 index 75ac12fec85..00000000000 Binary files a/icons/minimaps/DreamStation_1.png and /dev/null differ diff --git a/icons/minimaps/Efficiency Station_1.png b/icons/minimaps/Efficiency Station_1.png deleted file mode 100644 index 3c952a21493..00000000000 Binary files a/icons/minimaps/Efficiency Station_1.png and /dev/null differ diff --git a/icons/obj/flora/jungleflora.dmi b/icons/obj/flora/jungleflora.dmi index 02d21b7e51d..ba731e438a1 100644 Binary files a/icons/obj/flora/jungleflora.dmi and b/icons/obj/flora/jungleflora.dmi differ diff --git a/icons/obj/flora/jungletrees.dmi b/icons/obj/flora/jungletrees.dmi index 172feb9cc9a..461ac0b265f 100644 Binary files a/icons/obj/flora/jungletrees.dmi and b/icons/obj/flora/jungletrees.dmi differ diff --git a/icons/obj/flora/largejungleflora.dmi b/icons/obj/flora/largejungleflora.dmi index 04b8d94c9fe..bba0fd29f62 100644 Binary files a/icons/obj/flora/largejungleflora.dmi and b/icons/obj/flora/largejungleflora.dmi differ diff --git a/icons/obj/improvised.dmi b/icons/obj/improvised.dmi index 9c32333ae03..a6dfa330e8c 100644 Binary files a/icons/obj/improvised.dmi and b/icons/obj/improvised.dmi differ diff --git a/sound/chatter/papyrus_1.ogg b/sound/chatter/papyrus_1.ogg deleted file mode 100644 index ee595949684..00000000000 Binary files a/sound/chatter/papyrus_1.ogg and /dev/null differ diff --git a/sound/chatter/papyrus_10.ogg b/sound/chatter/papyrus_10.ogg deleted file mode 100644 index 8e1599ff905..00000000000 Binary files a/sound/chatter/papyrus_10.ogg and /dev/null differ diff --git a/sound/chatter/papyrus_2.ogg b/sound/chatter/papyrus_2.ogg deleted file mode 100644 index 6c22cb17847..00000000000 Binary files a/sound/chatter/papyrus_2.ogg and /dev/null differ diff --git a/sound/chatter/papyrus_3.ogg b/sound/chatter/papyrus_3.ogg deleted file mode 100644 index 799f78adc6b..00000000000 Binary files a/sound/chatter/papyrus_3.ogg and /dev/null differ diff --git a/sound/chatter/papyrus_4.ogg b/sound/chatter/papyrus_4.ogg deleted file mode 100644 index 8c401d3ec9d..00000000000 Binary files a/sound/chatter/papyrus_4.ogg and /dev/null differ diff --git a/sound/chatter/papyrus_5.ogg b/sound/chatter/papyrus_5.ogg deleted file mode 100644 index a6070313f91..00000000000 Binary files a/sound/chatter/papyrus_5.ogg and /dev/null differ diff --git a/sound/chatter/papyrus_6.ogg b/sound/chatter/papyrus_6.ogg deleted file mode 100644 index dade77ce1ab..00000000000 Binary files a/sound/chatter/papyrus_6.ogg and /dev/null differ diff --git a/sound/chatter/papyrus_7.ogg b/sound/chatter/papyrus_7.ogg deleted file mode 100644 index 6fb3d9c943c..00000000000 Binary files a/sound/chatter/papyrus_7.ogg and /dev/null differ diff --git a/sound/chatter/papyrus_8.ogg b/sound/chatter/papyrus_8.ogg deleted file mode 100644 index 11f602756cc..00000000000 Binary files a/sound/chatter/papyrus_8.ogg and /dev/null differ diff --git a/sound/chatter/papyrus_9.ogg b/sound/chatter/papyrus_9.ogg deleted file mode 100644 index cd0c03525ea..00000000000 Binary files a/sound/chatter/papyrus_9.ogg and /dev/null differ diff --git a/sound/chatter/sans_1.ogg b/sound/chatter/sans_1.ogg deleted file mode 100644 index 795ee2aab2c..00000000000 Binary files a/sound/chatter/sans_1.ogg and /dev/null differ diff --git a/sound/chatter/sans_10.ogg b/sound/chatter/sans_10.ogg deleted file mode 100644 index 916dfc05ca4..00000000000 Binary files a/sound/chatter/sans_10.ogg and /dev/null differ diff --git a/sound/chatter/sans_2.ogg b/sound/chatter/sans_2.ogg deleted file mode 100644 index 6a1ba578176..00000000000 Binary files a/sound/chatter/sans_2.ogg and /dev/null differ diff --git a/sound/chatter/sans_3.ogg b/sound/chatter/sans_3.ogg deleted file mode 100644 index 98d6016cda9..00000000000 Binary files a/sound/chatter/sans_3.ogg and /dev/null differ diff --git a/sound/chatter/sans_4.ogg b/sound/chatter/sans_4.ogg deleted file mode 100644 index 878bee1f667..00000000000 Binary files a/sound/chatter/sans_4.ogg and /dev/null differ diff --git a/sound/chatter/sans_5.ogg b/sound/chatter/sans_5.ogg deleted file mode 100644 index a59781f6364..00000000000 Binary files a/sound/chatter/sans_5.ogg and /dev/null differ diff --git a/sound/chatter/sans_6.ogg b/sound/chatter/sans_6.ogg deleted file mode 100644 index 9bad5fc6d52..00000000000 Binary files a/sound/chatter/sans_6.ogg and /dev/null differ diff --git a/sound/chatter/sans_7.ogg b/sound/chatter/sans_7.ogg deleted file mode 100644 index 172d253ab61..00000000000 Binary files a/sound/chatter/sans_7.ogg and /dev/null differ diff --git a/sound/chatter/sans_8.ogg b/sound/chatter/sans_8.ogg deleted file mode 100644 index e786f597caf..00000000000 Binary files a/sound/chatter/sans_8.ogg and /dev/null differ diff --git a/sound/chatter/sans_9.ogg b/sound/chatter/sans_9.ogg deleted file mode 100644 index 3901a032185..00000000000 Binary files a/sound/chatter/sans_9.ogg and /dev/null differ diff --git a/tgstation.dme b/tgstation.dme index 7161d2c4069..7505c6370de 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -669,6 +669,7 @@ #include "code\game\objects\effects\effect_system\effects_sparks.dm" #include "code\game\objects\effects\effect_system\effects_water.dm" #include "code\game\objects\effects\spawners\bombspawner.dm" +#include "code\game\objects\effects\spawners\bundle.dm" #include "code\game\objects\effects\spawners\gibspawner.dm" #include "code\game\objects\effects\spawners\lootdrop.dm" #include "code\game\objects\effects\spawners\structure.dm"