diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm index e24462f6493..73a1576deeb 100644 --- a/code/_onclick/hud/action_button.dm +++ b/code/_onclick/hud/action_button.dm @@ -7,6 +7,7 @@ var/list/modifiers = params2list(params) if(modifiers["shift"]) moved = 0 + usr.update_action_buttons() //redraw buttons that are no longer considered "moved" return 1 if(usr.next_move >= world.time) // Is this needed ? return diff --git a/code/controllers/subsystem/fastprocess.dm b/code/controllers/subsystem/fastprocess.dm new file mode 100644 index 00000000000..8bed991dbdc --- /dev/null +++ b/code/controllers/subsystem/fastprocess.dm @@ -0,0 +1,36 @@ +var/datum/subsystem/fastprocess/SSfastprocess + +/datum/subsystem/fastprocess + name = "Fast Process" + priority = -1 + wait = 1 + dynamic_wait = 1 + dwait_upper = 300 + dwait_lower = 1 + dwait_delta = 7 + + var/list/processing = list() + var/list/currentrun = list() + +/datum/subsystem/fastprocess/New() + NEW_SS_GLOBAL(SSfastprocess) + +/datum/subsystem/fastprocess/stat_entry() + ..("FP:[processing.len]") + + +/datum/subsystem/fastprocess/fire(resumed = 0) + if (!resumed) + src.currentrun = processing.Copy() + //cache for sanic speed (lists are references anyways) + var/list/currentrun = src.currentrun + + while(currentrun.len) + var/datum/thing = currentrun[1] + currentrun.Cut(1, 2) + if(thing) + thing.process(wait) + else + SSfastprocess.processing -= thing + if (MC_TICK_CHECK) + return diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 5b27efc1420..8b8b70de1b9 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -83,7 +83,7 @@ item_state = "cult_hoodalt" /obj/item/clothing/suit/cultrobes/alt - name = "cultist hood" + name = "cultist robes" desc = "An armored set of robes worn by the followers of Nar-Sie." icon_state = "cultrobesalt" item_state = "cultrobesalt" diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm index 261e6492ea3..9e28fb9b116 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm @@ -54,8 +54,9 @@ reveal(46) stun(46) target.visible_message("[target] suddenly rises slightly into the air, their skin turning an ashy gray.") - Beam(target,icon_state="drain_life",icon='icons/effects/effects.dmi',time=46) + var/datum/beam/B = Beam(target,icon_state="drain_life",icon='icons/effects/effects.dmi',time=46) if(do_after(src, 46, 0, target)) //As one cannot prove the existance of ghosts, ghosts cannot prove the existance of the target they were draining. + qdel(B) change_essence_amount(essence_drained, 0, target) if(essence_drained <= 90 && target.stat != DEAD) essence_regen_cap += 5 @@ -70,6 +71,7 @@ drained_mobs.Add(target) target.death(0) else + qdel(B) src << "[target ? "[target] has":"They have"] been drawn out of your grasp. The link has been broken." draining = 0 essence_drained = 0 diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 55d502fc8b8..2dee631f659 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -433,6 +433,12 @@ This is here to make the tiles around the station mininuke change when it's arme if(blobstart.len > 0) var/turf/targetturf = get_turf(pick(blobstart)) var/turf/diskturf = get_turf(src) + if(ismob(loc)) + var/mob/M = loc + M.remove_from_mob(src) + if(istype(loc, /obj/item/weapon/storage)) + var/obj/item/weapon/storage/S = loc + S.remove_from_storage(src, diskturf) forceMove(targetturf) //move the disc, so ghosts remain orbitting it even if it's "destroyed" message_admins("[src] has been destroyed in ([diskturf.x], [diskturf.y] ,[diskturf.z] - JMP). Moving it to ([targetturf.x], [targetturf.y], [targetturf.z] - JMP).") log_game("[src] has been destroyed in ([diskturf.x], [diskturf.y] ,[diskturf.z]). Moving it to ([targetturf.x], [targetturf.y], [targetturf.z]).") diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 77a56876f9d..a529aa05626 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -15,6 +15,7 @@ required_enemies = 1 recommended_enemies = 4 reroll_friendly = 1 + enemy_minimum_age = 0 var/traitors_possible = 4 //hard limit on traitors if scaling is turned off var/num_modifier = 0 // Used for gamemodes, that are a child of traitor, that need more than the usual. diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index a316b84ea61..0e209bbc190 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -117,16 +117,23 @@ Class Procs: var/unsecuring_tool = /obj/item/weapon/wrench var/interact_open = 0 // Can the machine be interacted with when in maint/when the panel is open. var/interact_offline = 0 // Can the machine be interacted with while de-powered. + var/speed_process = 0 // Process as fast as possible? /obj/machinery/New() ..() machines += src - SSmachine.processing += src + if(!speed_process) + SSmachine.processing += src + else + SSfastprocess.processing += src power_change() /obj/machinery/Destroy() machines.Remove(src) - SSmachine.processing -= src + if(!speed_process) + SSmachine.processing -= src + else + SSfastprocess.processing -= src dropContents() return ..() diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 91b9c1ecd36..435a07bdbc8 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -12,7 +12,7 @@ var/amount = 3 animate_movement = 0 var/metal = 0 - var/lifetime = 6 + var/lifetime = 40 /obj/effect/particle_effect/foam/metal @@ -29,16 +29,16 @@ /obj/effect/particle_effect/foam/New(loc) ..(loc) create_reagents(1000) //limited by the size of the reagent holder anyway. - SSobj.processing |= src + SSfastprocess.processing |= src playsound(src, 'sound/effects/bubbles2.ogg', 80, 1, -3) /obj/effect/particle_effect/foam/Destroy() - SSobj.processing.Remove(src) + SSfastprocess.processing.Remove(src) return ..() /obj/effect/particle_effect/foam/proc/kill_foam() - SSobj.processing.Remove(src) + SSfastprocess.processing.Remove(src) if(metal) var/obj/structure/foamedmetal/M = new(src.loc) M.metal = metal diff --git a/code/game/objects/items/weapons/grenades/clusterbuster.dm b/code/game/objects/items/weapons/grenades/clusterbuster.dm index d75fc7b7db1..4c37eb05a0d 100644 --- a/code/game/objects/items/weapons/grenades/clusterbuster.dm +++ b/code/game/objects/items/weapons/grenades/clusterbuster.dm @@ -124,3 +124,7 @@ /obj/item/weapon/grenade/clusterbuster/soap name = "Slipocalypse" payload = /obj/item/weapon/grenade/spawnergrenade/syndiesoap + +/obj/item/weapon/grenade/clusterbuster/clf3 + name = "WELCOME TO HELL" + payload = /obj/item/weapon/grenade/chem_grenade/clf3 \ No newline at end of file diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 91073bb45cc..a70646b95f2 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -744,7 +744,7 @@ access = access_rd contains = list(/obj/item/device/transfer_valve, /obj/item/device/transfer_valve) - crate_name = "tank transfer valves crate crate" + crate_name = "tank transfer valves crate" crate_type = /obj/structure/closet/crate/secure dangerous = TRUE @@ -802,7 +802,7 @@ /obj/item/weapon/reagent_containers/food/drinks/beer, /obj/item/weapon/reagent_containers/food/drinks/beer, /obj/item/weapon/reagent_containers/food/drinks/beer) - crate_name = "party equipment" + crate_name = "party equipment crate" /datum/supply_pack/organic/critter crate_type = /obj/structure/closet/crate/critter @@ -955,7 +955,7 @@ /obj/item/clothing/suit/beekeeper_suit, /obj/item/clothing/head/beekeeper_head, /obj/item/clothing/suit/beekeeper_suit) - crate_name = "beekeper suits" + crate_name = "beekeeper suits" /datum/supply_pack/organic/vending name = "Bartending Supply Crate" @@ -982,7 +982,7 @@ contains = list(/obj/item/weapon/vending_refill/cola, /obj/item/weapon/vending_refill/cola, /obj/item/weapon/vending_refill/cola) - crate_name = "softdrinks supply crate" + crate_name = "soft drinks supply crate" /datum/supply_pack/organic/vending/cigarette name = "Cigarette Supply Crate" @@ -1193,7 +1193,7 @@ name = "High-traction Floor Tiles" cost = 2000 contains = list(/obj/item/stack/tile/noslip/thirty) - crate_name = "high-traction floor tiles" + crate_name = "high-traction floor tiles crate" /datum/supply_pack/misc/plasmaman name = "Plasmaman Supply Kit" diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 1577418abdd..7fa36f22b3e 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -125,10 +125,10 @@ permeability_coefficient = 0.50 flags = THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/device/geiger_counter) slowdown = 1.5 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) strip_delay = 60 put_on_delay = 60 flags_inv = HIDEJUMPSUIT - burn_state = FIRE_PROOF \ No newline at end of file + burn_state = FIRE_PROOF diff --git a/code/modules/food&drinks/food/snacks_other.dm b/code/modules/food&drinks/food/snacks_other.dm index b43aab23ef4..f962ff5e48e 100644 --- a/code/modules/food&drinks/food/snacks_other.dm +++ b/code/modules/food&drinks/food/snacks_other.dm @@ -319,4 +319,12 @@ list_reagents = list("nutriment" = 9, "vodka" = 15, "vitamin" = 4) filling_color = "#FFD700" volume = 80 - bitesize = 5 \ No newline at end of file + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/honeybar + name = "honey nut bar" + desc = "Oats and nuts compressed together into a bar, held together with a honey glaze." + icon_state = "honeybar" + bonus_reagents = list("nutriment" = 2, "honey" = 2, "vitamin" = 2) + list_reagents = list("nutriment" = 5, "honey" = 5) + filling_color = "#F2CE91" \ No newline at end of file diff --git a/code/modules/food&drinks/food/snacks_pastry.dm b/code/modules/food&drinks/food/snacks_pastry.dm index f3f3dbe1603..1e5362a5b54 100644 --- a/code/modules/food&drinks/food/snacks_pastry.dm +++ b/code/modules/food&drinks/food/snacks_pastry.dm @@ -266,3 +266,11 @@ bonus_reagents = list("nutriment" = 1, "vitamin" = 3) list_reagents = list("nutriment" = 5, "vitamin" = 1) filling_color = "#F0E68C" + +/obj/item/weapon/reagent_containers/food/snacks/honeybun + name = "honey bun" + desc = "A sticky pastry bun glazed with honey." + icon_state = "honeybun" + bonus_reagents = list("nutriment" = 1, "honey" = 1) + list_reagents = list("nutriment" = 5, "honey" = 5) + filling_color = "#F2CE91" \ No newline at end of file diff --git a/code/modules/food&drinks/recipes/drinks_recipes.dm b/code/modules/food&drinks/recipes/drinks_recipes.dm index c869a11842d..43c5cf9cf1e 100644 --- a/code/modules/food&drinks/recipes/drinks_recipes.dm +++ b/code/modules/food&drinks/recipes/drinks_recipes.dm @@ -364,7 +364,7 @@ name = "Mead" id = "mead" result = "mead" - required_reagents = list("sugar" = 1, "water" = 1) + required_reagents = list("honey" = 2) required_catalysts = list("enzyme" = 5) result_amount = 2 diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm index 3f788ac4672..8db215dae2c 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm @@ -247,4 +247,13 @@ ) parts = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka = 1) result = /obj/item/weapon/reagent_containers/food/snacks/melonkeg + category = CAT_FOOD + +/datum/table_recipe/honeybar + name = "Honey nut bar" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/grown/oat = 1, + /datum/reagent/consumable/honey = 5 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/honeybar category = CAT_FOOD \ No newline at end of file diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm index 2da19136d3c..99305007696 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm @@ -267,4 +267,13 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/bluecherrycupcake + category = CAT_FOOD + +/datum/table_recipe/honeybun + name = "Honey bun" + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1, + /datum/reagent/consumable/honey = 5 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/honeybun category = CAT_FOOD \ No newline at end of file diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 6964eea4d11..a23090ba4e2 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -20,6 +20,7 @@ var/sheet_per_ore = 1 var/point_upgrade = 1 var/list/ore_values = list(("sand" = 1), ("iron" = 1), ("plasma" = 15), ("silver" = 16), ("gold" = 18), ("uranium" = 30), ("diamond" = 50), ("bananium" = 60)) + speed_process = 1 /obj/machinery/mineral/ore_redemption/New() ..() diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 2274a61b20b..43e0b8cac4d 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -8,6 +8,7 @@ anchored = 1 var/obj/machinery/mineral/processing_unit/machine = null var/machinedir = EAST + speed_process = 1 /obj/machinery/mineral/processing_unit_console/New() ..() diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index 37ce43abc46..9d63e3de4de 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -8,6 +8,7 @@ anchored = 1 var/obj/machinery/mineral/stacking_machine/machine = null var/machinedir = SOUTHEAST + speed_process = 1 /obj/machinery/mineral/stacking_unit_console/New() ..() diff --git a/code/modules/mining/machine_unloading.dm b/code/modules/mining/machine_unloading.dm index 4c86526f01d..becb4624805 100644 --- a/code/modules/mining/machine_unloading.dm +++ b/code/modules/mining/machine_unloading.dm @@ -9,6 +9,7 @@ anchored = 1 input_dir = WEST output_dir = EAST + speed_process = 1 /obj/machinery/mineral/unloading_machine/process() var/turf/T = get_step(src,input_dir) @@ -21,8 +22,11 @@ limit++ if (limit>=10) return + CHECK_TICK + CHECK_TICK for(var/obj/item/I in T) unload_mineral(I) limit++ if (limit>=10) - return \ No newline at end of file + return + CHECK_TICK \ No newline at end of file diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index 3caefd09573..6da4c611b2a 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -20,6 +20,7 @@ var/processing = 0 var/chosen = "metal" //which material will be used to make coins var/coinsToProduce = 10 + speed_process = 1 /obj/machinery/mineral/mint/process() var/turf/T = get_step(src,input_dir) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 8931b869b4d..889ab80d2a3 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -446,7 +446,7 @@ var/global/list/parasites = list() //all currently existing/living guardians ling_failure = "The holoparasites recoil in horror. They want nothing to do with a creature like you." /obj/item/weapon/guardiancreator/tech/choose/traitor - possible_guardians = list("Chaos", "Standard", "Ranged", "Support", "Explosive", "Lightning", "Assassin") + possible_guardians = list("Assassin", "Chaos", "Charger", "Explosive", "Lightning", "Ranged", "Standard", "Support") /obj/item/weapon/guardiancreator/tech/choose random = FALSE @@ -456,20 +456,23 @@ var/global/list/parasites = list() //all currently existing/living guardians icon_state = "paper_words" info = {"A list of Holoparasite Types
+
+ Assassin: Does low damage and takes full damage, but can enter stealth, causing its next attack to do massive damage and ignore armor. However, it becomes briefly unable to recall after attacking from stealth.

