Devil Might Laugh bugfix update

I just got some time this weekend and decided on fixing some problems in the original release of DML. Those are fairly simple ones but improve gameplay a lot. Hope you’ll enjoy it!

Download: DML-2.0 post-7DRL update

This is the complete list of changes since the 7DRL release:
-‘L’ook action:
—the cursor can now go out of the LOS
—you can stop looking by pressing ESC now
—you can use numpad to navigate, diagonal movement is available now
-Combat:
—enemies don’t freeze next to you diagonally anymore, they can attack you from
any direction
—corrected player damage type calculation bug – now the soul damaging weapons
will shine
—devils are now immune to lava
-Help:
—added info about monsters and their damage types
—added info about weapons and their damage types
—added Manual
-Other:
—corrected some of the spelling errors
( and probably added some other )
—pressing ENTER skips all the messages
—pressing ENTER doesn’t open help screen anymore
( dunno why it treated enter as ‘?’ )
—player character is now hightlighted by the cursor

Devil *MIGHT* Laugh : Success!

It’s been a busy week, but the work is now over and I hereby present to you “Devil *MIGHT* Laugh” coffee-break 7DRL:

Source & compiled linux binary: CLICK

 

It uses ncurses and pure c++, so it should be compatible with all linux systems. I do not know anything about windows and mac, because I don’t work on them at all.

What I did do:

  • colors, lots of red – this is hell
  • crude LOS – octant based but written by myself without even reading how it should work, so it shows sometimes a little more than should( diagonals )
  • weapon system – that was easy and entertaining. weapons appear gradually so you can one-shot fodder on current level and still stronger monsters pose a threat
  • messaging system – it was trickier but gives much freedom. I used the same structure for ‘l’ooking system
  • looking – doesn’t leave the LOS and uses the message queue, didn’t play with descriptions, the environment is self-explanatory
  • random climatic messages and dungeon features
  • soul system – you regain mortal features while killing enemies and entering new levels. So from immortal soul stages you become wraith with soul-health pooled together, then an undead with soul-loss resistance but propensity to lose max health while damaged, then a fully soul/health mortal human. Stage advancement determines also the damage bonus and game score.
  • three damage types: soul, physical and mixed with intangible stages ignoring physical damage( also from lava )
  • healing – you have to rest or kill, resting heals you quickly and when you see an enemy die you have a chance to recover some of your health and soul according to its level
  • flags – they are simple 4-lines, nothing fancy

 

What I didn’t do:

  • allies – there are unfortunately no other damned souls you could recruit and use as meat shields. I was going to give the player ability to share some soul points to free them. Shame, if I were to rewrite with more time I would include it, but the current mechanics would make it hard( enemies lock only on the player and there are no target choosing functions etc. )
  • clear code – it’s obscure and awfully messy. I started with the goal of coding something clear and readable but the time was chasing so I just sticked those “friend” statements and then even threw the encapsulation away at all. At the end there was a lot of improvisation. Without heavy use of constants( which I learned to love and respect )  it would be impossible even for me to understand what I wrote.
  • saving – it wasn’t an option from the start

 

It turned out to be a REALLY fast-paced coffee-break RL. It isn’t really something you would come back. Can be literally finished in 3 – 5 minutes if you just take first stairs up all the way. But better grab some better weapon first and rest. Also killing monsters gives additional soul which translates to points and quicker advancement. I looks and feels much like easier version of AngelOfBerserk in DoomRL( I think ). Well, that’s it. Any constructive criticism is welcome and encouraged. Peace to all of you!

 

@edit: thanks to hmp for compiling it for windows: CLICK

Day 5.5 has just ended

I have exactly 36 hours to finish and it doesn’t feel like it at all. What have I done so far?

I just coded my first FOV and it sucks works. I is somewhat buggy in that it can show you tiles you shouldn’t see, if they can be reached by going straight and diagonally in one directions. Yes, this is my quick octant based FOV, but I’ll stick to it now.

I got the display to be bearable.

Coded the weapon picking, dropping and swapping. It is now calculated in damage output of character. But you still can’t drop it on another item.

I also got the ‘enemy’ structure in place of the ‘actor’ basic one and have different monsters with different outfits and stats roaming the levels. They still are dummies with random movement and no AI whatsoever, but at least differ from those white ‘A’.

Got the damage calculations. There are three types of attacks: physical, soul and mixed. Basically the player will( I think) have a lot more soul points than hp, while the demonic guards the opposite.

I also got the advancement system in mind. The player starts out with a round 0 soul and hp points as a damned soul and gets soul points and hp with every new level entered. With the soul amount growth the character evolves on dead->alive path:

damned soul -> shadow -> ghost -> apparition -> wraith -> skeleton -> mummy -> ghoul -> zombie -> human

