another one IVAN fork

Feb 13, 11:55 pm
Joined: Dec 3, 2007
Occupation: Chaos Weaver
Location: Standing between all life and death
Posts: 2,913
vasiliy wrote
it would be interesting to use IVAN engine for some postapoc RL, though.

and we now have some kind of ranged weapons — we can throw things! this is more than enough, i believe. especially considering that in k8I you can throw armed mine or bear trap. throwing mines at Jenny is fun!

Going off on that tangent, the idea for a prehistoric setting was once discussed.
Uchuudonge wrote
creating stable chaos
making patterns where there should be none
sewing order into the chaos
you spit in the face of random numbers, of chaos
Feb 14, 2:39 am
Joined: Sep 3, 2024
Occupation: Childcare Provider
Location: Victoria, British Columbia
Interests: Retro gaming, retro computers, TTRPGS, painting and crafting miniatures and terrain, wargames
Posts: 30
vasiliy wrote
it would be interesting to use IVAN engine for some postapoc RL, though.
that would be amazing lol. though i still wouldn't do many ranged, I know guns are always part of post apoc stuff but I'm in Canada and get fatigued with guns in games lol

Quote
and we now have some kind of ranged weapons — we can throw things! this is more than enough, i believe. especially considering that in k8I you can throw armed mine or bear trap. throwing mines at Jenny is fun!
I can't wait xD


Quote
your wish is granted! is was easy wish, tho, because i haet this mechanic with passion too. the only thing that reminds it in k8I is "Look"ing — if you never ever stepped on a square, and revealed it by some other means, and there is a scroll, the game will not tell you which exactly scroll it is. but it hardly affects anything, because there are almost zero situations when you can Look at the square you never visited. and if you visit it, the scroll automatically became "identified".

and i may remove this mechanic again anyway, it doesn't add much to gameplay.
that's fine, even if it doesn't add much it doesn't detract at all lol.


Quote
yes, it is known bug with saves, sorry. the current build is totally unplayable due to it. i think i fixed the bug, so the next build should be ok. this is one of the bugs you won't catch witn Wine — everything works with Wine, but fails on real windows system. once i'll be sure that it is fixed, i'll upload new build.

I can't wait!
Feb 14, 2:41 am
Joined: Sep 3, 2024
Occupation: Childcare Provider
Location: Victoria, British Columbia
Interests: Retro gaming, retro computers, TTRPGS, painting and crafting miniatures and terrain, wargames
Posts: 30
vasiliy wrote
btw, there is Solicitus temple in k8I, inherited from… CLIVAN, i believe. Solicitus is the god of Atheism. having god of atheism (by the way, the only god with a physical presence in the world) is so… ivanesque, that i simply couldn't omit it.

hahahaha that's very in the spirit of the game, love it. i'm not sure I ever saw that before, though I HAVE played clivan.
Feb 14, 2:42 am
Joined: Sep 3, 2024
Occupation: Childcare Provider
Location: Victoria, British Columbia
Interests: Retro gaming, retro computers, TTRPGS, painting and crafting miniatures and terrain, wargames
Posts: 30
chaostrom wrote
Going off on that tangent, the idea for a prehistoric setting was once discussed.

That would be amazing, too. I have been working on a "quest for fire" -like campaign for my D&D players for ages!
Feb 14, 9:40 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 310
build 590215, brief changelog:

