pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

infraarcana: update to infraarcana-19.0



Module Name:	pkgsrc-wip
Committed By:	Yorick Hardy <yorickhardy%gmail.com@localhost>
Pushed By:	yhardy
Date:		Sun Jul 30 12:49:37 2017 +0200
Changeset:	f624f3410d7034787692016bacb08ab22796f677

Modified Files:
	infraarcana/Makefile
	infraarcana/PLIST
	infraarcana/distinfo
	infraarcana/files/infraarcana.sh
	infraarcana/patches/patch-src_config.cpp
Added Files:
	infraarcana/patches/patch-CMakeLists.txt
	infraarcana/patches/patch-src_saving.cpp
Removed Files:
	infraarcana/patches/patch-Makefile
	infraarcana/patches/patch-rl__utils_src_rl__utils.cpp
	infraarcana/patches/patch-src_input.cpp
	infraarcana/patches/patch-src_room.cpp
	infraarcana/patches/patch-src_save__handling.cpp

Log Message:
infraarcana: update to infraarcana-19.0

Please delete ~/.ia_config if necessary. Old versions of the
configuration file can cause a segmentation fault on startup.

Release information:

--------------------------------------------------------------
v19.0 (July 20, 2017)
--------------------------------------------------------------
Gameplay
* You no longer gain XP from killing monsters - instead XP is raised by activities related to exploration and discovery, such as identifying items, drinking from some types of fountains, reading inscriptions on "monoliths", or seeing a new type of monster for the first time
* Fewer monsters are spawned on the map overall, and many monster types now tend to spawn in smaller groups, but are individually stronger - they also generally follow and remember you for a shorter time than before
* Monsters may become "suspicious" (typically with a message about them looking "wary" or "disturbed"), which gives them an increased chance of detecting you - they may still detect you immediately, but the chance for this is slightly lower than before
* Added metal doors - can only be opened with levers
* Added bookshelves - can contain Manuscripts
* Added barred gates - doors that can be seen and shot through
* Added gratings - walls that can seen and shot through
* Added "pylons" - can be activated with a lever for various effects (most commonly burning the area around them)
* Added hanging vines - can be walked through, but blocks line of sight
* Added rusty chains - makes a noise when someone walks through them
* Items are more likely to spawn behind hidden/stuck/metal doors, and in areas away from the path to the stairs
* Added a bunch of unique artifacts, and removed the old (relatively bland) randomized amulets
* If you are Observant, you now get "level feelings" when there are unique monsters or artifacts (when entering a new level, or when monsters appear on the map), such as "I feel like I should examine this place thoroughly"
* Standing in lit cells (e.g. lit by the Electric Lantern) now temporarily reduces your shock
* Some rooms are generated from handmade templates (loaded from a text file)
* The game now models creature speeds in a new (probably more common and intuitive) way - creature speeds are expressed as percentages, e.g. 50%, 100%, or 300%, and different actions can have different speeds
* Many bonuses such as "occasionally performing a certain action instantly", now simply gives a speed bonus instead (to a specific action, or to all actions)
* Dodging also applies to ranged attacks
* The spells Slow, Paralyze, and Terrify Enemies have been merged into "Enfeeble Enemies"
* The spells Detect Monsters, Detect Traps, and Detect Items  have been merged into "Searching" (which also detects doors)
* Burning features only hurt creatures on the same cell (not adjacent to it)
* "Cloud Minds" is a Rod instead of a spell (the Rogue starts with this item, intead of the spell)
* Spells have "skill level" percentages, which determines the strength of the spell (and can also add additional spell effects) - the skill levels are primarily increased by casting from Manuscripts
* All backgrounds can learn spells, but the Occultist gains proficiency much faster (and as before, starts with a few spells and has access to unique spell casting traits)
* Different monsters have different spell skill levels - spells cast by more powerful monsters will typically hurt more, last longer, summon nastier monsters, etc
* Monster spells have individual cooldown counters (instead of random chances to be cast) - so a monster cannot for example spam Darkbolt several turns in a row
* The Warlock trait gives a chance to cast damage dealing spell multiple times (instead of the old "Charged" mechanic)
* Added trait "Electrically Inclined" - gives bonus to using Rods, Devices, Electric Lanterns, and electricity weapons
* Added trait "Silent" - all melee attacks are silent, opening and closing doors does not alert monsters
* Added trait "Magically Gifted" - +20% skill with all spells
* The traits "Tough" and "Rugged" also grants 1 armor point each
* The War Veteran background also starts with the "Healer" trait
* The Occultist starts with fixed (non-random) items and spells
* When quaffing Potion of Insight, you can manually choose which item to identify
* Potion of Insight always gives some XP, in addition to identifying an item (to avoid making them worthless if all items are identified)
* All Manuscripts are guaranteed to be identified when read (previously this only applied to potions)
* You search for secret doors and traps a bit further away, and your chance of finding them is affected by distance - for adjacent cells there is now a higher chance of detection than before (to avoid requiring hundreds of turns to detect an obvious hidden door)
* Traps are always immediately revealed when triggered by the player
* Some melee weapons can be used for breaching doors or destroying corpses more effectively with [w] (check the item descriptions)
* Chests can no longer be trapped (it was awkward to deal with, and didn't really bring anything to the game) - chests are now interacted with merely by bumping them (if they are not locked), kicking them, or using an Opening spell
* Rogues remain aware of monsters much longer than the other Backgrounds, and the other Backgrounds remain aware for a shorter duration than before
* Removed the random "I have a bad feeling about this..." shock events
* The Iron Suit and Asbestos Suit no longer gives penalties to aiming or spotting hidden monsters and objects
* Removed all negative effects from critically failing melee attacks (such as "I am exhausted"), except for a small chance of the weapon breaking - which can only happen while cursed
* Added more monsters
* Zombie-type monsters occasionally drop "Zombie Dust" when they are destroyed - can be thrown at living, non-undead monsters to paralyze them
* Added property "Deaf", deafening traps, and a deafening spell (for monsters)
* When attacking invisible monsters who are immune to the attack, a message is printed to indicate this (previously it was only printed for seen monsters)
* Added Spiked Maces - a weapon with a weight between medium and heavy, and with a chance to stun the victim
* The Mi-go Electric Gun no longer uses ammo, and costs Spirit Points to fire

Interface
* The throwing slot has been removed - instead you change which item to use for throwing by pressing [T] (which can be a wielded item or an item in the backpack) - pressing [t] throws the currently selected item (this also has gameplay effects, since you don't have to spend turns to equip different items to throw them)
* While holding lit explosives, the explosive is shown in the status lines instead of the selected throwing item (with yellow text)
* All active properties are printed with descriptions on the [@] character decsription page, and when [v]iewing monsters
* When picking a trait, instead of showing all available and blocked traits in the same list, the trait selection screen now has two modes (toggled with [TAB]) - the first mode shows available traits, and the second shows traits for which the prerequisites are not yet fulfilled
* Reduced "more" prompt message spam from traps (less interruption)
* Addded option to enable/disable fading rendering brightness with distance from player
* Added an option to ask for confirmation before lighting explosives
* Added a low HP warning
* Removed the "q" command - Ghoul characters now feed on corpses when "waiting" on them instead
* The map shown on the postmortem info screen is drawn with tiles (if that mode is enabled), and in color
* Added "New journey" option to postmortem menu, to immediately start a new game
* When [v]iewing the map, the game also prints messages for cells with detected unseen monsters ("There is a creature here")
* When [v]iewing detailed monster descriptions, the game prints hit chances for melee, ranged, and throwing attacks for the player and the monster - with the calculations of the total hit chances shown
* Weapons now merely display their own hit chance modifier (e.g. +5% or -10%), instead of your skill plus the weapon modifier (the old way was misleading, since more factors are involved when calculating actual hit chances during attacks)
* Removed the "Combat skills" section of the character description page
* Messages are printed when stepping on corpses
* Sound effects are played when browsing menus
* When entering player name, the previously used name is filled in as a default name
* The player symbol is colored yellow when carrying a lit Electric Lantern

Bug fixes
* Fixed a bug where dropping the Staff of the Pharaohs would cause the spell to be permanently lost, even if the staff was picked up again
* Fixed a bug that prevented hit chance bonus against unaware targets for ranged attacks

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=f624f3410d7034787692016bacb08ab22796f677

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 infraarcana/Makefile                               |  34 +-
 infraarcana/PLIST                                  | 375 ++++++++++++++-------
 infraarcana/distinfo                               |  25 +-
 infraarcana/files/infraarcana.sh                   |   2 +-
 infraarcana/patches/patch-CMakeLists.txt           |  22 ++
 infraarcana/patches/patch-Makefile                 |  15 -
 .../patches/patch-rl__utils_src_rl__utils.cpp      |  14 -
 infraarcana/patches/patch-src_config.cpp           |  15 +-
 infraarcana/patches/patch-src_input.cpp            | 240 -------------
 infraarcana/patches/patch-src_room.cpp             |  14 -
 infraarcana/patches/patch-src_save__handling.cpp   |  42 ---
 infraarcana/patches/patch-src_saving.cpp           |  61 ++++
 12 files changed, 363 insertions(+), 496 deletions(-)

diffs:
diff --git a/infraarcana/Makefile b/infraarcana/Makefile
index ed89286c61..c943bfe4a0 100644
--- a/infraarcana/Makefile
+++ b/infraarcana/Makefile
@@ -1,7 +1,7 @@
 # $NetBSD: Makefile,v 1.1 2015/08/19 19:42:29 yhardy Exp $
 
-DISTNAME=	ia-18.2
-PKGNAME=	infraarcana-18.2
+DISTNAME=	ia-19.0
+PKGNAME=	infraarcana-19.0
 CATEGORIES=	games
 MASTER_SITES=	${MASTER_SITE_GITHUB:=martin-tornqvist/}
 GITHUB_PROJECT=	ia
@@ -9,7 +9,7 @@ GITHUB_TAG=	v${PKGVERSION_NOREV}
 DIST_SUBDIR=	${PKGBASE}
 DISTFILES=	${DEFAULT_DISTFILES} rl_utils-${RLUTILSVER}.zip
 
-RLUTILSVER=	757bef657fa43e2d7f41192e07227a00c62236e4
+RLUTILSVER=	a3e73bf9ae3d8d086113ebf44448d121ce1112cc
 
 SITES.rl_utils-${RLUTILSVER}.zip=	\
 		-${MASTER_SITES:=rl_utils/archive/${RLUTILSVER}.zip}
@@ -21,18 +21,11 @@ LICENSE=	cc-by-nc-sa-v3.0-license
 
 WRKSRC=		${WRKDIR}/${DISTNAME}
 
-USE_LANGUAGES=	c++
-USE_TOOLS+=	gmake
+USE_CMAKE=	yes
+USE_LANGUAGES=	c c++
 USE_GAMESGROUP=	yes
 
 INSTALLATION_DIRS+=	bin
-INSTALLATION_DIRS+=	share/InfraArcana
-INSTALLATION_DIRS+=	share/InfraArcana/audio
-INSTALLATION_DIRS+=	share/InfraArcana/data
-INSTALLATION_DIRS+=	share/InfraArcana/images
-
-# See patches/patch-Makefile
-BUILD_MAKE_FLAGS+=	X11_LDFLAGS=${X11_LDFLAGS:Q}
 
 post-extract:
 	${UNZIP_CMD} -d ${WRKSRC}/rl_utils ${DISTDIR}/${DIST_SUBDIR}/rl_utils-${RLUTILSVER}.zip
@@ -40,21 +33,8 @@ post-extract:
 
 post-build:
 	${SED} -e 's,@PREFIX@,${PREFIX},g' < ${FILESDIR}/infraarcana.sh > ${WRKSRC}/infraarcana.sh
-	${TOUCH} ${WRKSRC}/target/data/highscores
-
-do-install:
-	${INSTALL_GAME} ${WRKSRC}/target/ia ${DESTDIR}${PREFIX}/share/InfraArcana
-	for f in ${WRKSRC}/target/*.txt; do \
-		${INSTALL_DATA} $$f ${DESTDIR}${PREFIX}/share/InfraArcana/$${f##*/}; \
-	done
-	for f in ${WRKSRC}/target/audio/*; do \
-		${INSTALL_DATA} $$f ${DESTDIR}${PREFIX}/share/InfraArcana/audio/$${f##*/}; \
-	done
-	for f in ${WRKSRC}/target/images/*; do \
-		${INSTALL_DATA} $$f ${DESTDIR}${PREFIX}/share/InfraArcana/images/$${f##*/}; \
-	done
-	${INSTALL_GAME_DATA} ${WRKSRC}/target/data/highscores ${DESTDIR}${PREFIX}/share/InfraArcana/data/
-	${INSTALL_GAME_DATA} ${WRKSRC}/target/data/save ${DESTDIR}${PREFIX}/share/InfraArcana/data/
+
+post-install:
 	${INSTALL_SCRIPT} ${WRKSRC}/infraarcana.sh ${DESTDIR}${PREFIX}/bin/infraarcana
 
 .include "../../audio/SDL2_mixer/buildlink3.mk"
