Commit Graph

166 Commits

Author SHA1 Message Date
Roxy d14e538393 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-15-10-2025 2025-10-15 19:34:41 -04:00
die 0204ab8fdd Canreach refactor (#93165)
## About The Pull Request
ports https://github.com/DaedalusDock/daedalusdock/pull/1144
ports https://github.com/DaedalusDock/daedalusdock/pull/1147

full credit to @Kapu1178 for the juice

instead of `reacher.CanReach(target)` we now do
`target.CanBeReachedBy(reacher)`, this allows us to give special
behavior to atoms which we want to reach, which is exactly what I need
for a feature I'm working on.
## Why It's Good For The Game
allows us to be more flexible with reachability
## Changelog
🆑
refactor: refactored how reaching items works, report any oddities with
being unable to reach something you should be able to!
/🆑
2025-10-07 20:28:59 +02:00
Jacquerel 5bd8784918 Most hostile mobs can no longer be trapped by closets, chairs, and aggro grabs (#91652) 2025-06-21 22:36:04 -04:00
Jacquerel e3dee6810e Most hostile mobs can no longer be trapped by closets, chairs, and aggro grabs (#91652) 2025-06-21 03:21:22 +02:00
Waterpig 753d8e5ba4 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-04a 2025-04-08 18:58:45 +02:00
Ben10Omintrix 1a92287a72 fixes AI controllers being a bit too slow (#90047)
## About The Pull Request
i played a round earlier today and noticed the AI were a bit slow to
react, investigated it a bit and discovered it was because they werent
transitioning from the idle to active states properly, this fixes that.

## Why It's Good For The Game
fixes AI controllers not exiting the idle state
2025-03-16 03:08:39 +00:00
SmArtKar bd28a009c3 Fixes basic mobs not idling due to nearby ghosts (#90021)
## About The Pull Request

``client_contents`` contains all mobs with clients, just like you'd
expect. This includes observers, which results in any observer going
over lavaland at full speed disturbing all the mobs on it. locate() is
only marginally more expensive than length on a (most likely) 0-1 length
list, so potential perf impact shouldn't be of any concern.

Closes #90003

## Changelog
🆑
fix: Fixed basic mobs not idling due to nearby ghosts
/🆑
2025-03-14 14:46:37 +02:00
Jacquerel 52a567259b Adds a couple of absent turf nullchecks (#89733)
## About The Pull Request

Fixes a handful of minor misc issues detected while trying to break
#89591

These are basically summed up as:
- check_teleport_valid (used in a couple of places) never actually
nullchecked the destination then runtimes later if it is null. We'd
rather it just returns false if you're trying to teleport to nowhere I
think.
- Warp Cubes (a mining item) did something similar if one of them ended
up in nullspace somehow.
- AI controllers in nullspace would runtime repeatedly while trying to
check their Z level, we never want an AI controller to be awake in
nullspace so we'll just tell them to shut off in there.

Sometimes items and mobs go to nullspace for holding reasons, but I
don't think any of these were commonly encountered issues.

## Changelog

🆑
fix: The Warp Cube will now fail if it tries to teleport you to nowhere,
instead of turning you blue and then failing
/🆑

I don't know if the other ones were actually player facing they just
runtimed
2025-03-12 16:53:42 -04:00
Bloop 349a164184 Fixes befriend related hard del (#89582)
## About The Pull Request

Attempts to fix this hard del.

![firefox_E7VrWp0AU3](https://github.com/user-attachments/assets/af3baaf3-892e-4a01-a67d-5f7fb6d0292a)

https://github.com/tgstation/tgstation/pull/74791 took care of most of
the AI blackboard hard dels by adding tracking but there is nothing to
stop something that's already been qdeleted from being added to some of
these lists. This PR makes sure nothing like that gets added to the
blackboard.

## Why It's Good For The Game

Less CI failures
2025-03-12 16:42:55 -04:00
Jacquerel 5a6d0f9373 Adds a couple of absent turf nullchecks (#89733)
## About The Pull Request

Fixes a handful of minor misc issues detected while trying to break
#89591

These are basically summed up as:
- check_teleport_valid (used in a couple of places) never actually
nullchecked the destination then runtimes later if it is null. We'd
rather it just returns false if you're trying to teleport to nowhere I
think.
- Warp Cubes (a mining item) did something similar if one of them ended
up in nullspace somehow.
- AI controllers in nullspace would runtime repeatedly while trying to
check their Z level, we never want an AI controller to be awake in
nullspace so we'll just tell them to shut off in there.

Sometimes items and mobs go to nullspace for holding reasons, but I
don't think any of these were commonly encountered issues.

## Changelog

🆑
fix: The Warp Cube will now fail if it tries to teleport you to nowhere,
instead of turning you blue and then failing
/🆑

I don't know if the other ones were actually player facing they just
runtimed
2025-03-01 14:09:08 +01:00
Bloop e6483bb529 Fixes befriend related hard del (#89582)
## About The Pull Request

Attempts to fix this hard del.

![firefox_E7VrWp0AU3](https://github.com/user-attachments/assets/af3baaf3-892e-4a01-a67d-5f7fb6d0292a)

https://github.com/tgstation/tgstation/pull/74791 took care of most of
the AI blackboard hard dels by adding tracking but there is nothing to
stop something that's already been qdeleted from being added to some of
these lists. This PR makes sure nothing like that gets added to the
blackboard.

## Why It's Good For The Game

Less CI failures
2025-02-21 20:04:41 -06:00
Majkl-J b6b8306fda Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-02a 2025-02-20 00:00:19 -08:00
Jacquerel 2aa4f6c881 Unregister noticeable AI controller when it unpossesses mob (#89201) 2025-01-26 14:32:42 +01:00
Ben10Omintrix cefde77beb pawnless ai controllers dont harddel (#88948) 2025-01-09 18:22:02 +01:00
Ben10Omintrix d51ccc2630 fixes harddel issues and some more performance boost with how controllers set up movement targets (#87087)
## About The Pull Request
every process cycle we were checking the state of our movement targets.
when i benchmarked this it was taking up 7% of the entire process cost.
now instead, we check it only when the target or the pawn moves. after
like 25 minutes of profiling, this costs almost nothing because the
amount of calls has been cut significantly. also movement targets werent
properly being cleaned up on delete, causing some hard delete issues

## Why It's Good For The Game
fixes harddel issues and some more performance boost with how
controllers set up movement targets
2024-11-14 15:57:15 -08:00
Ben10Omintrix 3680939a83 some more ai optimizations (#86975)
## About The Pull Request
ai controllers that have exhausted all their current behaviors now stop
processing until the next cycle, so we no longer need to do these checks
on every process fire. idle behaviors are now instead handled by a new
low priority subsystem. these are the costs before/after roughly 25
minutes into the round

![image](https://github.com/user-attachments/assets/28b93cf8-b929-432a-a17d-61cbd581cddf)

## Why It's Good For The Game
improves ai performance

## Changelog
🆑
/🆑
# Conflicts:
#	code/datums/ai/_ai_controller.dm
2024-11-11 00:43:37 -08:00
LemonInTheDark 7f5d9d7e09 Tick checks unplanned controllers (#87506)
Shakes fist at random overtime
2024-10-30 09:48:27 +13:00
Ben10Omintrix 1d51da0462 fixes harddel issues and some more performance boost with how controllers set up movement targets (#87087)
## About The Pull Request
every process cycle we were checking the state of our movement targets.
when i benchmarked this it was taking up 7% of the entire process cost.
now instead, we check it only when the target or the pawn moves. after
like 25 minutes of profiling, this costs almost nothing because the
amount of calls has been cut significantly. also movement targets werent
properly being cleaned up on delete, causing some hard delete issues

## Why It's Good For The Game
fixes harddel issues and some more performance boost with how
controllers set up movement targets
2024-10-25 16:03:58 +02:00
Ben10Omintrix 239ed17c52 some more ai optimizations (#86975)
## About The Pull Request
ai controllers that have exhausted all their current behaviors now stop
processing until the next cycle, so we no longer need to do these checks
on every process fire. idle behaviors are now instead handled by a new
low priority subsystem. these are the costs before/after roughly 25
minutes into the round

![image](https://github.com/user-attachments/assets/28b93cf8-b929-432a-a17d-61cbd581cddf)


## Why It's Good For The Game
improves ai performance

## Changelog
🆑
/🆑
2024-10-25 16:03:45 +02:00
Ben10Omintrix f698cea0f4 fixes ai controllers resetting their targets post do_afters (#87426)
## About The Pull Request
mobs would disregard you for a bit if they went through a do_after, such
as goldgrub digging or medbots healing. this fixes that

## Why It's Good For The Game
fixes ai controllers resetting their targets post do_afters

## Changelog
🆑
fix: fixes ai controllers resetting their targets post do_afters
/🆑
2024-10-25 01:49:00 +02:00
Ben10Omintrix 3905d5ec49 penguins can now fish (and fishing ai expansions) (#87267)
## About The Pull Request
penguins are now able to fish! they will drill water holes in ice using
their beaks and catch fish from there. also expands the fishing ai a bit
to make it a bit more customizable. animals will now fish only when
they're hungry, otherwise there will be a cooldown between every fishing
attempt, defaulted to 45 seconds but can be edited depending on the mob.

## Why It's Good For The Game
makes the fishing behavior alot more generic, before it was only
compatible with lobstrosities but this makes it so it can be applied to
any mob. also reduces lobstrosity fishing frequency by a tad bit as they
were too spammy before.

## Changelog
🆑
add: penguins will now fish from water holes
/🆑
2024-10-24 17:06:00 +02:00
Majkl-J e59d8ba64b Merge commit '179a607a90ad7ec62bdaff4e6fe72af60ee56442' of https://github.com/tgstation/tgstation into upstream-24-10b 2024-10-23 23:27:16 -07:00
Ben10Omintrix 372e41750b some more ai optimizations (#86975)
## About The Pull Request
ai controllers that have exhausted all their current behaviors now stop
processing until the next cycle, so we no longer need to do these checks
on every process fire. idle behaviors are now instead handled by a new
low priority subsystem. these are the costs before/after roughly 25
minutes into the round

![image](https://github.com/user-attachments/assets/28b93cf8-b929-432a-a17d-61cbd581cddf)


## Why It's Good For The Game
improves ai performance

## Changelog
🆑
/🆑
2024-10-21 17:25:32 -06:00
Ben10Omintrix d94676a411 ai controllers that fail to make a plan no longer process until theyre able to plan again (#86600)
## About The Pull Request
ai controllers that fail planning no longer process until theyre able to
plan again. this makes it so /process is called less thus you'll have
less AI competing against one another for cpu. also converts idle
behaviors into singletons

## Why It's Good For The Game
AIs that dont have a plan dont do anything during processing so its
better to just make them sit out the cycle instead of draining cpu

## Changelog
🆑
/🆑
2024-10-21 17:24:59 -06:00
Ben10Omintrix e0b9be737f some ai planning subsystem optimization (#86564)
## About The Pull Request
reduces the cost of the planning subsystem. instead of calculating
able_to_plan on every fire for every mob, we only calculate it when a
mob queues/dequeues a behavior. also converts behavior lists into lists
rather than lazylists to reduce the amount of checks we do on process.
these are the differences after ran on tracy.

![image](https://github.com/user-attachments/assets/f2c027b8-778c-490e-9d86-4e8993eacc3b)


## Why It's Good For The Game
reduces the cost of ai planning subsystem

## Changelog
🆑
/🆑
2024-10-21 17:24:24 -06:00
Ben10Omintrix fbb3079911 AI controllers interactions refactor (#86492)
## About The Pull Request
refactors all behaviors to work through clicking. also removes some now
redundant behaviors. in the future ill try to generalize more of these
behaviors

## Why It's Good For The Game
makes AI controllers work through clicks which may help with swing
combat implementation

## Changelog
🆑
refactor: basic mob AI interactions has been refactored. please report
any bugs
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-10-21 17:23:25 -06:00
Waterpig bb70889f6e TG Upstream Part 1
3591 individual conflicts

Update build.js

Update install_node.sh

Update byond.js

oh my fucking god

hat

slow

huh

holy shit

we all fall down

2 more I missed

2900 individual conflicts

2700 Individual conflicts

replaces yarn file with tg version, bumping us down to 2200-ish

Down to 2000 individual conflicts

140 down

mmm

aaaaaaaaaaaaaaaaaaa

not yt

575

soon

900 individual conflicts

600 individual conflicts, 121 file conflicts

im not okay

160 across 19 files

29 in 4 files

0 conflicts, compiletime fix time

some minor incap stuff

missed ticks

weird dupe definition stuff

missed ticks 2

incap fixes

undefs and pie fix

Radio update and some extra minor stuff

returns a single override

no more dupe definitions, 175 compiletime errors

Unticked file fix

sound and emote stuff

honk and more radio stuff
2024-10-19 08:04:33 -07:00
Ben10Omintrix 08bb51fc40 fixes harddel issues and some more performance boost with how controllers set up movement targets (#87087)
## About The Pull Request
every process cycle we were checking the state of our movement targets.
when i benchmarked this it was taking up 7% of the entire process cost.
now instead, we check it only when the target or the pawn moves. after
like 25 minutes of profiling, this costs almost nothing because the
amount of calls has been cut significantly. also movement targets werent
properly being cleaned up on delete, causing some hard delete issues

## Why It's Good For The Game
fixes harddel issues and some more performance boost with how
controllers set up movement targets
2024-10-08 15:27:16 -06:00
Ben10Omintrix 11187a2a6d some more ai optimizations (#86975)
## About The Pull Request
ai controllers that have exhausted all their current behaviors now stop
processing until the next cycle, so we no longer need to do these checks
on every process fire. idle behaviors are now instead handled by a new
low priority subsystem. these are the costs before/after roughly 25
minutes into the round

![image](https://github.com/user-attachments/assets/28b93cf8-b929-432a-a17d-61cbd581cddf)


## Why It's Good For The Game
improves ai performance

## Changelog
🆑
/🆑
2024-10-06 06:50:02 +02:00
Ben10Omintrix 6897f33767 AI controllers interactions refactor (#86492)
## About The Pull Request
refactors all behaviors to work through clicking. also removes some now
redundant behaviors. in the future ill try to generalize more of these
behaviors

## Why It's Good For The Game
makes AI controllers work through clicks which may help with swing
combat implementation

## Changelog
🆑
refactor: basic mob AI interactions has been refactored. please report
any bugs
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-10-03 03:44:41 +02:00
Ben10Omintrix 613fb4c08a ai controllers that fail to make a plan no longer process until theyre able to plan again (#86600)
## About The Pull Request
ai controllers that fail planning no longer process until theyre able to
plan again. this makes it so /process is called less thus you'll have
less AI competing against one another for cpu. also converts idle
behaviors into singletons

## Why It's Good For The Game
AIs that dont have a plan dont do anything during processing so its
better to just make them sit out the cycle instead of draining cpu

## Changelog
🆑
/🆑
2024-09-21 00:29:34 +02:00
Ben10Omintrix 3ab9703298 some ai planning subsystem optimization (#86564)
## About The Pull Request
reduces the cost of the planning subsystem. instead of calculating
able_to_plan on every fire for every mob, we only calculate it when a
mob queues/dequeues a behavior. also converts behavior lists into lists
rather than lazylists to reduce the amount of checks we do on process.
these are the differences after ran on tracy.

![image](https://github.com/user-attachments/assets/f2c027b8-778c-490e-9d86-4e8993eacc3b)


## Why It's Good For The Game
reduces the cost of ai planning subsystem

## Changelog
🆑
/🆑
2024-09-09 15:20:26 -04:00
Waterpig 4c4930c71d Merge branch 'master' of https://github.com/tgstation/tgstation into pulls-tg-to-fix-shit 2024-09-08 00:59:39 +02:00
Ben10Omintrix 91baa94ac5 event based incapicated and able_to_run (#86031)
## About The Pull Request
this is a revival of #82635 . i got permission from potato to reopen
this, he did almost all the work. i only just solved the conflicts and
fixed all the bugs that were preventing the original from being merged
(but it should be TMed first)

## Why It's Good For The Game
slightly improves the performance of basic mob AI

## Changelog
🆑
LemonInTheDark
refactor: able_to_run and incapacitated have been refactored to be event
based
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: ZephyrTFA <matthew@tfaluc.com>
2024-09-04 10:02:49 -04:00
SkyratBot b57e719803 [MIRROR] fixes ai controllers incorrectly idling when changing z level (#29431)
* fixes ai controllers incorrectly idling when changing z level (#85904)

## About The Pull Request
ai controllers would have the wrong status when moving z levels

## Why It's Good For The Game
fixes ai controllers incorrectly idling when changing z level

## Changelog
🆑
fix: fixes ai controllers incorrectly idling when changing z level
/🆑

* fixes ai controllers incorrectly idling when changing z level

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
2024-08-19 00:09:58 +07:00
Ben10Omintrix 1d905d4146 fixes ai controllers incorrectly idling when changing z level (#85904)
## About The Pull Request
ai controllers would have the wrong status when moving z levels

## Why It's Good For The Game
fixes ai controllers incorrectly idling when changing z level

## Changelog
🆑
fix: fixes ai controllers incorrectly idling when changing z level
/🆑
2024-08-17 14:28:10 -06:00
SkyratBot 97e8c044ed [MIRROR] idle basic mobs can plan again (#29351)
* idle basic mobs can plan again

* ready

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com>
2024-08-17 18:26:08 +00:00
Ben10Omintrix 4273fc9dd9 idle basic mobs can plan again (#85348)
## About The Pull Request
idled basic mobs now instead of completely shutting off, will be
delegated to a much lower priority subsystem to do their planning.

## Why It's Good For The Game
Mobs can now perform their functions without needing players to be
nearby in a way that doesnt starve other subsystems. this allows animals
such as goldgrubs to eat ores, lobstrosities to fish, seedlings to tend
plants (and many others) without needing any players nearby

## Changelog
🆑
fix: idle basic mobs will now plan behaviors rather than completely shut
down
/🆑
2024-08-14 13:50:44 +02:00
SkyratBot 0186f4d8b0 [MIRROR] Removes stupid listlike var access code (#28658)
* Removes stupid listlike var access code (#84648)

## About The Pull Request

[Removes all other listlike var
accesses](https://github.com/tgstation/tgstation/pull/84648/commits/4c5996b5c8b1da63740e8b4bf998b6cb6eadac33)

Also fucking dumpsters an unused proc that allowed for arbitrary
variable modifcation. Bad juju

This is undefined behavior and errors in later 515 versions. also it's
stupid as hell

* Removes stupid listlike var access code

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2024-07-06 09:42:28 +05:30
LemonInTheDark 78fc87315c Removes stupid listlike var access code (#84648)
## About The Pull Request

[Removes all other listlike var
accesses](https://github.com/tgstation/tgstation/pull/84648/commits/4c5996b5c8b1da63740e8b4bf998b6cb6eadac33)

Also fucking dumpsters an unused proc that allowed for arbitrary
variable modifcation. Bad juju

This is undefined behavior and errors in later 515 versions. also it's
stupid as hell
2024-07-06 01:49:17 +02:00
SkyratBot 9966325a3a [MIRROR] basic vibebot (and small rework) (#28377)
* basic vibebot (and small rework) (#84143)

## About The Pull Request
this refactors vibebots and reworks them to be a little more useful.
vibebots can now play a range of MIDI songs. they will seek out
depressed players and play an upbeat tune for them and celebrate with
them to cheer them up and increase their mood a little bit. if its ur
birthday, it will play a happy birthday tune for u. emagged vibebots are
ruthless, they will look for sad people and go play grim music for them
to ruin their day even more and decrease their moods.

## Why It's Good For The Game
refactors vibebots into basic bots and gives them a bit more character

## Changelog
🆑
refactor: vibebots are not basic bots
add: vibebots will now seek out the depressed and cheer them up
/🆑

* basic vibebot (and small rework)

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
2024-06-25 16:23:42 +05:30
Ben10Omintrix abbd040526 basic vibebot (and small rework) (#84143)
## About The Pull Request
this refactors vibebots and reworks them to be a little more useful.
vibebots can now play a range of MIDI songs. they will seek out
depressed players and play an upbeat tune for them and celebrate with
them to cheer them up and increase their mood a little bit. if its ur
birthday, it will play a happy birthday tune for u. emagged vibebots are
ruthless, they will look for sad people and go play grim music for them
to ruin their day even more and decrease their moods.

## Why It's Good For The Game
refactors vibebots into basic bots and gives them a bit more character

## Changelog
🆑
refactor: vibebots are not basic bots
add: vibebots will now seek out the depressed and cheer them up
/🆑
2024-06-24 22:28:52 -04:00
SkyratBot 0f2aad9e2f [MIRROR] basic honkbots (#28007)
* basic honkbots (#81920)

## About The Pull Request
this refactors honkbots into basic mobs. its mostly a faithful 1:1
refactor but i couldnt keep my hands to myselves so i gave them some new
behaviors.

honkbots now love playing with clowns, they will go seek out for clowns
and celebrate around them. also, if the honkbot finds a banana peel or a
slippery item near it, it will actively drag people onto them

honkbots will now go out of theirway to mess with secbots and annoy them

## Why It's Good For The Game
refactors hinkbots into basic bots and also undoes some of the silliness
i did in the previous basic bot prs. i also added lazylist support to
remove_thing_from_list.

## Changelog
🆑
refactor: honkbots are now basic mobs, please report any bugs
add: honkbots will try to slip people on banana peels
/🆑

* basic honkbots

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
2024-06-06 18:22:01 +05:30
Ben10Omintrix 55c41fb9ad basic honkbots (#81920)
## About The Pull Request
this refactors honkbots into basic mobs. its mostly a faithful 1:1
refactor but i couldnt keep my hands to myselves so i gave them some new
behaviors.

honkbots now love playing with clowns, they will go seek out for clowns
and celebrate around them. also, if the honkbot finds a banana peel or a
slippery item near it, it will actively drag people onto them

honkbots will now go out of theirway to mess with secbots and annoy them

## Why It's Good For The Game
refactors hinkbots into basic bots and also undoes some of the silliness
i did in the previous basic bot prs. i also added lazylist support to
remove_thing_from_list.

## Changelog
🆑
refactor: honkbots are now basic mobs, please report any bugs
add: honkbots will try to slip people on banana peels
/🆑
2024-06-05 10:17:34 -04:00
Ben10Omintrix 4aec21e180 jps movement can read accesses from the access component (#83384)
## About The Pull Request
jps movement can read accesses from the access component

## Why It's Good For The Game
i cant think of any mobs that need this now but it will be useful in the
future

## Changelog
🆑
/🆑
2024-05-22 19:07:15 -04:00
Ben10Omintrix b35a79464f jps movement can read accesses from the access component (#83384)
## About The Pull Request
jps movement can read accesses from the access component

## Why It's Good For The Game
i cant think of any mobs that need this now but it will be useful in the
future

## Changelog
🆑
/🆑
2024-05-22 19:01:31 -04:00
SkyratBot d4f03e8add [MIRROR] Replace Heretic Phobia with Cursed Organs (#27664)
* Replace Heretic Phobia with Cursed Organs (#83082)

## About The Pull Request

Being sacrificed by a Heretic no longer applies an incurable brain
trauma that gives you a phobia of Heretic-associated items.
Instead it does the following things:

- Removes 2-4 of your organs and leaves them behind on the sacrificial
circle, replacing them with "corrupt" organs with negative effects.
- Gives you an unremovable "curse" debuff which will cause you to
immediately cough a random organ out of your chest if you attack or are
attack by the person who sacrificed you, **if they are wearing a Focus
at the time.**

Corrupt Organs can be removed via surgery, although doing so is
dangerous.
A removed corrupt organ will often either immediately explode for a
small (but not insignificant) amount of burn damage to everyone nearby,
or it will animate itself as a haunted object and be a general nuisance
until subdued.
A patient dosed with Holy Water can always have their organs removed
without consequence.
Chugging Holy Water will also suppress most of the negative effects of
your corrupt organs.

The effects of Corrupt Organs are as follows:
- **Eyes:** All Heretics **and also a selection of additional random
people** are completely invisible to you. You can still see their
runtext (or "hear") them, but they otherwise cannot be seen. And as you
can't see them you also cannot click on them.
- **Tongue:** When you speak, your language will sometimes be replaced
by "Shadowspeak", understood only by Curators and Nightmares. This is
less of an impediment during Halloween because of the friendly
Shadowpeople.
- **Liver:** When you drink something, it will add extra reagents to
your sip from a pool largely composed of alcohol and hallucinogens.
- **Stomach:** Your hunger will deplete significantly faster if you do
not regularly ingest blood. (Fun fact: Did you know that a drinking
glass full of blood automatically relabels itself "tomato juice"?)
- **Heart:** You will continue to be intermittently tormented by
frightening hands.
- **Lungs:** You will intermittently cough out dangerous or unpleasant
gases.
- **Appendix:** Very infrequently you will vomit out several hostile
worms.

Most of these effects aren't present while you're dodging the spooky
hands in the Mansus realm.
Plasmamen never have their lungs replaced because they'd immediately
start choking on their internals and that is annoying. Ethereals _do_
have their hearts replaced so may be surprised to find that they don't
respawn when killed if they don't get a new one.
I would haved called them Cursed Organs but the Cursed Heart already
exists.

## Why It's Good For The Game

Nobody enjoys the Heretic phobia from any angle.
Phobias suck to deal with in general. and while being scared of all
Heretic stuff from that point on is mildly flavourful it's not very
interesting.
This alternative hopefully provides a more interesting answer (which
should provide more storytelling and interaction with other people) to
the problems that the original change intended to address:
Making sure that nonlethal sacrifices still feel significantly bad
enough that you're not going to volunteer, and as an extra layer of
protection to ensure that someone you sacrificed functionally ceases to
be a threat to you.

## Changelog
🆑
del: Being sacrified by a Heretic no longer gives you an incurable
phobia.
add: Being sacrificed by a Heretic will drop 2-4 of your organs on the
ground and replace them with "corrupt organs" with negative effects
which can be suppressed with Holy Water.
add: Players who have been sacrificed by Heretics will experience
additional and rapidly lethal consequences for attempting to fight
someone who previously sacrificed them, as long as that person is
wearing a focus.
/🆑

* Replace Heretic Phobia with Cursed Organs

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2024-05-09 08:32:37 +02:00
Jacquerel f358423a1e Replace Heretic Phobia with Cursed Organs (#83082)
## About The Pull Request

Being sacrificed by a Heretic no longer applies an incurable brain
trauma that gives you a phobia of Heretic-associated items.
Instead it does the following things:

- Removes 2-4 of your organs and leaves them behind on the sacrificial
circle, replacing them with "corrupt" organs with negative effects.
- Gives you an unremovable "curse" debuff which will cause you to
immediately cough a random organ out of your chest if you attack or are
attack by the person who sacrificed you, **if they are wearing a Focus
at the time.**

Corrupt Organs can be removed via surgery, although doing so is
dangerous.
A removed corrupt organ will often either immediately explode for a
small (but not insignificant) amount of burn damage to everyone nearby,
or it will animate itself as a haunted object and be a general nuisance
until subdued.
A patient dosed with Holy Water can always have their organs removed
without consequence.
Chugging Holy Water will also suppress most of the negative effects of
your corrupt organs.

The effects of Corrupt Organs are as follows:
- **Eyes:** All Heretics **and also a selection of additional random
people** are completely invisible to you. You can still see their
runtext (or "hear") them, but they otherwise cannot be seen. And as you
can't see them you also cannot click on them.
- **Tongue:** When you speak, your language will sometimes be replaced
by "Shadowspeak", understood only by Curators and Nightmares. This is
less of an impediment during Halloween because of the friendly
Shadowpeople.
- **Liver:** When you drink something, it will add extra reagents to
your sip from a pool largely composed of alcohol and hallucinogens.
- **Stomach:** Your hunger will deplete significantly faster if you do
not regularly ingest blood. (Fun fact: Did you know that a drinking
glass full of blood automatically relabels itself "tomato juice"?)
- **Heart:** You will continue to be intermittently tormented by
frightening hands.
- **Lungs:** You will intermittently cough out dangerous or unpleasant
gases.
- **Appendix:** Very infrequently you will vomit out several hostile
worms.

Most of these effects aren't present while you're dodging the spooky
hands in the Mansus realm.
Plasmamen never have their lungs replaced because they'd immediately
start choking on their internals and that is annoying. Ethereals _do_
have their hearts replaced so may be surprised to find that they don't
respawn when killed if they don't get a new one.
I would haved called them Cursed Organs but the Cursed Heart already
exists.

## Why It's Good For The Game

Nobody enjoys the Heretic phobia from any angle.
Phobias suck to deal with in general. and while being scared of all
Heretic stuff from that point on is mildly flavourful it's not very
interesting.
This alternative hopefully provides a more interesting answer (which
should provide more storytelling and interaction with other people) to
the problems that the original change intended to address:
Making sure that nonlethal sacrifices still feel significantly bad
enough that you're not going to volunteer, and as an extra layer of
protection to ensure that someone you sacrificed functionally ceases to
be a threat to you.

## Changelog
🆑
del: Being sacrified by a Heretic no longer gives you an incurable
phobia.
add: Being sacrificed by a Heretic will drop 2-4 of your organs on the
ground and replace them with "corrupt organs" with negative effects
which can be suppressed with Holy Water.
add: Players who have been sacrificed by Heretics will experience
additional and rapidly lethal consequences for attempting to fight
someone who previously sacrificed them, as long as that person is
wearing a focus.
/🆑
2024-05-08 19:40:16 -06:00
Ben10Omintrix 649f2f9eaa fixes a few problems in ai targetting (#82998)
## About The Pull Request
fixes #82964 , fixes #82866

## Why It's Good For The Game
fixes several problems with ai targetting. this pr resolves civil war
that was brewing between several mobs. also fixes a major problem where
mobs would only search for targets and not perform any other behaviors.
also fixes a small problem where mobs would constantly stop and start
while chasing targets
## Changelog
🆑
fix: mobs in the same faction will no longer be at odds against one
another
fix: mobs can now perform behaviors alongside searching for targets
fix: mobs will no longer be starting and stopping when chasing targets
/🆑
2024-05-03 02:03:55 +00:00
Ben10Omintrix dc202e7642 fixes a few problems in ai targetting (#82998)
## About The Pull Request
fixes #82964 , fixes #82866

## Why It's Good For The Game
fixes several problems with ai targetting. this pr resolves civil war
that was brewing between several mobs. also fixes a major problem where
mobs would only search for targets and not perform any other behaviors.
also fixes a small problem where mobs would constantly stop and start
while chasing targets
## Changelog
🆑
fix: mobs in the same faction will no longer be at odds against one
another
fix: mobs can now perform behaviors alongside searching for targets
fix: mobs will no longer be starting and stopping when chasing targets
/🆑
2024-05-02 20:03:19 -06:00