Commit Graph

98 Commits

Author SHA1 Message Date
juliancoffee
5f3eaddb70 Split LodoutBuilder::build_loadout
LoadoutBuilder::build_loadout is a function which has four parameters
and 3 of them are Option<>, and although fourth (body) isn't Option<>,
it's optional too because it is used only in some combinations of
another arguments.

Because these combinations produces quirky code flow, it will be better
to split it to different methods.

So we did following changes to remove it and rewrite code that was using it
to use better methods.

* Introduce LoadoutPreset as new LoadoutConfig, currently it's only used
in Summon ability, because SummonInfo uses Copy and we can't specify
String for specifying asset path for loadout.
Everything else is rewritten to use asset path to create loadouts.

* More builder methods for LoadoutBuilder.
Namely:
    - from_default which is used in server/src/cmd.rs in "/spawn" command.
    - with_default_equipment, with_default_maintool to use default
    loadout for specific body
    - with_preset to use LoadoutPreset

* Add new make_loadout field with `fn (loadout_builder, trading_info) -> loadout_builder`
to EntityInfo which allows to lazily construct loadout without
modifying LoadoutBuilder code

* Fix Merchants not having trade site
We had heuristic that if something has Merchant LoadoutConfig - it's
merchant, which can be false, especially if we create Merchant loadout
lazily
As side note, we do same check for Guards and it fails too.

Too fix it, we introduce new agent::Mark, which explicitly specifies
kind of agent for entity

* `LoadoutBuilder::build_loadout` was written in a such way that depending
on main_tool you will have different loadout. Turns out it was this
way only for Adlets though and this behaviour is reproduced by specifying
different loadouts directly in world code.
2021-06-09 15:37:04 +03:00
Avi Weinstock
e09ae8ad83 Address MR 2356 comments. 2021-05-30 13:36:25 -04:00
Avi Weinstock
5164b1a539 Add comments to the PID controller code. 2021-05-30 13:36:25 -04:00
Avi Weinstock
8b20175b6e Implement PID controllers and use them to stabilize Agent airship flight. 2021-05-30 13:36:25 -04:00
holychowders
d5f3ba77d4 Make NPCs Aware of Sound - See Issue #913 2021-05-15 19:36:27 +00:00
Avi Weinstock
1ae105125d Change agent's condition field back to a bool (from bitflags) and add a separate int_counter field. 2021-05-09 18:09:53 -04:00
Avi Weinstock
1dfcdce1c0 Add a purple fireball to mindflayer and have it shoot it a few times before teleporting, and fix mindflayer AI's husk summons. 2021-05-09 18:09:31 -04:00
James Melkonian
346eb48a27 Move weapon tactics to functions and take target body into attack radius consideration 2021-05-06 21:17:05 +00:00
Sam
5c241850f1 Added sfx. Addressed comments. 2021-05-04 08:45:12 -04:00
Sam
2290a22a15 Gave minotaur AI. 2021-05-04 08:45:09 -04:00
Sam
811f1fadb2 Replaced action_timer with action_state so there are additional fields. 2021-05-04 08:45:09 -04:00
Sam
3cb0ee98c8 Removed all unique and simple tool kinds. 2021-05-01 09:25:51 -04:00
Snowram
8cf8e51962 Phoenix npc + AI (WIP) 2021-04-25 04:07:11 +02:00
Snowram
bc95484863 Swaps bird_small skeleton to a new bird_large 2021-04-25 02:14:49 +02:00
Vincent Foulon
d80db38bc9 Remove TRADE capability, use trade_site attribute instead 2021-04-08 19:06:57 +02:00
Vincent Foulon
bc1797a240 Address comments 2021-04-08 18:33:00 +02:00
Vincent Foulon
a30cbaf735 Move Behavior to Agent's Component 2021-04-07 22:11:29 +02:00
Vincent Foulon
dbee13f9be Finally Behavior isn't good enough as a component, Remove it from ECS and include it onto Agent directly 2021-04-07 22:02:57 +02:00
Vincent Foulon
45fb9f3211 Address comments
- make Behavior's capabilities and state private
 - Typo in a comment
 - add basic tests

Apply 1 suggestion(s) to 1 file(s)

Remove comments in agent.rs
2021-04-07 22:02:42 +02:00
Vincent Foulon
211ab02897 Use Behavior::CanTrade instead of Agent::trade_for_site + addressed comments 2021-04-07 17:26:42 +02:00
Vincent Foulon
41314e9098 Create Behavior component 2021-04-07 17:21:53 +02:00
Vincent Foulon
a35fa19409 Implement a basic dialogue system 2021-03-29 14:47:42 +00:00
Sam
720482d994 Gave mindflayer AI.
Fixed particles and made them sync across network.
2021-03-27 21:05:06 -04:00
Avi Weinstock
ebc8e945d4 In agent::Sys, perform target selection periodically to avoid agents going after their target too singlemindedly. 2021-03-23 23:00:05 -04:00
Avi Weinstock
5ff72a4a2e /airship angle command and RtSim airships. 2021-03-14 23:14:26 -04:00
James Melkonian
6ff054099f Allow spawned airships to move 2021-03-14 23:09:52 -04:00
Avi Weinstock
8b9e84972a Draft of airships (spawn command, visuals, some physics refactoring, no collision yet). 2021-03-14 23:09:49 -04:00
Snowram
9d7e8957bb Add new npcs 2021-03-14 14:24:35 +01:00
Christof Petig
15b11d9154 Implement /price_list (work in progress), stub for /buy and /sell
remove outdated economic simulation code

remove old values, document

add natural resources to economy

Remove NaturalResources from Place (now in Economy)

find closest site to each chunk

implement natural resources (the distance scale is wrong)

cargo fmt

working distance calculation

this collection of natural resources seem to make sense, too much Wheat though

use natural resources and controlled area to replenish goods

increase the amount of chunks controlled by one guard to 50

add new professions and goods to the list

implement multiple products per worker

remove the old code and rename the new code to the previous name

correctly determine which goods guards will give you access to

correctly estimate the amount of natural resources controlled

adapt to new server API

instrument tooltips

Now I just need to figure out how to store a (reference to) a closure

closures for tooltip content generation

pass site/cave id to the client

Add economic information to the client structure
(not yet exchanged with the server)

Send SiteId to the client, prepare messages for economy request
Make client::sites a HashMap

Specialize the Crafter into Brewer,Bladesmith and Blacksmith

working server request for economic info from within tooltip

fully operational economic tooltips
I need to fix the id clash between caves and towns though

fix overlapping ids between caves and sites

display stock amount

correctly handle invalid (cave) ids in the request

some initial balancing, turn off most info logging

less intrusive way of implementing the dynamic tool tips in map

further tooltip cleanup

further cleanup, dynamic tooltip not fully working as intended

correctly working tooltip visibility logic

cleanup, display labor value

separate economy info request in a separate translation unit

display values as well

nicer display format for economy

add last_exports and coin to the new economy

do not allocate natural resources to Dungeons (making town so much larger)

balancing attempt

print town size statistics

cargo fmt (dead code)

resource tweaks, csv debugging

output a more interesting town (and then all sites)

fix the labor value logic (now we have meaningful prices)

load professions from ron (WIP)

use assets manager in economy

loading professions works

use professions from ron file

fix Labor debug logic

count chunks per type separately
(preparing for better resource control)

better structured resource data

traders, more professions (WIP)

fix exception when starting the simulation

fix replenish function
TODO:
- use area_ratio for resource usage (chunks should be added to stock, ratio on usage?)
- fix trading

documentation clean up

fix merge artifact

Revise trader mechanic

start Coin with a reasonable default

remove the outdated economy code

preserve documentation from removed old structure

output neighboring sites (preparation)

pass list of neighbors to economy

add trade structures

trading stub

Description of purpose by zesterer on Discord

remember prices (needed for planning)

avoid growing the order vector unboundedly

into_iter doesn't clear the Vec, so clear it manually

use drain to process Vecs, avoid clone

fix the test server

implement a test stub (I need to get it faster than 30 seconds to be more useful)

enable info output in test

debug missing and extra goods

use the same logging extension as water, activate feature

update dependencies

determine good prices, good exchange goods

a working set of revisions

a cozy world which economy tests in 2s

first order planning version

fun with package version

buy according to value/priority, not missing amount

introduce min price constant, fix order priority

in depth debugging

with a correct sign the trading plans start to make sense

move the trade planning to a separate function

rename new function

reorganize code into subroutines (much cleaner)