* converted sounds to Vorbis format (and added some more sounds too).
* moved sounds to separate vwad. this vwad is optional, and the game will work without it.
* levitating over the traps will not annoy the player with the prompt, and won't stop "G"oing.
* it is now possible to deactivate traps.
* Florea (exiled priestess of Silva in New Attnam) now has a name!
* fixed long-standing bug with zombies (some zombies had legs for heads
* smith can open locked chests and boxes... by STRIKING THEM HARD with the hammer.
* coffin in Attnam has some (relatively) interesting items inside.
* burning webs is a dexterity action, not agility. lol.
* code change: moved all quest talks to `TryQuestTalks()` method. this is because `BeTalkedTo()` is called after sci-talk checks, and if there is a high enough chance to sci-talk, the player might have no chance to go by the quest line. yet `TryQuestTalks()` is called before everything else. this way Kaethos, for example, could be used for sci-talk, but if you're on a quest, he will talk about quests first.
* smith and tailor can harden your items... for a price, of course.
* not-so-dumb NPCs can drink healing potions if they have them (and antidote too).
* also, paniced NPCs can drink some vodka.
* intelligent monsters will not eat zombie corpses, to avoid catching leprosy.
* blocking with shield uses less stamina; and humanoids prefer to block with their shield first.
* eating a spider in wilderness can cause amnesia, which crashes the game. i think forgetting how to play at all is little too much.
Feb 17, 5:36 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 310
implemented butchering wich cleavers. i barely know what i am doing, but the code seems to work; the player can butcher the corpse, and fill empty cans with the resulting flesh. currently, all cleavers are the same. this prolly need to be changed (and the whole thing need to be balanced), but at least it works.

internally it is implemented as a new action akin to dig, so it properly spends the time, and can be interrupted by attacking monster.
Feb 17, 7:10 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 310
lol, had to lower Int requirement for drinking by 1. this is so stupid kid could drink some vodka, stop panicing, and follow me. is it even right to allow kids drinking vodka? ah, nevermind, it's not my problems anymore.
Feb 17, 12:40 pm
Joined: Dec 19, 2018
Occupation: Pharmacy Tech
Location: USA
Interests: ZZT, Roleplaying,
Posts: 79
vasiliy wrote
lol, had to lower Int requirement for drinking by 1. this is so stupid kid could drink some vodka, stop panicing, and follow me. is it even right to allow kids drinking vodka? ah, nevermind, it's not my problems anymore.

It's perfectly in the spirit of the game and besides that drinking ages are a very recent thing.
Energizer - you are invincible
ZZT @narchists unite! Turn off the dark, get free money, defeat death itself!
Feb 17, 5:14 pm
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 836
BTW, I also noticed that ectoplasm is a gas, not a liquid. So skeleton puppies now drool blood instead.
Feb 17, 10:21 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 310
dunno… i think blood is too much. maybe just add "liquid ectoplasm" instead? we already have luquid mustard gas and such… i thought about it, but… just forgot, lol.

also, liquid ectoplasm could be botteled, as other liquids. and have some effects on drinking. maybe confusion and ethereal moving for a short time?


p.s.: github broke their layout once again some time ago, so it is PITA to watch for your changes. and they're not in mainline yet, so "git pull" doesn't work too. it would be great if you'll post notes here too, it's not a demand, of course, i just believe that it would be easier for us to talk about them this way.

and i should have posted about ectoplasm too, mea culpa.

i don't see this as a competition anyway. k8I is experimental branch, vanilla is "conservative" branch, and i am happy that some of my changes were taken to vanilla. i even started to write more detailed commit messages, so it would be easier for you to follow. my commit messages still sux, but i hope they sux slightly less now.
Feb 17, 10:46 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 310
Dark-Star2018 wrote
It's perfectly in the spirit of the game and besides that drinking ages are a very recent thing.
yeah. besides, it is Lord Mittrars' problems now, it's their king after all, not mine. at least i brought the kid alive, not as a corpse to be resurrected.

btw, they will kill the kid anyway later. royal wizard is strong enough to go and get the kid by himself, yet he didn't. actually, the kid was more safe in his cell. he will soon be dead or kidnapped again.

SPOILER ALERT. Click here to see text.
actually, i don't even believe that the kid was kidnapped in the first place. killing the heir could have some… undesirable consequences; but some diplomacy solved the problem… which i created again.
Feb 18, 12:35 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 310
@red_kangaroo, btw, i've seen siren stat change. how could you?! it's racist!

ok, i was joking, of course. i like the idea, but i want it to be done slightly another way: random. i.e. not tied to config, but being random in the given range. it is easy to do by hardconding randomisation in C++, but i want the way to randomize any stat for any monster. this will prolly require some heavy changes to db model, so i'm looking for a good solution yet.


btw. there is command console in this version of k8I. run with "--console" arg to access it (either with the usual tilda, or with F12). it has interesting command: "MaterialInfo" (commands are case-insensitive, and the usual tab autocompletion works). the main feature of the command is soften/harden sequence: press tab for the second arg to see help. it's not as good as standalone utility, but still useful.

also note that using almost any console command will block writing the result to highscore table. there are no other consequences, but the score will not be remembered.

also, spaces in material names could be replaced with underscores. this is to have one word for autocompletion. the code knows how to deal with that.
Feb 18, 12:45 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 310
@rk: ah, and i have a request. if you find some free time and inspiration, could you please create some simple levels for random encounters? nothing complex, just some ground levels i could test random encounters with. i barely know what to write in level scripts, so if you could give me some fun test maps, it would be great. not a demand, of course, just maybe you happen to have some ideas and some free time…
Feb 18, 2:42 am
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 836
vasiliy wrote
dunno… i think blood is too much. maybe just add "liquid ectoplasm" instead? we already have luquid mustard gas and such… i thought about it, but… just forgot, lol.

I've actually been thinking whether anything would break if I just made ectoplasm into liquid. It is the goop that ghosts leave on stuff, after all.

vasiliy wrote
also, liquid ectoplasm could be botteled, as other liquids. and have some effects on drinking. maybe confusion and ethereal moving for a short time?

Ectoplasm should already give you short ethereal moving.

vasiliy wrote
p.s.: github broke their layout once again some time ago, so it is PITA to watch for your changes. and they're not in mainline yet, so "git pull" doesn't work too. it would be great if you'll post notes here too, it's not a demand, of course, i just believe that it would be easier for us to talk about them this way.

Can you access this pull request? It should list all features I stole from k8IVAN and other assorted tweaks. I can also note my changes here, but the PR is more reliable.

vasiliy wrote
i don't see this as a competition anyway. k8I is experimental branch, vanilla is "conservative" branch, and i am happy that some of my changes were taken to vanilla.

With my limited dev time and C++ knowledge, I would lose that competition anyway.

vasiliy wrote
i even started to write more detailed commit messages, so it would be easier for you to follow. my commit messages still sux, but i hope they sux slightly less now.

Thanks, that helps.

vasiliy wrote
SPOILER ALERT. Click here to see text.
actually, i don't even believe that the kid was kidnapped in the first place. killing the heir could have some… undesirable consequences; but some diplomacy solved the problem… which i created again.

SPOILER ALERT. Click here to see text.
Hehehe.


vasiliy wrote
@red_kangaroo, btw, i've seen siren stat change. how could you?! it's racist!

Yeah... Believe me, I have been thinking about that too when I was making that change. I just want them to be somehow distinguishable and scaling their primary way of attack seems like a good thing. I should probably replace their config values with something less volatile...

vasiliy wrote
btw. there is command console in this version of k8I. run with "--console" arg to access it (either with the usual tilda, or with F12). it has interesting command: "MaterialInfo" (commands are case-insensitive, and the usual tab autocompletion works). the main feature of the command is soften/harden sequence: press tab for the second arg to see help. it's not as good as standalone utility, but still useful.

I want this in vanilla and I don't want to port it myself.

vasiliy wrote
@rk: ah, and i have a request. if you find some free time and inspiration, could you please create some simple levels for random encounters? nothing complex, just some ground levels i could test random encounters with. i barely know what to write in level scripts, so if you could give me some fun test maps, it would be great. not a demand, of course, just maybe you happen to have some ideas and some free time…

I will see what I can do.
Feb 18, 3:08 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 310
red_kangaroo wrote
I've actually been thinking whether anything would break if I just made ectoplasm into liquid.
it should work, i believe. i'll prolly check.

red_kangaroo wrote
Can you access this pull request? It should list all features I stole from k8IVAN and other assorted tweaks. I can also note my changes here, but the PR is more reliable.
that's where i took the changes, yeah. but they keep breaking things, introducing more and more javascript for nothing. that page is barely usable as for now, and i'm pretty sure that they will completely break it quite soon.

red_kangaroo wrote
I just want them to be somehow distinguishable and scaling their primary way of attack seems like a good thing.
and that's where i want some uncertainity; you never know which siren took better singing lessons.


red_kangaroo wrote
I want this in vanilla and I don't want to port it myself.
i'll take a look. porting the core command code should not be hard; but proper console with autocompletion… dunno. i haven't looked at the console implementation in vanilla. in k8I, the console is rendered directly to the texture, after converting the game 16-bit frame buffer, and OS event handler knows about console too, so it redirects all keyboard input when the console is active. i.e. it doesn't use felib rendering code at all.


red_kangaroo wrote
I will see what I can do.
thank you!
Feb 18, 11:23 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 310
hm. i starting to feel that i need a village with a market near Aslona. or make Black Market open without it's location map. i need a place where i can sell some trash. as smith and tailor can harden items now, there is more ways to spend the money. there should be a "freelance priest" to heal you too. a shop with bottles. a shop with gears. and shops should get new goods over time.


btw. am i crazy, or we (both k8I, and vanilla) have effects of mustard gas and mustard liquid swapped? `character::ReceiveMustardGas()` spills liquid, and `character::ReceiveMustardGasLiquid()` does instant gas effect. wtf?!

hm… the logic behind this seems to be reverted. that is, mustard gas spills mustard liquid on a character, and then mustard liquid slowly dissolves the body. this makes mustard gas The Ultimate Weapon. but i don't feel that it should work this way. mustard gas should work like a gas. that is:
1) methods should be swapped, and
2) MUSTARD_GAS_LIQUID should have `Effect = 0;`, and `Acidicity = 80;` (or something).
this way, everything works as expected: mustard gas is one-time hit. drinking mustard luquid is like drinking other acidious liquid. spilling mustard luquid is like spilling other acidious liquids.

