KCDS 0.4.1
Milestone 0.4.1: board and card games at a table, haggling with server shops, the level's people talking and going home at night, and fixes for horses, getting up and combat.
Servers and players both need 0.4.1: a client and a server of different versions refuse each other when joining. The launcher updates itself on the next start; servers update from their update channel or the new packages. Scripts written for 0.4.0 run as they are.
Tabletop games
- Tables (#840):
kcds.world.Tabletopputs a board of rows and columns in the world, with pieces on its cells, seats and a turn order with its timer. You write only the game's rules. Players sit down with U, point at a cell and click; their game only sends the click and your handlers decide, so nobody can cheat. With a camera shot of the table's or the seat's, the view stays on the board and the mouse pointer picks, as the game's dice players do; while seated the game's fighting is held off.controlssets the pointer (cursor,crosshairorkeys) and the actions held off.highlightmarks cells flat on the board as a frame, a tinted cell or a dot. Pieces move smoothly, and everyone, players who join later included, sees the same board.save()andload()keep a game across restarts. The Tabletop guide builds tic-tac-toe and checkers. - Limited look (#966):
Player.playAnimation'slockRotationtakes{ yaw, up, down }, how far the seated player's view turns, in degrees. The view begins facing where the body faces, so a player at a board looks at it.Camera.startShottakes alookof the same kind: the mouse turns the shot's view, as the game's dice players look about their table. - Chair seats (#966): a Tabletop seat with
chair: trueis the game's own chair or bench there. Players sit on it with the game's E and its walk up and sit-down, and the table seats them. - Controls.cursorPosition() (client): where the mouse pointer is while your resource shows it,
as
Camera.rayFromScreentakes a screen position.
Shops
- Haggling with server shops (#965):
Vendor.create({ haggle })makes a shop haggle in the game's own haggle with its NPC. The player chooses a price on the haggle panel, and the trader answers in a dialogue with its price and mood. The server decides every answer: a newvendorHaggle(vendor, player, basket, offered)handler can take the offer, ask another price or refuse. Without an answer, the shop follows the game's own rule, made fair for multiplayer: the player's Speech, atoleranceit never goes below and theroundsit listens to. A basket agreed in the haggle settles at the agreed price. See Shops and player trade. vendorTradereports a haggle: a sixth argument,haggled, is true when the basket settled at the agreed price. The guide now spells out the lines ofboughtandsold, and thatbalanceis the money the player got (negative: what they paid); the reference had the sign the wrong way round.
NPCs
- Lines the level's people say (#259): now and then one of the level's people near a player says
a line to them in the game's speech bubble, the same for every player there. The lines are yours,
in
people-lines.jsonin the resources folder: general ones and ones per name, with{player}for the player's nickname, how often and how near. The game's own people (levelPeople) keep their own barks as well. See NPCs. - Where the level's people spend the night (#260):
npcHousesinserver.json.true, the default, keeps their houses: the game's own people go home at night by their routines.false: at night they walk out of the map to the nearest of the level's road exits and come back in the morning, on both maps.people-night.jsonsets the hours. See NPCs.
Inventories
- Another player's inventory (#967):
Stash.playerInventory(player, { put })opens a connected player's own inventory to another player, from anywhere, in the game's own transfer screen: for admins and the like. What the viewer takes leaves the player, worn armour, clothes and weapons too, and withput: truethe viewer can give them things.playerInventoryTakeandplayerInventoryGivecan refuse each move. See Stashes.
Horses
- Thrown riders (#968): when
Horse.buckRiderthrows a rider, the other players now see them fly off and fall as the rider does, instead of sliding off over the horse's neck. - Getting up (#970): a player who gets up from the ground after a fall or a knock-out now rolls over and stands up the same way on everyone's screen, facing where they do, instead of spinning round on the ground with the legs in the air.
- Horses at rest (#969): a horse standing idle grazes, looks round and shakes its head at the same moment on everyone's screen; it no longer drifts out of step with its owner's game.
Combat
- Women players are lock-on targets: a player locks on to a woman player in a fight, with fists too, as to a man. The game's own women are still never fought.
Conversations
- Keys of a server conversation's list: E picks a row again when the NPC has a
World.addInteractionprompt (its prompt took the press), and the arrow keys move one row, the right way, as W and S do (a press counted twice).