Chaos: Ignites enemies on touch and causes them to hallucinate all nearby people as the parasite. Automatically extinguishes the user if they catch on fire.

- Standard: Devastating close combat attacks and high damage resist. Can smash through weak walls.
-
- Ranged: Has two modes. Ranged; which fires a constant stream of weak, armor-ignoring projectiles. Scout; Cannot attack, but can move through walls and is quite hard to see. Can lay surveillance snares, which alert it when crossed, in either mode.
-
- Support: Has two modes. Combat; Medium power attacks and damage resist. Healer; Heals instead of attack, but has low damage resist and slow movement. Can deploy a bluespace beacon and warp targets to it (including you) in either mode.
+ Charger: Moves extremely fast, does medium damage on attack, and can charge at targets, damaging the first target hit and forcing them to drop any items they are holding.

Explosive: High damage resist and medium power attack that may explosively teleport targets. Can turn any object, including objects too large to pick up, into a bomb, dealing explosive damage to the next person to touch it. The object will return to normal after the trap is triggered or after a delay.

Lightning: Attacks apply lightning chains to targets. Has a lightning chain to the user. Lightning chains shock everything near them, doing constant damage.

- Assassin: Does low damage and takes full damage, but can enter stealth, causing its next attack to do massive damage and ignore armor. However, it becomes briefly unable to recall after attacking from stealth.
Ranged: Has two modes. Ranged; which fires a constant stream of weak, armor-ignoring projectiles. Scout; Cannot attack, but can move through walls and is quite hard to see. Can lay surveillance snares, which alert it when crossed, in either mode.
+
+ Standard: Devastating close combat attacks and high damage resist. Can smash through weak walls.
+
+ Support: Has two modes. Combat; Medium power attacks and damage resist. Healer; Heals instead of attack, but has low damage resist and slow movement. Can deploy a bluespace beacon and warp targets to it (including you) in either mode.
+
"} /obj/item/weapon/paper/guardian/update_icon() diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm index 895f7ef38c7..98bf2ee731d 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm @@ -7,7 +7,7 @@ ranged_cooldown_cap = 5 speed = -1 damage_coeff = list(BRUTE = 0.6, BURN = 0.6, TOX = 0.6, CLONE = 0.6, STAMINA = 0, OXY = 0.6) - playstyle_string = "As a charger type you do medium damage, have medium damage resistance, move very fast, and can charge at a location, stunning and heavily damaging any target hit." + playstyle_string = "As a charger type you do medium damage, have medium damage resistance, move very fast, and can charge at a location, damaging any target hit and forcing them to drop any items they are holding." magic_fluff_string = "..And draw the Hunter, an alien master of rapid assault." tech_fluff_string = "Boot sequence complete. Charge modules loaded. Holoparasite swarm online." var/charging = 0 @@ -60,8 +60,9 @@ blocked = 1 if(!blocked) + L.drop_r_hand() + L.drop_l_hand() L.visible_message("[src] slams into [L]!", "[src] slams into you!") - L.Weaken(2) L.apply_damage(20, BRUTE) charging = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/zombie.dm b/code/modules/mob/living/simple_animal/hostile/zombie.dm index 9d0f091fa37..89ac80ec193 100644 --- a/code/modules/mob/living/simple_animal/hostile/zombie.dm +++ b/code/modules/mob/living/simple_animal/hostile/zombie.dm @@ -9,9 +9,9 @@ speak_emote = list("groans") emote_see = list("groans") a_intent = "harm" - maxHealth = 100 - health = 100 - speed = 1 + maxHealth = 180 + health = 180 + speed = 2 harm_intent_damage = 8 melee_damage_lower = 20 melee_damage_upper = 20 @@ -51,6 +51,19 @@ visible_message("[src] tears [L] to pieces!") src << "You feast on [L], restoring your health!" revive(full_heal = 1) + + if(istype(target, /obj/machinery/door/airlock)) + src << "You start tearing apart the airlock..." + playsound(src.loc, 'sound/hallucinations/growl3.ogg', 50, 1) + if(do_after(src, 250, target)) + playsound(src.loc, 'sound/hallucinations/far_noise.ogg', 50, 1) + qdel(target) + var/obj/machinery/door/airlock/A = target + var/obj/structure/door_assembly/door = new A.doortype(target.loc) + door.density = 0 + door.anchored = 1 + door.name = "ravaged airlock" + door.desc = "An airlock that has been torn apart. Looks like it wont be keeping much out now." /mob/living/simple_animal/hostile/zombie/death() ..() @@ -64,7 +77,7 @@ qdel(src) return src << "You're down, but not quite out. You'll be back on your feet within a minute or two." - spawn(rand(800,1200)) + spawn(rand(600,900)) if(src) visible_message("[src] staggers to their feet!") revive(full_heal = 1) diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index ddb7c03f3b2..8ae2c6bd124 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -1,5 +1,5 @@ -#define UPGRADE_COOLDOWN 100 -#define UPGRADE_KILL_TIMER 150 +#define UPGRADE_COOLDOWN 60 +#define UPGRADE_KILL_TIMER 100 /obj/item/weapon/grab name = "grab" @@ -104,12 +104,13 @@ var/breathing_tube = affecting.getorganslot("breathing_tube") if(state >= GRAB_NECK) + affecting.Stun(2) //It will hamper your voice, being choked and all. if(isliving(affecting) && !breathing_tube) var/mob/living/L = affecting L.adjustOxyLoss(0.5) if(state >= GRAB_KILL) - affecting.Weaken(2) //Should keep you down unless you get help. + affecting.Weaken(5) //Should keep you down unless you get help. if(!breathing_tube) affecting.losebreath = min(affecting.losebreath + 2, 3) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index d21809aa4d0..9a2f72274dc 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -228,14 +228,14 @@ if(GRAB_AGGRESSIVE) move_delay = world.time + 10 - if(!prob(75)) + if(!prob(50)) return 1 mob.visible_message("[mob] has broken free of [G.assailant]'s grip!") qdel(G) if(GRAB_NECK) move_delay = world.time + 10 - if(!prob(50)) + if(!prob(15)) return 1 mob.visible_message("[mob] has broken free of [G.assailant]'s headlock!") qdel(G) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index e2e5e3c8b3c..82646434ca9 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -302,6 +302,9 @@ S.name = "statue of [H.name]" S.faction = list("\ref[firer]") S.icon = change.icon + S.icon_state = change.icon_state + S.overlays = change.overlays + S.color = change.color if(H.mind) H.mind.transfer_to(S) S << "You are an animate statue. You cannot move when monitored, but are nearly invincible and deadly when unobserved! Do not harm [firer.name], your creator." diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 7681ede8dbc..2e12d38cbf6 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -16,6 +16,7 @@ var/list/affecting // the list of all items that will be moved this ptick var/id = "" // the control ID - must match controller ID var/verted = 1 // set to -1 to have the conveyour belt be inverted, so you can use the other corner icons + speed_process = 1 /obj/machinery/conveyor/centcom_auto id = "round_end_belt" @@ -105,15 +106,12 @@ use_power(100) affecting = loc.contents - src // moved items will be all in loc - sleep(1) // slight delay to prevent infinite propagation due to map order - var/items_moved = 0 + sleep(1) for(var/atom/movable/A in affecting) if(!A.anchored) if(A.loc == src.loc) // prevents the object from being affected if it's not currently here. step(A,movedir) - items_moved++ - if(items_moved >= 10) - break + CHECK_TICK // attack with item, place item on conveyor /obj/machinery/conveyor/attackby(obj/item/I, mob/user, params) @@ -125,7 +123,7 @@ user << "You remove the conveyor belt." qdel(src) return - if(istype(I, /obj/item/weapon/wrench)) + if(istype(I, /obj/item/weapon/wrench)) if(!(stat & BROKEN)) playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) dir = turn(dir,-45) @@ -203,6 +201,7 @@ var/list/conveyors // the list of converyors that are controlled by this switch anchored = 1 + speed_process = 1 @@ -240,6 +239,7 @@ for(var/obj/machinery/conveyor/C in conveyors) C.operating = position C.update_move_direction() + CHECK_TICK // attack with hand, switch position /obj/machinery/conveyor_switch/attack_hand(mob/user) @@ -266,6 +266,7 @@ if(S.id == src.id) S.position = position S.update() + CHECK_TICK /obj/machinery/conveyor_switch/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/crowbar)) diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index d416f60b429..77e9d350cd3 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -8,7 +8,6 @@ var/giftwrapped = 0 var/sortTag = 0 - /obj/structure/bigDelivery/attack_hand(mob/user) playsound(src.loc, 'sound/items/poster_ripped.ogg', 50, 1) qdel(src) diff --git a/html/changelog.html b/html/changelog.html index fb95882fbab..b1cca899edc 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,21 @@ -->
+

30 March 2016

+

Coiax updated:

+ +

RemieRichards updated:

+ +

TehZombehz updated:

+ +

29 March 2016

Bawhoppen updated: