attnam / ivan Goto Github PK
View Code? Open in Web Editor NEWIter Vehemens ad Necem - a continuation of the graphical roguelike by members of http://attnam.com
License: GNU General Public License v2.0
Iter Vehemens ad Necem - a continuation of the graphical roguelike by members of http://attnam.com
License: GNU General Public License v2.0
charset.o:(.rodata._ZTV8punisher[_ZTV8punisher]+0x908): undefined reference to `humanoid::SetFireToBodyPart()'
It looks like sources mentioned in Main/Source/Makefile.am EXTRA_DIST variable (including human.cpp which contains the above method) are not compiled and linked together.
human.o is not built as other object files corresponding to EXTRA_DIST files. While ivan_SOURCES files are compiled by the time of ld exec.
Hello,
System: Linux manjaro 3.10.21-1-MANJARO #1 SMP Fri Nov 29 22:08:28 UTC 2013 x86_64 GNU/Linux
g++ 4.8.2
boost 1.55.0-2
sdl 1.2.15-5
Latest build from here segfaults. Here are the steps to reproduce:
I attach a back trace for both cases in step 7.
Starting a new game after saving game:
Loading the saved game after saving the game:
I had a poke around in the source, but my C++ isn't good enough to track the error. There doesn't seem to be a problem for IVAN to create ~/IvanSave/ or for IVAN to populate that save directory with save files.
Being heatvision and all. For monsters you could just toggle the IS_WARM BodyFlag alongside burning status, but I'm not sure how you'd go about it for items. Or even whether to bother with items since as far as I know there's no way for ESP or Infravision to pick up anything but monsters currently. You'd probably have to butcher up the detect material code.
Confirmed on 64-bit Windows 8 and 10
Not sure about OSX / Linux
Actually, the holy hand grenade automatically triggers when wished as well...
Smashing lanterns should be a source of fire initiation
An error comes up stating:
Can't open Scrshot/Scrshot000.bmp for output!
Introduce the 'on fire' postfix, for (all) things that are presently on fire
SquareUnder[0]
of the player character is null with the following stack trace:
* thread #1: tid = 0x45c40, 0x00000001000373e2 ivan`square::GetArea(this=0x0000000000000000) const + 66 at square.h:39, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x20)
* frame #0: 0x00000001000373e2 ivan`square::GetArea(this=0x0000000000000000) const + 66 at square.h:39
frame #1: 0x000000010003264f ivan`character::GetArea(this=0x0000617000021480) const + 31 at char.h:703
frame #2: 0x000000010055a237 ivan`character::GetHitByExplosion(this=0x0000617000021480, Explosion=0x0000606001a4e6c0, Damage=300) + 4903 at char.cpp:7006
frame #3: 0x0000000100398ed4 ivan`level::Explosion(this=0x0000613000164e80, Terrorist=0x0000617000510580, DeathMsg=0x00007fff5fbfc7e0, Pos=(X = 39, Y = 14), Strength=300, HurtNeutrals=true, FireOnly=false) + 6516 at level.cpp:907
frame #4: 0x0000000100746c4e ivan`holybanana::ReceiveDamage(this=0x0000610000088540, Damager=0x0000617000510580, Damage=42, Type=32, (null)=8) + 2238 at miscitem.cpp:2359
frame #5: 0x00000001001a8fbc ivan`stack::ReceiveDamage(this=0x00006060001eb780, Damager=0x0000617000510580, Damage=42, Type=32, Direction=8) + 2012 at stack.cpp:321
frame #6: 0x00000001002dc4e2 ivan`humanoid::ReceiveDamage(this=0x0000617000021480, Damager=0x0000617000510580, Damage=42, Type=32, TargetFlags=255, Direction=8, Divide=false, PenetrateArmor=false, Critical=false, ShowMsg=true) + 4402 at human.cpp:1395
frame #7: 0x00000001003df8cb ivan`lsquare::Strike(this=0x000061400025d440, Beam=0x00007fff5fbfd860) + 1771 at lsquare.cpp:1510
frame #8: 0x00000001002fd61e ivan`darkmage::GetAICommand(this=0x0000617000510580) + 20318 at human.cpp:3457
frame #9: 0x00000001004ed8a4 ivan`character::Be(this=0x0000617000510580) + 4980 at char.cpp:912
frame #10: 0x000000010000bb0b ivan`pool::Be() + 155 at pool.cpp:31
frame #11: 0x00000001001ef0aa ivan`game::Run() + 3546 at game.cpp:585
frame #12: 0x000000010000ca98 ivan`Main(argc=1, argv=0x00007fff5fbff8f8) + 2792 at main.cpp:101
frame #13: 0x0000000100054672 ivan`main(argc=1, argv=0x00007fff5fbff8f8) + 34 at femain.cpp:38
(The revision this happened with is https://github.com/Attnam/ivan/tree/2783eacef86185cdfe0bdbeb86ea0389641ea7db)
Steps to reproduce (works in the current HEAD):
$
to get all items and pick them all up. It seems that only picking up the holy banana doesn't trigger the bug. Polymorph to e.g. a valpurium golem to be strong enough to carry them all.&
).In 5.0.5, if I go to Ivan's level and chat with him, the game halts for a second then crashes. If I tame him with conventional means and then talk to him, he responds and the game continues as normal.
Burning bodyparts
Burning zombies
Burning skeletons
Burning golems
There should probably be some warning message when you try to eat food that is currently burning. (At least in human form and other forms that don't like fire.)
Or/and there could be a chance that doing so will set your head on fire.
Flames don't animate immediately when, for example, a stick of balsa is ignited by a nearby explosion
Steps to reproduce:
InWilderness = true
.If you activate wizard mode after entering an area, this doesn't happen.
If you're wandering through for example, Attnam, and you walk into someone then tap in their direction again, you now attack them, which obviously doesn't go too well...
I imagine this popped up when the door opening behavior was changed to automatically attempt to open doors while moving into them, but in any case it this should be made to use the old behavior of nothing happening when pressing towards the NPCs again.
Or more precisely, there should be some generic means of extinguishing all objects using the fuid system.
Still tells the user to send bug reports to [email protected]
Since #46 was introduced allies will move away from the player when you attempt to follow them, which can make ending up next to them (eg for sci-talking) much more difficult. They also seem to never wander into spaces adjacent to the player if you're standing still.
Allies set to follow should stick around the player more so that you can chat with them.
At the moment, carnivorous plants for example, do not burn. Some types of non-humanoid characters may need to be vulnerable to this.
The new character::MoveRandomly
algorithm I introduced in commit 34f6d3a has a small bug.
When you stand still in an open area, your allies (those that move using MoveRandomly
) will move repetitively between the same two or three tiles a lot:
I have no idea what's causing this but I'll take a look at it someday, although if someone wants to investigate it before that feel free to do it.
Should it be 'a carrot' or just simply 'carrot'?
If you have a stack of holy handgrenades, then pull the pin off of the top one, you are left unable to arm the others until you drop/throw the first.
Armed grenades should be kept in an item stack separate from those that still have their pins in place.
Flames don't go away on wielded equipment when extiguished. Clue: The flames do go away when the (phoenix feather) sword is covered in blood
Make Valpurium green, a la LIVAN
For some reason running make install
has this command:
mkdir ./-p
which creates an empty -p
directory inside the current directory. I don't think that's intended
Exploding dwarves sometimes crash the game for me with EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
. This has happened 3-4 times already. Also this only started happening quite recently, in the last couple of months or so, so it might be caused by changes within that time frame.
The crash always happens at line 1887 in bitmap.cpp
while trying to dereference DestPriorityPtr
.
Here's the backtrace from the latest crash:
* thread #1: tid = 0x14d9c, 0x000000010007ed58 ivan`bitmap::AlphaPriorityBlit(this=0x000000010e264450, BlitData=0x00007fff5fbfcd48) const + 856 at bitmap.cpp:1887, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
* frame #0: 0x000000010007ed58 ivan`bitmap::AlphaPriorityBlit(this=0x000000010e264450, BlitData=0x00007fff5fbfcd48) const + 856 at bitmap.cpp:1887
frame #1: 0x000000010027ade0 ivan`bodypart::Draw(this=0x00000001040afc30, BlitData=0x00007fff5fbfcd48) const + 176 at bodypart.cpp:2459
frame #2: 0x0000000100103708 ivan`humanoid::DrawBodyParts(this=0x00000001040af280, BlitData=0x00007fff5fbfcf90) const + 328 at human.cpp:2340
frame #3: 0x00000001001d9cd0 ivan`character::Draw(this=0x00000001040af280, BlitData=0x00007fff5fbfcf90) const + 320 at char.cpp:5302
frame #4: 0x0000000100148fee ivan`lsquare::Draw(this=0x0000000100aa91f0, BlitData=0x00007fff5fbfcf90) const + 462 at lsquare.cpp:300
frame #5: 0x0000000100148a71 ivan`level::Draw(this=0x00000001138f8d90, AnimationDraw=0) const + 545 at level.cpp:1160
frame #6: 0x00000001000ada31 ivan`game::DrawEverythingNoBlit(AnimationDraw=0) + 625 at game.cpp:737
frame #7: 0x00000001000ad7ad ivan`game::DrawEverything() + 13 at game.cpp:709
frame #8: 0x00000001002646c5 ivan`item::Fly(this=0x00000001040af6c0, Thrower=0x0000000000000000, Direction=6, Force=7) + 1509 at item.cpp:153
frame #9: 0x00000001001d0e0f ivan`character::ReceiveBodyPartDamage(this=0x00000001040af280, Damager=0x00000001040af280, Damage=7, Type=1, BodyPartIndex=2, Direction=9, PenetrateResistance=0, Critical=0, ShowNoDamageMsg=0, CaptureBodyPart=0) + 2543 at char.cpp:3452
frame #10: 0x00000001000fe166 ivan`humanoid::ReceiveDamage(this=0x00000001040af280, Damager=0x00000001040af280, Damage=75, Type=1, TargetFlags=255, Direction=9, Divide=1, PenetrateArmor=0, Critical=0, ShowMsg=0) + 1142 at human.cpp:1322
frame #11: 0x00000001001e38be ivan`character::GetHitByExplosion(this=0x00000001040af280, Explosion=0x000000010e24f600, Damage=150) + 1214 at char.cpp:6908
frame #12: 0x000000010015aac8 ivan`lsquare::GetHitByExplosion(this=0x0000000100aa91f0, Explosion=0x000000010e24f600) + 312 at lsquare.cpp:1714
frame #13: 0x0000000100175819 ivan`explosioncontroller::Handler(x=79, y=17) + 57 at level.cpp:998
frame #14: 0x0000000100166ea8 ivan`mapmath<explosioncontroller>::DoLine(X1=79, Y1=17, X2=73, Y2=11, Flags=0) + 56 at femath.h:100
frame #15: 0x000000010014737a ivan`level::TriggerExplosions(this=0x00000001138f8d90, MinIndex=0) + 1098 at level.cpp:1059
frame #16: 0x000000010014690d ivan`level::Explosion(this=0x00000001138f8d90, Terrorist=0x00000001040af280, DeathMsg=0x00007fff5fbfe018, Pos=(X = 79, Y = 17), Strength=150, HurtNeutrals=1) + 1165 at level.cpp:899
frame #17: 0x000000010028afdc ivan`backpack::Apply(this=0x00000001040afdc0, Terrorist=0x00000001040af280) + 972 at miscitem.cpp:309
frame #18: 0x00000001000fd6b3 ivan`kamikazedwarf::Hit(this=0x00000001040af280, Enemy=0x00000001142655a0, HitPos=(X = 80, Y = 18), Direction=7, Flags=0) + 1203 at human.cpp:1185
frame #19: 0x00000001001c2564 ivan`character::TryMove(this=0x00000001040af280, MoveVector=(X = 1, Y = 1), Important=1, Run=1) + 1108 at char.cpp:1197
frame #20: 0x00000001001c1a21 ivan`character::MoveTowardsTarget(this=0x00000001040af280, Run=1) + 1681 at char.cpp:1105
frame #21: 0x00000001001c0e3a ivan`character::CheckForEnemies(this=0x00000001040af280, CheckDoors=1, CheckGround=1, MayMoveRandomly=1, RunTowardsTarget=0) + 2314 at char.cpp:2565
frame #22: 0x00000001001bfe81 ivan`character::GetAICommand(this=0x00000001040af280) + 113 at char.cpp:999
frame #23: 0x00000001000fd815 ivan`kamikazedwarf::GetAICommand(this=0x00000001040af280) + 117 at human.cpp:1205
frame #24: 0x00000001001bc99b ivan`character::Be(this=0x00000001040af280) + 1547 at char.cpp:904
frame #25: 0x0000000100005133 ivan`pool::Be() + 51 at pool.cpp:31
frame #26: 0x00000001000acc56 ivan`game::Run() + 1126 at game.cpp:590
frame #27: 0x0000000100005878 ivan`Main(argc=1, argv=0x00007fff5fbff9c0) + 1032 at main.cpp:84
frame #28: 0x00000001000206d2 ivan`main(argc=1, argv=0x00007fff5fbff9c0) + 34 at femain.cpp:38
frame #29: 0x00007fff9c92d5ad libdyld.dylib`start + 1
On IVAN 0.50.3 Windows, when I press 'g' to go and then the arrow key to go in the direction, it simply moves the player 1 tile
If a wooden wall is hit by a fireball, it is correctly destroyed but the sticks left behind are not ignited.
Same deal for a flaming enemy doesn't leave a flaming corpse. (Use Infuscor to ignite them.)
This is a similar problem to #13. In general, destroyed things should be careful about leaving behind the fire somewhere.
For OSX to compile C++ 11
clang++
needs to be used instead of g++
-std=gnu++11
I wasn't sure how to safely make those changes, so if somebody else could for me then I can try compiling.
Add some messages for phoenix feather materials when they are completely burnt
I propose to change the dark blue color of the status string (burdened, stressed, etc..) to a more readable one. Even shifting it to a lighter blue by a little would probably do the trick imo.
Pressing arrow keys while in a string question causes random letters to be entered in the text field.
I feel that the "smarter" open / close / use key behavior I introduced in #41 is not that great after all. I have had this feeling for quite a long time now so I think probably others will agree with me.
It's particularly annoying when this feature causes something other than what you expected to happen. Originally there wasn't this problem, as all these actions resulted in the same behavior every time. This would also follow the "keep it simple" principle.
Anyway, there are still at least two commits in the PR (dff58af and 612ff5f), that I think are useful, and should be left as is.
What do you think? Should we revert this feature?
I think this repository could be made more searchable.
For example, searching GitHub for C++ repositories with the keyword "roguelike" doesn't find this repository. (The search only seems to look for the term in the repository name and description.) This could be fixed by changing the description to e.g.
Continuation of the Iter Vehemens ad Necem graphical roguelike by members of http://attnam.com
or something similar. If that's too long, maybe the "members of" and/or "graphical" could be dropped.
Opinions? Any other ideas to make this repository more findable via search engines?
On a related note, when the repository appears in the search, it looks like this:
Notice how the website is missing at the end. This is not a big deal, but the fix is trivial: simply move the URL from the website field to the description field. It will still be highlighted and clickable.
Make it so that weapons that are on fire do fire damage to foes, as per flaming sword burning effect
For that matter:
Make it so melee weapons that are on fire spread fire to enemies
Make it so flaming swords spread fire to enemies
Reported on IRC
19:44 <Jinxed> 0.50.2 crashed on kamikaze dwarf's death and now crashes on start ever since then
19:46 <Jinxed> Apparently it is 0.50.3 actually
So, I thought it would be great to have IVAN natively on Mac OS X, so I downloaded the source files and compiled them myself.
I followed the instructions posted here. Those instruction were however not enough to get it build, so I needed to experiment a little myself. If you want to know what I did, just hit me up.
After a while, the compilation was successful and IVAN was running almost flawlessly. However, there are still some bugs:
€
character. Pressing ctrl + h
does what the backspace should do.ivan-highscore.scores
must be manually created in /usr/local/com/ivan
. Otherwise the program will crash when it tries to read or write highscores (everytime the player dies for example). This should be relatively easy to fix though.If any of you have any idea how to fix these, I'd be happy to know. Or if you know how to compile it properly.
I wrapped the executable into an .app
file. If you want to download it and try it out for yourself, you can find it here. Let me know how it works for you.
I also saved some crash logs to aid the debugging. You can find them here.
When a chest is transformed into a different item using a wand of polymorph, all of its contents are dropped onto the same floor tile as the new object.
When a chest is transformed into a golem using a scroll of golem creation, all of its contents disappear forever (as far as I can tell). Ideally they should be dropped into the tile the golem appears in, or the player's inventory (which is presumably the chest's original position).
Whenever a meleeweapon or something with a secondary material is completely burnt, then a lump of the secondary material is created
To be able to pray to Silva in the cellar you first have to go the edge of the map to get out of the area that's dedicated to Valpurus.
The current file layout is a mess; the only thing that are where they should be are the graphics and script files in /usr/local/share.
There's no mention of the "com" directory that the bones and highscore files are in in either the FHS or any other sources I could find, so I'm not sure where the devs got that from. These files should be in /var/lib.
The user's home directory gets (somewhat) cluttered by the save and screenshot directories, so they should probably be moved into a hidden directory along with the config file.
A structure like this would be much cleaner and conform to standards:
/usr/(local/)bin/ivan
/usr/(local/)share/ivan/─┬─Graphics/
└─Script/
/var/lib/ivan/─┬─Bones/
└─ivan-highscore.scores
$HOME/.ivan/─┬─Save/
├─Scrshots/
└─ivan.conf
Also an issue is that not all files/directories are created by the game during installation/first run, leaving the user to create them manually to prevent crashes.
You can cancel reading all other kinds of (non-instantaneous) scrolls, so it would be nice to be able to do so with scrolls of detect material as well. Or is there a specific reason why this is not allowed?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.