diff --git a/infraarcana/PLIST b/infraarcana/PLIST
index d02f9d92ae..32d2a68961 100644
--- a/infraarcana/PLIST
+++ b/infraarcana/PLIST
@@ -1,123 +1,256 @@
 @comment $NetBSD$
 bin/infraarcana
-share/InfraArcana/audio/amb_001.ogg
-share/InfraArcana/audio/amb_002.ogg
-share/InfraArcana/audio/amb_003.ogg
-share/InfraArcana/audio/amb_004.ogg
-share/InfraArcana/audio/amb_005.ogg
-share/InfraArcana/audio/amb_006.ogg
-share/InfraArcana/audio/amb_007.ogg
-share/InfraArcana/audio/amb_008.ogg
-share/InfraArcana/audio/amb_009.ogg
-share/InfraArcana/audio/amb_010.ogg
-share/InfraArcana/audio/amb_011.ogg
-share/InfraArcana/audio/amb_012.ogg
-share/InfraArcana/audio/amb_013.ogg
-share/InfraArcana/audio/amb_014.ogg
-share/InfraArcana/audio/amb_015.ogg
-share/InfraArcana/audio/amb_016.ogg
-share/InfraArcana/audio/amb_017.ogg
-share/InfraArcana/audio/amb_018.ogg
-share/InfraArcana/audio/amb_019.ogg
-share/InfraArcana/audio/amb_020.ogg
-share/InfraArcana/audio/amb_021.ogg
-share/InfraArcana/audio/amb_022.ogg
-share/InfraArcana/audio/amb_023.ogg
-share/InfraArcana/audio/amb_024.ogg
-share/InfraArcana/audio/amb_025.ogg
-share/InfraArcana/audio/amb_026.ogg
-share/InfraArcana/audio/amb_027.ogg
-share/InfraArcana/audio/amb_028.ogg
-share/InfraArcana/audio/amb_029.ogg
-share/InfraArcana/audio/amb_030.ogg
-share/InfraArcana/audio/amb_031.ogg
-share/InfraArcana/audio/amb_032.ogg
-share/InfraArcana/audio/amb_033.ogg
-share/InfraArcana/audio/amb_034.ogg
-share/InfraArcana/audio/amb_035.ogg
-share/InfraArcana/audio/amb_036.ogg
-share/InfraArcana/audio/amb_037.ogg
-share/InfraArcana/audio/amb_038.ogg
-share/InfraArcana/audio/amb_039.ogg
-share/InfraArcana/audio/amb_040.ogg
-share/InfraArcana/audio/amb_041.ogg
-share/InfraArcana/audio/amb_042.ogg
-share/InfraArcana/audio/amb_043.ogg
-share/InfraArcana/audio/amb_044.ogg
-share/InfraArcana/audio/amb_045.ogg
-share/InfraArcana/audio/amb_046.ogg
-share/InfraArcana/audio/amb_047.ogg
-share/InfraArcana/audio/amb_048.ogg
-share/InfraArcana/audio/amb_049.ogg
-share/InfraArcana/audio/amb_050.ogg
-share/InfraArcana/audio/musica_cthulhiana-fragment-madness.ogg
-share/InfraArcana/audio/sfx_ape.ogg
-share/InfraArcana/audio/sfx_backpack.ogg
-share/InfraArcana/audio/sfx_bite.ogg
-share/InfraArcana/audio/sfx_boss_voice1.ogg
-share/InfraArcana/audio/sfx_boss_voice2.ogg
-share/InfraArcana/audio/sfx_death.ogg
-share/InfraArcana/audio/sfx_dog_snarl.ogg
-share/InfraArcana/audio/sfx_door_bang.ogg
-share/InfraArcana/audio/sfx_door_break.ogg
-share/InfraArcana/audio/sfx_door_close.ogg
-share/InfraArcana/audio/sfx_door_open.ogg
-share/InfraArcana/audio/sfx_electric_lantern.ogg
-share/InfraArcana/audio/sfx_explosion.ogg
-share/InfraArcana/audio/sfx_explosion_molotov.ogg
-share/InfraArcana/audio/sfx_flapping_wings.ogg
-share/InfraArcana/audio/sfx_fountain_drink.ogg
-share/InfraArcana/audio/sfx_gas.ogg
-share/InfraArcana/audio/sfx_ghoul_growl.ogg
-share/InfraArcana/audio/sfx_glop.ogg
-share/InfraArcana/audio/sfx_hiss.ogg
-share/InfraArcana/audio/sfx_hit_corpse_break.ogg
-share/InfraArcana/audio/sfx_hit_hard.ogg
-share/InfraArcana/audio/sfx_hit_medium.ogg
-share/InfraArcana/audio/sfx_hit_sharp.ogg
-share/InfraArcana/audio/sfx_hit_small.ogg
-share/InfraArcana/audio/sfx_insanity_rising.ogg
-share/InfraArcana/audio/sfx_machine_gun_fire.ogg
-share/InfraArcana/audio/sfx_machine_gun_reload.ogg
-share/InfraArcana/audio/sfx_metal_clank.ogg
-share/InfraArcana/audio/sfx_migo_gun.ogg
-share/InfraArcana/audio/sfx_miss_heavy.ogg
-share/InfraArcana/audio/sfx_miss_light.ogg
-share/InfraArcana/audio/sfx_miss_medium.ogg
-share/InfraArcana/audio/sfx_ooze_gurgle.ogg
-share/InfraArcana/audio/sfx_pickup.ogg
-share/InfraArcana/audio/sfx_pistol_fire.ogg
-share/InfraArcana/audio/sfx_pistol_reload.ogg
-share/InfraArcana/audio/sfx_potion_quaff.ogg
-share/InfraArcana/audio/sfx_ricochet.ogg
-share/InfraArcana/audio/sfx_shotgun_pump_fire.ogg
-share/InfraArcana/audio/sfx_shotgun_reload.ogg
-share/InfraArcana/audio/sfx_shotgun_sawed_off_fire.ogg
-share/InfraArcana/audio/sfx_spell_generic.ogg
-share/InfraArcana/audio/sfx_spell_shield_break.ogg
-share/InfraArcana/audio/sfx_spike_gun.ogg
-share/InfraArcana/audio/sfx_tomb_open.ogg
-share/InfraArcana/audio/sfx_wolf_howl.ogg
-share/InfraArcana/audio/sfx_zombie_growl.ogg
-share/InfraArcana/contact.txt
-share/InfraArcana/credits.txt
-share/InfraArcana/data/highscores
-share/InfraArcana/data/save
-share/InfraArcana/ia
-share/InfraArcana/images/11x19.png
-share/InfraArcana/images/11x22.png
-share/InfraArcana/images/12x24.png
-share/InfraArcana/images/16x24_DOS.png
-share/InfraArcana/images/16x24_typewriter_v1.png
-share/InfraArcana/images/16x24_typewriter_v2.png
-share/InfraArcana/images/16x24_v1.png
-share/InfraArcana/images/16x24_v2.png
-share/InfraArcana/images/16x24_v3.png
-share/InfraArcana/images/8x12_DOS.png
-share/InfraArcana/images/SPECIAL_ELITE_License.txt
-share/InfraArcana/images/gfx_16x24.png
-share/InfraArcana/images/main_menu_logo.png
-share/InfraArcana/images/skull.png
-share/InfraArcana/license.txt
-share/InfraArcana/manual.txt
-share/InfraArcana/release_history.txt
+share/InfraArcana/ia-debug/ia-debug
+share/InfraArcana/ia-debug/res/audio/amb_001.ogg
+share/InfraArcana/ia-debug/res/audio/amb_002.ogg
+share/InfraArcana/ia-debug/res/audio/amb_003.ogg
+share/InfraArcana/ia-debug/res/audio/amb_004.ogg
+share/InfraArcana/ia-debug/res/audio/amb_005.ogg
+share/InfraArcana/ia-debug/res/audio/amb_006.ogg
+share/InfraArcana/ia-debug/res/audio/amb_007.ogg
+share/InfraArcana/ia-debug/res/audio/amb_008.ogg
+share/InfraArcana/ia-debug/res/audio/amb_009.ogg
+share/InfraArcana/ia-debug/res/audio/amb_010.ogg
+share/InfraArcana/ia-debug/res/audio/amb_011.ogg
+share/InfraArcana/ia-debug/res/audio/amb_012.ogg
+share/InfraArcana/ia-debug/res/audio/amb_013.ogg
+share/InfraArcana/ia-debug/res/audio/amb_014.ogg
+share/InfraArcana/ia-debug/res/audio/amb_015.ogg
+share/InfraArcana/ia-debug/res/audio/amb_016.ogg
+share/InfraArcana/ia-debug/res/audio/amb_017.ogg
+share/InfraArcana/ia-debug/res/audio/amb_018.ogg
+share/InfraArcana/ia-debug/res/audio/amb_019.ogg
+share/InfraArcana/ia-debug/res/audio/amb_020.ogg
+share/InfraArcana/ia-debug/res/audio/amb_021.ogg
+share/InfraArcana/ia-debug/res/audio/amb_022.ogg
+share/InfraArcana/ia-debug/res/audio/amb_023.ogg
+share/InfraArcana/ia-debug/res/audio/amb_024.ogg
+share/InfraArcana/ia-debug/res/audio/amb_025.ogg
+share/InfraArcana/ia-debug/res/audio/amb_026.ogg
+share/InfraArcana/ia-debug/res/audio/amb_027.ogg
+share/InfraArcana/ia-debug/res/audio/amb_028.ogg
+share/InfraArcana/ia-debug/res/audio/amb_029.ogg
+share/InfraArcana/ia-debug/res/audio/amb_030.ogg
+share/InfraArcana/ia-debug/res/audio/amb_031.ogg
+share/InfraArcana/ia-debug/res/audio/amb_032.ogg
+share/InfraArcana/ia-debug/res/audio/amb_033.ogg
+share/InfraArcana/ia-debug/res/audio/amb_034.ogg
+share/InfraArcana/ia-debug/res/audio/amb_035.ogg
+share/InfraArcana/ia-debug/res/audio/amb_036.ogg
+share/InfraArcana/ia-debug/res/audio/amb_037.ogg
+share/InfraArcana/ia-debug/res/audio/amb_038.ogg
+share/InfraArcana/ia-debug/res/audio/amb_039.ogg
+share/InfraArcana/ia-debug/res/audio/amb_040.ogg
+share/InfraArcana/ia-debug/res/audio/amb_041.ogg
+share/InfraArcana/ia-debug/res/audio/amb_042.ogg
+share/InfraArcana/ia-debug/res/audio/amb_043.ogg
+share/InfraArcana/ia-debug/res/audio/amb_044.ogg
+share/InfraArcana/ia-debug/res/audio/amb_045.ogg
+share/InfraArcana/ia-debug/res/audio/amb_046.ogg
+share/InfraArcana/ia-debug/res/audio/amb_047.ogg
+share/InfraArcana/ia-debug/res/audio/amb_048.ogg
+share/InfraArcana/ia-debug/res/audio/amb_049.ogg
+share/InfraArcana/ia-debug/res/audio/amb_050.ogg
+share/InfraArcana/ia-debug/res/audio/musica_cthulhiana-fragment-madness.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_ape.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_backpack.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_bite.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_boss_voice1.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_boss_voice2.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_chains.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_death.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_dog_snarl.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_door_bang.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_door_break.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_door_close.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_door_open.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_electric_lantern.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_explosion.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_explosion_molotov.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_flapping_wings.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_fountain_drink.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_gas.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_ghoul_growl.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_glop.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_hiss.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_hit_corpse_break.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_hit_hard.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_hit_medium.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_hit_sharp.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_hit_small.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_insanity_rising.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_lever_pull.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_machine_gun_fire.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_machine_gun_reload.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_menu_browse.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_menu_select.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_metal_clank.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_migo_gun.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_miss_heavy.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_miss_light.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_miss_medium.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_monolith.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_ooze_gurgle.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_pickup.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_pistol_fire.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_pistol_reload.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_potion_quaff.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_ricochet.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_shotgun_pump_fire.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_shotgun_reload.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_shotgun_sawed_off_fire.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_spell_generic.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_spell_shield_break.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_spike_gun.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_tomb_open.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_wolf_howl.ogg
+share/InfraArcana/ia-debug/res/audio/sfx_zombie_growl.ogg
+share/InfraArcana/ia-debug/res/contact.txt
+share/InfraArcana/ia-debug/res/credits.txt
+share/InfraArcana/ia-debug/res/data/map/levels.txt
+share/InfraArcana/ia-debug/res/data/map/rooms.txt
+share/InfraArcana/ia-debug/res/data/save
+share/InfraArcana/ia-debug/res/images/11x19.png
+share/InfraArcana/ia-debug/res/images/11x22.png
+share/InfraArcana/ia-debug/res/images/12x24.png
+share/InfraArcana/ia-debug/res/images/16x24_DOS.png
+share/InfraArcana/ia-debug/res/images/16x24_typewriter_v1.png
+share/InfraArcana/ia-debug/res/images/16x24_typewriter_v2.png
+share/InfraArcana/ia-debug/res/images/16x24_v1.png
+share/InfraArcana/ia-debug/res/images/16x24_v2.png
+share/InfraArcana/ia-debug/res/images/16x24_v3.png
+share/InfraArcana/ia-debug/res/images/8x12_DOS.png
+share/InfraArcana/ia-debug/res/images/SPECIAL_ELITE_License.txt
+share/InfraArcana/ia-debug/res/images/gfx_16x24.png
+share/InfraArcana/ia-debug/res/images/main_menu_logo.png
+share/InfraArcana/ia-debug/res/images/skull.png
+share/InfraArcana/ia-debug/res/license.txt
+share/InfraArcana/ia-debug/res/manual.txt
+share/InfraArcana/ia-debug/res/release_history.txt
+share/InfraArcana/ia/ia
+share/InfraArcana/ia/res/audio/amb_001.ogg
+share/InfraArcana/ia/res/audio/amb_002.ogg
+share/InfraArcana/ia/res/audio/amb_003.ogg
+share/InfraArcana/ia/res/audio/amb_004.ogg
+share/InfraArcana/ia/res/audio/amb_005.ogg
+share/InfraArcana/ia/res/audio/amb_006.ogg
+share/InfraArcana/ia/res/audio/amb_007.ogg
+share/InfraArcana/ia/res/audio/amb_008.ogg
+share/InfraArcana/ia/res/audio/amb_009.ogg
+share/InfraArcana/ia/res/audio/amb_010.ogg
+share/InfraArcana/ia/res/audio/amb_011.ogg
+share/InfraArcana/ia/res/audio/amb_012.ogg
+share/InfraArcana/ia/res/audio/amb_013.ogg
+share/InfraArcana/ia/res/audio/amb_014.ogg
+share/InfraArcana/ia/res/audio/amb_015.ogg
+share/InfraArcana/ia/res/audio/amb_016.ogg
+share/InfraArcana/ia/res/audio/amb_017.ogg
+share/InfraArcana/ia/res/audio/amb_018.ogg
+share/InfraArcana/ia/res/audio/amb_019.ogg
+share/InfraArcana/ia/res/audio/amb_020.ogg
+share/InfraArcana/ia/res/audio/amb_021.ogg
+share/InfraArcana/ia/res/audio/amb_022.ogg
+share/InfraArcana/ia/res/audio/amb_023.ogg
+share/InfraArcana/ia/res/audio/amb_024.ogg
+share/InfraArcana/ia/res/audio/amb_025.ogg
+share/InfraArcana/ia/res/audio/amb_026.ogg
+share/InfraArcana/ia/res/audio/amb_027.ogg
+share/InfraArcana/ia/res/audio/amb_028.ogg
+share/InfraArcana/ia/res/audio/amb_029.ogg
+share/InfraArcana/ia/res/audio/amb_030.ogg
+share/InfraArcana/ia/res/audio/amb_031.ogg
+share/InfraArcana/ia/res/audio/amb_032.ogg
+share/InfraArcana/ia/res/audio/amb_033.ogg
+share/InfraArcana/ia/res/audio/amb_034.ogg
+share/InfraArcana/ia/res/audio/amb_035.ogg
+share/InfraArcana/ia/res/audio/amb_036.ogg
+share/InfraArcana/ia/res/audio/amb_037.ogg
+share/InfraArcana/ia/res/audio/amb_038.ogg
+share/InfraArcana/ia/res/audio/amb_039.ogg
+share/InfraArcana/ia/res/audio/amb_040.ogg
+share/InfraArcana/ia/res/audio/amb_041.ogg
+share/InfraArcana/ia/res/audio/amb_042.ogg
+share/InfraArcana/ia/res/audio/amb_043.ogg
+share/InfraArcana/ia/res/audio/amb_044.ogg
+share/InfraArcana/ia/res/audio/amb_045.ogg
+share/InfraArcana/ia/res/audio/amb_046.ogg
+share/InfraArcana/ia/res/audio/amb_047.ogg
+share/InfraArcana/ia/res/audio/amb_048.ogg
+share/InfraArcana/ia/res/audio/amb_049.ogg
+share/InfraArcana/ia/res/audio/amb_050.ogg
+share/InfraArcana/ia/res/audio/musica_cthulhiana-fragment-madness.ogg
+share/InfraArcana/ia/res/audio/sfx_ape.ogg
+share/InfraArcana/ia/res/audio/sfx_backpack.ogg
+share/InfraArcana/ia/res/audio/sfx_bite.ogg
+share/InfraArcana/ia/res/audio/sfx_boss_voice1.ogg
+share/InfraArcana/ia/res/audio/sfx_boss_voice2.ogg
+share/InfraArcana/ia/res/audio/sfx_chains.ogg
+share/InfraArcana/ia/res/audio/sfx_death.ogg
+share/InfraArcana/ia/res/audio/sfx_dog_snarl.ogg
+share/InfraArcana/ia/res/audio/sfx_door_bang.ogg
+share/InfraArcana/ia/res/audio/sfx_door_break.ogg
+share/InfraArcana/ia/res/audio/sfx_door_close.ogg
+share/InfraArcana/ia/res/audio/sfx_door_open.ogg
+share/InfraArcana/ia/res/audio/sfx_electric_lantern.ogg
+share/InfraArcana/ia/res/audio/sfx_explosion.ogg
+share/InfraArcana/ia/res/audio/sfx_explosion_molotov.ogg
+share/InfraArcana/ia/res/audio/sfx_flapping_wings.ogg
+share/InfraArcana/ia/res/audio/sfx_fountain_drink.ogg
+share/InfraArcana/ia/res/audio/sfx_gas.ogg
+share/InfraArcana/ia/res/audio/sfx_ghoul_growl.ogg
+share/InfraArcana/ia/res/audio/sfx_glop.ogg
+share/InfraArcana/ia/res/audio/sfx_hiss.ogg
+share/InfraArcana/ia/res/audio/sfx_hit_corpse_break.ogg
+share/InfraArcana/ia/res/audio/sfx_hit_hard.ogg
+share/InfraArcana/ia/res/audio/sfx_hit_medium.ogg
+share/InfraArcana/ia/res/audio/sfx_hit_sharp.ogg
+share/InfraArcana/ia/res/audio/sfx_hit_small.ogg
+share/InfraArcana/ia/res/audio/sfx_insanity_rising.ogg
+share/InfraArcana/ia/res/audio/sfx_lever_pull.ogg
+share/InfraArcana/ia/res/audio/sfx_machine_gun_fire.ogg
+share/InfraArcana/ia/res/audio/sfx_machine_gun_reload.ogg
+share/InfraArcana/ia/res/audio/sfx_menu_browse.ogg
+share/InfraArcana/ia/res/audio/sfx_menu_select.ogg
+share/InfraArcana/ia/res/audio/sfx_metal_clank.ogg
+share/InfraArcana/ia/res/audio/sfx_migo_gun.ogg
+share/InfraArcana/ia/res/audio/sfx_miss_heavy.ogg
+share/InfraArcana/ia/res/audio/sfx_miss_light.ogg
+share/InfraArcana/ia/res/audio/sfx_miss_medium.ogg
+share/InfraArcana/ia/res/audio/sfx_monolith.ogg
+share/InfraArcana/ia/res/audio/sfx_ooze_gurgle.ogg
+share/InfraArcana/ia/res/audio/sfx_pickup.ogg
+share/InfraArcana/ia/res/audio/sfx_pistol_fire.ogg
+share/InfraArcana/ia/res/audio/sfx_pistol_reload.ogg
+share/InfraArcana/ia/res/audio/sfx_potion_quaff.ogg
+share/InfraArcana/ia/res/audio/sfx_ricochet.ogg
+share/InfraArcana/ia/res/audio/sfx_shotgun_pump_fire.ogg
+share/InfraArcana/ia/res/audio/sfx_shotgun_reload.ogg
+share/InfraArcana/ia/res/audio/sfx_shotgun_sawed_off_fire.ogg
+share/InfraArcana/ia/res/audio/sfx_spell_generic.ogg
+share/InfraArcana/ia/res/audio/sfx_spell_shield_break.ogg
+share/InfraArcana/ia/res/audio/sfx_spike_gun.ogg
+share/InfraArcana/ia/res/audio/sfx_tomb_open.ogg
+share/InfraArcana/ia/res/audio/sfx_wolf_howl.ogg
+share/InfraArcana/ia/res/audio/sfx_zombie_growl.ogg
+share/InfraArcana/ia/res/contact.txt
+share/InfraArcana/ia/res/credits.txt
+share/InfraArcana/ia/res/data/map/levels.txt
+share/InfraArcana/ia/res/data/map/rooms.txt
+share/InfraArcana/ia/res/data/save
+share/InfraArcana/ia/res/images/11x19.png
+share/InfraArcana/ia/res/images/11x22.png
+share/InfraArcana/ia/res/images/12x24.png
+share/InfraArcana/ia/res/images/16x24_DOS.png
+share/InfraArcana/ia/res/images/16x24_typewriter_v1.png
+share/InfraArcana/ia/res/images/16x24_typewriter_v2.png
+share/InfraArcana/ia/res/images/16x24_v1.png
+share/InfraArcana/ia/res/images/16x24_v2.png
+share/InfraArcana/ia/res/images/16x24_v3.png
+share/InfraArcana/ia/res/images/8x12_DOS.png
+share/InfraArcana/ia/res/images/SPECIAL_ELITE_License.txt
+share/InfraArcana/ia/res/images/gfx_16x24.png
+share/InfraArcana/ia/res/images/main_menu_logo.png
+share/InfraArcana/ia/res/images/skull.png
+share/InfraArcana/ia/res/license.txt
+share/InfraArcana/ia/res/manual.txt
+share/InfraArcana/ia/res/release_history.txt
diff --git a/infraarcana/distinfo b/infraarcana/distinfo
index 729b6e8672..0e4a171b94 100644
--- a/infraarcana/distinfo
+++ b/infraarcana/distinfo
@@ -1,16 +1,13 @@
 $NetBSD: distinfo,v 1.1 2015/08/19 19:42:29 yhardy Exp $
 
