Commit graph

103 commits

Author SHA1 Message Date
Resaec
c84bf9ae74 evict players from the outfit. no longer shall you spy on our stale info!
update packet types
2025-08-31 03:05:31 +02:00
Resaec
18dd426d13 fix outfit rank names not representing DB values
add MOTD handling
renaming OMR packet types with known uses
handling outfit promotions (setrank)
handle outfit owner changes
changing the migration to change to unique index. allows concurrent refresh of MV
2025-08-30 01:35:51 +02:00
Resaec
cc16040ec3 Simplified Outfit packet usage
Outfit cleanup
More tests
2025-08-24 16:43:24 +02:00
Resaec
72a8a7cd89 OutfitEvent rework
renamed type Unk4 to UpdateOutfitId
2025-08-24 00:24:32 +02:00
Resaec
e3fe9b69bf OutfitMemberEvent now supports the two main packet types Unk0 and Unk1.
Support for Unk0's subtypes Unk0 and Padding have been removed in favour of the main type.
Should be reimplemented at some point, but I don't know how yet.
2025-08-23 21:54:07 +02:00
Resaec
7528388eb1 OutfitMemberEvent
I failed horribly implementing two type conditionals, please send help
2025-08-22 01:28:27 +02:00
Resaec
f3eed484af OutfitMembershipResponse rework, tests added 2025-08-21 23:04:29 +02:00
Resaec
17682c08d6 OutfitMembershipRequest all packets known!
OutfitMembershipResponse decoded, needs rework
OutfitMemberEvent decoded, needs rework
Tests reworked
2025-08-21 02:23:32 +02:00
Resaec
d450a1b6e5 OutfitListEvent ListElementOutfit decoded 2025-08-20 00:03:17 +02:00
Resaec
308ea20dee same same, same same... uint32L? 2025-08-17 21:20:29 +02:00
Resaec
d19cd744d5 extend OMR with Unk2 codec 2025-08-17 19:51:20 +02:00
Resaec
6e23b701a6 outfit_id is uint32L 2025-08-16 00:19:13 +02:00
Resaec
f977ea8e6f clean up, fetch up and even more packets 2025-08-10 22:57:01 +02:00
Fate-JH
58238df1fd
Customer Service (#1247)
* initial workings for a csr/gm player mode

* weird line removal after merge

* too many changes and refactors, but the code compiles properly; need to push these to the repo and sort out issues with it all later; hopefully, nothing has changed except for the csr stuff

* extensive changes to mode logic for refactoring and functionality improvements, especially for accommodating csr spectator mode

* csr's may now see players who are spectating, including csr's who are spectating, including a wide variety of their behavior such as location, weapon management, etc.; removes zoning cancel messages as a required log from certain use item actions

* corrected various issues identified in the comments of PR#1247

* restored killed->autorevive functionality; removed last traces of old door code from general operations

* knife stab corrected; spitfire turret corrected; blockmap interactivity using zone interaction allowance flag; visibility during resurgence code for csr; removing messages and experience gain for interactions with csr

* pruning imports and correcting the default spectator setting

* separated router/telepad activity from other vehicular activity, previously all considered a form of mounting/dismounting, and restored support experience rewards

* can not activate or deactive spectator of gm when dead; zoning while spectator removes spectator and defaults to sanctuary

* field turrets are neutral-neutral when constructed by a csr; custom bang command 'setempire' will adjust the faction affiliation of a variety of game objects

* fixed facility occupation recognition

* when transitioning between player modes, do not parse new messages about transitioning between player modes, until fully transitioned between player modes
2024-12-02 13:26:37 -05:00
Fate-JH
6a349d0fe1
Repeating the Obvious (#1233)
* adding chat and event messages that have been neglected since; these are easy additions

* completely retooled water interactions for players and vehicles to handle a wading status, before drowning; when player with llu or vehicle with player with llu come into contact with water in this wading state, the llu is lost and the facility hack ends; adding messages to support this and differentiate from an llu facility capture timeout

* periodic message while the llu is active, whether or not there is a carrier, until the hack is finished

* message when inventory is full (assumes player inventory destination, but item winds up in hand due to lack of space, but it works)

* when changing exo-suits, complain if equipment has to be deleted; dropped equipment is limited to special equipment; report a player pointlessly

* announce ams decay to players who have just spawned on an ams, when they spawn on that ams, and for the last round of spawnees when the vehicle finally deconstructs; due to use of the word 'bound' this may be an incorrect application, but matrixing doesn't work anyway

* deconstruction message for would-be driver when vehicle is abandoned on spawn pad; tempo on message delivery is different than usual

* message when player is kicked from orbital shuttle gantry; message when player attempts to bail in a warp gate; message when player attempts to bail from a droppod; stop player from succeeding in bailing from a droppod

* vehicle pad deconstruction complete message; message when nc max shield deactivates when out of capacitor power or when max opens fire; message when ams can not deploy because it is blocked by other entities; message when facility capture requires ntu

* message for deployables being blocked; cleaning up dev test section

* Yellow Ownership (#1226)

* just some tinkering and clean-up

* converted DeployItem from AvatarService to LocalService; attempt at resolving missing overwhip yellow ring is complicated; vehicle ownership packet wqorks on deployables that are mountable, but is less successful on normal simple deployables

* restoration of yellow ring of ownership around deployables; changes to variant of CommonFieldData transcorder used on certain deployable transcoders; static values are assigned parameter names and public variables are given types for completion

* initial packet for GenericObjectAction2Message and tests; repaired transcoders and tests for TRAP and small turrets

* force redraw of the whole boomer to assert reassignment of ownership; it's heavy-handed but it works

* deployable ownership should be asserted during both re-zoning and revival; refactoring of code in ZoningOperations

* message when inventory is full (assumes player inventory destination, but item winds up in hand due to lack of space, but it works)

* vehicle deployment messages added in, then deployment was fixed to accommodate an explicit caller, and that changed a whole lot of the deployment loop for messages; environmental activity was modified to maointain a more responsible start/stop transition; many many test changes (still an issue with a lot of them)

* moving around conditions for losing the llu

* the question of one extra bit for small deployables; also, all tests pass successfully, tho resource silo use remains coin flip; what sorcery is this

* duplicate capture lost message eliminated; flag lost violently due to environment in general rather than just water interaction; flag lost violently due to warp gate envelope interaction; flag lost due to be dropped in an unsafe position

* vary the testing depth for water interaction

* darn tests

* fixed vehicle interference; added missing ArmorShieldOff message; clearing countdown after vehicle spawn should stop countdown from appearing in subsequent vehicle spawns

* the router needs 20m of clearance

* removing the shared group interference information from routers
2024-10-01 16:01:00 -04:00
Fate-JH
9708bf9beb
Yellow Ownership (#1226)
* just some tinkering and clean-up

* converted DeployItem from AvatarService to LocalService; attempt at resolving missing overwhip yellow ring is complicated; vehicle ownership packet wqorks on deployables that are mountable, but is less successful on normal simple deployables

* restoration of yellow ring of ownership around deployables; changes to variant of CommonFieldData transcorder used on certain deployable transcoders; static values are assigned parameter names and public variables are given types for completion

* initial packet for GenericObjectAction2Message and tests; repaired transcoders and tests for TRAP and small turrets

* force redraw of the whole boomer to assert reassignment of ownership; it's heavy-handed but it works

* deployable ownership should be asserted during both re-zoning and revival; refactoring of code in ZoningOperations
2024-08-22 23:33:47 -04:00
Fate-JH
02f95a293e
Implant Terminal Hack (#1221)
* preliminary functional implant hacking; am going to explore better hacking policies

* HackMessage now uses custom fields and a float value rather than integers (2, 32, 32); separate hack state and hack clear states; everything changes
2024-08-03 00:12:16 -04:00
Fate-JH
d1dbbcb08f
Bug Fixes 20240712 (#1212)
* correctly clear the hack state of terminals when unpowered; turrets will no longer act like they have AI control if jammed when mounted; restore passive implants

* reload opened and closed doors upon zoning changes; rework ntu silo and ant interaction start; clear hack on proximity terminals; facility turrets stop indicating towards jamming cause when mounted

* radiator is turned off due to potential for server crashes; cerebus -> cerberus; turret kills name owner only when they are in the same zone; fewer chances for turrets to fire when they should not

* incorporating structural changes to hacking for future expansion

* an attempt at fixing tests was made
2024-07-29 02:17:42 -04:00
Fate-JH
593caec8cf
Hijacking Turrets (#1207)
* omft jacking functional; omft shields have been wired but remain disabled

* breaking up classes related to different kinds of turret deployables
2024-07-01 11:19:39 -04:00
Fate-JH
92063ba3a2
Fixing Tests (#1204)
* fixed about half of the unworking tests, and commented out one

* stubborn tests that pass on their own but don't tend to pass in clusters; also, a certain test that terminates an actor when a mostly unrelated entity has its propertries changed from default, just weird

* reviewing logic and operations pairs to ensure that functionality should have been retained from parent structure; moving handling case from individual player modes to session actor, which makes it much closer to the pattern

* while it's still a dice roll, all tests currently implemented are capable of passing

* deployable vehicles should properly deploy again now that they don't have to fight with themselves for the ability to deploy

* boomers are no longer owned if the trigger is dropped (how long has this been not working?)

* redid DamageFeedbackMessage packet because I thought I could use it for something; didn't use it for anything; boomers are no longer responsive to explosive sympathy

* redid combat engineering explosive logic

* redid (cleaned-up) implant logic

* implant initialization timers now saved to the database; uninitialized implants will appear as uninitialized when the character loads; passive initialized implants will always start as activate

* renaming methods; progress bar calculations change

* accounting for implants that are in the act of being initialized
2024-06-22 01:42:25 -04:00
Fate-JH
426ab84f0a
Spectator Role (#1200)
* reorganized files and methods for session actor in preparation for custom spectator implementation

* split existing code between data and functions, and entry points; parsing and logic management is now handled within the current game mode, which should reduce the need to ask explicits

* should fix players not performing damage after being broken for an unknown amount of time, maybe never working correctly

* functioning spectator mode logic swap; initial packets for UplinkRequest, UplinkResponse, and UplinkPositionEvent

* available chat prompts can now be different based on player mode without testing flags

* modified ChatActor to be replaced by a function-data logic pair, and modified ChatService to be able to accommodate the new chat channel; chat packet handling moved from general operations to the new chat operations

* resolved issues with spectator implants, at least enough that implants should be stable; created an exclusive permission for spectator mode; database changes to persist permissions for different modes

* command detonater is no longer allowed; spectators now hold a laze pointer

* for the purposes of testing, anyone can be a spectator

* spectator mode is important to confirm; removed deprecated chat actor; dismount quietly

* oops; allowed again

* restored commands setbr and setcr; deployables are erased from spectator map; projectiles destruction only just in case

* role only for those who are permitted
2024-05-10 22:30:20 -04:00
Fate-JH
23c4310258
External Doors (#1190)
* defining all doors; moving around classes related to environment fields; separating global definitions into a main file and implementation files

* logic for declaring door occupants/users as inside or outside or within an open door using door declarations, geometry and environment fields, and math; divided the remaining object type definitions into their own files and removed those from the main global definitions file

* integrating inside/outside considerations into server-calculated damage; clarifying the sidedness comparison rules; extending inside outside considerations for deployables and vehicles

* projectiles that, by definition, are allowed to damage targets through walls (radiation_cloud, with DamageThroughWalls) regardless of sidedness; any unflagged radiation_cloud must be on the side as its target; fixed chat bang-commands not being executed

* added sidedness to different entities, both in general and depending on the zone where it matters

* removed three too-specific fields on the door's definition, resulting in nontrivial rewrites that resulted in all amenities being able to project an environment field onto the block map, to do with whatever it needs

* wrote WithEntrance interaction to be able to switch between normal / debug modes; telepad and router sidedness support; fixed bang-commands; fixed issue with proessing player mounted state; added zone entity discovery feature (unused)

* empty character literal is a digit somehow

* adding way to allow bang-commands that only a gm would have access to for everyone
2024-03-29 00:33:38 -04:00
Fate-JH
b43e7a6993
Environmental Redo (#1169)
* switched environment handling from the control agency side to the entity side to match other zone interactions

* reusing the existing sector data; better resets, negating an issue during mounting where the player does not switch back to recovery; disabling was bugged due to missed timer upgrade

* making lava no longer deadly; wait ...

* only one method of cancelling a lava interaction at a time
2024-03-02 23:43:53 -05:00
Fate-JH
ea77d4728f
Turret Automation (#1166)
* zone interaction for turret discovery, players only so far; minor field value change for small turret data; automated turret target recognition; grammatical and linter fixes

* initial AIDamage packet and tests; wrote handling code for the AIDamage packet that transforms it into actionable projectile damage

* thoroughly reorganized code in behavior; added code for turret-specific interactions for deployable construction, deployable destruction, jamming, and for weaponfire retribution; killing is currently disable for testing turnaround

* introduced definition properties to configure auto fire; interspersed properties into relevant files; non-squared velocity check for isMoving

* separated overworld facility turrets from cavern facility turrets, called vanu sentry turrets; tightened functionality inheritance between turret deployables and facility turrets; corrected issue where recharging vehicle weapons didn't work

* adjust mounting code to betterhandle automation with the facility turrets; basic operation of automation has also been changed, adding a variety of ranges to test against, and cylindrical distance checks

* attempted cleanup of previous test fire condition; division of turret callbacks between generic targets and vehicle targets; facility turret stops automatic fire when being mounted and resumes automatic mode when being dismounted

* self-reported firing mode for targets that go stationary and then use a 'clever trick' to avoid taking damage while in full exposure to the automated turret; documentation on the automated turret operations (it needs it!)

* making specific target validation conditions for different auto turrets, also target blanking, and clarification of how the self-reporting mode cleansup after itself; wrote function documentation to make it all make sense (it doesn't)

* secondary queue that keeps track of the previous test shot subjects when none have been tested, allowing for a packet to be skipped during subsequent test shots

* reactivating turret deployable destruction; clarifying the validation and clearing conditions for different kinds of auto turrets; extending self-reporting auto turret behavior to other auto-turrets

* overhaul of the auto turret target selection process; conditions for MAX detection; rewired self-reporting to address the its issue a bit more specifically; ATDispatch is no longer useless as differences between facility turrets and deployable turrets have been identified, shifting the method to implementing and overriding in subclass control agencies

* turret detection methods accounting for specific targets and considerations such as silent running; various turret interactions with other turrets and radiation clouds; proper management of retaliation and jamming; facility turrets have play in the lifecycle in the power structure and capture mechanics of the facility

* uniqueness can be generated without having to having to go through source entries; made certain turret upgrading cooperates with turret automation; other targets for turret misaimed aggression; turrets sychronize better on zone load; target validation and blankinghas changed again

* starting the target validation timer when dealing with retaliation if it should come from beyond the maximum detection range

* stop assuming mountable turrets have places to mount; AMS and AEGIS blocking detection of vehicles; deployable sensors and small robotics turrets are allergic to vehicles

* AEGIS and AMS cloak bubbles more proactive
2024-03-02 23:16:10 -05:00
Fate-JH
f2c486d6f6
initial debug draw packet; data for the tests are entirely fabricated as we have no instances of this packet in the wild (#1170) 2024-03-02 23:08:59 -05:00
Fate-JH
da32c68479
Merge pull request #1159 from Resaec/squad_voice_host_request_message
Fully implement the VoiceHostRequest packet
2024-01-08 11:25:00 -05:00
Fate-JH
cc48e96b83
Merge pull request #1160 from Resaec/outfit_membership_request_packet
OutfitMembershipRequest packet
2024-01-08 11:23:58 -05:00
Resaec
4d87fd2665 Add a potential packet to the test cases
Better highlight SMR test message type in packet string
2024-01-01 02:30:13 +01:00
Resaec
83c4445dd0 VitalityTest ClearHistory fix
Event history was reversed in XP rework
2023-12-28 23:49:36 +01:00
Resaec
f7f734296b OutfitMembershipRequest packet codec finished 2023-12-28 23:02:48 +01:00
Resaec
9703ac402d OutfitMembershipRequest packet start 2023-12-27 06:25:40 +01:00
Resaec
88ac2f35f7 Append opportunistic overhang data consumer 2023-12-27 01:47:25 +01:00
Resaec
e68c912ecb Implement the VoiceHostRequest message 2023-12-24 05:14:27 +01:00
Fate-JH
52deb2b212 appeasing the testing gods 2023-10-31 01:25:02 -04:00
Fate-JH
e9dbd5f259 importing controlled implementation changes from original exp-for-kda branch; assist kill experience rewarded
importing controlled implementation changes from original exp-for-kda branch; code for contributions from prior activity, but will be adjusting to new contribution methods

kill contributions should work; even if they don't, need to put this away for now

extensivwe changes to the way OwnableByPlayer manages owner user information due to uniqueness, that changes a lot of vehicle and deployable code; fleshing out experience calculation procedure for future testing

events for mounting and dismounting of both passenger and cargo; id'ing the installation of an amenity (vehicle or facility); separation of kill/assist experience and support experience calculations; retention of kill record which allows for the calculation of menace

support experience accumulates and is given to the user in gradual provisions

rewarding facility capture through cep; not fully tested yet; math sucks

sort of cep to bep consditions for squad facility capture; bep deposit for ntu silo activity

early reivision for v010; recording ongoing shots fired and landed

restored bep from ntu deposits into resource silos; updating statistics in the database regarding kills and related stats including weapons; updated history management; basic experience calculation changes

all rewarded support events are accounted for

command experience calculations upon facility capture or resecure

corrected database migrations

most of the code for the play or progress system

statistics window updates for exosuits to report kills; killing an llu runner gives cep; moving play or progress functionality to a bang command rather than piggybacking setbr; bep is no longer too high by error
2023-10-17 14:06:21 -04:00
Fate-JH
6f4ceaee29
Utility Vehicle Drivers (#1102)
* recalcalating name offsets for later; primary test is this player-driven AMS (see PSMU for details)

* found fields in the ConnectToWorldRequest packet; clarifying field names in a variety of places; enough modifications to make an old packet transcode properly

* it works?

* giving VehicleFormat its own file; fixing imports
2023-05-30 13:05:38 -04:00
Fate-JH
48d320c7b1 initial packet and tests for OutfitRequest 2023-05-22 16:27:06 -04:00
Fate-JH
70c4393e9b
Misc Fixes (#1076)
* new paradigm for character creation detection of old characters by name; vehicle channel when seated in vehicle (ant); second wind activates as long as non-fatal damage n>=25; coordinated sequence of deployables whose UI is being updated

* the max timer will assert itself through death and respawn

* in theory, the tests are fixed; that may change from execution to execution, as is usual

* adjusted how the mechanized exo-suit timer asserts itself when in conjunction with prior exo-suit purchase orders

* players in seats have their mounted information shortened in a more straightforward, less fault-prone way; stamina recharge command shortened

* fixed vehicles not loading when player has no GUID; deactivated squad features (may cause trouble for the Router, but we'll manage); removed lingering, unnecessary radiation tick

* even if the player seems to be standing completely still, send an update packet once in a while (1500ms)

* removing an active router will always clean up an active router telepad with which it is paired

* better timing for refresh of the character select screen; potential to stop moving vehicles from anothers's perspectives

* block mounting while vehicle in motion, or in control; if ejected early, end control early

* block mounting while vehicle in motion, or in control (2)
2023-05-15 22:24:35 -04:00
Fate-JH
5b0203850d
Not Really a Door Opener (#1063)
* the medical applicator will not long open doors from a distance unless we want it to do that

* fixing tests
2023-04-18 20:43:02 -04:00
Fate-JH
1bb21ba79c
Vehicle Gating with Cargo (#1060)
* restore vehicle cargoing after vehicle cargo gate transfers

* fixed this test, maybe?
2023-04-17 01:16:06 -04:00
Jakob Gillich
1b367c455f
formatting 2023-04-15 19:02:46 +00:00
Fate-JH
7e899e9ef3
No Uniform, No Helmet, No Service (#1040)
* added extra checks to eliminate cosmetics from the packet transcoder where having them defined would be considered harmful to the data

* new uniform options; moved cosmetics class file

* assurance that the cosmetics settings are accurate during transitory points
2023-03-16 13:12:54 -04:00
Fate-JH
779054fef9
Experience for KDA [Prep-work] (#1024)
* extensive modifications to source entry shorthand

* moving 11 files changes 55 other files

* added score card classes; upgraded packet classes

* I decided to import over everything

* proliferation of in-game activity messages, especially for spawning activity; removed defaults for activities; fixed (most?) building tests

* upkeep on the LLU's managing service, as well as the facility hack management service, in response to a potential bug

* a facility that changes faction affiliation while it is the destination of an LLU delivery will cancel that LLU delivery

* fixed crash due to boomer trigger overriding position of ace, without the ace being properly cleaned up on the client of the bomber; fixed issue with the boomer trigger going missing

* flipped the first two FDU deployable settings so they match the correct fire modes; corrected a stack overflow situation with the sourcing entities

* action, but no response

* condensed parameters on avatar class

* as always, fixing tests

* quickly, loose ends tied
2023-02-14 00:09:28 -05:00
Fate-JH
40cf783f18
Code Style Improvements (#1016)
* code style improvements for SessionData file

* refactored and simplified methods; added GenericAction case enum for smoother GenericActionMessage behavior; fixed timers for MAX unit

* 10 -> 11; suffixes for actions that are 'received' from the client
2023-02-10 23:40:16 -05:00
Fate-JH
ebfc028f5c
Team Building Exercise [Incomplete] (#1013)
* Squad -> SquadFeatures from a common lookup

* refactor to SquadService, etc.; clarification of fields related to outfit ids

* thorough pass over squad functionality in regards to joining a squad or rejecting a squad invitation

* decorating squads in the squad list to indicate availability based on size/capacity or role requirements

* squad list decoration; rudimentary squad list searching

* renovations to squad joining, promotion, and certain invitation/cleanup procedures

* further renovations to squad joining, promotion, and certain invitation/cleanup procedures

* overhaul of squad joining and squad promotion

* separated the invitation system from the squad publishing and manipulating system
2023-01-16 10:42:05 -05:00
Fate-JH
3bd50dc89c
Relog Fix (#1012)
* separating stages of client interaction with the session's avatar; connection closing is caught to avoid unnecessary log messages; changed how ActionResultMessage views its parsing format

* fixed issue with relogging while persisting as dead (thanks Scrawny)

* almost forgot to turn this back on after I finished testing
2023-01-07 23:13:49 -05:00
Fate-JH
630c2809cb
Shortcut to Grenade (#1010)
* routine that finds, equips, and draws a grenade if the user has it; moved handling of ObjectHeldMessage from SessionActor to PlayerControl; placed a arm movement restriction condition

* loading of, and adding and removing of shortcuts to/from both the database and the client hotbar

* player-driven sanity tests to reload otherwise unavailable hotbar shortcuts; revamp to CreateShortcutMessage
2022-10-24 18:16:08 -04:00
Fate-JH
1369da22f0
Login Location Persistence (#1009)
* database tables and persistence entities; attempt to retrieve values from database and apply them to the player avatar character; resolve spawn options in sanctuary in different manner

* minor database table field adjustments; saving to database when account persistence ends; properly loading from and initializing with data queried from the database; suicide better supported

* converting the zoning method/status tokens; better support of zoning handling of persistent locations; messages that explain the consequences of login-spawning into an invalid location

* adding triggers for the 'saved char' message, both those prompted by game activity and a 'reassurance' message; also, actually save the char data sometimes

* intervals for timing charsaved message set by configuration file now

* corrections to spawn tests and tables

* random sanctuary spawn in more places than one
2022-10-11 11:16:12 -04:00
Fate-JH
190a897dd5
Enemies (No Friends) (#1008)
* database, transfer objects and storage objects for lists of good friends, and of friends that you want to ignore

* friends and ignored players get added to lists, to the database, load in appropriate states, and update at basic appropriate times

* ignoring players and being ignored by players cuases loss of communication avenues, especially tells, and visibility

* modified the [friend list, ignored player list] x avatar query for better performance as the sizes of the results increases using joins and using targeted column selection

* obligatory fixes to tests that come with every update
2022-09-20 13:05:05 -04:00
Fate-JH
ced228509c
Intercontinental Gaslighting (#998)
* diversified building management by injecting behavior; allocated entries for the intercontinental lattice and have begun connecting warp gate entities along the intercontinental lattice; beginnings of warp gate broadcast operations; disabled free merit commendations

* allow transit across a predetermined warp gate path, i.e., proper zone-to-zone gating

* game variables for modifying warp gate behaviors; moved choice of building game logic into overloaded constructor; only handle the capitol fore dome in more realistic conditions; warp gate state restored primarily b y internal game logic; changes to which and how gates are declared inactive or broadcast at startup

* initial work on WarpgateLinkOverrideMessage, even if the packet doesn't seem to do anything; added basic service for rotating cavern zone locks via the galaxy messaging service; moved error checking for lattice connectedness

* cavern closing warning messages queued

* starting to set up ChatActor for /zlock command, and added /setbaseresources; conditions for correcting broadcast conditions of a locking warp gate pair; system for rotating through locking and unlocking cavern zones only uses two timers now and has an advance command that speeds to the next closing warning or cavern opening

* expedited cavern rotations available via '/zonerotate' and '!zonerotate [-list]'; '/zonelock' should work for caverns, though distorting the rotation order to accommodate the cavern being unlocked; configuration arguments exist for the setup of cavern rotations and for the rotation itself

* populated cavern lattice connections for a specific rotation order; warp gates will properly activate and deactivate and modify their neighborhood information based on which stage of the rotation; fed up with the blockmap going wrong; added a sanity test for the cavern lattice; Spiker damage calculation changes

* adjusted local variable requirements of BuildingActor to integrate retained actors more closely with the Behavior; on the other hand, another value is passed around the logic

* bug fixes observed from issues found in logs since 20220520; halved the spawn height when gating to a cavern warpgate

* cavern benefits are now represented by enumeration classes rather than additive binary numbers; when facilities change state, benefits are evaluated; when caverns rotate, benefits are evaluated; cavern facility logic added; attempted handling for inventory disarray conditions (untested)

* broke down tabs for easier navigation; added test to stop spawning of cavern equipment when not otherwise permitted

* code comments, everywhere; correcting issues with cavern rotation timing reports

* but is it flying?
2022-06-14 02:21:24 -04:00