tag:blogger.com,1999:blog-42387262744917097142023-11-15T22:02:21.479-08:00KharneRoguelike Development in the 21st CenturyUnknownnoreply@blogger.comBlogger297125tag:blogger.com,1999:blog-4238726274491709714.post-76799174156847300222013-03-10T23:59:00.000-07:002013-03-10T23:59:00.215-07:00Daemon has commencedAt 11.59pm this evening (UK Time), I started my 7DRL, <i>Daemon</i>.Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com2tag:blogger.com,1999:blog-4238726274491709714.post-79334594990741231512013-03-07T14:59:00.003-08:002013-03-07T14:59:41.563-08:00Daemon the 7DRL<div style="text-align: justify;">
I'm going to be entering this year's 7DRL, starting this forthcoming weekend, writing <a href="http://kharne-rl.blogspot.co.uk/search/label/Daemon">Daemon</a> from scratch using <i>Libtcod </i>and <i>C++. </i>What is Daemon? According to its description over at the 7DRL <a href="http://7drl.roguetemple.com/jsp/viewGames.jsp">blog</a> its:</div>
<blockquote class="tr_bq">
<span style="background-color: white; font-family: arial; font-size: 13px; line-height: 16px;"><i>Occult-themed rogue-like symbolising a journal through the Qlippoth (the dark side of the Tree of Life) using the dark arts of the Goetia to gain power and to know thyself.</i></span></blockquote>
I'll update this blog with progress reports as the week progresses.Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com1tag:blogger.com,1999:blog-4238726274491709714.post-55978478720974587362012-06-19T11:50:00.003-07:002012-06-19T11:50:21.817-07:00I'm alive<div style="text-align: justify;">
Yup, I am alive.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Started working seriously again on Daemon after a long time.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Here's a revamped Spirit screen:</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7yVAxLVg1x4Nq4RnE_I4lrqTkoBWsDBmtuqyN21_jt3ED-tQ-nC1b1cjGBEWSEDfmAtcYZj2AwFlqlfYiFK1lbvKAOld4fwGspMhJ9WznngdmD2MgnXMDrNoLAQKxZ6LndRYD2QoEZQs/s1600/daemon-d.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7yVAxLVg1x4Nq4RnE_I4lrqTkoBWsDBmtuqyN21_jt3ED-tQ-nC1b1cjGBEWSEDfmAtcYZj2AwFlqlfYiFK1lbvKAOld4fwGspMhJ9WznngdmD2MgnXMDrNoLAQKxZ6LndRYD2QoEZQs/s320/daemon-d.png" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>Hope</b> to get a playable and completable game out within a few weeks.</div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com3tag:blogger.com,1999:blog-4238726274491709714.post-89002735185500249382011-10-17T18:17:00.001-07:002011-10-17T18:29:06.085-07:00Magic in DAEMON Part 3<div style="text-align: justify;">This is an early screenshot of the Spirit Details page from DAEMON. Ignore the details for now, they're still being worked on in terms of creating the algorithms for the details of the various powers of the spirits. </div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span class="Apple-style-span" style="color: rgb(0, 0, 238); "><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ5jutAc8H17cQ55_Nm0t4uYrAC8wbcL72siuPphFS_j9qi9PUN88LFaUcIISn66QoRZw7l2onqzHRWfjXCjIXC5hAiAhWt_GrMCGXtXHrsO_E97dY_xA0V9NxnIfoKtVbvm0zpmNuoPE/s400/seals.bmp" border="0" alt="" id="BLOGGER_PHOTO_ID_5664635430164324370" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 251px; " /></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">But each spirit controlled by the character has a power (a castable <i>effect</i>, like a spell in other roguelikes), and this has four parameters:</div><div><ol><li style="text-align: justify;"><b>Proc</b>: the % chance of this power being triggered each turn. <b>This use does not modify the recharge time </b>so powers can be both passive (proc-based) and active (on-use). Can be modified by environmental factors, target availability, items and so on. Also thinking of allowing the random proc effect to be suppressed under certain circumstances.</li><li style="text-align: justify;"><b>Effect: </b>for damaging powers, the damage dealt. For non-damaging powers, the extent.</li><li style="text-align: justify;"><b>Duration: </b>the duration of the power for non-instant powers in turns, for instant-powers, the length of a HoT/DoT effect applied.</li><li style="text-align: justify;"><b>Recharge: </b>the time to recharge the on-use version of the power.</li></ol><div style="text-align: justify;">All these figures are/will be modified by factors such as the Spirit Power Level/Sphere/Current Tolerance and Character Spirit/Mind/Summoning Skill and so on. Also I want enviromental and transient effects to play a role too.</div></div><div style="text-align: justify;"><br /></div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com1tag:blogger.com,1999:blog-4238726274491709714.post-53958166332946466712011-10-11T17:14:00.000-07:002011-10-11T17:25:11.372-07:00Magic in DAEMON Part 2<div style="text-align: justify;">In DAEMON, each spirit you summon will have its own unique <a href="http://www.fromoldbooks.org/Mathers-Goetia/index6.html">seal</a>. A "<a href="http://www.fromoldbooks.org/Mathers-Goetia/pages/043-Seal-of-Sabnock/250x250-q100.html">genuine</a>" seal from the <i>Ars Goetia</i> is given below:</div><div style="text-align: center;"><br /></div><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaTTU9d_gzRzCbX4AtUSnhi-z83n78SHMNpVFl7l9xMsiWSdF75dtvxQX7JXf7Uijg4vZkpYqkhx4IFdkZU77VoD_9i6qXHsTcwCK4Lb1swCYfU8BOIJcnN8bEP3YFOJCMQtm_nodsjIU/s1600/043-Seal-of-Sabnock-q100-250x250.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaTTU9d_gzRzCbX4AtUSnhi-z83n78SHMNpVFl7l9xMsiWSdF75dtvxQX7JXf7Uijg4vZkpYqkhx4IFdkZU77VoD_9i6qXHsTcwCK4Lb1swCYfU8BOIJcnN8bEP3YFOJCMQtm_nodsjIU/s400/043-Seal-of-Sabnock-q100-250x250.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5662393724011453666" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 250px; height: 250px; " /></a></div><div><br /></div><div style="text-align: justify;">I've written code to procedurally generate similar-looking seals, given names and colours which as passed in as parameters:</div><div><br /></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZpOLv5kN6yeghyq9WSgkSNcpFhpw1OOGVxgG7ZiY_f5Kt3CUukiOeEUoXFtgKTChyphenhyphenQGUdV0seS9qkpXr_ueY6Z7YklgeqHvEdjzkRYSiLcbV4akmvY3yhCcaxUX7U9Tiz7EaG3LLSGVs/s1600/tellytubbies-big.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZpOLv5kN6yeghyq9WSgkSNcpFhpw1OOGVxgG7ZiY_f5Kt3CUukiOeEUoXFtgKTChyphenhyphenQGUdV0seS9qkpXr_ueY6Z7YklgeqHvEdjzkRYSiLcbV4akmvY3yhCcaxUX7U9Tiz7EaG3LLSGVs/s400/tellytubbies-big.bmp" border="0" alt="" id="BLOGGER_PHOTO_ID_5662394230994889026" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 180px; height: 188px; " /></a></div><div><br /></div><div>Rendered on screen using Libtcod's functions the above seal appears as (actual size):</div><div><br /></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHtHB5hbLkwXw6DGFymysrSYLKMT4DR3iasN7d1eh-qMa6w2fYUNIEPt_mLAZ_ADwM6Bzt5mBfVqL-0MDiPOaw3iHkYwIM1vXmVCsiZqXVD7vBsPP7z9FQ4cMifIreltKgMHZrAi3syOU/s1600/tellytubbiestxt.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHtHB5hbLkwXw6DGFymysrSYLKMT4DR3iasN7d1eh-qMa6w2fYUNIEPt_mLAZ_ADwM6Bzt5mBfVqL-0MDiPOaw3iHkYwIM1vXmVCsiZqXVD7vBsPP7z9FQ4cMifIreltKgMHZrAi3syOU/s400/tellytubbiestxt.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5662394797396288402" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 376px; height: 378px; " /></a></div><div><div style="text-align: center;"><div style="text-align: justify;">What's the point of all this? None actually, from a strictly game-play point of view, but I think it increases the atmosphere quite a lot.</div></div></div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com1tag:blogger.com,1999:blog-4238726274491709714.post-49759480679478333172011-10-10T15:45:00.000-07:002011-10-10T16:17:42.187-07:00Magic in DAEMON Part 1<div style="text-align: justify;">I thought I'd write a little bit more about the Magic system in Daemon. Its very heavily (well, more like ripped-straight-off from) two real-world occult systems: the medieval grimoire <a href="http://www.sacred-texts.com/grim/lks/index.htm">Ars Goetia</a> (also known as the <i>Lesser Key of Solomon</i>), and the <a href="http://www.thelemapedia.org/index.php/Qabalah">Kabbalah</a> (Tree of Life) of the <i>Western Mystery Tradition</i>.</div><div><br /></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbXQn_IFUm_rrLMGG5CqZgfHXYQhyphenhypheneRQ5Ilv7B54YrQv9QIFaO_C5WWTrJQgPBUd-VL2X_kfirT2So8AxMgAytDe20kfo4Sa6yR5efZ-E-0aV-1ed_Y0ZxT3zgfPS87uQf721jOYg-EIg/s1600/26.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbXQn_IFUm_rrLMGG5CqZgfHXYQhyphenhypheneRQ5Ilv7B54YrQv9QIFaO_C5WWTrJQgPBUd-VL2X_kfirT2So8AxMgAytDe20kfo4Sa6yR5efZ-E-0aV-1ed_Y0ZxT3zgfPS87uQf721jOYg-EIg/s400/26.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5662002193757386354" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 320px; " /></a></div><div><div style="text-align: center;"><i>The Real "Tree of Life"</i></div><div><br /></div><div style="text-align: justify;">I intend gameplay to metaphorically simulate the path of the <i><a href="http://heru-ra-ha.tripod.com/topics/goetia.html">Goetic</a> </i>(one who summons spirits) ascending the <i>Sephiroth</i> (Spheres of Tree of Life) whilst battling the evil forces of the inverse of the Sephiroth, the <a href="http://www.thelemapedia.org/index.php/Tree_of_Life:Infernals">Qliphoth</a> as one descends dungeon levels. Thus the spirits the Character can summon to assist him/her have thematic powers appropriate to the corresponding Qliphoth, foes will also be based upon said qliphoths, and the Sephiroth themselves will influence both the environment and also other powers that the Character may have.</div><div><br /></div><div style="text-align: justify;">For example, the dungeon levels corresponding to Geburah/Golachab (named <i>Golachag </i>in the game) will have enemies themed with destruction/burnings and ruins (in real-world occult lore, the qliphoth Golachab means "Burners with Fire" whereas the sephira Geburah embodies Strength), but the level itself will perhaps filled with martial armouries, great demonic captains or the remains of a dead god of war and so on.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">The fluff in the game for Golachag states that:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>"Spirits of Golachag are those who burn to do destruction - even onto themselves. They are known for inspiring in mortals unbridled radicalism and tyranny that brooks no opposition, and executes all its opponents.When manifested their bodies are forever consumed with an unburning liquid fire."</i></div><div><br /></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMFeeVFJfvc9Er8qM1DZ7II1KEgsn40x7KpXuhQJWitLHHWdpeE-tkQi_3K905GjY8QQTR_TD8XdeH8HnmPF4jppxGKD6AZzgNuroAP7gWUH72dsRLBeYGKwAX4D7mv99Gb80FMZO4_LM/s1600/ql.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMFeeVFJfvc9Er8qM1DZ7II1KEgsn40x7KpXuhQJWitLHHWdpeE-tkQi_3K905GjY8QQTR_TD8XdeH8HnmPF4jppxGKD6AZzgNuroAP7gWUH72dsRLBeYGKwAX4D7mv99Gb80FMZO4_LM/s400/ql.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5661998661015427810" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 246px; height: 400px; " /></a></div><div style="text-align: justify;">Summoning and using Spirits will cost the Character <i>corruption</i> and <i>degeneration</i> points, which will however, in return make summoning and using spirits <i>easier</i>. There will be ways to reduce both, although I've not finished designing these, but I suspect they will operate much like piety in <a href="http://crawl.develz.org/wordpress/">Crawl</a> does, although aligned upon Kabbalistic premises.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">For example, in the screenshot above, it is possible to attempt to summon one of ten ranks of spirits, from the least, <i>Soldier</i>, to the greatest, <i>King </i>(as per the Ars Goetia).<i> </i>The more powerful a spirit summoned, the greater the powers available to the Character, but the more risks are involved.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Characters can summon and control three spirits at a time, and have access to the powers of the spirits (for example, in the above sphere, Neremoth (Fear), spirits will be able to frighten enemies, reducing their effectiveness or even preventing them from attacking altogether for a short period of time). </div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">However, accessing their powers will reduce the spirit's life-force - represented by a <i>hunger</i> level. If the hunger level gets too low, then bad things (tm) could happen. I am still designing the consequences of what happens if this occurs. Perhaps the spirit could break free and attack the Character?</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">I'm also intending for environmental effects to play a big part in the game, akin to <a href="http://unangband.blogspot.com/">Unangband</a> for example. These could make summoned spirits more or less effective, or easier to summon, and so on.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">My aim is to make magic, and in fact, entire game-play a much more two-edged sword than in any previous roguelike, simulating some of the character progression in RPGs such as <i>Kult </i>(which is another influence).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Note that the names of the Spheres/Qliphoths have been altered slightly from their real-world equivalents and all spirits will have randomly generated names as to avoid harming any innocent spirits.</i></div></div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com1tag:blogger.com,1999:blog-4238726274491709714.post-39333872444005631112011-10-08T14:39:00.001-07:002011-10-08T14:43:30.587-07:00Daemon<div style="text-align: justify;">I've scrapped the idea of rewriting Kharne. I'm currently coding the occult-themed roguelike as a new game called Daemon using C# and the libtcod.NET library.</div><div style="text-align: center;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">I'm aiming to get a first version out (under the GPL) by the end of the month or so. It will be a complete game with save/load and a win condition, as I've largely used the framework I wrote for my 7DRL, <i>Stygia</i>.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Have some gratuitous screenshots:</div><div style="text-align: left;"><br /></div></div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTeEYGOJhT9vd6cAbykL7fZ0_-Sc4gUJzwNsTKd-Co4U3sPbWbQMMCmRuMtarKiMZF1BEbcujKyFLr_wLfK3v_aaSAdxWY4v4q81y1yioF2Z4PmYJuyzc650Z-wwig1J80KRFHLuLXwaI/s1600/ss1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTeEYGOJhT9vd6cAbykL7fZ0_-Sc4gUJzwNsTKd-Co4U3sPbWbQMMCmRuMtarKiMZF1BEbcujKyFLr_wLfK3v_aaSAdxWY4v4q81y1yioF2Z4PmYJuyzc650Z-wwig1J80KRFHLuLXwaI/s400/ss1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5661239225519520130" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 251px; " /></a><div><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiV8BvnQSSdkfmXI_6Bmp2SDiqWttG0USw0Q2uW3bNFSi4WUUK7p8UjAH-7hwc_1ONpSjLP9QdFRs8jLLQ2PYVX94KxG_S42yBENR0uVp7S_yxQF-jXoKT9HuypeCwDqoQ9AyG3-u8zSBc/s1600/ss2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiV8BvnQSSdkfmXI_6Bmp2SDiqWttG0USw0Q2uW3bNFSi4WUUK7p8UjAH-7hwc_1ONpSjLP9QdFRs8jLLQ2PYVX94KxG_S42yBENR0uVp7S_yxQF-jXoKT9HuypeCwDqoQ9AyG3-u8zSBc/s400/ss2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5661239308532432066" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 251px; " /></a></div><div><br /></div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvU6AGEjH8QCv6dYKVh2LpnbznPX7MEQm6XmCcqtN8tDH9pbjv4VaH2ItP6CEHOAD6ZW3x5PmwxMfDYL0asLySscEa_r47jHHhGNFhL4TKYPbPX588maHwDxLyF0yH30KshLc5TqBAQEY/s1600/ss3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 251px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvU6AGEjH8QCv6dYKVh2LpnbznPX7MEQm6XmCcqtN8tDH9pbjv4VaH2ItP6CEHOAD6ZW3x5PmwxMfDYL0asLySscEa_r47jHHhGNFhL4TKYPbPX588maHwDxLyF0yH30KshLc5TqBAQEY/s400/ss3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5661239380730655554" /></a><br /><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5lfZJlm5JfxHP6IL0lQxpDIc_4cy0hOXe5XzbaAauwnrrpvZ403rnc9ozzNWoY5EvO-GNCo9VQPnYq0tYac_gX4iRYicbaQsl3vK6y_XP1NpsfCfi8YRBNRRLUjfTato-GNfM4nnmkEc/s1600/ss4.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5lfZJlm5JfxHP6IL0lQxpDIc_4cy0hOXe5XzbaAauwnrrpvZ403rnc9ozzNWoY5EvO-GNCo9VQPnYq0tYac_gX4iRYicbaQsl3vK6y_XP1NpsfCfi8YRBNRRLUjfTato-GNfM4nnmkEc/s400/ss4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5661239448626436402" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 251px; " /></a></div><div><br /></div></div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com2tag:blogger.com,1999:blog-4238726274491709714.post-14150921631754102552011-09-24T14:18:00.000-07:002011-09-24T14:20:16.376-07:00Enochian<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0s17TxMFWdzcNomYEdmj-YQsbolIrMFGLubhNV1Z8SBIJPc7xCaBBb8v7A4qHwPCxFyl8UlpYnHbVUiW6OEnKQtPQB52g2rmzWp16JUbK5j1MTsFRzaaKNortegkLN36xKHUz7OHZ2ys/s1600/encoh.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 64px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0s17TxMFWdzcNomYEdmj-YQsbolIrMFGLubhNV1Z8SBIJPc7xCaBBb8v7A4qHwPCxFyl8UlpYnHbVUiW6OEnKQtPQB52g2rmzWp16JUbK5j1MTsFRzaaKNortegkLN36xKHUz7OHZ2ys/s400/encoh.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5656038823300342626" /></a><div style="text-align: justify;">Well, that's a function for rendering _Enochian_ on the fly using Libtcod.NET completed. I'm using Enonchian as a general purpose magical language to add atmosphere and mystique.</div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com1tag:blogger.com,1999:blog-4238726274491709714.post-78981923176052961232011-09-18T00:01:00.000-07:002011-09-18T00:01:01.970-07:00Welcome Kharne v3<div><div style="text-align: justify; ">So, I've decided to take my existing 7DRL, <a href="http://roguebasin.roguelikedevelopment.org/index.php/Stygia">Stygia</a> (which is a complete game) and use it as a framework to commence an <b>in-parallel </b>(and much less ambitious) rewrite of Kharne, using C# and <a href="http://doryen.eptalys.net/libtcod/">Libtcod.NET</a>. This one will have a slightly darker, less generic theme (with a magical system based entirely on <a href="http://en.wikipedia.org/wiki/Goetia">Goetic magick</a>) and will focus more on atmosphere and personal horror.</div><div style="text-align: justify; "><br /></div><div style="text-align: justify; ">No doubt there will be extra-dimensional tentacles involved somewhere.</div><div style="text-align: justify; "><br /></div><div style="text-align: justify; ">Don't worry, there will be another release of the existing Kharne (Alpha 24) shortly.</div></div><div style="text-align: justify; "><br /></div><div style="text-align: justify; ">And this mysterious text below? Why the big bad himself, that you will have to defeat. Kudos and a hug to the first person to recognise the language.</div><div style="text-align: justify;"><br /></div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJHPCgiHHqb12PCr8S8A61sebl2E4tmYSMam3D1KackEQ8fnLqr6dR52v1tkw8sKUItNN64NWkl0y0_OQ_TjaDKK8-Hj-QFMgWkvWydcWeRKXc-NxuTN2ypiUnsBO51Ac5wChM3kUmNEM/s1600/new3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="text-align: justify;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 400px; height: 105px; " src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJHPCgiHHqb12PCr8S8A61sebl2E4tmYSMam3D1KackEQ8fnLqr6dR52v1tkw8sKUItNN64NWkl0y0_OQ_TjaDKK8-Hj-QFMgWkvWydcWeRKXc-NxuTN2ypiUnsBO51Ac5wChM3kUmNEM/s400/new3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5653491668586063250" /></a>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com0tag:blogger.com,1999:blog-4238726274491709714.post-3350768225176395532011-09-17T17:22:00.000-07:002011-09-17T17:27:30.092-07:00A new beginning?<div style="text-align: center;"><br /></div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpmKtc7JmmzXu7SjqhLniUpqSwDqE7hcAJrLvY6N__MwCSbdhup6F3UMJ6ArwWRyUJcxr6t7vfj_qilcIJJM5z3AYUfRruR4WdmTnifWYq3V186zSU27eB0nWoLzqEDZS6x1TANm8mO0w/s1600/new2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheGol9SItR1ms8ujXMu-RS_ezMqYqCmj5P5SgTW88K_9Km1Q_XyRbgW3UgR7fYN8_miBdPNpZxH4U65iC_DsznKrsLRNyBnS1gPYfUypVKzwl1Xy9YD7Qt5-jgw8JtzmoNNScqFqtK1_8/s1600/new1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 251px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheGol9SItR1ms8ujXMu-RS_ezMqYqCmj5P5SgTW88K_9Km1Q_XyRbgW3UgR7fYN8_miBdPNpZxH4U65iC_DsznKrsLRNyBnS1gPYfUypVKzwl1Xy9YD7Qt5-jgw8JtzmoNNScqFqtK1_8/s400/new1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5653489350473530802" /></a><span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpmKtc7JmmzXu7SjqhLniUpqSwDqE7hcAJrLvY6N__MwCSbdhup6F3UMJ6ArwWRyUJcxr6t7vfj_qilcIJJM5z3AYUfRruR4WdmTnifWYq3V186zSU27eB0nWoLzqEDZS6x1TANm8mO0w/s400/new2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5653489455495429346" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 251px; " /></span><div><span class="Apple-style-span" ><br /></span></div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com0tag:blogger.com,1999:blog-4238726274491709714.post-28020871152149046592011-09-09T13:04:00.000-07:002011-09-09T13:10:22.274-07:00Magic Systems based upon the Goetia.<div style="text-align: justify;"><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 14px; line-height: 15px; ">So today I'm thinking about magic systems, or more importantly <i>implementable</i> magic systems for roguelikes. I haven't yet got around to implementing magic in Kharne, and I want to make sure the system I do choose works.</span></div><div style="text-align: justify;"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: 14px; line-height: 15px; "><br /></span></span></div><div style="text-align: justify;"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: 14px; line-height: 15px; ">I'm tempted to implement a magic system modelled upon the <a href="http://heru-ra-ha.tripod.com/topics/goetia.html">Goetia</a>:</span></span></div><div><span class="Apple-style-span" style="color: rgb(153, 153, 153); font-family: 'Times New Roman'; background-color: rgb(0, 0, 0); font-size: medium; "><p></p><blockquote><p>The interaction between the magician and the summoned spirits in Goetic magick is quite unique. Whereas in some traditions, spirits are prayed to or asked for guidance and wisdom, the spirits and demons of Goetia are bound and commanded by the magician to act as his servants. In such an interaction, it is highly important for the magician to be aware that he is calling upon these spirits to perform an action, rather than do it himself, because many of these beings are more powerful than him. Therefore, compelling the spirits to obey is a major concern. For protection, the magician employs elaborate circles and<br />rotes to confine the spirit. Once confined, the spirit must be forced to act in accordance with the will of the magician. Many different methods are employed to compel the spirits; lesser spirits can often be coerced, threatened or fooled into compliance, whereas more powerful spirits can be more difficult to control.</p><p>Common methods of control include threats, particularly in the form of the vibration of divine names, which tells the demon or spirit that the magician speaks with the authority and power of the god whose name he intoning. Some magicians will try to persuade the spirit, sometimes resorting to begging and bootlicking. In many cases, the magician may try to bargain with the spirit, to which it will most likely happily agree, exchanging service for sacrifice of some kind.</p><p>The various Goetic demons and beings are often very specialized. Grimoires list long catalogues of spirits, their specific powers, and how they may be summoned by the use of different seals, incantations, sacrifices and incenses. Before conjuration, the magician must carefully consult these catalogues and select the single spirit best suited for the task.</p><p>The Goetic spirits are not well suited to conversation, as are the Enochian angels. The lesser spirits are often stupid and are not known for their honesty. Summoning of the demons for the purpose of gaining information is generally a waste of time, unless perhaps the being is specifically ordered to spy or seek out information for the magician.</p></blockquote><p></p></span></div><div style="text-align: justify;"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: 14px; line-height: 15px; ">i..e magic is essentially summoning creatures to do your will, and which creature you summon and bind depends on what effect you wish to create; also, summoning will have a cost. </span></span></div><div style="text-align: justify;"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: 14px; line-height: 15px; "><br /></span></span></div><div style="text-align: justify;"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: 14px; line-height: 15px; ">In other words, instead of _yet another fireball spell_, you summon a creature of fire at a specific location for a certain period of time. The effectiveness of this (how long the spirit stays, how effective it is and so on) could depend on your reputation with the bosses/factions of the fire spirits/how much you've sacrificed.</span></span></div><div style="text-align: justify;"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: 14px; line-height: 15px; "><br /></span></span></div><div style="text-align: justify;"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: 14px; line-height: 15px; ">It seems sufficiently orthogonal to conventional DnD-based magic systems that it may make for an interesting twist on roguelike gameplay.</span></span></div><div style="text-align: justify;"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: 14px; line-height: 15px; "><br /></span></span></div><div style="text-align: justify;"><span class="Apple-style-span" ><span class="Apple-style-span" style="font-size: 14px; line-height: 15px; ">Thoughts?</span></span></div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com7tag:blogger.com,1999:blog-4238726274491709714.post-16650548578838795252011-09-07T15:53:00.000-07:002011-09-07T15:55:29.126-07:00Multiple Light Sources<div style="text-align: justify;">So I'm wondering just how one handles multiple light sources? The alpha-blending of the various light-intensity values for a particular map cell is easily understandable, but how does one store (potentially near-infinite) multiple-overlapping light sources and their separate light intensities?</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><br /></div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com4tag:blogger.com,1999:blog-4238726274491709714.post-6347763468992224492011-08-25T16:17:00.001-07:002011-08-25T16:17:43.448-07:00HmmmmI'm really tempted to start rewriting Kharne in C# using Libtcod.NETDavehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com2tag:blogger.com,1999:blog-4238726274491709714.post-10838621229495121102011-07-19T07:52:00.000-07:002011-07-19T08:03:45.506-07:00New Fonts?<div style="text-align: justify;">As part of a general overhaul of the UI, I'm experimenting with using Angband fonts:</div><div><div style="text-align: justify;"><br /></div><div><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_39hmazQK6TA4tRzzKe6UToHOIEUytyM_IGwtveZ_fthZFlqbSAhXFrVsUUf9drW55SqQXgIavnDGvphSdwUU75W0fY20gVSIB4UPqt_XDqdlXwrVY9YcxNWxZr8n9N8P9g9JQDxXalE/s400/fonts.png" style="text-align: justify;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 400px; height: 327px; " border="0" alt="" id="BLOGGER_PHOTO_ID_5631077436292206338" /></div><div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">To be honest, I think it improves the look of the game dramatically. Due to their slightly larger size however, I'm going to have to move the equipped items out of the inventory items view and into a new view of their own (like Angband!), but I think I'll only do that when I implement proper keyboard-equipping and removing items.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">I do have a query though before going ahead with this in the next Alpha Release, which I've been unable to find the answer anywhere on the web: <b>am I legally allowed to use the fonts that come with Angband in an MPL project?</b> If so, what license are they under? If they are GPL, then I <a href="http://www.gnu.org/licenses/license-list.html#GPLIncompatibleLicenses">think</a> I can distribute them solely as GPL and include them in my MPL program and <i>then get a sore head due to all these mad license incompatibility</i>.</div><div style="text-align: justify;"><br /></div></div></div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com4tag:blogger.com,1999:blog-4238726274491709714.post-44802984971081621532011-07-15T15:42:00.001-07:002011-07-15T15:47:23.753-07:00Kharne Alpha 23 now available<div style="text-align: justify;"><b>(note: I've moved to a new numbering system for Alpha releases - this is effectively 0.06b in the old system; the change was made because I don't feel right giving an incomplete game a proper version number - the Roguelike world is filled with too many v0.01s and v0.001s and so on as is).</b></div><div style="text-align: justify;"><b><br /></b></div><div><div style="text-align: justify;">A new version of Kharne (Alpha 23) is now <a href="http://code.google.com/p/kharne/downloads/detail?name=Kharne-Alpha-23%20%280.06b%29.zip&can=2&q=">available</a> (source also available <a href="http://code.google.com/p/kharne/downloads/detail?name=Kharne-Alpha-23-src.zip&can=2&q=">here</a> as a download, and browsable <a href="http://code.google.com/p/kharne/source/browse/">here</a>, and released under the MPL). This is mainly a bugfix version superseding the previous version, although I've made a few other additional changes:</div><div><div><ul><li style="text-align: justify;"><i>Moved to a new Versioning System.</i></li><li style="text-align: justify;"><i>Status Conditions are now displayed at the bottom of the main display.</i></li><li style="text-align: justify;"><i>The '@' symbol is coloured according to the current health of the Player Character.</i></li><li style="text-align: justify;"><i>Added four more types of potions to cover Elemental Resistances, which add 40% to their respective resistances.</i></li><li style="text-align: justify;"><i>Trying to drink a potion or reading a scroll whilst not being able to will now exit the inventory properly.</i></li><li style="text-align: justify;"><i>Potions of Healing and Extra-Healing now cure poisons.</i></li><li style="text-align: justify;"><i>Potions of Extra-Healing cure the Paralysis, Blinded, Confusion and Drained conditions.</i></li><li style="text-align: justify;"><i>A message is generated whenever a level containing a Unique is entered.</i></li><li style="text-align: justify;"><i>Wearing Heavy or Medium armour reduces stealth.</i></li><li style="text-align: justify;"><i>Thieves now learn Stealth skills quicker.</i></li><li style="text-align: justify;"><i>Warriors now learn Defense & Heavy Armour skills quicker.</i></li><li style="text-align: justify;"><i>Stealth rolls are modified by the distance to Monsters.</i></li></ul></div></div><div style="text-align: justify;">I intend this to be the last version before magic, end-game/win conditions and the monster overhaul are implemented. </div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Comments, bug reports and queries most welcome of course.</div></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4238726274491709714.post-48665064007500533992011-07-14T00:01:00.000-07:002011-07-14T00:01:04.673-07:00Status Effects<div style="text-align: justify;">In the version of the code checked into the <a href="http://code.google.com/p/kharne/source/browse/">Repository</a> this evening (which will eventually become either .06b or .07), Status Effects are now displayed at the bottom of the main display, with positive effects (for example, <i>Fire Resistance</i> and <i>Free Action</i>) on the left, and negative effects (in the screenshot below, <i>Confusion</i>) on the right:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmCR337nNacZZLa-q38a5p_kmp-QcKtj9Gf0-BqrfrWyk3pnvM0VXnDXGByzLS9btEMehybFP7lescQF1915guW25Ab5TY-tZbDq7_9EL67sc3_dNzqqZOxk3u8g9m9OyFWxq6QvPcsgs/s400/status.png" style="text-align: justify;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 400px; height: 132px; " border="0" alt="" id="BLOGGER_PHOTO_ID_5628960386653773826" /></div><div style="text-align: justify;">Though should I also display the number of turns left for each one as well? e.g. <i>Conf [10]</i>? Or is that too much information? Maybe only limit it to positive effects?</div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com0tag:blogger.com,1999:blog-4238726274491709714.post-88771596682766744222011-07-13T00:42:00.000-07:002011-07-13T00:42:00.529-07:00Monster Flags<div style="text-align: justify;">I now have decided on the following list of monster flags:</div><div><ul><li style="text-align: justify;">ALIGNMENT_EVIL</li><li style="text-align: justify;">BEHAVE_BERSERK</li><li style="text-align: justify;">BEHAVE_COWARDLY</li><li style="text-align: justify;">BEHAVE_FLEE</li><li style="text-align: justify;">BEHAVE_GREEDY</li><li style="text-align: justify;">BEHAVE_IGNORE</li><li style="text-align: justify;">BEHAVE_RANGED</li><li style="text-align: justify;">BREED_MULTIPLY</li><li style="text-align: justify;">DOOR_BASH</li><li style="text-align: justify;">DOOR_OPEN</li><li style="text-align: justify;">DROP_CASH</li><li style="text-align: justify;">DROP_CORPSE</li><li style="text-align: justify;">DROP_ITEMS_ARTEFACT</li><li style="text-align: justify;">DROP_ITEMS_COMMON</li><li style="text-align: justify;">DROP_ITEMS_EPIC</li><li style="text-align: justify;">DROP_ITEMS_SUPERB</li><li style="text-align: justify;">DROP_ITEMS_UNCOMMON</li><li style="text-align: justify;">GENDER_FEMALE</li><li style="text-align: justify;">GENDER_MALE </li><li style="text-align: justify;">GOT_ESCORT</li><li style="text-align: justify;">GOT_ESCORTS</li><li style="text-align: justify;">GOT_FRIEND</li><li style="text-align: justify;">GOT_FRIENDS</li><li style="text-align: justify;">IMMUNE_AIR</li><li style="text-align: justify;">IMMUNE_EARTH</li><li style="text-align: justify;">IMMUNE_FIRE</li><li style="text-align: justify;">IMMUNE_WATER</li><li style="text-align: justify;">INVISIBLE</li><li style="text-align: justify;">NEVER_MOVE</li><li style="text-align: justify;">POISONOUS</li><li style="text-align: justify;">REGENERATE</li><li style="text-align: justify;">RESIST_AIR</li><li style="text-align: justify;">RESIST_EARTH</li><li style="text-align: justify;">RESIST_FIRE</li><li style="text-align: justify;">RESIST_WATER</li><li style="text-align: justify;">TELEPORT</li><li style="text-align: justify;">TELEPORT_AWAY</li><li style="text-align: justify;">TELEPORT_BLINK</li><li style="text-align: justify;">TELEPORT_TO</li><li style="text-align: justify;">WALL_KILL</li><li style="text-align: justify;">WALL_PASS</li></ul><div style="text-align: justify;">Most of these do what they say on the tin, although the Behaviour Flags are worth noting in greater detail:</div><div><ul><li style="text-align: justify;">BEHAVE_BERSERK: This flag means the creature will do increased damage at low health.</li><li style="text-align: justify;">BEHAVE_COWARDLY: Creatures having this flag will run away when hurt, and use ranged combat where possible, although their priority is to keep moving away from the @.</li><li style="text-align: justify;">BEHAVE_FLEE: Creatures having this flag will flee when hurt badly.</li><li style="text-align: justify;">BEHAVE_GREEDY: Creatures featuring this will actively prefer to pick up equipment as opposed to engaging the @ where possible.</li><li style="text-align: justify;">BEHAVE_IGNORE: These creatures will not attack unless attacked first.</li><li style="text-align: justify;">BEHAVE_RANGED: These creatures will attempt to stay at range and attack from a distance where possible.</li></ul><div style="text-align: justify;">If there are any more options and flags you think should be used, feel free to say so in the comments!</div></div> </div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com1tag:blogger.com,1999:blog-4238726274491709714.post-75008100989716186852011-07-12T17:37:00.000-07:002011-07-12T17:42:00.908-07:00Source-diving<div style="text-align: justify;">I now have the Angband <a href="https://github.com/angband/angband">source</a> for a deep perusal, which will help with implementation of magic and better monster AI. I think I'm moving away from a Crawl-inspired game towards an Angband inspired game, although I think there are many wonderful features in Crawl worth stealing^H^H^H^H^H^H^Hborrowing. Both are excellent games though.</div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com0tag:blogger.com,1999:blog-4238726274491709714.post-70698518558234813292011-07-11T00:01:00.000-07:002011-07-11T00:01:02.449-07:00More on Edit Files<div style="text-align: justify;">Following up on <a href="http://kharne-rl.blogspot.com/2011/07/moving-to-edit-files.html">this</a> post, I've had to resort to an Excel spreadsheet to extract the data from the SQLLite database and get it into a suitable format. At least it will save me the hassle of retyping all the monster stats in (there are currently 120 different creatures).</div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com0tag:blogger.com,1999:blog-4238726274491709714.post-649312077313460932011-07-10T09:36:00.000-07:002011-07-10T09:39:10.969-07:00Refactoring again<div style="text-align: justify;">Anyone remember the <a href="http://kharne-rl.blogspot.com/2009/10/refactoring-completed.html">Great Code Refactor</a> of 2009? I suspect there will be a sequel - the Great Code Refactor of 2011, Son of the Great Code Refactor. Looking at a lot of the code for combat, as I implement better monster AI and spells, I'm going to have to rewrite and refactor it. Still, its all good, I have plenty of ideas on how to do this, and it will cut down strongly on code size and complexity.</div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com0tag:blogger.com,1999:blog-4238726274491709714.post-65063564908026369982011-07-09T00:38:00.000-07:002011-07-09T00:38:00.758-07:00Moving to Edit FilesFollowing much thought, I've decided to move to Edit Files to store at least the Monster Definitions, instead of in an SQLLite Database. The main reason is actually flexibility.<div><br /></div><div>The model I've chosen is something similar to the Angband edit file, with a few modifications. Here is the template:</div><div><br /></div><div><div><span class="Apple-style-span"><i># Each creature has an individual entry in the following format:</i></span></div><div><span class="Apple-style-span"><i>#</i></span></div><div><span class="Apple-style-span"><i># N: ID : singlular name : plural name</i></span></div><div><span class="Apple-style-span"><i># L: Creature Level : Rarity : Uniqable?</i></span></div><div><span class="Apple-style-span"><i># E: Ecology : Type: Pickup Items?</i></span></div><div><span class="Apple-style-span"><i># G: Display Character : Display Colour</i></span></div><div><span class="Apple-style-span"><i># I: Hit Dice : Armour Class : Evasion : Speed</i></span></div><div><span class="Apple-style-span"><i># V: Initial Alertness Level</i></span></div><div><span class="Apple-style-span"><i># A: Action Frequency : Action Text </i></span></div><div><span class="Apple-style-span"><i># S: Speech Frequency : Speech Text </i></span></div><div><span class="Apple-style-span"><i># B: Attack Method : Attack Effect : Damage</i></span></div><div><span class="Apple-style-span"><i># M: Spell | Spell | Spell | etc</i></span></div><div><span class="Apple-style-span"><i># F: Flag | Flag | Flag | etc</i></span></div><div><span class="Apple-style-span"><i># C: Class | Class | etc</i></span></div><div><span class="Apple-style-span"><i># D: Description</i></span></div></div><div><span class="Apple-style-span"><br /></span></div><div><div>Anyone familiar with the Angband source should recognise most of these options, although I've enhanced a couple, and added a few additional sections. </div></div><div><br /></div><div>Below I give a couple of excerpts of 2 creatures already in Kharne translated over to the new format:</div><div><span class="Apple-style-span"><br /></span></div><div><div><span class="Apple-style-span"><i>N: 2 : Kobold : Kobolds</i></span></div><div><span class="Apple-style-span"><i>L: 1 : Common : Yes</i></span></div><div><span class="Apple-style-span"><i>E: Fortress: Goblinoid: Yes</i></span></div><div><span class="Apple-style-span"><i>G: k: $004080</i></span></div><div><span class="Apple-style-span"><i>I: 1: 5: 11: 12</i></span></div><div><span class="Apple-style-span"><i>V: 255</i></span></div><div><span class="Apple-style-span"><i>A: 10: "picks a chunk of rotten meat from its teeth"</i></span></div><div><span class="Apple-style-span"><i>A: 10: "yips noisily"</i></span></div><div><span class="Apple-style-span"><i>S: 20: "I'm gonna kill you! Yip yip!"</i></span></div><div><span class="Apple-style-span"><i>B: HIT: HURT: 1d6 </i></span></div><div><span class="Apple-style-span"><i>B: SHOOT: HURT: 1d6</i></span></div><div><span class="Apple-style-span"><i>F: COWARDLY | FLEE | OPEN_DOOR | GREEDY</i></span></div><div><span class="Apple-style-span"><i>F: EVIL | POISONOUS | CORPSES</i></span></div><div><span class="Apple-style-span"><i>F: DROP_ITEMS_POOR | DROP_CASH </i></span></div><div><span class="Apple-style-span"><i>C: Commando | Archer | Lurker</i></span></div><div><span class="Apple-style-span"><i>D: "Kobolds are short, ugly goblinoid humanoids."</i></span></div><div><span class="Apple-style-span"><i>D: "They are known to have cowardly and sadistic tendencies."</i></span></div><div><span class="Apple-style-span"><i><br /></i></span></div><div><span class="Apple-style-span"><i>N: 23 : Ogre Mage : Ogre Magi</i></span></div><div><span class="Apple-style-span"><i>L: 4 : Rare : Yes</i></span></div><div><span class="Apple-style-span"><i>E: Fortress: Giant : Yes</i></span></div><div><span class="Apple-style-span"><i>G: O: $FF00FF</i></span></div><div><span class="Apple-style-span"><i>I: 4: 6: 12: 12</i></span></div><div><span class="Apple-style-span"><i>V: 255</i></span></div><div><span class="Apple-style-span"><i>A: 10: "waves a magic stick"</i></span></div><div><span class="Apple-style-span"><i>A: 10: "yells a magic word"</i></span></div><div><span class="Apple-style-span"><i>S: 20: "dis two and dat two make four, right?"</i></span></div><div><span class="Apple-style-span"><i>B: HIT: SLAM: 1d6</i></span></div><div><span class="Apple-style-span"><i>M: MAGIC_MISSILE | HEAL | HOLD | TELEPORT</i></span></div><div><span class="Apple-style-span"><i>F: RANGED | BESERK | OPEN_DOOR | GREEDY</i></span></div><div><span class="Apple-style-span"><i>F: EVIL | CORPSES</i></span></div><div><span class="Apple-style-span"><i>F: DROP_ITEMS_POOR | DROP_ITEMS_GOOD | DROP_CASH </i></span></div><div><span class="Apple-style-span"><i>D: "Ogre Magi are hideous and deformed ogres wrapped in deathly black robes"</i></span></div><div><span class="Apple-style-span"><i>D: "They are known to be cruel and masters of deadly arcane magics."</i></span></div></div><div><br /></div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com2tag:blogger.com,1999:blog-4238726274491709714.post-66670533668213554182011-07-08T00:45:00.000-07:002011-07-08T00:45:00.093-07:00In the next version....I have a master list of items that comprise my "todo list". There are currently 138 items on it, comprising probably several hundred hours of development work. I'm currently combing through them, looking for <b>achievable</b> items to include in the next release.<div><br /></div><div>So far, I have (typos, poor grammar and all):</div><div><ul><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(68, 68, 68); "><span class="Apple-style-span" ><b><i>Implement First level spells - have an array of ints to represent turns left for each spell effect</i></b></span></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(68, 68, 68); "><span class="Apple-style-span" ><i>Change item generation so monsters drop more items and less are generated on the floor.</i></span></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(68, 68, 68); " ><i>Corpses - some creatures drop corpses that can or cannot be chopped for food. Mainly humanoid or goblinoid or animal, or giant, but some are poisonous.</i></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(68, 68, 68); " ><i>Reading a scroll or normal fighting or <span class="Apple-style-span">digging and opening doors </span>produces noise - awakens any monsters within sight. Even ones out of visibility range e.g. "Something stirs in the darkness" a</i></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(68, 68, 68); " ><i>Stealth bonus to stealth skill is reduced by wearing heavy or medium armour. Also thieves get class bonus</i></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(68, 68, 68); " ><i>Add bonus to character stealth roll based upon distance to monster.</i></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(68, 68, 68); " ><i>Monsters attacking makes noise</i></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(68, 68, 68); " ><i>Monster morale? Some monsters flee if overpowered. Make an alert message to say this.</i></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(68, 68, 68); " ><i>Thieves learn sneak much much quicker than other classes</i></span></li><li><span class="Apple-style-span"><span class="Apple-style-span" style="border-collapse: collapse;" ><i>Update item descriptions to make more grammatical sense. .</i></span></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(68, 68, 68); " ><i>Add Elemental invasion gates. That occasionally pump out more creatures every one hundred turns or so so eventually the levels get filled up. Keep a count of the number of creatures killed - if none then allow the gate to be destroyed. Add count to dungeon object to keep track of this.</i></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(68, 68, 68); " ><i>For monster pathing, if monster is weaker then set path to go through, and then swap them with message for pushing past - set other monster squares for pathfinding algorithim to small values equal to uncontested terrain.</i></span></li><li><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(68, 68, 68); " ><i>When there is a unique present on the level, add a level feeling message like "a voice in the distance yells 'who disturbs the domain of blah the bleh'" - randomise the message slightly.</i></span></li></ul></div><div><br /></div>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com1tag:blogger.com,1999:blog-4238726274491709714.post-30400364922514646122011-07-07T00:31:00.000-07:002011-07-06T16:34:21.716-07:00If this is your idea of safe, I'd hate to see your idea of dangerous....<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLej9zbe7RBrIK6RaI3c3XZ8Okb3eST7cYWyWi3XwpyR5gCZhFiWboXU0dZg37jbe_h7Wl7FlurxuLEklFKNs2zIXlW_rX1GC_iQ9LhW_huS8xkwKAhFL-U99I3Hbhp7Owq4Cz1IW5eZE/s1600/safe.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 197px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLej9zbe7RBrIK6RaI3c3XZ8Okb3eST7cYWyWi3XwpyR5gCZhFiWboXU0dZg37jbe_h7Wl7FlurxuLEklFKNs2zIXlW_rX1GC_iQ9LhW_huS8xkwKAhFL-U99I3Hbhp7Owq4Cz1IW5eZE/s400/safe.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5625891469452468562" /></a>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com0tag:blogger.com,1999:blog-4238726274491709714.post-23535075473182773752011-07-06T16:34:00.000-07:002011-07-06T16:38:12.278-07:00Kharne 0.06a now available<div style="text-align: justify;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-size: 13px; line-height: 20px; ">A new version of Kharne (v0.0.6a) is now <a href="http://code.google.com/p/kharne/downloads/detail?name=Kharne006a.zip&can=2&q=">available</a> (source also available <a href="http://code.google.com/p/kharne/downloads/detail?name=Kharne006a-src.zip&can=2&q=">here</a> and released under the MPL). This is mainly a bugfix version superceding v0.0.6, although I've made some other additional changes.</span></div><div style="text-align: justify;"><span class="Apple-style-span" ><span class="Apple-style-span" style="line-height: 20px;"><br /></span></span></div><div style="text-align: justify;"><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-size: 13px; line-height: 20px; "> Changes to this version are as follows:</span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "><pre style="font-size: 12px; white-space: pre-wrap; max-width: 80em; padding-left: 0.7em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><ul><li style="text-align: justify;">Potions can now be drunk when confused or blind.</li><li style="text-align: justify;">Some monsters can now pickup selected items from the dungeon floor.</li><li style="text-align: justify;">Monster Breath Attacks are now represented graphically by a 'beam'.</li><li style="text-align: justify;">Dungeon features (e.g. growths, piles of bones etc) are no longer passable by default and must be 'T'unnelled through to pass.</li><li style="text-align: justify;">Added tooltips for Background Dungeon features.</li><li style="text-align: justify;">Whenever the Player Character enters or leaves a Background Dungeon feature, an appropriate message is displayed in the Message Log.</li><li style="text-align: justify;">Stair descriptions are now more thematically appropriate.</li><li style="text-align: justify;">Changed the glyph for an open door from \ to '.</li><li style="text-align: justify;">Magical items have been increased in power.</li><li style="text-align: justify;">Fixed an issue with certain dungeon features not appearing whilst in steath or enraged.</li><li style="text-align: justify;">Trying to drink a potion or read a scroll whilst unable to do so will no longer consume the potion or scroll.</li><li style="text-align: justify;">Potions of See Invisible and Combat Mastery now have correct expiration messages.</li><li style="text-align: justify;">Scrolls of Enchant Weapon will no longer enchant Shields.</li><li style="text-align: justify;">Fixed an issue with not displaying the unidentified name of Potions of Might.</li><li style="text-align: justify;">Potions of Might now triple the character's bonus damage, not their strength.</li><li style="text-align: justify;">Potions can now be identified properly by using Scrolls of Identify.</li><li style="text-align: justify;">When IDing a Scroll by using it, the Scroll Type will now be displayed in the Message Log.</li><li style="text-align: justify;">Cursed items are now significantly worse in effect.</li><li style="text-align: justify;">Monster Tooltips now indicate if the Monster is unaware of the Player Character.</li><li style="text-align: justify;">Monster appearance messages now check for Player Character Stealth properly.</li></ul></pre></span></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4238726274491709714.post-84111946810158347262011-07-05T00:05:00.000-07:002011-07-05T00:05:00.194-07:00Beam and other Spell Graphics coming soon..<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0yX-1dAqpfgSgdMSbeT3DTvYySed0INQat7BcB14erD3yc5VMaDcpU0zdYZ9l-QrLaRpypcvi95em-iiqfhNcb2lismwo0TtzTNYKCAqye66M6uHp9aiFfuTzvEeIEYRWKVULlX52jTY/s1600/beams.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 394px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0yX-1dAqpfgSgdMSbeT3DTvYySed0INQat7BcB14erD3yc5VMaDcpU0zdYZ9l-QrLaRpypcvi95em-iiqfhNcb2lismwo0TtzTNYKCAqye66M6uHp9aiFfuTzvEeIEYRWKVULlX52jTY/s400/beams.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5625606544394103042" /></a>Davehttp://www.blogger.com/profile/07160547787461019796noreply@blogger.com0