-SHA1 (infraarcana/ia-18.2.tar.gz) = 73e21a3c41b130d937b123268678765612b7c7da
-RMD160 (infraarcana/ia-18.2.tar.gz) = 9b7d499506246fe1246e562c4cf81ee64f3630d4
-SHA512 (infraarcana/ia-18.2.tar.gz) = 4a6d09c0836ad0337e0e92e1f554551c2f93c65767779072abce9d9482b5aabc20da14eeb66bfda80d18254e1b42b71c93c4c1da8b5e449ce526db07be73885d
-Size (infraarcana/ia-18.2.tar.gz) = 33576360 bytes
-SHA1 (infraarcana/rl_utils-757bef657fa43e2d7f41192e07227a00c62236e4.zip) = bc96a273a940cd218b9f7ea0819eda2ef45cc920
-RMD160 (infraarcana/rl_utils-757bef657fa43e2d7f41192e07227a00c62236e4.zip) = 51ba0809f8fb915164039eb396a68d34534f9515
-SHA512 (infraarcana/rl_utils-757bef657fa43e2d7f41192e07227a00c62236e4.zip) = 9ad70df01991302fa2b33739c1971072447daf65db1fc5d550208be7f31037bc2558a4f83b2eb5f769a127743949b177b9ac8c979d33c4da80cea3a5edacbf97
-Size (infraarcana/rl_utils-757bef657fa43e2d7f41192e07227a00c62236e4.zip) = 13629 bytes
-SHA1 (patch-Makefile) = fee6998b86b63e1e67ee3d55561865d2f4565013
-SHA1 (patch-rl__utils_src_rl__utils.cpp) = 2b5a965e4f4f818f3bc94c52302b9d5f3d022d31
-SHA1 (patch-src_config.cpp) = ac2ee03728e5dc0e7cd851bd5f9ef0392ae27f22
-SHA1 (patch-src_input.cpp) = a84f3c470d08c9fa84de766fd951286a93dc1855
-SHA1 (patch-src_room.cpp) = de4bd35d31cd9c3359a061307511ef5c0e8bf3e0
-SHA1 (patch-src_save__handling.cpp) = 634c7a6db5870861e0d8e1a70a341776c16464a6
+SHA1 (infraarcana/ia-19.0.tar.gz) = 65d1f1b223715cf95d35fe917479dab1a76b623c
+RMD160 (infraarcana/ia-19.0.tar.gz) = eae3748894291840e773dbb61b468b62a87cb31b
+SHA512 (infraarcana/ia-19.0.tar.gz) = d611ef0eeecc131d7ad56b00f490870885e640d1116d18cf5ea0ec69cca76fc8bff0573b30e3b36452a2f73dece3ca595b4ee0d7219b86111525255d52c75bbd
+Size (infraarcana/ia-19.0.tar.gz) = 35192419 bytes
+SHA1 (infraarcana/rl_utils-a3e73bf9ae3d8d086113ebf44448d121ce1112cc.zip) = c491d4e4bb2b93fbadcfeb525501e7e1e1c510c0
+RMD160 (infraarcana/rl_utils-a3e73bf9ae3d8d086113ebf44448d121ce1112cc.zip) = 4cb45291fcc2b8335a0cd42d1370b0550cd4923d
+SHA512 (infraarcana/rl_utils-a3e73bf9ae3d8d086113ebf44448d121ce1112cc.zip) = 12107c4d2daa45abf3044123926e2f147c41c509b85a6bcbad71e9296f85b9322b1b68ac63b5b894e12107ded3dc0d527138db31facdef2d34f6f3e7290ed16f
+Size (infraarcana/rl_utils-a3e73bf9ae3d8d086113ebf44448d121ce1112cc.zip) = 17654 bytes
+SHA1 (patch-CMakeLists.txt) = f57baac4f727c5af6c3893970a1916fd0bb194ab
+SHA1 (patch-src_config.cpp) = 1dfb902992f1dfdbff171991410a0b73c2f666b0
+SHA1 (patch-src_saving.cpp) = ea5ee85b2dea39d99bb4a5e609c89c166b578fb3
diff --git a/infraarcana/files/infraarcana.sh b/infraarcana/files/infraarcana.sh
index b7e22f3450..84c87f22be 100644
--- a/infraarcana/files/infraarcana.sh
+++ b/infraarcana/files/infraarcana.sh
@@ -1,3 +1,3 @@
 #!/bin/sh
 
