Search Results
Searched for posts by vasiliy in all forums

Showing results 121 - 130 out of 232 total
Modify your search
Posted by vasiliy, Jan 11 at 1:50 pm
i know that everybody love screenshots. so here's another one: proof of concept of proportional font. not everything fixed yet (log window still wraps at the fixed char, lol — i forgot to change it), but the lists seems to be usable. i will prolly not leave this as option (because of too much conditional checks), and will simply use proportional fonts everywhere. let's stop pretending that we are not in graphics mode!

@red_kangaroo: thank you! (and people who actually wrote those descriptions, of course!) implementing descriptions this way is quite easy. i added one method to `felist` — `AddHelpToLastEntry()`, and `Help` field to the entry struct itself. then added code in equipment and inventory list creation methods to actually add help. and then simply do word-wrapping and rendering after drawing the list page.

there is one gotcha, though: you have to call `BackGround.FastBlit(Buffer);` in `felistraw()` to erase previous list contents. in the Good Old Days I.V.A.N. authors tried to avoid excessive redrawing, but meh… we can get away with "just redraw everything on each frame!" these days.


p.s.: sorry, i don't have github account (and generally never send patches to projects with cocs), so i'll resort to lengthy descriptions in the hope that somebody will dive into my code and write something similar to the comm fork.

and of course i am here to try and answer any questions about the code (or at least give some clues). not that i know the code well, though, so most answers will prolly be "your princess is in another castle. also, you are killed by a hedgehog.", but why don't try anyway?
Posted by vasiliy, Jan 10 at 9:01 pm
and i decided to implement item comparison as popup window. this info is quite important, and it's hard to look for it in log window. of course, it can be turned off in options, but i don't consider this as cheating: this is the same as if i look at the equipment list, and then try to pickup items, and then try to remember the stats… 'cmon, I.V.A.N. is unforgiving enough to make at least this part slightly more convenient!
Posted by vasiliy, Jan 10 at 2:57 am
and added the thing i wanted for a long time, but never actually got my hands on it: comparison of weilded items, and items lying on the floor. of course, it only compares helmets with helmets, shields with shields, and so on…
Posted by vasiliy, Jan 10 at 12:21 am
and hey… why not? it is possible to configure screen resolution now. the game is *almost* working in 640x480, and resolutions higher than 800x600 seems to work as expected. as k8ivan has non-integral scaling too, the system is quite flexible.
Posted by vasiliy, Jan 9 at 10:55 pm
also, implemented "can meat" command. cans can be filled with meat from lumps of flesh (or lumps of banana). also, the same could be done with normal bananas. the idea is that it is easy to put "banana flesh" into the can, and lumps of flesh can be packed too. but dead bodies cannot, they should first be cut to pieces. i didn't implemented cutting mechanics yet (and i'm not sure if i will, i have to think about it). for now you can explode someone to lumps of flesh, which is unconventional, but perfectly working way to skin a carcass.

and no, you cannot do this with cat flesh. because i love cats, cats should not be used this way!

also, don't forget that you can "dUmp" cans (and bottles) in k8ivan! so that can of stupid school food can be reused for something more valuable.

sorry for the message spam, i just thought that people might be interested in some of my ideas. it should be relatively easy to port at least some of them to community fork.
Posted by vasiliy, Jan 9 at 7:10 pm
also, i bumped game screen size (not window!) by ~120 pixels, so i can see more map. and implemented "paper doll on the left" option. it required much less changes than i expected: most game code either asks for the screen size, or uses map size in tiles as a measurement.

stats rendering is mostly done by using position variables too, they simply inited to hardcoded values. i want to have it on the left, so…

i also took item descriptions from the community fork, and draw them under the list. because why not?
Posted by vasiliy, Jan 9 at 5:03 am
thank you! it's not only alive, but i am experimenting with moving some c++ logic to simple scripts:
this is how Sumo stairs processed now:
  Config SUMO_ARENA_ENTRY;
  {
    PostFix = "downwards";
    BitmapPos = 0, 208;
    on on_enter {
      AddMessage "trying to enter sumo arena";
      SetOtherToSumo;
      if !@other_actor || !@other_enabled || @other_hostile || !@other_can_be_seen;
        Allow;
      endif
      if @tweraif_is_free;
        AddMessage "\"You started this stupid revolution, after which I've been constantly hungry. Get lost!\"";
        Disallow;
      endif
      if @player_sumo_champion;
        AddMessage "\"I don't really enjoy losing, especially many times to the same guy. Go away.\"";
        Disallow;
      endif
      if @player_polymorphed;
        AddMessage "\"Don't try to cheat. Come back when you're normal again.\"";
        Disallow;
      endif
      if @player_hunger_state < SATIATED;
        AddMessage "\"Your figure is too slender for this sport. Eat a lot more and come back.\"";
        Disallow;
      endif
      if @player_hunger_state < BLOATED;
        AddMessage "\"You're still somewhat too thin. Eat some more and we'll compete.\"";
        Disallow;
      endif
      AddMessage "\"So you want to compete? Okay, I'll explain the rules. First, I'll make a mirror image out of us both. We'll enter the arena and fight till one is knocked out. Use of any eq
      YesNoQuery "Do you want to challenge him? [y/N]";
      if @last_query_bool != "tan";
        Disallow;
      endif
      Allow;
    }
  }
