Author Topic: IVAN (alive again at Pre-Release v0.50.8!)  (Read 6684 times)


  • Protector of the Temple
  • Global Moderator
  • Rogueliker
  • *****
  • Posts: 4955
  • Karma: +3/-1
    • View Profile
IVAN (alive again at Pre-Release v0.50.8!)
« on: December 29, 2015, 10:10:19 PM »   Win/Source   :o

Yep.   8)

Various things added/improved/changed by this apparent communal release in part:

-Now supported by SDL 2.0, thanks to the generous programming efforts of Michael Bonfils and Emil Laine

Fire subsystem mk 1

        Solids no longer sparkle when they are burnt, but do again when they are repaired. N.B.: There are no sparkly solids that burn!!! So this is for posterity only.

    Found that materials no longer sparkle if dipped in fluids, and no longer resume sparkling even after the fluid has evaporated - which is a BUG!
    Invented a function that resets the thermal energies and included this function call wherever Extinguish() is called (some tidying up).

    Fixed a provisional bug where scrolls and books could be dipped without being on fire

    Merge remote-tracking branch 'remotes/origin/master' into warheck-sandbox

    Made it so that books and scrolls catch fire like normal items do, but only after being tested for instantly burning away. Changed the in-game messages accordingly. Scrolls are no longer readable if they are burnt (burnt scrolls are unusable if they are not wholly legible.

Burnt scrolls are illegible, unless you are intelligent enough to decipher them
Burning books and scrolls should be dippable into various liquids now, and thus assist in frantic firefighting
Removed changes to dipping beartraps in poison etc, because this is not related to the fire subsystem, and it was a little half-baked IMO
Made it possible to fix burnt items, albeit via the Tailor alone, for things like burnt leather (Ikiros only fixes items made of metal).
Burnt limbs are as expensive as rusted limbs to fix (at the time of writing, bodyparts do not burn).
Made it more likely for raindrops, vomit to put out fires. Needs quite a lot of raindrops, and at the moment, normal items do not accumulate raindrops via this mechanism, only gears etc. This is because of this line in stack.cpp: ItemVector[c]->AllowFluids()
You can actually put the flames out on f. ex. a burning wooden sword, by using it against blood spilling foes (blood puts out flames).

    Intoduced new material variables of Transient and Steady State thermal energy. Transient is responsible for enabling damage from multiple explosions to accumulate, triggering higher thresholds of activation energy for materials like dragon hide, etc. Transient stored energy de-accumulates with the Be() function. Steady state stores the accumulated energy and is decremented only when the burning object is in contact with a fluid, f. ex. water. once Steady State reached zero, then the flames on the object are extinguished.

There is an extinguish function for putting out flames on objects that are on fire. Extinguish() needs to be properly generalised so that the thermal energies reach zero when this function is called (another thing for the to-do list).
Phoenix feather materials "rise from the ashes" upon complete combustion
Meleeweapons can be dipped when on fire, no fluid, and not both.
Armors can now be dipped but only when on fire and no other fluid is present (interesting to check this during actual melee, when blood is spilled, does it put out flames?)
Beartraps can be dipped in liquids (poison/acid for instance). Don't know if this is a good idea...

    BOOM! Graded charring in the bitmap, achieved by selecting the RGB colour with the max intensity, RSHIFT max intensity by 2, RSHIFT old RGB by 3 and then add these together with Max>>2 to form the new 'burnt' RGB values

    Merge branch 'warheck-sandbox' of into warheck-sandbox


    Updated the Activation energy threshold to the following formula:

ActivationEnergy = 0.5 x MaterialStrength + 5 x MaterialFireResistance + FireResistanceItemEnchantment

Revised the FireResistance of all materials

    Different materials now have different burn times. Introduced a BurnModifier() which determines the duration of burning based on material strength, fire resistance and density, according to the formula (500 + Den + ((Str * FR) >> 1))

Made it so that the words "(on fire)" appear in the post-fix of meleeweapons and armors that are on fire, a la fluids (covered in ...)

Prevented wooden flaming swords from catching fire. Achieved this via CanBeBurned in item.h and item.dat and test condition in item::ReceiveDamage
Caused burning phoenix feather to reset and stop burning once it gets completely burnt. Wondering if this needs a separate message.

Introduced code for extinguishing flames via the function Extinguish() (opposite function to Ignite()) - wielded equipment graphics still do not extinguish for some reason

Ghosts, powder, fluids were all burning. Even the snow in Attnam was on fire! This was fixed by adding "virtual int IsBurning() const { return 0; }" to liquids (therefore powders) and gasses. Not an ideal means of fixing this. it should really be fixed at the level of object.h

    Updated the Activation energy threshold to the following formula:

ActivationEnergy = 0.5 x MaterialStrength + 5 x MaterialFireResistance + FireResistanceItemEnchantment

Revised the FireResistance of all materials

Different materials now have different burn times

    Objects are destroyed once they are completely burnt up, as per spoiling, rusting subsystems.

Also provisionally revised the activation energy formula for triggering flame ignition via explosions. This still needs to be balanced out properly.

    Added the visuals for items after they ignite. Only ignition source is due to explosions so far. Not sure if the Activation Energy for items should be lowered, but if it is too low then the whole dungeon will ignite.

Wood materials, Balsa wood up to and including ebony wood, can now burn (interaction flags in material.dat have been updated to include CAN_BURN).
In this commit, it seems the random boot or gauntlet in a wished pair is no longer burning, so that provisional bug is provisionally fixed. (see changes to object.h)

    In this edition, an individual item's activation energy is tested when an item receives FIRE damage (i.e. due to an explosion). If the damage done is greater or equal to (2MaterialStrength + 10(MaterialFireResistance + ItemFireResistance)), then there is a chance that it will "catch fire".

Fire resistances have been added for materials.

    Merge branch 'master' of into warheck-sandbox

    Minor commit replacing some tabs with spaces

    In this commit, the strength value of the material decreases according to its degree of burnedness (NOT_BURNT, MODERATELY_BURNT etc.). This function works in the same way as it does in the rust system.

    Items now acquire the appearance of accumulating charring on the surface, while they are burning.

    Merge branch 'warheck-sandbox' of into warheck-sandbox


    Warning: this revision has a bug somewhere!

Commit for the sake of saving a version. Need to revert back to an earlier version to check why the changes in this version are giving bugs.

Right now, the changes are about causing an item to burn while it is on fire, using a mixture of Spoiling which needs a Be() for "burning" things over time and rusting, which stores the rust data for a material efficiently.

    Materials now "Burn", if they are burning, and go through the stages not burnt, slightly burnt, moderately burnt and heavily burnt.

This approach uses a mixture of Spoiling which needs a Be() for "burning" things over time and Rusting, which stores the rust data for a material efficiently. There was an earlier bug because of missing line in bodypart.h:
virtual truth AddBurnLevelDescription(festring&, truth) const { return false; }

This paves the way for the bitmaps to be manipulated as per RustData.
There is also a change to the way items become burnt. The material gets burnt instead. This means it is now conceptually correct.

Known issue:
With the changes to the Burn level description, things are no longer piling properly anymore, so this needs to be attended to at some point.

    Added some code to enable the following functionality:

    objects now have a property where they are burning. It is a kind of state
    sticks can be (a)pplied and when they are, they commence burning
    when an object is burning, flames appear
    burning objects cannot be piled together with objects that are not burning
    an object that is burning will emit light
    in ivandef.h and define.dat added the following to denote in how far an item is burnt: #define NOT_BURNT 0 #define SLIGHTLY_BURNT 1 #define MODERATELY_BURNT 2 #define HEAVILY_BURNT 3

known bugs include that the second item of an item generated in pairs (f.ex. boot, gauntlet) does not have its burning state set to zero initially. Not a dreadful problem at the moment. It just looks like it is on fire, but does not emit light... funny.

    Update and rename releasing to

    Create releasing

    Merge pull request #9 from emlai/master

Made hunger/burden/tiredness state printing code more elegant

    Made hunger/burden/tiredness state printing code more elegant



    Merge pull request #8 from waylon531/master

Fixed window bug

    Fixed window bug

I couldn't find the root cause of the bug, but I was able to add a check
to see if the tile had a window or not. This may cause problems if there
are walls that need to be able to see under, but I don't think that is a
likely case. Fixes #3

    Merge pull request #7 from waylon531/master

Removed test1 and test2 sirens

    Removed test1 and test2 sirens

I removed the names for the 2 asian sirens, they should default to siren now

    Fixed typo in Atavus XMas message

Atavus "gives you banana" changed to "gives you a banana"

Merry Christmas everyone!

    Lycanthropy Polycontrol Prompt Fix

If a character other than the player had polycontrol and lycanthropy,
then the player would be prompted to decide whether the lycanthropic
character would polymorph or not.

The LycanthropyHandler() function will now check whether the
lycanthropic character is the player before prompting.

    Important fix for 64-bit systems

Prevents segfault when loading a save file.

There are likely more bugs lurking in 64-bit land (such as one involving
memory allocation issues/leakage when loading full highscore files), but
at least this makes the game playable in 64-bit environments.

    Screenshot fix for Linux

Screenshots will be saved to ~/IvanScrshot/ (this directory can be
changed to preference at line 308 of whandler.cpp)

May only work in full screen mode, as some window managers take a
screenshot of the desktop when pressing Print Screen.

    More typo fixes

    Typo fixes

in gods.cpp, lterras.cpp, char.dat, and item.dat

    Generalization of cycleoption

Fixed cycleoption to be more generic (thus usable for other config
options), rather than having code for the DirectionKeyMap option within
its functions.

    Added Blob's drawing of Ivan and Vlad to GC8 entry

IVlad.pcx can be replaced if someone creates a better version.

    Bugfix for off-center loading animation

    Typo fixes

in stack.cpp, char.dat, gods.cpp

    Total equipment weight shown in equip screen

    Expanded Screenshot Function

Rather than the old screenshot function that would overwrite the same
"Scrshot.bmp" file every time you hit the print screen key, screenshots
will now be saved in the Scrshot/ directory as "Scrshot000.bmp",
"Scrshot001.bmp", etc.

    Added NetHack Keybinding Option

Added option to cycle between Normal, Alternative, and NetHack movement
control schemes.

If necessary in the future, the cycleoption type used for the control
scheme setting can be tweaked for use with other cyclical options.

    CHA affects Wand of Resurrection Taming

When resurrecting a corpse, the player must have CHA equal to or greater
than half of the creature's TamingDifficulty in order to successfully
tame them.

    Spider Retrieval Side Quest

Bringing a tamed spider to the Child Tourist in New Attnam who asks the
player to bring him a demon spider will grant a reward.

    Typo fixes

Fixed typos in command.cpp, human.cpp, and char.dat

    Fixed omission of LastPray counter for V+M

Fixed bug in gods.cpp that caused game to not display the last time the
player prayed to Valpurus and Mortifer, as well as several typos (every
instance of "comfort" was spelled with an 'n'...)

    Cleaned up Silva fix

Searching through completely uncommented code for helpful functions is
(queue Spongebob rainbow) fun.

Messing with the script for the sake of a bugfix bothered me from the
start; this is how I should've done it.

    Fixed Silva Earthquake crashing on GC6

Silva can now trigger earthquakes on GC6 without the game crashing.

    Revert "Fixed Silva earthquake crashing bug in GC6"

This reverts commit 7336861.

    Fixed Silva earthquake crashing bug in GC6

Silva can now trigger earthquakes in GC6 without the game crashing.

    "Fixed" Silva Earthquake crashing on GC6

Really more of a workaround than an actual fix, but better than a crash.
Wolves will spawn when praying to Silva on GC6 rather than an earthquake

    Fixed crashing bug in GasExplosion()

Player or NPC being struck by mine-activated mustard gas no longer
causes a crash.

    12 March 2014:

    Gas immunity bones message bug (thanks Pent, Eagle V): Fixed(?) and needs testing
    Fixed the shop door creation bug (dungeon script files)
    "Fixed" Elite guard taming: TamingDifficulty = 30;
    Double checked that Ommel Cerumen cannot be wished for (this is therefore fixed)
    Fixed the library exploit
    Fixed the banana room exploit
    Holy hand grenade arm and drop in cathedral now go to dwarf room.

    Mustard gas hostility bug fixed. Still facilitates masochism, and fixes the NPC staying in the gas cloud by virtue of the hostility change. Instances of GasExplosion() in miscitem.cpp, level.cpp, gear.cpp, level.h were also harmed.

    Fixed the drinking pea soup in the world map bug by including a check to avoid attempting to place a gas cloud in over world. Thanks to Mathieu Bratcher for this.

You still hear a small puff though...

        put the makefile back on. Figured I had to keep a local copy handy and just leave the original on master.
        in confdef.h: Changed ANTITODE_LIQUID to ANTIDOTE_LIQUID

    in char.cpp: fixed void character::Slow() so that it now gives effect SLOW instead of HASTE (thereby fixing the wand of slow bug)

    fiddled with the makefile, not sure if I'm allowed.

    Removed spurious (?) semicolons from save.h, bodypart.h, char.h and char.cpp.

    Valdemar spawn rate and base unarmed skill for humanoids bug fixes

    Initial commit with CVS code modified by nukes to support 64-bit systems

    Initial commit
« Last Edit: December 23, 2016, 12:58:42 PM by getter77 »
Brian Emre Jeffears
Aspiring Designer/Programmer/Composer
In Training


  • Rogueliker
  • ***
  • Posts: 96
  • Karma: +0/-0
    • View Profile
    • Roguelike Gallery
Re: IVAN (alive again at Pre-Release v0.50.4)
« Reply #1 on: December 30, 2015, 09:55:44 PM »
Another classic resurrects!  This has been a great month for roguelikes.

Maybe in this version I'll actually succeed in getting into a dungeon.
Roguelike Gallery: play Rogue online.  SSH or in browser.


  • Protector of the Temple
  • Global Moderator
  • Rogueliker
  • *****
  • Posts: 4955
  • Karma: +3/-1
    • View Profile
Re: IVAN (alive again at Pre-Release v0.50.5)
« Reply #2 on: March 28, 2016, 02:00:31 AM »

Some changes:

    Screenshot directory now created before taking screenshot
    Lanterns ignite the square they break in
    Fire damage only explosions added
    Female head sprites added
    Toggle option for smart open/close/apply functions
    Explosions only cause bleeding if they cut you
    Can no longer eat or drink burning objects
    Body parts are warm if they're burning - Infravision
    Ghosts now resemble the deceased
    Fixed a bothersome problem with pet movement
    Coffin sprite now used in the Attnam Catacombs
Brian Emre Jeffears
Aspiring Designer/Programmer/Composer
In Training


  • Newcomer
  • Posts: 2
  • Karma: +0/-0
    • View Profile
    • github
Re: IVAN (alive again at Pre-Release v0.50.5)
« Reply #3 on: June 07, 2016, 11:55:46 AM »
Hi guys!




    Green Valpurium!
    Users can add dungeons in a generic way to the world map by scripting alone, there are 32 slots available for this
    SDL_UpdateTexture is replace with texture locking + pixel memcpy
    Dungeon data files now appear as individual files in Script/dungeons, one file per dungeon
    These files are found automatically
    Game automatically counts the number of dungeons
    World terrains now appear in data files gwterra.dat and owterra.dat
    Screenshot directory is automatically created
    Player can talk to Ivan Gorovits again without the game crashing

See for a list of changes since 0.50.5

« Last Edit: June 07, 2016, 12:00:33 PM by fejoa »


  • Protector of the Temple
  • Global Moderator
  • Rogueliker
  • *****
  • Posts: 4955
  • Karma: +3/-1
    • View Profile
Re: IVAN (alive again at Pre-Release v0.50.7! ARRP)
« Reply #4 on: September 18, 2016, 11:53:08 AM »
v0.50.7! ARRP

New multi-platform build system: instructions can be found in INSTALL.
    New music system - TAKE DAMAGE!!!1! - you can contribute music and the spec is here.
    New dungeon: the Tomb of Xinroch - in testing phase, be sure to post your suggestions here.
    Priests and priestesses can heal burns on body parts, and also put out the character if they're on fire.
    Full screen bug is 99% solved! (you'll need the opengl renderer)
    Enner Beast now has a place to catch fish.
    Maze rooms!
    Attribute penalties to burnt limbs have been scaled back.
    Players will now find a holy book.
    Players can sever ghost limbs, which subsequently disappear.

Definitely a big update for IVAN!  8)
Brian Emre Jeffears
Aspiring Designer/Programmer/Composer
In Training


  • Newcomer
  • Posts: 2
  • Karma: +0/-0
    • View Profile
    • github
Re: IVAN (alive again at Pre-Release v0.50.7! ARRP)
« Reply #5 on: December 23, 2016, 09:02:12 AM »
IVAN 0.50.8 has been released for Windows:


    New Christmas trees in Attnam!!!*
    New Grand Stollen Knife of Attnam!!!
    New Message when sitting on an Iron Maiden!?
    Periodic warnings for leprosy.
    Fountain dipping works like other dipping.
    Significant re-balancing of prayer effects.
    Quest items can no longer be sold.
    As usual, multifarious grammatical corrections :)
    Lots of rearranging of the Tomb of Xinroch (TX)
    New world map icon for TX.
    Sun shines on TX level 1.
    Vampire bats.
    Vampires and werewolves hate each other.
    Significant updates to priests and priestesses.

For devs: Now with Travis Continuous Integration
Can now restrict monsters and items to generate only in specific dungeons. (This can be specified in the script files)

See v0507...v0508 for a list of changes since 0.50.7

*Only during Christmas (24th & 25th of December)

« Last Edit: December 23, 2016, 09:12:24 AM by fejoa »