Git Product home page Git Product logo

ivan's People

Contributors

adriangin avatar akien-mga avatar alexmooney avatar amdmi3 avatar andrewtweber avatar aquariuspower avatar azba avatar emlai avatar jorgectf avatar murlock avatar neatniets avatar red-kangaroo avatar ryfactor avatar scipio1516 avatar serin-delaunay avatar ssupii avatar stihdjia avatar stoperro avatar travankor avatar waylon531 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ivan's Issues

compiling on linux: EXTRA_DIST sources issue

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.

Segfault after creation of save files

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:

  1. ./configure
  2. make
  3. cd Main/Source
  4. ./ivan
  5. Start new game
  6. Save new game (and exit if you want)
  7. Either start a new game or load game that was just saved
  8. Seg fault

I attach a back trace for both cases in step 7.

Starting a new game after saving game:

http://pastebin.com/ig1UsZJd

Loading the saved game after saving the game:

http://pastebin.com/yyPbTAJe

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.

Burning monsters and items should be visible with Infravision

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.

'on fire' postfix

Introduce the 'on fire' postfix, for (all) things that are presently on fire

Null pointer crash in character::GetHitByExplosion

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):

  1. Activate wizard mode.
  2. Use $ 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.
  3. Spawn e.g. Ischaldirh (&).
  4. Wait for Ischaldirh to strike a spell on you.

Crash on 'C'hatting with neutral Ivan

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.

Make burning food uneatable

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.

Flame animations

Flames don't animate immediately when, for example, a stick of balsa is ignited by a nearby explosion

Infinite loop when loading wizard mode save

Steps to reproduce:

  1. Start new game.
  2. Activate wizard mode.
  3. Enter any area.
  4. Quit, but answer no to "Remove saves?".
  5. Load the save that's named after your character (i.e. not the AutoSave), either via "Start game" or "Continue game".
  6. The game starts looping infinitely in this loop, with InWilderness = true.

If you activate wizard mode after entering an area, this doesn't happen.

"Do you want to attack this person" should default to No if you move forward again.

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.

New movement algorithm causes allies to "run away" from you.

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.

character::MoveRandomly repetitive pattern bug

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:

ivanmovebug

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.

Armed Holy Handgrenades not separated in inventory.

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.

minor issue, mkdir ./-p

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

EXC_BAD_ACCESS in bitmap::AlphaPriorityBlit

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

Walls destroyed by fire damage should check debris for ignition

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.

OSX compilation issues for C++11

For OSX to compile C++ 11

  • clang++ needs to be used instead of g++
  • This flag needs to be added to the compiler: -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.

Make "smart" open/close/use behavior toggleable

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?

Search engine optimization

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.

Crashing after kamikaze dwarf's death

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

ESP behaving like infravision?

I ate a floating eye corpse and got temporary ESP. I don't have anything granting me Infravision. Should I be able to see this snake?

esp

IVAN on Mac OS X

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:

  • The game always crashes if you enter an area, then exit, and enter the same area again. This applies to all levels of all dungeons, as well as New Attnam and Attnam.
  • Drinking from fountains can crash the game too (probably because of the level teleport effect).
  • Loading saved games (including auto saves) either crashes the program, or leaves it hanging.
  • When entering text in textfields, the backspace doesn't work. Instead, it prints out the character. Pressing ctrl + h does what the backspace should do.
  • The IVAN high score file 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.

Golem creation destroys chest contents

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).

File locations/creation on *nix

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.

Make all StringQuestions escapable?

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?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.