-cd @PREFIX@/share/InfraArcana && exec ./ia "$@"
+cd @PREFIX@/share/InfraArcana/ia && exec ./ia "$@"
diff --git a/infraarcana/patches/patch-CMakeLists.txt b/infraarcana/patches/patch-CMakeLists.txt
new file mode 100644
index 0000000000..a070fff4f7
--- /dev/null
+++ b/infraarcana/patches/patch-CMakeLists.txt
@@ -0,0 +1,22 @@
+$NetBSD$
+
+Use the pkgsrc installation prefix instead of the local directory.
+
+--- CMakeLists.txt.orig	2017-07-29 19:46:52.843171112 +0000
++++ CMakeLists.txt
+@@ -484,10 +484,10 @@ endif()
+ # ------------------------------------------------------------------------------
+ # Packaging
+ # ------------------------------------------------------------------------------
+-set(CMAKE_INSTALL_PREFIX target)
++#set(CMAKE_INSTALL_PREFIX target)
+ 
+-install(TARGETS ia       DESTINATION ia)
+-install(TARGETS ia-debug DESTINATION ia-debug)
++install(TARGETS ia       DESTINATION share/InfraArcana/ia)
++install(TARGETS ia-debug DESTINATION share/InfraArcana/ia-debug)
+ 
+-install(DIRECTORY res DESTINATION ia)
+-install(DIRECTORY res DESTINATION ia-debug)
++install(DIRECTORY res DESTINATION share/InfraArcana/ia)
++install(DIRECTORY res DESTINATION share/InfraArcana/ia-debug)
diff --git a/infraarcana/patches/patch-Makefile b/infraarcana/patches/patch-Makefile
deleted file mode 100644
index 71b18f6484..0000000000
--- a/infraarcana/patches/patch-Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-$NetBSD$
-
-Add X11 search path for libraries.
-Is this a bug in devel/SDL2 ?
-
---- Makefile.orig	2016-07-02 15:42:10.000000000 +0000
-+++ Makefile
-@@ -91,6 +91,7 @@ release debug: LD_FLAGS = \
-   $(shell sdl2-config --libs) \
-   -lSDL2_image \
-   -lSDL2_mixer \
-+  ${X11_LDFLAGS} \
-   #
- 
- # Executable
diff --git a/infraarcana/patches/patch-rl__utils_src_rl__utils.cpp b/infraarcana/patches/patch-rl__utils_src_rl__utils.cpp
deleted file mode 100644
index 3e33985e23..0000000000
--- a/infraarcana/patches/patch-rl__utils_src_rl__utils.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-$NetBSD$
-
-Fix includes (for accumulator).
-
---- rl_utils/src/rl_utils.cpp.orig	2016-04-30 08:38:48.000000000 +0000
-+++ rl_utils/src/rl_utils.cpp
-@@ -4,6 +4,7 @@
- #include <vector>
- #include <cassert>
- #include <sstream>
-+#include <numeric>
- 
- #include "mersenne_twister.hpp"
- 
diff --git a/infraarcana/patches/patch-src_config.cpp b/infraarcana/patches/patch-src_config.cpp
index ee90481e8d..9118d7241a 100644
--- a/infraarcana/patches/patch-src_config.cpp
+++ b/infraarcana/patches/patch-src_config.cpp
@@ -2,15 +2,15 @@ $NetBSD: patch-src_Config.cpp,v 1.1 2015/08/19 19:42:29 yhardy Exp $
 
 Store config in home directory
 