with first 4 being intangible, taking damage only from soul with no hp pool. they can not die, even when their soul drops to 0 again(they just keep reverting to earlier stages). The wraith stage is when it gets risky. Damage can be taken from both hp and soul, with hp-damage changing to soul damage when zero is reached. The character can die only when both pools are empty. All the undead are soul-damage immune, but can die from hp-loss(and i’m thinking about physical damage amplification for them, or max-hp damage). Finally the human form can be killed by loss of either one of them.

A screenshot, with a little piece of code and some rubish( it’s 1:30 at night and i don’t bother with cutting it ):

Things to do:

  • enemy AI
  • some random stuff on map for the hellish feel
  • message display working properly( it eats some messages, apparently the first one on the list ) and link it to events
  • main menu
  • maybe highscores( just the matter of copying it from my other stuff )

time for it: one day. :”D It’s going to be a busy saturday.

The day #3 coming to an and

As for the last two, I’ve just improved and added some map-displaying features and basic monster features. Now the colors have been added, the monsters not only are generated but randomly roam the dungeon and if they happen to bump into each other they hurt them and in case of death leave corpse and some bloody mess around. Also if they die the get properly deleted and everything pointing to them gets nulled. Although it sounds easy, I had some hard time with segmentation errors and overflows while actually ‘deleting’. Oh, and I added a log-file creation during run for debugging, so I can see what happens when exactly. Here’s a screen with colors and a little glimpse of the code itself:

As you can see there is still no room or cave level generator, so I stick with the usable chaos one. I got the rooms to generate separately, but I still have to connect them( which is where new problem emerges ). The bible item in the definitions header – yes, it’s a weapon. Ever had a book fight at school? What if you had a book with a ‘holy wrath’ brand..? cheap humor, I know.

best regards, and keep working all of you participating!

End of Day #1

Phew, all day scribbling. I’ve done pretty much of the map structure along with terrain, items and characters display. I almost finished the structure handling messages, got the basic structure of actor to be the base of player, monster and ally classes. Made a simple ChAoS PlAnE – like map generator and started writing the room-type one (without connections yet ). There are some early screenshots:

http://7drl.org/wp-content/uploads/2011/03/Screenshot-1.png

http://7drl.org/wp-content/uploads/2011/03/Screenshot.png

The ‘A’s are some generic monsters( it reminds me of the arachno-caves in doomrl though ). There aren’t any items or special features, but it’s the matter of adding one line in the generator and some int id’s. As this is to be hell there should be some boiling oil, lava, peeled skin trophies, cheesecake posters and other heart-warming artifacts. Also expect climatic weapons like scourges, scythes, chainsaws and spiked dildos( this is my happy invention I’m especially proud of ).  If there will be time, I’d like to give the player ability to ‘l’ook around for some funny, randomized descriptions ( like seeing some famous people in the oil baths, inscriptions on walls and ) and for monsters to be able to speak.

Doubt if tomorrow I will be able to do something more than writing a couple of lines. I’ve got to make the player class, handle the movement and in-game turns, modify the display by adding FOV, write the monster class and start thinking about AI – rather pretty straight forward seek and destroy on sight. If anyone knows a good way of generating a cave map like ones in doomrl or adom, let me know in comments.

Devil *MIGHT* Laugh

The Apocalypse came and the world has ended with all the plagues and Riders and fire and trumpets and JUDGMENT. You – a filthy non-believer have been sent to HELL, your soul’s been condemned and cursed for all ETERNITY, your body erased out of EXISTENCE.

You have been burned, tortured, strangled, boiled, tormented and tossed around for a long, long TIME. but..

Now the eternity has passed and you’ve had it – and decided to LEAVE this place once and forever. You just need an opportunity…

Devil Might Laugh will be a simple roguelike in which player controls one sinful soul on its way out of hell, while recovering it’s human features.

 

This is my first attempt to actually write a full roguelike, not without much uncertainty( as the time chosen turned out to be one busy week ) to the outcome. The writing is going to be C++ using new curses library(and maybe pdcurses for windows but it’s fully optional since I only worked on linux ) and is going to be a totally new experience( monster classes, FOV calculation etc. – one heck of learning involved ). The features I am going to include are:

  • gaining mortality throughout the game – starting as an immortal soul and ending as fully tangible and killable human
  • soul and health points system with soul points serving as damage taker AND experience and health gaining importance while going up
  • ability to sacrifice part of players soul to free other prisoners of hell to fight with him/her.
  • easy one-slot item system of weapons( pitch-forks, scythes, whips and other devilish tools to inflict pain and injury ) and MAYBE some kind of healing/spirit strengthening similar to ‘Diablo’ shrines.

 

I really don know if I am actually capable of ending my work in 7 days( without ditching school, ceasing to sleep and starting drinking coffee ), but I finally decided to give it a try. Hell, is there a better way to learn writing games than to write games?!