Commit Graph

166 Commits

Author SHA1 Message Date
Ben Wallis
34f580dfaa Introduced loot ownership rules to combat loot stealing by players
* Added `LootOwner` component used to indicate that an `ItemDrop` entity is owned by another entity
* A loot winner is now calculated after EXP allocation using the EXP per entity for weighted chance distribution
* Used existing Inventory Full overitem text to show "Owned by {player} for {seconds}secs" when a pickup fails due to a loot ownership check
* Updated agent code to take into account loot ownership when searching for `ItemDrop` targets to pick up
* Added `loot` ECS system to clear expired loot ownerships
2022-05-28 12:06:49 +00:00
Isidor Nielsen
a685a353cb Shared and persistent waypoints 2022-02-20 10:10:18 +00:00
unvariant
9d98cd9e58 Render item drops instead of placeholder textures 2022-02-14 02:09:45 +00:00
Avi Weinstock
5f8957d8ef Globally allow the clippy lints {new_without_default, many_single_char_names, identity_op, type_complexity, too_many_arguments}. 2022-01-30 20:16:20 +01:00
Joshua Barretto
043016a433 Don't try to mount unmountable entities, clippy fixes and fmt 2022-01-16 17:53:14 +00:00
Joshua Barretto
b3e2d825ed Overhauled mounting to make it more reliable 2022-01-16 17:53:13 +00:00
Sam
7ae8ed09f6 Addressed MR comments. 2022-01-15 21:50:27 -05:00
Sam
4c3771a1a0 Persistence of auxiliary abilities. 2022-01-15 21:42:34 -05:00
Sam
e98edbcc7a Conversion of poise damage to health damage now scales depending on the poise state the target is in.
Entities are now immune to poise damage for 1 second after exiting a poise state.
Rebalanced most phyiscal damage attacks on player-accessible tools.
2022-01-12 22:18:59 -05:00
Sam
d1e1de3b14 Slashing damage now decreases target's energy if available, and if target has no remaining energy will do additional damage.
Piercing damage now ignores an amount of protection equal to the piercing damage value.
Crushing damage now does poise damage equal to the amount of mitigated damage.
When poise damage is dealt while in a poise state, poise damage is instead converted to damage.
2022-01-12 22:18:58 -05:00
Sam
8221336587 Addressed some review. 2022-01-03 19:55:04 -05:00
Imbris
bf48bd5346 update toolchain to nightly-2021-12-19 2021-12-23 13:04:24 +01:00
Joshua Barretto
e3203080ed Added Calendar for temporal events based on the real-world calendar 2021-12-20 18:03:52 +00:00
Ben Wallis
022c1417b6 EXP on kill is now shared between damage contributors. A "damage contributor" is either an individual entity, or a group - depending if the attacker is in a group. This means that not only does the "killing blow" no longer get 100% of EXP, but multiple groups and individuals all receive their fair share of EXP on death (assuming they are still within range of the entity when it dies).
Damage from a given individual or group only counts towards a kill for 10 minutes since that individual or group's last damage to the entity - after this period their damage contribution is removed. This avoids the list of damage contributors growing excessively large for an entity that does a lot of combat but never dies.

EXP sharing within groups is unchanged - the difference is simply that the input to this calculation may be less than 100% of the base EXP reward for the kill if other individuals or groups contributed damage.
2021-11-13 20:46:45 +00:00
Joshua Barretto
46ec4203a2 Arbitrary volume airships 2021-11-13 17:13:08 +00:00
Sam
a288f9ee43 Addressed further review. 2021-11-11 22:37:37 -05:00
Sam
a8bec0280c Ability pool mostly functional. 2021-11-09 12:56:07 -05:00
Sam
942376f88c Made poise a float at interface of module. 2021-09-25 14:07:47 -04:00
juliancoffee
4e3fb87526 Adress review
- Rename Collider::get_radius to bounding_radius
- Check origin difference in CapsulePrism with EPSILON * 10.0 instead of
  magic 0.00001
- Add comments for closest_points, hardnened expression against NaNs
- Add comments to try_e2e_collision function, renamed to
  resolve_e2e_collision, make it return whether collision was triggered.
- Remove Collider::Box (it is Cylinder, which is subset of CapsulePrism
  with p0=p1=Vec2::zero())
2021-09-17 13:28:34 +03:00
juliancoffee
c069a3523d Fix beam offsets
- Introduce notion of min and max radius for Body instead of old
  `radius()` function (which is renamed to `max_radius()`).
2021-09-17 13:28:34 +03:00
juliancoffee
eeb3bec8ad Refactor implementation of e2e collision
+ Add some hopefully helpful comments
+ Extract colliding tries to separate function
+ Move to Capsule + Cylinder collider combination instead of Capsule +
  Capsule.
