diff options
-rw-r--r-- | crawl-ref/source/art-data.txt | 548 | ||||
-rw-r--r-- | crawl-ref/source/artefact.cc | 4 | ||||
-rw-r--r-- | crawl-ref/source/artefact.h | 2 | ||||
-rw-r--r-- | crawl-ref/source/makefile_tiles.mgw | 2 | ||||
-rw-r--r-- | crawl-ref/source/makefile_tiles.unix | 2 | ||||
-rw-r--r-- | crawl-ref/source/makeitem.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/rltiles/dc-item.txt | 24 | ||||
-rw-r--r-- | crawl-ref/source/rltiles/dc-unrand.txt | 84 | ||||
-rw-r--r-- | crawl-ref/source/rltiles/dc-urand.txt | 70 | ||||
-rw-r--r-- | crawl-ref/source/rltiles/tiledef-unrand.cc | 90 | ||||
-rw-r--r-- | crawl-ref/source/rltiles/tiledef-unrand.h | 6 | ||||
-rw-r--r-- | crawl-ref/source/tilepick.cc | 102 | ||||
-rwxr-xr-x | crawl-ref/source/util/art-data.pl | 154 |
13 files changed, 676 insertions, 414 deletions
diff --git a/crawl-ref/source/art-data.txt b/crawl-ref/source/art-data.txt index b77e472d78..3b1ec64a08 100644 --- a/crawl-ref/source/art-data.txt +++ b/crawl-ref/source/art-data.txt @@ -13,6 +13,9 @@ # Changing the name of an unrand will change its automatically # generated enumeration, unless its enumeration is forced with ENUM. # +# "ENUM: FOO" can be used to force the enumeration for an unrand to be +# "UNRAND_FOO", for cases where the automatically generated enumerations +# of different unrandarts conflict. # # Add new artefact definitions at the end of the file; doing so should cause # no problems with save-file compatibilty, but for tile builds it will @@ -21,13 +24,34 @@ # strange behaviour in games saved previous to the change, and deleting # definitions will break savefile compatibility. # +# ####### TILES ############################# +# # Each unrandart needs two tiles, one item tile and one equipment tile for the -# player doll. The former needs to be placed into rltiles/item and defined in -# dc-item.txt, the latter in the appropriate player/ subfolder and defined in -# dc-player.txt. In tilepick.cc the unrandart must then be assigned to the tile -# name defined in the dc-***.txt. -# For a start, placeholders (e.g. reference to the base type tiles) are fine, -# but they'll eventually need to be replaced with proper tiles. +# player doll. For the former, you can define the image file within this +# file using the keyword TILE. The files are assumed to be png and the syntax +# does not include the file type. The artefacts' base type decides where a +# tile needs to be placed. These are as follows: +# Weapons: rltiles/item/weapon/artefact +# Armour: rltiles/item/armour/artefact +# Rings: rltiles/item/ring/artefact +# Amulets: rltiles/item/amulet/artefact +# +# For a start, placeholders (e.g. the base type tiles) are fine, but they'll +# eventually need to be replaced with proper tiles. +# If the tile requires a black outline (because it would be hard to see +# otherwise) add "BOOL: tilerim". Otherwise the image is used without +# modification. +# +# For the equipment tile, place the tile into the appropriate subfolder of +# player/ subfolder and define it in dc-player.txt. You'll also need to assign +# these tiles to the corresponding artefacts in tilepick.cc, using the keyword +# "TILEP_" plus the equipment slot (as defined by the most recent "parts_ctg" +# in dc-player.txt) plus the actual definition, e.g. TILEP_CLOAK_RATSKIN_CLOAK. +# To find the places where you'll need to add your new tile, simply search +# tilepick.cc for another artefact of the same base type. If no special tile +# has been defined the code will fall through to tiles according to the +# base type and colour. +# ############################################################################# @@ -51,6 +75,7 @@ # * poison: Grants poison resistance. # * rnd_tele: Induces random teleportation. # * seeinv: Lets wearer see invisible. +# * tilerim: Adds a black outline to the tile, see above section. # ENUM: Forces the artefact's enumeration literal to something specific. # For example, "ENUM: FOO" gives the enumeration "UNRAND_FOO". The @@ -66,9 +91,9 @@ # OBJ: The enumerations of the base type and sub type of the artefact, # separated by a dash. E.g., OBJ_WEAPONS/WPN_SWORD -# PLUS: The pluses of artefact. For an object with two pluses, -# is specified with "plus/plus2". For an object with just one plus, -# is specified with "plus". +# PLUS: The pluses of the artefact. For an object with two pluses, +# this is specified with "plus/plus2". For an object with just one plus, +# this is specified with "plus". ##### @@ -102,6 +127,8 @@ # MUTATE: Gives artifact mutagenic glow. # STEALTH: Stealth modifier. # STR: Strenght modifier. +# TILE: The file containing the artefact's tile, with file type png. +# See Tiles section above. #################################################################3 @@ -120,6 +147,7 @@ APPEAR: golden long sword OBJ: OBJ_WEAPONS/WPN_LONG_SWORD PLUS: +7/+7 COLOUR: YELLOW +TILE: spwpn_singing_sword DESC_ID: This blessed weapon loves nothing more than to sing to its owner, whether they want it to or not. @@ -128,6 +156,7 @@ APPEAR: bloodstained battleaxe OBJ: OBJ_WEAPONS/WPN_BATTLEAXE PLUS: +3/+11 COLOUR: RED +TILE: spwpn_wrath_of_trog DESC_ID: This was the favourite weapon of the old god Trog, before it was lost one day. It induces a bloodthirsty berserker rage in anyone who uses it to strike another. @@ -137,6 +166,7 @@ APPEAR: shimmering mace OBJ: OBJ_WEAPONS/WPN_MACE PLUS: 0/0 # Set on generation COLOUR: BLACK # Set on generation +TILE: spwpn_mace_of_variability DESC_ID: It is rather unreliable. NAME: Glaive of Prune @@ -144,6 +174,7 @@ APPEAR: purple glaive OBJ: OBJ_WEAPONS/WPN_GLAIVE PLUS: 0/+12 COLOUR: MAGENTA +TILE: spwpn_glaive_of_prune DESC_ID: It is the creation of a mad god, and carries a curse which transforms anyone possessing it into a prune. Fortunately, the curse works very slowly, and one can use it briefly with no @@ -154,6 +185,8 @@ APPEAR: chunky great sword OBJ: OBJ_WEAPONS/WPN_GREAT_SWORD PLUS: 0/0 # Set on wield COLOUR: RED +TILE: spwpn_sword_of_power +BOOL: tilerim DESC_ID: It rewards the powerful with power and the meek with weakness. NAME: Staff of Olgreb @@ -161,6 +194,7 @@ APPEAR: green glowing staff OBJ: OBJ_WEAPONS/WPN_QUARTERSTAFF PLUS: 0/0 # Set on wield COLOUR: GREEN +TILE: spwpn_staff_of_olgreb BRAND: SPWPN_VENOM BOOL: poison DESC_ID: It was the magical weapon wielded by the mighty wizard Olgreb @@ -173,6 +207,7 @@ APPEAR: ephemeral quarterstaff OBJ: OBJ_WEAPONS/WPN_QUARTERSTAFF PLUS: 0/0 # Set on wield COLOUR: BROWN +TILE: spwpn_wucad_mu DESC_ID: Its power varies in proportion to its wielder's intelligence. Using it can be a bit risky. @@ -181,6 +216,7 @@ APPEAR: ivory dagger OBJ: OBJ_WEAPONS/WPN_DAGGER PLUS: +3/+4 COLOUR: WHITE +TILE: spwpn_vampires_tooth BRAND: SPWPN_VAMPIRICISM DESC_ID: It is lethally vampiric. @@ -189,6 +225,7 @@ APPEAR: warped scythe OBJ: OBJ_WEAPONS/WPN_SCYTHE PLUS: +13/+13 COLOUR: DARKGREY +TILE: spwpn_scythe_of_curses BOOL: cursed DESC_ID: This weapon carries a terrible and highly irritating curse. @@ -197,6 +234,8 @@ APPEAR: jewelled golden mace OBJ: OBJ_WEAPONS/WPN_MACE PLUS: +7/+6 COLOUR: YELLOW +TILE: spwpn_sceptre_of_torment +BOOL: tilerim DESC_ID: This truly accursed weapon is an instrument of Hell. NAME: Sword of Zonguldrok @@ -204,22 +243,27 @@ APPEAR: bone long sword OBJ: OBJ_WEAPONS/WPN_LONG_SWORD PLUS: +9/+9 COLOUR: LIGHTGREY +TILE: spwpn_sword_of_zonguldrok +BOOL: tilerim DESC_ID: This dreadful weapon is used at the user's peril. -NAME: Sword of Cerebov -APPEAR: great serpentine sword -OBJ: OBJ_WEAPONS/WPN_GREAT_SWORD -PLUS: +6/+6 -COLOUR: YELLOW -BRAND: SPWPN_FLAMING -BOOL: cursed -DESC: Eerie flames cover its twisted blade. +NAME: Sword of Cerebov +APPEAR: great serpentine sword +OBJ: OBJ_WEAPONS/WPN_GREAT_SWORD +PLUS: +6/+6 +COLOUR: YELLOW +TILE: spwpn_sword_of_cerebov +BRAND: SPWPN_FLAMING +BOOL: cursed, tilerim +DESC: Eerie flames cover its twisted blade. NAME: Staff of Dispater APPEAR: golden staff OBJ: OBJ_WEAPONS/WPN_QUARTERSTAFF PLUS: +4/+4 COLOUR: YELLOW +TILE: spwpn_staff_of_dispater +BOOL: tilerim DESC_ID: This legendary item can unleash the fury of Hell. NAME: Sceptre of Asmodeus @@ -227,6 +271,8 @@ APPEAR: ruby sceptre OBJ: OBJ_WEAPONS/WPN_QUARTERSTAFF PLUS: +7/+7 COLOUR: RED +TILE: spwpn_sceptre_of_asmodeus +BOOL: tilerim DESC_ID: It carries some of the powers of the arch-fiend Asmodeus. ##################### End of old fixed arts. @@ -236,63 +282,69 @@ APPEAR: blackened long sword OBJ: OBJ_WEAPONS/WPN_LONG_SWORD PLUS: +7/+8 COLOUR: DARKGREY +TILE: urand_bloodbane BRAND: SPWPN_VORPAL ANGRY: 1 BOOL: berserk STEALTH: -20 -NAME: scimitar of Flaming Death -APPEAR: smoking scimitar -OBJ: OBJ_WEAPONS/WPN_SCIMITAR -PLUS: +7/+5 -COLOUR: RED -BRAND: SPWPN_FLAMING -FIRE: 2 -COLD: -1 -BOOL: poison -MAGIC: 20 +NAME: scimitar of Flaming Death +APPEAR: smoking scimitar +OBJ: OBJ_WEAPONS/WPN_SCIMITAR +PLUS: +7/+5 +COLOUR: RED +TILE: urand_flaming_death +BRAND: SPWPN_FLAMING +FIRE: 2 +COLD: -1 +BOOL: poison +MAGIC: 20 NAME: mace of Brilliance APPEAR: brightly glowing mace OBJ: OBJ_WEAPONS/WPN_MACE PLUS: +5/+5 COLOUR: WHITE +TILE: urand_brilliance BRAND: SPWPN_HOLY_WRATH AC: 5 INT: 5 STEALTH: -20 BOOL: life, seeinv -NAME: demon blade "Leech" -APPEAR: runed demon blade -OBJ: OBJ_WEAPONS/WPN_DEMON_BLADE -PLUS: +13/+4 -COLOUR: MAGENTA -BRAND: SPWPN_VAMPIRICISM -EV: -1 -STR: -1 -INT: -1 -DEX: -1 -BOOL: life -CURSED: 4 - -NAME: dagger of Chilly Death -APPEAR: sapphire dagger -OBJ: OBJ_WEAPONS/WPN_DAGGER -PLUS: +5/+7 -COLOUR: LIGHTBLUE -BRAND: SPWPN_FREEZING -FIRE: -1 -COLD: 2 -MAGIC: 20 -BOOL: poison -DESC: A dagger made of one huge piece of sapphire. +NAME: demon blade "Leech" +APPEAR: runed demon blade +OBJ: OBJ_WEAPONS/WPN_DEMON_BLADE +PLUS: +13/+4 +COLOUR: MAGENTA +TILE: urand_leech +BRAND: SPWPN_VAMPIRICISM +EV: -1 +STR: -1 +INT: -1 +DEX: -1 +BOOL: life +CURSED: 4 + +NAME: dagger of Chilly Death +APPEAR: sapphire dagger +OBJ: OBJ_WEAPONS/WPN_DAGGER +PLUS: +5/+7 +COLOUR: LIGHTBLUE +TILE: urand_chilly_death +BRAND: SPWPN_FREEZING +FIRE: -1 +COLD: 2 +MAGIC: 20 +BOOL: poison +DESC: A dagger made of one huge piece of sapphire. NAME: dagger "Morg" APPEAR: rusty dagger OBJ: OBJ_WEAPONS/WPN_DAGGER PLUS: -1/+4 COLOUR: LIGHTRED +TILE: urand_morg BRAND: SPWPN_PAIN INT: 5 MAGIC: 30 @@ -300,24 +352,26 @@ DESC: An ugly rusty dagger. DESC_END: Many years ago it was the property of a powerful mage called Boris. He got lost in the Dungeon while seeking the Orb. -NAME: scythe "Finisher" -APPEAR: blackened scythe -OBJ: OBJ_WEAPONS/WPN_SCYTHE -PLUS: +3/+5 -COLOUR: DARKGREY -BRAND: SPWPN_SPEED -STR: 3 -BOOL: cursed -DESC: A long and sharp scythe, specially modified for combat purposes. - -NAME: sling "Punk" -APPEAR: blue sling -OBJ: OBJ_WEAPONS/WPN_SLING -PLUS: +9/+12 -COLOUR: LIGHTBLUE -BRAND: SPWPN_FROST -COLD: 1 -DESC: A sling made of weird blue leather. +NAME: scythe "Finisher" +APPEAR: blackened scythe +OBJ: OBJ_WEAPONS/WPN_SCYTHE +PLUS: +3/+5 +COLOUR: DARKGREY +TILE: urand_finisher +BRAND: SPWPN_SPEED +STR: 3 +BOOL: cursed +DESC: A long and sharp scythe, specially modified for combat purposes. + +NAME: sling "Punk" +APPEAR: blue sling +OBJ: OBJ_WEAPONS/WPN_SLING +PLUS: +9/+12 +COLOUR: LIGHTBLUE +TILE: urand_punk +BRAND: SPWPN_FROST +COLD: 1 +DESC: A sling made of weird blue leather. ENUM: KRISHNA NAME: bow of Krishna "Sharnga" @@ -325,6 +379,7 @@ APPEAR: golden bow OBJ: OBJ_WEAPONS/WPN_BOW PLUS: +8/+8 COLOUR: YELLOW +TILE: urand_krishna BRAND: SPWPN_SPEED DEX: 3 BOOL: seeinv @@ -332,19 +387,21 @@ DESC: A wonderful golden bow. DESC_END: It once belonged to a foreign god. It works best with special arrows which are not generally available. -NAME: giant club "Skullcrusher" -APPEAR: brutal giant club -OBJ: OBJ_WEAPONS/WPN_GIANT_CLUB -PLUS: +0/+5 -COLOUR: BROWN -BRAND: SPWPN_SPEED -STR: 5 +NAME: giant club "Skullcrusher" +APPEAR: brutal giant club +OBJ: OBJ_WEAPONS/WPN_GIANT_CLUB +PLUS: +0/+5 +COLOUR: BROWN +TILE: urand_skullcrusher +BRAND: SPWPN_SPEED +STR: 5 NAME: glaive of the Guard APPEAR: polished glaive OBJ: OBJ_WEAPONS/WPN_GLAIVE PLUS: +5/+8 COLOUR: LIGHTCYAN +TILE: urand_guard BRAND: SPWPN_ELECTROCUTION AC: 5 BOOL: seeinv, berserk @@ -356,31 +413,34 @@ APPEAR: crystal sword OBJ: OBJ_WEAPONS/WPN_LONG_SWORD PLUS: +12/+10 COLOUR: WHITE +TILE: urand_jihad BRAND: SPWPN_HOLY_WRATH EV: 3 -ANGRY: 1 -BOOL: life MAGIC: 20 +ANGRY: 1 STEALTH: -50 +BOOL: life DESC_END: This sword was The Shining One's gift to a worshipper. DESC: A long sword made of one huge piece of crystal. -NAME: crossbow "Hellfire" -APPEAR: flaming crossbow -OBJ: OBJ_WEAPONS/WPN_CROSSBOW -PLUS: +6/+9 -COLOUR: LIGHTRED -BRAND: SPWPN_FLAME -FIRE: 2 -COLD: -1 -MAGIC: 40 -DESC: A flaming crossbow, forged in the fires of the Hells. +NAME: crossbow "Hellfire" +APPEAR: flaming crossbow +OBJ: OBJ_WEAPONS/WPN_CROSSBOW +PLUS: +6/+9 +COLOUR: LIGHTRED +TILE: urand_fiery_devil +BRAND: SPWPN_FLAME +FIRE: 2 +COLD: -1 +MAGIC: 40 +DESC: A flaming crossbow, forged in the fires of the Hells. NAME: sword of the Doom Knight APPEAR: adamantine great sword OBJ: OBJ_WEAPONS/WPN_GREAT_SWORD PLUS: +13/+13 COLOUR: BLUE +TILE: urand_doom_knight BRAND: SPWPN_PAIN MAGIC: 50 BOOL: nospell @@ -391,6 +451,7 @@ APPEAR: encrusted morningstar OBJ: OBJ_WEAPONS/WPN_MORNINGSTAR PLUS: +5/+5 COLOUR: LIGHTCYAN +TILE: urand_eos BRAND: SPWPN_ELECTROCUTION BOOL: elec, seeinv, notelep @@ -403,6 +464,7 @@ APPEAR: ebony spear OBJ: OBJ_WEAPONS/WPN_SPEAR PLUS: +2/+10 COLOUR: DARKGREY +TILE: urand_botono BRAND: SPWPN_VAMPIRICISM STEALTH: -30 BOOL: poison, life, noises @@ -413,6 +475,7 @@ APPEAR: mangy trident OBJ: OBJ_WEAPONS/WPN_TRIDENT PLUS: +10/+4 COLOUR: CYAN +TILE: urand_octopus_king BRAND: SPWPN_VENOM BOOL: elec, poison MAGIC: 50 @@ -425,6 +488,7 @@ APPEAR: mithril axe OBJ: OBJ_WEAPONS/WPN_WAR_AXE PLUS: +10/+6 COLOUR: WHITE +TILE: urand_arga BRAND: SPWPN_SPEED STR: 2 MAGIC: 30 @@ -435,6 +499,7 @@ APPEAR: black staff OBJ: OBJ_WEAPONS/WPN_QUARTERSTAFF PLUS: +3/+1 COLOUR: DARKGREY +TILE: urand_elemental BRAND: SPWPN_PROTECTION FIRE: 2 COLD: 2 @@ -444,23 +509,25 @@ BOOL: noises DESC_END: This powerful staff used to belong to the leader of the Guild of Five Elements. -NAME: hand crossbow "Sniper" -APPEAR: black crossbow -OBJ: OBJ_WEAPONS/WPN_HAND_CROSSBOW -PLUS: +10/+0 -COLOUR: DARKGREY -BRAND: SPWPN_VENOM -BOOL: seeinv -DESC: A hand crossbow made of some black material. - -NAME: longbow "Piercer" -APPEAR: very long metal bow -OBJ: OBJ_WEAPONS/WPN_LONGBOW -PLUS: +2/+10 -COLOUR: CYAN -BRAND: SPWPN_VORPAL -EV: -2 -DESC: An exceptionally large metal longbow. +NAME: hand crossbow "Sniper" +APPEAR: black crossbow +OBJ: OBJ_WEAPONS/WPN_HAND_CROSSBOW +PLUS: +10/+0 +COLOUR: DARKGREY +TILE: urand_sniper +BRAND: SPWPN_VENOM +BOOL: seeinv +DESC: A hand crossbow made of some black material. + +NAME: longbow "Piercer" +APPEAR: very long metal bow +OBJ: OBJ_WEAPONS/WPN_LONGBOW +PLUS: +2/+10 +COLOUR: CYAN +TILE: urand_piercer +BRAND: SPWPN_VORPAL +EV: -2 +DESC: An exceptionally large metal longbow. ENUM: BLOWGUN_ASSASSIN NAME: blowgun of the Assassin @@ -468,8 +535,9 @@ APPEAR: tiny blowgun OBJ: OBJ_WEAPONS/WPN_BLOWGUN PLUS: +6/+6 COLOUR: WHITE +TILE: urand_blowgun STEALTH: 60 -BOOL: inv +BOOL: inv, tilerim DESC: It is designed for easy concealment, but still packs a nasty punch. NAME: Wyrmbane @@ -477,16 +545,19 @@ APPEAR: scale-covered lance OBJ: OBJ_WEAPONS/WPN_SPEAR PLUS: +9/+6 COLOUR: LIGHTGREEN +TILE: urand_wyrmbane BRAND: SPWPN_DRAGON_SLAYING AC: 5 FIRE: 1 -BOOL: poison, berserk +BOOL: poison, berserk, tilerim NAME: Spriggan's Knife APPEAR: dainty little knife OBJ: OBJ_WEAPONS/WPN_KNIFE PLUS: +4/+10 COLOUR: LIGHTCYAN +TILE: urand_spriggans_knife +BOOL: tilerim EV: 4 DEX: 4 MAGIC: 20 @@ -501,26 +572,29 @@ APPEAR: glowing long sword OBJ: OBJ_WEAPONS/WPN_LONG_SWORD PLUS: +12/+16 COLOUR: LIGHTGREEN +TILE: urand_plutonium MUTATE: 6 CURSED: 1 STEALTH: -20 DESC: A long sword made of weird glowing metal. -NAME: great mace "Undeadhunter" -APPEAR: great steel mace -OBJ: OBJ_WEAPONS/WPN_GREAT_MACE -PLUS: +7/+7 -COLOUR: LIGHTGREY -BRAND: SPWPN_HOLY_WRATH -BOOL: life +NAME: great mace "Undeadhunter" +APPEAR: great steel mace +OBJ: OBJ_WEAPONS/WPN_GREAT_MACE +PLUS: +7/+7 +COLOUR: LIGHTGREY +TILE: urand_undeadhunter +BRAND: SPWPN_HOLY_WRATH +BOOL: life NAME: whip "Serpent-Scourge" APPEAR: forked whip OBJ: OBJ_WEAPONS/WPN_WHIP PLUS: +5/+10 COLOUR: DARKGREY +TILE: urand_serpent_scourge BRAND: SPWPN_VENOM -BOOL: poison +BOOL: poison, tilerim DESC_ID: A double-ended whip made from the cured hides of the Lair of Beasts' deadly grey snakes. @@ -529,6 +603,8 @@ APPEAR: thin dagger OBJ: OBJ_WEAPONS/WPN_DAGGER PLUS: +27/-1 COLOUR: LIGHTCYAN +TILE: urand_knife_of_accuracy +BOOL: tilerim DESC_END: It is almost unerringly accurate. # A play on the spell of the same name. Colour taken from crystal walls. @@ -538,35 +614,39 @@ APPEAR: crystal spear OBJ: OBJ_WEAPONS/WPN_SPEAR PLUS: +6/+6 COLOUR: GREEN +TILE: urand_crystal_spear INT: 3 DESC_END: Presumably this relic led to the invention of the famous spell, or maybe the other way around. -NAME: shield of Ignorance -APPEAR: dull large shield -OBJ: OBJ_ARMOUR/ARM_LARGE_SHIELD -PLUS: +5 -COLOUR: BROWN -AC: 2 -EV: 2 -INT: -6 -BOOL: life -CURSED: 3 - -NAME: robe of Augmentation -APPEAR: silk robe -OBJ: OBJ_ARMOUR/ARM_ROBE -PLUS: +4 -COLOUR: LIGHTRED -STR: 2 -INT: 2 -DEX: 2 -DESC: A robe made of the finest silk. +NAME: shield of Ignorance +APPEAR: dull large shield +OBJ: OBJ_ARMOUR/ARM_LARGE_SHIELD +PLUS: +5 +COLOUR: BROWN +TILE: urand_ignorance +AC: 2 +EV: 2 +INT: -6 +BOOL: life +CURSED: 3 + +NAME: robe of Augmentation +APPEAR: silk robe +OBJ: OBJ_ARMOUR/ARM_ROBE +PLUS: +4 +COLOUR: LIGHTRED +TILE: urand_augmentation +STR: 2 +INT: 2 +DEX: 2 +DESC: A robe made of the finest silk. NAME: cloak of the Thief APPEAR: tattered cloak OBJ: OBJ_ARMOUR/ARM_CLOAK PLUS: +1 COLOUR: DARKGREY +TILE: urand_thief EV: 2 DEX: 2 DAM: -3 @@ -574,28 +654,31 @@ STEALTH: 60 BOOL: seeinv, inv, lev DESC_END: It allows its wearer to excel in the arts of thievery. -NAME: shield "Bullseye" -APPEAR: round shield -OBJ: OBJ_ARMOUR/ARM_SHIELD -PLUS: +10 -COLOUR: RED -EV: -5 +NAME: shield "Bullseye" +APPEAR: round shield +OBJ: OBJ_ARMOUR/ARM_SHIELD +PLUS: +10 +COLOUR: RED +TILE: urand_bullseye +EV: -5 -NAME: crown of Dyrovepreva -APPEAR: jewelled bronze crown -OBJ: OBJ_ARMOUR/ARM_CAP -PLUS: +3 -COLOUR: BROWN -INT: 2 -METAB: 1 -BOOL: elec, seeinv -DESC: A large crown of dull bronze, set with a dazzling array of gemstones. +NAME: crown of Dyrovepreva +APPEAR: jewelled bronze crown +OBJ: OBJ_ARMOUR/ARM_CAP +PLUS: +3 +COLOUR: BROWN +TILE: urand_dyrovepreva +INT: 2 +METAB: 1 +BOOL: elec, seeinv +DESC: A large crown of dull bronze, set with a dazzling array of gemstones. NAME: robe of Misfortune APPEAR: fabulously ornate robe OBJ: OBJ_ARMOUR/ARM_ROBE PLUS: -5 COLOUR: MAGENTA +TILE: urand_misfortune EV: -4 STR: -2 INT: -2 @@ -611,6 +694,7 @@ APPEAR: vibrating cloak OBJ: OBJ_ARMOUR/ARM_CLOAK PLUS: +3 COLOUR: RED +TILE: urand_flash EV: 4 BOOL: lev, cantelep DESC: A vibrating cloak. @@ -621,6 +705,7 @@ APPEAR: soft boots OBJ: OBJ_ARMOUR/ARM_BOOTS PLUS: +2 COLOUR: BROWN +TILE: urand_assassin DEX: 3 STEALTH: 80 BOOL: inv @@ -633,17 +718,19 @@ APPEAR: golden chain mail OBJ: OBJ_ARMOUR/ARM_CHAIN_MAIL PLUS: -1 COLOUR: YELLOW +TILE: urand_lear DEX: -3 -BOOL: nospell, cursed +BOOL: cursed, nospell DESC: A chain mail made of pure gold. -NAME: skin of Zhor -APPEAR: smelly skin -OBJ: OBJ_ARMOUR/ARM_ANIMAL_SKIN -PLUS: +4 -COLOUR: BROWN -COLD: 2 -DESC: The skin of some strange animal. +NAME: skin of Zhor +APPEAR: smelly skin +OBJ: OBJ_ARMOUR/ARM_ANIMAL_SKIN +PLUS: +4 +COLOUR: BROWN +TILE: urand_zhor +COLD: 2 +DESC: The skin of some strange animal. ENUM: SALAMANDER NAME: salamander hide armour @@ -651,6 +738,7 @@ APPEAR: red leather armour OBJ: OBJ_ARMOUR/ARM_LEATHER_ARMOUR PLUS: +3 COLOUR: RED +TILE: urand_salamander FIRE: 2 BOOL: berserk DESC: A leather armour made of a salamander's skin. @@ -660,6 +748,7 @@ APPEAR: thick gauntlets OBJ: OBJ_ARMOUR/ARM_GLOVES PLUS: +3 COLOUR: BROWN +TILE: urand_war ACC: 3 DAM: 3 @@ -668,6 +757,7 @@ APPEAR: bronze shield OBJ: OBJ_ARMOUR/ARM_SHIELD PLUS: +3 COLOUR: LIGHTRED +TILE: urand_resistance FIRE: 1 COLD: 1 MAGIC: 40 @@ -678,6 +768,7 @@ APPEAR: dull robe OBJ: OBJ_ARMOUR/ARM_ROBE PLUS: -1 COLOUR: LIGHTGREY +TILE: urand_folly INT: -5 CURSED: 2 BOOL: nospell @@ -689,25 +780,28 @@ APPEAR: weird-looking armour OBJ: OBJ_ARMOUR/ARM_PLATE_MAIL PLUS: +10 COLOUR: LIGHTGREEN +TILE: urand_maxwell BOOL: nospell, notelep, cursed DESC: A weird-looking armour. -ENUM: DRAGONMASK -NAME: mask of the Dragon -APPEAR: blue mask -OBJ: OBJ_ARMOUR/ARM_CAP -COLOUR: BLUE -MAGIC: 40 -ACC: 2 -DAM: 2 -BOOL: seeinv -DESC: A blue mask. +ENUM: DRAGONMASK +NAME: mask of the Dragon +APPEAR: blue mask +OBJ: OBJ_ARMOUR/ARM_CAP +COLOUR: BLUE +TILE: urand_dragonmask +MAGIC: 40 +ACC: 2 +DAM: 2 +BOOL: seeinv +DESC: A blue mask. NAME: robe of Night APPEAR: black robe OBJ: OBJ_ARMOUR/ARM_ROBE PLUS: +4 COLOUR: DARKGREY +TILE: urand_night MAGIC: 30 STEALTH: 50 BOOL: seeinv, inv @@ -715,38 +809,42 @@ DESC: A long black robe made of strange glossy material. DESC_END: According to legend, this robe was the gift of Ratri the Goddess of the Night to one of her followers. -NAME: armour of the Dragon King -APPEAR: shiny dragon armour -OBJ: OBJ_ARMOUR/ARM_GOLD_DRAGON_ARMOUR -PLUS: +5 -COLOUR: YELLOW -MAGIC: 50 - -NAME: hat of the Alchemist -APPEAR: dirty hat -OBJ: OBJ_ARMOUR/ARM_WIZARD_HAT -PLUS: +2 -COLOUR: MAGENTA -FIRE: 1 -COLD: 1 -MAGIC: 30 -BOOL: elec -DESC: A dirty hat. +NAME: armour of the Dragon King +APPEAR: shiny dragon armour +OBJ: OBJ_ARMOUR/ARM_GOLD_DRAGON_ARMOUR +PLUS: +5 +COLOUR: YELLOW +TILE: urand_dragon_king +MAGIC: 50 -NAME: Fencer's gloves -APPEAR: silk gloves -OBJ: OBJ_ARMOUR/ARM_GLOVES -PLUS: +2 -COLOUR: WHITE -EV: 3 -DEX: 3 -ACC: 5 -DESC: A pair of gloves made of white silk. +NAME: hat of the Alchemist +APPEAR: dirty hat +OBJ: OBJ_ARMOUR/ARM_WIZARD_HAT +PLUS: +2 +COLOUR: MAGENTA +TILE: urand_alchemist +FIRE: 1 +COLD: 1 +MAGIC: 30 +BOOL: elec +DESC: A dirty hat. + +NAME: Fencer's gloves +APPEAR: silk gloves +OBJ: OBJ_ARMOUR/ARM_GLOVES +PLUS: +2 +COLOUR: WHITE +TILE: urand_fencer +EV: 3 +DEX: 3 +ACC: 5 +DESC: A pair of gloves made of white silk. NAME: cloak of Starlight APPEAR: phosphorescent cloak OBJ: OBJ_ARMOUR/ARM_CLOAK COLOUR: WHITE +TILE: urand_starlight EV: 4 COLD: 1 STEALTH: -30 @@ -759,6 +857,7 @@ APPEAR: motley cloak OBJ: OBJ_ARMOUR/ARM_CLOAK PLUS: +1 COLOUR: LIGHTRED +TILE: urand_ratskin_cloak INT: -1 DEX: -1 BOOL: life, poison @@ -772,6 +871,7 @@ NAME: amulet of the Air APPEAR: sky-blue amulet OBJ: OBJ_JEWELLERY/AMU_CONTROLLED_FLIGHT COLOUR: LIGHTCYAN +TILE: urand_air EV: 3 STEALTH: 50 BOOL: elec, lev @@ -781,31 +881,35 @@ NAME: ring of Shadows APPEAR: black ring OBJ: OBJ_JEWELLERY/RING_INVISIBILITY COLOUR: DARKGREY +TILE: urand_shadows EV: 4 ACC: -3 -BOOL: life, seeinv STEALTH: 40 +BOOL: life, seeinv NAME: amulet of Cekugob APPEAR: crystal amulet OBJ: OBJ_JEWELLERY/AMU_WARDING COLOUR: LIGHTGREY +TILE: urand_cekugob AC: 1 EV: 1 -METAB: 2 BOOL: elec, poison, life, notelep +METAB: 2 -NAME: amulet of the Four Winds -APPEAR: jade amulet -OBJ: OBJ_JEWELLERY/AMU_CLARITY -COLOUR: LIGHTGREEN -BOOL: life -MAGIC: 100 +NAME: amulet of the Four Winds +APPEAR: jade amulet +OBJ: OBJ_JEWELLERY/AMU_CLARITY +COLOUR: LIGHTGREEN +TILE: urand_four_winds +BOOL: life +MAGIC: 100 NAME: necklace of Bloodlust APPEAR: blood-stained necklace OBJ: OBJ_JEWELLERY/AMU_RAGE COLOUR: RED +TILE: urand_bloodlust STR: 2 INT: -2 MAGIC: 30 @@ -814,29 +918,33 @@ DAM: 3 CURSED: 3 STEALTH: -20 -NAME: ring of Shaolin -APPEAR: jade ring -OBJ: OBJ_JEWELLERY/RING_EVASION -PLUS: +8 -COLOUR: LIGHTGREEN - -NAME: ring of Robustness -APPEAR: steel ring -OBJ: OBJ_JEWELLERY/RING_PROTECTION -PLUS: +8 -COLOUR: LIGHTGREY - -NAME: ring of the Mage -APPEAR: sapphire ring -OBJ: OBJ_JEWELLERY/RING_WIZARDRY -COLOUR: LIGHTBLUE -INT: 3 -MAGIC: 50 +NAME: ring of Shaolin +APPEAR: jade ring +OBJ: OBJ_JEWELLERY/RING_EVASION +PLUS: +8 +COLOUR: LIGHTGREEN +TILE: urand_shaolin + +NAME: ring of Robustness +APPEAR: steel ring +OBJ: OBJ_JEWELLERY/RING_PROTECTION +PLUS: +8 +COLOUR: LIGHTGREY +TILE: urand_robustness + +NAME: ring of the Mage +APPEAR: sapphire ring +OBJ: OBJ_JEWELLERY/RING_WIZARDRY +COLOUR: LIGHTBLUE +TILE: urand_mage +INT: 3 +MAGIC: 50 NAME: brooch of Shielding APPEAR: shield-shaped amulet OBJ: OBJ_JEWELLERY/AMU_WARDING COLOUR: LIGHTBLUE +TILE: urand_brooch_of_shielding AC: 4 EV: 4 DESC: A shield-shaped amulet. diff --git a/crawl-ref/source/artefact.cc b/crawl-ref/source/artefact.cc index 5fd86bab22..f4698f4e05 100644 --- a/crawl-ref/source/artefact.cc +++ b/crawl-ref/source/artefact.cc @@ -326,7 +326,7 @@ bool is_unrandom_artefact( const item_def &item ) bool is_special_unrandom_artefact( const item_def &item ) { return (item.flags & ISFLAG_UNRANDART - && get_unrand_specialness(item.special) == UNRANDPSEC_SPECIAL); + && get_unrand_specialness(item.special) == UNRANDSPEC_SPECIAL); } unique_item_status_type get_unique_item_status(const item_def& item) @@ -1612,7 +1612,7 @@ unrand_special_type get_unrand_specialness(int unrand_index) if (unrand_index >= UNRAND_SINGING_SWORD && unrand_index <= UNRAND_ASMODEUS) { - return (UNRANDPSEC_SPECIAL); + return (UNRANDSPEC_SPECIAL); } return (UNRANDSPEC_NORMAL); } diff --git a/crawl-ref/source/artefact.h b/crawl-ref/source/artefact.h index 5379e66a00..38ee3344d4 100644 --- a/crawl-ref/source/artefact.h +++ b/crawl-ref/source/artefact.h @@ -24,7 +24,7 @@ enum unrand_special_type { UNRANDSPEC_EITHER, UNRANDSPEC_NORMAL, - UNRANDPSEC_SPECIAL + UNRANDSPEC_SPECIAL }; // NOTE: This enumeration is automatically generated from art-data.txt diff --git a/crawl-ref/source/makefile_tiles.mgw b/crawl-ref/source/makefile_tiles.mgw index 1d4af35827..67b9801f1b 100644 --- a/crawl-ref/source/makefile_tiles.mgw +++ b/crawl-ref/source/makefile_tiles.mgw @@ -48,7 +48,7 @@ PCRELIBA := lib$(PCRELIB).a RLTILES = rltiles EXTRA_INCLUDES += -I$(RLTILES) -TILEDEFS = dngn main player +TILEDEFS = dngn main player unrand TILEDEFPRES = $(TILEDEFS:%=$(RLTILES)/tiledef-%) TILEDEFOBJS = $(TILEDEFPRES:%=%.o) TILEDEFSRCS = $(TILEDEFPRES:%=%.cc) diff --git a/crawl-ref/source/makefile_tiles.unix b/crawl-ref/source/makefile_tiles.unix index 9541d2a279..234d02125b 100644 --- a/crawl-ref/source/makefile_tiles.unix +++ b/crawl-ref/source/makefile_tiles.unix @@ -85,7 +85,7 @@ RLTILES = rltiles EXTRA_INCLUDES += -I$(RLTILES) -TILEDEFS = dngn main player +TILEDEFS = dngn main player unrand TILEDEFPRES = $(TILEDEFS:%=$(RLTILES)/tiledef-%) TILEDEFOBJS = $(TILEDEFPRES:%=%.o) TILEDEFSRCS = $(TILEDEFPRES:%=%.cc) diff --git a/crawl-ref/source/makeitem.cc b/crawl-ref/source/makeitem.cc index 40cf5bd8fd..203f4b6447 100644 --- a/crawl-ref/source/makeitem.cc +++ b/crawl-ref/source/makeitem.cc @@ -891,7 +891,7 @@ static bool _try_make_item_special_unrand(item_def& item, int force_type, bool abyss = item_level == level_id(LEVEL_ABYSS).absdepth(); int idx = find_okay_unrandart(item.base_type, force_type, - UNRANDPSEC_SPECIAL, abyss); + UNRANDSPEC_SPECIAL, abyss); if (idx != -1) { diff --git a/crawl-ref/source/rltiles/dc-item.txt b/crawl-ref/source/rltiles/dc-item.txt index 75f0ee504a..66e64ad254 100644 --- a/crawl-ref/source/rltiles/dc-item.txt +++ b/crawl-ref/source/rltiles/dc-item.txt @@ -13,28 +13,8 @@ # with respect to variations and will not share variations with the base
# equipment. See tilepick.cc for more details.
-#####OBJ_WEAPONS
-#####ARTIFACTS
-%sdir item/weapon/artefact
-spwpn_singing_sword SPWPN_SINGING_SWORD
-spwpn_wrath_of_trog SPWPN_WRATH_OF_TROG
-spwpn_scythe_of_curses SPWPN_SCYTHE_OF_CURSES
-spwpn_mace_of_variability SPWPN_MACE_OF_VARIABILITY
-spwpn_glaive_of_prune SPWPN_GLAIVE_OF_PRUNE
-%rim 1
-spwpn_sceptre_of_torment SPWPN_SCEPTRE_OF_TORMENT
-spwpn_sword_of_zonguldrok SPWPN_SWORD_OF_ZONGULDROK
-spwpn_sword_of_cerebov SPWPN_SWORD_OF_CEREBOV
-spwpn_staff_of_dispater SPWPN_STAFF_OF_DISPATER
-spwpn_sceptre_of_asmodeus SPWPN_SCEPTRE_OF_ASMODEUS
-spwpn_sword_of_power SPWPN_SWORD_OF_POWER
-%rim 0
-spwpn_staff_of_olgreb SPWPN_STAFF_OF_OLGREB
-spwpn_vampires_tooth SPWPN_VAMPIRES_TOOTH
-spwpn_wucad_mu SPWPN_STAFF_OF_WUCAD_MU
-
-##### Unrandom artifacts
-%include dc-urand.txt
+##### Artefacts (fixed and unrandart)
+%include dc-unrand.txt
#####NORMAL
%sdir item/weapon
diff --git a/crawl-ref/source/rltiles/dc-unrand.txt b/crawl-ref/source/rltiles/dc-unrand.txt new file mode 100644 index 0000000000..62df756cc5 --- /dev/null +++ b/crawl-ref/source/rltiles/dc-unrand.txt @@ -0,0 +1,84 @@ +%sdir item/armour/artefact +urand_ignorance UNRAND_IGNORANCE +urand_augmentation UNRAND_AUGMENTATION +urand_thief UNRAND_THIEF +urand_bullseye UNRAND_BULLSEYE +urand_dyrovepreva UNRAND_DYROVEPREVA +urand_misfortune UNRAND_MISFORTUNE +urand_flash UNRAND_FLASH +urand_assassin UNRAND_BOOTS_ASSASSIN +urand_lear UNRAND_LEAR +urand_zhor UNRAND_ZHOR +urand_salamander UNRAND_SALAMANDER +urand_war UNRAND_WAR +urand_resistance UNRAND_RESISTANCE +urand_folly UNRAND_FOLLY +urand_maxwell UNRAND_MAXWELL +urand_dragonmask UNRAND_DRAGONMASK +urand_night UNRAND_NIGHT +urand_dragon_king UNRAND_DRAGON_KING +urand_alchemist UNRAND_ALCHEMIST +urand_fencer UNRAND_FENCERS_GLOVES +urand_starlight UNRAND_STARLIGHT +urand_ratskin_cloak UNRAND_RATSKIN_CLOAK + +%sdir item/weapon/artefact +spwpn_singing_sword UNRAND_SINGING_SWORD +spwpn_wrath_of_trog UNRAND_TROG +spwpn_mace_of_variability UNRAND_VARIABILITY +spwpn_glaive_of_prune UNRAND_PRUNE +spwpn_staff_of_olgreb UNRAND_OLGREB +spwpn_wucad_mu UNRAND_WUCAD_MU +spwpn_vampires_tooth UNRAND_VAMPIRES_TOOTH +spwpn_scythe_of_curses UNRAND_CURSES +urand_bloodbane UNRAND_BLOODBANE +urand_flaming_death UNRAND_FLAMING_DEATH +urand_brilliance UNRAND_BRILLIANCE +urand_leech UNRAND_LEECH +urand_chilly_death UNRAND_CHILLY_DEATH +urand_morg UNRAND_MORG +urand_finisher UNRAND_FINISHER +urand_punk UNRAND_PUNK +urand_krishna UNRAND_KRISHNA +urand_skullcrusher UNRAND_SKULLCRUSHER +urand_guard UNRAND_GUARD +urand_jihad UNRAND_JIHAD +urand_fiery_devil UNRAND_HELLFIRE +urand_doom_knight UNRAND_DOOM_KNIGHT +urand_eos UNRAND_EOS +urand_botono UNRAND_BOTONO +urand_octopus_king UNRAND_OCTOPUS_KING +urand_arga UNRAND_ARGA +urand_elemental UNRAND_ELEMENTAL_STAFF +urand_sniper UNRAND_SNIPER +urand_piercer UNRAND_PIERCER +urand_plutonium UNRAND_PLUTONIUM_SWORD +urand_undeadhunter UNRAND_UNDEADHUNTER +urand_crystal_spear UNRAND_CRYSTAL_SPEAR +%rim 1 +spwpn_sword_of_power UNRAND_POWER +spwpn_sceptre_of_torment UNRAND_TORMENT +spwpn_sword_of_zonguldrok UNRAND_ZONGULDROK +spwpn_sword_of_cerebov UNRAND_CEREBOV +spwpn_staff_of_dispater UNRAND_DISPATER +spwpn_sceptre_of_asmodeus UNRAND_ASMODEUS +urand_blowgun UNRAND_BLOWGUN_ASSASSIN +urand_wyrmbane UNRAND_WYRMBANE +urand_spriggans_knife UNRAND_SPRIGGANS_KNIFE +urand_serpent_scourge UNRAND_SERPENT_SCOURGE +urand_knife_of_accuracy UNRAND_ACCURACY +%rim 0 + +%sdir item/amulet/artefact +urand_air UNRAND_AIR +urand_cekugob UNRAND_CEKUGOB +urand_four_winds UNRAND_FOUR_WINDS +urand_bloodlust UNRAND_BLOODLUST +urand_brooch_of_shielding UNRAND_SHIELDING + +%sdir item/ring/artefact +urand_shadows UNRAND_SHADOWS +urand_shaolin UNRAND_SHAOLIN +urand_robustness UNRAND_ROBUSTNESS +urand_mage UNRAND_MAGE + diff --git a/crawl-ref/source/rltiles/dc-urand.txt b/crawl-ref/source/rltiles/dc-urand.txt deleted file mode 100644 index 83f15f1585..0000000000 --- a/crawl-ref/source/rltiles/dc-urand.txt +++ /dev/null @@ -1,70 +0,0 @@ -%sdir item/weapon/artefact -urand_bloodbane URAND_BLOODBANE -urand_flaming_death URAND_FLAMING_DEATH -urand_brilliance URAND_BRILLIANCE -urand_leech URAND_LEECH -urand_chilly_death URAND_CHILLY_DEATH -urand_morg URAND_MORG -urand_finisher URAND_FINISHER -urand_punk URAND_PUNK -urand_krishna URAND_KRISHNA -urand_skullcrusher URAND_SKULLCRUSHER -urand_guard URAND_GUARD -urand_jihad URAND_JIHAD -urand_fiery_devil URAND_FIERY_DEVIL -urand_doom_knight URAND_DOOM_KNIGHT -urand_eos URAND_EOS -urand_botono URAND_BOTONO -urand_octopus_king URAND_OCTOPUS_KING -urand_arga URAND_ARGA -urand_elemental URAND_ELEMENTAL -urand_sniper URAND_SNIPER -urand_piercer URAND_PIERCER -urand_plutonium URAND_PLUTONIUM -urand_undeadhunter URAND_UNDEADHUNTER -urand_crystal_spear URAND_CRYSTAL_SPEAR -%rim 1 -urand_blowgun URAND_BLOWGUN_ASSASSIN -urand_serpent_scourge URAND_SERPENT_SCOURGE -urand_wyrmbane URAND_WYRMBANE -urand_spriggans_knife URAND_SPRIGGANS_KNIFE -urand_knife_of_accuracy URAND_KNIFE_OF_ACCURACY -%rim 0 - -%sdir item/armour/artefact -urand_ignorance URAND_IGNORANCE -urand_augmentation URAND_AUGMENTATION -urand_thief URAND_THIEF -urand_bullseye URAND_BULLSEYE -urand_dyrovepreva URAND_DYROVEPREVA -urand_misfortune URAND_MISFORTUNE -urand_flash URAND_FLASH -urand_assassin URAND_BOOTS_ASSASSIN -urand_lear URAND_LEAR -urand_zhor URAND_ZHOR -urand_salamander URAND_SALAMANDER -urand_war URAND_WAR -urand_resistance URAND_RESISTANCE -urand_folly URAND_FOLLY -urand_maxwell URAND_MAXWELL -urand_dragonmask URAND_DRAGONMASK -urand_night URAND_NIGHT -urand_dragon_king URAND_DRAGON_KING -urand_alchemist URAND_ALCHEMIST -urand_fencer URAND_FENCER -urand_starlight URAND_STARLIGHT -urand_ratskin_cloak URAND_RATSKIN_CLOAK - -%sdir item/ring/artefact -urand_shadows URAND_SHADOWS -urand_shaolin URAND_SHAOLIN -urand_robustness URAND_ROBUSTNESS -urand_mage URAND_MAGE - -%sdir item/amulet/artefact -urand_cekugob URAND_CEKUGOB -urand_four_winds URAND_FOUR_WINDS -urand_bloodlust URAND_BLOODLUST -urand_brooch_of_shielding URAND_BROOCH_OF_SHIELDING -urand_air URAND_AIR - diff --git a/crawl-ref/source/rltiles/tiledef-unrand.cc b/crawl-ref/source/rltiles/tiledef-unrand.cc new file mode 100644 index 0000000000..177e996618 --- /dev/null +++ b/crawl-ref/source/rltiles/tiledef-unrand.cc @@ -0,0 +1,90 @@ +// This file has been automatically generated. + +#include "AppHdr.h" +#include "tiledef-unrand.h" + +#include "artefact.h" +#include "tiledef-main.h" + +int unrandart_to_tile(int unrand) +{ + switch (unrand) + { + case UNRAND_SINGING_SWORD: return TILE_UNRAND_SINGING_SWORD; + case UNRAND_TROG: return TILE_UNRAND_TROG; + case UNRAND_VARIABILITY: return TILE_UNRAND_VARIABILITY; + case UNRAND_PRUNE: return TILE_UNRAND_PRUNE; + case UNRAND_POWER: return TILE_UNRAND_POWER; + case UNRAND_OLGREB: return TILE_UNRAND_OLGREB; + case UNRAND_WUCAD_MU: return TILE_UNRAND_WUCAD_MU; + case UNRAND_VAMPIRES_TOOTH: return TILE_UNRAND_VAMPIRES_TOOTH; + case UNRAND_CURSES: return TILE_UNRAND_CURSES; + case UNRAND_TORMENT: return TILE_UNRAND_TORMENT; + case UNRAND_ZONGULDROK: return TILE_UNRAND_ZONGULDROK; + case UNRAND_CEREBOV: return TILE_UNRAND_CEREBOV; + case UNRAND_DISPATER: return TILE_UNRAND_DISPATER; + case UNRAND_ASMODEUS: return TILE_UNRAND_ASMODEUS; + case UNRAND_BLOODBANE: return TILE_UNRAND_BLOODBANE; + case UNRAND_FLAMING_DEATH: return TILE_UNRAND_FLAMING_DEATH; + case UNRAND_BRILLIANCE: return TILE_UNRAND_BRILLIANCE; + case UNRAND_LEECH: return TILE_UNRAND_LEECH; + case UNRAND_CHILLY_DEATH: return TILE_UNRAND_CHILLY_DEATH; + case UNRAND_MORG: return TILE_UNRAND_MORG; + case UNRAND_FINISHER: return TILE_UNRAND_FINISHER; + case UNRAND_PUNK: return TILE_UNRAND_PUNK; + case UNRAND_KRISHNA: return TILE_UNRAND_KRISHNA; + case UNRAND_SKULLCRUSHER: return TILE_UNRAND_SKULLCRUSHER; + case UNRAND_GUARD: return TILE_UNRAND_GUARD; + case UNRAND_JIHAD: return TILE_UNRAND_JIHAD; + case UNRAND_HELLFIRE: return TILE_UNRAND_HELLFIRE; + case UNRAND_DOOM_KNIGHT: return TILE_UNRAND_DOOM_KNIGHT; + case UNRAND_EOS: return TILE_UNRAND_EOS; + case UNRAND_BOTONO: return TILE_UNRAND_BOTONO; + case UNRAND_OCTOPUS_KING: return TILE_UNRAND_OCTOPUS_KING; + case UNRAND_ARGA: return TILE_UNRAND_ARGA; + case UNRAND_ELEMENTAL_STAFF: return TILE_UNRAND_ELEMENTAL_STAFF; + case UNRAND_SNIPER: return TILE_UNRAND_SNIPER; + case UNRAND_PIERCER: return TILE_UNRAND_PIERCER; + case UNRAND_BLOWGUN_ASSASSIN: return TILE_UNRAND_BLOWGUN_ASSASSIN; + case UNRAND_WYRMBANE: return TILE_UNRAND_WYRMBANE; + case UNRAND_SPRIGGANS_KNIFE: return TILE_UNRAND_SPRIGGANS_KNIFE; + case UNRAND_PLUTONIUM_SWORD: return TILE_UNRAND_PLUTONIUM_SWORD; + case UNRAND_UNDEADHUNTER: return TILE_UNRAND_UNDEADHUNTER; + case UNRAND_SERPENT_SCOURGE: return TILE_UNRAND_SERPENT_SCOURGE; + case UNRAND_ACCURACY: return TILE_UNRAND_ACCURACY; + case UNRAND_CRYSTAL_SPEAR: return TILE_UNRAND_CRYSTAL_SPEAR; + case UNRAND_IGNORANCE: return TILE_UNRAND_IGNORANCE; + case UNRAND_AUGMENTATION: return TILE_UNRAND_AUGMENTATION; + case UNRAND_THIEF: return TILE_UNRAND_THIEF; + case UNRAND_BULLSEYE: return TILE_UNRAND_BULLSEYE; + case UNRAND_DYROVEPREVA: return TILE_UNRAND_DYROVEPREVA; + case UNRAND_MISFORTUNE: return TILE_UNRAND_MISFORTUNE; + case UNRAND_FLASH: return TILE_UNRAND_FLASH; + case UNRAND_BOOTS_ASSASSIN: return TILE_UNRAND_BOOTS_ASSASSIN; + case UNRAND_LEAR: return TILE_UNRAND_LEAR; + case UNRAND_ZHOR: return TILE_UNRAND_ZHOR; + case UNRAND_SALAMANDER: return TILE_UNRAND_SALAMANDER; + case UNRAND_WAR: return TILE_UNRAND_WAR; + case UNRAND_RESISTANCE: return TILE_UNRAND_RESISTANCE; + case UNRAND_FOLLY: return TILE_UNRAND_FOLLY; + case UNRAND_MAXWELL: return TILE_UNRAND_MAXWELL; + case UNRAND_DRAGONMASK: return TILE_UNRAND_DRAGONMASK; + case UNRAND_NIGHT: return TILE_UNRAND_NIGHT; + case UNRAND_DRAGON_KING: return TILE_UNRAND_DRAGON_KING; + case UNRAND_ALCHEMIST: return TILE_UNRAND_ALCHEMIST; + case UNRAND_FENCERS_GLOVES: return TILE_UNRAND_FENCERS_GLOVES; + case UNRAND_STARLIGHT: return TILE_UNRAND_STARLIGHT; + case UNRAND_RATSKIN_CLOAK: return TILE_UNRAND_RATSKIN_CLOAK; + case UNRAND_AIR: return TILE_UNRAND_AIR; + case UNRAND_SHADOWS: return TILE_UNRAND_SHADOWS; + case UNRAND_CEKUGOB: return TILE_UNRAND_CEKUGOB; + case UNRAND_FOUR_WINDS: return TILE_UNRAND_FOUR_WINDS; + case UNRAND_BLOODLUST: return TILE_UNRAND_BLOODLUST; + case UNRAND_SHAOLIN: return TILE_UNRAND_SHAOLIN; + case UNRAND_ROBUSTNESS: return TILE_UNRAND_ROBUSTNESS; + case UNRAND_MAGE: return TILE_UNRAND_MAGE; + case UNRAND_SHIELDING: return TILE_UNRAND_SHIELDING; + default: return -1; + } +} + diff --git a/crawl-ref/source/rltiles/tiledef-unrand.h b/crawl-ref/source/rltiles/tiledef-unrand.h new file mode 100644 index 0000000000..866135ab1d --- /dev/null +++ b/crawl-ref/source/rltiles/tiledef-unrand.h @@ -0,0 +1,6 @@ +#ifndef TILEDEF_UNRAND_H +#define TILEDEF_UNRAND_H + +int unrandart_to_tile(int unrand); + +#endif diff --git a/crawl-ref/source/tilepick.cc b/crawl-ref/source/tilepick.cc index 0e719e0bea..ca4667954a 100644 --- a/crawl-ref/source/tilepick.cc +++ b/crawl-ref/source/tilepick.cc @@ -30,6 +30,7 @@ REVISION("$Rev$"); #include "tiles.h" #include "tilemcache.h" #include "tiledef-dngn.h" +#include "tiledef-unrand.h" #include "traps.h" #include "travel.h" #include "view.h" @@ -1081,90 +1082,11 @@ static int _tileidx_monster(int mon_idx, bool detected) static int _tileidx_unrand_artefact(int idx) { - switch (idx) - { - case UNRAND_SINGING_SWORD: return TILE_SPWPN_SINGING_SWORD; - case UNRAND_TROG: return TILE_SPWPN_WRATH_OF_TROG; - case UNRAND_CURSES: return TILE_SPWPN_SCYTHE_OF_CURSES; - case UNRAND_VARIABILITY: return TILE_SPWPN_MACE_OF_VARIABILITY; - case UNRAND_PRUNE: return TILE_SPWPN_GLAIVE_OF_PRUNE; - case UNRAND_TORMENT: return TILE_SPWPN_SCEPTRE_OF_TORMENT; - case UNRAND_ZONGULDROK: return TILE_SPWPN_SWORD_OF_ZONGULDROK; - case UNRAND_CEREBOV: return TILE_SPWPN_SWORD_OF_CEREBOV; - case UNRAND_DISPATER: return TILE_SPWPN_STAFF_OF_DISPATER; - case UNRAND_ASMODEUS: return TILE_SPWPN_SCEPTRE_OF_ASMODEUS; - case UNRAND_POWER: return TILE_SPWPN_SWORD_OF_POWER; - case UNRAND_OLGREB: return TILE_SPWPN_STAFF_OF_OLGREB; - case UNRAND_VAMPIRES_TOOTH: return TILE_SPWPN_VAMPIRES_TOOTH; - case UNRAND_WUCAD_MU: return TILE_SPWPN_STAFF_OF_WUCAD_MU; - - // Weapons - case UNRAND_BLOODBANE: return TILE_URAND_BLOODBANE; - case UNRAND_FLAMING_DEATH: return TILE_URAND_FLAMING_DEATH; - case UNRAND_BRILLIANCE: return TILE_URAND_BRILLIANCE; - case UNRAND_LEECH: return TILE_URAND_LEECH; - case UNRAND_CHILLY_DEATH: return TILE_URAND_CHILLY_DEATH; - case UNRAND_MORG: return TILE_URAND_MORG; - case UNRAND_FINISHER: return TILE_URAND_FINISHER; - case UNRAND_PUNK: return TILE_URAND_PUNK; - case UNRAND_KRISHNA: return TILE_URAND_KRISHNA; - case UNRAND_SKULLCRUSHER: return TILE_URAND_SKULLCRUSHER; - case UNRAND_BLOWGUN_ASSASSIN: return TILE_URAND_BLOWGUN_ASSASSIN; - case UNRAND_GUARD: return TILE_URAND_GUARD; - case UNRAND_JIHAD: return TILE_URAND_JIHAD; - case UNRAND_DOOM_KNIGHT: return TILE_URAND_DOOM_KNIGHT; - case UNRAND_EOS: return TILE_URAND_EOS; - case UNRAND_BOTONO: return TILE_URAND_BOTONO; - case UNRAND_OCTOPUS_KING: return TILE_URAND_OCTOPUS_KING; - case UNRAND_ARGA: return TILE_URAND_ARGA; - case UNRAND_ELEMENTAL_STAFF: return TILE_URAND_ELEMENTAL; - case UNRAND_SNIPER: return TILE_URAND_SNIPER; - case UNRAND_PLUTONIUM_SWORD: return TILE_URAND_PLUTONIUM; - case UNRAND_UNDEADHUNTER: return TILE_URAND_UNDEADHUNTER; - case UNRAND_WYRMBANE: return TILE_URAND_WYRMBANE; - case UNRAND_SPRIGGANS_KNIFE: return TILE_URAND_SPRIGGANS_KNIFE; - case UNRAND_SERPENT_SCOURGE: return TILE_URAND_SERPENT_SCOURGE; - case UNRAND_ACCURACY: return TILE_URAND_KNIFE_OF_ACCURACY; - case UNRAND_HELLFIRE: return TILE_URAND_FIERY_DEVIL; - case UNRAND_PIERCER: return TILE_URAND_PIERCER; - case UNRAND_CRYSTAL_SPEAR: return TILE_URAND_CRYSTAL_SPEAR; - - // Armour - case UNRAND_IGNORANCE: return TILE_URAND_IGNORANCE; - case UNRAND_AUGMENTATION: return TILE_URAND_AUGMENTATION; - case UNRAND_THIEF: return TILE_URAND_THIEF; - case UNRAND_BULLSEYE: return TILE_URAND_BULLSEYE; - case UNRAND_DYROVEPREVA: return TILE_URAND_DYROVEPREVA; - case UNRAND_MISFORTUNE: return TILE_URAND_MISFORTUNE; - case UNRAND_FLASH: return TILE_URAND_FLASH; - case UNRAND_LEAR: return TILE_URAND_LEAR; - case UNRAND_ZHOR: return TILE_URAND_ZHOR; - case UNRAND_SALAMANDER: return TILE_URAND_SALAMANDER; - case UNRAND_WAR: return TILE_URAND_WAR; - case UNRAND_RESISTANCE: return TILE_URAND_RESISTANCE; - case UNRAND_FOLLY: return TILE_URAND_FOLLY; - case UNRAND_MAXWELL: return TILE_URAND_MAXWELL; - case UNRAND_DRAGONMASK: return TILE_URAND_DRAGONMASK; - case UNRAND_NIGHT: return TILE_URAND_NIGHT; - case UNRAND_DRAGON_KING: return TILE_URAND_DRAGON_KING; - case UNRAND_ALCHEMIST: return TILE_URAND_ALCHEMIST; - case UNRAND_FENCERS_GLOVES: return TILE_URAND_FENCER; - case UNRAND_BOOTS_ASSASSIN: return TILE_URAND_BOOTS_ASSASSIN; - case UNRAND_STARLIGHT: return TILE_URAND_STARLIGHT; - case UNRAND_RATSKIN_CLOAK: return TILE_URAND_RATSKIN_CLOAK; - - // Jewellery - case UNRAND_SHADOWS: return TILE_URAND_SHADOWS; - case UNRAND_AIR: return TILE_URAND_AIR; - case UNRAND_CEKUGOB: return TILE_URAND_CEKUGOB; - case UNRAND_FOUR_WINDS: return TILE_URAND_FOUR_WINDS; - case UNRAND_BLOODLUST: return TILE_URAND_BLOODLUST; - case UNRAND_SHAOLIN: return TILE_URAND_SHAOLIN; - case UNRAND_ROBUSTNESS: return TILE_URAND_ROBUSTNESS; - case UNRAND_MAGE: return TILE_URAND_MAGE; - case UNRAND_SHIELDING: return TILE_URAND_BROOCH_OF_SHIELDING; - default: return TILE_TODO; - } + const int tile = unrandart_to_tile(idx); + if (tile != -1) + return tile; + + return TILE_TODO; } static int _get_etype(const item_def &item) @@ -3529,7 +3451,7 @@ int tilep_equ_armour(const item_def &item) if (is_unrandom_artefact( item )) { - switch (find_unrandart_index(item) + 1) + switch (find_unrandart_index(item)) { case UNRAND_AUGMENTATION: return TILEP_BODY_ROBE_WHITE_BLUE; case UNRAND_MISFORTUNE: return TILEP_BODY_ROBE_MISFORTUNE; @@ -3612,7 +3534,7 @@ int tilep_equ_shield(const item_def &item) if (is_unrandom_artefact( item )) { - switch (find_unrandart_index(item) + 1) + switch (find_unrandart_index(item)) { case UNRAND_IGNORANCE: return TILEP_HAND2_SHIELD_OF_IGNORANCE; case UNRAND_BULLSEYE: return TILEP_HAND2_BULLSEYE; @@ -3640,7 +3562,7 @@ int tilep_equ_cloak(const item_def &item) if (is_unrandom_artefact( item )) { - switch (find_unrandart_index(item) + 1) + switch (find_unrandart_index(item)) { case UNRAND_RATSKIN_CLOAK: return TILEP_CLOAK_RATSKIN_CLOAK; default: break; @@ -3678,7 +3600,7 @@ int tilep_equ_helm(const item_def &item) if (is_unrandom_artefact(item)) { - switch (find_unrandart_index(item) + 1) + switch (find_unrandart_index(item)) { case UNRAND_DYROVEPREVA: return TILEP_HELM_DYROVEPREVA; case UNRAND_DRAGONMASK: return TILEP_HELM_ART_DRAGONHELM; @@ -3810,7 +3732,7 @@ int tilep_equ_gloves(const item_def &item) if (is_unrandom_artefact(item)) { - switch (find_unrandart_index(item) + 1) + switch (find_unrandart_index(item)) { case UNRAND_WAR: return TILEP_ARM_GLOVE_BLACK; case UNRAND_FENCERS_GLOVES: return TILEP_ARM_GLOVE_WHITE; @@ -3866,7 +3788,7 @@ int tilep_equ_boots(const item_def &item) if (is_unrandom_artefact(item)) { - switch (find_unrandart_index(item) + 1) + switch (find_unrandart_index(item)) { case UNRAND_BOOTS_ASSASSIN: return TILEP_BOOTS_MIDDLE_GRAY; default: break; diff --git a/crawl-ref/source/util/art-data.pl b/crawl-ref/source/util/art-data.pl index 3eb5b53453..afb8dd93f2 100755 --- a/crawl-ref/source/util/art-data.pl +++ b/crawl-ref/source/util/art-data.pl @@ -7,7 +7,7 @@ my @errors = (); my @all_artefacts = (); my %used_names = (); my %used_appears = (); -my %used_enums = (); +my %used_enums = (); my %field_type = ( AC => "num", @@ -22,9 +22,6 @@ my %field_type = ( COLOUR => "enum", CURSED => "num", DAM => "num", - DESC => "str", - DESC_END => "str", - DESC_ID => "str", DEX => "num", ELEC => "bool", EV => "num", @@ -48,6 +45,12 @@ my %field_type = ( STEALTH => "num", STR => "num", + DESC => "str", + DESC_END => "str", + DESC_ID => "str", + TILE => "str", + TILERIM => "bool", + plus => "num", plus2 => "num", base_type => "enum", @@ -76,7 +79,7 @@ sub error $msg .= $str; - $artefact->{_ERRROR} = 1; + $artefact->{_ERROR} = 1; push(@errors, $msg); } @@ -356,7 +359,7 @@ sub process_line { if (exists($artefact->{NAME})) { - eror($artefact, "ENUM must be before NAME"); + error($artefact, "ENUM must be before NAME"); return; } $enum = "$value"; @@ -629,6 +632,142 @@ sub write_enums close(ENUM_OUT); } +sub write_tiles +{ + my $tilefile = "dc-unrand.txt"; + print "Updating $tilefile...\n"; + + die "Can't write to $tilefile\n" if (-e $tilefile && !-w $tilefile); + unless (open(TILES, ">$tilefile")) + { + die "Couldn't open '$tilefile' for writing: $!\n"; + } + + my %art_by_type = (); + foreach my $artefact (@all_artefacts) + { + next if ($artefact->{NAME} =~ /DUMMY/); + + if ($artefact->{TILE} eq "") + { + print STDERR "No tile defined for '$artefact->{NAME}'\n"; + next; + } + + # The path always has the form /item/$folder/artefact. + my $type = $artefact->{base_type} || ""; + my $folder = ""; + if ($type eq "OBJ_WEAPONS") + { + $folder = "weapon"; + } + elsif ($type eq "OBJ_ARMOUR") + { + $folder = "armour"; + } + elsif ($type eq "OBJ_JEWELLERY") + { + if ($artefact->{sub_type} =~ /RING_/) + { + $folder = "ring"; + } + else + { + $folder = "amulet"; + } + } + else + { + next; + } + + my $definition = "$artefact->{TILE} UNRAND_$artefact->{_ENUM}"; + my $needrim = ($artefact->{TILERIM} ? "1" : "0"); + if (defined $art_by_type{$folder}) + { + if (defined $art_by_type{$folder}{$needrim}) + { + push @{$art_by_type{$folder}{$needrim}}, $definition; + } + else + { + $art_by_type{$folder}{$needrim} = [$definition]; + } + } + else + { + $art_by_type{$folder} = {$needrim => [$definition]}; + } + } + + # Output the tile definitions sorted by type (and thus path). + foreach my $type (keys %art_by_type) + { + print TILES "%sdir item/$type/artefact\n"; + + foreach my $needrim (sort keys %{$art_by_type{$type}}) + { + print TILES "%rim 1\n" if ($needrim); + foreach my $def (@{$art_by_type{$type}{$needrim}}) + { + print TILES "$def\n"; + } + print TILES "%rim 0\n" if ($needrim); + } + print TILES "\n"; + } + close(TILES); + + # Create tiledef-unrand.cc for the function unrandart_to_tile(). + # Should we also create tiledef-unrand.h this way? + $tilefile = "tiledef-unrand.cc"; + print "Updating $tilefile...\n"; + + die "Can't write to $tilefile\n" if (-e $tilefile && !-w $tilefile); + unless (open(TILES, ">$tilefile")) + { + die "Couldn't open '$tilefile' for writing: $!\n"; + } + + print TILES << "HEADER_END"; +// This file has been automatically generated. + +#include "AppHdr.h" +#include "tiledef-unrand.h" + +#include "artefact.h" +#include "tiledef-main.h" + +int unrandart_to_tile(int unrand) +{ + switch (unrand) + { +HEADER_END + + my $longest_enum = 0; + foreach my $artefact (@all_artefacts) + { + my $enum = $artefact->{_ENUM}; + my $len = length($enum); + $longest_enum = $len if ($len > $longest_enum); + } + $longest_enum += length("UNRAND_"); + + foreach my $artefact (@all_artefacts) + { + next if ($artefact->{NAME} =~ /DUMMY/); + next if ($artefact->{TILE} eq ""); + + my $enum = "UNRAND_$artefact->{_ENUM}"; + print TILES (" " x 4) . "case $enum:" + . " " x ($longest_enum - length($enum) + 2) . "return TILE_$enum;\n"; + } + print TILES (" " x 4) . "default: return -1;\n"; + print TILES (" " x 4) . "}\n"; + print TILES "}\n\n"; + close(TILES); +} + ###############################################################3 ###############################################################3 ###############################################################3 @@ -704,4 +843,7 @@ if (@errors > 0) write_data(); write_enums(); +chdir("rltiles"); +write_tiles(); + exit (0); |