diff --git a/aurorastation.dme b/aurorastation.dme index 99c45680f56..1cce664522f 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -211,6 +211,7 @@ #include "code\datums\mind.dm" #include "code\datums\mixed.dm" #include "code\datums\modules.dm" +#include "code\datums\progressbar.dm" #include "code\datums\server_greeting.dm" #include "code\datums\statistic.dm" #include "code\datums\supplypacks.dm" diff --git a/code/__defines/subsystem-defines.dm b/code/__defines/subsystem-defines.dm index 74bc9365e27..e175903a945 100644 --- a/code/__defines/subsystem-defines.dm +++ b/code/__defines/subsystem-defines.dm @@ -28,6 +28,18 @@ #define TIMER_ID_NULL -1 // -- SSatoms stuff -- +// Technically this check will fail if someone loads a map mid-round, but that's not enabled right now. +#define SSATOMS_IS_PROBABLY_DONE (SSatoms.initialized == INITIALIZATION_INNEW_REGULAR) + +//type and all subtypes should always call Initialize in New() +#define INITIALIZE_IMMEDIATE(X) ##X/New(loc, ...){\ + ..();\ + if(!initialized) {\ + args[1] = TRUE;\ + SSatoms.InitAtom(src, args);\ + }\ +} + // SSatoms Initialization state. #define INITIALIZATION_INSSATOMS 0 //New should not call Initialize #define INITIALIZATION_INNEW_MAPLOAD 1 //New should call Initialize(TRUE) diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index 1c87aaa8690..d8b3176b969 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -646,110 +646,88 @@ proc/GaussRandRound(var/sigma,var/roundto) else return get_step(ref, base_dir) -/proc/do_mob(mob/user , mob/target, delay = 30, numticks = 10, needhand = TRUE, display_progress = TRUE) //This is quite an ugly solution but i refuse to use the old request system. +/proc/do_mob(mob/user, mob/target, delay = 30, needhand = TRUE, display_progress = TRUE, datum/callback/extra_checks) //This is quite an ugly solution but i refuse to use the old request system. if(!user || !target) return 0 + var/user_loc = user.loc var/target_loc = target.loc var/holding = user.get_active_hand() - var/delayfraction = round(delay/numticks) - var/image/progbar - if(user && user.client && (user.client.prefs.parallax_togs & PROGRESS_BARS) && display_progress) - if(!progbar) - progbar = image(icon = 'icons/effects/doafter_icon.dmi', loc = target, icon_state = "prog_bar_0") - progbar.layer = 21 - progbar.pixel_z = WORLD_ICON_SIZE - progbar.appearance_flags = RESET_TRANSFORM - for (var/i = 1 to numticks) - if(user && user.client && (user.client.prefs.parallax_togs & PROGRESS_BARS) && progbar && display_progress) - progbar.icon_state = "prog_bar_[round(((i / numticks) * 100), 10)]" - user.client.images |= progbar - sleep(delayfraction) - if(!user || !target) - if(progbar) - progbar.icon_state = "prog_bar_stopped" - spawn(2) - if(user && user.client) - user.client.images -= progbar - if(progbar) - progbar.loc = null - return 0 - if (user.loc != user_loc || target.loc != target_loc || (needhand && user.get_active_hand() != holding) || user.stat || user.weakened || user.stunned) - if(progbar) - progbar.icon_state = "prog_bar_stopped" - spawn(2) - if(user && user.client) - user.client.images -= progbar - if(progbar) - progbar.loc = null - return 0 - if(user && user.client) - user.client.images -= progbar - if(progbar) - progbar.loc = null - return 1 -/proc/do_after(mob/user as mob, delay as num, numticks = 10, needhand = TRUE, atom/movable/act_target = null, use_user_turf = FALSE, display_progress = TRUE) + var/datum/progressbar/progbar + if (display_progress && user.client && (user.client.prefs.parallax_togs & PROGRESS_BARS)) + progbar = new(user, delay, target) + + var/endtime = world.time + delay + var/starttime = world.time + + . = 1 + + while (world.time < endtime) + stoplag() + if (progbar) + progbar.update(world.time - starttime) + + if(QDELETED(user) || QDELETED(target)) + . = 0 + break + + if (user.loc != user_loc || target.loc != target_loc || (needhand && user.get_active_hand() != holding) || user.stat || user.weakened || user.stunned || (extra_checks && !extra_checks.Invoke())) + . = 0 + break + + if (progbar) + qdel(progbar) + +/proc/do_after(mob/user as mob, delay as num, needhand = TRUE, atom/movable/act_target = null, use_user_turf = FALSE, display_progress = TRUE, datum/callback/extra_checks) if(!user || isnull(user)) return 0 - if(numticks == 0) - return 0 if (!act_target) act_target = user - var/delayfraction = round(delay/numticks) var/Location if(use_user_turf) //When this is true, do_after() will check whether the user's turf has changed, rather than the user's loc. Location = get_turf(user) else Location = user.loc + var/holding = user.get_active_hand() - var/image/progbar - if(user && user.client && (user.client.prefs.parallax_togs & PROGRESS_BARS) && act_target && display_progress) - if(!progbar) - progbar = image(icon = 'icons/effects/doafter_icon.dmi', loc = act_target, icon_state = "prog_bar_0") - progbar.pixel_z = WORLD_ICON_SIZE - progbar.layer = 21 - progbar.appearance_flags = RESET_COLOR | RESET_TRANSFORM - for (var/i = 1 to numticks) - if(user && user.client && (user.client.prefs.parallax_togs & PROGRESS_BARS) && act_target && display_progress) - if(!progbar) - progbar = image(icon = 'icons/effects/doafter_icon.dmi', loc = act_target, icon_state = "prog_bar_0") - progbar.pixel_z = WORLD_ICON_SIZE - progbar.layer = 21 - progbar.appearance_flags = RESET_COLOR | RESET_TRANSFORM - progbar.icon_state = "prog_bar_[round(((i / numticks) * 100), 10)]" - user.client.images |= progbar - sleep(delayfraction) + + var/datum/progressbar/progbar + if (display_progress && user.client && (user.client.prefs.parallax_togs & PROGRESS_BARS)) + progbar = new(user, delay, act_target) + + var/endtime = world.time + delay + var/starttime = world.time + + . = 1 + + while (world.time < endtime) + stoplag() + if (progbar) + progbar.update(world.time - starttime) + var/user_loc_to_check if(use_user_turf) user_loc_to_check = get_turf(user) else user_loc_to_check = user.loc + if (!user || user.stat || user.weakened || user.stunned || !(user_loc_to_check == Location)) - if(progbar) - progbar.icon_state = "prog_bar_stopped" - spawn(2) - if(user && user.client) - user.client.images -= progbar - if(progbar) - progbar.loc = null - return 0 + . = 0 + break + if(needhand && !(user.get_active_hand() == holding)) //Sometimes you don't want the user to have to keep their active hand - if(progbar) - progbar.icon_state = "prog_bar_stopped" - spawn(2) - if(user && user.client) - user.client.images -= progbar - if(progbar) - progbar.loc = null - return 0 - if(user && user.client) - user.client.images -= progbar - if(progbar) - progbar.loc = null - return 1 + . = 0 + break + + if (extra_checks && !extra_checks.Invoke()) + . = 0 + break + + if (progbar) + qdel(progbar) //Takes: Anything that could possibly have variables and a varname to check. //Returns: 1 if found, 0 if not. diff --git a/code/controllers/subsystems/garbage.dm b/code/controllers/subsystems/garbage.dm index ee9f93ee9df..419620fd4ba 100644 --- a/code/controllers/subsystems/garbage.dm +++ b/code/controllers/subsystems/garbage.dm @@ -38,7 +38,7 @@ var/datum/controller/subsystem/garbage_collector/SSgarbage NEW_SS_GLOBAL(SSgarbage) /datum/controller/subsystem/garbage_collector/stat_entry(msg) - msg += "Q:[queue.len]|D:[delslasttick]|G:[gcedlasttick]|" + msg += "W:[tobequeued.len]|Q:[queue.len]|D:[delslasttick]|G:[gcedlasttick]|" msg += "GR:" if (!(delslasttick+gcedlasttick)) msg += "n/a|" @@ -66,12 +66,16 @@ var/datum/controller/subsystem/garbage_collector/SSgarbage var/list/tobequeued = src.tobequeued var/starttime = world.time var/starttimeofday = world.timeofday - while(tobequeued.len && starttime == world.time && starttimeofday == world.timeofday) + var/idex = 1 + while((tobequeued.len - (idex - 1)) && starttime == world.time && starttimeofday == world.timeofday) if (MC_TICK_CHECK) break - var/ref = tobequeued[1] + var/ref = tobequeued[idex] + tobequeued[idex++] = null // Clear this ref to assist hard deletes in Queue(). Queue(ref) - tobequeued.Cut(1, 2) + + if (idex > 1) + tobequeued.Cut(1, idex) /datum/controller/subsystem/garbage_collector/proc/HandleQueue() delslasttick = 0 @@ -80,18 +84,19 @@ var/datum/controller/subsystem/garbage_collector/SSgarbage var/list/queue = src.queue var/starttime = world.time var/starttimeofday = world.timeofday - while(queue.len && starttime == world.time && starttimeofday == world.timeofday) + var/idex = 1 + while((queue.len - (idex - 1)) && starttime == world.time && starttimeofday == world.timeofday) if (MC_TICK_CHECK) break - var/refID = queue[1] + var/refID = queue[idex] if (!refID) - queue.Cut(1, 2) + idex++ continue var/GCd_at_time = queue[refID] if(GCd_at_time > time_to_kill) break // Everything else is newer, skip them - queue.Cut(1, 2) + idex++ var/datum/A A = locate(refID) if (A && A.gcDestroyed == GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake @@ -112,6 +117,9 @@ var/datum/controller/subsystem/garbage_collector/SSgarbage ++gcedlasttick ++totalgcs + if (idex > 1) + queue.Cut(1, idex) + /datum/controller/subsystem/garbage_collector/proc/QueueForQueuing(datum/A) if (istype(A) && A.gcDestroyed == GC_CURRENTLY_BEING_QDELETED) tobequeued += A diff --git a/code/controllers/subsystems/initialization/misc_late.dm b/code/controllers/subsystems/initialization/misc_late.dm index 77079787636..71eef46405e 100644 --- a/code/controllers/subsystems/initialization/misc_late.dm +++ b/code/controllers/subsystems/initialization/misc_late.dm @@ -40,7 +40,7 @@ if (config.fastboot) admin_notice("Fastboot is enabled; some features may not be available.", R_DEBUG) - ..(timeofday, TRUE) + ..(timeofday) /proc/resort_all_areas() all_areas = list() diff --git a/code/controllers/subsystems/mob.dm b/code/controllers/subsystems/mob.dm index 00641f6ab0e..d72bb78afe9 100644 --- a/code/controllers/subsystems/mob.dm +++ b/code/controllers/subsystems/mob.dm @@ -55,3 +55,10 @@ if (!.) . = new /mob/living/carbon/human/dummy/mannequin mannequins[ckey] = . + + addtimer(CALLBACK(src, .proc/del_mannequin, ckey), 5 MINUTES, TIMER_UNIQUE | TIMER_OVERRIDE) + +/datum/controller/subsystem/mobs/proc/del_mannequin(ckey) + var/mannequin = mannequins[ckey] + qdel(mannequin) + mannequins -= ckey diff --git a/code/controllers/subsystems/openturf.dm b/code/controllers/subsystems/openturf.dm index 7305b3e555d..3eb26864859 100644 --- a/code/controllers/subsystems/openturf.dm +++ b/code/controllers/subsystems/openturf.dm @@ -100,7 +100,11 @@ T.shadower = new(T) // Figure out how many z-levels down we are. - var/depth = calculate_depth(T) + var/depth = 0 + var/turf/simulated/open/Td = T + while (Td && isopenturf(Td.below)) + Td = Td.below + depth++ if (depth > OPENTURF_MAX_DEPTH) depth = OPENTURF_MAX_DEPTH @@ -178,7 +182,7 @@ else if (MC_TICK_CHECK) break - if (qt_idex > 1 && qo_idex <= curr_turfs.len) + if (qt_idex > 1 && qt_idex <= curr_turfs.len) curr_turfs.Cut(1, qt_idex) qt_idex = 1 @@ -227,9 +231,3 @@ if (qo_idex > 1 && qo_idex <= curr_ov.len) curr_ov.Cut(1, qo_idex) qo_idex = 1 - -/datum/controller/subsystem/openturf/proc/calculate_depth(turf/simulated/open/T) - . = 0 - while (T && isopenturf(T.below)) - T = T.below - .++ diff --git a/code/datums/progressbar.dm b/code/datums/progressbar.dm new file mode 100644 index 00000000000..1bb994f1a32 --- /dev/null +++ b/code/datums/progressbar.dm @@ -0,0 +1,66 @@ +#define PROGRESSBAR_HEIGHT 6 + +/datum/progressbar + var/goal = 1 + var/image/bar + var/shown = 0 + var/mob/user + var/client/client + var/listindex + +/datum/progressbar/New(mob/User, goal_number, atom/target) + . = ..() + if (!istype(target)) + EXCEPTION("Invalid target given") + if (goal_number) + goal = goal_number + bar = image('icons/effects/progessbar.dmi', target, "prog_bar_0", 21) + bar.appearance_flags = RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|RESET_ALPHA + user = User + if(user) + client = user.client + + LAZYINITLIST(user.progressbars) + LAZYINITLIST(user.progressbars[bar.loc]) + var/list/bars = user.progressbars[bar.loc] + bars += src + listindex = bars.len + bar.pixel_y = 32 + (PROGRESSBAR_HEIGHT * (listindex - 1)) + +/datum/progressbar/proc/update(progress) + if (!user || !user.client) + shown = 0 + return + if (user.client != client) + if (client) + client.images -= bar + if (user.client) + user.client.images += bar + + progress = Clamp(progress, 0, goal) + bar.icon_state = "prog_bar_[round(((progress / goal) * 100), 5)]" + if (!shown) + user.client.images += bar + shown = 1 + +/datum/progressbar/proc/shiftDown() + --listindex + bar.pixel_y -= PROGRESSBAR_HEIGHT + +/datum/progressbar/Destroy() + for(var/I in user.progressbars[bar.loc]) + var/datum/progressbar/P = I + if(P != src && P.listindex > listindex) + P.shiftDown() + + var/list/bars = user.progressbars[bar.loc] + bars -= src + if(!bars.len) + LAZYREMOVE(user.progressbars, bar.loc) + + if (client) + client.images -= bar + qdel(bar) + . = ..() + +#undef PROGRESSBAR_HEIGHT diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 34a5f8a6f14..392e407bd2a 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -53,10 +53,10 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /obj/item/weapon/gun/projectile/revolver/derringer, /obj/item/weapon/gun/projectile/dragunov, /obj/item/weapon/gun/energy/retro) - cost = 60 + cost = 120 containertype = /obj/structure/closet/crate containername = "crate" - hidden = 1 + contraband = 1 group = "Security" /datum/supply_packs/forensics diff --git a/code/game/gamemodes/cult/hell_universe.dm b/code/game/gamemodes/cult/hell_universe.dm index 20388f9489c..7b4cc80913b 100644 --- a/code/game/gamemodes/cult/hell_universe.dm +++ b/code/game/gamemodes/cult/hell_universe.dm @@ -41,7 +41,7 @@ In short: // Apply changes when entering state /datum/universal_state/hell/OnEnter() - set background = 1 + SSgarbage.disable() // Yeah, fuck it. No point hard-deleting stuff now. escape_list = get_area_turfs(locate(/area/hallway/secondary/exit)) diff --git a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm index bf1952035e6..56923182093 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm @@ -36,7 +36,7 @@ var/global/universe_has_ended = 0 // Apply changes when entering state /datum/universal_state/supermatter_cascade/OnEnter() - set background = 1 + SSgarbage.disable() world << "You are blinded by a brilliant flash of energy." @@ -57,8 +57,6 @@ var/global/universe_has_ended = 0 // Disable Nar-Sie. cult.allow_narsie = 0 - SSgarbage.collection_timeout = 20 MINUTES // Yeah, no point trying to hard-del stuff at this point. - PlayerSet() new /obj/singularity/narsie/large/exit(pick(endgame_exits)) diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index 503c7d43993..c6ed71feed4 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -510,7 +510,7 @@ log_and_message_admins("activated blood heal.") - while (do_after(src, 20, 5, 0)) + while (do_after(src, 20, 0)) if (!(vampire.status & VAMP_HEALING)) to_chat(src, "Your concentration is broken! You are no longer regenerating!") break diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 0d52d4e38cc..0235c428763 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -292,7 +292,7 @@ var/list/global/slot_flags_enumeration = list( //If you are making custom procs but would like to retain partial or complete functionality of this one, include a 'return ..()' to where you want this to happen. //Set disable_warning to 1 if you wish it to not give you outputs. //Should probably move the bulk of this into mob code some time, as most of it is related to the definition of slots and not item-specific -/obj/item/proc/mob_can_equip(M as mob, slot, disable_warning = 0) +/obj/item/proc/mob_can_equip(M as mob, slot, disable_warning = FALSE, bypass_blocked_check = FALSE) if(!slot) return 0 if(!M) return 0 @@ -318,7 +318,7 @@ var/list/global/slot_flags_enumeration = list( //Next check if the slot is accessible. var/mob/_user = disable_warning? null : H - if(!H.slot_is_accessible(slot, src, _user)) + if(!bypass_blocked_check && !H.slot_is_accessible(slot, src, _user)) return 0 //Lastly, check special rules for the desired slot. diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm index 75b8685c80d..e874075aec2 100644 --- a/code/game/objects/items/weapons/cosmetics.dm +++ b/code/game/objects/items/weapons/cosmetics.dm @@ -60,7 +60,7 @@ else user.visible_message("[user] begins to do [H]'s lips with \the [src].", \ "You begin to apply \the [src].") - if(do_after(user, 20) && do_after(H, 20, 5, 0)) //user needs to keep their active hand, H does not. + if(do_after(user, 20) && do_after(H, 20, 0)) //user needs to keep their active hand, H does not. user.visible_message("[user] does [H]'s lips with \the [src].", \ "You apply \the [src].") H.lip_style = colour diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 9090a743f27..04040875649 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -31,10 +31,11 @@ if(!floortype && initial_flooring) floortype = initial_flooring if(floortype) - set_flooring(get_flooring_data(floortype)) + set_flooring(get_flooring_data(floortype), mapload) -/turf/simulated/floor/proc/set_flooring(var/decl/flooring/newflooring) - make_plating(defer_icon_update = 1) +/turf/simulated/floor/proc/set_flooring(decl/flooring/newflooring, mapload) + if (!mapload) + make_plating(defer_icon_update = 1) flooring = newflooring update_icon(1) levelupdate() diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index a3300f23f00..a970056bcb8 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -24,8 +24,9 @@ var/has_mob_product var/force_layer -/datum/seed/New() +/datum/seed/proc/setup_traits() +/datum/seed/New() set_trait(TRAIT_IMMUTABLE, 0) // If set, plant will never mutate. If -1, plant is highly mutable. set_trait(TRAIT_HARVEST_REPEAT, 0) // If 1, this plant will fruit repeatedly. set_trait(TRAIT_PRODUCES_POWER, 0) // Can be used to make a battery. @@ -62,7 +63,9 @@ set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.25) // Plant eats this much per tick. set_trait(TRAIT_PLANT_COLOUR, "#46B543") // Colour of the plant icon. - addtimer(CALLBACK(src, .proc/update_growth_stages), 5) + setup_traits() + + update_growth_stages() /datum/seed/proc/get_trait(var/trait) return traits["[trait]"] diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index 91e2c8aa0b8..b58be12a6c3 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -7,7 +7,7 @@ mutants = list("icechili") kitchen_tag = "chili" -/datum/seed/chili/New() +/datum/seed/chili/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,5) @@ -28,7 +28,7 @@ chems = list("frostoil" = list(3,5), "nutriment" = list(1,50)) kitchen_tag = "icechili" -/datum/seed/chili/ice/New() +/datum/seed/chili/ice/setup_traits() ..() set_trait(TRAIT_MATURATION,4) set_trait(TRAIT_PRODUCTION,4) @@ -43,7 +43,7 @@ chems = list("nutriment" = list(1,10), "berryjuice" = list(10,10)) kitchen_tag = "berries" -/datum/seed/berry/New() +/datum/seed/berry/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_JUICY,1) @@ -64,7 +64,7 @@ mutants = null chems = list("nutriment" = list(1,10), "uranium" = list(3,5)) -/datum/seed/berry/glow/New() +/datum/seed/berry/glow/setup_traits() ..() set_trait(TRAIT_SPREAD,1) set_trait(TRAIT_BIOLUM,1) @@ -84,7 +84,7 @@ mutants = list("deathberries") chems = list("nutriment" = list(1), "toxin" = list(3,5), "poisonberryjuice" = list(10,5)) -/datum/seed/berry/poison/New() +/datum/seed/berry/poison/setup_traits() ..() set_trait(TRAIT_PRODUCT_COLOUR,"#6DC961") set_trait(TRAIT_WATER_CONSUMPTION, 3) @@ -97,7 +97,7 @@ mutants = null chems = list("nutriment" = list(1), "toxin" = list(3,3), "lexorin" = list(1,5)) -/datum/seed/berry/poison/death/New() +/datum/seed/berry/poison/death/setup_traits() ..() set_trait(TRAIT_YIELD,3) set_trait(TRAIT_POTENCY,50) @@ -114,7 +114,7 @@ kitchen_tag = "nettle" kitchen_tag = "nettle" -/datum/seed/nettle/New() +/datum/seed/nettle/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,6) @@ -134,7 +134,7 @@ chems = list("nutriment" = list(1,50), "pacid" = list(0,1)) kitchen_tag = "deathnettle" -/datum/seed/nettle/death/New() +/datum/seed/nettle/death/setup_traits() ..() set_trait(TRAIT_MATURATION,8) set_trait(TRAIT_YIELD,2) @@ -150,7 +150,7 @@ chems = list("nutriment" = list(1,10), "tomatojuice" = list(10,10)) kitchen_tag = "tomato" -/datum/seed/tomato/New() +/datum/seed/tomato/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_JUICY,1) @@ -173,7 +173,7 @@ chems = list("nutriment" = list(1,10), "blood" = list(1,5)) splat_type = /obj/effect/decal/cleanable/blood/splatter -/datum/seed/tomato/blood/New() +/datum/seed/tomato/blood/setup_traits() ..() set_trait(TRAIT_YIELD,3) set_trait(TRAIT_PRODUCT_COLOUR,"#FF0000") @@ -186,7 +186,7 @@ can_self_harvest = 1 has_mob_product = /mob/living/simple_animal/tomato -/datum/seed/tomato/killer/New() +/datum/seed/tomato/killer/setup_traits() ..() set_trait(TRAIT_YIELD,2) set_trait(TRAIT_PRODUCT_COLOUR,"#A86747") @@ -198,7 +198,7 @@ mutants = list("bluespacetomato") chems = list("nutriment" = list(1,20), "lube" = list(1,5)) -/datum/seed/tomato/blue/New() +/datum/seed/tomato/blue/setup_traits() ..() set_trait(TRAIT_PRODUCT_COLOUR,"#4D86E8") set_trait(TRAIT_PLANT_COLOUR,"#070AAD") @@ -210,7 +210,7 @@ mutants = null chems = list("nutriment" = list(1,20), "singulo" = list(10,5)) -/datum/seed/tomato/blue/teleport/New() +/datum/seed/tomato/blue/teleport/setup_traits() ..() set_trait(TRAIT_TELEPORTING,1) set_trait(TRAIT_PRODUCT_COLOUR,"#00E5FF") @@ -226,7 +226,7 @@ chems = list("nutriment" = list(1,10)) kitchen_tag = "eggplant" -/datum/seed/eggplant/New() +/datum/seed/eggplant/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,6) @@ -246,7 +246,7 @@ chems = list("nutriment" = list(15,30)) kitchen_tag = "realeggplant" -/datum/seed/realeggplant/New() +/datum/seed/realeggplant/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,4) @@ -268,7 +268,7 @@ chems = list("nutriment" = list(1,10)) kitchen_tag = "apple" -/datum/seed/apple/New() +/datum/seed/apple/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,6) @@ -294,7 +294,7 @@ chems = list("nutriment" = list(1,10), "gold" = list(1,5)) kitchen_tag = "goldapple" -/datum/seed/apple/gold/New() +/datum/seed/apple/gold/setup_traits() ..() set_trait(TRAIT_MATURATION,10) set_trait(TRAIT_PRODUCTION,10) @@ -311,7 +311,7 @@ chems = list("nutriment" = list(1), "space_drugs" = list(1,8), "kelotane" = list(1,8,1), "bicaridine" = list(1,10,1), "toxin" = list(1,10)) kitchen_tag = "ambrosia" -/datum/seed/ambrosia/New() +/datum/seed/ambrosia/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,6) @@ -331,7 +331,7 @@ chems = list("nutriment" = list(1), "bicaridine" = list(1,8), "synaptizine" = list(1,8,1), "hyperzine" = list(1,10,1), "space_drugs" = list(1,10)) kitchen_tag = "ambrosiadeus" -/datum/seed/ambrosia/deus/New() +/datum/seed/ambrosia/deus/setup_traits() ..() set_trait(TRAIT_PRODUCT_COLOUR,"#A3F0AD") set_trait(TRAIT_PLANT_COLOUR,"#2A9C61") @@ -347,7 +347,7 @@ splat_type = /obj/effect/plant kitchen_tag = "mushroom" -/datum/seed/mushroom/New() +/datum/seed/mushroom/setup_traits() ..() set_trait(TRAIT_MATURATION,7) set_trait(TRAIT_PRODUCTION,1) @@ -373,7 +373,7 @@ splat_type = /obj/effect/plant kitchen_tag = "koisspore" -/datum/seed/koisspore/New() +/datum/seed/koisspore/setup_traits() ..() set_trait(TRAIT_SPREAD,1) set_trait(TRAIT_MATURATION,5) @@ -396,7 +396,7 @@ display_name = "brown mold" mutants = null -/datum/seed/mushroom/mold/New() +/datum/seed/mushroom/mold/setup_traits() ..() set_trait(TRAIT_SPREAD,1) set_trait(TRAIT_MATURATION,10) @@ -414,7 +414,7 @@ chems = list("nutriment" = list(2,10)) kitchen_tag = "plumphelmet" -/datum/seed/mushroom/plump/New() +/datum/seed/mushroom/plump/setup_traits() ..() set_trait(TRAIT_MATURATION,8) set_trait(TRAIT_YIELD,4) @@ -432,7 +432,7 @@ can_self_harvest = 1 has_mob_product = /mob/living/simple_animal/mushroom -/datum/seed/mushroom/plump/walking/New() +/datum/seed/mushroom/plump/walking/setup_traits() ..() set_trait(TRAIT_MATURATION,5) set_trait(TRAIT_YIELD,1) @@ -446,7 +446,7 @@ mutants = list("libertycap","glowshroom") chems = list("nutriment" = list(1,50), "psilocybin" = list(3,5)) -/datum/seed/mushroom/hallucinogenic/New() +/datum/seed/mushroom/hallucinogenic/setup_traits() ..() set_trait(TRAIT_MATURATION,10) set_trait(TRAIT_PRODUCTION,5) @@ -464,7 +464,7 @@ mutants = null chems = list("nutriment" = list(1), "stoxin" = list(3,3), "space_drugs" = list(1,25)) -/datum/seed/mushroom/hallucinogenic/strong/New() +/datum/seed/mushroom/hallucinogenic/strong/setup_traits() ..() set_trait(TRAIT_PRODUCTION,1) set_trait(TRAIT_POTENCY,15) @@ -480,7 +480,7 @@ mutants = list("destroyingangel","plastic") chems = list("nutriment" = list(1), "amatoxin" = list(3,3), "psilocybin" = list(1,25)) -/datum/seed/mushroom/poison/New() +/datum/seed/mushroom/poison/setup_traits() ..() set_trait(TRAIT_MATURATION,10) set_trait(TRAIT_PRODUCTION,5) @@ -498,7 +498,7 @@ mutants = null chems = list("nutriment" = list(1,50), "amatoxin" = list(13,3), "psilocybin" = list(1,25)) -/datum/seed/mushroom/poison/death/New() +/datum/seed/mushroom/poison/death/setup_traits() ..() set_trait(TRAIT_MATURATION,12) set_trait(TRAIT_YIELD,2) @@ -515,7 +515,7 @@ chems = list("woodpulp" = list(10,1)) mutants = null -/datum/seed/mushroom/towercap/New() +/datum/seed/mushroom/towercap/setup_traits() ..() set_trait(TRAIT_MATURATION,15) set_trait(TRAIT_PRODUCT_ICON,"mushroom7") @@ -530,7 +530,7 @@ mutants = null chems = list("radium" = list(1,20)) -/datum/seed/mushroom/glowshroom/New() +/datum/seed/mushroom/glowshroom/setup_traits() ..() set_trait(TRAIT_SPREAD,1) set_trait(TRAIT_MATURATION,15) @@ -550,7 +550,7 @@ mutants = null chems = list("plasticide" = list(1,10)) -/datum/seed/mushroom/plastic/New() +/datum/seed/mushroom/plastic/setup_traits() ..() set_trait(TRAIT_MATURATION,5) set_trait(TRAIT_PRODUCTION,6) @@ -568,7 +568,7 @@ display_name = "harebells" chems = list("nutriment" = list(1,20)) -/datum/seed/flower/New() +/datum/seed/flower/setup_traits() ..() set_trait(TRAIT_MATURATION,7) set_trait(TRAIT_PRODUCTION,1) @@ -586,7 +586,7 @@ chems = list("nutriment" = list(1,20), "bicaridine" = list(1,10)) kitchen_tag = "poppy" -/datum/seed/flower/poppy/New() +/datum/seed/flower/poppy/setup_traits() ..() set_trait(TRAIT_POTENCY,20) set_trait(TRAIT_MATURATION,8) @@ -604,7 +604,7 @@ seed_name = "sunflower" display_name = "sunflowers" -/datum/seed/flower/sunflower/New() +/datum/seed/flower/sunflower/setup_traits() ..() set_trait(TRAIT_MATURATION,6) set_trait(TRAIT_PRODUCT_ICON,"flower2") @@ -622,7 +622,7 @@ mutants = list("greengrapes") chems = list("nutriment" = list(1,10), "sugar" = list(1,5), "grapejuice" = list(10,10)) -/datum/seed/grapes/New() +/datum/seed/grapes/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,3) @@ -643,7 +643,7 @@ mutants = null chems = list("nutriment" = list(1,10), "kelotane" = list(3,5), "grapejuice" = list(10,10)) -/datum/seed/grapes/green/New() +/datum/seed/grapes/green/setup_traits() ..() set_trait(TRAIT_PRODUCT_COLOUR,"42ed2f") @@ -655,7 +655,7 @@ chems = list("nutriment" = list(1,10)) kitchen_tag = "peanut" -/datum/seed/peanuts/New() +/datum/seed/peanuts/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,6) @@ -674,7 +674,7 @@ chems = list("nutriment" = list(1,10)) kitchen_tag = "cabbage" -/datum/seed/cabbage/New() +/datum/seed/cabbage/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,3) @@ -697,7 +697,7 @@ trash_type = /obj/item/weapon/bananapeel kitchen_tag = "banana" -/datum/seed/banana/New() +/datum/seed/banana/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,6) @@ -719,7 +719,7 @@ kitchen_tag = "corn" trash_type = /obj/item/weapon/corncob -/datum/seed/corn/New() +/datum/seed/corn/setup_traits() ..() set_trait(TRAIT_MATURATION,8) set_trait(TRAIT_PRODUCTION,6) @@ -740,7 +740,7 @@ chems = list("nutriment" = list(1,10), "potato" = list(10,10)) kitchen_tag = "potato" -/datum/seed/potato/New() +/datum/seed/potato/setup_traits() ..() set_trait(TRAIT_PRODUCES_POWER,1) set_trait(TRAIT_MATURATION,10) @@ -759,7 +759,7 @@ chems = list("nutriment" = list(1,20), "soymilk" = list(10,20)) kitchen_tag = "soybeans" -/datum/seed/soybean/New() +/datum/seed/soybean/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,4) @@ -777,7 +777,7 @@ chems = list("nutriment" = list(1,25), "flour" = list(15,15)) kitchen_tag = "wheat" -/datum/seed/wheat/New() +/datum/seed/wheat/setup_traits() ..() set_trait(TRAIT_MATURATION,6) set_trait(TRAIT_PRODUCTION,1) @@ -797,7 +797,7 @@ chems = list("nutriment" = list(1,25), "rice" = list(10,15)) kitchen_tag = "rice" -/datum/seed/rice/New() +/datum/seed/rice/setup_traits() ..() set_trait(TRAIT_MATURATION,6) set_trait(TRAIT_PRODUCTION,1) @@ -817,7 +817,7 @@ chems = list("nutriment" = list(1,20), "imidazoline" = list(3,5), "carrotjuice" = list(10,20)) kitchen_tag = "carrot" -/datum/seed/carrots/New() +/datum/seed/carrots/setup_traits() ..() set_trait(TRAIT_MATURATION,10) set_trait(TRAIT_PRODUCTION,1) @@ -833,7 +833,7 @@ seed_name = "weed" display_name = "weeds" -/datum/seed/weeds/New() +/datum/seed/weeds/setup_traits() ..() set_trait(TRAIT_MATURATION,5) set_trait(TRAIT_PRODUCTION,1) @@ -852,7 +852,7 @@ chems = list("nutriment" = list(0,20), "sugar" = list(1,5)) kitchen_tag = "whitebeet" -/datum/seed/whitebeets/New() +/datum/seed/whitebeets/setup_traits() ..() set_trait(TRAIT_MATURATION,6) set_trait(TRAIT_PRODUCTION,6) @@ -870,7 +870,7 @@ display_name = "sugarcanes" chems = list("sugar" = list(4,5)) -/datum/seed/sugarcane/New() +/datum/seed/sugarcane/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,3) @@ -889,7 +889,7 @@ display_name = "watermelon vine" chems = list("nutriment" = list(1,6), "watermelonjuice" = list(10,6)) -/datum/seed/watermelon/New() +/datum/seed/watermelon/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_JUICY,1) @@ -913,7 +913,7 @@ chems = list("nutriment" = list(1,6)) kitchen_tag = "pumpkin" -/datum/seed/pumpkin/New() +/datum/seed/pumpkin/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,6) @@ -933,7 +933,7 @@ chems = list("nutriment" = list(1,20), "limejuice" = list(10,20)) kitchen_tag = "lime" -/datum/seed/citrus/New() +/datum/seed/citrus/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_JUICY,1) @@ -953,7 +953,7 @@ chems = list("nutriment" = list(1,20), "lemonjuice" = list(10,20)) kitchen_tag = "lemon" -/datum/seed/citrus/lemon/New() +/datum/seed/citrus/lemon/setup_traits() ..() set_trait(TRAIT_PRODUCES_POWER,1) set_trait(TRAIT_PRODUCT_COLOUR,"#F0E226") @@ -967,7 +967,7 @@ kitchen_tag = "orange" chems = list("nutriment" = list(1,20), "orangejuice" = list(10,20)) -/datum/seed/citrus/orange/New() +/datum/seed/citrus/orange/setup_traits() ..() set_trait(TRAIT_PRODUCT_COLOUR,"#FFC20A") set_trait(TRAIT_FLESH_COLOUR,"#FFC20A") @@ -979,7 +979,7 @@ chems = list("nutriment" = list(1,20)) kitchen_tag = "grass" -/datum/seed/grass/New() +/datum/seed/grass/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,2) @@ -998,7 +998,7 @@ display_name = "cacao tree" chems = list("nutriment" = list(1,10), "coco" = list(4,5)) -/datum/seed/cocoa/New() +/datum/seed/cocoa/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_MATURATION,5) @@ -1019,7 +1019,7 @@ chems = list("nutriment" = list(1,15), "sugar" = list(1,15), "cherryjelly" = list(10,15)) kitchen_tag = "cherries" -/datum/seed/cherries/New() +/datum/seed/cherries/setup_traits() ..() set_trait(TRAIT_HARVEST_REPEAT,1) set_trait(TRAIT_JUICY,1) @@ -1038,7 +1038,7 @@ display_name = "kudzu vines" chems = list("nutriment" = list(1,50), "anti_toxin" = list(1,25)) -/datum/seed/kudzu/New() +/datum/seed/kudzu/setup_traits() ..() set_trait(TRAIT_MATURATION,6) set_trait(TRAIT_PRODUCTION,6) @@ -1059,7 +1059,7 @@ can_self_harvest = 1 has_mob_product = /mob/living/carbon/alien/diona -/datum/seed/diona/New() +/datum/seed/diona/setup_traits() ..() set_trait(TRAIT_IMMUTABLE,1) set_trait(TRAIT_ENDURANCE,8) @@ -1079,7 +1079,7 @@ chems = list("bicaridine" = list(0,10)) kitchen_tag = "shand" -/datum/seed/shand/New() +/datum/seed/shand/setup_traits() ..() set_trait(TRAIT_MATURATION,3) set_trait(TRAIT_PRODUCTION,5) @@ -1099,7 +1099,7 @@ chems = list("honey" = list(1,10), "kelotane" = list(3,5)) kitchen_tag = "mtear" -/datum/seed/mtear/New() +/datum/seed/mtear/setup_traits() ..() set_trait(TRAIT_MATURATION,3) set_trait(TRAIT_PRODUCTION,5) @@ -1118,7 +1118,7 @@ display_name = "telriis grass" chems = list("pwine" = list(1,5), "nutriment" = list(1,6)) -/datum/seed/telriis/New() +/datum/seed/telriis/setup_traits() ..() set_trait(TRAIT_PLANT_ICON,"telriis") set_trait(TRAIT_ENDURANCE,50) @@ -1133,7 +1133,7 @@ display_name = "thaa'dra lichen" chems = list("frostoil" = list(1,5),"nutriment" = list(1,5)) -/datum/seed/thaadra/New() +/datum/seed/thaadra/setup_traits() ..() set_trait(TRAIT_PLANT_ICON,"thaadra") set_trait(TRAIT_ENDURANCE,10) @@ -1148,7 +1148,7 @@ display_name = "jurl'mah reeds" chems = list("serotrotium" = list(1,5),"nutriment" = list(1,5)) -/datum/seed/jurlmah/New() +/datum/seed/jurlmah/setup_traits() ..() set_trait(TRAIT_PLANT_ICON,"jurlmah") set_trait(TRAIT_ENDURANCE,12) @@ -1163,7 +1163,7 @@ display_name = "amauri plant" chems = list("zombiepowder" = list(1,10),"condensedcapsaicin" = list(1,5),"nutriment" = list(1,5)) -/datum/seed/amauri/New() +/datum/seed/amauri/setup_traits() ..() set_trait(TRAIT_PLANT_ICON,"amauri") set_trait(TRAIT_ENDURANCE,10) @@ -1178,7 +1178,7 @@ display_name = "gelthi plant" chems = list("stoxin" = list(1,5),"capsaicin" = list(1,5),"nutriment" = list(1,5)) -/datum/seed/gelthi/New() +/datum/seed/gelthi/setup_traits() ..() set_trait(TRAIT_PLANT_ICON,"gelthi") set_trait(TRAIT_ENDURANCE,15) @@ -1193,7 +1193,7 @@ display_name = "vale bush" chems = list("paracetamol" = list(1,5),"dexalin" = list(1,2),"nutriment"= list(1,5)) -/datum/seed/vale/New() +/datum/seed/vale/setup_traits() ..() set_trait(TRAIT_PLANT_ICON,"vale") set_trait(TRAIT_ENDURANCE,15) @@ -1208,7 +1208,7 @@ display_name = "surik vine" chems = list("impedrezene" = list(1,3),"synaptizine" = list(1,2),"nutriment" = list(1,5)) -/datum/seed/surik/New() +/datum/seed/surik/setup_traits() ..() set_trait(TRAIT_PLANT_ICON,"surik") set_trait(TRAIT_ENDURANCE,18) @@ -1225,7 +1225,7 @@ force_layer = 3 chems = list("phoron" = list(1,3)) -/datum/seed/xenomorph/New() +/datum/seed/xenomorph/setup_traits() ..() set_trait(TRAIT_PLANT_ICON,"vine2") set_trait(TRAIT_IMMUTABLE,1) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 329f076f7fc..f9ab9aa60ba 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -63,8 +63,8 @@ var/excavation_amount = 30 var/wielded = 0 - var/force_unwielded = 10.0 - var/force_wielded = 30.0 + var/force_unwielded = 5.0 + var/force_wielded = 15.0 var/digspeed_unwielded = 30 var/digspeed_wielded = 10 var/drilling = 0 @@ -233,7 +233,7 @@ drill_sound = 'sound/weapons/sonic_jackhammer.ogg' digspeed = 15 digspeed_unwielded = 15 - force_unwielded = 25.0 + force_unwielded = 15.0 excavation_amount = 100 can_wield = 0 @@ -252,7 +252,6 @@ digspeed_unwielded = 30 digspeed_wielded = 5 - force_wielded = 35.0 /obj/item/weapon/pickaxe/diamond name = "diamond pickaxe" @@ -264,7 +263,7 @@ digspeed_unwielded = 20 digspeed_wielded = 1 - force_wielded = 35.0 + force_wielded = 25.0 /obj/item/weapon/pickaxe/diamonddrill //When people ask about the badass leader of the mining tools, they are talking about ME! name = "diamond mining drill" @@ -1277,7 +1276,9 @@ var/list/total_extraction_beacons = list() density = 1 anchored = 1 -/obj/structure/weightlifter/attack_hand(mob/user as mob) +/obj/structure/weightlifter/attack_hand(var/mob/living/carbon/human/user) + if(!istype(user)) + return if(in_use) user << "It's already in use - wait a bit." return @@ -1314,6 +1315,7 @@ var/list/total_extraction_beacons = list() icon_state = "fitnessweight" overlays -= W user << "[finishmessage]" + user.nutrition = user.nutrition - 10 /******************************Seismic Charge*******************************/ diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 625111c15a8..84260087108 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -21,10 +21,10 @@ //set del_on_fail to have it delete W if it fails to equip //set disable_warning to disable the 'you are unable to equip that' warning. //unset redraw_mob to prevent the mob from being redrawn at the end. -/mob/proc/equip_to_slot_if_possible(obj/item/W as obj, slot, del_on_fail = 0, disable_warning = 0, redraw_mob = 1) +/mob/proc/equip_to_slot_if_possible(obj/item/W as obj, slot, del_on_fail = FALSE, disable_warning = FALSE, redraw_mob = TRUE, ignore_blocked = FALSE) if(!istype(W)) return 0 - if(!W.mob_can_equip(src, slot)) + if(!W.mob_can_equip(src, slot, disable_warning, ignore_blocked)) if(del_on_fail) qdel(W) else @@ -42,7 +42,7 @@ //This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to equip people when the rounds tarts and when events happen and such. /mob/proc/equip_to_slot_or_del(obj/item/W as obj, slot) - return equip_to_slot_if_possible(W, slot, 1, 1, 0) + . = equip_to_slot_if_possible(W, slot, TRUE, TRUE, FALSE, ignore_blocked = TRUE) //The list of slots by priority. equip_to_appropriate_slot() uses this list. Doesn't matter if a mob type doesn't have a slot. var/list/slot_equipment_priority = list( \ diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 286a5d9c32a..eb4ebd1de26 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -32,12 +32,15 @@ icon = 'icons/mob/alien.dmi' icon_state = "chitin" -/obj/item/organ/brain/New() - ..() +/obj/item/organ/brain/Initialize(mapload) + . = ..() health = config.default_brain_health - spawn(5) - if(brainmob && brainmob.client) - brainmob.client.screen.len = null //clear the hud + if (!mapload) + addtimer(CALLBACK(src, .proc/clear_screen), 5) + +/obj/item/organ/brain/proc/clear_screen() + if (brainmob && brainmob.client) + brainmob.client.screen.Cut() /obj/item/organ/brain/Destroy() if(brainmob) diff --git a/code/modules/mob/living/carbon/human/human_species.dm b/code/modules/mob/living/carbon/human/human_species.dm index c99f1036288..75c41cb39a8 100644 --- a/code/modules/mob/living/carbon/human/human_species.dm +++ b/code/modules/mob/living/carbon/human/human_species.dm @@ -2,11 +2,7 @@ real_name = "Test Dummy" status_flags = GODMODE|CANPUSH -/mob/living/carbon/human/dummy/mannequin/New(location, ...) - ..() - if (!initialized) - args[1] = TRUE - SSatoms.InitAtom(src, args) +INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin) /mob/living/carbon/human/dummy/mannequin/Initialize() . = ..() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 62558f97dd6..6e133f84ed6 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -754,7 +754,7 @@ if(statpanel("MC")) stat("CPU:", world.cpu) stat("Tick Usage:", world.tick_usage) - stat("Instances:", world.contents.len) + stat("Instances:", num2text(world.contents.len, 7)) if (config.fastboot) stat(null, "FASTBOOT ENABLED") if(Master) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index cc3c4ad1d94..8b936207c72 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -232,3 +232,5 @@ var/list/active_genes=list() var/mob_size = MOB_MEDIUM + + var/list/progressbars diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 52dfc47f312..85335c27223 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -114,13 +114,13 @@ new_player_panel_proc() if(href_list["observe"]) - if (SSatoms.initialized < INITIALIZATION_INNEW_REGULAR) + if (!SSATOMS_IS_PROBABLY_DONE) // Don't allow players to observe until initialization is more or less complete. // Letting them join too early breaks things, they can wait. - src << span("alert", "The server is still initializing, try observing again in a minute or so.") - return + alert(src, "Please wait, the map is not initialized yet.") + return 0 - if(alert(src,"Are you sure you wish to observe? You will have to wait 30 minutes before being able to respawn!","Player Setup","Yes","No") == "Yes") + if(alert(src,"Are you sure you wish to observe? You will have to wait [config.respawn_delay] minutes before being able to respawn!","Player Setup","Yes","No") == "Yes") if(!client) return 1 var/mob/dead/observer/observer = new /mob/dead/observer(src) spawning = 1 diff --git a/code/modules/multiz/openspace.dm b/code/modules/multiz/openspace.dm index 48c3867eee8..07135005afd 100644 --- a/code/modules/multiz/openspace.dm +++ b/code/modules/multiz/openspace.dm @@ -24,7 +24,8 @@ /atom/movable/Destroy() . = ..() - QDEL_NULL(bound_overlay) + if (bound_overlay) + QDEL_NULL(bound_overlay) /atom/movable/forceMove(atom/dest) . = ..(dest) @@ -39,10 +40,10 @@ if (!bound_overlay) return - // check_existence returns TRUE if the overlay is valid. - if (isopenturf(bound_overlay.loc) && !bound_overlay.queued) - SSopenturf.queued_overlays += bound_overlay - bound_overlay.queued = TRUE + if (isopenturf(bound_overlay.loc)) + if (!bound_overlay.queued) + SSopenturf.queued_overlays += bound_overlay + bound_overlay.queued = TRUE else qdel(bound_overlay) diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm index 1dcec55faca..f1ac8ebda22 100644 --- a/code/modules/multiz/turf.dm +++ b/code/modules/multiz/turf.dm @@ -30,7 +30,7 @@ /turf/simulated/open name = "open space" icon = 'icons/turf/space.dmi' - icon_state = "" + icon_state = "opendebug" plane = PLANE_SPACE_BACKGROUND density = 0 pathweight = 100000 //Seriously, don't try and path over this one numbnuts @@ -167,6 +167,7 @@ /turf/simulated/open/Initialize() . = ..() + icon_state = "" // Clear out the debug icon. SSopenturf.openspace_turfs += src update() diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 44694d6f5f9..b5ab7a5e9f8 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -27,6 +27,12 @@ var/force_skintone = FALSE // If true, icon generation will skip is-robotic checks. Used for synthskin limbs. +/obj/item/organ/New(loc, ...) + ..() + if (!initialized && istype(loc, /mob/living/carbon/human/dummy/mannequin)) + args[1] = TRUE + SSatoms.InitAtom(src, args) + /obj/item/organ/Destroy() STOP_PROCESSING(SSprocessing, src) if(!owner) @@ -51,8 +57,9 @@ /obj/item/organ/proc/update_health() return -/obj/item/organ/New(var/mob/living/carbon/holder, var/internal) - ..(holder) +/obj/item/organ/Initialize(mapload, internal) + . = ..() + var/mob/living/carbon/holder = loc create_reagents(5) if(!max_damage) max_damage = min_broken_damage * 2 diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 7db91b28752..3bf11af498d 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -165,18 +165,17 @@ damage = min(max_damage, (brute_dam + burn_dam)) return - -/obj/item/organ/external/New(var/mob/living/carbon/holder) - ..(holder, 0) +/obj/item/organ/external/Initialize(mapload) + . = ..(mapload, FALSE) if(owner) replaced(owner) sync_colour_to_human(owner) - addtimer(CALLBACK(src, .proc/get_icon), 1) - if ((status & ORGAN_PLANT)) cannot_break = 1 + get_icon() + /obj/item/organ/external/replaced(var/mob/living/carbon/human/target) owner = target forceMove(owner) diff --git a/code/modules/organs/organ_internal.dm b/code/modules/organs/organ_internal.dm index 0a8556ede4a..1403a61a9e1 100644 --- a/code/modules/organs/organ_internal.dm +++ b/code/modules/organs/organ_internal.dm @@ -240,14 +240,14 @@ obj/item/organ/vaurca/neuralsocket/process() var/volume = 50 var/manipulated_by = null -/obj/item/organ/vaurca/preserve/New() - ..() +/obj/item/organ/vaurca/preserve/Initialize() + . = ..() - src.air_contents = new /datum/gas_mixture() - src.air_contents.adjust_gas("phoron", (ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) - src.air_contents.volume = volume //liters - src.air_contents.temperature = T20C - src.distribute_pressure = ((pick(1.8,2.0,2.4,2.8)*ONE_ATMOSPHERE)*O2STANDARD) + air_contents = new /datum/gas_mixture() + air_contents.adjust_gas("phoron", (ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.volume = volume //liters + air_contents.temperature = T20C + distribute_pressure = ((pick(1.8,2.0,2.4,2.8)*ONE_ATMOSPHERE)*O2STANDARD) START_PROCESSING(SSprocessing, src) var/mob/living/carbon/location = loc diff --git a/code/modules/organs/organ_stump.dm b/code/modules/organs/organ_stump.dm index d59e7470337..a0d35476ea8 100644 --- a/code/modules/organs/organ_stump.dm +++ b/code/modules/organs/organ_stump.dm @@ -3,7 +3,7 @@ icon_name = "" dislocated = -1 -/obj/item/organ/external/stump/New(var/mob/living/carbon/holder, var/internal, var/obj/item/organ/external/limb) +/obj/item/organ/external/stump/Initialize(mapload, var/internal, var/obj/item/organ/external/limb) if(istype(limb)) limb_name = limb.limb_name body_part = limb.body_part @@ -11,7 +11,7 @@ joint = limb.joint parent_organ = limb.parent_organ wounds = limb.wounds - ..(holder, internal) + . = ..(mapload, internal) if(istype(limb)) max_damage = limb.max_damage if((limb.status & ORGAN_ROBOT) && (!parent || (parent.status & ORGAN_ROBOT))) diff --git a/code/modules/organs/subtypes/machine.dm b/code/modules/organs/subtypes/machine.dm index e0143d5d760..10b14a8ae9c 100644 --- a/code/modules/organs/subtypes/machine.dm +++ b/code/modules/organs/subtypes/machine.dm @@ -6,88 +6,88 @@ can_intake_reagents = 0 encased = "support frame" -/obj/item/organ/external/head/ipc/New() +/obj/item/organ/external/head/ipc/Initialize() robotize("Hephaestus Integrated Limb") - ..() + . = ..() /obj/item/organ/external/chest/ipc dislocated = -1 encased = "support frame" -/obj/item/organ/external/chest/ipc/New() +/obj/item/organ/external/chest/ipc/Initialize() robotize("Hephaestus Integrated Limb") - ..() + . = ..() /obj/item/organ/external/groin/ipc dislocated = -1 encased = "support frame" -/obj/item/organ/external/groin/ipc/New() +/obj/item/organ/external/groin/ipc/Initialize() robotize("Hephaestus Integrated Limb") - ..() + . = ..() /obj/item/organ/external/arm/ipc dislocated = -1 encased = "support frame" -/obj/item/organ/external/arm/ipc/New() +/obj/item/organ/external/arm/ipc/Initialize() robotize("Hephaestus Integrated Limb") - ..() + . = ..() /obj/item/organ/external/arm/right/ipc dislocated = -1 encased = "support frame" -/obj/item/organ/external/arm/right/ipc/New() +/obj/item/organ/external/arm/right/ipc/Initialize() robotize("Hephaestus Integrated Limb") - ..() + . = ..() /obj/item/organ/external/leg/ipc dislocated = -1 encased = "support frame" -/obj/item/organ/external/leg/ipc/New() +/obj/item/organ/external/leg/ipc/Initialize() robotize("Hephaestus Integrated Limb") - ..() + . = ..() /obj/item/organ/external/leg/right/ipc dislocated = -1 -/obj/item/organ/external/leg/right/ipc/New() +/obj/item/organ/external/leg/right/ipc/Initialize() robotize("Hephaestus Integrated Limb") - ..() + . = ..() /obj/item/organ/external/foot/ipc dislocated = -1 encased = "support frame" -/obj/item/organ/external/foot/ipc/New() +/obj/item/organ/external/foot/ipc/Initialize() robotize("Hephaestus Integrated Limb") - ..() + . = ..() /obj/item/organ/external/foot/right/ipc dislocated = -1 encased = "support frame" -/obj/item/organ/external/foot/right/ipc/New() +/obj/item/organ/external/foot/right/ipc/Initialize() robotize("Hephaestus Integrated Limb") - ..() + . = ..() /obj/item/organ/external/hand/ipc dislocated = -1 encased = "support frame" -/obj/item/organ/external/hand/ipc/New() +/obj/item/organ/external/hand/ipc/Initialize() robotize("Hephaestus Integrated Limb") - ..() + . = ..() /obj/item/organ/external/hand/right/ipc dislocated = -1 encased = "support frame" -/obj/item/organ/external/hand/right/ipc/New() +/obj/item/organ/external/hand/right/ipc/Initialize() robotize("Hephaestus Integrated Limb") - ..() + . = ..() /obj/item/organ/cell name = "microbattery" @@ -98,12 +98,12 @@ parent_organ = "chest" vital = 1 -/obj/item/organ/cell/New() +/obj/item/organ/cell/Initialize() robotize() - ..() + . = ..() /obj/item/organ/cell/replaced() - ..() + . = ..() // This is very ghetto way of rebooting an IPC. TODO better way. if(owner && owner.stat == DEAD) owner.stat = 0 @@ -116,9 +116,9 @@ icon_state = "camera" dead_icon = "camera_broken" -/obj/item/organ/eyes/optical_sensor/New() +/obj/item/organ/eyes/optical_sensor/Initialize() robotize() - ..() + . = ..() /obj/item/organ/ipc_tag name = "identification tag" @@ -128,9 +128,9 @@ icon_state = "gps-c" dead_icon = "gps-c" -/obj/item/organ/ipc_tag/New() +/obj/item/organ/ipc_tag/Initialize() robotize() - ..() + . = ..() // Used for an MMI or posibrain being installed into a human. /obj/item/organ/mmi_holder @@ -154,36 +154,40 @@ stored_mmi.loc = get_turf(src) if(owner.mind) owner.mind.transfer_to(stored_mmi.brainmob) - ..() + . = ..() var/mob/living/holder_mob = loc if(istype(holder_mob)) holder_mob.drop_from_inventory(src) qdel(src) -/obj/item/organ/mmi_holder/New() - ..() +/obj/item/organ/mmi_holder/Initialize(mapload) + . = ..() // This is very ghetto way of rebooting an IPC. TODO better way. - spawn(1) - if(owner && owner.stat == DEAD) - owner.stat = 0 - owner.visible_message("\The [owner] twitches visibly!") + if (!mapload) + addtimer(CALLBACK(src, .proc/attempt_revive), 1) -/obj/item/organ/mmi_holder/posibrain/New() +/obj/item/organ/mmi_holder/proc/attempt_revive() + if (owner && owner.stat == DEAD) + owner.stat = 0 + owner.visible_message("\The [owner] twitches visibly!") + +/obj/item/organ/mmi_holder/posibrain/Initialize() robotize() stored_mmi = new /obj/item/device/mmi/digital/posibrain(src) - ..() - spawn(1) - if(owner) - stored_mmi.name = "positronic brain ([owner.name])" - stored_mmi.brainmob.real_name = owner.name - stored_mmi.brainmob.name = stored_mmi.brainmob.real_name - stored_mmi.icon_state = "posibrain-occupied" - update_from_mmi() - else - stored_mmi.loc = get_turf(src) - qdel(src) + . = ..() + addtimer(CALLBACK(src, .proc/setup_brain), 1) +/obj/item/organ/mmi_holder/posibrain/proc/setup_brain() + if(owner) + stored_mmi.name = "positronic brain ([owner.name])" + stored_mmi.brainmob.real_name = owner.name + stored_mmi.brainmob.name = stored_mmi.brainmob.real_name + stored_mmi.icon_state = "posibrain-occupied" + update_from_mmi() + else + stored_mmi.loc = get_turf(src) + qdel(src) ////////////// //Terminator// @@ -205,9 +209,9 @@ vital = 0 emp_coeff = 0.1 -/obj/item/organ/data/New() +/obj/item/organ/data/Initialize() robotize() - ..() + . = ..() /obj/item/organ/cell/terminator name = "shielded microbattery" @@ -219,9 +223,9 @@ vital = 1 emp_coeff = 0.1 -/obj/item/organ/cell/New() +/obj/item/organ/cell/Initialize() robotize() - ..() + . = ..() /obj/item/organ/external/head/terminator dislocated = -1 @@ -232,99 +236,99 @@ /obj/item/organ/eyes/optical_sensor/terminator emp_coeff = 0.5 -/obj/item/organ/external/head/terminator/New() +/obj/item/organ/external/head/terminator/Initialize() robotize("Hephaestus Vulcanite Limb") - ..() + . = ..() /obj/item/organ/external/chest/terminator dislocated = -1 encased = "reinforced support frame" emp_coeff = 0.5 -/obj/item/organ/external/chest/terminator/New() +/obj/item/organ/external/chest/terminator/Initialize() robotize("Hephaestus Vulcanite Limb") - ..() + . = ..() /obj/item/organ/external/groin/terminator dislocated = -1 encased = "reinforced support frame" emp_coeff = 0.5 -/obj/item/organ/external/groin/terminator/New() +/obj/item/organ/external/groin/terminator/Initialize() robotize("Hephaestus Vulcanite Limb") - ..() + . = ..() /obj/item/organ/external/arm/terminator dislocated = -1 encased = "reinforced support frame" emp_coeff = 0.5 -/obj/item/organ/external/arm/terminator/New() +/obj/item/organ/external/arm/terminator/Initialize() robotize("Hephaestus Vulcanite Limb") - ..() + . = ..() /obj/item/organ/external/arm/right/terminator dislocated = -1 encased = "reinforced support frame" emp_coeff = 0.5 -/obj/item/organ/external/arm/right/terminator/New() +/obj/item/organ/external/arm/right/terminator/Initialize() robotize("Hephaestus Vulcanite Limb") - ..() + . = ..() /obj/item/organ/external/leg/terminator dislocated = -1 encased = "reinforced support frame" emp_coeff = 0.5 -/obj/item/organ/external/leg/terminator/New() +/obj/item/organ/external/leg/terminator/Initialize() robotize("Hephaestus Vulcanite Limb") - ..() + . = ..() /obj/item/organ/external/leg/right/terminator dislocated = -1 encased = "reinforced support frame" emp_coeff = 0.5 -/obj/item/organ/external/leg/right/terminator/New() +/obj/item/organ/external/leg/right/terminator/Initialize() robotize("Hephaestus Vulcanite Limb") - ..() + . = ..() /obj/item/organ/external/foot/terminator dislocated = -1 encased = "reinforced support frame" emp_coeff = 0.5 -/obj/item/organ/external/foot/terminator/New() +/obj/item/organ/external/foot/terminator/Initialize() robotize("Hephaestus Vulcanite Limb") - ..() + . = ..() /obj/item/organ/external/foot/right/terminator dislocated = -1 encased = "reinforced support frame" emp_coeff = 0.5 -/obj/item/organ/external/foot/right/terminator/New() +/obj/item/organ/external/foot/right/terminator/Initialize() robotize("Hephaestus Vulcanite Limb") - ..() + . = ..() /obj/item/organ/external/hand/terminator dislocated = -1 encased = "reinforced support frame" emp_coeff = 0.5 -/obj/item/organ/external/hand/terminator/New() +/obj/item/organ/external/hand/terminator/Initialize() robotize("Hephaestus Vulcanite Limb") - ..() + . = ..() /obj/item/organ/external/hand/right/terminator dislocated = -1 encased = "reinforced support frame" emp_coeff = 0.5 -/obj/item/organ/external/hand/right/terminator/New() +/obj/item/organ/external/hand/right/terminator/Initialize() robotize("Hephaestus Vulcanite Limb") - ..() + . = ..() ////////////// //Industrial// @@ -335,89 +339,89 @@ can_intake_reagents = 0 encased = "support frame" -/obj/item/organ/external/head/industrial/New() +/obj/item/organ/external/head/industrial/Initialize() robotize("Hephaestus Industrial Limb") - ..() + . = ..() /obj/item/organ/external/chest/industrial dislocated = -1 encased = "support frame" -/obj/item/organ/external/chest/industrial/New() +/obj/item/organ/external/chest/industrial/Initialize() robotize("Hephaestus Industrial Limb") - ..() + . = ..() /obj/item/organ/external/groin/industrial dislocated = -1 encased = "support frame" -/obj/item/organ/external/groin/industrial/New() +/obj/item/organ/external/groin/industrial/Initialize() robotize("Hephaestus Industrial Limb") - ..() + . = ..() /obj/item/organ/external/arm/industrial dislocated = -1 encased = "support frame" -/obj/item/organ/external/arm/industrial/New() +/obj/item/organ/external/arm/industrial/Initialize() robotize("Hephaestus Industrial Limb") - ..() + . = ..() /obj/item/organ/external/arm/right/industrial dislocated = -1 encased = "support frame" -/obj/item/organ/external/arm/right/industrial/New() +/obj/item/organ/external/arm/right/industrial/Initialize() robotize("Hephaestus Industrial Limb") - ..() + . = ..() /obj/item/organ/external/leg/industrial dislocated = -1 encased = "support frame" -/obj/item/organ/external/leg/industrial/New() +/obj/item/organ/external/leg/industrial/Initialize() robotize("Hephaestus Industrial Limb") - ..() + . = ..() /obj/item/organ/external/leg/right/industrial dislocated = -1 encased = "support frame" -/obj/item/organ/external/leg/right/industrial/New() +/obj/item/organ/external/leg/right/industrial/Initialize() robotize("Hephaestus Industrial Limb") - ..() + . = ..() /obj/item/organ/external/foot/industrial dislocated = -1 encased = "support frame" -/obj/item/organ/external/foot/industrial/New() +/obj/item/organ/external/foot/industrial/Initialize() robotize("Hephaestus Industrial Limb") - ..() + . = ..() /obj/item/organ/external/foot/right/industrial dislocated = -1 encased = "support frame" -/obj/item/organ/external/foot/right/industrial/New() +/obj/item/organ/external/foot/right/industrial/Initialize() robotize("Hephaestus Industrial Limb") - ..() + . = ..() /obj/item/organ/external/hand/industrial dislocated = -1 encased = "support frame" -/obj/item/organ/external/hand/industrial/New() +/obj/item/organ/external/hand/industrial/Initialize() robotize("Hephaestus Industrial Limb") - ..() + . = ..() /obj/item/organ/external/hand/right/industrial dislocated = -1 encased = "support frame" -/obj/item/organ/external/hand/right/industrial/New() +/obj/item/organ/external/hand/right/industrial/Initialize() robotize("Hephaestus Industrial Limb") - ..() + . = ..() /////////////// //Shell limbs// @@ -429,9 +433,9 @@ encased = "support frame" force_skintone = TRUE -/obj/item/organ/external/head/shell/New() +/obj/item/organ/external/head/shell/Initialize() robotize("Human Synthskin") - ..() + . = ..() /obj/item/organ/external/chest/shell dislocated = -1 @@ -439,87 +443,87 @@ force_skintone = TRUE -/obj/item/organ/external/chest/shell/New() +/obj/item/organ/external/chest/shell/Initialize() robotize("Human Synthskin") - ..() + . = ..() /obj/item/organ/external/groin/shell dislocated = -1 encased = "support frame" force_skintone = TRUE -/obj/item/organ/external/groin/shell/New() +/obj/item/organ/external/groin/shell/Initialize() robotize("Human Synthskin") - ..() + . = ..() /obj/item/organ/external/arm/shell dislocated = -1 encased = "support frame" force_skintone = TRUE -/obj/item/organ/external/arm/shell/New() +/obj/item/organ/external/arm/shell/Initialize() robotize("Human Synthskin") - ..() + . = ..() /obj/item/organ/external/arm/right/shell dislocated = -1 encased = "support frame" force_skintone = TRUE -/obj/item/organ/external/arm/right/shell/New() +/obj/item/organ/external/arm/right/shell/Initialize() robotize("Human Synthskin") - ..() + . = ..() /obj/item/organ/external/leg/shell dislocated = -1 encased = "support frame" force_skintone = TRUE -/obj/item/organ/external/leg/shell/New() +/obj/item/organ/external/leg/shell/Initialize() robotize("Human Synthskin") - ..() + . = ..() /obj/item/organ/external/leg/right/shell dislocated = -1 encased = "support frame" force_skintone = TRUE -/obj/item/organ/external/leg/right/shell/New() +/obj/item/organ/external/leg/right/shell/Initialize() robotize("Human Synthskin") - ..() + . = ..() /obj/item/organ/external/foot/shell dislocated = -1 encased = "support frame" force_skintone = TRUE -/obj/item/organ/external/foot/shell/New() +/obj/item/organ/external/foot/shell/Initialize() robotize("Human Synthskin") - ..() + . = ..() /obj/item/organ/external/foot/right/shell dislocated = -1 encased = "support frame" force_skintone = TRUE -/obj/item/organ/external/foot/right/shell/New() +/obj/item/organ/external/foot/right/shell/Initialize() robotize("Human Synthskin") - ..() + . = ..() /obj/item/organ/external/hand/shell dislocated = -1 encased = "support frame" force_skintone = TRUE -/obj/item/organ/external/hand/shell/New() +/obj/item/organ/external/hand/shell/Initialize() robotize("Human Synthskin") - ..() + . = ..() /obj/item/organ/external/hand/right/shell dislocated = -1 encased = "support frame" force_skintone = TRUE -/obj/item/organ/external/hand/right/shell/New() +/obj/item/organ/external/hand/right/shell/Initialize() robotize("Human Synthskin") - ..() + . = ..() diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index c243a8d39a5..d2aba2d4309 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -180,7 +180,7 @@ else user.visible_message("[user] begins to wipe [H]'s lipstick off with \the [src].", \ "You begin to wipe off [H]'s lipstick.") - if(do_after(user, 10) && do_after(H, 10, 5, 0)) //user needs to keep their active hand, H does not. + if(do_after(user, 10) && do_after(H, 10, 0)) //user needs to keep their active hand, H does not. user.visible_message("[user] wipes [H]'s lipstick off with \the [src].", \ "You wipe off [H]'s lipstick.") H.lip_style = null diff --git a/code/modules/projectiles/guns/energy/mining.dm b/code/modules/projectiles/guns/energy/mining.dm index f6b910051c3..f2311454dac 100644 --- a/code/modules/projectiles/guns/energy/mining.dm +++ b/code/modules/projectiles/guns/energy/mining.dm @@ -21,6 +21,7 @@ /obj/item/weapon/gun/energy/kinetic_accelerator/attack_self(mob/living/user as mob) if(power_supply.charge < power_supply.maxcharge) + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) user << "You begin charging \the [src]..." if(do_after(user,20)) playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) @@ -69,7 +70,7 @@ /obj/item/projectile/kinetic name = "kinetic force" icon_state = null - damage = 30 + damage = 15 damage_type = BRUTE check_armour = "bomb" kill_count = 5 diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 154c284daa2..18a3e0e58d8 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -2628,10 +2628,10 @@ glass_desc = "A mug of a rich strong roast, you think it could be a lot better if someone added something extra to it." /datum/reagent/drink/white_coffee - name = "Café Au Lait" + name = "Cafe Au Lait" id = "white_coffee" description = "A fancy name for something thats just coffee and milk." - color = "#482000" + color = "#A64D07" adj_dizzy = -6 adj_drowsy = -4 adj_sleepy = -3 @@ -2641,7 +2641,7 @@ taste_description = "creamy coffee" glass_icon_state = "whitecoffee" - glass_name = "A mug of Café Au Lait" + glass_name = "A mug of Cafe Au Lait" glass_desc = "A fancy name for something thats just coffee and milk." /datum/reagent/drink/white_coffee/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) @@ -2649,10 +2649,10 @@ M.heal_organ_damage(0.5 * removed, 0) /datum/reagent/drink/cafe_melange - name = "Café Mélange" + name = "Cafe Melange" id = "cafe_melange" description = "A delicious mug of creamy coffee." - color = "#482000" + color = "#A64D07" adj_dizzy = -6 adj_drowsy = -4 adj_sleepy = -3 @@ -2662,7 +2662,7 @@ taste_description = "creamy coffee" glass_icon_state = "whitecoffee" - glass_name = "A mug of Café Mélange" + glass_name = "A mug of Cafe Melange" glass_desc = "A delicious mug of creamy coffee, keeps you cool headed in the most heated of situations." /datum/reagent/drink/cafe_melange/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 16e10dfacb2..7f3e17cda02 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -2228,14 +2228,14 @@ /////////////////////////////////////////Brightdawns super cool coffee drinks////////////////////////////////////////////// /datum/chemical_reaction/white_coffee - name = "Café Au Lait" + name = "Cafe Au Lait" id = "white_coffee" result = "white_coffee" required_reagents = list("milk" = 1, "black_coffee" = 2) result_amount = 3 /datum/chemical_reaction/cafe_melange - name = "Café Mélange" + name = "Cafe Melange" id = "cafe_melange" result = "cafe_melange" required_reagents = list("cream" = 1, "black_coffee" = 2) diff --git a/code/modules/reagents/dispenser/coffeebeans.dm b/code/modules/reagents/dispenser/coffeebeans.dm index fff719ffbbe..a4a6f5ea194 100644 --- a/code/modules/reagents/dispenser/coffeebeans.dm +++ b/code/modules/reagents/dispenser/coffeebeans.dm @@ -2,6 +2,7 @@ name = "A jar of Coffee Beans " desc = "This goes into a coffee maker!" label = "Spesscafe Dark Blend" + icon = 'icons/obj/drinks.dmi' icon_state = "coffeejar" w_class = 3 diff --git a/code/modules/reagents/dispenser/supply.dm b/code/modules/reagents/dispenser/supply.dm index f377df61f2b..e14acd529fc 100644 --- a/code/modules/reagents/dispenser/supply.dm +++ b/code/modules/reagents/dispenser/supply.dm @@ -38,7 +38,7 @@ containername = "coffee machine crate" group = "Hospitality" -datum/supply_packs/dispenser_cartridges +datum/supply_packs/dispenser_cartridges/coffee_beans name = "Coffee beans" containername = "coffee beans crate" containertype = /obj/structure/closet/crate diff --git a/code/modules/spells/aoe_turf/conjure/grove.dm b/code/modules/spells/aoe_turf/conjure/grove.dm index db452e7eb7b..b1e07ef0dcc 100644 --- a/code/modules/spells/aoe_turf/conjure/grove.dm +++ b/code/modules/spells/aoe_turf/conjure/grove.dm @@ -61,7 +61,7 @@ chems = list("bicaridine" = list(3,7), "dermaline" = list(3,7), "anti_toxin" = list(3,7), "tricordrazine" = list(3,7), "alkysine" = list(1,2), "imidazoline" = list(1,2), "peridaxon" = list(4,5)) kitchen_tag = "berries" -/datum/seed/merlin_tear/New() +/datum/seed/merlin_tear/setup_traits() ..() set_trait(TRAIT_PLANT_ICON,"bush5") set_trait(TRAIT_PRODUCT_ICON,"berry") diff --git a/html/changelog.html b/html/changelog.html index 5da672d5a91..07ad8be2143 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,14 @@ -->