diff options
author | Steve Melenchuk <smelenchuk@gmail.com> | 2014-05-10 19:27:10 -0600 |
---|---|---|
committer | Steve Melenchuk <smelenchuk@gmail.com> | 2014-05-10 21:38:07 -0600 |
commit | d54608118996fe6861b0eaf66f1d4f0ca039359f (patch) | |
tree | a0ecacc9360879f820d73cf5af5d8c7791d04df7 | |
parent | 031a9a43fa11401b1d938bf9fa0d47109a02750f (diff) | |
download | crawl-ref-d54608118996fe6861b0eaf66f1d4f0ca039359f.tar.gz crawl-ref-d54608118996fe6861b0eaf66f1d4f0ca039359f.zip |
Revert "Remove silver statues."
Don't worry; the whole point of this set of commits is to fix the problems
with them and their companion statues.
This partially reverts commit b4c3b502143418fb4fdb3faaa29a2ef6e9eabce5.
This reverts commit e1156a91a6a0b1bb26c7e7ee63710c3eefbd2739.
42 files changed, 246 insertions, 56 deletions
diff --git a/crawl-ref/source/ability.cc b/crawl-ref/source/ability.cc index df49f33a4b..7e98ed7065 100644 --- a/crawl-ref/source/ability.cc +++ b/crawl-ref/source/ability.cc @@ -440,6 +440,7 @@ static const ability_def Ability_List[] = { ABIL_MAKE_OKLOB_PLANT, "Make oklob plant", 0, 0, 0, 0, 250, ABFLAG_ZOTDEF}, { ABIL_MAKE_ICE_STATUE, "Make ice statue", 0, 0, 0, 0, 2000, ABFLAG_ZOTDEF}, { ABIL_MAKE_OCS, "Make crystal statue", 0, 0, 0, 0, 2000, ABFLAG_ZOTDEF}, + { ABIL_MAKE_SILVER_STATUE, "Make silver statue", 0, 0, 0, 0, 3000, ABFLAG_ZOTDEF}, { ABIL_MAKE_CURSE_SKULL, "Make curse skull", 0, 0, 600, 0, 10000, ABFLAG_ZOTDEF|ABFLAG_NECRO_MISCAST_MINOR}, { ABIL_MAKE_TELEPORT, "Zot-teleport", 0, 0, 0, 0, 2, ABFLAG_ZOTDEF}, @@ -530,6 +531,7 @@ static monster_type _monster_for_ability(const ability_def& abil) case ABIL_MAKE_LIGHTNING_SPIRE: mtyp = MONS_LIGHTNING_SPIRE; break; case ABIL_MAKE_ICE_STATUE: mtyp = MONS_ICE_STATUE; break; case ABIL_MAKE_OCS: mtyp = MONS_ORANGE_STATUE; break; + case ABIL_MAKE_SILVER_STATUE: mtyp = MONS_SILVER_STATUE; break; case ABIL_MAKE_CURSE_SKULL: mtyp = MONS_CURSE_SKULL; break; default: mprf("DEBUG: NO RELEVANT MONSTER FOR %d", abil.ability); @@ -554,6 +556,8 @@ static string _zd_mons_description_for_ability(const ability_def &abil) return "Water vapor collects and crystallises into an icy humanoid shape."; case ABIL_MAKE_OCS: return "Quartz juts from the ground and forms a humanoid shape. You smell citrus."; + case ABIL_MAKE_SILVER_STATUE: + return "Droplets of mercury fall from the ceiling and turn to silver, congealing into a humanoid shape."; case ABIL_MAKE_CURSE_SKULL: return "You sculpt a terrible being from the primitive principle of evil."; case ABIL_MAKE_LIGHTNING_SPIRE: @@ -634,6 +638,7 @@ static int _zp_cost(const ability_def& abil) break; // Monster type 3: least generous + case ABIL_MAKE_SILVER_STATUE: case ABIL_MAKE_CURSE_SKULL: scale20 = _count_relevant_monsters(abil); // scale immediately break; @@ -962,6 +967,7 @@ talent get_talent(ability_type ability, bool check_confused) case ABIL_MAKE_DART_TRAP: case ABIL_MAKE_ICE_STATUE: case ABIL_MAKE_OCS: + case ABIL_MAKE_SILVER_STATUE: case ABIL_MAKE_CURSE_SKULL: case ABIL_MAKE_TELEPORT: case ABIL_MAKE_ARROW_TRAP: @@ -1925,6 +1931,7 @@ static bool _do_ability(const ability_def& abil) case ABIL_MAKE_BURNING_BUSH: case ABIL_MAKE_ICE_STATUE: case ABIL_MAKE_OCS: + case ABIL_MAKE_SILVER_STATUE: case ABIL_MAKE_CURSE_SKULL: case ABIL_MAKE_LIGHTNING_SPIRE: if (!create_zotdef_ally(_monster_for_ability(abil), @@ -3343,6 +3350,8 @@ vector<talent> your_talents(bool check_confused, bool include_unusable) _add_talent(talents, ABIL_MAKE_WATER, check_confused); if (you.experience_level >= 19) _add_talent(talents, ABIL_MAKE_LIGHTNING_SPIRE, check_confused); + if (you.experience_level >= 20) + _add_talent(talents, ABIL_MAKE_SILVER_STATUE, check_confused); // gain bazaar and gold together if (you.experience_level >= 21) _add_talent(talents, ABIL_MAKE_BAZAAR, check_confused); diff --git a/crawl-ref/source/dat/database/monspeak.txt b/crawl-ref/source/dat/database/monspeak.txt index 6df78a63df..f8ac408a21 100644 --- a/crawl-ref/source/dat/database/monspeak.txt +++ b/crawl-ref/source/dat/database/monspeak.txt @@ -6271,6 +6271,11 @@ default confused giant firefly @default confused winged insect@ %%%% +################## Ice statue ############################## +default ice statue + +VISUAL:@The_monster@ glitters chillingly in the dim dungeon light. +%%%% ################## Hell lords ############################## hell lord @@ -6394,9 +6399,9 @@ default orange crystal statue VISUAL:@The_monster@ glitters topaz in the dim dungeon light. %%%% -default ice statue +default silver statue -VISUAL:@The_monster@ glitters chillingly in the dim dungeon light. +VISUAL:@The_monster@ glitters argentine in the dim dungeon light. %%%% ################## Sheep ################################### sheep diff --git a/crawl-ref/source/dat/des/altar/altar.des b/crawl-ref/source/dat/des/altar/altar.des index 18443c9ee8..0d355970e6 100644 --- a/crawl-ref/source/dat/des/altar/altar.des +++ b/crawl-ref/source/dat/des/altar/altar.des @@ -178,7 +178,7 @@ DEPTH: D:2-, Orc, Depths, Vaults, Elf, Crypt, Forest SUBST: F = G : end SUBST: F = G:99 F:1 -KMONS: F = orange crystal statue / ice statue +KMONS: F = orange crystal statue / silver statue / ice statue : interest_check(_G) MAP ......... diff --git a/crawl-ref/source/dat/des/branches/abyss.des b/crawl-ref/source/dat/des/branches/abyss.des index 744073e5ad..933f84f901 100644 --- a/crawl-ref/source/dat/des/branches/abyss.des +++ b/crawl-ref/source/dat/des/branches/abyss.des @@ -1804,11 +1804,11 @@ XxxxxxxxX XXXxxxXXX ENDMAP -# Orange crystal is very rare here... +# Orange crystal and silver statue are very rare here... # I want most characters to be able to actually use this exit NAME: evilmike_abyss_exit_13 TAGS: abyss_exit unrand allow_dup -KMONS: O = w:1 orange crystal statue / w: 20 ice statue / w: 15 oklob plant +KMONS: O = w:1 orange crystal statue / w:2 silver statue / w: 20 ice statue / w: 15 oklob plant : init_abyss_exit(_G, "O") MAP O diff --git a/crawl-ref/source/dat/des/branches/crypt.des b/crawl-ref/source/dat/des/branches/crypt.des index d8cfcd724b..b236e0208f 100644 --- a/crawl-ref/source/dat/des/branches/crypt.des +++ b/crawl-ref/source/dat/des/branches/crypt.des @@ -1339,7 +1339,7 @@ MONS: flying skull / skeletal warrior / w:40 nothing MONS: ancient champion KFEAT: ^ = alarm trap SUBST: F = G:99 F:1 -KMONS: F = orange crystal statue / ice statue +KMONS: F = orange crystal statue / silver statue / ice statue {{ lua_marker("|", Triggerable.synchronized_markers( diff --git a/crawl-ref/source/dat/des/branches/elf.des b/crawl-ref/source/dat/des/branches/elf.des index 34b03cafb6..2a9c84902d 100644 --- a/crawl-ref/source/dat/des/branches/elf.des +++ b/crawl-ref/source/dat/des/branches/elf.des @@ -741,7 +741,7 @@ DEPTH: Elf:2- MONS: deep elf knight / deep elf priest MONS: deep elf high priest SUBST: F = G:6 F:1 -KMONS: F = orange crystal statue / ice statue +KMONS: F = orange crystal statue / silver statue / ice statue SUBST: ? = .1$%* MAP xxxxxxxxxxx diff --git a/crawl-ref/source/dat/des/branches/hell.des b/crawl-ref/source/dat/des/branches/hell.des index d319c31f52..583e9e7b34 100644 --- a/crawl-ref/source/dat/des/branches/hell.des +++ b/crawl-ref/source/dat/des/branches/hell.des @@ -182,6 +182,53 @@ MAP .... ........??.. ENDMAP +############################################################################## + +NAME: grunt_hell_entry_demonic_statue +ORIENT: float +TAGS: no_monster_gen no_rtele_into +MONS: blue devil / orange demon / red devil / w:5 iron devil / \ + w:35 nothing +MONS: ice devil / sun demon / soul eater / w:30 nothing +MONS: shadow demon / blizzard demon / hell beast +ITEM: skeleton +KFEAT: b = . +KMONS: A = silver statue +MARKER: A = lua:fog_machine { cloud_type = "grey smoke", \ + pow_min = 20, pow_max = 30, delay = 50, \ + size = 1, walk_dist = 3, start_clouds = 1 } +KMONS: b = w:100 nothing / w:5 crimson imp / w:2 white imp / w:2 iron imp \ + / w:1 shadow imp +KPROP: b = nothing / w:5 bloody +KITEM: b = nothing / w:1 gold +MARKER: H = lua:props_marker { stop_explore = "statue" } +KFEAT: HI = G +: hell_entry_feature(_G, 'A') +: hell_entry_tier(_G, "high") +MAP + xxxxxxx + xxxbbbbbxxx + xxxbbbbbbbbbxxx + xbbbbGbbbGbbbbx + xxbG1bbbbbbd1Gbxx + xdb2bb2bGb2bb2bbx +xxbbbbGbbbbbGbbbbxx +xbbGb2bbd3*bb2bGbbx +xbbbbbb%**d*bbbbdbx +xbd1bGb%*A*%bGb1bbx +xb%bbbb%*d*dbbbbbbx +xbbGbbbd%b*bbbbGbbx +xxbbbbGbbbbbGdbbbxx + xbb1bb2bGd2bb1bbx + xxbG1bbbbbbb1Gbxx + xbbbbG1b1Gbbbbx + xxxbbbbb%bbbxxx + xxxbdbbbxxx + xxxv===vxxx + xxxH...Ixxx + xx@@@@@@@xx +ENDMAP + ############################################################################### NAME: lightli_too_deep diff --git a/crawl-ref/source/dat/des/branches/shoals.des b/crawl-ref/source/dat/des/branches/shoals.des index 81e90b33b9..f70a1c7437 100644 --- a/crawl-ref/source/dat/des/branches/shoals.des +++ b/crawl-ref/source/dat/des/branches/shoals.des @@ -250,7 +250,7 @@ NAME: overgrown_statue DEPTH: Shoals WEIGHT: 1 MONS: plant -MONS: ice statue / orange crystal statue +MONS: ice statue / orange crystal statue / silver statue SUBST: . = 1:1 .:30 SUBST: p = 1:2 . SUBST: P = 1:20 . diff --git a/crawl-ref/source/dat/des/branches/tomb.des b/crawl-ref/source/dat/des/branches/tomb.des index 8279be4824..9aaf56ef63 100644 --- a/crawl-ref/source/dat/des/branches/tomb.des +++ b/crawl-ref/source/dat/des/branches/tomb.des @@ -315,7 +315,7 @@ MONS: mummy / guardian mummy w:3 / nothing # the weights reflect the recursive SUBST: to keep them the same as before. MONS: guardian mummy w:233 / mummy / nothing w:233 MONS: mummy priest / nothing, sphinx / nothing, greater mummy / nothing -MONS: orange crystal statue / ice statue +MONS: silver statue / orange crystal statue / ice statue # : set_feature_name("granite_statue", "sarcophagus") MAP @@ -407,7 +407,7 @@ SUBST: F = G MONS: mummy / guardian mummy w:3 / nothing MONS: guardian mummy w:233 / mummy / nothing w:233 MONS: mummy priest / nothing, greater mummy / nothing -MONS: orange crystal statue / ice statue +MONS: silver statue / orange crystal statue / ice statue SUBST: t = ~ .:50 # : set_feature_name("granite_statue", "sarcophagus") @@ -441,7 +441,7 @@ MONS: guardian mummy w:200 / mummy w:30 / skeletal warrior / \ ancient champion / nothing w:250 MONS: mummy priest w:20 / unborn / revenant w:5 / lich w:5 / nothing w:30 MONS: greater mummy / ancient lich w:1 / nothing w:11 -MONS: orange crystal statue / ice statue +MONS: silver statue / orange crystal statue / ice statue TILE: F = dngn_sarcophagus_pedestal_left TILE: M = dngn_sarcophagus_pedestal_right COLOUR: FM = yellow @@ -479,7 +479,7 @@ MONS: guardian mummy w:200 / mummy w:30 / skeletal warrior / \ ancient champion / nothing w:250 MONS: mummy priest w:20 / unborn / revenant w:5 / lich w:5 / nothing w:30 MONS: greater mummy / ancient lich w:1 / nothing w:11 -MONS: orange crystal statue / ice statue +MONS: silver statue / orange crystal statue / ice statue TILE: F = dngn_sarcophagus_pedestal_left TILE: M = dngn_sarcophagus_pedestal_right COLOUR: FM = yellow diff --git a/crawl-ref/source/dat/des/branches/vaults_rooms_hard.des b/crawl-ref/source/dat/des/branches/vaults_rooms_hard.des index a2c62cebab..751521897f 100644 --- a/crawl-ref/source/dat/des/branches/vaults_rooms_hard.des +++ b/crawl-ref/source/dat/des/branches/vaults_rooms_hard.des @@ -843,7 +843,7 @@ ENDMAP NAME: nicolae_vaults_statue_guard TAGS: vaults_hard vaults_orient_e -MONS: ice statue / orange crystal statue +MONS: silver statue / ice statue / orange crystal statue KPROP: % = no_rtele_into SUBST: % = %%%* MAP diff --git a/crawl-ref/source/dat/des/branches/zot.des b/crawl-ref/source/dat/des/branches/zot.des index c67bacd11d..0411f7c460 100644 --- a/crawl-ref/source/dat/des/branches/zot.des +++ b/crawl-ref/source/dat/des/branches/zot.des @@ -1036,7 +1036,7 @@ DEPTH: Zot, !Zot:$ ORIENT: float MONS: w:4 oklob sapling / w:4 oklob plant / w:6 burning bush / \ w:6 lightning spire / nothing -MONS: ice statue / orange crystal statue / \ +MONS: ice statue / silver statue / orange crystal statue / \ patrolling curse skull / w:5 nothing SUBST: 3 = 11. # Not quite the orb, but but close enough @@ -2324,7 +2324,7 @@ SUBST: F = . #monsters MONS: patrolling Orb Guardian, Killer Klown, electric golem, orb of fire -MONS: ancient lich, orange crystal statue / ice statue +MONS: ancient lich, orange crystal statue / silver statue / ice statue SUBST: 8=8., 8=8., 5=5. SHUFFLE: 234 SUBST: ? = .:8 ? diff --git a/crawl-ref/source/dat/des/portals/bazaar.des b/crawl-ref/source/dat/des/portals/bazaar.des index 0d095bed2e..356ae236c4 100644 --- a/crawl-ref/source/dat/des/portals/bazaar.des +++ b/crawl-ref/source/dat/des/portals/bazaar.des @@ -201,7 +201,7 @@ ENDMAP NAME: statue_bzr KPROP: O = no_rtele_into SUBST: G = G111 -MONS: orange crystal statue / ice statue +MONS: orange crystal statue / silver statue / ice statue : place_bazaar_portal(_G, true) MAP @ diff --git a/crawl-ref/source/dat/des/portals/wizlab.des b/crawl-ref/source/dat/des/portals/wizlab.des index 709ad52d6f..d76ee03337 100644 --- a/crawl-ref/source/dat/des/portals/wizlab.des +++ b/crawl-ref/source/dat/des/portals/wizlab.des @@ -1615,7 +1615,7 @@ KMONS: 6 = executioner w:5 / balrug w:5 / cacodemon / shadow demon / hellion w death drake w:5 / tentacled monstrosity w:20 / draconian shifter w:20 / \ starcursed mass w:30 / apocalypse crab w:20 KMONS: 7 = eldritch tentacle -KMONS: 8 = statue name:silver n_adj spells:summon_minor_demon;summon_demon +KMONS: 8 = silver statue # Translocations items, abyss escape aides, shrouds, and an immeadiate aide. KITEM: d = scroll of blinking / scroll of teleportation q:2 / \ wand of teleportation w:5 / any scroll w:1 diff --git a/crawl-ref/source/dat/des/portals/ziggurat.des b/crawl-ref/source/dat/des/portals/ziggurat.des index 59674ebff4..1c225b10b6 100644 --- a/crawl-ref/source/dat/des/portals/ziggurat.des +++ b/crawl-ref/source/dat/des/portals/ziggurat.des @@ -325,7 +325,7 @@ ENDMAP NAME: ziggurat_pillar_centre_monster TAGS: ziggurat_pillar centered no_dump -MONS: curse skull / ice statue / orange crystal statue +MONS: curse skull / ice statue / orange crystal statue / silver statue MAP 1 ENDMAP diff --git a/crawl-ref/source/dat/des/sprint/menkaure.des b/crawl-ref/source/dat/des/sprint/menkaure.des index 30c0386209..5b906d5cb1 100644 --- a/crawl-ref/source/dat/des/sprint/menkaure.des +++ b/crawl-ref/source/dat/des/sprint/menkaure.des @@ -318,6 +318,22 @@ ENDMAP NAME: sprint2_obstacle_3 TAGS: sprint2_obstacle no_item_gen no_trap_gen no_monster_gen no_pool_fixup +KMONS: a = silver statue +SHUFFLE: l. +MARKER: a = lua:fog_machine { \ + pow_min = 2, pow_max = 4, delay = 3, \ + size = 4, walk_dist = 8, spread_rate= -1, \ + cloud_type= "poison gas" } +MAP + lllllll + lllllllll +lllllalllll + lllllllll + lllllll +ENDMAP + +NAME: sprint2_obstacle_4 +TAGS: sprint2_obstacle no_item_gen no_trap_gen no_monster_gen no_pool_fixup KMONS: a = orange crystal statue MARKER: a = lua:fog_machine { \ pow_min = 2, pow_max = 4, delay = 3, \ @@ -331,7 +347,7 @@ lllllalllll lllllll ENDMAP -NAME: sprint2_obstacle_4 +NAME: sprint2_obstacle_5 TAGS: sprint2_obstacle no_item_gen no_trap_gen no_monster_gen no_pool_fixup NSUBST: l = 4:D / *:l KMONS: D = lava snake @@ -348,7 +364,7 @@ lllllalllll lllllll ENDMAP -NAME: sprint2_obstacle_5 +NAME: sprint2_obstacle_6 TAGS: sprint2_obstacle no_item_gen no_trap_gen no_monster_gen no_pool_fixup KMONS: a = Roxanne SUBST: l = . @@ -364,7 +380,7 @@ lllllalllll lllllll ENDMAP -NAME: sprint2_obstacle_6 +NAME: sprint2_obstacle_7 TAGS: sprint2_obstacle no_item_gen no_trap_gen no_monster_gen no_pool_fixup NSUBST: l = 8:1 / *:w KMONS: a = electric eel diff --git a/crawl-ref/source/dat/des/sprint/sprint_mu.des b/crawl-ref/source/dat/des/sprint/sprint_mu.des index 278ca5bf07..5fd7029ba6 100644 --- a/crawl-ref/source/dat/des/sprint/sprint_mu.des +++ b/crawl-ref/source/dat/des/sprint/sprint_mu.des @@ -797,7 +797,7 @@ TAGS: sprint_mu_d2 no_rotate no_hmirror no_vmirror MONS: yaktaur / yaktaur captain, giant eyeball, orc priest / \ orc high priest hd:5 hp:70 MONS: spriggan defender hd:5 hp:55 ; dagger -MONS: orange crystal statue +MONS: silver statue / orange crystal statue MONS: crystal guardian hd:10 hp:45, skeletal warrior KMONS: 2 = giant eyeball KITEM: 2 = q:10 scroll of identify ident:all @@ -915,6 +915,7 @@ MONS: vault guard ; short sword ego:electrocution | long sword ego:flaming |\ MONS: stone giant / shadow dragon / quicksilver dragon / golden dragon /\ titan / fire giant / frost giant MONS: skeletal warrior +KMONS: 8 = silver statue KMONS: f = butterfly KMONS: U = Norris ; morningstar ego:vorpal . large shield ego:reflection / \ Frederick ; trident ego:freezing . large shield ego:reflection @@ -966,7 +967,7 @@ vvvvvvvvvvvvvvvvvvv v|*%..655fff+.WwWWv v|*$..655fffvWWWWWv v|*$..655fffv.wwwwv -v|*$.7655fffv.Wwwwv +v|*$.7655fffv.Www8v v|*$.7655fffvWwwwWv v|*$..655fffv.W...v v|*$..655fffv.....v diff --git a/crawl-ref/source/dat/des/variable/float.des b/crawl-ref/source/dat/des/variable/float.des index 02d17c35ae..4de7a1fb85 100644 --- a/crawl-ref/source/dat/des/variable/float.des +++ b/crawl-ref/source/dat/des/variable/float.des @@ -1223,7 +1223,7 @@ MONS: zombie MONS: mummy / nothing SHUFFLE: 2F, cbv SUBST: F = G:99 F:1 -KMONS: F = orange crystal statue / ice statue +KMONS: F = orange crystal statue / silver statue / ice statue MAP xxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx3$$xxxxxxxxxxxxx @@ -3199,8 +3199,8 @@ ENDMAP NAME: minmay_separated_statues DEPTH: D:8- ORIENT: float -MONS: orange crystal statue, ice statue -SHUFFLE: 12 +MONS: silver statue, orange crystal statue, ice statue +SHUFFLE: 123 MAP ...... ......xx @@ -3220,7 +3220,7 @@ ENDMAP NAME: minmay_statue_hallways DEPTH: D:8- ORIENT: float -MONS: orange crystal statue / ice statue +MONS: orange crystal statue / silver statue / ice statue MAP xxx x1x diff --git a/crawl-ref/source/dat/des/variable/large_abstract.des b/crawl-ref/source/dat/des/variable/large_abstract.des index b08540e84b..1d4829829c 100644 --- a/crawl-ref/source/dat/des/variable/large_abstract.des +++ b/crawl-ref/source/dat/des/variable/large_abstract.des @@ -89,7 +89,7 @@ NAME: vault_1 ORIENT: north DEPTH: Depths, !Depths:$ MONS: shapeshifter, shapeshifter, glowing shapeshifter -MONS: orange crystal statue, nothing +MONS: silver statue, nothing SUBST: E=E. SHUFFLE: abcd, $*, |ABCDE, nm, 45 SUBST: A=., B=., C=., D=*, E=%, n=9, m=0 diff --git a/crawl-ref/source/dat/des/variable/mini_features.des b/crawl-ref/source/dat/des/variable/mini_features.des index 7bea2df028..e62289143a 100644 --- a/crawl-ref/source/dat/des/variable/mini_features.des +++ b/crawl-ref/source/dat/des/variable/mini_features.des @@ -92,7 +92,7 @@ TAGS: uniq_statue_alley transparent extra decor DEPTH: D:10- WEIGHT: 7 SUBST: F = G:99 F:1 -KMONS: F = orange crystal statue / ice statue +KMONS: F = orange crystal statue / silver statue / ice statue MAP xxxxxxx xxxcccccx diff --git a/crawl-ref/source/dat/des/variable/mini_monsters.des b/crawl-ref/source/dat/des/variable/mini_monsters.des index c43895d1c8..97cb97a1cd 100644 --- a/crawl-ref/source/dat/des/variable/mini_monsters.des +++ b/crawl-ref/source/dat/des/variable/mini_monsters.des @@ -2506,22 +2506,22 @@ NAME: hangedman_devilish_allure TAGS: no_monster_gen no_item_gen DEPTH: D:12-, Depths WEIGHT: 5 -MONS: lesser demon, common demon +MONS: silver statue, lesser demon, common demon MONS: efreet / large abomination / rakshasa MONS: shadow demon / green death / blizzard demon / balrug / cacodemon / \ hell beast / hellion / reaper / lorocyproca / tormentor KITEM: | = superb_item / any good_item / any w:5 : if you.branch() == "Depths" then -SUBST: 1 = 12, 3 = 4 +SUBST: 2 = 23, 4 = 5 : end MAP xxxxxxxxxxxx@@x @.lxlll.l.l...x @..xl..l.l.l.lx x.{xl%vvvvvvvvx -x..m$*v11123vvx -xl.m1|.11222|vx -x..m$*v11123vvx +x..m$*v22234vvx +xl.m2|122333|vx +x..m$*v22234vvx x.(xl%vvvvvvvvx @..xl..l.l.l.lx @.lxlll.l.l...x @@ -2537,7 +2537,7 @@ ENDMAP NAME: minmay_statue_bubble DEPTH: D:9- -MONS: orange crystal statue / ice statue w:5 +MONS: silver statue / orange crystal statue / ice statue w:5 SUBST: ? = bbb. MAP ....... @@ -2553,7 +2553,7 @@ ENDMAP NAME: minmay_protected_statue DEPTH: D:9-, Depths, !Depths:$ -MONS: orange crystal statue, plant, bush +MONS: silver statue / orange crystal statue, plant, bush SUBST: n : n:20 G 2:1 3:1 KFEAT: n = iron_grate MAP @@ -2568,7 +2568,7 @@ ENDMAP NAME: minmay_statue_crystal_thing DEPTH: D:9- -MONS: orange crystal statue w:30 / ice statue w:5 +MONS: orange crystal statue w:30 / silver statue / ice statue w:5 MAP ..... ...b=b... @@ -2671,7 +2671,7 @@ ENDMAP NAME: statue_in_the_mist_lemuel TAGS: extra -MONS: orange crystal statue / ice statue +MONS: orange crystal statue / silver statue / ice statue DEPTH: D:9-, Depths, Orc, Elf, Snake, Swamp MARKER: G = lua:fog_machine { cloud_type= "grey smoke", \ pow_min = 10, pow_max = 20, delay_min = 15, delay_max = 35, \ @@ -2685,7 +2685,7 @@ ENDMAP NAME: david_greed DEPTH: D:10-, Elf WEIGHT: 4 -MONS: orange crystal statue / ice statue +MONS: silver statue / orange crystal statue / ice statue ITEM: nothing / any good_item SHUFFLE: d| MAP @@ -2728,7 +2728,7 @@ ENDMAP NAME: minmay_more_statues DEPTH: D:12- -MONS: ice statue w:5 / orange crystal statue +MONS: ice statue w:5 / silver statue / orange crystal statue MAP cccbcccccbcccccbccc c.....c%*|*%c.....c @@ -5741,7 +5741,7 @@ NAME: minmay_guarded_unrand_mage TAGS: no_monster_gen no_item_gen DEPTH: Depths WEIGHT: 3 -MONS: wizard, orange crystal statue +MONS: wizard, orange crystal statue / silver statue KMONS: 3 = lich / ancient lich KITEM: 3 = ring of protection from magic unrand:ring_of_the_mage no_pickup KPROP: 32' = no_tele_into @@ -5853,7 +5853,7 @@ NAME: grunt_guarded_unrand_obsidian_axe TAGS: no_monster_gen no_item_gen DEPTH: D:$, Depths WEIGHT: 3 -MONS: patrolling rakshasa +MONS: silver statue MONS: patrolling hell knight MONS: sun demon / soul eater / ice devil / smoke demon / neqoxec / \ ynoxinul / chaos spawn @@ -5979,7 +5979,7 @@ NAME: minivault_8 DEPTH: D:9-, Elf:1-2 MONS: patrolling molten gargoyle SUBST: F = G:99 F:1 -KMONS: F = orange crystal statue / ice statue +KMONS: F = orange crystal statue / silver statue / ice statue MAP x.x.x.x.x.x. .c.c.c.c.c.x @@ -6102,7 +6102,7 @@ DEPTH: D:9-, Elf, Abyss SHUFFLE: AB, CD, EH/FG KITEM: ABCD = gold / nothing SUBST: F = G:99 F:1 -KMONS: F = orange crystal statue / ice statue +KMONS: F = orange crystal statue / silver statue / ice statue MAP ............ .xxxxxxxxxx. @@ -6121,7 +6121,7 @@ ENDMAP # Lava pond NAME: minivault_15 TAGS: extra -KMONS: 1 = ice statue +KMONS: 1 = silver statue / ice statue KFEAT: 1 = < MAP ......... @@ -6139,7 +6139,7 @@ NAME: minivault_16 TAGS: allow_dup extra luniq WEIGHT: 40 # as this replaces the former statue only minivaults -MONS: orange crystal statue / ice statue +MONS: orange crystal statue / silver statue / ice statue SUBST: G = G111 MAP ........... diff --git a/crawl-ref/source/dat/descript/ability.txt b/crawl-ref/source/dat/descript/ability.txt index f37da21ce4..ff83fc9417 100644 --- a/crawl-ref/source/dat/descript/ability.txt +++ b/crawl-ref/source/dat/descript/ability.txt @@ -753,6 +753,11 @@ Make lightning spire ability Construct a lightning spire with the ability to throw electricity at the targeted location. %%%% +Make silver statue ability + +Construct a statue with the ability to summon friendly demons at the targeted +location. +%%%% Make bazaar ability Create a portal to a bazaar at your location. diff --git a/crawl-ref/source/dat/descript/da/ability.txt b/crawl-ref/source/dat/descript/da/ability.txt index d7b699cdb9..256a32d509 100644 --- a/crawl-ref/source/dat/descript/da/ability.txt +++ b/crawl-ref/source/dat/descript/da/ability.txt @@ -683,6 +683,10 @@ Make lightning spire ability Bygger et lynspir, som kan udslynge elektricitet, på det valgte sted. %%%% +Make silver statue ability + +Bygger en statue med evnen til at hidkalde venlige dæmoner på det valgte sted. +%%%% Make bazaar ability Skaber en portal til en basar der, hvor du står. diff --git a/crawl-ref/source/dat/descript/de/ability.txt b/crawl-ref/source/dat/descript/de/ability.txt index f967138978..584c588e50 100644 --- a/crawl-ref/source/dat/descript/de/ability.txt +++ b/crawl-ref/source/dat/descript/de/ability.txt @@ -548,6 +548,11 @@ Make lightning spire ability Erbaut einen Blitz-Turm mit der Fähigkeit Blitze auf die gewählte Position zu werfen. %%%% +Make silver statue ability + +Erbaue eine Statue auf der gewählten Position, mit der Fähigkeit freundliche +Dämonen zu beschwören. +%%%% Make bazaar ability Erschaffe auf deiner Position ein Portal zu einem Basar. diff --git a/crawl-ref/source/dat/descript/el/ability.txt b/crawl-ref/source/dat/descript/el/ability.txt index 80b80232b2..df09058461 100644 --- a/crawl-ref/source/dat/descript/el/ability.txt +++ b/crawl-ref/source/dat/descript/el/ability.txt @@ -482,6 +482,10 @@ Make lightning spire ability Κατασκεύασε έναν ηλεκτρικό πυλώνα με την ικανότητα να εκτοξεύει ηλεκτρισμό. %%%% +Make silver statue ability + +Κατασκεύασε ένα άγαλμα με την ικανότητα να καλεί φιλικούς δαίμονες. +%%%% Make bazaar ability Δημιούργησε μια πύλη προς ένα παζάρι. diff --git a/crawl-ref/source/dat/descript/es/ability.txt b/crawl-ref/source/dat/descript/es/ability.txt index 02e072d368..30dc9b7f6a 100644 --- a/crawl-ref/source/dat/descript/es/ability.txt +++ b/crawl-ref/source/dat/descript/es/ability.txt @@ -542,6 +542,11 @@ Make lightning spire ability Construyes una espiral de rayos con la habilidad de lanzar electricidad en la posición señalada. %%%% +Make silver statue ability + +Construyes una estatua con la habilidad de convocar demonios amistosos en la +posición señalada. +%%%% Make bazaar ability Creas un portal a un bazar en tu posición. diff --git a/crawl-ref/source/dat/descript/fr/ability.txt b/crawl-ref/source/dat/descript/fr/ability.txt index b8429f4f67..960933f0fb 100644 --- a/crawl-ref/source/dat/descript/fr/ability.txt +++ b/crawl-ref/source/dat/descript/fr/ability.txt @@ -716,6 +716,11 @@ Make lightning spire ability Construit une lance de foudre , qui peut tirer des éclairs, sur la position ciblée. %%%% +Make silver statue ability + +Construit une statue, avec la capacité d'invoquer des démons familiers, sur la +position ciblée. +%%%% Make bazaar ability Crée un portail vers un bazar sur votre position. diff --git a/crawl-ref/source/dat/descript/ja/ability.txt b/crawl-ref/source/dat/descript/ja/ability.txt index 5272aca7c3..98180f4b02 100644 --- a/crawl-ref/source/dat/descript/ja/ability.txt +++ b/crawl-ref/source/dat/descript/ja/ability.txt @@ -530,6 +530,10 @@ Make lightning spire ability 指定した位置に電撃を放射する稲光の尖塔を建築する。 %%%% +Make silver statue ability + +友好的な悪魔を召喚する能力を持った像を指定した位置に建てる。 +%%%% Make bazaar ability あなたのいる位置にバザールへの門を作成する。 diff --git a/crawl-ref/source/dat/descript/ko/ability.txt b/crawl-ref/source/dat/descript/ko/ability.txt index ef071de22c..187b754a8d 100644 --- a/crawl-ref/source/dat/descript/ko/ability.txt +++ b/crawl-ref/source/dat/descript/ko/ability.txt @@ -542,6 +542,10 @@ Make lightning spire ability 해당 지역에 전기를 발사하는 능력을 가진 번개탑을 설치한다. %%%% +Make silver statue ability + +해당 지역에 동료 악마를 소환하는 석상을 설치한다. +%%%% Make bazaar ability 당신이 서있는 곳에, 상점가로 가는 포탈을 만든다. diff --git a/crawl-ref/source/dat/descript/monsters.txt b/crawl-ref/source/dat/descript/monsters.txt index 537aa3a457..5c000781e5 100644 --- a/crawl-ref/source/dat/descript/monsters.txt +++ b/crawl-ref/source/dat/descript/monsters.txt @@ -2233,6 +2233,12 @@ The bane of wizards, these terrible spirits bring an unearthly silence to the area around them, making it impossible to recite the magical incantations involved with casting spells or reading scrolls. %%%% +silver statue + +A beautiful statue of an unknown creature, glistening with a silvery hue. Its +eyes glow with an otherworldly, malignant radiance. If approached, it may call +forth demons to defend itself. +%%%% simulacrum An ice replica of a monster, animated by the powers of necromancy. diff --git a/crawl-ref/source/dat/descript/ru/ability.txt b/crawl-ref/source/dat/descript/ru/ability.txt index 88e9505257..e360d033bd 100644 --- a/crawl-ref/source/dat/descript/ru/ability.txt +++ b/crawl-ref/source/dat/descript/ru/ability.txt @@ -494,6 +494,11 @@ Make lightning spire ability В указанной точке вы создаете шпиль, способный бить электрическими зарядами. %%%% +Make silver statue ability + +Вы сооружаете в указанном месте статую, способную призывать дружественных +демонов. +%%%% Make bazaar ability Вы создаете портал на Базар на том месте, где стоите. diff --git a/crawl-ref/source/dat/descript/zh/ability.txt b/crawl-ref/source/dat/descript/zh/ability.txt index c10e5f2774..123abe5ca8 100644 --- a/crawl-ref/source/dat/descript/zh/ability.txt +++ b/crawl-ref/source/dat/descript/zh/ability.txt @@ -496,6 +496,10 @@ Make lightning spire ability 在目标地点建造一座会发射电流束的闪电塔。 %%%% +Make silver statue ability + +在目标地点建造一尊会召唤恶魔来协助战斗的雕像。 +%%%% Make bazaar ability 在你所在的位置创造出一个通往商场的传送门。 diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h index 78c5c0ea9f..9a9602c508 100644 --- a/crawl-ref/source/enum.h +++ b/crawl-ref/source/enum.h @@ -210,9 +210,7 @@ enum ability_type ABIL_MAKE_DART_TRAP, ABIL_MAKE_ICE_STATUE, ABIL_MAKE_OCS, -#if TAG_MAJOR_VERSION == 34 ABIL_MAKE_SILVER_STATUE, -#endif ABIL_MAKE_CURSE_SKULL, ABIL_MAKE_TELEPORT, ABIL_MAKE_ARROW_TRAP, @@ -2770,9 +2768,7 @@ enum monster_type // menv[].type // Statuary MONS_ORANGE_STATUE, -#if TAG_MAJOR_VERSION == 34 MONS_SILVER_STATUE, -#endif MONS_ICE_STATUE, MONS_STATUE, MONS_TRAINING_DUMMY, diff --git a/crawl-ref/source/mon-abil.cc b/crawl-ref/source/mon-abil.cc index d937e4b0cb..7ee9db409e 100644 --- a/crawl-ref/source/mon-abil.cc +++ b/crawl-ref/source/mon-abil.cc @@ -1086,6 +1086,37 @@ static bool _siren_movement_effect(const monster* mons) return do_resist; } +static bool _silver_statue_effects(monster* mons) +{ + actor *foe = mons->get_foe(); + + int abjuration_duration = 5; + + // Tone down friendly silver statues for Zotdef. + if (mons->attitude == ATT_FRIENDLY && !(foe && foe->is_player()) + && crawl_state.game_is_zotdef()) + { + if (!one_chance_in(3)) + return false; + abjuration_duration = 1; + } + + if (foe && mons->can_see(foe) && !one_chance_in(3)) + { + const string msg = "'s eyes glow " + weird_glowing_colour() + '.'; + simple_monster_message(mons, msg.c_str(), MSGCH_WARN); + + create_monster( + mgen_data( + summon_any_demon((coinflip() ? RANDOM_DEMON_COMMON + : RANDOM_DEMON_LESSER)), + SAME_ATTITUDE(mons), mons, abjuration_duration, 0, + foe->pos(), mons->foe)); + return true; + } + return false; +} + static bool _orange_statue_effects(monster* mons) { actor *foe = mons->get_foe(); @@ -3481,6 +3512,13 @@ bool mon_special_ability(monster* mons, bolt & beem) used = _orange_statue_effects(mons); break; + case MONS_SILVER_STATUE: + if (player_or_mon_in_sanct(mons)) + break; + + used = _silver_statue_effects(mons); + break; + case MONS_BALL_LIGHTNING: if (is_sanctuary(mons->pos())) break; diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h index f00e654e0a..b3bcc390c9 100644 --- a/crawl-ref/source/mon-data.h +++ b/crawl-ref/source/mon-data.h @@ -244,7 +244,6 @@ static monsterentry mondata[] = AXED_MON(MONS_GRIZZLY_BEAR) AXED_MON(MONS_SPRIGGAN_ENCHANTER) AXED_MON(MONS_PHOENIX) - AXED_MON(MONS_SILVER_STATUE) #endif // Real monsters begin here {dlb}: @@ -5668,6 +5667,18 @@ static monsterentry mondata[] = }, { + MONS_SILVER_STATUE, '8', WHITE, "silver statue", + M_ARTIFICIAL | M_STATIONARY | M_SPEAKS, + mrd(MR_RES_POISON | MR_RES_FIRE | MR_RES_COLD | MR_RES_ELEC, 2), + 0, 10, MONS_STATUE, MONS_SILVER_STATUE, MH_NONLIVING, MAG_IMMUNE, + { AT_NO_ATK, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK }, + { 6, 0, 0, 150 }, + 15, 1, MST_NO_SPELLS, CE_NOCORPSE, Z_NOZOMBIE, S_SILENT, + I_HIGH, HT_LAND, FL_NONE, 10, DEFAULT_ENERGY, + MONUSE_NOTHING, MONEAT_NOTHING, SIZE_LARGE, MON_SHAPE_HUMANOID +}, + +{ MONS_ORANGE_STATUE, '8', LIGHTRED, "orange crystal statue", M_ARTIFICIAL | M_STATIONARY | M_SPEAKS, mrd(MR_RES_POISON | MR_RES_FIRE | MR_RES_COLD | MR_RES_ELEC, 2), diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index 2c9a8454c1..38ea48f34f 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -980,7 +980,7 @@ bool invalid_monster_index(int i) bool mons_is_statue(monster_type mc, bool allow_disintegrate) { - if (mc == MONS_ORANGE_STATUE) + if (mc == MONS_ORANGE_STATUE || mc == MONS_SILVER_STATUE) return true; if (!allow_disintegrate) @@ -2045,7 +2045,7 @@ int exper_value(const monster* mon, bool real) // The beta26 statues have non-spell-like abilities that the experience // code can't see, so inflate their XP a bit. Ice statues and Roxanne // get plenty of XP for their spells. - if (mc == MONS_ORANGE_STATUE) + if (mc == MONS_ORANGE_STATUE || mc == MONS_SILVER_STATUE) return hd * 15; x_val = (16 + maxhp) * hd * hd / 10; @@ -3433,7 +3433,7 @@ bool mons_has_los_ability(monster_type mon_type) } // Although not using spells, these are exceedingly dangerous. - if (mon_type == MONS_ORANGE_STATUE) + if (mon_type == MONS_SILVER_STATUE || mon_type == MONS_ORANGE_STATUE) return true; // Beholding just needs LOS. diff --git a/crawl-ref/source/monster.cc b/crawl-ref/source/monster.cc index 8272715526..6142869a68 100644 --- a/crawl-ref/source/monster.cc +++ b/crawl-ref/source/monster.cc @@ -390,6 +390,7 @@ int monster::body_weight(bool /*base*/) const break; case MONS_QUICKSILVER_DRAGON: + case MONS_SILVER_STATUE: case MONS_STATUE: weight *= 4; break; @@ -3542,7 +3543,7 @@ bool monster::is_holy(bool check_spells) const bool monster::is_unholy(bool check_spells) const { - if (mons_is_demonspawn(type)) + if (type == MONS_SILVER_STATUE || mons_is_demonspawn(type)) return true; if (holiness() == MH_DEMONIC) diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc index 1da2af1879..fc1be035b0 100644 --- a/crawl-ref/source/player.cc +++ b/crawl-ref/source/player.cc @@ -3572,6 +3572,8 @@ void level_change(int source, const char* aux, bool skip_attribute_increase) mprf(MSGCH_INTRINSIC_GAIN, "Your Zot abilities now extend through making water."); if (you.experience_level == 19) mprf(MSGCH_INTRINSIC_GAIN, "Your Zot abilities now extend through the making of lightning spires."); + if (you.experience_level == 20) + mprf(MSGCH_INTRINSIC_GAIN, "Your Zot abilities now extend through the making of silver statues."); // gold and bazaars gained together if (you.experience_level == 21) mprf(MSGCH_INTRINSIC_GAIN, "Your Zot abilities now extend through the making of bazaars."); diff --git a/crawl-ref/source/rltiles/dc-mon.txt b/crawl-ref/source/rltiles/dc-mon.txt index c33b70d410..09e49c9ebd 100644 --- a/crawl-ref/source/rltiles/dc-mon.txt +++ b/crawl-ref/source/rltiles/dc-mon.txt @@ -437,6 +437,7 @@ block_of_ice MONS_BLOCK_OF_ICE block_of_ice2 training_dummy MONS_TRAINING_DUMMY ice_statue MONS_ICE_STATUE +silver_statue MONS_SILVER_STATUE orange_crystal_statue MONS_ORANGE_STATUE wucad_mu_statue MONS_WUCAD_MU_STATUE %sdir mon/vault diff --git a/crawl-ref/source/rltiles/dc-zotdef.txt b/crawl-ref/source/rltiles/dc-zotdef.txt index 7a231f3606..c5bac8fd06 100644 --- a/crawl-ref/source/rltiles/dc-zotdef.txt +++ b/crawl-ref/source/rltiles/dc-zotdef.txt @@ -22,6 +22,7 @@ oklob_sapling ABILITY_ZOTDEF_OKLOB_SAPLING plant ABILITY_ZOTDEF_PLANT remove_curse ABILITY_ZOTDEF_REMOVE_CURSE sage ABILITY_ZOTDEF_SAGE +silver_statue ABILITY_ZOTDEF_SILVER_STATUE spear_trap ABILITY_ZOTDEF_SPEAR_TRAP spore ABILITY_ZOTDEF_SPORE teleport ABILITY_ZOTDEF_TELEPORT diff --git a/crawl-ref/source/rltiles/UNUSED/monsters/silver_statue.png b/crawl-ref/source/rltiles/mon/statues/silver_statue.png Binary files differindex ebfd57b6bc..ebfd57b6bc 100644 --- a/crawl-ref/source/rltiles/UNUSED/monsters/silver_statue.png +++ b/crawl-ref/source/rltiles/mon/statues/silver_statue.png diff --git a/crawl-ref/source/spl-damage.cc b/crawl-ref/source/spl-damage.cc index 44981bd583..6c22a90b47 100644 --- a/crawl-ref/source/spl-damage.cc +++ b/crawl-ref/source/spl-damage.cc @@ -1096,6 +1096,7 @@ static int _shatter_mon_dice(const monster *mon) case MONS_IRON_GOLEM: case MONS_WAR_GARGOYLE: case MONS_CRYSTAL_GUARDIAN: + case MONS_SILVER_STATUE: case MONS_ORANGE_STATUE: case MONS_ROXANNE: return 6; @@ -2071,12 +2072,18 @@ bool setup_fragmentation_beam(bolt &beam, int pow, const actor *caster, beam.damage.num = 3; break; + case MONS_SILVER_STATUE: case MONS_ORANGE_STATUE: case MONS_CRYSTAL_GUARDIAN: case MONS_ROXANNE: beam.ex_size = 2; beam.damage.num = 4; - if (mon->type == MONS_ORANGE_STATUE) + if (mon->type == MONS_SILVER_STATUE) + { + beam.name = "blast of silver fragments"; + beam.colour = WHITE; + } + else if (mon->type == MONS_ORANGE_STATUE) { beam.name = "blast of orange crystal shards"; beam.colour = LIGHTRED; diff --git a/crawl-ref/source/tilepick.cc b/crawl-ref/source/tilepick.cc index 070c938574..cfd9dc6a70 100644 --- a/crawl-ref/source/tilepick.cc +++ b/crawl-ref/source/tilepick.cc @@ -1974,6 +1974,8 @@ static tileidx_t _tileidx_monster_base(int type, bool in_water, int colour, return TILEP_MONS_TRAINING_DUMMY; case MONS_ICE_STATUE: return TILEP_MONS_ICE_STATUE; + case MONS_SILVER_STATUE: + return TILEP_MONS_SILVER_STATUE; case MONS_ORANGE_STATUE: return TILEP_MONS_ORANGE_STATUE; case MONS_DIAMOND_OBELISK: @@ -5446,6 +5448,8 @@ tileidx_t tileidx_ability(const ability_type ability) return TILEG_ABILITY_ZOTDEF_ICE_STATUE; case ABIL_MAKE_OCS: return TILEG_ABILITY_ZOTDEF_OCS; + case ABIL_MAKE_SILVER_STATUE: + return TILEG_ABILITY_ZOTDEF_SILVER_STATUE; case ABIL_MAKE_CURSE_SKULL: return TILEG_ABILITY_ZOTDEF_CURSE_SKULL; case ABIL_MAKE_TELEPORT: |