2021-09-17 13:28:34 +03:00
juliancoffee
d86c9f2678 Remove body::Shape enum, make npc use CapsulePrism 2021-09-17 13:28:34 +03:00
juliancoffee
3b308a3f6f Add CapsulePrism collider variant
+ Add placeholder physics collision implementation as copy of cylinder
  Box collider.
+ Display it with debug hitboxes.
2021-09-17 13:28:34 +03:00
juliancoffee
43d40c4efc Workaround of bug with global Player component
* Set default value of battle_mode and last_battlemode_change explicitly
if isn't found in battlemode_buffer
2021-09-04 02:29:02 +03:00
juliancoffee
1baa9e9879 Add in-memory persistence for battlemode changes 2021-09-04 01:41:48 +03:00
Joshua Barretto
aa3ede79c1 Prevented mountable pets 2021-07-29 19:04:07 +00:00
Ben Wallis
01ca6911a9 * Pets are now saved on logout and spawned with the player on login
* Pets now teleport to their owner when they are too far away from them
* Limited the animals that can be tamed to `QuadrupedLow` and `QuadrupedSmall` to prevent players taming overly powerful creatures before the pet feature is further developed
* Added `Pet` component used to store pet information about an entity - currently only used to store the pet's database ID
* Added `pet` database table which stores a pet's `body_id` and `name`, alongside the `character_id` that it belongs to
* Replaced `HomeChunk` component with more flexible `Anchor` component which supports anchoring entities to other entities as well as chunks.
2021-07-28 22:36:41 +00:00
Avi Weinstock
a4d6f0f3c1 Address MR 2612 review comments. 2021-07-16 17:46:48 -04:00
Avi Weinstock
c417e8c5b9 Defer repositioning until after chunks are generated normally, to reduce latency and avoid duplicate work. 2021-07-16 15:42:50 -04:00
Avi Weinstock
7555be0e25 Spawn players aboveground when using /site or when their waypoint is underground. 2021-07-15 17:54:29 -04:00
Marcel Märtens
9b3b21f368 fix clippy warnings 2021-07-12 12:09:09 +02:00
Snowram
3ba0500b90 Tornado summoning attack 2021-06-15 09:49:13 +02:00
Sam
81f7e690fd Snowball attack. 2021-06-04 18:17:15 -05:00
hqurve
854930bc1a Item pickups are shown in separate window and "inventory-full" messages are shown above the item attempted to be picked up 2021-05-22 20:47:08 +00:00
James Melkonian
f76b61ac17 Make merchants /tell instead of /say 2021-05-11 17:26:22 +00:00
Avi Weinstock
e4cda4309e Add DamageKind, and make piercing damage partially ignore damage resistence.
- Tweak bow/staff M1 stats.
2021-05-06 17:39:06 -04:00
Daniel Mizerski
7faa0d3cd9 Add fundamentals for wiring system. 2021-05-02 22:38:44 +02:00
Snowram
bd84677906 Day period dependant wildlife spawns 2021-04-25 02:14:51 +02:00
Ludvig Böklin
762c68cfbb Basic fluid dynamics and physical properties for entities 2021-04-20 17:38:19 +02:00
Marcel Märtens
5862920f32 seperate sys/state 2021-04-20 01:30:17 +02:00
Enrico Marconi
a941833ff1 fix issue #1077: show kill msg only to group members and nearby players if... 2021-04-18 20:46:16 +00:00
Sam
c8d4c4ff84 Gated safe zone behind a server setting, removed unneeded function. 2021-04-17 17:54:11 -04:00
Sam
416fe5c2af Safezone is now permanently in existence at spawn. 2021-04-17 17:33:54 -04:00
Ben Wallis
95d7a3d761 Fixed cargo test-server. Removed -Z package-features from .cargo/config as it is no longer required 2021-04-15 19:07:46 +01:00
holychowders
568a8d9666 Resolve Issue #978 - Extract SkillSet Into Its Own Component 2021-04-14 15:35:34 +00:00
Joshua Yanovski
af94753ad9 Remove panics and unwraps, part 1.
Also fixes various other miscellaneous bugs.
2021-04-10 10:03:21 +02:00
aljazerzen
8ac879e4c1 after leaving group, issue warning instead of changing chat mode 2021-04-01 15:43:50 +02:00
Avi Weinstock
75f1b0f5e0 Remove level from create_ship and CreateShip. 2021-03-23 10:44:42 +01:00
Avi Weinstock
deb9358c3a Add ServerEvent::CreateShip, and use it instead of CreateNpc for RtSim airships. 2021-03-23 10:44:37 +01:00
Avi Weinstock
49f39fb752 Make more systems work with an optional health component, to allow disabling health on rtsim airships (so that players can't hammer them out of the sky). 2021-03-23 10:44:32 +01:00