another one IVAN fork

Jan 27, 6:27 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 233
btw… maybe ambassadors/emissaries should have their own apartments instead of always wandering in Cathedral? they may come to Cathedral for some time, and then go back to their apartments (or to the nearest pub in case of orcish representative ? this goes in line with extending Attnam by adding new buildings.

it is not hard to do too. in k8IVAN, exiled priestess in New Attnam returns to the temple when you killed imperialist, for example. (but she is slightly with her head in the clouds, so you have to tell her that the imperialist is dead first.)
Jan 27, 6:41 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 233
btw, re: "Some A* pathfinding would be great" — IVAN already has "breadth first" pathfinder. NPCs are using it when they need to move to some known place. what might be added, tho, is "heat maps", so scared monsters will not simply run into some corner and stay there.
Jan 27, 8:04 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 233
red_kangaroo wrote
We already have a wand of door creation that does something similar.
it's not the same, though. k8IVAN requires a closed room to rest when paniced. the code specifically checks if the player is in a room (a small one), with all doors closed, no holes in walls, and no monsters inside (even pets). created doors doesn't belong to any room, so paniced player cannot rest there.

well, actually he can, because there are no exits, so the game considers it a dead end, and it is allowed to rest in dead ends if there are no hostile monsters in sight. but it's a different thing.
Jan 27, 8:55 am
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 807
vasiliy wrote
yeah, i thought about that too, and i think she may give some stolen goods back if you accept the quest (and stop stealing). like, "oh, it seems you accidentally dropped this… here, take it, and please be more careful next time."

That is a wonderful idea.

vasiliy wrote
it's not the same, though. k8IVAN requires a closed room to rest when paniced. the code specifically checks if the player is in a room (a small one), with all doors closed, no holes in walls, and no monsters inside (even pets). created doors doesn't belong to any room, so paniced player cannot rest there.

Hm, what about a scroll that locks everything lockable in range dependant on reader's Int (a bit like teleportation)? So all doors, chests, chastitiy belts, ...

Scroll of locking
Jan 27, 8:57 am
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 807
BTW, could you link the binaries in the first post of this threat?
Jan 27, 10:29 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 233
sure. i'm almost ready to publish the new build, and i'll attach it there. that's why i removed the old one. i want to fix ship icon, and finish worldmap autotravel, and then i'll prolly upload the new binary.
Jan 27, 10:33 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 233
red_kangaroo wrote
Hm, what about a scroll that locks everything lockable in range dependant on reader's Int (a bit like teleportation)? So all doors, chests, chastitiy belts, ...

Scroll of locking
great idea! and there should be scroll of unlocking too, just to complement the things. and to unlock that stupid chest in the vault…
Jan 27, 10:57 am
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 807
vasiliy wrote
great idea! and there should be scroll of unlocking too, just to complement the things. and to unlock that stupid chest in the vault…


Scroll of unlocking should be pretty rare, though, because of the stupid chest in the vault.
Jan 28, 12:05 am
Joined: Dec 3, 2007
Occupation: Chaos Weaver
Location: Standing between all life and death
Posts: 2,905
Dark-Star2018 wrote
And maybe there's a better use of the BoL on the worldmap, check this out:
https://attnam.com/posts/30444

vasiliy wrote
also, i was thinking about a way to go off the world map, and die by falling onto the frog which holds the world on its back.

Dark-Star2018 wrote
ooh definitely go for that!

On a similar note , how about 'bottomless pits' that kill you instantly, death message "(player) fell all the way through the earth to the Great World Frog"

vasiliy wrote
i'm not sure about this. it doesn't look fair, and IVAN is the fair game. i mean, most of the time you die by doing something stupid, and most traps are not insta-kills.

on the other side… it might be possible to blow a hole in level floor if you'll try hard enough, and fall down to the dungeon below. like, stack a lot of backpacks, mines and such, blow them away, and voila. it will require adding HP to floor tiles, though, but it should not be that hard to implement.

In relation, I had an idea for a falling mechanic. You could fall down floors and take damage relative to how far you fell. This was in regards to a tower dungeon idea I had, which would also include trapdoors that would drop you one floor.
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
Jan 28, 2:14 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 233
yeah, i'm slowly re-reading all threads related to development and ideas.

the problem with new dungeons is scripting, i believe. it is relatively easy to add C++ support code. yet scripting the dungeon, balancing it, and so on is much, much harder. especially using just a text editor.

two things i'm working hard on now is using SQLite db instead of text scripts, and dungeon creation tool. i want to have the tool for WYSIWYG dungeon creation. not only for fixed layouts, but with random generator too. so it should be possible to change some generation parameters in script, and immediately generate several levels to see how it fits.

but it is quite hard to extract anything from IVAN code, it is just not modular enough. for now i am trying to strip off enought game logic to use IVAN engine itself as a generator. this might allow to see not only maps, but generated monsters and items according to danger level. the idea is to build the prototype, and then try to figure out the minimal set of changes to use the same code both for the game, and for the editor.


p.s.: also, i have an idea… implement room tags, and the game will generate only one of rooms with the same tag per level or per dungeon (configurable). that is, if several vaults share the same tag, only one vault could be generated. also, add the way to ensure that if some tagged room generated on the level, another room will definitely be generated too.

also, maybe some other ways to better control the generator? what you wanted to do, but couldn't, because scripting is missing That One Small Thing?
Jan 28, 5:26 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 233
offtopic about my discovery of IVAN. because why not, i love offtopics.
SPOILER ALERT. Click here to see text.
IVAN was prolly the first roguelike i played. i knew about roguelikes way before IVAN, but those were the dark times, i hadn't even had my own PC, so i had to play what my friends had on theirs. i always wanted to try some RL game, but almost everybody else stopped listening to me after "it uses ASCII letters to depict the game area…" i should knew better, of course.

anyway, one day i came to one of my friends, and started looking for something to play. i found IVAN, and started it, because i didn't know anything about that game. imagine my excitement when i realised that it is ROGUELIKE! finally, my dream came true! i was immediately hooked, despite not even realising that i have to pick up the lantern. yep, i travelled the map in darkness, and i loved it. after dozen or so deaths i finally picked up the lantern, and wow! there are items lying on the ground! there is a ladder leading down! yay!

the source code was there too, but it didn't helped me much, because i knew only basic and some pascal back then. my friend never really understood why i'm so hooked to this silly game with ugly graphics. he laughed watching me dying with blood spilled all around, but that's it. meh, i couldn't care less! IVAN was the game not only i dreamt to play, but something i dreamt to create myself. this, and Doom.

now, 20+ years later i'm still playing IVAN and Doom. i am the developer of one of the most advanced Doom engines out there you've never heard about. and i'm doing my own IVAN fork. i guess that means that dreams of my childhood finnaly came to life.
Jan 28, 6:06 am
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 807
vasiliy wrote
also, maybe some other ways to better control the generator? what you wanted to do, but couldn't, because scripting is missing That One Small Thing?

Random vaults, that is a room with a chance to appear. E.g. you define a room independently from any dungeon, you define in which dungeon it might appear, at which floors it might appear, and a chance it has to appear. This would allow scripting of many "encounter" style rooms, with a specific situation that doesn't need to be in every single game.
Jan 28, 6:27 am
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 807
vasiliy wrote
IVAN was prolly the first roguelike i played.

IVAN was definitely the first roguelike for me. I have not known what roguelikes are, nor have I known that I am playing one for quite a while. And even if there are a lot of other larger, more polished roguelikes, IVAN still remains my most beloved game (along with HoMM 3, I guess). Nostalgia is a drug.

vasiliy wrote
i guess that means that dreams of my childhood finnaly came to life.

Nice.
Jan 28, 7:28 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 233
red_kangaroo wrote
Random vaults, that is a room with a chance to appear. E.g. you define a room independently from any dungeon, you define in which dungeon it might appear, at which floors it might appear, and a chance it has to appear. This would allow scripting of many "encounter" style rooms, with a specific situation that doesn't need to be in every single game.
it might be easier to implement in a slightly different way.

you define a "dummy" dungeon with room scripts, and for each level of real dungeons you can specify a list of "dummy" dungeons which might be "embedded". in that "dummy" dungeon there might be flags to make it generated only once, or n:m times, etc.

it is easier this way, because dungeon serves as "containers" for room scripts, and it is easier to put room scripts in such "containers", then to bend the game to have standalone room scripts. so it will basically be a system of "prefabs" you can use to build real dungeons.


and to avoid making another post: i added "ProtectiveOf" property to teams. it is independent of relation, and if "protectiveof" team became hostile, "protector" will became hostile too. this way, Kaethos become hostile when you attack villagers, and vice versa ("tourist guide" team is protective of "new attnam" team, and "new attnam" team is protective of "tourist guide").

p.s.: i know that "FRIEND" team relation was meant to serve as "protective" flag, but it doesn't work that way, which is indicated by hardcoded checks in `game::Hostility()`. so relation and protectiveness should be decoupled. in the future team relations might play some bigger role in the game.

also, tourists will not became hostile if you attack villagers or colonists now. because why would tourists care? yet attacking tourists will turn colonist team hostile. (they are one of the sources of imperialist's income!)
Jan 28, 12:04 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 233
implemented very simple autotravel on worldmap. you can 'G'o to each POI you've seen (POIs revealed by quests considered seen too). pathfinder will not always use the shortest route for sea travels, but i'm ok with it for now. actually, it looks even more realistic: the ship goes to the nearest land, and then sails around it. it is definitely safer for sea navigation to follow the continent than to travel into open sea. this is actually the bug in my pathfinder code… but the one i decided to keep.
Jan 28, 1:36 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 233
implemented slightly better weight display. at least i believe that it is better.
Jan 29, 1:45 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: 20
red_kangaroo wrote
Note that the three dungeons (GF, FC, PY) were made with the assumption that the player will be jumping between them, not doing one at a time. Difficulty jumps between floors are BIG and you need to weigh your options where it's safest to proceed with your current equipment.

This explains why I always die in them lmao

vasiliy wrote
and i realised that i need a separate "on the ship" flag. because having a ship and a belt of levitation means that the player is considered to be on the ship each time he is flying over the sea. by the way, isn't belt of levitation overpowered? maybe it should allow to travel only that far into the sea before ceasing to work? i mean, if you're too far away from any land square, the game will print something like "you are too scared to fly further", and refuse to go.
Civilization II style when you only have galley and can't go more than a square away from land you just become lost at sea haha

vasiliy wrote
offtopic about my discovery of IVAN. because why not, i love offtopics.
SPOILER ALERT. Click here to see text.
i was immediately hooked, despite not even realising that i have to pick up the lantern. yep, i travelled the map in darkness, and i loved it. after dozen or so deaths i finally picked up the lantern, and wow! there are items lying on the ground! there is a ladder leading down! yay!


Haha, that reminds me of my first time playing pokemon... I navigated rock tunnel in the dark because it hadn't occurred to me to use "flash" even though it's spelled out in the game repeatedly.
Jan 29, 1:48 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: 20
Holes were mentioned elsewhere in this thread... in nethack if you have a pickaxe you can dig straight down, not just through walls like in ivan. Could drop you to the next floor doing that.
Jan 29, 7:09 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 233
by the way. how do lanerns in IVAN work? they are everywhere, they don't need any fuel, there is no liquid or gas inside, neither any crystal. it's creepy.

also. to whoever put that tv tropes link on wiki starting page: i hate you! i did it again — i clicked it. i only have 12 tv tropes tabs open, but it took me almost a whole day to reach that number (from 50+ or so).
Jan 29, 7:43 am
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 807
vasiliy wrote
by the way. how do lanerns in IVAN work? they are everywhere, they don't need any fuel, there is no liquid or gas inside, neither any crystal. it's creepy.

They are holy items of Legifer, so presumably via divine magic?
Jan 29, 9:13 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 233
and just when i thought that it's time to push new win32 build… i met zombie with legs picture for its head. cannot reproduce that, though, and i accidentally deleted the save by dying. of course, it's nice body horror, but i prefer it to be intended, not appearing from some lovecraftian dimension all by itself.
Jan 30, 1:54 am
Joined: Dec 3, 2007
Occupation: Chaos Weaver
Location: Standing between all life and death
Posts: 2,905
Isn't that fantastic though? Unintended body horror zombies? Spread it on the internet and we might get curious people code-diving IVAN just to find the cause.
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
Jan 30, 4:20 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: 20
vasiliy wrote
and just when i thought that it's time to push new win32 build… i met zombie with legs picture for its head. cannot reproduce that, though, and i accidentally deleted the save by dying. of course, it's nice body horror, but i prefer it to be intended, not appearing from some lovecraftian dimension all by itself.

haha, makes me think of the mannequins from silent hill
Jan 30, 6:58 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 233
chaostrom wrote
Isn't that fantastic though? Unintended body horror zombies? Spread it on the internet and we might get curious people code-diving IVAN just to find the cause.
i need to make contracts with some asylums first. i mean, they have to pay me something for a new stream of patients, caused by attempts to work with IVAN code.
Jan 30, 10:39 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 233
updated first post with new binaries and sources.
brief changelog:

* ported Aslona route (dungeons, new items and monsters) from vanilla.
* fixed several old k8IVAN bugs (Sumo Fight is working again, exiting Oree Lair works).
* packed game data into vwad archive.
* saved games and bones are vwad archives too.
* it is possible to "O"pen inventory items in wilderness.
* using ship icon if the player is sailing.
* it is possible to fall from the edge of the world map.
* the game stores hiscore records in SQLite table.
* added option to outline items.
* the game is using proprotional font instead of monospaced.
* PC will try to automatically unlock locked door if he has the key.
* it is possible to put various edible lumps into empty cans (new "Can" command).
* "G"o command on world map works as autotravel.
* added new syntax for material config (see below).
* wordlmap POIs got some additional properties (see below).
* configurable popups showing info about items on the ground.
* weapon info now contains weapon class, so you don't have to remember it.
* some teams may be "protective" of other teams. when other team turns hostile, protective
team does so too. this is used for Kaethos, for example: he should turn hostile when you
attack villagers in New Attnam.
* slightly better weight info (in kgs, if possible).
* partially full bottles will not be described as "full of".
* more things i forgot.



it is now possible to specify both materials and their chances together:

MainMaterialConfigExt := { COPPER:25, BRONZE:150, IRON:50; }

intstead of separate `MainMaterialConfig` and `MaterialConfigChances`.


worldmap POIs placement can be controlled with new properties:

SeparateContinent = true;

this POI will be placed on the free continent, and it will be placed before others.

you can specify continent size requirements (number of land squares) for POI.

MinimumContinentSize = 25;
MaximumContinentSize = 0; // any size

it is possible to tell the game that POI should be placed in the given range from
some other POI. this is not a hard requirement, though, and the implementation has
some quirks yet.

DistancePOI = ASLONA_CASTLE;
MinimumDistanceTo = 3;
MaximumDistanceTo = 6;

if POI `Probability` property is not 100 (i.e. it may or may not be generated), you can
use "feeling message" to tell the player that he may explore worldmap to find something
interesting:

GenerationMessage = "You heard rumors about some strange creatures roaming the continent...";

this message will be shown at game start.
Jump to