Commit Graph

19 Commits

Author SHA1 Message Date
Rohesie af65c90125 Mobility refactor: no more update_mobility() (#54183)
This is a pretty big change all around. The gist of it is that it moves the mobility_flags into traits or variables that can track the sources, and to which we can append code to react to the events, be it via signals or via on_event-like procs.

For example, MOBILITY_STAND could mean, depending on context, that the mob is either already standing or that it may be able to stand, and thus is lying down.

There was a lot of snowflakery and redefinitions on top of redefinitions, so this is bound to create bugs I'm willing to fix as I learn them.

The end-goal is for every living mob to use the same mobility system, for the traits to mean the same among them, and for no place to just mass-change settings without a way to trace it, such as with mobility_flags = NONE and mobility_flags = ALL

Fixes AIs being able to strip nearby people. They've lost their hands usage.
2020-10-09 16:04:30 -07:00
TiviPlus 550e763433 Reenables SHOULD_NOT_SLEEP on initialize (#53378) 2020-09-04 20:44:08 -03:00
TiviPlus ce3d7e2f0d Mecha refactor 2020 (#52902)
-Mechs are a vehicle subtype
-Mech equipment half-rewritten
-Mech actions completely redone
-Cooldown macros
-New movement macros & replacing all var in GLOB.diagonals with ISDIAGONALDIR(var)
-New lazylist macro
-Support for lavaland only mechs
-Removed the tank because fuck off with that hacky shit
-Documentation
-Fuckton of fixes
2020-08-29 23:33:47 -03:00
Jared-Fogle 45c14f6330 Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking (#52761)
Adds SIGNAL_HANDLER, a macro that sets SHOULD_NOT_SLEEP(TRUE). This should ideally be required on all new signal callbacks.

Adds BLOCKING_SIGNAL_HANDLER, a macro that does nothing except symbolize "this is an older signal that didn't necessitate a code rewrite". It should not be allowed for new work.

This comes from discussion around #52735, which yields by calling input, and (though it sets the return type beforehand) will not properly return the flag to prevent attack from slapping.

To fix 60% of the yielding cases, WrapAdminProcCall no longer waits for another admin's proc call to finish. I'm not an admin, so I don't know how many behinds this has saved, but if this is problematic for admins I can just make it so that it lets you do it anyway. I'm not sure what the point of this babysitting was anyway.

Requested by @optimumtact.
Changelog

cl
admin: Calling a proc while another admin is calling one will no longer wait for the first to finish. You will simply just have to call it again.
/cl
2020-08-20 09:11:28 +12:00
jdawg1290 62676e72a8 Force LF line endings with gitattributes and convert repo (#52266)
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-07-16 03:02:40 +03:00
XDTM 196568e0d1 Timestop prevents speech (#47695) 2019-11-11 11:51:09 -05:00
nemvar a148cae769 Kills obj/item/projectile in favour of obj/projectile (#46692)
* Kills obj/item/projectile in favour of obj/projectile

* Resolves conflicts properly

* fixes that one map

* it lives
2019-10-06 13:37:24 -04:00
XDTM c2f38cbf4e Timestop improvements (#46745)
* Timestop improvements

* black lightlist
2019-09-29 20:18:31 -04:00
Rob Bailey 2029163d33 playsound vary boolean define conversion (#46254)
About The Pull Request

Converts every single usage of playsound's vary parameter to use the boolean define instead of 1 or 0. I'm tired of people copypasting the incorrect usage.
Also changes a couple of places where a list was picked from instead of using get_sfx internal calls

This was done via regex:
(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\)) to match 1
(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\)) to match 0
full sed commands:
/(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\))/\1TRUE\2/ 1 to TRUE
/(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\))/\1FALSE\2/ 0 to FALSE

I'm not very good with regex and these could probably be optimized, but they worked.
Why It's Good For The Game

Code usability
2019-08-30 18:45:20 +12:00
4dplanner e70b26fd66 Fixes timestop interaction with antimagic 2019-05-23 20:22:36 +01:00
4dplanner 190199520d Sepia extract rebalance [TM Cand/Ready] (#42933)
* Sepia slime has a timer before activating

* Chilling and recurring

* Rewind camera

* Camera variable to disable customisation

* Removes unnecessary selfieing

* Changes rewind time to 10 seconds

* Simple animal fixes

* properly freezes bots

* Mech timestop

* P -> M

* Gives a warning message

* This should have commited with the last set

* Just screw my line lengths up

* Big changes

Adds pre-move COMSIG
Cuts down on lists in timestop
Adds the overlay to frozen projectiles
Timestopped things have INFINITY move_resist as opposed to being
anchored
Timestop will now unfreeze things that somehow leave it
Cleans up timestop code
mobs in the middle of a walk_to will have their walk stopped by timestop
mobs that are stunned will be stopped mid walk as well
Slimes respect mobility_flags & MOBILITY_MOVE
Slimes no longer automatically regain MOBILITY_MOVE whenever not cold

* Pulling and swapping places respect move_force

* Update code/modules/research/xenobiology/crossbreeding/_misc.dm

Co-Authored-By: 4dplanner <3combined@gmail.com>
2019-03-11 12:05:25 -04:00
XDTM 9f74fef3d5 Allows the antimagic component to react to spells, limits holymelon uses (#41739) 2018-12-17 19:09:35 -05:00
Potato-Masher ddeac511a1 Fixes Guardian Spirits not being able to move in stopped time along with their user. (#35895)
* I have no idea if this will work, but hopefully makes stands immune to timestops if their master is.

* That looks better

* Maybe that will work, maybe it will not.

* Checks if the summoner actually exists.

As per review advice from @DaedalusGame.
2018-03-04 17:11:24 -06:00
XDTM 2ac902ab3c Refactors anti-magic into a component (#35639)
* Refactors anti-magic into a component

* plenty o stuff, mainly holy and antimagic traits

* fix

* fix2

* moved to components, moved some of the logic to the component

* don't blame me if the code looks copypastey

* right
2018-02-26 09:45:12 +13:00
Ian Turk dd202e3a42 Fixed overlapping timestop behavior 2018-02-17 19:33:02 -06:00
YPO ca688bc7cd Fixes players not being immune to their own slime timestops 2018-01-12 12:25:00 -07:00
CosmicScientist 91f461856b Adds colour shift to timestop (#33847)
* For PKPenguin, from Cosmic

* Removes a colour removal line due to no functionality
2017-12-29 03:52:47 -05:00
vuonojenmustaturska a927f2a64c expand simple_animals/hostile/aistatus into a simple_animals-wide system for putting mobs into idling mode (#31778)
* Initial commit

* Time is a circus

* Send in the clowns

* i broke something

* Revert "i broke something"

This reverts commit 5a29c40d131b39effe9ebcb6c8c1883693baf07f.

* I think it works?

* cleanup

* define reminders

* Fixes tendrils and such

* sentience_act now moves the mob to AI_OFF state
2017-10-19 11:57:10 +02:00
kevinz000 bd8d9592f1 [READY]Refactors timestops to use fields (#30858)
* kek

* fixes

* Fixes

* fixes

* throw freeze

* woops

* double woops
2017-09-29 15:46:10 +13:00