Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2024-04-29 | npc: formattingv23.10.22 | Freeyorp | 1 | -1/+2 | |
Nice consistency there, past!Freeyorp. | |||||
2024-04-29 | npc_scripcont: consistent return value | Freeyorp | 1 | -2/+2 | |
`npc_scriptcont` now consistently returns 1 on failure, though in practice, this return value was always ignored. | |||||
2024-04-29 | npc_destroy: Defer NPC destruction via timer | Freeyorp | 1 | -5/+14 | |
055-1 _nodes.txt will call `destroy;` from within OnInit, that is during an iteration of the global `ev_db`. Previously, concurrent modification invalidated this iteration, resulting in a crash. This still nullifes `oid`, dequeues all timers, and effectively calls `builtin_end`. `npc_data::deletion_pending` is extended to include a third state. In addition to no deletion happening, and indicating when `npc_free` is currently on the stack, it now also tracks whether the NPC is about to be deleted by a timer. This means that an NPC which is about to be deleted is still blocked from triggering new events, much like an NPC actively being deleted would. Starting or continuing an NPC dialog with an NPC that does not, or is about to no longer exist, is now also blocked. | |||||
2024-04-21 | DB/npc_free_internal: Use ancient approach | Freeyorp | 1 | -3/+12 | |
C++11 was a really long time ago, huh? | |||||
2024-04-21 | DB: Maybe fix concurrent modification | Freeyorp | 1 | -7/+3 | |
2024-04-20 | npc: Deregister events with `ev_db` on free | Freeyorp | 1 | -0/+12 | |
In serverdata@c3b7fe59a, `magic-knuckles` made use of temporary copies of the spell NPC via `puppet`/`destroy` to provide additional functionality. This implementation was correct with respect to tmwa behaviour as documented. However, `puppet` and `destroy` doesn't quite return the server to a clean prior state. In `builtin_puppet`, events with the fresh new copy of NPC are registered into the global `ev_db` map to track named events, such as `OnDischarge`, which might be triggered later. However, these registrations are not reversed with `destroy`, leaving `ev_db` to retain references to now invalid and destroyed NPCs. serverdata@c3b7fe59a revealed this oversight through an intersection of rare conditions: - An NPC that is routinely cloned and destroyed - Having a variety of events - Including one that can be triggered during a search for the event over ALL NPCs when `#discharge` is cast. To reproduce, compile with `-fsanitize=address -fsanitize=undefined` to more reliably catch use of invalid memory, cast `magic-knuckles`, log out the character which cast `magic-knuckles` to destroy the NPC, log back in, then cast `#discharge`. The server will then crash. Special thanks to SystemError for testing out this theory. Currently lacking a test environment of my own, this would not have been possible without his patience and diligence. | |||||
2023-04-03 | Item mode | HoraK-FDF | 1 | -1/+6 | |
2018-03-23 | fix a bug introduced by wushin, which freeyorp highlighted with his previous ↵ | Tezer | 1 | -17/+2 | |
patch | |||||
2018-03-23 | automatically de-attach freed NPCs | gumi | 1 | -3/+12 | |
2018-03-04 | ignore phony npc event calls (~) | gumi | 1 | -0/+3 | |
2018-03-03 | don't blindly trust event npc name | gumi | 1 | -1/+8 | |
2018-01-03 | release v18.1.3 | gumi | 1 | -1/+1 | |
2018-01-03 | mark NPCs as disabled while cleaning | gumi | 1 | -0/+1 | |
2018-01-03 | remove mob timers, make areatimer only work on PC | gumi | 1 | -15/+0 | |
2018-01-03 | remove npc event queue, always clear npc event timer | gumi | 1 | -3/+5 | |
2018-01-01 | release v18.1.1 | gumi | 1 | -2/+6 | |
2017-11-12 | re-fix the puppet despawn bug | gumi | 1 | -0/+8 | |
2016-05-12 | add undefined_gat check to npc_propagate_update() | mekolat | 1 | -0/+3 | |
2016-04-23 | dispose orphan puppet if the parent is gone | mekolat | 1 | -1/+33 | |
2016-04-15 | do not send BEING_REMOVE when the npc is already removed | mekolat | 1 | -16/+15 | |
2016-04-15 | improvements, cleanup, bug fixes | mekolat | 1 | -21/+26 | |
2016-04-15 | remove MESSAGE npc subtype | mekolat | 1 | -21/+1 | |
2016-04-15 | do not bind trigger detection to map cells | mekolat | 1 | -2/+2 | |
2016-04-15 | fix compilation errors | mekolat | 1 | -2/+2 | |
2016-04-15 | do non-timer events synchronously | mekolat | 1 | -1/+1 | |
2016-04-15 | merge npc_event_do_l into npc_event | mekolat | 1 | -84/+56 | |
2016-04-15 | remove ugly workaround | mekolat | 1 | -19/+22 | |
2016-04-15 | implement puppet npcs | mekolat | 1 | -13/+24 | |
2016-04-15 | shrink magic_message | mekolat | 1 | -20/+8 | |
2016-04-15 | Remove old Magic | wushin | 1 | -15/+43 | |
2016-04-15 | Magic -> Map Npcs | wushin | 1 | -0/+69 | |
2016-04-15 | new/modified builtins | wushin | 1 | -0/+88 | |
areatimer foreach aggravate Override attack animation injure summon | |||||
2015-05-02 | npc -1 => 32767 | mekolat | 1 | -1/+1 | |
2015-04-05 | remove deprecated cmdothernpc | mekolat | 1 | -21/+0 | |
2015-01-23 | Use generated config for map | Ben Longbons | 1 | -21/+5 | |
2015-01-03 | Document every network packet's pre, post, and desc | Ben Longbons | 1 | -21/+0 | |
With pretty pictures (not a submodule because large images). Part of this commit was originally made by Rawng. | |||||
2014-11-09 | Add explicit check for mapless events | Ben Longbons | 1 | -4/+3 | |
2014-10-26 | Fix header ranking | Ben Longbons | 1 | -3/+1 | |
2014-10-13 | Convert container lookups to use Option<Borrowed<T>> | Ben Longbons | 1 | -30/+32 | |
2014-10-08 | Split npc parse functions in to their own file | Ben Longbons | 1 | -843/+13 | |
2014-10-08 | Split script.cpp | Ben Longbons | 1 | -1/+2 | |
2014-09-30 | Rename enum Option to Opt0 | Ben Longbons | 1 | -3/+3 | |
2014-06-30 | It's about time I did this | Ben Longbons | 1 | -7/+7 | |
2014-06-26 | Stick everything in a namespace | Ben Longbons | 1 | -0/+4 | |
2014-06-26 | Low hanging fruit | Ben Longbons | 1 | -21/+21 | |
2014-06-26 | specialize inventory/storage indices | Ben Longbons | 1 | -4/+4 | |
2014-06-24 | No one is .neutral() here (except IPv4 addresses) | Ben Longbons | 1 | -1/+1 | |
2014-06-23 | Swat | Ben Longbons | 1 | -1/+4 | |
2014-06-23 | Generate the map server protocol | Ben Longbons | 1 | -29/+31 | |
Sigh, map server will have no smart filters yet | |||||
2014-05-12 | Split net/ from mmo/ | Ben Longbons | 1 | -1/+2 | |