Skip to content
Go to file
Cannot retrieve contributors at this time
7478 lines (4522 sloc) 275 KB
This file only list changes to game code. Changes to content can be found here:
Version 363 ???
--Network stats command is now /NETWORK to avoid blocking crafting filter
for /NET. Fixes #692
--Tweaked hint sheet paper sprite position to keep text from getting too close
to edge.
Server Fixes
--Expert waystones no longer point you to an expert in a low population
situation where specialist biomes are disabled. Fixes #695
--Fixed so that non-follower gates don't accidentally work like follower gates.
Forgot to check a separate case when testing for gate ownership. Fixes #689
--Fixed so that shaky gates can be destroyed by non-owners (whoops) and so that
follower gates can be opened by followers, but can only be destroyed by the
actual owners. Fixes #688
--Apocalypse is impossible if there are less than 15 players on server.
Fixes #693
--Fixed so that deadly animal passing over an empty tile (in a 2 or more tile
jump) can still attack you if you're standing there (before, it could only
attack you if the tile was non-empty). Fixes #690
--Fixed so that you can't set a blocking object down in a sliver of good biome,
surrounded by bad biome, in such a way that you are blocked from reaching it
to pick it back up again. Fixes #694
--Special biomes now occur in horizontal bands, 200 tiles thick, with snow to
the north, then mountain, then jungle, and then desert to the south, and
mountain outside of those bands farther north and south.
--Homelands for birth now coincide with the special biome bands. Outside of
your home band, you can't have babies.
--Eve Y location shifted up into center of her homeland biome band.
--When an outsider (non family member) follows you, who you haven't exiled yet,
you get a notice about it and an arrow pointing toward them. A visitor to
your follower gate can see your name and follow you to come through your
gate, so now you get a notice that they've done this, and you can go to deal
with them if needed.
--Fixed crash when informing a leader about a new follower and there's a
leadership loop.
--New player food decrement bonus 18 seconds (was 12).
Version 361 2020-September-25
NOTE: Must update server and data this week before client.
--New second phase of tutorial, which is a solo wilderness survival challenge.
Gives new players a chance to learn the ropes of survival without the
pressure and chaos of village life. Solo challenge can be bypassed easily
by those who want to skip it.
--Fixed so that requesting a leader arrow with /LEADER takes priority over
other arrows (before, an EXPT arrow had priority over all other arrows). OWN
(when you touch a locked gate), LEAD (if you requested it manually), and EXPT
now have the same priority. An automatic LEAD arrow (when you receive an
order) still has lower priority. Fixes #681
--New ally gates display the colored badge of the gate-owning leader.
--Fixed so that car numeral not incremented when hitting roadkill. Fixes #683
--Fixed 2-digit, 0-padded formatting of car serial number in description.
Server Fixes
--Disabled tool slots (minActivePlayersForToolSlots 100000).
--Touching your own expert waystone (e.g., desert stone if you are a desert
expert yourself) now points you toward the closest language expert.
Fixes #680
--Support for special gates that only block non-allies passing through.
Part of #682
--New players start with fitness scores of 0, so helping a new player, even if
they die young, is always beneficial to the fitness scores of expert players.
--Curse names no longer use sender email in randomization, meaning that all
players see the same curse name on the same individual. Thus, players can
compare notes about the behavior of a given cursed individual.
--Personal curses now last 90 days (was 30 days).
Version 358 2020-September-21
--Fixed so that filtering for /DIESEL ENGINE doesn't cause you to /DIE.
Fixes #667
--Improved tutorial by NOT locking hint hallway for 20 minutes, and adding a
new tutorial stone explaining where the hints are.
Server Fixes
--New food settings to ease new players into the difficulty of the game. New
players get slower food decrement time. This bonus has a half life of
10 hours of playtime. Does not affect tutorial players, who still get the
same "hard" food timing that the tutorial was designed for.
--Fixed so that wide objects (like parked truck) can't be accessed on their
extended side if that side extends over a blocking object (like a truck
parked at the edge of a fence, overhanging the fence, can't be stolen through
the fence). Fixes #669.
Version 356 2020-September-18
--Support for variable dummy objects that have numeral sprites which count up.
--Support for serial numbered variable dummy objects, where the next variable
object is substituted for each new object created in the world. (Example:
sports cars with unique numbers on the side.)
Version 354 2020-September-11
--Support for containers with invisible contained items.
--Support for sprites (like words) that never flip when object flips in world.
Server Fixes
--Fixed crash when client sends chat string containing only invalid characters.
Version 352 2020-July-24
--Support for paging through items in Editor pickers with [ and ] keys.
--Shaved 13% off loading time by reducing repeat memory allocations when
expanding transition bank and object bank with runtime-generated elements.
Also optimized a few other loading hotspots. Fixes #661
--Shaved another 10% off loading time by optimizing inner loop of kerning
calculation during font loading.
--Fixed appearance of certain held objects, and arm position, after flipping
character to left or right with mouse movement. Fixes #657
--Fixed endless looping behavior if custom server address includes a bad
hostname that gets looked up as invalid instantly. Fixes #662
--CTRL-right-click on object picker in object editor inserts other object above
current sprite layer.
--Can now paste email into login form. Fixes #649
Server Fixes
--Server converts all incoming client emails to lower case. Fixes #659
--Fixed rounding errors in computing fitness ranking. Fixes #660
--Homelands expire immediately when last member of family dies (before, it
would wait until no baby was born in homeland for 60 minutes). Fixes #658
--Fixed a case of transforming an empty basket that is on a table (by adding
grapes, for example). Before, this was blocked because the basket was
potentially a sub-container.
--Server cleans up long runs of spaces between words after removing forbidden
characters in SAY. Fixes #653
--DING messages explaining why you're blocked from joining a posse. Fixes #663
--Can solo kill any person who landed a kill themselves in last 60 seconds.
Fixes #648
Version 350 2020-July-16
--Support for +causeAutoOrientV tag (opposite of +causeAutoOrientH).
--Fixed color of background box in category editor to not interfere with long
--Support for -wall tag in object description, to push what would otherwise be
drawn in the wall layer into the non-wall layer (so that pipes through fences
can visually connect properly, and not overlap other pipes in a weird way).
--Fixed case where you drop object on floor at edge of bad biome. Fixes #654
Server Fixes
--Fixed rare crash when client sends an illegal chat character (impossible with
official client) when character is drunk.
Version 348 2020-July-10
--Support for moving objects that leave floors behind, or land on and change
an existing floor.
--Support for road classes, so that logical road can continue across road
variations (corners, t-junctions, etc.).
--Fixed crash when loading an empty category.
--Fixed biome ground tile glitch when floor doesn't completely cover tile
Version 346 2020-July-3
--Forbid backslash and quotes in login email address in client.
--Forbid player flipping when a 0-speed object is held (like cast fishing
pole). Fixes #644
--Object editor preserves use vanish when inserting an object.
--Category editor preserves index, if possible, when switching categories.
--Tech tree button (to open Onetech in browser) on login screen. Better tool
tips for several buttons. Fixes #647
Server Fixes
--Fixed crash when someone right-clicks a full basket on a table.
--Fixed glitch where you get stuck unable to satisfy a craving if the craved
item has a YUM parent (example: bowl of gooseberries). Fixes #641
--Fitness server admin interface now has links to other players on details page.
--Two bugs in genetic fitness tracking. First, if your mother is childless,
she was being considered as your aunt in the ancestor tracking. Second, if
an email has a wayward backslash character (which the client should forbid,
but does not), it breaks the SQL statement, preventing fitness from being
logged. Both issues were causing lives to be ignored or mis-recorded by the
fitness server. Fixes #642. Fixes #643.
--Pagination of fitness server logs.
Version 344 2020-June-26
--Cravings implemented.
--Can use a tool on objects in certain specially-marked (+useOnContained)
containers. For example, can use a knife to slice a loaf of bread that is
sitting on a table. Before, you had to remove the bread from the table to
slice it, and then put it back on the table.
--Hunger slips now account for stored YUM bonus, so they don't show hungry or
starving, when you're actually not due to your bonus.
--Fixed glitch in lingering eating state after eating a food that leaves
nothing in your hand.
--Support for emote decay sounds, so that satisfaction sound can play at the
end of satisfied emote and not overlap with food's custom chewing sound.
Server Fixes
--Fixed family tree server to accept longer last words.
--Fixed bug that caused Eve spawn to jump to the west of a donkeytown homeland.
Fixes #633.
--New method for putting Eve to west of homelands. Completely ignore any
d-town or tutorial homelands, and compute the average location of the rest.
Place Eve to the west of the furthest-west homeland that is not > 1500 to the
west of this average.
--forceEveAfterGenerationNumber pushed up to 100 (about 1 new town a day).
Was 40 (about 1 new town every 9 hours).
--New live server setting: maxLivingChildrenPerMother, set to 4. Mothers that
have 4 living children are on infinite birth cooldown, unless other factors
force them to have another baby.
--Fixed server crash upon receiving a malformed MOVE message
(thanks Tru Custom).
--When solo killing is possible (due to enemies of target swamping allies), no
explanation was given. Now a DING message explains this to the killer, so
they know they don't still need to form a posse.
--When someone is exiled after a posse is already formed, the min required
posse size shrinks accordingly. Before, the previously-established min posse
size would prevail, even after someone was exiled. This might allow one
griefer to protect another by maintaining a posse against their comrad so
that exile wouldn't shrink the posse size. Fixes #638
--Fixed lingering ownership that could occur if your heir died a few seconds
before you did (UNKNOWN PERSON as owner of a gate, forever). Fixes #636
--Childless women are treated like men in terms of who counts as genetic
offspring (nieces and nephews who are born while they are childless). This
closes an exploit where a woman runs away from her homeland to avoid having
kids. Fixes #635
Version 342 2020-May-30
NOTE: must update server first this week.
NOTE: must disable clearCurseCountsOnStartup after servers restart this week.
--Player character now flips facing direction as mouse moves to left and right.
Fixes #623
--Object editor page shows current object ID.
--Fixed crash in Animation editor when right-click dragging with empty object.
--I FORGIVE YOU (or I FORGIVE JOHN SMITH) to forgive a personal curse.
Server Fixes
--Server no longer disconnects client when it sends an unknown message type.
For future protocol updates, this allows client to be updated before server.
--Picking up a 3+ child to nurse them clears their starving emote. Fixes #626
--CurseDB key format now has comma between emails. Should have done this a
long time ago. Temporary code in place for fall-back to old no-comma key if
entry for new comma-key not found.
--Eve is pushed to the west of farthest-west active homeland, not including
d-town homelands. More chance for her to find an area to settle. Fixes #624
--Support for diagonal tap-out gradients (sw, ne, etc).
--To prevent build up of stale curse counts, we now gradually iterate through
curse database (10 iterations per step) and check for stale curse times.
This keeps our curse count per player accurate over time, and fixes a glitch
that mistakenly sent some redeemed players to d-town due to inflated total
curse counts.
--Added a clearCurseCountsOnStartup setting, and enabled it, to clear stale
curse counts on next startup (without removing live personal curses that
haven't expired yet).
Version 340 2020-May-22
--New speech length limit curve that rises rapidly between ages 8 and 16, so
that adults aren't so limited in what they can say. Babies still gain one
letter per year up to age 8, but by age 16, the limit is 66 characters.
After that, you gain one character per two years, and can say 88 characters
by old age.
--/LEADER command now gives you an arrow to your top leader. Fixes #615
--New /UNFOLLOW command that can be used by the youngest baby.
--Non-baby players that will starve to death in less than 20 seconds display
starving emot, complete with off-screen H sound. You can now easily notice
people who need help. Fixes #614
--Support for +yumID tag to group different foods into the same YUM category.
Part of jasonrohrer/OneLifeData7#799
Server Fixes
--Truncating said text to avoid overflowing metadata limit when writing
(client and server should enforcing good limits anyway, but added more checks
just in case those numbers change in the future).
--Fixed bug in DING redeem message sent to redeemed player (was being sent to
everyone by accident).
--I FOLLOW YOU and other non-name phrases must not have other strings in front
of them (so SAY I FOLLOW YOU won't follow someone by accident). Fixes #620
Version 337 2020-May-15
--Fixed glitch in VOG mode that left distant players invisible (marked out of
range) when we jumped to them.
--New /LEADER /FOLLOWER and /ALLY command to show labels above the heads of
people. Part of #610
--DING messages showing follower and ally count when you use the new commands.
Part of #610
--Help screen shows I FOLLOW MYSELF. Part of #610
Server Fixes
--You get informed when you target a top leader to kill (instead of an arrow
pointing toward that leader as a possible exiler).
--Fixed posse size system glitch when posse started with NoWaitWeapon.
Thanks Wondible.
--Fixed so that there's no victim emote when targetting with NoWaitWeapon
(snowball, tatoo needle). Before, emote was getting stuck after dropping
--DING message upon issuing an order now shows you your follower count.
--When pointing you toward closest follower after issuing an order, don't
consider followers you see as exiled.
--Last heard monument call is passed from mother to baby, but only perpetuated
one generation (inherited calls are not passed to next generation after
that). No more perpetual stale monument calls.
--Support for +causeAutoOrientH, which triggers E/W neighbors to auto-orient,
but not N/S neighbors. When an object goes from auto-orienting to not, other
auto-orienting objects around it now un-react to it. This allows, for
example, corner fences to go back to being horizontal when the fence to the
north or south is removed. Part of jasonrohrer/OneLifeData7#787
--Fixed case of stale object left in movement record overriding an object that
changed mid-move (allowing a 3-arrow bear to go back to being a 2-arrow bear
and attack mid-move, if shot with the third arrow mid-move). Fixes #608
--Changed movement code so that track carts that pile up against obstacles
(something beyond the end of a disconnnected track or another cart in the
way) don't derail, but instead pile up. Part of jasonrohrer/OneLifeData7#790
--DING message when your leader exiles or redeems you, showing you your new
ally count after this action. Part of #610
--Property inherited by fittest close relative, instead of oldest close
relative. Part of #610
--Leadership inherited by fittest follower, instead of oldest. Part of #610
Version 336 2020-May-8
--Fixed disappearing adult glitch when an adult carries you far away from your
pick-up location.
Server Fixes
--Fixed leader auto-heir code to pick the oldest direct follower instead of the
oldest follower overall. Old code resulted in loops in the leadership tree
that caused the client to get stuck in an infinite loop.
Version 334 2020-May-7
--When the last owner dies, property is automatically inherited by the oldest
direct offspring of the owner, and if none exist, then the closest, oldest
relative of the the owner.
Server Fixes
--Max baby/mom ratio 1.0 (was 2.0) and baby/adult ratio 1.0 (was 2.0). When
these ratios are met or surpassed, a new Eve is inserted. During normal
times, the ratios are more like 0.5 and 0.125, so the ratios only come into
effect during server restart. There have been too few Eves and baby overload
after recent restarts, so these new settings should give us 2x more Eves.
--Min posse size cap 5 (was 3), which means that in places with 10 or more
people, you need a posse of 5 to kill, and in places with 8 or 9 people, you
need a posse of 4 to kill. (Min posse fraction is 0.5 of the local
population.) This makes it harder for small groups to wage campaigns of
--Only people old enough to join a posse (age 9, when they can say I JOIN YOU)
are counted when computing min posse size.
--When a leader dies who is following no one, their oldest follower inherits
their position.
--When counting area population to determine necessary posse size, we now count
people in radius around victim, not around killer. This closes a potential
exploit where the killer wanders out into the wilderness and issues a verbal
kill command from just in radius in a way that reduces the population around
the killer.
--Fixed so that instant-apply of 1-second transition to target object doesn't
happen if that transition is a moving transition. This fixes glitches where
clicking on a moving cart causes it to crash. Fixes #607
--MinPosseFraction now 0.66 (was 0.5), which means you need a super-majority to
agree before you land a kill. The cap has been pushed up to 99 (was 5),
which is effectively unlimited, which means that a rogue posse cannot
slaughter a village unless the non-posse members are in the super-minority.
--New alternative mechanism for measuring consensus to kill: how many nearby
allies do you have (people who share the same top leader as you) vs how many
nearby enemies do you have (people who see you as exiled through leadership
mechanics). If you have more enemies than allies, you can be solo killed.
If you have as many or more allies than enemies, minPosseFraction applies as
before. In other words, the posse size requirements, which are currently
exreme, are bypassed if the majority of people around you see you as exiled.
--Force-drop code for target player terrified by posse was dropping a 0 item
(if holding nothing) by accident, deleting whatever was on the ground.
--When you try to solo kill someone, and can't because they have too many
allies, you get an arrow pointing back to their top leader, who has the power
to exile them.
Version 332 2020-May-1
--Fixed a rare bug where a player standing still and not changing while you
move out of range of them will still have emote and animation sounds
displayed for them (because you never get a PO message for them). Their
distances is now measured and they are marked outOfRange client-side, even if
no PO message arrives for them.
--Fence and wall making now much less fiddly, because you auto-move to a
neighboring tile if you try to build a fence or wall where you're currently
standing (before, the build action was blocked by you standing there).
--Fixed tutorial wording to match how YUM currently works. Fixes #604
Server Fixes
--If player had short last life or is twin, we don't even let them join a
posse, to avoid confusion. Otherwise, a seeminly large-enough posse might be
ineffective. A short life or twin player can still lead a posse or complete
a solo kill in a low-pop area (but they don't count toward the population of
the posse that they lead).
--Being part of a full-sized posse prevents biome sickness while chasing
victim (victim can't hide in bad biome to make you drop your weapons).
--VictimTerrifiedEmote (where they whimper repeatedly) now triggered by kill
posse being big enough. Thus, you can tell whether you're in real danger of
being killed by whether you are whimpering. The posse can also know whether
it is big enough by whether you are whimpering or not.
--When targeted by a full-sized posse for killing, where the posse has more
than one member (not in case of wilderness solo posse), you drop what you are
holding, and can't pick anything up. This happens while whimpering in
terror, so you're too scared to hold anything. This prevents victim from
escaping on a horse.
--If you start in a bad biome holding something, you don't get sick and drop it
while continuing to move in that bad biome. Thus, if you enter a bad biome
while in a posse, but that posse disbands, you don't drop what you're holding
in the bad biome. It's only crossing into a bad biome that makes you sick
(when you're not in a posse or in some other situation that protects you from
--You don't get NEW OFFSPRING BABY notifications when you're too young to help.
--Donkey and tutorial players can't manipulate end tower or ring bell.
Part of #603
--Fixed case where newly spawned d-town player's personal curse tags don't show
up to the people who cursed them.
--Gate owner only gets VISITOR notice and arrow if they are out of range (which
makes them harder for the visitor to find), and at most one notice per
minute, so visitors can't spam them with repeat notices.
--New Baby notifications are throttled so you don't receive more than one per
Version 330 2020-April-23
--Support for +becomeUseX tags, for non-use objects that should turn into a
specific use count in the newTarget after a transition. This allows (for
example), the same scrap box to result from scrapping different objects with
differing amounts of resultings scrap metal. A nozzle is +becomeUse2, while
a full piston head is +becomeUse6.
Version 328 2020-April-17
--Don't interrupt character's speech with automatic +FAMILY+ marker above their
head. Fixes #588
--Whenever you get an arrow pointing toward a person (baby, expert, leader,
owner, visitor, etc), once that person is close, you see a label above their
head. Otherwise, they can be hard to locate in a crowd.
Server Fixes
--There are still food surpluses everywhere. Food scale factor floor 0.5
(was 1.0), eating bonus left alone. This increases food pressure long-term,
but not too hard for Eve starts (b/c food scale factor still starts at 1.0).
--Food scaled on a gamma curve instead of linearly, allowing us to reduce
effectiveness of small foods without affecting large-valued foods so much.
Gamma starts at 1.0 and eventually reaches 1.5, with a half-life of 4
generations. By gen 20, a berry only provides 1 food, but a feast plate
still provides 40. Linear food scale factor can still apply on top of gamma
(to scale all foods uniformly), but turning it off for now (setting floor
back to 1.0).
--When triggering unlock of iron veins due to a primary homeland, we only count
it as a primary homeland if it taps out at least one iron vein. Thus, if a
family makes a bad choice for their first well in an area with no iron veins,
they can move later to a spot with iron veins and unlock them with a new well
site. Fixes #590
--Applied YUM bonus no longer scaled by food scaling factor (too confusing).
Fixes #592
--Another fail-safe, at beginning of handleDrop, to prevent dropping in a bad
biome if we're on the edge of a good biome. Before, the only fail-safe was
in findDropSpot, which is only invoked if the first prefered spot already has
an object in it. Fixes #593
--If your last life was a short life (currently under 10 years, a live server
setting), then you are not counted toward posse size when you join a posse.
This prevents people from die-cycling to find their friends and then gang up
on people to kill them. You earn the right to join a posse by surviving
through childhood in your previous life. This is similar to the twin
restriction on being counted toward a posse. People who are die-cycling to
find each other are essentially non-identical twins.
--Experimenting with unbreakable YUM chains. Each new food in your life both
earns the current bonus and increases the bonus. Repeat foods don't earn the
bonus, but don't reset the bonus back to 0.
--Live server setting for a YUM bonus cap. Currently -1 (off), but can be
turned on in future to limit how big a YUM bonus can grow.
--Better than food-scale gamma: Subtract a constant value from all foods, and
bottom-cap the result at 1. This reduces the value of small foods a lot
without affecting high-value foods too much, relatively speaking. This is
better than a linear scale factor, which takes the same relative chunk out of
all foods, and simpler and easier to control compared to a gamma curve. This
constant, which is the eatCost (opposite of eatBonus) kicks in over time as
the generations pass, currently topping out at 5. The old gamma and linear
scale factors are still in place, and can be turned on as-needed, in
conjuction with this new eatCost. But they are both off for now. The
eatCost currently goes to 1 at generation 7, 2 at generation 14, 3 at gen 21,
4 at gen 29, and 5 at get 42.
--When a non-primary homeland (outpost) expires (no baby born there in past
hour), any primitive well there (pre-newc pump) collapses into a well site
(9 stones) and dry springs in the area become wet again, and sunken iron
veins in the area resurface and become muddy veins again. If someone else
makes a well in the area, the springs dry up again. If someone else
establishes a primary homeland there, they can unlock iron veins again.
So you can't run around making spruious outposts to perma-block iron in a
large area.
--When someone touches your gate and is blocked by it, you get a low-priority
VSTR arrow pointing toward them.
Version 326 2020-April-9
--Editor search boxes now allow -term to avoid objects with term in the name.
Server Fixes
--When adding an Eve due to a race dying out or all families being too
high-generation, we wait for a player with a fitness score equal to or
greater than the last 10 unique players that were born. This window size is
a live server setting. You can no longer spam /DIE when you know a new Eve
is about to be placed to give yourself a high chance of being Eve, nor can
you hold and daisy-chain Eve by blocking your own fertility as Eve and
killing yourself at 40 to jump right back in to Eve in the same race.
Fixes #581
--Now that towns are closer together, base curseBlockRadius reduced to 50
(was 100). Fixes #705
--Fixed so that players sent to donkeytown don't get a curse token to spend.
Fixes #587
Version 324 2020-April-2
--Arrow to biome expert lasts 3 minutes (was 1 minute).
--Touching an expert waystone points you to a very close expert (<32 away), if
a close one exists, OR to the well site in a populated expert homeland. No
more wild goose chase for a lone expert out in the wilderness who will
probably be gone by the time you get there (or who may be walking away from
you as you try to approach them).
Server Fixes
--Max baby/adult and baby/mom ratio, which trigger force Eve spawns, are now
live server settings. Trying max baby/mom of 2 (was 3) to reduce baby
overload after server restart.
--Fixed drop-in-bad-biome trick with vehicles. Fixes #694
--Added support for transitions that end with a floor in hand, meaning that
floor is put UNDER target object. This allows a snow floor to be installed
under an ice hole, for example, without making a special ice-hole-floor
object, in turn making such an ice hole work for all families (because it
now has a floor, protecting them from the arctic).
--Reduced Eve placement grid jump size to 50 (was 200), because only 1/4 Eves
placed is actually surviving, and we've been walking 1000 to the west every
day. Now we expect to walk 250 to the west every day.
--Chasing (and fleeing) animals now react to nearby players as far as 10 away
(was 7).
Version 320 2020-March-28
--Finally figured out a way to make deadly moving objects (like bears) attack
in passing, when they cross your position while you're standing on a
non-blocking object. Server checks their rounded intermediary position, when
checking whether you're standing on a deadly object, if you're standing on a
non-empty tile. Animal turns into attack state immediately, mid-move, and
client has been fixed to allow moving objects to transition in-motion
(before, they would snap to their destination instantly if a transition
happened in-motion). This will also fix a few other snap-to-destination
--Whoops... switch to STARVING slip was not working for elderly people who were
listinging to their final music (final music blocks starving chime, but was
also blocking slip change).
--Helpless babies (under age 3) now flip between FULL or STARVING, with no
HUNGRY state in between. They can only nurse or be fed food while STARVING.
A mother picking up a non-starving baby still burns one of her food pips, and
holds the baby at the current food level for the duration of the holding, but
won't top up the baby. The only way to top up a baby is to feed them when
STARVING. Baby communication to care-givers is now much more crucial.
--Touching a property gate that you don't own now gives you an arrow pointing
to the closest owner.
--Fixed a glitch in populating use dummy transitions with no use pass-through,
where we weren't populating the case for the unused actor or target with the
used target or actor.
--Support for transitions where lastUseActor AND lastUseTarget is flagged at
same time. This has never been needed before, but was needed for mining pick
used on mine, since both can be exhausted.
Server Fixes
--Nurse cost back to 1 (was 2).
--Optional code for counting visually unique objects.
--Fixed glitch where you could transform worn clothing into some other clothing
type (cloak into ghost costume whith knife). Fixes #575
--Fixed bug in way held object was being set after SELF action to transform
clothing (eta decay for held wasn't being set). Fixed to handle instant-
decay (1-second auto-decay) when processing SELF action to use object on
--Max flight distance 10,000 tiles. No more flights to tutorial or d-town.
--Support for +primaryHomeland tag, which limits creation through tap-out to a
family's first homeland.
Version 318 2020-March-19
--Fixed misspelling of ABANDONED for wells.
--Added a priority ranking for temporary home arrows (EXPT/MAP is top,
LEAD/SUPP is middle, and BABY is low priority). This prevents less-important
home arrows from interrupting your more intentional and directed home arrows.
If you're out actively searching for an expert, you don't need constant
arrows pointing back to new babies at home. Fixes #570
--Fixed so that 1-second "instant" transtions can go through instantly if they
would otherwise block a player action. 1-second transitions are used for
lots of temporary objects that are used to play a special creation sound
(example: cleaning a dirty pad plays a different sound than making a pad
from scratch). Fixes #571
Server Fixes
--Fixed to send homeland info for your spawn position. Fixes #567
--You get +MORE FOOD+ above your head when an action fails due to hungry work.
Fixes #568
--Nomad Eves (with no well and no homeland) no longer lose their reproduction
capabilities permanently when they enter other homelands. They still need to
leave the other homeland to have babies (but get +FREE REIN+ status when they
--Fixed glitch with swapping a sub-container into a super-container that is
already filled with identical sub-containers (before, you could store a
hidden extra sub-container in there). Fixes #572
--Nurse cost is now a live server setting. Pushed up to 2 (was 1).
Version 316 2020-March-12
--100-radius homelands around wells, where family that built well feels
comfortable enough to have babies. Leaving this area makes you homesick.
--Expert-finder way stones occure along ley lines in specialist biomes.
Touching one points you toward the nearest expert for that biome.
--Fixed issue with some partially-used objects not being containable on table
(use dummies have # appended to name, which was interfering with the end of
+cont tags). Fixes #560
--Fixed baby bones (SIDS) grave identity tracking. Fixes #559
--Hunger chimes can now play right up until when final music starts
(previously, there was a 23-second gap where music hadn't started playing
yet, but hunger chimes were still muted).
--Support for forcing USE when trying to DROP an object into an empty
container where a consuming transition applies (so instead of containing the
held item, it is used on the empty container). Example: stacking grapes in
an empty basket, even though grapes would otherwise be containable in the
basket. But if something else is already in the basket, the grapes go in
next to it, like an ordinary containable item.
Part of jasonrohrer/OneLifeData7#663
--Maps and waystones now show the age of the destination point when you read
them. Fixes #562
--New *spicyFood forced emote for hot pepper eating.
--Client correctly routes you to front of noBackAccess objects (like wall
shelf). Fixes #563
--Phantom baby position (for held baby) no longer counted when looking for
closest player (like for bear to chase). Fixes #564
Server Fixes
--Fixed so that +vertical tag can't match a prefix of another tag by accident
+verticalD from a property fence was matching +vertialDoorSnow, causing the
snow door to be the vertical auto-orient version of the property fence).
Fixes #557
--Added live server setting for toggling propUpWeakestRace and
propUpWeakestFamily (force-sending babies to bolster the race or family with
the lowest potentially-fertile female count).
--Boiling the frog: eatBonus now starts at 2 for Eve and decays to 0 (was 1)
with a half life of 4 generations.
--To keep things fresh, we force-spawn a new Eve when everyone on the server is
part of a family that is over generation 40 (every family at least roughly 10
hours old).
Version 314 2020-March-5
--Container objects that have no sprites in front of contained (like table) now
use the lowest-Y sprite in each contained object as the object's center point
(other containers use the center of the widest sprite). This allows objects
to "sit" on the table, centered on their visual bases. Turkeys and other
larger plated objects used to overlap weirdly with other plated objects on
--Improved messaging when reconnecting to last life fails (used to say LOGIN
FAILED, which was confusing). Also, clearing stale error messages upon
returning to menu screen.
--Object editor now shows sprite ID for currently selected sprite.
Server Fixes
--Fixed server crash in new lastSidsBabyEmail code.
--Boiling the frog: eatBonus now starts at 3 (was 4) for Eve and decays to 2
(was 3) with a half life of 4 generations.
--If target not transformed, tool still used if newActor stuck in hand. Fixes
case of tool use for net and fishing pole, which don't transform target.
Fixes #553
--Touching a ground tool that you don't know how to use, or executing your free
trial use of it, show (+) above heads of nearby experts (before, you actually
had to be out of tool slots to see other experts for an unlearned ground
tool). Part of jasonrohrer/OneLifeData7#624
--Boiling the frog: eatBonus now starts at 2 (was 3) for Eve and decays to 1
(was 2) with a half life of 4 generations.
--Support for +contTAG fine-grained containment restrictions. This allows us
to limit certain items (like plates of food) to being contained only in
certain containers (like on a table). Part of jasonrohrer/OneLifeData7#650
Version 312 2020-February-28
--Mousing over an unlearned tool now shows you how many tool learning slots
remain. Fixes #522
--Reconnect now uses new RLOGIN command, which will only succeed if an existing
life for you is still in progress (login fails otherwise). Thus, you can
never start a new life by accident when trying to reconnect to a life that
has already expired. Fixes #531
--Fixed potential server-side crash in atoi by using safer strtol instead.
--Fixed server-side crash when VOGM coordinates out of bounds.
--foodScaleFactor applied with ceil (instead of lrint) so that a food never
rounds to 0 (like foodScaleFactor of 0.35 applied to popcorn).
--eatBonus and foodScaleFactor now decline over the generations from Eve.
eatBonus starts at 4 and eventually reaches 3, with a half-life of 4
generations. foodScaleFactor starts at 1.0 and eventually reaches 1.0, with
a half-life of 4 generations (i.e, foodScaleFactor currently doesn't change).
--Fixed HUGE bug in ancestor assignment for genetic scores of older siblings.
When walking through the list of living players, to find older sibs that
count as ancestors, only the first one encountered was added to the ancestor
list. break in code should have been continue. This was most obvious with
twins, where only the first twin in the set would receive a pointer to a new
baby. Thanks Twisted.
--Healing steps were not counting as tool use. Part of
--Transformative steps (like sterilizing knife) no longer count as tool use of
the original item (you transformed it into a different tool). Part of
--Switched order of testing weapon useability so that otherFamilyOnly is tested
before tool learning. Thus, you don't learn the sword by accident if you
shift-click on a family member. Part of jasonrohrer/OneLifeData7#638
--If target isn't transformed, held tool isn't actually used or learned.
Fixes case where recycling sword in roller causes you to learn the sword.
Part of jasonrohrer/OneLifeData7#638
--All tool groups avoid THE in learning message (not just those ending in ING).
--Send food update immediately after reconnecting. Fixes #547
--You now get one free warning use of each unlearned tool for free, with a
message letting you know that using it again will learn the tool and use a
slot. No more wasting tool slots by accident on things you didn't mean to
--After /DIE, the last mother who had you is blocked for you, ensuring that you
don't /DIE-cycle back to the same mother again and again (not even in
lowpop). If there's only ONE mother available, doing /DIE one time will
cause you to spawn as Eve. Note that if there is more than one mother, you
will cycle between them with /DIE. The only change here is that you will
never return to the same mother over and over, without other mothers being
tried in between. Fixes #549
--Added support for same-color verification when checking for sprite-subset for
single-sprite objects. This allows dyed objects to count as NOT the same
object for initial-only creation sounds.
--Fixed case where car runs out of gas in a bad biome and drops a biome
sickness object on the ground.
--Fixed case where all same-biome (or floor) drop spots are full, causing
object to strangely drop in a distant spot. The reason for prefering
same-biome or floor for drops was to avoid dropping into a bad biome.
Might as well just check that the drop spot is not a bad biome directly (and
allow other types of cross-boundary drops). Fixes #550
--Player message DROP is a synonym for USE when DROP can't apply. However,
the implementation of the USE behavior for DROP was a very simple piece of
code that missed a bunch of cases handled by the real USE action. Now
handling DROP-as-USE with the real USE code (using a goto, yee-haw). This
fixes a bug where you could DROP a pie onto a non-empty table, starting the
construction of the feast table (which is supposed to require an empty table,
according to the real USE code) and hiding the items contained by the table.
Fixes #551.
--Fixed so that painting walls makes correct sound (plays initial-only
creation sound because color of sprites changes).
--Dug rabbits that had very few move options were sometimes still settling and
digging new holes on roads and floors. Now they avoid floors at all costs,
re-settling in their original location if necessary. Fixes #552
Server Fixes
--CURSE MY BABY now always targets most-recent baby, whether dead or alive
(code has been simplified). Fixes #546
--Fixed a bug where server sent curse status of an incoming player before
sending the first PU telling you about that player's existence, causing your
client to ignore their curse status.
--When mother becomes a default leader, her leadership color is assigned
correctly (was left blank and white). Fixes #544
--Min posse size requirements don't apply for snowballs and tattoos. Fixes #543
Version 311 2020-February-13
--Fixed so that offspring baby arrow adjusts to point toward carried baby.
Server Fixes
--Fixed baby and leader arrows and messages to make the coordinates birth-pos
relative (no more new babies born 7000 meters away).
--Fixed getLeadershipName server-side to correctly explore full depth of tree
and not count levels incorrectly (before, a single leader with lots of
followers would be described by the server as a supreme empress mistakenly).
Thanks Twisted and Tipy.
--Sick, wounded, and murder-weapon-holding people can no longer join posses.
Fixes #539
--Added a daily killHitLog, tracking kill hits landed by solo players or
posses, and healing done to cancel kill hits.
--Fixed case of force-drop causing item to disappear if all matching floor or
biome tiles are full. Now searches for a drop spot off-floor and then
--Added fail-safe case to prevent dropping an item in a bad biome at the edge
of the bad biome no matter what. Should correct for any remaining client
pathfinding glitches that result in dropping stuff in a bad biome. Fixes #541
--Trying one curse token every 15 minutes instead of every 30 minutes.
--Can't remove floor in bad biome.
--Active curses from offline players count as an additional factor in
determining your curse blocked radius. If T is the total number of curses
(online players and offline players) against you, then T^2 is added to your
blocked radius. Note that the top player has 103 people with active curses
against them.
--No more solo kills in populated areas. Min posse size for landing a kill is
now 50% of the non-baby population in a 30-tile raidius, capped at 3. So in
a city, you need 2 other people to agree with you before killing, but out in
the wilderness, 1v1 killing is still possible. These are live server
settings that can be adjusted later.
--Fixed so that mortal wounds that automatically go through transitions
(like gushing wounds) aren't mistakenly seen as temporary sickensses.
Version 309 2020-February-8
--Fixed incorrect path start when path finding fails and retries. Fixes #525
--When a new offspring baby is born (other than your own), your character
exclaims the situation verbally (only you can see the exclamation) and a
60-second map-style pointer is created to the offspring baby. Part of #523
--When a new offspring baby is born, all of your existing family members have
+FAMILY+ above their heads as a reminder of who affects your gene score.
Part of #523
--Saying /FAM command produces +FAMILY+ reminders above the heads of genetic
family members. Part of #523
--Pause screen (hit ESC) has full list of chat commands.
--Support for ~~ to indicate half-line skip in multi-line on-screen messages.
Using this for command list spacing.
--When a follower receives an order, they get a temporary LEAD arrow back to
the leader who issued the order.
--Trying to fix baby overload after server restart. Max ratio of baby to
adults now >= 2.0 (was > 2.0). Max ratio of baby to fertile moms now >= 3.0
(was > 4.0).
--When a leader issues an order, they get a temporary SUPP arrow back to their
closest follower.
--When issuing an order, the leader sees +FOLLOWER+ markers above the heads of
nearby followers.
--If your mother has no leader, you automatically follow her at birth to
bootstrap leadership. Part of #532
--CURSE MY BABY now works forever, until you have another baby. Part of #529
--In a low-pop case (one fertile mom), avoid getting born to mothers that you
have cursed, and don't go to d-town if that lone mother has you cursed.
Spawn as a normal Eve instead. This makes the 1-v-1 situation on a low-pop
server more sane, in the case where both people have each other cursed, and
prevents a lone griefer from monopolizing the whole server by killing or
cursing all incoming babies. However, in the N=3 case, where two mothers
agree about one griefer, that griefer will still go two d-town. Also, in all
cases, if we have a choice between mothers, avoid those that we have
curse-blocked, if possible. The 'if possible' part prevents us from cursing
everyone in hopes of being Eve. Fixes #529.
--When one of your leaders dies, you get a DING message informing you and
telling you who took over for them. Part of #532
--When one of your leaders dies, you get a LEAD arrow pointing you to the
leader who took over for them. Final part of #532. Fixes #532
--Adjustment to tool slot curve. Top real-world score of 52 now maps to 9
slots (was 8). This is 3 extra beyond starting slots of 6, with 3 more as
headroom for when scores improve further. Part of #533
--Your twin sibs no longer count toward your genetic score. Fixes #530
--Waiting period for single-player killer now 12 seconds (was 6).
--Posse kill waiting period shorter with each new member (2 wait 6 seconds,
3 wait 3 seconds, 4 wait 1.5 seconds, etc.)
--Non-deadly weapons (+noWait) like snowballs and tattoo needles can be used to
start a posse (others can't join you).
--Posse of 3+ causes target to repeatedly gasp and show 'T' off-screen sound.
--Verbal kill targetting now works at range 20 for I WILL KILL YOU, bringing it
in line with other YOU targetting (like YOU OWN THIS). Kill targetting by
name now also works at range 20 (I WILL KILL EVE SMITH). Both were mistakenly
limited to a range of 8 before, which is the limit for direct-click kill
--Fixed case of blocking by wide extension of a wide blocking object in a way
that prevents you from manipulating the wide object. In this case, we allow
action diagonally. Example: newcomen tower blocking your exit from a
property gate. If it sticks out enough to block you from walking, it stick
out enough for you to touch it (to take it down, for example). Thanks Tarr.
--When you issue a personal curse against someone, you see them as having black
speech bubbles for 30 days.
--When you issue a personal curse against someone, they babel a unique 2-word
phrase to you after everything they say, and once every 15 seconds if they
are not speaking.
--Twins don't count toward posse size for the posses that they join.
Version 307 2020-January-30
--Fixed PGUP/PGDOWN in category editor when pattern has same object repeated.
--Fixed removal in category editor when pattern has same object repeated.
--Added d/D key to category editor for duplicating object in a pattern.
--Made playback of recorded web events more robust in the face of (admitedly
mysterious) playback timing variations.
--Finally fixed client-side cause of dropping stuff in a bad biome. Fixes #479
--Support for +blocksMoving tag to prevent animals from walking through
auto-open doors. Part of #504
--Improved spacing of speech bubbles (no more extra space at end of string).
--Grabbing an unlearned tool (or trying to use an unlearned ground tool) puts a
+ speech bubble above the heads of nearby people who already know that tool.
Fixes #517
--Fixed case of usingSound for target not playing if actor object also has uses.
--Holding SHIFT in freehand Sprite Trim Editor makes cut out area more visible.
Server Fixes
--Keeping diffWorking directory around after content build for forensic
purposes (in case the weird Steam build bug happens again).
--Cursing by name radius is now 200 (was 32), and is a live server setting.
Part of #496
--Server name at bottom of character detail page in family tree.
--Data-only diff bundle script has optional pause to check Steam build.
--Curse DB dump utility program prints date stamp for each entry.
--Fixed glitch in names timing out for curse purposes after someone dies.
Fixes #511
--Fixed spurious creation of new family population logs when tutorial or cursed
Eve picks a name.
--Improved reflector split/unsplit behavior in case where servers are spuriously
--New format for links to Wondible full family tree viewer. Fixes #509
--Added more logging around decision of when to spawn a new Eve. Related to
--Server notifies leader when they correctly issue an order. Thanks David J.
Version 304 2020-January-17
--No longer playing eating animation when sticking food in clothing container.
Fixes #490
--Fix overlap of hidden email/SteamID with GENETIC FITNESS label. Fixes #491
Server Fixes
--Rewrote baby placement code, removing a bunch of deprecated cases. When
placing a player, we first find all non-curse-blocked, non-cooldown,
non-lineage-limit mothers, expanding to include cooldown mothers if we can't
find any, and then expanding to include lineage limit mothers if we still
can't find any. Then, from those available, we pick the mothers from the
weakest race, and then, from those, we pick the mothers from the weakest
family. From those, we send the baby to one of those mothers at random,
weighted by Yum and warmth. If there exist some fertile mothers, but all of
them are curse-blocked, the player goes to d-town. If there are absolutely
no fertile mothers, or if > 2/3 of the player population are helpless babies,
or if there are > 4 babies per mother on the server, we spawn an Eve of the
weakest race. We also force-spawn an Eve for any non-existant race if
specialty biomes are in effect (when we have >= 15 players). Fixes #493
--Fitness leaderboard now has clickable detail links.
--New fitness score update formula (thanks wondible). Scores return again to
being capped at 60, and update based on how long you live relative to your
own score, or how long your offspring live relative to their score. Help
them to live longer than their current score, and your score will go up.
Hurt them so that they live shorter than their current score, and your score
will go down. This also ends the exploit where you push your own average
down to farm score boosts from long lives later.
--New tool slot formula based on new 0-60 capped fitness scores.
Version 302 2020-January-9
--Fixed editor skipping gaps in numbering in sprite import cache.
--Support for same object occurring multiple times in one pattern. So these
bottles can empty as powder bottles, and these other bottles can empty as
liquid bottles, but the powder and liquid bottles don't need to be duplicated.
Server Fixes
--Fixed to pull Eve grid back on track if it starts way out of bounds.
Fixes #486
--Support for moving animals that can avoid landing on floors.
Part of jasonrohrer/OneLifeData7#559
Version 300 2020-January-3
--Fixed another possible cause of the bouncing forever bug (wild bug): don't
ever set inMotion to true unless we actually send a MOVE message to the
Server Fixes
--Fixed blank tool learning message for partially-used tools. Fixes #475
--Fixed so that dismounting at the edge of a bad biome, where you drop your
horse into a good biome, makes you instantly sick. Before, you weren't sick
until moving, allowing you to pull items from your nearby horse cart into the
bad biome and trap them there. Fixes #477
--Eating bonus not applied to alcohol drinks. Trying to get drunk no longer
fills up your stomach so quickly. Part of #481
--Halved rate that drunkenness wears off. Part of #481
--Support for emotEat_ tag on objects to define a forced emot when eaten (used
to make people blush when getting drunk). Part of #481
--Fixed photo links on family tree server (removing join with server table
broke it, from commit 0788e818548de469688f816b5c81c3a8). Fixes #482
--Fixed so that murder victims that die of starvation before dying from their
wound are still logged as murdered in lifeLog. Fixes #483
--Fixed another case of spurious tool learning (when taking apart the knife or
any tool that results in a permanent stack of parts). Check that there's no
bare-hand action possible on the permanent result (so pounding stakes still
counts as a tool use). Fixes #485
Version 298 2019-December-20
--Fixed so you can TAB to show blue hint arrows for single-recipe objects.
Related to #418
--Fixed so that holding a use dummy that is both an ingredient and a target of
a recipe doesn't block hint arrows. Fixes #418
Server Fixes
--Fixed potential gene score exploit of tutorial lives being factored into your
own average lifespan. Lives that don't affect your score are no longer
counted in your own average. Fixes #473
--Fixed float precision errors in random animation movement that made it
unlikely for them to move in certain non-diagonal directions.
Version 297 2019-December-18
--Fixed crash when mousing over at the moment they die. Fixes #470
--Entering kill mode with shift-right-click no longer causes you to move toward
the kill target. Since there is a waiting period now, moving there right
away doesn't make sense anymore. Fixes #430
--Fixed so that when contents of a held container go through transition, the
generic pickup sound is correctly played (was playing container creation
sound by accident). Fixes #431
Server Fixes
--Fixed crash when sending follow and exile messages to disconnected player.
--Fixed so that we don't burn lives when reconnecting, even if server sees us
as still connected when we reconnect. Fixes #443
Version 296 2019-December-14
--Moved badges to be drawn over top of backpack strap (so not covered by strap).
Server Fixes
--Leaders can now issue orders that are passed through their follower tree
whenever followers are within 10 tiles. You only receive such orders from
your own personal leader, but the orders might be passed down from higher up.
Leaders issue orders by saying ORDER, COME TO THE TOWN CENTER. Orders appear
to followers as DING messages.
Version 294 2019-December-13
--Moved Bell home arrow to bottom of screen, by scooting other paper elements
down there closer together. Looked out of place on top. Added BELL word to
it to make it clear. Thanks Twisted.
--Support for voluntary hierarchical leadership. Each player can chose a
single leader by saying I FOLLOW YOU, or I FOLLOW JANE SMITH. Go back to no
leader with I FOLLOW MYSELF. You inherit your mother's leader at birth.
Each player can also exile other people by saying I EXILE YOU or I EXILE JANE
SMITH. Your exiled players are seen as marked for you and any of the
followers below you in the leadership tree. People who are still following
exiled leaders are marked as dubious. When a leader dies, they pass their
immediate followers up to the leader above them, if any, and their exile list
is passed down. Rank and ally status is shown via colored badges on worn
chest clothing.
Server Fixes
--Can initiate murder mouth by holding weapon near somone and saying I WILL
KILL YOU, or I WILL KILL EVE SMITH while holding a weapon from far away (and
a whole bunch of variations on these phrases, like DIE, EVE SMITH, EVE SMITH
IS GONNA DIE, etc.). If you know someone's name, you can resume your chase
after setting down your weapon to eat, or if you can't click on them because
they are too fast on a horse.
Version 292 2019-December-6
--Finally found a work-around for the Steam lingering process bug (when the
game launches a web browser to view family trees, and the user leaves the
browser open after they quit the game).
--Object editor allows shift-right-click to insert other object with sprites
interleaved with existing. Useful for making a feasting table that gets
emptied evenly across the different foods in parallel.
--Fixed DRINK translation. Fixes #457
--Fixed remaining inconsistencies with biome-crossing sicknesses. You now lose
you sickness as soon as your move ends outside a bad biome (before, unless
you stepped out directly from edge, sickness would linger until your next
move). You now correctly change sicknesses when crossing between two bad
biomes (your character forces you to stop in the separating good biome before
entering the second bad biome). Fixes #449
--Fixed a bug with lingering home positions in next life. Related to #455
--Bell tower directional arrow now show separately at top of screen.
Fixes #455
--Fixed a memory leak.
Server Fixes
--Right-click-on-ground-around-permanent, which is mapped to USE, no longer
bypasses biome lock (example: planting rubber cutting). Fixes #458
--Fixed so that donkeytown Eve placement, tutorial twin placement, and flight
crash landing placement don't advance Eve placement grid. This will prevent
Eves from getting more spread out than they need to be. Fixes #442. Similar
to pull request #459
--Fixed so that when growing, any bonus food is used to fill empty food bars
that are added. This prevents building up an unnaturally huge food bonus
when growing. Fixes #440. Similar to pull request #461
--Fixed so that putting a tool in a container that it could be used on doesn't
count as using a tool slot (like putting the saw in a box). Fixed so that
tool usage that's blocked due to hungryWork doesn't use a tool slot (like
failing to chop a tree, which used to make you learn the axe). Similar to
pull request #462
--Fixed calculation of average lifespan on genetic fitness server. Before, we
were averaging past 10 lives, and padding that average with 30-year lives if
we didn't have 10 lives for that player. However, we were also discarding
too many lives from the history buffer, generally not having 10 lives stored
for each player. So most player's averages were getting padded. Fixed by
keeping at least 10 lives for each player in the history buffer. Fixes #463
Version 290 2019-November-26
--Added support for +frontWall object tag, to fix glitch with open door behind
wall shelf. Don't decide whether a wall should be drawn in front of other
walls based on whether the wall has slots. This was the old test put in
place to detect wall signs, but really, slots isn't the thing... sticking out
beyond the normal wall boundaries is the thing.
--Support for +drink tag in objects, showing DRANK instead of ATE and DRINK
instead of ATE and EAT for tool tips in client.
Server Fixes
--Not stuck dropping immobile horse after snake encounter in bad biome. If the
object you're holding is permanent and has a speed multiplier of 0, you're
allowed to drop it in an otherwise bad biome. Fixes #453
--Support for drunkenness, which slurs and confuses speech, but also reduces
the language barrier. The speech of a more and more drunk person is easier
and easier to understand for a foreigner.
--Fixed so you can't drop a biome sickness object on the ground. Fixes #456
Version 288 2019-November-23
--Fixed bug in temp meter tool tip text.
--When reading a map or way stone, you speak a distance estimate along with
the map name.
--Fixed kerning on _ character in Futura font.
--Fixed glitch preventing intentionally entering bad biome from left side.
--Client no longer makes you pause before entering bad biome when riding.
Server Fixes
--Support for negative scores in offspring table. Fixes #447
--Eve injection baby/mother ratio is 1.0 (was 2.0). Reduce the number of
babies per mother to lighten the load of new players coming in.
--Eating bonus 4 (was 2.0), to help out all the new players.
--Min food decrement time 4 (was 2.0), to help out all the new players.
--Suddenly some lineage server queries were using the wrong index and taking
600+ seconds to execute, bringing the whole lineage server down. Something
about the influx of new users caused this, tipping MySQL's query execution
strategy toward the wrong index. Fixed this by only joining on users table
if we need to.
--Added a (user_id,death_time) index to speed up lineage server queries for
users that have a lot of lives.
--Got rid of unnecessary server table joins in lineage server.
--Indoor bonus no longer a fixed value, but instead based on the average
R-value of the surrounding walls for the room that you're in. Better walls
(and doors and floors) mean a bigger indoor bonus.
--New foodScaleFactor server setting, allowing all food values to be scaled up
or down.
--Support for written metadata on an object that can be duplicated through a
transition (for copying maps onto way stones). Support for reading
permanent objects by touching them.
--Whoops, low pop servers now have tool learning slots disabled.
Thanks Spoonwood.
--Support for objects that affect auto-orientation of other objects without
having multiple orientations themselves (example: wall shelves).
--For tool groups, like +toolSewing, the group tag is used in the YOU LEARNED
message to avoid confusion (YOU LEARNED SEWING.). Fixed article use (THE) in
messaging when tool group ends in ING. YOU LEARNED THE BOW DRILL vs YOU
--Riding something (horse, car) prevents you from getting sick in a bad biome.
You cannot dismount in there, however.
--Support for +autoDefaultTrans tag on objects, which means that default
transition is triggered when player path will cross that object. For
spring-loaded doors that auto-open.
--Closed the exploit where you suicide as a baby to reap your mother and
grandmother's long life genetic score. Now your mother and grandmother
(etc.) only count toward your genetic score if you survive past age 3 and they
die while you are still alive. Dying early on purpose won't let you reap the
benefit of their long lives.
--Fixed so that a tool laying on the ground that is not permanent counts as a
used tool if it becomes permanent. Now building stakes count as a tool
--Personal curses now last 30 days (was 7 days).
--Changed tool slot formula (based on fitness) to use a sigmoid curve and avoid
infinite tool slots for high scores. Now slot range is between 5 and 19 for
positive scores, or between 4 and 3 for negative scores.
--Support for +noBackAccess tag to prevent wall shelf access through back wall.
--Fitness server now supports manual, global score reset.
Version 286 2019-November-18
--Fixed client to not hang on loading if an expected sound file is missing.
--Fixed crash if server sends an emot index that we don't have.
--Fixed mouse-over tips when mousing over floor-protected bad biome.
--Character will now pathfind around bad biomes (even along roads and floors)
whenever possible. The only way to enter a bad biome is to stand right at
the edge and click into the bad biome directly.
--Scene editor supports multiple emot layers.
Server Fixes
--Support for +neverDrop object tag for murder weapons, which prevents them
from being dropped in bad biomes. Fixes #444
--Fixed new bug that was preventing animals from spawning.
--Wait per mom before sending another baby to the weakest family made a live
setting and set to 4 minutes (was 1.5 minutes). Further reducing Eve getting
hammered with too many babies.
--Made Y placement gap between tutorials larger to make room for skip-tutorial
hallway. Fixes jasonrohrer/OneLifeData7#507
--No more arc messages when Eve injection on. Fixes #441
--Fixed default object behavior of force-spawn clothing.
--Fixed so that a long path through a bad biome that ends outside of it still
makes you sick. Can no longer "skip across" a bad biome with a long path.
--New genetic score forumula based on offspring's lifespan compared to their
average lifespan. Helping any player live longer than their normal will
boost your score. Reduces randomness. Scores no longer bounded in [0-60]
range. New players start with an assumed score of 30.
--New Eves always spawn in least-represented skin tones. Fixes #446
Version 283 2019-November-15
--Fixed crash when sprite .tga file exists but .txt file doesn't (either in
folder or in stale caches).
--Sane behavior in unexpected situation: clear sprite .txt file cache.fcz
whenver we rebuild .tga file bin_cache.fcz There's a chance that Steam
doesn't properly update cache.fcz, leaving it outdated.
--More graceful handling of objects that refer to sprites that don't exist.
Draw them without that sprite. Used to wait forever for that sprite to load.
--Making sure cache.fcz has exactly same list of files as corresponding folder.
Checks file names only, not contents. On mismatch, cache.fcz is rebuilt.
--No more crash if server sends us an unknown object ID. Instead, we show a
MISSING OBJECT placeholder in client. This is an extremely unlikely case,
but could happen if there's some error in the update process.
--Support for permanent emots, for things like tatoos, piercings, makeup, etc.
Server Fixes
--Fixed so that one weak family isn't hammered with too many incoming babies.
Let 1.5 minutes pass bewteen each baby per mother. Otherwise, Eve, who is
always the weakest family, gets hammered with incoming babies.
--Max baby/mom ratio before eve injection now 2 (was 3).
--Max player/fam ratio pushed up to 13 (was 9), meaning fewer, bigger families.
--Map change log now includes playerID responsible for each change.
--Biome placement on map now uses a 64-bit seed (was 32-bits) to make brute-
force seed guessing, based on map samples, impractical.
--Fixed a memory leak in map reseeding.
--Map change logs now roll over every 24 hours and don't include biome seed.
--Fixed cache size inconsistency.
--Map biome seed now logged in separate file along with map change logs, but
that seed file is only published after the map is reseeded (if it ever is,
due to a wipe or player-triggered apocalypse).
--Min fertile females per family (when girl babies are forces) is 4 (was 6).
--Eve moving grid jump is now 200 (was 320), making it a perfect tight fit with
well tap-out of 160.
--Specialty biomes limited to specific skin tones. Other skin tones get sick
--Language learning change: instead of busy-work with a baby (blabbering lots
of phrases to cover different phonemes), each generation that is around a
language learns it at a fixed rate (10% of remaning phoneme clusters by
frequency weight). After roughly 10 generations of coexistence, full
language learning will be realized.
--Disabled second-place-biome object placement along biome boundaries (though
looking at parameters in code for ring biomes, it looks like this was
impossible anyway).
--Support for +biomeReq and +biomeBlock in object descriptions, only allowing
an object to be made in specific biomes or blocking it from specific biomes.
--Support for +noWait tag on 'weapons' like snowballs and tatoo needles. No
murder mouth, and no waiting period before execution. Target still gasps.
--Support for polylingual skin tones.
Version 280 2019-November-8
--Fixed crash when person making an off-screen sound dies.
--Fixed so that filtering for /HUBBARD SQUASH doesn't trigger /HUBBA emote.
--Handling probability sets in object depth measurement and produces map so
that /HUBBARD SQUASH and /PUMPKIN filters work (and other objects that pass
through a probability set along the way).
--Fixed off-position emotes for babies that are lying down.
--Finally fixed main cause of moon-walking glitch. Fixes #309
--New indoor food drain bonus (currently +20 seconds per pip). Only affects
people over 3 years old. Mousing over your temp meter explains your current
food drain rate.
Server Fixes
--Fixed bug in tapout triggers that were counting uses (of shallow well, for
example) as tapouts.
--Welcome message now shows total tool slots along with bonus slots.
--Force-spawns can speak to everyone in shared language.
--Fixed failed insert condition on fitness server when a life is both your
daughter (from your previous life) and your mother (from this life).
Double-counting is now correctly prevented without a fatal insert error that
blocks the rest of the (non-double) life scoring from happening for that
life. This clears up a major cause of the skipped-scoring bug.
--Support for northward and southward gradient markers in same column as tapout.
--Excess from eating a big food item now goes into bonus overflow food points
(same bin as Yum bonus points, with +13 or whatever next to food meter).
Overflow capacity starts at 1 and goes up non-linearly to 91.6, based on base
stomach size. So newborn babies and unfit elderly have 1 overflow capacity,
and adults have 90.6 overflow capacity (and more fit elderly have more
overflow capacity than 1). This increases the potential beneficial size
range of large foods, like feasts. The non-linear formula, based on Miska's
suggestion, is 1 + pow( inBaseCapacity, 8 ) * 0.0000000035.
--End of posse/kill joining spam. You must end your current targeting (by
dropping your weapon) in order to start another target-ting. You can't keep
spam-target-ting the same person, nor can you spam toggle back and forth
between target-ting two people, unless you drop and re-grab your weapon.
Fixes #439
--Boundless world: barrier off.
--Boundless world: Eve window set to 1 second.
--Boundless world: We inject a new Eve if a new baby would be born pushing the
baby-to-mother ratio above 3.0. We also inject a new Eve if the player-to-
family ratio ever exceeds 9.0, but in that case, since it's not an emergency,
we wait for a player who has a fitness score matching or exceeding the
highest fitness score seen for the 10 most-recently-joined living players.
--Boundless world: Eves placed on a persistent, moving, zig-zag grid. Each
grid point is 320 tiles away from other grid points to NSEW. Grid columns
are 5 points tall, with new columns distributed further to the west. Thus,
Eves are placed in a horizontal band that grows toward the west. Walk east
to find older parts of civilization. Walk north or south to find endless
--Reading a map within 30 seconds before taking off in a plane causes you to
land at the closest landing strip to the map's destination. This makes plane
flights much more reliable and much less griefable with cargo-cult trap
strips. Poor five oz. of vodka on the sidewalk for our fallen comrade Tarr.
--Getting yellow fever clears yummy bonus food store.
--Boundless world: turned min family limit off, so that arc messages don't
mention it.
Version 278 2019-October-31
--Added an early exit hallway to make the tutorial optional.
--Off-screen speech now drawn on left, right, and bottom of screen (before, was
top of screen only). Server sends speech in radius of 16 to facilitate this
(was 10).
--Now off-screen sounds for posse targetting you show double exclamation marks,
where off-screen sounds that aren't for your posse show the normal single
exclamation mark. Facilitated by the new PJ (POSSE_JOIN) protocol message.
Fixes #433
--Head emots (like heart for /LOVE) are shown above hat layer (were covered by
--Apocalypse clears your tool learning slots.
--Babies can't move at all for first 12 seconds of life, and lay on the ground,
but react to mouse clicks by wiggling.
--Spring tapouts now leave E or W gradient dry springs along ley line to W or E
of well. You can follow these gradients to find the well.
Server Fixes
--Boiling the frog: 6-12 tool slots (was 8-16).
--Boiling the frog: 5-10 tool slots (was 6-12).
--Min fertile girls per fam 6 (was 3). This should help to prop up struggling
families and prolong the arc.
--Fixed kill-target swapping bug. Fixes #420. Delay before landing kill is
now 6 seconds (was 3).
--Holding a baby now cancels any kill target actions against it. Fixes #421
--Changed definition of hand tool use to require something left in the hand
after the action. So putting a sterile pad back in a bowl doesn't count.
Fixes #435
--New map change log is started correctly when a biome reseed happens.
Fixes #434
--Server forces player to say [GASP] when they are targetted by a killer.
Along with the shocked face, this makes it harder to ignore the fact that you
are targetted. Related to #433
--Message on birth explaining your bonus tool slots due to your fitness score.
Message is skipped if your fitness score is too low to grant you any bonus
tool slots.
--Support for forced spawns for specific accounts.
--Everyone with fitness score over 0 gets one bonus slot, so genetic fitness
message on birth can be shown to almost everyone.
--Fixed a sign issue in fitness server in the case of even R parameter.
--K parameter for genetic fitness score is now 46.5 (was 10). This value was
discovered empirically through simulation of 100 births with various infant
death rates to find a K-value that balanced fast convergence with low score
range overlap between player skill tiers. This means that scores go up and
down 4.65x slower than before.
--New hints to find wells: when well taps out area, it leaves thoroughly dry
springs in same row as well, and regular dry springs elswhere. So if you
ever find a thoroughly dry spring, you know you can find a well by walking E
or W.
--Mothers and Gmas and GGmas now count toward your genetic fitness score,
assuming that you are at least 3 years old (or would have been) at their time
of their death. This closes the 'kill your mom to prevent younger sibs'
Version 276 2019-October-25
--/FPS graph in client now shows frame timing breakdown.
--Holding 'x' key lets you click through people. Allows you
to interact with objects behind self and others.
--Showing explicit hint for [SHIFT]-[TAB] on hint sheets (paging backwards).
--Fixed stuck murder mouth after apocalypse.
--Shift-right-clicking an animal with a valid weapon no longer puts you into
kill mode against closest person. A lot of new players were confused by this.
--Implementation of limited number of tool learning slots per player, complete
with messaging about how many slots are left and backwards holding of
unlearned tools.
--Support for bigger jumps in picker paging.
Server Fixes
--Support for upper limit on number of tapout triggers that can be built
followed by a larger tapout radius. Example: first 5 shallow wells built
tap out springs in an 80-radius area. 6th+ shallow well taps out springs in
an 800-radius area.
--Fixed bug in replacing oil wells with tarry spots on server restart, and also
no longer using same random seed for placement of tarry spots in each arc.
--If you are < 3 years old when one of your descendants die, they will not
count toward your genetic score (because you were helpless yourself).
--Reseeding map now depends on map being inited, so switched order in
apocalypse step.
--Fixed so that curse radius is correctly limited to 32 tiles.
--Fixed so that saying I AM EVE SMITH doesn't result in redundant name
insertion in broadcast speech of I AM EVE EVE SMITH.
--Client tag as part of protocol, along with server-side logging.
--Fixed some grave-tracking inconsistencies.
--Limit on well placements wasn't resetting with apocalypse, causing limit of
only one well in next run.
Version 272 2019-October-19
--Fixed crash when switching hint target object with a non-matching filter.
--Fixed when hint filter string doesn't match anything, so that non-matching
filter doesn't interfere with normal hint behavior.
--Fixed missing links in crafting hints due to not handling probabalistic
transitions when fleshing out producesMap. Example: Lock and Key Parts
with Chisel is only made sometimes, only if the use state transition isn't
triggered to make Lock and Key Parts with Chisel# use 4 (the state where the
chisel has become partially used). Before, there was no complete crafting
process hinted for Lock and Key Parts because of this.
--Fixed a crash when server (mistakenly) tells us we're responsible for an
object change happening off of our known map area.
--Map implementation. Holding a blank map and charcoal and speaking a map name
creates a marked map to your current location. Picking up a marked map
causes you to speak the map name and set your home arrow to the map's
destination for the next 60 seconds, or as long as you continue to hold the
--VOG text at same location replaces previous text instead of overlapping.
--Improved frame rate in cities by reducing overdraw. Biome tiles that are
compltely covered by floors don't need to be drawn.
--Editor obeys alpha channel when baking a multiplicative layer to mask the
affected area (some multiplicative sprites had invisible black areas---not
sure why).
Server Fixes
--Added utility program for dumping map value at coordinates at a given
location on a live server.
--Tapout trigger implementation. Upon construction, a given object can tapout
nearby objects on a grid pattern with a given radius. Used for shallow wells
that tapout all spring heads in an 80-tile radius.
--Can't join posse targeting yourself. Related to #426
--Fixed so that leaving a posse clears your speed boost. Fixes #426
--Fixed so that endtower apocalypse trigger restarts eve window and does other
necessary bookkeeping steps. Fixes #428
Version 270 2019-October-12
--Editor can copy slot movements relative to saved position.
--New hint filter system. When you target an object to make (like /HATCHET),
you see an reverse-ordered list of steps, starting with the target and going
simpler, as you TAB. Each step shows you hint arrows for nearby ingredients,
and when you pick up an ingredient object, the list automatically jumps to
the most relevant hint for that ingredient.
Server Fixes
--Saying I JOIN YOU near a posse member with something in your hand causes you
to join that posse, even if you're not holding a weapon and haven't managed to
shift-right-click on the target person yourself. You can do this while
holding a branch or whatever, and though you can't kill with a non-weapon,
your posse membership can help to speed up the posse. This makes groups much
more powerful against hit-and-run griefers, who are difficult for the whole
group to target.
--Blocked births outside of rift barrier (before, was only blocking outside
births during Eve window).
--Rift barrier no longer blocks plane flights, and this setting is configurable
live, without restarting the server.
--Fixed another cause of out-of-range ghost players. Updates for midrange
players weren't getting PO messages correctly, nor were global updates for
new players. These players were seen as in-range, which triggered (!) emote
notifications and a ghost player standing there if you ever travelled to
their original location. Fixes #410
--Support for fixed-count, randomly placed biome objects. Used for tarry
spots, to ensure that there are exactly 5 of them inside the rift barrier in
snowy biomes only.
--EVE was on list of female and last names. Whoops.
Version 268 2019-October-3
--Fixed so that off-screen sounds generated by your own character are never
drawn. Fixes #409
--Fixed so that we don't play emote sounds (or show their off-screen icons) for
out-of-range players. Fixes #410
--Tutorial wording reflects latest curse changes. Fixes #407
--When computing object center, don't consider worn-only sprites, since
centering is used for containment. This fixes the weird containment position
for long dress and skirt.
--Hint arrow shows nearby objects that are relevant to current tip (activate by
actively tabbing through hints, or having a hint filter set).
Server Fixes
--Max speech radius is now 10. No more spying on distant speech with a zoom
mod. Fixes #408
--values.h should be replaced with limits.h Fixes #411
--Fixed grave duplication caused by swapping grave baskets with objects on the
ground. Fixes #402 There is still a possible case of grave mix-up if three
people are moving graves around in the same area at the same time (which is
unlikely), but no grave duplication that I could produce even in that edge
--Blocked twins/trips/quads from cursing (before, just blocked them from
earning tokens, but if they already had a token, they could spend it).
--Expanded the list of possible last names to the full list of 151,000 provided
by the US Census 2000. Was using a trimmed list of 86,000 last names (from
the same source, but only counting names that occurred 200 or more times in
the year 2000). The source list includes names that occurred 100 or more
times in the year 2000.
--Fixed glitch in lineage_depth calculation on family tree server when
generation is not known yet.
--Fixed major infinite loop in server name picking code. Not sure how this was
never triggered, but a new name list, with a different length, triggered it.
--Full list of all US first names since 1880, for roughly 100K names (was 30K),
and split into male and female names (for names that were always > 80% one
gender in every year) and unisex names (for names that were > 20% the
minority gender in some year). Gender is enforced in baby name filtering.
No more girls named Robert or boys named Mary, but both boys and girls can be
named Charlie. Hello Helga!
--When you name your baby, the closest matching name is replaced in your said
text as it is displayed. YOU ARE ROBERT for a girl is heard as YOU ARE
ROBERTA. You don't need to mouse over the baby to find out what name
actually stuck, and there's no mismatch between what your baby hears and what
their name is.
Version 266 2019-September-27
--Extra ID param in USE message to differentiate between click on ground and
click on target object (to fix case where target animal moves out of the way
before server gets our message, making it look like we clicked on the ground,
thus mistakenly executing a use-on-ground action, like dismounting our
horse). Fixes #400
--Right-click on empty ground around an object with empty hand will pick it up.
Makes it easier to pick up tiny objects.
--Support for offScreenSound tag on emotes (like murder mouth and yoohoo).
Support for pulsing off-screen notification if an offScreenSound object emits
sounds during its animation (like murder mouth does). Fixes #406
--Editor supports flipping whole object.
Server Fixes
--Fixed so that long paths that go near edge of client's known map chunk cause
new chunks to be sent (so client doesn't see unknown map area when walking
near edge of mapt chunk).
--Fixed a movement bug that caused jump-back when rapidly clickly to extend a
path (a timing bug). This jump-back would also cause a carried child's view
to scroll way off into the unknown map area and then slide back.
--If a new player has played less than 5 lives or less than 2 hours total (not
including their time in the tutorial), their mother gets a message when they
are born.
--Personal curses now block someone from being born near you for 7 days (was 2
days). Fixes #384
--Fixed major bug in personal curse implementation. When checking if birth
location blocked, was only checking first player on the list. This meant
that personal curses didn't work correctly most of the time.
--During Eve window, if all fertile mothers have a player curse-blocked, they
go to donkeytown (they used to spawn as Eve inside the rift barrier).
--Simplified mother picking code (without changing behavior) in anticipation of
some additional fixes.
--Fixed twin loophole in personal curse implementation. If your twin is
blocked from being born in a given area because of curses, so are you, and
you all go to donkeytown if there's no area for one of you.
--Twins sent to donkeytown based on personal curses all have black speech.
--Fixed a jump-back movement glitch when a slow client tries to interrupt a
move that the server thinks is already done.
--Fixed so that you can't add things to slots in DIE-baby graves.
--Player counted as new if <4 hours lived in game (was 2).
--Fixed case where force-drop happens (during death or wounding) when no direct
bare-ground transition applies to the permanent held object (example: cast
fishing pole). In this case, we check for a timed transition first, and then
look for a bare-ground transition after that timed transition is applied.
Also, in case where bare ground transition leaves something in hand (example:
pole with old boot), we toss both things (before, the pole would disappear,
leaving only the boot). Fixes #388
--Better logging of too many babies per mother apocalypse trigger.
--Player counted as new if < 8 hours lived in game (was 4).
--Fixed stacked basket flinging glitch. Fixes #391
--Blocked all container object from flinging stuff. To target a container
object (like a grave full of belongings) in a way that would reduce the
number of slots in the container (like picking up the grave into a basket),
you must empty it first.
--Changed max baby/mother after Eve to 20 (to essentially disable that
apocalypse condition). Added a new condition: apocalypse after Eve window
if our player population inside the rift is ever > 33% helpless babies.
--Increased death stagger time by 20 seconds (+50%) up to 60 seconds (was 40),
allowing more time for wounded players to be healed.
--Fixed glitch in naming an unnamed Eve so that she doesn't get your family
--Was not accounting for yum bonus when deciding whether we had enough food for
hungry work. Also brought safe buffer down to 4 pips (was 5).
Related to #392
--If family has < 3 potentially fertile females left (fertile females and girl
children), we force that family to have girl babies when it is their turn for
--findDropSpot code now respects rift barrier. Flinging stuff across the
barrier should never be possible (last case was picking up a toddler who was
holding something).
--Food log now includes eating bonus. Fixes #393
--Fixed frozen full horse cart bug.
--Baby ratio to trigger apocalypse is now 0.66 (was 0.33). If we get to the
point where there are 2 babies for every non-baby player, things have gotten
really bad, right?
--Fixed potential (though unlikely) overflow issue for long emails in local
curse database.
--Over past 21 hours, only three spawns were sent to donkeytown, and all three
of them were for the single player with the most curses in the game. No one
else went to donkeytown. It seems like the blocking radius for curses is
simply too small. Increasing it up to 200 (was 50).
--Your younger sibs now count toward your genetic score, closing the 'avoid
having kids yourself and try to live until 60' path to a high genetic score.
--Tutorial lives no longer count toward genetic fitness.
--Rollback: back to reporting tutorial lives to fitness server (all Eve lives
were already not affecting the score, according to the fitness server code).
--Fix for getting back on the leaderboard (after expiring) by playing the
tutorial: lives that don't affect score (all Eve lives) don't update
--One more basket-stacking fling case fixed. Fixes #404
--Curse radius grows as your total curse count grows. Starts at 200 (you must
be born 200 tiles away from any living player that cursed you in the past 7
days), and grows by 200 with each curse you receive. At 4 curses, your
curse block radius is 1000, which means you cannot be born inside the rift
if anyone who cursed you is currently alive. Your total curse count goes
down by 1 point every 7 days. Cursing still works effectively as a 'get
away from me' gesture (you'll be very unlikely to encounter this player again
in the next 7 days), but starts functioning more and more like a global block
as your curse count grows. Even then, though, it only blocks you if the
people who don't like your behavior are currently playing. As opposed to a
fixed-length punishment, this is more like, 'you've bugged these people
enough, try playing again later.' Fixes #403
--Grave placement now respects rift barrier.
--Target player of murder-mouth kill targeting shows SHOCK emotion to indicate
that they are being targeted. Related to #401
--3-second delay between when murder-mouth sound/anim starts and when the kill
window actually opens, to give the target some warning. No more surprise
insta-kill when you're standing next to someone. Fixes #401
--Better wording so that people know what the arc name is.
--Your curse block radius depends on number of living players who have you
cursed, not total number. Starting radius is 100, when one living player has
you cursed, and it goes up by 100 for each additional living player that has
you cursed. Once 5 living players have you cursed, one of them standing at
the center of the rift will bock you from being born and send you to
donkeytown. Once 10 living players have you cursed, one of them standing at
the corner of the rift will block the entire rift, sending you to donkeytown
always, as long as those players continue living. The worst offender
currently has 104 curses, and in a recent sample, 13 living players had that
offender cursed.
--Twins/trips/quads don't get curse tokens to spend.
--How fast you run while chasing someone in the kill state now depends on the
size of your posse. If you are by yourself, you run slow (0.75x speed). A
posse of 2 runs at 1.25x speed. A posse of 3 runs at 1.5x speed. A posse
of 4+ runs at 2x speed. This makes it more difficult for a lone griefer to
kill someone, while also making it more difficult for a lone griefer to
escape the will of a determined group. This only affects chasing speed, so a
lone player can still easily guard a choke point (with a short-range weapon)
or an area (with a bow).
--Improved fence auto-orientation code so that different types of fences
(rickety, proposed, etc.) can react to each other and auto-orient. No more
out-of-whack fences caused by them being out-of-sync when placed.
--New baby distribution method, after Eve window closes: Instead of
round-robin, we pick the family with the fewest potentially fertile females
(fertile moms and girl children) left and send the next incoming baby there.
--Twins always run at posse-1 speed (0.75x) when trying to kill, no matter what
size of a posse they're part of. Thus, twins can't form their own posse made
up just of their twin set to get a kill speedup.
Version 262 2019-September-12
--Incorporated PAX West hotfixes to kiosk mode.
--Fixed so that hitched horse cart doesn't cross objects to the left in a
glitchy way. Fixes #358
--Support for ctrl-v paste of text into object description in editor.
--Auto-walking around all kinds of road branches (diagonals, etc.) now works
flawlessly. Fixes #360
--Fixed so that you can walk to and set down or swap an object on an empty
surrounded tile with one click. Fixes #361
--Removed lingering home markers after apocalypse. Related to #363
--Can now CTRL-V to paste clipboard text into chat. Fixes #367
--Added some safeguards to make sure drawn cursor size never jumps to 0.
Fixes jasonrohrer/OneLife#379
--Mousing over someone from another family shows their WAR or PEACE status with
your family (no label if neutral). A new WAR_REPORT message from the server
makes this possible.
--If you spam more than 10 emotes in a single minute, you're put on emote
cooldown for two minutes. Based on the simplistic implementation, worst
case, you can trigger 20 emotes in a row (if you trigger 10 at the end of a
minute window and 10 at the beginning of the next minute window). Fixes #396
Server Fixes
--Fixed crash when moveTotalSeconds is negative.
--Whoops. For the past two months, no new players were having reviews, lives
lived, or time lived logged by the review server (due to a bug in the insert
query after polls were added).
--Special announcement to let players know they have a PAX Expo baby.
--Current move truncated when you land a kill, to prevent a long move from
continuing at full speed with a slow-down bloody weapon in your hand.
Fixes #362
--Fixed so that we clear remembered monomument positions after apocalypse so
that we don't keep passing them on to future generations (babies hear about
the monument that their mothers know about at age 0.5). Fixes #363
--Added sanity check so that no Eves are born outside barrier, no matter what.
Fixes #377
--Check min pickup age before swapping a held object (with a ground transition)
with another object on the ground. A child can no longer swap a clean pad
with a sword, car, bow, etc. Fixes #378
--Fixed memory leak.
Version 260 2019-August-28
--Fixed bug in murder weapon change not showing up on perpetrator until perp
stops moving (in other clients other than the perp's client).
--Fixed digit in sqrt(2) constant. Fixes #372
--Editor now highlights naturally-occuring objects and deadly objects in
picker, so no more mistakes making something natural during object
--More kiosk mode features. Instructions on RebirthChoice page, friends button
there, and blocking various things that would return you to the login screen.
Server Fixes
--Family limit failure condition set to 35 (was 23).
--Fixed bug that caused stuck murder mouth emote if you target someone from
more than 8 tiles away.
--Support for custom global messages.
--Support for maxPickupAge on objects (so elders cannot use swords).
--Local personal curses replaces centralized curse server. Each player on a
server gets one token per 30 minutes (was 1 per 2 hours) to curse another
player. That marks the player for 48 hours, preventing them from getting
born within 50 tiles of the cursing player. If a cursed player runs out of
mothers inside the Eve window, they become an Eve. If a cursed player runs
out of mothers outside of the Eve window, they go to donkeytown.
--Cross-family cursing can now be done without speaking the curse in their
language (local personal curses are fine across families).
--Shortcuts for cursing: CURSE YOU (closest other player) and CURSE MY BABY
(your youngest baby, even if recently died).
--Change to baby last name: now comes from biological family name, if set,
even if baby is adopted and named by someone else. Much less confusion about
who is in which family line (for war and peace purposes).
--Families start out in neutral state and cannot use swords against each other.
Unilateral war is possible when elders speak WAR in the target family's
language (and then both sides are at war). Peace can be set by elders from
both families saying PEACE in the target language, and then that PEACE treaty
can only be broken by elders from both families saying WAR. So, unilateral
war is possible at first, but after peace is established bilaterally, it must
be broken bilaterally.
--Support for force-matched vertical, horizontal, and corner fences. No more
manually rotating them.
--Wildcard shortcuts for giving gate ownership to all living children (MY
OFFSPRING OWN THIS) or all living family members (MY FAMILY OWNS THIS).
--New arc failure condition: After Eve Window closes, there are no new Eves,
and arc ends when there are fewer than 5 living families.
--Arc milestone message now includes info about min family end condition.
--Global announcement whenever a family dies out after the Eve window closes.
--Link from Eve on family tree server to full tree on Wondible viewer.
--Fixed rounding errors in move timing that could cause micro-managed moves to
be faster than long paths (WASD movment catching up to mouse movement).
--Fixed apocalypse frozen-whiteout bug caused by server waiting for
disconnected players to have been sent the map update (they are disconnected,
so this is never going to happen). When this bug was triggered (by a player
in the disconnected state during the apocalypse), the apocalypse whiteout
would last until that disconnected player died.
--Fixed to no longer send out arc-family death announcements for Tutorial and
Donkeytown players. Fixes #375.
--Can spend YUM bonus to do hungry work. Hungry worked blocked if it would
take you down below 5 food (to give you a safe buffer at the end). Thus, you
need at least 15 food (including food and YUM) to do 10-cost hungry work.
--After Eve window closes, babies are distributed between remaining families
round-robin. Within each family, when it's their turn to get a baby, heat
an yum fertility bonuses still affect which mother in the family is chosen.
Note that area/lineage bans, birth cooldowns, and other factors still apply.
We only send a baby to the next family, round-robin, if we can according to
these other factors.
--For analysis: after Eve window, each family population is tracked separately
in a log over time (so we can make graphs showing family fractions of total
population, etc).
--Support in lifeTokenServer for manually changing an account's token count
(for PAX booth use).
Version 256 2019-August-2
--Support for offScreenSound_red tag (other offScreenSounds are white).
--Support for global messages broadcast from server to all connected clients
not in tutorial. Using it to announce war/peace status.
Server Fixes
--Fixed baby teleportation glitch. Now if there's no place to drop a baby,
they go where you are standing instead of being thrown.
--Babies born outside rift area don't count toward survival requirement for
determining group failure.
--Fixed offspring selection code to balance male and female babies, even for
races that have different numbers of male and female characters (before,
redhead and black mothers had 75% boy babies, now they have 50% like they
--Added support for an Eve window of time at the beginning of an arc. Eves can
only spawn during that time.
--Disabling baby-survivial-age based apocalypse trigger, and replacing it with
a no-fertile-mothers-left (inside the barrier) trigger.
--Outside the Eve window, incoming babies will be born to SOME fertile mother,
no matter what (despite lineage bans, birth cooldowns, etc.)
--Barrier radius 354, for roughly half a million tiles (tried 1/4 million
which was too small, and 1 million, which was too big).
--Forcing all girls to be born if we're outside Eve window and number of
fertile mothers inside the barrier falls below a threshold (1/15 of the
population, or 2, whichever is larger).
--Fixed so that donkeytown can spawn Eves even after the Eve window closes.
--Fixed so that suiciding as a baby counts against your own genetic fitness
score (a bug was preventing it from counting).
--Made fitness leaderboard window a setting, and set it to 24 hours (was 48
hours before). This is the recent-play window for displaying names on the
leaderboard and computing rankings.
--Global failure condition is now baby/mother ratio of 6 or higher (counting
helpless, < 3-year babies and fertile mothers). So no more baby overload at
very end.
--Support for new +hungryWork object tag, which requires and consumes a certain
amount of food when the object is produced. Applying this to chopping down
most kinds of useful trees (at least ones that are sensibly hardwood, like
maple, poplar, and rubber).
--Server biomes random generator reseeds itself after every map wipe. A
different map every time, with one of 4 billion possible seeds.
--Made server wait 8 seconds after signalling apocalypse, to give clients
plenty of time to white-out.
--Fixed so that non-cursed babies don't get born to cursed mothers after Eve
window closes.
--Fixed so that during 2-hour eve window at start of arc, players outside
barrier cannot have babies (so that they have to escape fresh during each
new arc).
--You can now curse people in other families, but only if you utter the curse
in their language. This means that over multiple generations of
co-existence, where subsequent generations of babies learn more and more of
the language, you can curse that family in plain English, eventually, because
they can understand your plain English. But before that, you can utter the
curse in their language directly (or join in a curse that they are carrying
out by repeating what they said in their language. For example, DANCH LEASIE
STEADGED was one translation that I saw for CURSE TOBY JONES.)
--Server logs every player-caused change to map, for wondible's potential use
in time-lapses.
--If server starts up and finds that it's map seed file has been wiped, it
assumes this is a manually-started fresh arc, and reports the end of the
previous arc to the arc-tracking server.
--Server map-change-log includes floors.
--Biome map gen code overhaul. Testing new topographical placement. Swamps
surrounded by grass surrounded by prairie. Snow surrounded by mountain
surrounded by desert surrounded by jungle. Every grassy area is a good
settlement spot, because it's always next to a swamp.
--Disabled plane flying over rift. People escaping early makes it impossible
to test properly.
--Baby mother ratio (failure condition) reduced from 6 to 4.
--New patch-based layout of special biomes (desert, snow, jungle) on
topographical peaks. Regular biomes (swap, grass, prairie, mountain) are
still played in topographical rings. This prevents the biomes that we need
less of from ending up in weird-feeling, thin topo rings. It also adds
large-scale variation to the map. This region has snowy peaks. This other
region has desert peaks.
--Saying PEACE in a way that another family can understand (in their language,
or in English if you are bilingual), with one of their family members in
earshot, establishes a peace treaty between families, blocking the use of the
war sword between them. Only works if said in both directions, by elders
over age 55. If elders say WAR bidirectionally later, the families are no
longer at peace and can use war swords again.
--Testing new arc failure condition: We allow a normal Eve spiral always, but
after the initial Eve window time (currently 2 hours), we start counting
families. The arc ends if we ever have too many families (more than 15),
because this means that the successful families have all started to fail,
and there aren't enough fertile mothers left, and we're getting a lot of Eves
that can't survive.
--Cronjob to sync map change logs to public data server every 5 minutes.
--Support for special map placements.
--Can only enter the kill state against a player that is no further than 8
tiles away.
--Family data log, tracking player population stats over time.
--Server sends global message with arc stats every 100 years.
Version 251 2019-July-25
--Fixed weird initialization of OwnerInfo structure.
--Support for +noHighlight tag on objects (blocking mouse-over highlights,
which look weird on the rift object).
Server Fixes
--Another work-around for the Steam bug. Manually verify that the latest
steam build ID is correct before building.
--Long term non-look map culling (live reclamation by nature) disabled.
--Added an impassible barrier at a adjustable square radius.
--Eve spiral resets to 0,0 when it gets too close to the barrier.
--Adjusted Eve spiral jump to 50 (from 250) and set barrier radius at 250
(500x500 square). The smaller spiral fits nicely in the barrier square.
--If no baby lives to age 15 for 60 straight minutes (on a server with at least
15 active players), then an apocalypse is auto-triggered. This means the
barrier square is out of resources necessary for survival.
Version 248 2019-July-18
--Fixed crash in crafting hints if an object is picked up that has no
--Support for adjusting ground tile edge blur at runtime in settings folder.
--Fixed rapid character flipping glitch when walking on a road with a
wide-blocking object on it. Fixes #352
--Fixed crash when specified emotion object ID does not exist.
Server Fixes
--Server now allows authenticated re-connect through no matter what,
force-disconnecting the existing connection if its still seen as connected.
This will eliminate LOGIN FAILED when trying to reconnect quickly (before the
server has seen the connection break), BUT it will also allow someone else
with the same login credentials (like a friend you gave your account key to)
to login and hijack your game (and force you to disconnect). This is an edge
case that will almost never happen, so it's best to honor all connection
requests and assume they came from the legit account owner. Fixes #345
--Fixed implementation of Bresenham's Line Algorithm to handle cases where y
changes faster than x (vertically-oriented lines). This fixes blocked kill
shots and long-distance item uses from tight vertical angles. Fixes #350
--Fixed rounding issues that could affect fitness ranking. Fixes #351
--Fixed so that you can swap held items into full clothing containers.
Fixes #353
--Getting fed by someone else can never break your YUM chain. Getting fed a
yummy food by someone else will increase your chain and give you the normal
bonus. Getting fed a MEH food will not affect your chain, but you won't get
the bonus. This means you can't grief someone's YUM chain, and through
collaboration, you can preserve each other's YUM chains while waiting for
more yummy foods to be available. Fixes #354
--Fixed so that baby carried away from AM transmitter doesn't still transmit
voice. Fixes #355
Version 246 2019-July-5
--Fixed crash if email blank on login screen when score fetch attempted.
--Fixed suffix for 11th, 12th, and 13th rankings. Thanks Twisted.
--Fixed client ignoring DENIED from fitness server.
--Can now swap items in a full container. Related to #340
--Right-clicking bare ground near an object while on a horse now swaps the
horse with that object, making it consistent with other swapping behavior.
Related to #340
--Fixed character getting stuck in eating animation when double-clicking to
eat. This potentially also fixes moonwalking, but I haven't confirmed that.
Related to #309
--Fixed so that new graves correctly replace vanished graves at same location.
Fixes #343 Thanks Twisted.
--Added additional movement fix to Justin L's previous pull request.
--Fixed double sound playing (2x as loud, with phase interference) when putting
on clothing that contains something.
--Added support for red ! speech balloon to accompany certain important off
screen sounds (like murder scream). Fixes #349
Server Fixes
--DIE babies don't affect genetic score of their ancestors (but affect
--Fixed bug in interleaving of requests to genetic fitness server, resulting in
stale sequence numbers (and thus offspring not getting logged properly).
--Eves and tutorial players no longer contribute to a player's genetic score.
--Fitness server now discards old offspring records and lives that have fallen
off the end of client's display lists anyway.
--Fixed rare case of visually changing biome. Fixes #341 Thanks Alec Y.
--Blocked default transitions from happening at a distance, to prevent modded
clients from using distant-use objects (like bows and arrows) to open doors
at a distance. Fixes #342
--Fixed objects getting stuck between decay transitions when you walk away and
come back (before, touching the object would finally trigger the pending
transition). Fixes #337
--Handle a special clothing removal case more intelligently. If left-click
does a special clothing action (like remove sword), then it used to be
impossible to take off the clothing (without doing the special action first),
because right-click was reserved for removing stuff from clothing. Now, if
clothing slots are empty, and left-click maps to a special clothing action,
right-click will remove the clothing. Note that it's still impossible to
remove clothing with full slots that also has a special bare-hand action
(because right and left click both do something already).
--Fixed row index in lineage server. Fixes #348
Version 245 2019-June-28
--Support for new genetic fitness score across lives, ranking, leaderboard,
and genetic history display inside client.
Server Fixes
--Whoops... totally forgot to update killEmotionIndex.ini server setting.
Murder Mouth should work now.
Version 243 2019-June-21
--Better randomization (less repetative) of multi-sound sets by shuffling
sounds, playing them in that order, and then reshuffling (instead of picking
a different random sound each time, which can lead to lots of repeats).
--Support in editor for pasting a single sound onto the end of a sound set
without replacing it.
--Client can now play animation sounds from a character's emote.
--8/12 display for lives remaining (suggested by Dodge).
--Finally fixed lurking wrong-grave-info bug (triggered when you swap a bone
basket with something that's on the ground where an old grave has already
decayed away). Fixes #338
Server Fixes
--Fixed issues with other forced-emots (like snowball splats) interruping the
KILL-state angry face. Now the angry face comes back when the snowball splat
--Admin funciton for restoring all tokens back to starting level (useful before
servers restart).
Version 242 2019-June-19
--Client support for in-game poll feature.
Server Fixes
--Fixed a crash when a baby tries to take a sword out of a backpack they are
Version 240 2019-June-14
--Fixed so that lives-left text never overlaps with re-detect or custom-server-
disable buttons on login page. Fixed so that re-dectect button doesn't
linger after visiting settings page triggers a re-measure of FPS.
--There are now both Retry and Re-detect buttons when FPS mismatch occurs,
allowing you to re-measure right then and there without restarting the game.
We don't keep re-measuring every time we return to this screen, speeding up
player login. We wait to fetch life token data from the server until after
the first FPS measurement is over, to avoid networking hiccups messing up the
measurment. Fixes #330
--Fixed memory leak. Fixes #322
--Fixed so that if you click on an object that is surrounded NSEW but still
accessible, you walk there, to that object's spot, and interact with it,
instead of just walking there. Fixes #318
--Protocol now includes lineageEveID with lineage and grave messages so that
client can show DISTANT RELATIVE for relatives and graves that are further
away than the 20 generation cuttoff. Fixes #317
--Fixed memory leak in killMessage. Fixes #311
--New /DISCONNECT command in client for testing.
--Added support for sprites that disappear when an object is contained.
Fixes #282
Server Fixes
--Fixed so that empty tiles that used to contain a natural object are restored
when map is culled back to natural state. Thanks Alec. Fixes #332
--Reduced map database pollution with unecessary 0-values (before, we would
clear a tile's contained items, setting its num-contained to 0 in the db,
every time an item was picked up from that tile, even if the item that was
picked up contained nothing---now, we check that there are contained items
there to clear before clearing them and inserting a 0 for num contained in
the database). This cuts the number of database entries in half in many
situations (thus reducing the disk size of the database dramatically).
--If you disconnect and reconnect when you have 0 lives left, you are no longer
blocked from logging in to resume your last life.
--Fixed bug where you could enter the kill-intent state against family members
when holding the sword, and if you ever got close enough, the server would
generate an endless flood of update messages for the failed kill action,
overload network connections, and leading to disconnects. Now you can't even
enter the kill-intent state if the weapon you are holding is not applicable
to your target. Thanks Laccy. Fixes #320
--Can no longer trigger a transition for warn clothing that takes it to an
unwearable state (for example, hitting crown with hammer to turn it back into
an ingot while you're still wearing it). Fixes #310
--No more tutorial players in name logs. Fixes #333
--Fixed typo in square root of two in server code. Fixes #325
--Fixed disappearing springs caused by map cache not being aware of grid
placement status. Fixes #319
--Trees and other permanent objects regrowing destroy sections of underlying
roads in natural reclamation. However, surface non-permanent natural objects
(stones, iron, etc.) will re-occur on top of the road. Fixes #334
--No language barriers on low-pop servers. Fixes #314
--Making sure REMV action is grid adjacent. Fixes #312
--Monument stats include year now. Fixes #307
--Fixed calculation of distance for fleeing/chasing animal movement. Fixes #306
--If you quit the client to disconnect and then reconnect as a twin, it will
now kill your old self to make room for your twin (it used to confusingly
reconnect you to your old life, and let your partner through as a lone twin).
Fixes #305
--Fixed cause of ghost players who just stand there but aren't really there.
Fixes #299
--Smarter code when swapping shoes. Swaps held shoe with non-matching shoe
first, and if both shoes are non-matching, pays attention to which shoe you
clicked on. Fixes #297
--If name of Eve or baby not unique within past two hours on server, closest
unique name chosen instead. No more roman numeral suffixes. Fixes #283
Version 238 2019-June-8
--Support for limited number of life tokens per player, with more tokens
earned every hour that passes.
Server Fixes
--We now add a new Eve whenever existing families have more than 15 players
each on average.
--Lineage server trims newlines from death cause description.
--People without last names can be cursed. Fixes #302
--Fixed a memory leak in murderPerpEmail.
--Support for 'kill' result emots that are non-lethal and don't make you drop
what you are holding through new no_replace tag. Snowball splats now work
this way.
--Stone road not culled (allong with stone walls) during map reclamation by
--Rolled back change 7292535f9fca5333bff52f3ba9038b530ea77273, so max birth
cooldown is 5 minutes again.
--Rolled back changes 10e9b49dca89cd9e50895a883a0e98c9ab9e0f89 and
b33eae6c249103b32b4c0163bb5fe1e57c1d3a35, so mother's birth cooldown only
resets if she picked up a SIDS baby, and doesn't reset if most recent baby
died due to neglect.
--Partially rolled back change 2419cdf75a3d64d2c637851434763c84efdd7649 so that
suicide triggers area ban like it did before, but family skip list is still
functioning too. Thus, suicide has a compound effect of making you skip the
family until you run out of families AND ban yourself from that area.
Figured leaving skip list code in place for now is fine, instead of tearing
it out completely.
--Disabled latest Eve spring grid placement close to civ, and re-enabled old
Eve spiral.
--New Eve spiral behavior: If center of spiral hasn't been seen in a long
enough time that it has likely been culled, we restart the spiral again from
the center. This prevents the spiral from getting endlessly bigger, and
brings Eves closer together again periodically, as the center of the map gets
Version 235 2019-May-29
--Fixed one cause of rubber-banding player movement in client. No need to
navigate all the way back to start of a new path sent by server if we're
closer to a spot in the middle of the path.
--Fixed so that other players never slow down in their movement to match
server timing, but still speed up if necessary. (It's always okay for
another player to arrive at their destination early, client-side.)
Server Fixes
--Changes to function of /DIE. Can no longer use it to cycle through all
families and force yourself to be an unecessary Eve. Eve only spawns if
there are really no available motehrs for an incoming baby. /DIE adds this
family to your family skip list. If you eventually cycle through all
families, so that you've skipped them all, and none are left, your skip list
is cleared.
--When the server has 15 or more simultaneous players, 200 map database entries
are examined every periodic server step (4x per second), and any entries in
regions that have not been seen by players in 8 hours are set back to their
natural state. Depending on the size of the database, walking through all
entries can take quite a while (the current bigserver2 database has 25
million entries, so that would take 8 hours at the current rate). Thus, the
actual decay-back-to-nature time will be at least 8 hours, due to the time it
takes to walk through all database entries. Also, a group of tiles will
potentially clear in an uneven sequence, based on their order in the
database. Thus, partial ruins are possible.
--Don't spawn non-cursed Eve near donkey town.
--Always reset mother's birth cool down if baby does /DIE, whether ever held
or not.
--Mother's birth cool-down instantly resets when her most-recent baby dies of
any cause.
--Max birth cool-down for mother is 3 minutes instead of 5 (mean 1.2 minutes
instead of 2 minutes).
--Ancient stone walls are left standing during 8-hour-no-look map culling.
Version 234 2019-May-25
--Fixed long-standing bug when something decays in the hand of a moving player,
causing a bad player update message to get sent, making their position revert
on other clients.
--On SHIFT-click to kill, allow missing by up to four tiles (finding closest
person and calling them the target) to avoid the annoying "drop your weapon
by accident" game when you're trying to click on a moving target.
--Fixed long-standing bug that would defer mid-move player change until after
their move completed.
Server Fixes:
--Query times listed on front page of family tree server.
--Reduced server step time to 1/10 sec max if there are active kill requests
pending, so that even on servers with very few players, kills happen
instantly when players cross paths.
--Added a work-around for a bug in move path validation that was causing valid
moves to get rejected by server. Fixed check for diagonal adjacent.
Version 231 2019-May-23
--Tiles that are drawn as non-flipped remember their non-flipped status, even
if they change to flippable tiles later (so they don't flip back and forth
in an unappealing way).
--Client supports new KILL message semantics.
--Fixed a glitch where other players showed doing animation when their held
object passively changed.
--Fixed glitch on auto-click at the end of very short paths.
--Applied fixes for various movement glitches. Thanks Justin L.
--KILL action now requires SHIFT key held. Instruction image updated.
Server Fixes:
--Fixed bug in deletion of underlying object if grave marker has no slots.
--Increased name match limit in family tree search to 30,000, and ensuring
performance by forcing use of name column as index in all name queries.
--Code that accepts KILL command is more liberal in case of a moving target.
Now it's very hard to miss with the bow, assuming that the target is within
range and you actually click on them client-side.
--Fixed so that use-on-bare-ground objects that are groundOnly can't be used on
--Added a script to automate end-user installation of a private server on Linux.
--Fixed so that Eves don't spawn near tutorial town.
--Fixed so that VOG doesn't see language-mapped phrases.
--Fixed so that spring placement not blocked by objects to the south.
--Improved thermal model for buildings. Now using a 13x13 heat grid instead of
8x8, to support larger buildings. We now detect a binary indoor/outdoor
property for each player, based on being completely surrounded by walls,
floors, and closed doors. If indoors, the effect of a cold environment is
halved, and the effect of clothing to protect from cold environments is
--Changed semantics of player KILL action server-side. Instead of an
instantaneous action based on player proximity that either succeeds or fails,
the server remembers that the player is trying to kill that other player and
forces an angry emote for their face. If they ever get within range of the
target player, the kill action is executed. The kill state will get canceled
if they drop their weapon, target someone else, or if their target dies of
other causes. Essentially, once you set a quest for blood on another player,
if you ever cross paths with them, it will happen. This dramatically reduces
the effectiveness of dancing around, but doesn't undercut the advantage of
range weapons (you can still run away from an attacker). If two players
attempt to kill each other simultaneously, the player that was put into the
kill state first will succeed, if the players ever cross paths.
--Fixed missing fseek between fread and fwrite calls. Thanks Justin L.
Related to pull request #268
--Fixed bug in param order in call to getClosestOtherPlayer.
--If you didn't inherit a family name at birth, you get the family name of
whoever is holding you when they name you. Related to #227
--Standardized other-person-naming code, whether for held baby, or non-held,
currently-nameless adult. Baby inherits the family name of their mother at
birth, or the family name of their namer otherwise. Family name can differ
from last name, depending on who named you, but your family name will
resurface later down the line as a last name if your last name is lost.
Fixes #277
Version 228 2019-May-16
--Abbreviating more than 4 GREATS in grave names as 5X GREAT so that it doesn't
go off the edge of the screen.
--Eve placed in random location at radius around spring, with home arrow
pointing back to spring. Client searches for initial home arrow further
away, maybe way off screen, than before.
Server Fixes:
--Timeout to re-use previously-used Eve spring locations is 1 hour instead of 3.
--New map, with bug fix, too dense. Restored old map spacing.
--Fixed bug in Eve grid placement that caused resorting to old spriral.
Fixes #303
--Fixed so that trying to add food to a full backpack doesn't make you eat
it by accident. Fixes #304
--Support for on-worn-clothing transitions and bare-hand-on-worn-clothing
transitions to allow sword to be added and removed from backpack in a more
visible spot (not contained).
--Fixed rare server crash when a player connection breaks in middle of a
multi-speech message server frame. All speech messages from the frame
should be sent in one message.
--Lineage server catches character name searches that match too many names, to
avoid overly long query times.
--Map wiping script now checks ~/skipMapWipe.txt file, so certain servers can
be flagged as never wiping.
--More dense Eve packing by instant-reusing spring sites for dead Eve lineages.
--Lineage ban now lasts 1.5 hours of living in game, or 3 hours max, even if
not living in game (used to be 24 hours if not living in game).
--Fixed major array-bounds bug if you die and drop something in a crowded area.
--Babies can now learn other languages that are spoken around them before age 3.
--Babies inherit whatever portion of another language their mother learned
while she was a baby. Thus, accents disappear trans-generationally,
assuming that each new baby is exposed to even more of the language before
age 3.
--Upped the learning window to age 6. Three years with mom, three years
wandering the village to hear others speaking.
--Fixed bug that prevented eating when clicking on clothing with no slots.
--Support for special DIE baby grave, on ground or held, that can decay faster.
--If you put a sword-backpack on a baby, they can no longer draw the sword.
--Eve grid search centered around some living person, chosen at random.
Becasue big towns have more people, they will end up with more Eves around
Version 223 2019-May-10
--Fixed bug that was causing inherited home marker position (closest marker
visible on screen during spawn) to get deleted.
Server Fixes:
--Manually-triggered server object survey (objects around living players).
--Handled case where ticket server check not required, and thus curse status of
player might be unknown (birth of a baby was blocked in that case, forcing
all players to be Eve).
--Fixed bug in unblocked path detection that was allowing arrows to shoot
through walls on diagonals. Thanks Tarr.
--Different Eve lines speak different languages with bi-directional filter.
--New Eve placement on natural spring grid, with auto-home-marker for Eve.
--childSameRaceLikelihood now 100%. Races with 3 members are not forced to
have children of the neighboring race.
--Support for deadly objects that work on other family only.
Version 221 2019-May-5
--Server now reports death-age in GRAVE_OLD message, and client now displays
how long person has been dead on grave mouse-over.
--Temporarily disable mushroom sprite remap effect when taking photos.
--PaperThreshold slider in import editor allows better control of feathering on
transparent sprite edges.
--New protocol for server to tell client about valley spacing.
Server Fixes:
--Daily mass disconnect issue: rolling the servers log.txt over was using a
copy operation, and for a 2.9 GB log file, this was stalling the server for
20 seconds. Switched to a move operation instead, which is instantaneous.
--Fixed a bunch of bugs in way old graves and moving graves are tracked.
--Map pull mode now deals in absolute coordinates.
--Map pull mode now prevents player starvation.
--Fixed bug in removing owners that was causing the OW message detailing
ownership change to be sent over and over (every server frame, which can be
hundreds of times per second) during the 5-second grace period before we
disconnect the dead player. This overloaded the socket buffer for clients,
causing them to disconnect. Fixes #286
--Support for gridPlacement objects that are spread evenly on map (ponds).
--Fixed RIDICULOUS bug in map placement algorithm (that was mis-measuring tall
objects to the south that would block placement of short objects, effectively
blocking placement of short objects in the two tiles to the north of any
object that sticks up above the tile center). Map is now much fuller than it
used to be.
Version 219 2019-April-27
--Fixed bug that cause chat sheet to not appear if another field was focused.
Was caused by VOG code.
--Copying an off-screen player's flip orientation when insta-dropping an
--Copying a player's flip orientation when use-on-bare-ground with a non-
permanent result.
Server Fixes:
--You can no longer curses someone by name after they've been dead for 5
--You can only curse your own family members, not people from other lines.
--Fixed coordinate leak in initial PM message.
Version 216 2019-April-19
--Fixed long-standing bug in transition generation when both actor and target
have uses but one of them is marked as noUse (example: digging potatoes
without using shovel).
--Server and client support for owned property gates, and assigning ownership
verbally to other players by name or by YOU for nearby players. Mouse over
gate for name of closest owner.
Server Fixes:
--Bare-hand actions no longer reset decay time if new object decays in same
amount of time as old object (even if they decay into different things).
Version 215 2019-April-5
--Object editor supports pasting color over all sprites in object.
--Fixed bug causing some category-based transitions to not show up in editor.
--Sprite Trim Editor no longer clears trim when subsprites saved.
--Fixed client-side bug when two graves are "in the air" simultaneously and
swap positions on the ground, which resulted in one of the grave's info being
--Support for mousing over old graves from people who died before your birth.
Server Fixes:
--Fixed bug that skipped heat map recomputation if number of players on server
--Lineage server shows tables of deep roots.
--Family name sticks with you even if your mother is nameless or doesn't name
Version 212 2019-March-29
--Fixed bug in regular-click on permanent containers mapping to REMV always,
even if container has a bare-hand action (like horse cart). Fixes #261
--Client provides account key hmac in lineage server URL.
--Special case of object sprite subset detection (where sub object has a single
sprite, it is a subset even if there are rotations, flips, or translations in
the super-object). Example: removing onion from plate.
Server Fixes:
--Temporarily taking public life log data offline. Will move it to a separate
server when I return from GDC.
--Temporary fix server-side for client basket and horse cart bug.
--Rolled back server-side temp fix, now that client-side fix is in place.
--Animals no longer spawn outside of their target biomes (along biome
boundaries). No more mosquitos in desert, seals in jungle. Fixes #260
--Lineage server now requires account key hmac along with email search to
verify email ownership and protect privacy. (Disabled for now until client
--Default server setting (settings/remoteReport.ini = 0) now avoids reporting
to central curse, lineage, and review servers. This one setting overrides
all others that control reporting. People who are running vanilla server
code will no longer be hammering my servers with bad requests.
Version 211 2019-March-16
--Fixed overlay negative scaling check in EditorImportPage. Thanks Chard.
Fixes #243
--scanf calls in soundBank and spriteBank were using .txt file extensions.
--Added work-around for corrupted bin_cache files instead of crashing.
--100 Hz added to possible frame rates.
--Left or right click now works to remove specific item from permanent
container. Fixes #257
--Support for sounds in emot objects.
Server Fixes:
--Fixed crash when player clicks to remove default object from container.
--No babies born to vog player. Fixes #244
--Fixed so that lastCheckedBiome is correct, in certain cases where we call
getBaseMap for neighboring cells too. Thanks Chard. Fixes #245. Fixes #246
--Fixed so that on-chunk vog players do not become visible when walking onto a
map chunk.
--Min rebirth distance reduced from 2000 down to 200. Eve spiral jump radius
is currently 250, so as the eve spiral passed near established towns, that
Eve would be blocked from giving birth to players who lived recently in the
nearby town. 2000 was too large. 200 is large enough to prevent you from
being in born in the same specific town over and over, even if there are
multiple family lines in that town.
--Clothing thermal model reworked to make it more intuitive. Before, because
clothing held in body heat, which was added each sim step, additional
clothing had a non-linear effect on your steady-state temperature. Adding or
removing one shoe could dramatically change your temperature. Now, no body
heat is added each sim step. Instead, the R-value of your clothing outfit
closes the gap between your environment's temperature and your ideal
temperature, but only in cold environments. A perfect set of clothing with
an R-value of 1.0 would bring a cold environment twice as close to perfect as
it would be without clothing. In other words, clothing alone gets you
half-way to perfect now in cold environments. This effect is additve and
linear, so in a cold environment, each piece of clothing that you add makes
you a little bit warmer. Also, the clothing R value still slows your
temperature change, but only if your environment is further from perfect than
your current temperature. If you move into a more perfect environment (like
standing by a fire), your clothing will not slow down your temperature change
to more perfect. But when you move to a less perfect environment, it will
slow down your temperature change.
--Prevented relative position leaking for far-away player in initial player
update message. Also fixed for far-away grave messages. Fixes #251
--Support for forbidden emot indices right in middle of list instead of just at
end of list.
Version 206 2019-March-1
--Game client now prints version number on startup.
--Client and editor no longer fight each other over bin_cache version numbers.
--Fixed so client left/right mouse differentation for pick-up vs. modify (like
for stacks of bowls) only kicks in if the modify transition is a true
modification, leaving something on the ground, and not just a pick-up change.
This, in turn, fixes picking up piglets so that they go into their held
state. Fixes #240
--Made walking-on-road behavior consistent if blocking object intersects. Now
you always stop, instead of routing around in a poorly defined way and
changing speed. Fixes #242
Server Fixes:
--Fixed server crash due to not checking player disconnected status in one spot
before sending a message to their socket.
--Lineage limit now applies to birth location instead of family line, to deal
with multi-family towns (or twin-Eve founded towns). After living a
substantial life, cannot be born within 2000 tiles of that birth location
until enough time has been spent living in other areas. Fixes #222
--Removed some redundant code triggered when a permanent held object is swapped
with something on the ground. This code was causing an extra transition step
to happen, making a horse's lasso disappear, for example. Fixes #233
--Fixed incorrect variable declaration location in lineage server.
--Compounded snowball splats are no longer deadly. Fixes #235
--Container removes and swaps now skips any item that player is not old enough
to hold (knife on top of backpack no longer blocks access to other items).
Fixes #238
--Now you don't die until your food goes negative, making empty-hunger-bar
behavior consistent when you starve down to 0 or nurse down to 0. When your
hunger bar shows 0, you still have one pip's worth of time before death. You
only die when it is decremented FROM 0. This also gives you a bit of extra
warning time, generally. Fixes #241
Version 204 2019-February-22
--Oh jeez... gotta fopen files in binary mode on Windows.
--Old bin_cache files need to be cleared after each update. New implementation
that uses latest version number in file name.
Version 202 2019-February-22
--Client prints stat about fraction of total sprites loaded.
--Dramatic speed up to client load time. Pre-loading all sprites before LOGIN
screen shown from a single compressed cache file (used to load sprites from
separate files as-needed at map load time). Now map loads almost instantly.
--Same compressed cache file technique for sounds and reverbs before LOGIN.
Now the map loads instantly, since all assets are pre-loaded.
--Hid LOADING MAP progress bar screen in client, since it's no longer needed.
--Fix so that starting to cry again does not clear yellow color from yellow
fever on baby (emotes in general are fine when crying, becasue crying baby
doesn't have offical mouth or eyes that facial emots can hook onto, but
blushing can still work). Fixes #231
Server Fixes
--Fixed crash caused by wayward deletion of new sequence number string in twin
--Fixed clothing biome boundary dancing exploit (crossing boundary between
hot/cold biome will never make you more comfortable (closer to target middle
temp) than you were before crossing). Clothing still reduces thermal shock
from crossing biome boundaries, but only if you are already closer to target
temp than thermal shock on other side of temp meter. So if you are close to
perfect, wearing clothing will help a lot when you cross a biome boundary
from cold to hot. If you are currently freezing (and in clothes), the
clothing won't help much when you cross into a hot biome to reduce shock.
--Body heat now only applies in cold environments, so it won't cause
overheating when wearing clothes in hot environments (clothes slow how fast
you heat up in the hot environment, but don't hurt you by making you even
hotter after you acclimate).
--If client sends malformed message, we now disconnect them instead of killing
them. Related to #194.
--If client sends more than 200 character without sending a message terminator,
we treat this as a malformed message (to prevent a rogue client from filling
up the buffer on the server).
--/DIE command now works even if you're not held, and clears mother's birth
cooldown if she ever picked up up at least once. Fixes #194
--/DIE command now works up to age 2, to compensate for slow map load times on
some machines.
--Donkeytown threshold (which was fixed at a current curse score of 8 before)
now goes down as a player's total curse score rises. Once they hit 25 total
points, it goes down to 7. At 55, it goes down to 6. At 65 down to 4. And
75 down to 3. Note that there are only 27 people in the game with a total
curse score of 55 or more. A very tiny sliver of the total player
population. So, we now wait for the worst players to anger fewer people
before sending them to Donkeytown. Fixes #204
--Age rate (secondsPerYear) is now an adjustable server setting.
--Simplified thermal shock code in a way that reduces its impact. Now when
crossing from a too-cool to a too-hot biome (or vice versa), you shock to the
mirror-image position on the temperature meter. Clothing no longer affects
this. After flip-flopping on the temperature meter, you then gradually go up
(or down) towards the biome's target temperature. This gradual change is
slowed by clothing, as usual. This means that crossing a biome boundary will
never cause a sudden increase in your hunger rate.
--Lineage bans now affect all twins. If one twin cannot be born in this line,
then none of them can. Fixes #221
--Snowballs in backpack no longer push body temp off the negative end of the
scale. Clothing heat and held-item heat now handled in a more sensible way.
Fixes #226
Version 199 2019-February-15
--Scene editor allows copy/paste of area containing floor and people.
--Updated tutorial to explain new heat system.
Version 198 2019-February-9
--Client preparing for furture protocol change where SN message contains an
opaque string (including a random nonce) instead of a number.
--Home markers, which are invalid after flight, are cleared.
--/NET command to display network load stats in client.
--/FPS and /NET commands now show history graphs (last 100 seconds).
--FINALLY fixed a lurking source of client network lag, caused by the way that
message frame batches were processed (while processing messages that are part
of a frame, no message was processed, even if the entire frame was available,
meaning that the number of display frames spent processing a message frame
grows relative to the number of messages in the frame. As frame rate drops
on slower computers, this causes a message backlog to build up, especially in
busy areas where there are lots of things happening every message frame. We
now process all available messages while we're waiting for the end of a frame
to arrive. Thanks to jrudolf for pinpointing the cause of this issue.
Fixes #125
Server Fixes
--Paginated lineage server log listing.
--Lineage log has index for faster display. Better logging.
--Whoops! New server setup script was not putting serverID in right location.
--Download page lets you change your own email.
--Min-distance-at-speed for takeoff reduced to 2 (was 4) to make take-off
--Made take-off at end of road explicit, so that you always go all the way to
the end in one direction before taking off.
--Basket swap in a larger container wasn't working if both baskets contained
same number of items. Fixes #217
--Reflector fixed to update OFFLINE status of servers every 20 seconds, even
when report isn't being loaded (before, only report would trigger an update
to OFFLINE status of a server).
--Nearby landing pads no longer block eachother. Instead, when taking off, we
search for some pad in the chosen direction that is at least 250 away in
either x or y.
--Partially-used objects are not restored to stale parts of map. Fixes #206
--Server must update birth location of flying player to ensure that coordinates
remain in low range to avoid GPU rounding errors (i.e., in case where player
flies out to tutorial at coordinate x=10M).
--Players that were out of range before flight may come in range after flight.
Server now sends a complete server-wide PU to flying player (the same as when
player first connects), updated with new birth location (landing location).
--Calculating distance-squared when finding closest flight landing position now
double precision (using ints isn't going to work for distances above about
--Better logging of maxPlacementX and flights.
--Heat overhaul: R values stack multiplicatively, not additively.
--Heat overhaul: Separate fixed heat map produced by underlying biome
(biomes no longer generate or absorb heat each step).
--Heat overhaul: Biome temperature serves as starting air heat value for each
cell in the simulation grid.
--Heat overhaul: Floor insulates between air and underlying biome.
--Heat overhaul: Air itself has a small R value to slow base propagation
per sim step.
--Heat overhaul: Biome temperature fixed at edge of simulation grid, instead
of having a fixed 0.00 temperature sink at edge.
--Heat overhaul: Heat produced by clothing (not currently used) summed as a
separate step at the end, and doesn't count as a heat source in the
environmental simulation grid.
--Heat overhaul: Player clothing simulated as separate step at the end, after
simulating environmental propagation grid.
--Problem: if tutorial is always placed at 2x max birth location, then if
people fly to the tutorial and have a baby there repeatedly, the tutorial
location grows exponentially. Saw 10M, 20M, 40M, 80M, 160M, 320M in server
log as people continued flying to tutorial and having babies there. It will
quickly overflow. Now it is max birth location +400,000, so it grows
linearly if people fly there and have babies there. People can "chase" the
tutorial area 5000 times before we need to worry about overflow.
--Fixed additional int overflows in server distance functions by switching to
double precision. This was potentially causing distant map changes to be
sent to a player unecessarily, eating up bandwidth.
--Heat overhaul: Player clothing now modulates how fast player body
temperature moves toward surrounding temperature.
--Server implementation of SN protocol change, where we have a non-repeating
nonce based on a server-side secret, instead of a simple sequence number.
This fixes a potential security hole where private servers can harvest
sequence-number/hash pairs and replay them to log into the real server as
that player.
--Heat overhaul: replaced simulation of cellular atomata heat grid with even
heat spreading over enclosed airspace via convection and direct radiant heat
based on distance from each heat source in airspace. Still using 8x8 grid to
measure airspace, which might fall short in larger buildings, but still feels
much more intuitive than old system. Biome heat contribution is also added
int from player's position as a final step, so there's no biome boundary
--Heat overhaul: moving to a temperature-affecting biome that is on the
opposite side of "perfect" from you results in an instantaneous temperature
shock, jumping to that side of the temp meter instead of tweening there
through perfect. This makes biome-boundary-dancing ineffective. This
effect is modulated by clothing though (it reduces the shock of stepping
into the arctic or desert).
--Heat overhaul: changed the mechanisms of fever. Instead of heat produced by
a held object (same as holding a hot coal or whatever), where it would be
modulated by clothing R value (or in the old system, contained by it), heat
from fever is a separate quantity that gets added in after all head
computations for player. Thermal shock reduction, based on clothing, is
also disabled when you have a fever (so there's no punishment for wearing
clothes when you head to the snow to cool the fever off).
Version 195 2019-January-31
--Changed projection for drawn mouse pointer (to further fix behavior on
--Tutorial draws attention to vertical doors, which are hard to see. Tutorial
intro explains time commitment and gives death warning. More explanation of
YUM and MEH.
--Editor supports baking sprites that include color-adjusted sprite layers.
--Support for long-distance flying.
Server Fixes
--Reflector changed so that server assignment is not sticky for a given email
address. Each new life is a random re-roll among available servers.
--Added birth location offsets to AM receiver message positions.
--Reflector fixed so that offline servers aren't counted when summing current
active server totals.
--Reflector now picks from weighted distribution of actually-alive set of
servers, if some of the servers in the active set are offline. Last-ditch
effort code added to find SOME server for the player, if the weighted picking
fails for whatever reason.
--Optimization: Don't need to do select at all on receive if timeout 0
(using MSG_DONTWAIT anyway). select was found to be a hotspot with profiler.
--Optimization: Profiler found 26% of non-idle time spent recomputing heat
maps. We were taking another step through list of players each time new
messages arrived, meaning that we were looping through them faster and faster
during busy times (in one estimate, processing heat maps for 130 players
every second). Now we process them at a fixed max rate, regardless of
incoming message rate, of 2 players every 0.1 seconds (20 players per second
during active times).
--Optimization: Exposed getMapObjectRaw externally so recomputeHeatMap can use
it to avoid wasting cycles checking for decaying objects.
--Optimization: We were checking what each player was crossing every server
step (and server steps happen faster and faster as the inbound message rate
increases). Fixed to only check what a player is crossing every 0.25 seconds.
--Removed a wayward continue.
--Optimization: Don't check curse settings every stepCurses call.
--Optimization: Only execute certain non-reactive parts of server step loop
once every 0.25 seconds at most, not every loop (loop can run very fast when
a lot of messages are coming in.
--Check in server code and cron job for read-only file system.
--Recomputing heat map for 20 players per second was a little slow. With 200
players, that means each player only gets their heat map updated every 10
seconds. Upped it to 80 players per second (each player gets updated every
2.5 seconds when there are 200 players). Also shrunk dimensions of heat map
from 10x10 down to 8x8 (64% of original size, thus lowering computation load).
--A bunch of places in code were calling computePartialMoveSpot without
checking whether player is moving first. This allows a stale move path to
get queried when player no longer moving (example: flight destination
Version 193 2019-January-17
--Code for transmission of speech through speech pipe objects.
Version 190 2019-January-11
--Fixed so that client sends correct number of tokens for LOGIN with blank
email. Thanks Andrew K.
--Added support for global triggers (for radio transmission).
Server Fixes
--Whoops... new reflector code was still using 50/50 coin flips for spreading
servers, causing some players to fall of the end of the list and find no
server to connect to. Fixes #191
Version 188 2019-January-4
--Fixed swap of baskets with different numbers of items in a larger container.
Fixes #184
--Fixed tutorial wording to avoid confusion about Eve. Fixes #185
--Min age for default actions (open door, rouse bear) now 3. Fixes #186
--On reconnect, don't clear home markers unless we see a new player ID.
Fixes #188
--/DIE command no longer blocks crafting hints for DIE when older than 2.
Fixes #189
--Tutorial button on main menu page (appears after you beat tutorial).
Fixes #190
Version 187 2019-January-3
--Snowball splat face emote fixed. Forgot to commit the emotionObjects.ini
settings file. Fixes #177
--No more jaundice glitch on hat or apron. Fixes #172
Server Fixes
--Improved reflector code to spread players evenly amoung active servers
(thanks CrazyEddie). Fixes #171
--Wounds, like animal bites, can now replace sickness (though effects of
sickness are not eliminated until wound is fully healed). Fixes #162
--Missing global variable in curse server.
--Fixed so that forced-drop when moving (when attacked by animal) drops
relative to current position and not destination. Fixes #165
--Fixed so that locks/keys don't revert to ? state when they reside in a
container during server shutdown. Fixes #180
Version 185 2018-December-27
--Survivable apocalypse (full map wipe while players are still alive) that
doesn't spread to other servers.
--Eve old-age death-location respawn blocked if there are 4 or more fertile
females on server. That is supposed to be a solo-play mechanic.
--Whoa! Huge bug in Eve death location for Eve respawn. Was not actually
using her death location, but instead the weighted average of recent
placements on the map. This would make her respawn in some other
more-developed village later, which is why there was so much player
confusion around this mechanic.
--Again, whoa! Huge bug in temperature-based weighting for mother fertility.
Was using abs instead of fabs in formula, resulting in all mothers having the
same weight, regardless of temperature.
--Added yum-multiplier component to fertility weighting (having the highest yum
multiplier on the server is equivalent in weight to having a perfect-middle
temperature, and having both results in double weight---warm mothers who are
eating a variety of foods will be much more likely to have babies than cold
mono-diet mothers).
--Fixed other places in code where abs was used instead of fabs. These were
likely not causing bugs.
--Fixed bug in server code where apocalypse setting blocked monument triggers.
Version 183 2018-December-20
--Whoops... various headless helper apps failed to compile. Fixed.
--Added /FPS command in client to toggle FPS display while living a life.
--Added /PING command in client for measuring round-trip latency to server.
--Support for additive blend on sprite layers (candle glow).
--When searching for a matching body part, now search top-down instead of
bottom-up (one new character has two sets of eyes in old age, and we want to
find the top ones).
--On inserting one object into another in editor, default to bottom layer of
inserted object as picked layer.
--Support for head layer of emote (on top of everything, like a hat).
--Copy Child Chain in animation editor now copies entire child tree.
--Added version of child tree copy button that randomizes phases.
--More improvements to crafting hint filters. Don't show transition matches
that produce a precursor as an unlisted side-effect (for example, making a
shoe leaves a needle in your hand, but this is irrelevant if you're trying to
craft something that has a needle as a precursor). Don't limit shown
transition based on depth of current object. Instead, cut off precursor
chain search from filter target if chain passes through current object.
This allows us to see that we need to put two pieces of cut rabbit fur
together to make four in order to make bellows (even though four pieces is
shallower in the crafting tree than two pieces).
Server Fixes
--AllowedEmotRange server-side to block clients from manually requesting
jaundice emot. Related to #170.
--Fixed bug in computing decay time for wound.
--Improved semantics of wound-and-weapon transitions in terms of how they
affect what's left in the hand of the perpetrator (wound transition can now
specify a held-weapon change if no other trans is present).
Version 181 2018-December-13
--noFlip object property now affects object drawing deeply, even when object is
contained in a flipped container.
--Fixed so that face portion of emot (e.g., yellow fever face) can be drawn
even if player doesn't currently have a sprite called Eyes (e.g., when they
are a crying baby). Fixes #145
--Mouse-over highlights now shown when mousing over worn clothing. Fixes #146
--Animation editor allows fade osc of 8 hz max (was 6).
--Animation editor can now copy animation from one object to another with
right-click even if they are not exact sprite matches, as long as the source
object is a subset of the target object.
--Animation editor allows all osc of 8 hz max (was 6).
--Added field that allows applying speed multiplier to entire animation.
--Rideable objects can have sprites layers that are drawn behind player.
--Fixed so that objects that are drawn in separate layers are not time updated
twice per frame.
--Fixed issue with game waiting for newly-launched web browser on Linux.
Server Fixes
--randSource for probability transitions (fishing and oil) now seeded with time
instead of fixed seed, so that repeated short-run server testing allows me to
get a feel for a given probability distribution.
Version 177 2018-November-30
--Better client behavior in case of real, 2-way connection break with server.
If we haven't heard anything from server for 10+ seconds, and our action has
been pending for 5+ seconds (bouncing), then declare connection broken. Old
behavior caused it to wait until receiving some kind of message from server
before attempting PING/PONG, so it would wait forever if connection was truly
broken. Note that a truly, truly broken connection would eventually be
detected in the network layer, but this can take a long time. We still need
to deal with 'soft breaks' in a sensible way.
--Improved a bunch of little rough edges in the tutorial. The camera-freezing
section is now much more clear and fool-proof. There are multiple warnings
about the last optional area NOT helping you to pass the tutorial (at least
two recent Steam reviewers got stuck trying to forge an axe, thinking that
was required).
--Finally fixed glitch that causes other player's head to be behind the object
in the tile to the north of them (move truncation bug).
Server Fixes
--Server now clears any objects with names that start with @ at startup
(hotfix for wayward pile category objects in map).
--Fixed so that items contained in baby clothing aren't lost when baby /DIEs.
Fixes #141
Version 174 2018-November-29
--Fixed overlaps in UI of scene editor.
--Scene editor move timing now based on frame count instead of wall-clock time,
so move timing is perfect even when running slower (like when outputting
--SpriteTrim editor now supports freehand trim.
--Huge improvement to mouse interface: when clicking a non-permanent object
(that can be picked up), where a bare-hand action also applies, left/right
buttons now differentiate. Left to pick up, and right to execute the
bare-hand action. This allows single-object stacks (like tortillas, sliced
bread, plates) to be be picked up (left click) or have the top item removed
(right click). Fixes jasonrohrer/OneLifeData7#53
--Fixed edge case of sprite subset detection when zero layers don't match
(fixes shaft creation sound playing when two long shafts are pulled apart).
Server Fixes
--Shrank next Eve jump to 250, down from 500. Smaller Eve spiral, more likely
to be interaction between villages.
--Server skips sending apocalypse check to reflector if apocalypse disabled
--Fixed so that yellow fever doesn't heal wounds (nor does one kind of animal
wound replace another). Fixes #142.
Version 172 2018-November-22
--Client version checking logic fixed to handle case where server binary
version is behind our binary version, but ahead of our data version number.
--Support for drawn (emulated) mouse pointer on ultrawide displays to overcome
mouse coordinate skew. Drawn cursors can also be scaled by end-user, to
further help people in high-res or low-vision situations where the native
SDL pointer (even the 32x32 bigPointer) is too small. See SETTINGS screen.
--FAMILY TREE button on Menu screen that launches a browser to show your
personal recent lives.
Server Fixes
--Reduced timeouts in reflector from 6 seconds total down to 0.25 seconds total
(24x shorter) to reduce the likelihood of 504 gateway meltdown when one server
stops responding.
--Don't live track decays for objects added via mapDummyRecall tracking on
startup. There were close to 200,000 moving animals on the map that were
getting tracked when server1 and server2 started up.
--Skip tracking map changes during initial map cleaning. Avoids activating
motion on escaped horse carts (when they get cleaned as containers).
--Avoid re-adding contained and sub-contained objects if nothing has changed
during map cleaning.
--Fixed busy wait on server when a ticket server request fails but doesn't
close properly.
--Lineage server now supports filtering by email hash (so we can trigger
searches by straight GET to a URL without revealing the user's email in the
address bar).
--Diseases like Yellow Fever no longer compound to shorten death-stagger-time
from a multi-bite. Instead, there is no death stagger time for a disease,
and if you recover before dying from the side effects, you always survive.
However, getting bitten again while sick will still extend your sickness time.
Steam Depot Hotfix
--Gave a bunch of settings files the userconfig Steam attribute. Should fix
the bug where some people need to redo the tutorial after every Steam update.
Version 169 2018-November-18
--Emergency hotfix. We need to be able to update the client ahead of the
server without version mismatch.
Version 168 2018-November-18
--Fixed bug that could result in spurious, false wild bug reports. After
pinging once, and getting a PONG back, we could mistakenly believe that we
had received PONGs to future PINGs.
--Fixed glitch in radio button set (example: twin count selection) where
dragging could select more than one choice or no choices.
--Fixed memory leak when filtering crafting hints.
--Huge improvement to behavior of / crafting filters. Hides all hints when
none relevant, to avoid confusion. Avoids showing recipes that use the
desired object as an ingredient. A bunch of other tweaks that just make the
results more sensible and better.
--Hunger and tutorial chimes now obey SETTINGS sound volume slider.
--Fixed editor to handle baking of rotated non-square sprites correctly.
--Support for emots that have a face and body component.
--Emot protocol supports server setting optional emot ttl.
--Dying protocol supports optional sick flag (so blood not displayed on client).
--Highlight square a bit larger to contain top of rubber tree.
Server Fixes
--Fixed a memory leak when MOVE received while waiting for FORCE-ACK.
--Fixed a memory leak when swapping clothing.
--Fixed server crash when tutorial-twin players reconnect.
--checkIfServerRunning cronjob also makes sure server has sufficient disk
space, and shuts it down gracefully if not.
--Caching of generated PHP from index.php for 2 minutes to reduce CPU load on
web server.
--Hourly generation of failure report was a huge CPU hog (100% CPU for 5
minutes straight). No longer computing entire month (just past two days).
--Fixed server crash from held baby/adult mismatch.
--Server can read emot and food tags from wound description to trigger side
effects of wound (an emot that goes along with it, or a modification to food
Version 167 2018-November-9
--Whoops... Game-breaking windows networking bug.
Version 166 2018-November-9
--Made it harder for Steam users to edit their account details by accident.
Server Fixes
--Improved robustness of networking code. Have seen two server crashes due to
corrupted socket handles being passed into FD_SET. Not sure where the
corruption is coming from, but added a check to ensure handle passed into
FD_SET is well-formed, and bug report outputting code when it's not. No
longer storing socket handles on the heap, which should also help.
Steam Release 2018-November-8
Version 165 2018-November-8
--Tore out the code that always shows the dotted line when held-mouse journey
pathing. Not satisfied with how it looks, and hopefully other solutions will
--Releasing mouse on held-mouse journey now makes you stop exactly where your
character is standing upon release.
--Fixed the way other clients handle PU that is not at end of current path.
Now correctly truncates current path so that character walks to that point.
Version 163 2018-November-7
--Holding SPACE freezes camera on the current map area. Useful when moving
back and forth between a small group of nearby objects (like when forging) so
that you can click things more quickly and precisely (camera movement
interferes with your efforts to position the mouse).
--Now showing dotted lines and X on path destination any time we're in
held-mouse long-travel mode, even if the path is in a straight line with no
detours. This allows the user to predict and understand the behavior.
--Fixed issue with auto-clicking during held-mouse travel when auto-click lands
on top of a tall object (was finding closest cell at base of tall object,
causing path to veer off course).
--Moved biome tiles down and over by 32 pixels so that they line up with
actual tile boundaries.
--Added special case logic that makes you stand behind a berry bush (or