for now it is quite stupid, interprets the whole thing each time (i.e. reparses it), and missing a lot of APIs. i.e. it is little more than a PoC. but hey, i have to start somewhere!

i believe that with richer API (it's not hard to do, just boring it would be possible to write new quests almost entirely in .dat files. althrough new items (not configs) stll need C++ objects declared. but maybe i'll be able to create "scripteditem" and hack the database to use/extend it. this way people won't need to touch C++ anymore (at least not as often).


by the way, some stats: the game has about 350 item and material classes. not configs, just classes. it's a lot! with configs, this is about 800-1000 items, i believe. and with different materials it is MUCH more. i always knew that I.V.A.N. is rich in contents, but never really knew HOW rich it is!
Posted by vasiliy, Jan 8 at 12:41 am
so, i wrote my promise 7 years ago… it's time to stand by my words, i guess. it's great to see that the site is still alive, and that the game is still alive. i'm still playing I.V.A.N. from time to time, so i think i'll try to port most new comm. fork dungeons and quests. sorry, i still prefer my fork to comm, and it is easier for me to port TO k8ivan than to port FROM it.

the plan is to port all new items, monsters, dungeons and quests (with some fine-tuning to fit k8ivan), but not crafting, and prolly not new flame system. crafting is not on the table because i always find crafting in games boring (sorry, i don't mean that it is wrong or bad, just a personal preference), and flame system looks too big of a game changer for me. i'd like to have flammable things, but it's hard to rip it out of comm. fork properly, because two codebases are quite different now (and my resources are limited).

but hey, you did a great amount of work on comm. code and content! thank you all for keeping I.V.A.N. alive! (and for adding more things i can steal. sorry for the tone of my post, i really appreciate all your hard work. just thought that i should keep my writing style close to the original.
Posted by vasiliy, Jan 7 at 6:23 pm
hi. long time no see! as i partially resumed working on my k8ivan fork, i wrote the tool to compare my and community scripts, and found several bugs both in my, and in your scripts. they are mostly harmless, but still…

::: loading community fork objects :::
loading base definitions...
WARNING! duplicate field `ConsumeEndMessage`!
  curr: material.dat:4584:4
  prev: material.dat:4578:4
WARNING! duplicate field `ConsumeEndMessage`!
  curr: material.dat:4660:4
  prev: material.dat:4654:4
WARNING in 'material.dat' at (5628:19): used `:` instead of `;`!
WARNING! duplicate field `BodyFlags`!
  curr: material.dat:5959:4
  prev: material.dat:5958:4
WARNING! duplicate field `BodyFlags`!
  curr: material.dat:5972:4
  prev: material.dat:5971:4
WARNING! duplicate field `TorsoBitmapPos`!
  curr: char.dat:3136:2
  prev: char.dat:3128:2
WARNING! duplicate field `DangerModifier`!
  curr: char.dat:3176:2
  prev: char.dat:3171:2
WARNING! duplicate field `SkinColor`!
  curr: char.dat:5920:2
  prev: char.dat:5910:2
WARNING! duplicate field `TorsoBitmapPos`!
  curr: char.dat:6134:2
  prev: char.dat:6125:2
WARNING! duplicate field `LeftWielded`!
  curr: char.dat:6791:4
  prev: char.dat:6787:4
WARNING! duplicate field `CanBeGenerated`!
  curr: char.dat:7665:2
  prev: char.dat:7661:2
WARNING! duplicate field `Inventory`!
  curr: char.dat:7844:4
  prev: char.dat:7839:4
WARNING! duplicate field `PanicLevel`!
  curr: char.dat:8613:4
  prev: char.dat:8603:4
WARNING! duplicate field `CanBePiled`!
  curr: item.dat:1824:2
  prev: item.dat:1816:2
WARNING! duplicate field `Roundness`!
  curr: item.dat:5115:2
  prev: item.dat:5105:2
WARNING! duplicate field `ShowMaterial`!
  curr: olterra.dat:235:4
  prev: olterra.dat:230:4
WARNING! duplicate field `ShowMaterial`!
  curr: olterra.dat:469:4
  prev: olterra.dat:465:4
WARNING! duplicate field `MaterialColorB`!
  curr: olterra.dat:971:2
  prev: olterra.dat:965:2
WARNING! duplicate field `ShowThingsUnder`!
  curr: olterra.dat:1038:2
  prev: olterra.dat:1030:2
Posted by vasiliy, Nov 15, 2017 at 9:18 pm
on hiatus again. irl funding problems, lol. prolly be back in next seven years.