Commit Graph

11477 Commits

Author SHA1 Message Date
Ghom
699563c233 lava and weather immunities refactor (also jump boots fix) (#61003)
In remembrance of all those people who used jump boots to cross lava unaware of an issue c*ders wouldn't fix....

EDIT: This is now a lava and weather immunities refactor:
Weather immunities are now status traits since they have a multitude of sources (especially for lava) which might conflict with one another otherwise.
The lava burn_stuff proc has also been been refactored in different procs, mostly because of that snowdin subtype with inconsistent, old checks.
Weather datums should now use can_weather_act instead of weather_act to check if something can be affected by weather or not, as they should.
All movables can protect contained mobs if they have the relative weather immunity traits. This works at any contents depth.
No more snowflake weather_protection variable for closets.
Removed the weather_immunities list from living mobs (simple animals still have it but it's only for traits assignment on init because way too many child types lack the immunities of their parents).
Removed some unused defines.
Renamed some variables as per guidelines.
It has been tested.
And yea, jump boots fixed because that's the original scope of this PR.

(Initially just made throwing make you fire immune, that was blocked because it breaks perma stuff, instead it ended up be a refactor to make jumpboots usable with weather immumnity stuff
2021-08-31 14:07:19 -07:00
小月猫
62cf2ef21b small refactor to can_interact() so that borg range is fully respected (#60693)
Its a relatively small refactor that changes the previous machinery "can_interact()" proc that literally did a full override despite half of their checks already existing in not one, but TWO parent procs, so i removed the redundant checks, added callbacks to its parents and then added the cyborg range check on the can_interact_with() itself. in doing so i also moved the interaction range var from silicons only, to mobs as a whole and defaulted it to a single tile, silicons override it to 7 (so pAIs and borgs like before) but then set AI and AI.eye to "null", because i have a check in can_interact that if there is no range set, then the range is effectively unlimited. and i even added code for when AI is carded and their wireless transmission is disabled it sets their range to "0" aka, it has no range to do anything even if it could

this was really complicated for me so despite my extensive testing it probably would be a bad thing if any of you want to test my code yourself to ensure there isnt a bug with this (theres no runtimes ive come across)

note: i did a lot of searching and going through machinery to ensure i caught all the little snowflake overrides and added can_interact() checks to them, but i may have missed one or two things, especially maybe a altclick or ctrlclick somewhere, however i believe i caught most of them

one nice side effect of this refactor is that you can actually set another mobs range to something other than 1 tile and they can interact at range, rather than only silicons getting this ability, an admin could VV a human to have a 3 tile arm reach as a meme if they want
2021-08-31 13:59:39 -04:00
Ghom
f545621655 Fixes floored mobs (paraplegia, missing limbs) not being able to stand up in zero G for real. (#61054)
Added a old_movement_type argument to the COMSIG_MOVETYPE_FLAG_ENABLED and COMSIG_MOVETYPE_FLAG_DISABLED signal, fixed the check for zero g movespeed and locomotion traits removal and made some statements easier to understand.
2021-08-31 17:22:24 +01:00
Ghom
add6e320fb Hostile mobs will always face their targets when shooting. (#61069)
Added a face_atom call with targeted_atom as arg.
2021-08-31 13:53:55 +01:00
Shroopy
c0de6b9c01 Fix female uniforms not updating color correctly (#61040)
Fixes #59235, fixes #59297, fixes #61012, and other similar bugs.
The global list of female uniforms now appends the greyscale color of the uniform to the index/name, so all GAGS female uniforms are unique and handled correctly.
2021-08-30 15:51:00 -07:00
aaaa1023
f04df890dd fixes misspellings of "aggressive" in a few areas. (#61092)
Fixes the spelling of "aggressive" in a few items, comments and a define.
2021-08-30 20:49:35 +01:00
YakumoChen
9e2cb9dc58 Naive works correctly on simple animals (#61088)
About The Pull Request
Innocent clowns now perceive dead animals as asleep, the same as humans.
2021-08-30 20:30:34 +01:00
AMonkeyThatCodes
46cb925af0 Basic Mobs: the cooler simple mobs that run on datum AI. (With reworked cockroach AI as proof of concept) (#60694)
Simple_animals / mobs are the biggest lie in this code-base. They're far from simple and have an extreme god-object problem. Especially when you get to /hostile, where there is so many procs, vars, and what not, that you can't make any interesting additions without snowflaking the hell out of the code.

This PR hopes to help kill this problem by introducing a new /living subtype, /living/basic. The idea of this refactor is to slowly start moving all old simple_animals to this new system, moving over behaviors like charging and more extravagant mobs like megafauna over bit by bit similar to how newfood was implemented.

One of the other big goals of this refactor is to move many of the fringe simple animal behaviors into either AI datums, or components/elements. (Some of which still needs to be done in this PR).

As a proof of concept, I created the base mob/living/basic, and moved cockroaches over to the system. Since cockroaches have both a passive, melee and ranged mob.

This PR does slightly affect balance as the behavior isn't 1-on-1 due to it no longer running on the janky /hostile behavior, but I tried to keep the effects to a minimum, and the glockroach and hauberoach are not spawnable through many means as far as I know.
2021-08-30 16:22:24 +01:00
IndieanaJones
f218de3052 Small Spider Balance Changes and Tarantula QoL (#60505)
* Add Sealed Webs

* Add Sealed Web Icon

* Spider Changes

* Update this dumb var

* Make Broodmothers spawn in the same place

* Remove unused var

* Re-Add Sealed Web Sprite
2021-08-29 13:51:40 -04:00
Arkatos1
ccfa0fba7d tgui: Silicon Station Alerts (#61070)
This PR unifies all Station Alert menus into one datum system.

This also means that the old html menus will be converted to tgui, which is a case for cyborg and AI menus. All menus above differ very little, practically only by amount of type of alerts they show except for the AI menu, which also has access to cameras in the alert areas and knows number of the alert sources.
2021-08-29 13:11:24 +03:00
Fikou
779751504e colossus-type projectiles no longer explode sealed vehicles (#61030) 2021-08-28 02:16:12 -07:00
TiviPlus
e629c36feb Refactor area and turf lighting (#60954) 2021-08-25 15:07:38 -07:00
Pinta
f6cc07c906 Makes the slime link function on stargazers behave as intended
Fixes an issue with Stargazers where they were unable to form slime links.
2021-08-23 20:01:22 -07:00
MrMelbert
b3e8eebdc9 Kills /obj/item/melee/transforming, replaces it with a transforming weapon component (#60761)
This PR kills off the transforming subtype of /obj/item/melee and replaces it with a component to handle the transforming behavior, /datum/component/transforming.

The transforming component handles updating the variables of an item when it's transformed. Things like force, sharpness, whetstone force bonus, and attack verbs. Similar to the two-handed component, but instead of transforming into a two-hander it remains a one handed weapon.

The "nemesis" behavior (dealing addition damage to certain factions) of the transforming subtype was moved to the cleaving saw only, since it was the only transforming item that used it. In the future, this can be made into a bespoke element/component as well.

The following weapons and items have been updated to use this component:

    Energy Swords / Sabers / Bananium Energy Sword
    Energy Circular Saw
    Energy Dagger
    Energy Axe
    Toy Energy Sword
    Holographic Energy Sword
    Switchblade
    Advanced Medical Tools (Laser scalpel, Mechanical Pinches, Searing Tool)
    Advanced Engineering Tools (Hand Drill, Jaws of Life / Syndicate Jaws of Life)
    Combat Wrench
    Cleaving Saw
    Telescopic Batons / Contractor Batons
    Roasting Stick
    Telescopic Riot Shield
    Energy Shield / Bananium Energy Shield

This PR also touches up the code around the various above items.
2021-08-23 11:45:54 -07:00
Arkatos1
c7c82c0649 span fixes (#60936) 2021-08-21 18:31:34 +02:00
Time-Green
71aaf8a968 Fixes lowered megamothwings not rendering (#60856) 2021-08-20 10:31:51 -07:00
Tim
e10d0a02fe Fix fire exploit being extinguished by pAIs, borgs, and simple animals (#60852)
* Fix fire being extinguished by pAIs, borgs, and simple animals

* Add trait TRAIT_NOFIRE_SPREAD

* Add NOFIRE_SPREAD traits to simple and silicon mob types

* Refactor spreadFire proc to use check TRAIT_NOFIRE_SPREAD
2021-08-20 07:33:43 +08:00
Tim
0a9d5ceb82 Fix mulebot movement while controlled by a player (#60909) 2021-08-18 23:15:30 -07:00
Watermelon914
ffe2750744 Refactors connect_loc_behalf into a component (#60678)
See title. Also refactors caltrops into a component because they use connect_loc_behalf which requires them to hold the state.

This also fixes COMPONENT_DUPE_SELECTIVE from just outright not working.

connect_loc_behalf doesn't make sense as an element because it tries to hold states. There is also no way to maintain current behaviour and not have the states that it needs.
Due to the fact that it tries to hold states, it means the code itself is a lot more buggy because it's a lot harder to successfully manage these states without runtimes or bugs. 

On metastation, there is only 2519 connect_loc_behalf components at roundstart. MrStonedOne has told me that datums take up this much space:
image

If we do the (oversimplified) math, there are only ever 5 variables that'll likely be changed on most connect_loc_behalf components at runtime:
connections,
tracked,
signal_atom,
parent,
signal_procs

This means that on metastation at roundstart, we take up this amount: (24 + 16 * 5) * 2519 = 261.97600 kilobytes
This is not really significant and the benefits of moving this to a component greatly outweighs the memory cost.

(Basically the memory cost is outweighed by the maint cost of tracking down issues with the thing. It's too buggy to be viable longterm basically)
2021-08-17 12:16:12 -07:00
EOBGames
b08632353c [MDB IGNORE] Eliminates Toxins (#60619)
Repaths everything referring to "toxins" while actually meaning either the room in science or plasma gas. While this PR might be disrespectful to our forefathers, given this is (I believe) a holdover from as far back as the Exadv1 days, this has constantly irked me since I started working with the code. None of the player-facing stuff has referred to plasma as toxin since before 4407 hit, besides the Toxins Lab, and yet all of the type-paths are still pointing at toxins, making it a nightmare to search for in a map editor, and making the code needlessly easy to confuse with that of toxin damage. So this just fires it into the sun.

Anything relating to Toxins, the science subdepartment, now makes reference to Ordnance instead. This felt fitting enough given the focus of the subdepartment is around the creation of and testing of explosives.
Anything relating to plasma gas has, fittingly, been made to refer to plasma gas.

Edit: Ah yes, I feel I should probably apologise off the bat for the size of this PR- the code touched is mostly atmos machinery and simplemobs, a few sprites here and there, and of course the station maps + a few offstation maps.

Makes the code more legible and makes mapping less painful.

(The payment has been made)
2021-08-17 11:49:47 -07:00
LemonInTheDark
cd576ab519 Del The World: Unit testing for hard deletes (#59612)
Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>
2021-08-15 21:09:26 -07:00
LemonInTheDark
79dc58fe2a Redoes how alarms are handled, moves their behavior to datums (#60060)
* Adds in a set of datums to support sending, listening and storing alerts
In contrast to the old system, we now store a list of send alerts on the listener, rather then the area itself.

This makes clearing "our" alerts on destroy not a massive headache.

In addition, we now use a direct ref to the area's cameras list and signals to prevent camera hard deletes. This, combined with the aformentioned ability to clear, virtually eliminates hard deletes
sourced from alerts caused by strange senarios like the alert source moving its tile.

* Converts areas to the system, of note is the fact that areas no longer store a bool that determins if an alert
for power or atmos has been sent, that's instead handled by the alert sender datum. This means the sources list
on alert listeners actually means something

additionally, in order to prevent dumbassery with fire alarms since they're area based, fire alerts are sent by
an alert handler on the area itself
2021-08-13 11:54:44 -07:00
Ghom
d79c003962 knockback component to element. (#60633) 2021-08-13 03:17:51 -07:00
Ghom
addf1ee64f lifesteal component to element. (#60632) 2021-08-12 17:50:41 -07:00
Fikou
17fdfc15c6 fixes some megafauna shooting too fast (#60797) 2021-08-12 02:47:20 -03:00
MMMiracles
7f06da5834 midwife/nurse fixes (#60762) 2021-08-11 23:42:01 +02:00
Whoneedspacee
9e4c0fe742 Removes Projectile Megafauna Cheesing (#60758)
Dead mobs are now dusted by colossus typed projectiles.

Colossus typed projectiles are always considered a direct target projectile now so you cannot lay down and ignore them anymore.

Wendigo and frost miner projectiles are now subtypes of this projectile type as well.
2021-08-11 10:42:40 -03:00
Krysonism
b8b347722d Drugs of the 26th century. Three new hella rad drugs, one less lame drug and more! (#60432)
* lead stuff

* kronkus + loot table

* one drug sprite

* kroncaine

* drug items

* addiction stuff

* makes this compile

* plane master controllers

* small adjustments

* bro its a comment CHILL OUT

* temp

* desc and sprite update

* temp

* hmm

* invisible1

* invisible2

* fixes

* It compiles

* misc drug fixes

* signal

* synthesis

* fix

* span macros

* kroncaine filter removal + no speedup on cuffs n narsie rune

* makes the ampoule visible.

* hud-b-gone

* revert

* reverts more

* sound enviroment

* on_transfer & animated fade

* adrenal crisis + unknown

* blastoff signal

* blastoff adjustments

* filters

* small fixes

* animation parallel

* Taste, sounds and feel

* span proc

* final touches

* review and integration fix

* less blood, more fun

* moth and blood fix

* KronKaine and bLaSToFF spelling fix

* Assorted bLaSToFF fixes and range change

* suggestions from head head head coder

Co-authored-by: floyd <Floydje123@Hotmail.com>
2021-08-09 12:03:36 -04:00
ArchPigeon
e2c5763ce0 swap bodypart species checking to bitmap, fix surgery for monkey body… (#60280)
* swap bodypart species checking to bitmap, fix surgery for monkey bodyparts on monkeys

* fix part_origin so it is used correctly

* remove tabs, change DEFAULT_BODY to NULL_BODY

* add requested documentation

Co-authored-by: whitecas18 <whitecas18@students.ecu.edu>
2021-08-09 11:40:03 -04:00
Fikou
270acce4f5 [Ready] Mining Loot Rework (#60516)
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2021-08-08 02:22:34 -07:00
Seris02
e1610d7a55 fixes pai rod of asclepius bug (#60722) 2021-08-07 16:17:07 -07:00
Tim
9479c5ec5b Fix polymorph behavior for pAIs and mimics (#60502)
This fixes #58258. Basically anytime a pAI holoform gets shot with a staff of changing or polymorph item it would change their mob type. This allowed ghost roles infinite respawns since the pAI card is not destroyed when it gets polymorphed. An unlimited army can be created with no downsides since you can keep bringing people back to life with the pAI requests.

I also went and fixed another strange behavior with polymorph, where if you used a staff of animate on an object, you could turn around and then polymorph the object into a mob. The animate magic is supposed to wear off the object after a certain while so I made the mimic immune to polymorph effects.
2021-08-05 13:29:32 -03:00
Ghom
371c30b8d6 Thrownthing datum refactor: you can now throw stuff at mobs lying on the floor. (#60604) 2021-08-05 04:44:51 -07:00
MrMelbert
09758ba01e renames damge -> damage (#60647) 2021-08-02 18:14:14 -07:00
Ghom
bf598bfd04 picked up bees and mice can now fit in boxes. (#60161) 2021-08-02 12:49:19 -07:00
KittyNoodle
2d44b70b33 Fixes ethereal hair not updating with mutcolor (#60613) 2021-08-01 19:09:24 -07:00
Ryll Ryll
ba59702cee Adds a preference to make flashes darken your screen (#60434) 2021-08-01 14:18:36 -07:00
Ghom
bd5b0d66ed Fixes e-bolas being unblockable and not ensnaring flying mobs. (#60160)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-07-30 12:42:23 -07:00
Ghom
393c80136d Monkeys can now retaliate against xenomorph and animal attacks. (#60157)
Co-authored-by: Rohesie <rohesie@gmail.com>
2021-07-29 03:36:43 -07:00
Ghom
25a1804e70 Converts the footstep component into an element. (#60479) 2021-07-29 03:35:51 -07:00
Mothblocks
bd6873fd4d Remove nanites (#60473)
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2021-07-28 16:00:56 -07:00
itseasytosee
1f210531d9 Adds sounds and animations for attacking a disembodied brain (#60489) 2021-07-28 14:40:46 -07:00
itseasytosee
eeb82718b5 Makes construct's examine text color match their theme (#60453) 2021-07-28 17:35:52 -03:00
Matthew J
b19e1785dc [FUCK][NO CI] Rust Component Fixes (#60252)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2021-07-27 01:43:17 -07:00
John Willard
6fe33eddbb Gives zombies no hunger trait (#60387) 2021-07-26 17:03:38 -07:00
tralezab
43fd840b2f Kills _globalvars/misc.dm (#60358) 2021-07-26 16:58:18 -07:00
Wayland-Smithy
982ceed244 fix avoid_highlighting (#60428) 2021-07-26 03:59:46 -07:00
小月猫
396f93fb78 Fixes bugs with silicons being pushable when anchored/combat mode 2021-07-25 17:29:15 -07:00
Kubisopplay
101b0da0f7 Fixes malfunctioning borgs not defending against emag (#60368)
Hmm, another thing that was broken by malfunctioning ai split, and another oneline fix
2021-07-23 03:49:20 -07:00
Ghom
ebfe65a23a Change combat mode sounds to use SEND_SOUND instead of playsound_local (#60364)
The sound feedback when toggling combat mode currently doesn't work when the character is deafened.
2021-07-22 20:45:09 +01:00