Commit Graph

12668 Commits

Author SHA1 Message Date
Ghom
5b668898c4 Fix zero damage items not showing explicitly set attack verbs in chat (#55509)
Borked exactly five months ago by #52890.

This will close #55219.
2020-12-28 18:12:10 -08:00
MrMelbert
32c267d5b0 Adds a minor negative quirk: Bad Touch (for the anti-huggers) (#55334)
About The Pull Request

Adds a minor negative quirk, Bad Touch. This quirk gives you negative moodlets from hugs instead of positive ones, as well as negative moodlets from headpats and passive grabs.
Why It's Good For The Game

The quirk catalogue is still quite short and could use some more to fill it out. So here's a minor quirk that could be really fun or interesting to play with, especially if you also take unstable and/or hypersensitive, given how common hugs are in station life. Someone suggested it to me so I thought why not.
Changelog

🆑 Melbert
add: New negative quirk: 'Bad Touch'. With it, you gain a negative moodlet from being hugged instead of a positive one, and you gain a negative moodlet from headpats and grabs.
fix: blind people can now feel headpats
/🆑
2020-12-29 14:59:14 +13:00
Ghom
7bc81e5831 Refactors how movetypes are added and removed, No timers this time. (#55444) 2020-12-28 17:57:51 -08:00
Ryll Ryll
ab25267d13 Fixes dead people not looking dead (#55743) 2020-12-28 14:10:06 -08:00
coiax
829de91a77 Remove TRAIT_ALWAYS_CLEAN from codebase (#55765)
Hygiene is no longer a thing, and the TRAIT_ALWAYS_CLEAN trait is not
actually used anywhere anymore. So it can be safely removed.
2020-12-28 12:31:49 -08:00
Seris02
48efd2d8b2 punctuation (#55753)
Fixes two punctuation errors.
2020-12-28 10:37:33 +13:00
Timberpoes
b5332ee4db Deadchat plays everything - A simple way for admins to let deadchat control things. (#55314)
* Deadchat plays things

* Pocket lint

* View those variables

* Arr var

* Arrr save changes and don't code while drunk

* Loog dot exe

* Big ol' changes
2020-12-26 21:03:47 +01:00
Ghom
781e84d235 The ashdrake won't enrage anymore if all lava arena targets have gone clientless or deleted. (#55507) 2020-12-26 18:58:10 +08:00
necromanceranne
505dc8f057 Uranium Golems: Punch to Irradiate, not Exist to Irradiate (#55602)
* Uranium golems no longer irradiate by mere presence. Instead, they irradiate by punching people. Also some statistic changes including durability from brute damage, punch damage, etc. Also uranium golems can wear engineering clothes

* Adds radiation emissions from being struck as a uranium golem
2020-12-25 23:54:04 -08:00
Cenrus
4df69b0bf2 Grant medical HUD to Artificers (#55707) 2020-12-24 19:27:23 -08:00
Emmanuel S
23cd239d05 Specifies if DNR was pushed in body examine text (#55399)
Adds the examine text " and [t_his] soul has lost the will to live..." instead of the usual "soul departed" message if the person hits DNR.
2020-12-24 08:17:14 -03:00
Ryll Ryll
161c734e11 [READY] Refactors riding (#54778) 2020-12-24 02:17:29 -08:00
ArcaneDefence
306f2f0da6 No more original moth wings being set to none (#55672)
Moths that drink a potion of flight have their moth wings set to none, which their handle fire would store as their original, and that would be applied from reconstructive surgery.

Now potions of flight store an original, and handle fire checks to see if something was stored before, so it doesn't overwrite that.
2020-12-24 01:00:36 -08:00
Jared-Fogle
095f003b86 Fix redundancy in /mob/living/silicon/Login (#55639)
/mob/living/silicon/Login had duplicated code encapsulated in a "remove_antag_for_borging" proc:
2020-12-22 18:08:36 -08:00
coiax
b074296845 Fixes some bugs involving regal rats (#55688)
- Regal rats are supposed to, when examing other regal rats, see them as
  false kings. There was however, no check to see if you were looking at
  yourself.
- When clicking on anything when at full health, you would get a message
  about how you didn't need to eat anything. But you should only get
  those messages, when you're attempting to consume cheese.
2020-12-22 16:22:44 -08:00
coiax
2ef71ce90f Tweak cursed ice boots to NODROP only on equip (#55654)
Cursed ice hiking boots dropped by demonic frost miners only
become unremovable when worn.
2020-12-22 16:21:11 -08:00
TemporalOroboros
863977e5fa Makes reagent updates more event based, also makes plasma boil properly. (#54790)
Converts most on_reagent_change calls to signals.
Converts on_reagent_change to a signal handler.
Expands the reagent exposure signals
Add a setter proc and signal for reagent temperature
Fixes adjust_thermal_energy not sending a temperature change event
Makes min_temp and max_temp actually do something with adjust_thermal_energy
2020-12-22 19:20:00 -03:00
Ghom
cd1d49112c Fixing a very old issue about lizard snouts and hoods, fake mustaches and similars. (#55574)
Fixing a little visual issue with certain hoods, fake mustaches and similars making lizard snouts magically disappear when worn.
2020-12-20 16:28:52 -08:00
Rohesie
83e8dd3bc1 Generalizes hands blocked as unarmed attack block (#55579)
I suppose for bots there's a certain level of abstraction involved, but it makes sense within the context.
There's a pretty bad bug associated with shades here that this fixes.
2020-12-20 16:15:02 -08:00
NightRed
4f782a9f46 Fixes body temp damage to dead mobs (#55610)
Body and pressure damage were not intended to be skipped by dead mobs.
Fixed the checks and temp handles, they should react as follows

    Core temp only happens when alive and not in statis
    Skin temp always interacts with the air even in statis
    Temperature alerts always happen
    Damage from temperature when not in statis
    All of the above skipped when in cryo (it has separate temp handling code)

This will fix bodies not husking properly, and give alerts to body temp at all times.
2020-12-20 16:08:36 -08:00
Ryll Ryll
845630fb89 Hulks can now swing people by their tails + small changes to carbon throw impacts (#55383)
This PR adds another little interaction to hulks, letting them swing monkeys and humanoids with tails (so lizardpeople and felinids mainly) similar to (copied from) the wrestling move. To do this, be a hulk, have a carbon with a tail in at least a neck grab, target the groin, enable throw mode, then click in the direction you'd like to chuck them. After a short 2 second do_after, you'll start swinging your victim around and around by the tail, eventually sending them flying at a very, very high speed! The full process takes about 14 seconds from start to finish, not including getting them in a neck grab to begin with. Impacting a solid wall with no armor will do about 30 brute damage and can cause up to a hairline fracture if you're very unlucky.

This PR also makes a few changes to the effects of being thrown into things. Previously, you'd only suffer damage and a 2 second paralyze if you were thrown into solid turfs or carbon mobs, which meant smashing into windows or girders at high speed didn't do anything. This PR makes it so high speed impacts (I.E. hulk throws and high speed disposal outputs, not normal body throwing) into solid atoms will still deal a lesser amount of damage. Structures like windows and girders will deal a bit more damage and a small 1 second paralyze compared to other atoms

Why It's Good For The Game

Tail spinning adds a goofy niche power to hulk that doesn't just involve deleting walls and shrugging off stuns, and the other throw impact changes make being thrown into things at high speed more consistent rather than only applying to a specific type of atom.
2020-12-20 20:01:49 +13:00
Cenrus
e7a5ef1e09 Fix Broodmother spider action button (#55569) 2020-12-19 03:48:20 -08:00
Ryll Ryll
4bb58af0ea Kills twitching corpses dead (#55600)
* is this legal

* softcrit is okay
2020-12-19 03:42:59 -08:00
IndieanaJones
d44bb1ff9e [READY] Lavaland Elite Changes (#55367)
This PR just does some balancing to the Lavaland Elites, along with some QOL. The changes:

    Ability buttons now show the current cooldown on them for when you can attack again.

BROODMOTHER

    Nerfed Rage attack cooldown from 7 seconds to 10 seconds

HERALD

    Speed increased from 4 to 2
    Directional Shot cooldown nerfed from 5 to 3 seconds
    Projectiles now deal 20 damage instead of 15

LEGIONNAIRE

    Melee attacks now deal 35 damage instead of 30
    Charge is now much faster to perform once it starts moving (moves faster) and combos into itself
    Charge does melee damage per step now
    Smoke cooldown decreased from 6 to 4 seconds
    Fixed the bonfire not lighting things on fire who cross over it

PANDORA

    Damage tiles now deal 30 damage instead of 20
    Can no longer teleport to tiles it cannot see
    AOE Blast is now 7x7 instead of 5x5
    AOE Blast and Lineshot now move based on Pandora's current damage, speeding up as it gets lower

These are just some changes in order to better balance out the elites, giving strength to everyone but the broodmother and nerfing a tad BS attack the Broodmother possessed

Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
2020-12-18 13:56:55 -08:00
tralezab
ade6d47ed1 Refactors Beams to use signals: Revived from 2019 edition! BONUS: Medbeams are also refactored to use signals (#55193)
Huge removal of dead vars, bad timers, and other sloppy jitteriness from beams. They go from checking movement to waiting for a signal.
VARIABLE KILL LIST:

sleep_time: signals baby
finished: signals BAYBEEE
target_oldloc: not only not typecasted as a turf or named as a turf, it was unused. when are we going to use this? the beam starts from the origin!
origin_oldloc: bad name, not typecasted. renamed to originturf
static_beam: how are you an unused variable and still get replaced by signals like really
timing_id: signallllss bbbaaaabbyy
recalculating: you get the drill by now signals baby
base_icon: unused, seemingly replaced by visuals I think
2020-12-18 13:52:55 -08:00
Rob Bailey
cb01640043 Filterrific! (#55246)
Filter refactor + In Game Filter Editor
Accessed via VV in the dropdown of atoms. "Edit Filters.
Makes filters actually usable.

Co-authored-by: ghgh <hghgh>
2020-12-18 20:05:20 +02:00
LemonInTheDark
aea44cd545 Prevents simple animals from creating/destroying 1 footstep component per process (#55599) 2020-12-18 12:07:41 +01:00
drongood12
5abca05715 Removed semicolon output in critical state (#55396)
removed semicolon display in critical health

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2020-12-18 02:30:09 -08:00
NightRed
fb6ab73f80 Added passflags to bots (#55581) 2020-12-17 21:01:44 -08:00
wesoda25
2e3171fc66 Update shadowpeople.dm (#55547)
Nightmare light eaters can no longer be deleted using acid
2020-12-17 14:23:00 -08:00
Azarak
0a3edac8fb Fixes GC for observers and new players, and tons of loose references to stuff that shouldnt be (#55563)
I've done this on a signal because atom_hud is applied very loosely in some contexes, and the objects themselves dont have an easy way to track back into what huds they're affected by, so this seemed the best. Properly cleans up next_time_allowed, which was missing.

Update: I discovered this is also an issue for a lot of simple mobs, such as slimes and bots and such. So fixing this is huge
2020-12-17 01:42:49 -08:00
LemonInTheDark
c5698a21c4 Removes roundstart miasma. Yes, even the gibs that are marked as miasma producers. Fuck you. Carbons now start listening for death at init, then get the component when they die. Gibs behave just as they used to. (#55343) 2020-12-16 21:27:01 -08:00
Yenwodyah
16e8e9d5d8 null AI transfers through transformations correctly (#55535) 2020-12-16 21:21:48 -08:00
silicons
7bddb07fc9 fixes the clusterfuck of projectile issues (#55495) 2020-12-16 14:13:31 -08:00
KathrinBailey
681b15b674 Refactors how humans receive damage from xenomorphs, monkeys & slimes (#55389)
melee_damager_lower and melee_damage_lower has been moved from living/simple_animal to living.
Humans receive damage from xenomorphs, monkeys and slimes via random math between these two variables instead of hardcoded values.
2020-12-14 07:13:38 -03:00
TemporalOroboros
a4a19f8441 Removes vestigial code (#55492) 2020-12-14 00:22:42 -08:00
Emmanuel S
3b733918a8 Disconnect and Reconnect messages for deadchat (#55395)
adds messages to deadchat when a client with a mob disconnects or reconnects
2020-12-14 06:53:15 +00:00
Arkatos1
d4c0dee396 Cyborg skin selection fix (#55328)
* Borg skin selection fix

* Cleaner fix
2020-12-13 13:31:48 +01:00
Qustinnus
12c1464bc3 [READY] Creates Datumized AI and applies it to monkeys (#55238)
New AI system, implemented for monkeys.
2020-12-13 13:19:54 +01:00
Ryll Ryll
1ead399589 You can sacrifice souls to toolboxes (#55306)
So, now that it's December, this PR makes it so you can use a soulstone with a shade in it on a mechanical toolbox to sacrifice the shade to give the toolbox back its SOUL (it goes back to the old sprite)
2020-12-13 00:12:58 +00:00
interestingusernam3
b2ae312f33 Prevents bypassing the bluespace anomaly core limit by killing ice demons (#55454)
Ice demons now have a 5% chance to drop a raw bs anomaly core instead of a 5% chance to drop an active one.
Fixes #55229
2020-12-12 19:02:07 +00:00
Coffee
f1e339b86d Adds binds for targeting the eyes and mouth (#55299) 2020-12-10 19:17:22 -08:00
Jared-Fogle
0a77d27a1b Replace direct poi_list manipulation with element (#55416)
Replaces GLOB.poi_list |= src and GLOB.poi_list -= src with an element that handles it directly.

More consistent code, especially when a lot of code couldn't decide how to add/remove (some |=, some -=, some .Remove, etc).
2020-12-10 23:30:25 +00:00
Jared-Fogle
7d3fd4355f Everything that uses maptext now uses the class that makes it actually readable (#55420)
Adds a MAPTEXT macro that wraps the given text in the maptext class, the thing we use for Runechat to make it so you can actually read it. Everything that sets maptext now uses this.
2020-12-10 23:25:46 +00:00
LemonInTheDark
92f509ea80 Revert "Refactors how movetype flags are added and removed and the floating animation (#54963)" (#55432)
This reverts commit b8425c003a.
2020-12-09 19:30:28 -08:00
silicons
160175ee8b pass_flags handling refactor + rewrites a part of projectiles for the n-th time (#54924)
Yeah uhh this'll probably need testmerging even after it's done because yeah it's a bit big.
If y'all want me to atomize this into two PRs (pass flags vs projectiles) tell me please. Pass flags would have to go in first though, in that case, as new projectile hit handling will rely on pass_flags_self.
Pass flags:

Pass flags handling now uses an atom variable named pass_flags_self.
If any of these match a pass_flag on a thing trying to pass through, it's allowed through by default.
This makes overriding CanAllowThrough unnecessary for the majority of things. I've however not removed overrides for very.. weird cases, like plastic flaps which uses a prob(60) for letting PASSGLASS things through for god knows why.
LETPASSTHROW is now on pass_flags_self
Projectiles:

Not finalized yet, need to do something to make the system I have in mind have less unneeded overhead + snowflake

Basically, for piercing/phasing/otherwise projectiles that go through things instead of hitting the first dense object, I have them use pass_flags flags for two new variables, projectile_phasing and projectile_piercing. Anything with pass_flags_self in the former gets phased through entirely. Anything in the latter gets hit, and the projectile then goes through. on_hit will also register a piercing hit vs a normal hit (so things like missiles can only explode on a normal hit or otherwise, instead of exploding multiple times. Not needed as missiles qdel(src) right now but it's nice to have for the future).

I still need to decide what to do for hit handling proper, as Bump() is still preferred due to it not being as high-overhead as something like scanning on Moved(). I'm thinking I'll make Moved() only scan for cases where it needs to hit a non-dense object - a prone human the user clicked on, anything special like that. Don't know the exact specifics yet, which is why this is still WIP.

Projectiles now use check_pierce() to determine if it goes through something and hits it, doesn't hit it, or doesn't go through something at all (should delete self after hitting). Will likely make an on_pierce proc to be called post-piercing something so you can have !fun! things like projectiles that go down in damage after piercing something. This will likely deprecate the process_hit proc, or at least make it less awful.

scan_for_hit() is now used to attempt to hit something and will return whether the projectile got deleted or not. It will delete the projectile if the projectile does hit something and fails to pierce through it.

scan_moved_turf() (WIP) will be used for handling moving onto a turf.

permutated has been renamed to impacted. Ricocheting projectiles get it reset, allowing projectiles to pierce and potentially hit something again if it goes back around.

A new unit test has been added checking for projectiles with movement type of PHASING. This is because PHASING completely causes projectiles to break down as projectiles mainly sense collisions through Bump. The small boost in performance from using PHASING instead of having all pass flags active/overriding check_pierce is in my opinion not worth the extra snowflake in scan_moved_turf() I'd have to do to deal with having to check for hits manually rather than Bump()ing things.
Movement types

UNSTOPPABLE renamed to PHASING to better describe what it is, going through and crossing everything but not actually bumping.
Why It's Good For The Game

Better pass flags handling allows for less proc overrides, bitflag checks are far less expensive in general.

Fixes penetrating projectiles like sniper penetrators

This system also allows for better handling of piercing projectiles (see above) without too much snowflake code, as you'd only need to modify on_pierce() if you needed to do special handling like dampening damage per target pierced, and otherwise you could just use the standardized system and just set pass flags to what's needed. If you really need a projectile that pierces almost everything, override check_pierce(), which is still going to be easier than what was done before (even with snowflake handling of UNSTOPPABLE flag process_hit() was extremely ugly, now we don't rely on movement types at all.)
2020-12-10 09:29:27 +13:00
Ghom
b8425c003a Refactors how movetype flags are added and removed and the floating animation (#54963)
I wanted to refactor how movetype flags are added and removed into traits to prevent multiple sources of specific movement types from conflicting one other. I ended up also having to refactor the floating animation loop (the one that bobs up and down) code in the process.
Why It's Good For The Game

A way to avoid conflict from multiple sources of movement types.
This also stops melee attacks, jitteriness and update_transform() from temporarily disabling the floating movetype bitflag altogether until the next life tick.

Tested, but i'm pretty sure improvements could be made.
Changelog

cl
fix: jitteriness, melee attack animations and resting/standing up should no longer momentarily remove the floating movement type.
/cl
2020-12-10 09:28:32 +13:00
Qustinnus
8737e8cb80 Small do-after refactor (#55172)
This is an alternative to the PR Ryll made, it does some things similar e.g. the default limit of 1 interaction per target for a person, however, it refactors do_afters to support overrides for max interaction counts and unique sources.

For example, stripping uses the item being stripped as the source, allowing you to strip multiple items, but not the same item multiple times.

I've also fixed most other edge-cases this could cause where balance would be affected, but feel free to point out any I might've missed, this'll probably require some longer-term testmerging.
2020-12-07 13:04:51 -08:00
Qustinnus
4650a5d7ee Sound Environments - Adds reverb and echo to rooms (#55333)
Jack and Style figured out that sound environments can be cancelled by setting some settings in Echo. By default audio has no reverb, but if a sound environment is selected in playsound_local it will become a reverb sound.

This makes every room sound a bit different. The only caveat is is that if you move into another room, Already playing sounds will transition into the new environment, which sounds odd.

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-12-07 11:53:58 +02:00
Fikou
aa9c58f1f8 Reworks the champion's hardsuit (#55337)
fixes hiero staff recall mesage not working
Reworks the champion's hardsuit
changes:
name: champion's hardsuit -> berserker hardsuit
armor: (MELEE = 65, BULLET = 50, LASER = 50, ENERGY = 60, BOMB = 50, BIO = 100, RAD = 100, FIRE = 80, ACID = 80) -> (MELEE = 30, BULLET = 10, LASER = 10, ENERGY = 20, BOMB = 10, BIO = 100, RAD = 10, FIRE = 100, ACID = 100)
doesnt have ert stripping time so its shorter
it cant hold the pka or cutter on itself, but it carries knives, resonators, spears and the crusher
adds berserk mechanic: with every hit you take thats not from yourself, you get berserk charge equal to the damage dealt to you divided by 4, if its a projectile attack this value is multiplied by 1.5, so a 20 damage melee hit gives you 5 charge, while a 20 damage projectile gives you 7 charge
use berserk ability with 100 charge to go berserk
you move a bit faster, you hit 2 times faster, you get a cool color and your melee armor is massively increased for the duration (about 10 seconds?), but you cannot shoot guns during the effect
2020-12-06 23:47:12 -08:00