* 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
* 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
* 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
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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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?
* ability to swap merit commendation ribbons on shoulder and have other players see it
* ability to swap merit commendation ribbons on shoulder and have other players see it
* VehicleControlTest from elsewhere
* giver all non-Exclusive ribbons that would become available to faction/sex and allow modification of the ribbon bars
* awards only need to load during login activities; fixing a few awards that were not being allocated correctly
* wrong conditional for sex check
* preparations for deploying oicw little buddy projectiles
* oicw little buddy projectiles spawn and animate properly, but damage dealing is inconclusive
* radiator clouds cause damage to infantry health
* oicw little buddy projectiles do damage upon detonation; different descent pattern; projectile types given own Enumeration
* proximity terminals for vehicle actions no longer need to use the vehicle event system as a middleman for making changes
* redid the workflow of the proximity terminal resolution so that it avoids SessionActor as much as is possible; this may be a mistake, but my future self will pay the price instead
* changed the timing and the angles of the little buddy explosions; fixed proximity terminal tests
* preliminary elements needed to battle frame robotics; mostly from previous branch
* introduction of FrameVehicleStateMessage and anticipated event system paths for BFR's; spawning amenities for BFR's are parsed and built from the zonemap files, but their coordinates are currently incorrect, and the resulting entity will not function atm
* bfr's spawn correctly; default arm weapons will spawn correctly; bfr rearm terminal added but arm swap not working correctly; bfr shields charge if not full; proper separation of vehicle spawn pad types
* arm weapon swapping in bfr's; swapped weapons switch, contextually, to either *_left or to *_right depending on the mounting; partial support for entities that do not have an OCDM packet form
* crouching improves shield regeneration
* some projectiles damage the bfr regardless of its shield
* delay the final vehicle explosion; start of vehicle subsystems
* handling for bfr shield ui updates; more of vehicle subsystems; corrections to TradeMessage packet; clarifications for FrameVehicleStateMessage package; report on flight status of bfr's
* control agency support for vehicle subsystems for arm weapon fire control
* vehicle capacitor, for what it's worth; shield and capacitor are influenced by recharge freeze and drain
* initial packet and tests for AvatarAwardMessage; update the fields of FreindsResponse, DetailedCharacterData, and LoadoutType for FavoritesMessage; corrections to intiailization packets in SessionActor; players start as imprinted by default
* support for GOAM and GAM integration into vehicle control agencies using a basic actor superclass; addition of vehicle subsystems; modifications to bfr control agency to allow for weapon handiness and subsystem control; fixed Fit mapping for vehicle override; made mountable seat transcoders independent
* delayed explosions to accompany the delayed death for the bfr; bfr terminal window closes on successful purchase
* the bfr armor siphon works
* clarification for bfr inventory item manipulation; corrections to length of bfr transcoder for flight variants; everything else in in support of the various arm weapons that can be assigned to the bfr, including damage proxy support for causing/interacting with/cleaning up after radiation cloud projectiles
* fixed the apc emp burst; fixed bfr arm weapon manipulation for activated subsystem; armor and ntu siphon support
* battleframe loadouts available upon vehicle spawn (vs and tr only)
* adb values for siphons; subsystem update message; some repairs
* cargo vehicles are subject to radiation damage; damage for battleframes are different depending on shield evasion status; battleframe loadout deleting supported; bfr kill box; automatically wire bfr sheds, includeing the ones in sanctuary
* proper bfr spawn angles; bfr vehicle timers; projectiles are no longer radiation clouds by default; better remote projectile cleanup; resolving incorrect weapon arm enabled states for bfrs
* added tests for FrameVehicleState and GenericObjectActionAtPosition; pass around maximum sector for zone interactions
* changed the triggers for the stamina regeneration timer
* potential fix for issue related to finding arm weapon mounts
* modifications to how vehicle subsystems are automated; jammer field updates; support and passing around custom block map ranges; does include activated dev tests for battleframe PAM, which will need to be stripped out later
* commit while working on subsystems mk2
* subsystems fail when jammed; an unoccupied bfr does not have shields active; pulling a bfr of one variant should block the other variant too
* fix distance check with radiation clouds; blocked bfr weaponry from anywhere but bfr arm mounts and cursor; ammunition depletion of aphelion laser; bfr shields deactivates when unoccupied
* significant modifications to vehicle subsystem operations; disambiguation of weapon subsystems; debuffs to charge rate and use rate for the capacitor and shield of bfr; test for ComponentDamageMessage; somewhat proper jammering operations for bfr
* pattern for applying damage to player avatar and player-controlled vehicle collisions
* pattern for applying damage to targets due to collisions, falling damage and crashing damage individually; fields to support these calculations are provided
* modifiers to translate 'small step velocity' to real game velocity, as reported by the HUD; corrections for velocity; corrections for velocity in other packets
* fall damage calculations moved to function
* basic two-body collisions between GUID-identified game entities and a ward against too many collisions in a short amount of time
* bailing mechanics
* vssm for non-driven vehicles
* comment about vehicle state message field
* comments and minor refactoring for current collision damage calc; tank_traps modifier; potential fix for blockmap indexing issue
* fixed cargo/carrier vehicle ops
* corrections to initialization of ce construction items; adjustments to handling of modifiers for collision damage
* modifier change, protection against flight speed and spectator crashes; submerged status is once again known only to the actor
* appeasing the automated tests
* hopefully paced collisions better; re-did how Infantry collisions are calculated, incorporating mass and exo-suit data; kill feed reporting should be better
* adjusted damage values again, focusing on the lesser of or middling results; collision killfeed attribution attempt
* kicking offers bail protection; lowered the artificial modifier for one kind of collision damage calculation
* correction to the local reference map functions
* fixed tests; attempt to zero fall damage distance based on velocity; attempt to block mine damage when spectating
* corrected flail deploy animation timing; added a working laze pointer terminal utility to the flail
* initial LongRangeProjectileInfoMessage packet and tests
* flail damages targets over a distance and damage dealt will increase with distance traveled
* flail laze pointer broadcasts a special waypoint to squad members and blanks position marker after a short time
* recharge terminal will remotely restore ammunition to ancient vehicle weaponry (like the flail) as weaponfire expends it
* laze waypoints do not double and are visible to all squad members; excessive squads do not form and stick around by accident
* initial OrbitalShuttleTimeMsg packet and tests; new objects to support HART shuttle transport system
* master was stale
* grouped scheduling for timing orbital shuttle activity
* door lock controls for HART shuttle lifecycle, and specifically for the doors that lead into the shuttle boarding hallway
* separation of the door from the door unlocking logic, which now has to be provided if performed by an outside source; a door that is locked either by bolt, HART routine, or other reason, can now be shut immediately; message when HART is not docked with a corresponding entry hallway door
* better degree of door logic control; all shuttle-related messages have been moved to LocalService; careful managing of 'original state' for the shuttle's cycle
* modification of seat mounting and cargo mounting support entities to expand functionality
* absolutely very little to do with the feature of this branch and a lot to do with yak-shaving; long story short, class inheritance is greatly modified and mountable seats can now accept multiple players if initialized properly
* a lot has changed: distribution of MountableBehavior, mount point information is more complex, vehicles convert differently, the routine of the shuttle timer is initialized differently; you can now successfully utilize the HART shuttle to drop into a zone
* swap of shutle from pad to pad control; tests and comments
* eject players from HART gantry hallway as if passengers dismounting from seat when not boarding through the use of environmental geometry; HART system uses duration from config settings to set scheduler
* rebase to curious master; repairs to vector rotation calculations; regression of mountable changes involving seats with occupancy greater than 1; orbital shuttle as a unique vehicle and amenity; corrected dismount offsets and offset calculations; weird angle of nc hart a building has been properly accommodated; hart events have prerequisite animation states
* rebase with master; looks like rebase with merged_master, which is also a commit
* lots of tests (though not nearly enough); checking the permission group of a shuttle seat no longer creates that seat
* fixing explosions
* fixed the persistence monitor service potentially using non-printable unicode in actor names
* can not use a droppod to gain access to one's own sanctuary
* removed hart facility update that causing open bay doors and beeping
* PR review changes
* fix for aggravation issues
* planar classes to describe levels of water and other fluid parallel to the ground
* corrected purpose of field in OxygenStateMessage and adjusted the structure of the packet; the environment is now 'regions filled with stuff'; messaging pathways to facilitate drowning and drown recovery in SessionActor, WorldSession, and PlayerControl, as well as the avatar event system
* drowning height is now a featur - recommend going through GlobalDefinitions; fixed lava pool collision to work on pool entry rather than drown level; lava now burns; painbox damage now is directed towards players control agency first
* drowning timer works correctly for both player and vehicle targets; timing and dive depth information for targets defined, but currently originates from a generic location (ObjectDefinition); packet OSM has been modified for efficiency; classes for environment features previously exclusive to drowning mechanics have been pushed towards generic naming conventions
* added sea and pools for z4, z5, z8, and z10
* vehicles now take damage (to the point of destruction) when exposed to lava due the expansion of environmental damage reasons and environmental damage modifiers; modification of the environment exposure lingo; streamlining of vital activity record system
* added basic drown params to flying vehicle definitions; object trait and control mixin for environment interaction, code moved from SessionActor and WorldSession
* separated environmental classes; handled waterlogged flying vehicles, in properties and code; wrote comments and tests
* players mounting vehicles and players subjected to the vehicle transfer process should receive updated drown-state status of the vehicle; drowning should suspend while in the middle of vehicle transfer, in the case the process is long
* increased damage performed to vehicles by lava
The game uses a UDP-based protocol. Unlike TCP, UDP does not guarantee that
packets arrive, or that they arrive in the correct order. For this reason,
the game protocol implements those features using the following:
* All packets have a sequence number that is utilized for reordering
* Important packets are wrapped in a SlottedMetaPacket with a subslot number
* RelatedA packets ae used to request lost packets using the subslot number
* RelatedB packets are used to confirm received SlottedMetaPackets
All of these go both ways, server <-> client. We used to only partially
implement these features: Outgoing packet bundles used SMPs and could be
resent, but not all packets were bundled and there was no logic for requesting
lost packets from the client and there was no packet reordering, which resulted
in dire consequences in the case of packet loss (zoning failures, crashes and many
other odd bugs). This patch addresses all of these issues.
* Packet bundling: Packets are now automatically bundled and sent as
SlottedMetaPackets using a recurring timer. All manual bundling functionality
was removed.
* Packet reordering: Incoming packets, if received out of order, are stashed and
reordered. The maximum wait time for reordering is 20ms.
* Packet requesting: Missing SlottedMetaPackets are requested from the client.
* PacketCoding refactor: Dropped confusing packet container types. Fixes#5.
* Crypto rewrite: PSCrypto is based on a ancient buggy version of cryptopp.
Updating to a current version was not possible because it removed the
MD5-MAC algorithm. For more details, see Md5Mac.scala.
This patch replaces PSCrypto with native Scala code.
* Added two new actors:
* SocketActor: A simple typed UDP socket actor
* MiddlewareActor: The old session pipeline greatly simplified into a
typed actor that does most of the things mentioned above.
* Begun work on a headless client
* Fixed anniversary gun breaking stamina regen
* Resolved a few sentry errors