---- src/config.cpp.orig	2016-07-02 15:42:10.000000000 +0000
+--- src/config.cpp.orig	2017-07-20 14:19:08.000000000 +0000
 +++ src/config.cpp
-@@ -512,7 +512,16 @@ void draw(const Menu_browser* const brow
+@@ -369,7 +369,16 @@ void player_sets_option(const MenuBrowse
  void read_file(std::vector<std::string>& lines)
  {
      std::ifstream file;
--    file.open("data/config");
+-    file.open("res/data/config");
 +    char *home = getenv("HOME");
-+    std::string config = "data/config";
++    std::string config = "res/data/config";
 +
 +    if (home != NULL)
 +    {
@@ -22,13 +22,12 @@ Store config in home directory
  
      if (file.is_open())
      {
-@@ -605,7 +614,16 @@ void set_variables_from_lines(std::vecto
- void write_lines_to_file(std::vector<std::string>& lines)
+@@ -454,6 +463,16 @@ void write_lines_to_file(const std::vect
  {
      std::ofstream file;
--    file.open("data/config", std::ios::trunc);
+     file.open("res/data/config", std::ios::trunc);
 +    char *home = getenv("HOME");
-+    std::string config = "data/config";
++    std::string config = "res/data/config";
 +
 +    if (home != NULL)
 +    {
diff --git a/infraarcana/patches/patch-src_input.cpp b/infraarcana/patches/patch-src_input.cpp
deleted file mode 100644
index 67dfedd7c5..0000000000
--- a/infraarcana/patches/patch-src_input.cpp
+++ /dev/null
@@ -1,240 +0,0 @@
-$NetBSD$
-
-SDL_StartTextInput() does not seem to provide the keys as expected,
-so work around the problem by using the key codes (this does not
-ignore SDL_TEXTINPUT events, it handles the case when SDL_KEYDOWN
-is sent instead).
-
-It looks like devel/SDL2 must depend on inputmethod/ibus for
-SDL_StartTextInput() to work as expected (*cringe*).  Alternatively,
-we need to define X_HAVE_UTF8_STRING when compiling devel/SDL and
-devel/SDL2, but the configure scripts don't provide a means to
-enable this flag (and I could not get the input to work with this
-flag - so I am not sure if the problem is solved in this case).
-
---- src/input.cpp.orig	2016-07-02 15:42:10.000000000 +0000
-+++ src/input.cpp
-@@ -1295,6 +1295,223 @@ Key_data input(const bool IS_O_RETURN)
-                     }
-                     break;
- 
-+                case SDLK_QUOTE:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('"', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_COMMA:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('<', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_MINUS:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('_', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_PERIOD:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('>', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_SLASH:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('?', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_0:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data(')', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_1:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('!', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_2:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('@', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_3:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('#', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_4:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('$', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_5:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('%', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_6:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('^', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_7:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('&', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_8:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('*', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_9:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('(', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_SEMICOLON:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data(':', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_EQUALS:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('+', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_LEFTBRACKET:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('{', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_BACKSLASH:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('|', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_RIGHTBRACKET:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('}', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_BACKQUOTE:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data('~', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                case SDLK_a:
-+                case SDLK_b:
-+                case SDLK_c:
-+                case SDLK_d:
-+                case SDLK_e:
-+                case SDLK_f:
-+                case SDLK_g:
-+                case SDLK_h:
-+                case SDLK_i:
-+                case SDLK_j:
-+                case SDLK_k:
-+                case SDLK_l:
-+                case SDLK_m:
-+                case SDLK_n:
-+                case SDLK_o:
-+                case SDLK_p:
-+                case SDLK_q:
-+                case SDLK_r:
-+                case SDLK_s:
-+                case SDLK_t:
-+                case SDLK_u:
-+                case SDLK_v:
-+                case SDLK_w:
-+                case SDLK_x:
-+                case SDLK_y:
-+                case SDLK_z:
-+                    if (IS_SHIFT_HELD && !is_done)
-+                    {
-+                        ret = Key_data(sdl_key-32, sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                    if (!is_done)
-+                    {
-+                        ret = Key_data(sdl_key, sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                        is_done = true;
-+                    }
-+                    break;
-+
-+                case SDLK_KP_DIVIDE:
-+                    ret = Key_data('/', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                    is_done = true;
-+                    break;
-+                case SDLK_KP_MULTIPLY:
-+                    ret = Key_data('*', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                    is_done = true;
-+                    break;
-+                case SDLK_KP_MINUS:
-+                    ret = Key_data('-', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                    is_done = true;
-+                    break;
-+                case SDLK_KP_PLUS:
-+                    ret = Key_data('+', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                    is_done = true;
-+                    break;
-+                case SDLK_KP_1:
-+                    ret = Key_data('1', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                    is_done = true;
-+                    break;
-+                case SDLK_KP_2:
-+                    ret = Key_data('2', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                    is_done = true;
-+                    break;
-+                case SDLK_KP_3:
-+                    ret = Key_data('3', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                    is_done = true;
-+                    break;
-+                case SDLK_KP_4:
-+                    ret = Key_data('4', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                    is_done = true;
-+                    break;
-+                case SDLK_KP_5:
-+                    ret = Key_data('5', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                    is_done = true;
-+                    break;
-+                case SDLK_KP_6:
-+                    ret = Key_data('6', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                    is_done = true;
-+                    break;
-+                case SDLK_KP_7:
-+                    ret = Key_data('7', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                    is_done = true;
-+                    break;
-+                case SDLK_KP_8:
-+                    ret = Key_data('8', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                    is_done = true;
-+                    break;
-+                case SDLK_KP_9:
-+                    ret = Key_data('9', sdl_key, IS_SHIFT_HELD, IS_CTRL_HELD);
-+                    is_done = true;
-+                    break;
-+
-                 case SDLK_SPACE:
-                 case SDLK_BACKSPACE:
-                 case SDLK_TAB:
diff --git a/infraarcana/patches/patch-src_room.cpp b/infraarcana/patches/patch-src_room.cpp
deleted file mode 100644
index 953fedb511..0000000000
--- a/infraarcana/patches/patch-src_room.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-$NetBSD$
-
-Fix includes (for iota).
-
---- src/room.cpp.orig	2016-07-02 15:42:10.000000000 +0000
-+++ src/room.cpp
-@@ -2,6 +2,7 @@
- 
- #include <algorithm>
- #include <climits>
-+#include <numeric>
- 
- #include "init.hpp"
- #include "map.hpp"
diff --git a/infraarcana/patches/patch-src_save__handling.cpp b/infraarcana/patches/patch-src_save__handling.cpp
deleted file mode 100644
index 454a6caa2c..0000000000
--- a/infraarcana/patches/patch-src_save__handling.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-$NetBSD: patch-src_SaveHandling.cpp,v 1.1 2015/08/19 19:42:29 yhardy Exp $
-
-Store saves in home directory
-
---- src/save_handling.cpp.orig	2016-07-02 15:42:10.000000000 +0000
-+++ src/save_handling.cpp
-@@ -104,8 +104,16 @@ void load_modules()
- void write_file()
- {
-     std::ofstream file;
-+    char *home = getenv("HOME");
-+    std::string save = "data/save";
- 
--    file.open("data/save", std::ios::trunc);
-+    if (home != NULL)
-+    {
-+        save = home;
-+        save += "/.ia_save";
-+    }
-+
-+    file.open(save, std::ios::trunc);
- 
-     if (file.is_open())
-     {
-@@ -125,7 +133,16 @@ void write_file()
- 
- void read_file()
- {
--    std::ifstream file("data/save");
-+    char *home = getenv("HOME");
-+    std::string save = "data/save";
-+
-+    if (home != NULL)
-+    {
-+        save = home;
-+        save += "/.ia_save";
-+    }
-+
-+    std::ifstream file(save);
- 
-     if (file.is_open())
-     {
diff --git a/infraarcana/patches/patch-src_saving.cpp b/infraarcana/patches/patch-src_saving.cpp
new file mode 100644
index 0000000000..8b7265ea46
--- /dev/null
+++ b/infraarcana/patches/patch-src_saving.cpp
@@ -0,0 +1,61 @@
+$NetBSD: patch-src_SaveHandling.cpp,v 1.1 2015/08/19 19:42:29 yhardy Exp $
+
+Store saves in home directory
+
+--- src/saving.cpp.orig	2017-07-20 14:19:08.000000000 +0000
++++ src/saving.cpp
+@@ -103,8 +103,16 @@ void load_modules()
+ void write_file()
+ {
+     std::ofstream file;
++    char *home = getenv("HOME");
++    std::string save = "res/data/save";
+ 
+-    file.open("res/data/save", std::ios::trunc);
++    if (home != NULL)
++    {
++        save = home;
++        save += "/.ia_save";
++    }
++
++    file.open(save, std::ios::trunc);
+ 
+     if (file.is_open())
+     {
+@@ -124,7 +132,16 @@ void write_file()
+ 
+ void read_file()
+ {
+-    std::ifstream file("res/data/save");
++    char *home = getenv("HOME");
++    std::string save = "res/data/save";
++
++    if (home != NULL)
++    {
++        save = home;
++        save += "/.ia_save";
++    }
++
++    std::ifstream file(save);
+ 
+     if (file.is_open())
+     {
+@@ -208,7 +225,17 @@ void load_game()
+ 
+ bool is_save_available()
+ {
+-    std::ifstream file("res/data/save");
++    std::ifstream file;
++    char *home = getenv("HOME");
++    std::string save = "res/data/save";
++
++    if (home != NULL)
++    {
++        save = home;
++        save += "/.ia_save";
++    }
++
++    file.open(save);
+ 
+     if (file.good())
+     {


Home | Main Index | Thread Index | Old Index