each trading step now has its own function

cut down the number of debugging output

introduce RoadSecurity and Transportation

transport capacity bookkeeping

only plan to pay with valuable goods, you can no longer stockpile unused options
(which interestingly shows a huge impact, to be investigated)

Coin is now listed as a payment (although not used)

proper transportation estimation (although 0)

remove more left overs uncovered by viewing the code in a merge request

use the old default values, handle non-pileable stocks directly before increasing it
(as economy is based on last year's products)

don't order the missing good multiple times
also it uses coin to buy things!

fix warnings and use the transportation from stock again

cargo fmt

prepare evaluation of trade

don't count transportation multiple times

fix merge artifact

operational trade planning
trade itself is still misleading

make clippy happy

clean up

correct labor ratio of merchants (no need to multiply with amount produced)

incomplete merchant labor_value computation

correct last commit

make economy of scale more explicit

make clippy happy (and code cleaner)

more merchant tweaks (more pop=better)

beginning of real trading code

revert the update of dependencies

remove stale comments/unused code

trading implementation complete (but untested)

something is still strange ...

fix sign in trading

another sign fix

some bugfixes and plenty of debugging code

another bug fixed, more to go

fix another invariant (rounding will lead to very small negative value)

introduce Terrain and Territory

fix merge mistakes
2021-03-14 03:18:32 +00:00
James Melkonian
018d51b1a0 Move agent data into structs 2021-03-02 15:51:43 -08:00
James Melkonian
0c25896b2c Fix fleeing and combat a little 2021-03-02 15:51:40 -08:00
James Melkonian
29c5ae5af9 Fix interaction and clean up, broken fleeing 2021-03-02 15:51:38 -08:00
James Melkonian
045ec011c9 Behavior tree minus interacting 2021-03-02 15:51:32 -08:00
James Melkonian
8bdadc47b5 Initial behavior tree refactoring 2021-03-02 15:49:58 -08:00
Snowram
1b9815dc34 Adds 3 new npcs, tusk ram new design 2021-02-27 01:42:46 -05:00
unknown
6f18d16aa2 Add new quadmeds npcs with rough offsets 2021-02-27 01:42:44 -05:00
jshipsey
266986626d biped_small setup 2021-02-27 01:42:43 -05:00
Snowram
4078eeb877 Various fixes to object animation, cleanup 2021-02-21 19:56:46 +01:00
James Melkonian
23b1df3cdd Add basic NPC interaction and fix NPC chat spamming 2021-01-31 20:29:50 +00:00
Joshua Barretto
f8c8e342e6 Moved common networking code to common/net, clippy fixes 2020-12-13 17:23:45 +00:00
Sam
6a6260daa1 Weapon combat fixes:
- Modified energy and speed scaling of sword, axe, and hammer combo melees.
 - Nerfed bow basic attack knockback. Buffed bow damage and energy regen.
 - Corrected xp values for theropods. Removed unnecessary function for xp increase per level.
 - Guards no longer flee at low health.
 - Buffed sword spin.
 - Nerfed axe spin and sword dash moderately.
 - Dash now takes a little time to reach full speed. Sword M2 and hammer M1 damage values tweaked.
2020-11-26 09:15:45 +01:00
jiminycrick
1cf0aff5ef More ai work
balance

Lavadrake AI tweaks

feedback tweaks
2020-11-24 17:48:54 -06:00
Joshua Barretto
26fd40c0e3 Fmt, make clippy happy 2020-11-23 15:39:03 +00:00
Joshua Barretto
22fb71905b Added rtsim entities moving when unloaded, better generation 2020-11-23 10:45:01 +00:00
Snowram
d98bfa72ad Improves bipedlarge and theropod anims, balance tweaks 2020-11-19 00:56:50 +01:00
Snowram
b48de84f8c Adds 3 new npcs 2020-11-19 00:53:17 +01:00
Snowram
44fe398ba3 Adds 2 new npcs, some models tweaks 2020-11-19 00:53:13 +01:00
Snowram
fa2dd28587 Fixed various issues from better-things branch 2020-09-21 23:57:10 -04:00
jshipsey
8330d087e6 clippy 2020-09-17 22:58:02 -04:00
jshipsey
5bb45a4861 spawn tweaks, improved odonto 2020-09-17 22:32:11 -04:00