rationale: 'cmon, immediate unavoidable death traps is too much. mustard gas is not THAT deadly. maybe the idea was to imitate "delayed effect", but i don't think that it works good the way it is now. with the changes, stepping into mustard gas several times is mostly deadly (it quickly dissolves the skin), but drinking or spilling it in a liquid form is not (because it is just a mustard sauce, lol .

anyway, i believe that this is how it should work, and made the changes.
Feb 19, 2:45 am
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 836
I am pretty sure the effects are correct as is. Mustard gas is imitating the effect of breathing in a combat gas - it will slowly dissolve your innards/skin. Mustard gas is NOT a one-time hit, it remains in your lungs and on your skin.

Also, it is not really an immediate unavoidable death trap. The damage is low enough that you can survive it by sipping a single bottle of healing potion, or if you have something like 13+ Endurance just by tanking it. Of course, you cannot get hurt by other sources in the meantime. Basically, landmines are the immediate unavoidable death trap.
Feb 19, 3:37 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 310
landmines are easy to survive with fire protection. nobody should go to GC without at least a ring of fire resistance anyway. yet mustard gas is killing me even with 45-50 HP.

but your reasoning seems… reasonable. i reverted the change for now. also, i was sure that i have to drink antidote potion to get rid of mustard gas, and never even thought about drinking a healing potion instead. oops. and i know that antidote potion does nothing in this case… yet wasn't able to connect the dots.
Feb 19, 11:53 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 310
i keep thinking about shops. let's be honest: they are barely useful now. most of the items in shops are not interesting, and there is no way to ever get something interesting once the shop is generated. shoplifting is hard, and even if you'll manage to lure shopkeeper away somehow, there is usually nothing worth the risk.

maybe shops should restock after several days, and with higher priced items each time?

also, shop restocking don't have to be completely random. Merka, for example, might bring some definitely useful items each time. he's doing business after all, and he wants to sell his goods. so, if he sees the adventurer without fire protective items, he'll bring some rings and cloaks of fire protection, for example. full helmets and strongboxes if the player haven't visited Enner yet. if you go even deeper, he might bring electroprotective items, hinting the player that they will be useful. then there will be at least some solid reason to trade with him.

also, novice player might remember some items for sale, and after reaching deeper GC levels will think: "yay! the game is even better than i thought! the shop is useful, and the game dropped some subtle hints with shop items! i need to tell my friends about that!"

what do you all think about it?


p.s.: also, warehouses. don't you think that there should be some warehouses, locked and heavily guarded? with windows, so you could see all the great loot inside. the slave in Attnam could take the items player sold, and transport them to the warehouse. and bring back some new items to replace those which player bought. useless from the gameplay perspective, but fun to watch, i think.

also, shop restocking can be "visual" — the player could see the caravan of slaves bringing new items. and this is a great random encounter too.
Yesterday, 12:46 am
Joined: Dec 3, 2007
Occupation: Chaos Weaver
Location: Standing between all life and death
Posts: 2,913
Ah, yes, shops probably got overlooked despite lots of items and materials being added in.

In 0.50 they were good enough since money wasn't really all that important, and if you saw something nice you could save up for that one thing. The better things weren't usually sold anyway, and more often than not your best equipment were things you acquired and improved with scrolls.

Shops are probably due for some balancing.
Uchuudonge wrote
creating stable chaos
making patterns where there should be none
sewing order into the chaos
you spit in the face of random numbers, of chaos
Yesterday, 1:05 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 310
yeah. also, in k8I PC can find some "money bags" in UT. with some luck, PC is arriving in Attnam with 300-500 gold. smith and tailor are able to harden items, so there is some use for that gold. but i want the players to decide if they want to spend money on hardening, or on that cool item in the shop, or maybe wait some more and buy even better thing?

also, it's not that hard to farm several K of money later with all those gem stones lying around… and there's basically nothing you can spend that gold on.

currently, shops look like something that is there just because most RLs have shops, so we need them too. so i'm looking for improvements which could make shops both more interesing, and more useful.
Yesterday, 5:29 am
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 836
Yeah, better shops would be great. I tried to add some value to money via the black market, but having all shops be somewhat useful would be great.

Maybe we could start by adding one overpriced and very good item into each shop?

BTW, @vasiliy, not sure whether you noticed but you can steal from shops in vanilla without angering the shopkeeper, if you are lucky enough.
Yesterday, 7:21 am
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,225
vasiliy wrote
thank you!


basically, you need k8jam, and it should do the rest. k8jam has no external dependencies, and should be buildable with provided shell script, producing single standalone binary. it need not to be installed.

then "k8jam config --help" will show configure options. but i'm not sure if all of them work. i believe that "k8jam config" should work, tho. then "k8jam" again to build the binary. do not try to install it, this is not supported yet. just run from where it built.

please, note that 64-bit builds are not supported, so you will need 32-bit support installed. k8jam should automatically add "-m32" flags on 64-bit system (i hope . also, SDL2, SDL2 Mixer, zlib, libpng 1.6, and working OpenGL libs. k8jam will detect them and complain. also, i believe that ALSA is required for sound, due to one callback in the source; it can be disabled, tho; everyhting it does is silences ALSA "pcm buffer underrun" errors. i'll add libalsa detection to configure later.

i believe that's it. everything should be fairly starightforward.

Finally I got around to compiling this on stock Ubuntu 22.04 (jammy).
First I installed k8jam, which worked like a charm.
I had to install 32-bit libraries for SDL2, SDL2_mixer, and libpng as well as multilib versions of gcc and g++ to support 32-bit build.
Used
sudo apt-get install gcc-multilib g++-multilib libSDL2-dev:i386 libSDL2-mixer-dev:i386 libpng-dev:i386

Then k8jam config gave me:
configuring...
WARNING: 64 bit arches aren't supported. forcing 32-bit build.
checking for SDL2 ... found
checking for OpenGL ... found
checking for ZLib ... found
checking for libpng ... found
checking for SDL2 Mixer ... not found
checking for ALSA ... found
CFG: using saves in $HOME
MESSAGE: Now you can run 'k8jam' to build software.

with "SDL2 Mixer ... not found". But then I just opened "jamrules.auto.configure" and replaced these lines:
# SDL2 Mixer
DEFINES += DISABLE_SOUND ;
with
# SDL2 Mixer
LINKLIBS.all += -lSDL2_mixer ;

and then typed k8jam and it compiled successfully. I'm not sure why it didn't pick up the SDL2_mixer 32-bit development lib during the k8jam configure step, but it was logical to work around.

Very pleasant playing experience vasiliy, and great ergonomic improvements, thanks heaps!
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Yesterday, 7:45 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 310
k8jam is using pkg-config to detect libraries. SDL2 mixer might have a different name. i am testing for "SDL2_mixer", but it might be "SDL2_Mixer"… or might have no .pc file at all. also, there might be a conflict between 32-bit and 64-bit libraries — pkg-config is using 64-bit libs, and it just happened to work. i never really tried to build k8I on 64-bit system, so i simply don't know.

fejoa wrote
Very pleasant playing experience vasiliy, and great ergonomic improvements, thanks heaps!
thank you!

i believe that color printer could be easily integrated in vanilla. it is using two control codes: "\1N" and "\2". the former sets the color from some predefined set (or you can use "\1#nnn|" for hex RGB (3 or 6 chars), the latter resets everything back to the "default" color. and it is easy to use `RawTextData` object to reimplement `SplitString()`. also, `str.GetSize()` should be replaced with `str.Length()` in several places — `Length()` calculates string length without control codes (also using `RawTextData` iterator).

once all text printing methods understand colors, colors could be used anywhere, and it is possible to gradually introduce color coding. or even imlement it as option — printing routines will simply ignore control codes according to the flag.

this is prolly the easiest thing to port.

p.s.: `RawTextData` is useful, because it tracks the current color, so word wrapping routine can use it to start the new line with the correct color. see `WrapDataFont` object (silly name, i know , which implements word wrapping with color code propagation. it uses `CharWidth()` method to get char width, which can simply always return `8` to implement monospace wrapping.


p.p.s.: `k8jam -jN` works too, just like you expect it to work with `make`.
Yesterday, 8:14 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 310
SCREENSHOT REMOVED. SEE LATER POST.

also, experiments with minimap implementation. just a first draft, it renders something. totally not optimised, but meh…

the implementation is very simple: render big part of the level onto separate bitmap using only memorized squares, then blit the result with /2 stretching. memorized monsters are not rendered, but memorized items are.

it is possible to make everything much faster using minimap caching, but… i see no reason in such complex code. everything is fast enough, and i'll rewrite it later if it turned out to be slow. anyway, minimap is planned as separate mode, somewhat like "Look", so there is no need for it to be lightning fast.
Jump to