Might still need some tweaks but overall looks great!
And… we need more tiles (kraken head + tentacles).
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10691 c06c8d41-db1a-0410-9941-cceddc491573
JESCFNNBKC7BW3XYLJLAF6RLMP5VCXIUUXQUGEZBF4FYPNMEGNJAC X62UCLFYBDIBBE6KP6SWRBYDMYG4WMRDLQTN7ZBQT4S544H4STPQC CN2WE5O23XAZADER25N555J44CCXIYB6YYHBLHEBQS6DAIKZEGNAC PC6K5OQF3BWPMWTIN5JXAKHTZF453JQOELDWRUOSBZXR256FTUYQC NHCEH7ZFP3IFRMZMC25ZA2X5ZSS3MOCHCYLVCSVY7RTY62WX7UAQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC SKWBAGSAB625IIN4UP3NCPRX2H3KCPC2LULHS2A7JVRLO3EUBJDAC 2FHNLTLN3DVVD67N4QMAQ2LO7YY4GVZWXJAOIWGCCYYGIX7UHSVQC DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC QFWRKRPFS7TWZYFMIXWU24RS6DAUQPJS47O4HY456PXQJDOYNDWQC 4UXFU3FZOCBSLDQ4S7MJKAE2H7VUHCNRDQMIY6NJ3PHYXWNGISDQC QDWDUURSNLMT6AXNNJ3DEQCWAKCAIHV6MP5F7QGIBGXOG2BI2NPQC IYMUEJG2VI3TV7HVAZIU2L4DVQY7VNSIFVV4I3QIVP7H66EVJISAC 3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC V633AMMPMHJB5ZLP5IHFXCT6FCENVTPX25TY7T5MF2QZLDDN24HAC VOR2QOT3R3BC3H74GMW4PUBY77QBJXE5QGQNBIINBE3MPSH6CXWQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC PQYLCUBDA6P4UY7X3NLIUUKMJ5GTQTB5X64VNSQVMCFS6ONMXXOQC AYU5OVG2HZO46KDAPKUWAVHS5HTYFKUWIMIRMTHAXVVFEDJE7YPAC 3HGELZU7NELOQ635HZO6IJIYLBSNCJ5VPH46IE22KA3OSLEFK7AQC GLHWVF2JPHBL7NV3D3CNHPIQSHZQPREVUJT6ZN43OBKBX5HL5NKQC GZ4FB5VKL4C22KK3GSKQPLJYMRGLFXUDCOBNEBC2OKK6KVZL3OSQC 22MF6OUN62WDBJR5QFNJTKU7Q5TIQ76XWCEIRBFWAZDMZUSKJGCAC TVC7W7C2XKBQSD2IJFMWFVGXZAOD4EUOW43NAQTOF5KFMAUOJABQC OSGS3PH2L5CBTDVZCZS6OCFQNA4A7RMEXBYJQB7DDZBYYJW7QSSAC 3WHI3KM43ZCN4ITJLFQQBQBC4OJPRS7QTBPIQ6QBCUVKRSK476SAC ARP25R4B66WPY56X77RRYLHDTIVGZCG2GQGV5WX2UX3DUAS2SAAQC 3UHMSNL7FEGVWYDX6AAJD2XQUQQ3HJMMTDR66IORZPYP5MJ2L7AQC QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC BGJ7P65JV2OFVXMGAJDHV5Y36TR7JOFDWJUZJBHUBD7SCQMDRBEAC LOAPDCDZDTOXBCNX7IQBCACP7TCMVUBNZVUTUCLX5VXM7MEFPQBQC LHYTGOCNDWX3CVD2HSQ6LAYC6NLKKI6ZKKNWZ5IQWP6YP5PQEVWQC LJK4ZQATLSB4MKZG3ARZX5V6RFGTN3NLCN6GTCUGJQKU26SOXMUAC J6APXOT4QOGQFONWB7G546VTVF6QG42HVOROMHF7YBDJPR4K26OAC R2DQBWKIW7YUJB5SOQ7J274JIYRVX4H3ISFRPAL5RG2RVVP4G2KAC 75NDCBXLYKGPW5VFJ2CLA226U5RJQCWUGR4KD3JM5NR6KHZQB2AQC Y56C5OMUQ5XF2G6DKDV4R5MED44UOIUPTBBQVWQBUHYIXYA5MOZAC 4RFKVDJKTCRBZU6WPJ2E5OVI5IRPY3UTRPOBLC5QHY4CQJJTLZKQC VRFQK6S2TXOFFO5K5HRDXPR7QEKKAZAVCASSIJVPWQ4GE26UOGTQC KVPP3CYPEFADQCL5Y56ELSUBA47SFNAJNCSVCSOK2GF67DHVMBCQC QSPLWL6QWR5RGGORC4XJ3ICIII5JY6MLQFSD7JOI2QL664KNK5VQC UWYK2M6I6P6EFAVHLWQGDK77STFO3SPO5SVOF5WZTOKUH2O6BBHQC LFJAIJGMBJHZQIYSLDJ57N56WFUY67LVM3GRWOPIDIVNELEQU5EAC JZCODQCOUBBBPPR4TLOAPIB4BQLDY3ORTJXTWEQSUJVJ7DMK7FVAC TDAVD56MGLFSMJLPLSYLEVW7MBRMT7V5BNII4TRWVDIHH47CD2OAC YL67KHG3TAZXJCWGRZPVASD6RS2SQ3V5KMIUK4E6PV43V2NBOLEAC M7WTOF3BVX5MGA7AQZB22YEFWCSL7RLW54PQM3MTRLCKUCUZZEUAC EHP6PYCIPYQ3KF4JFGBTZXEUQHN3FVAH4NUWEOWDDNKGPYVOTOJQC case SPELL_KRAKEN_TENTACLES:{int kraken_index = monster_index(monster);if (invalid_monster_index(duration)){mpr("Error! Kraken is not a part of the current environment!",MSGCH_ERROR);return;}sumcount2 = random2(9); // up to eight tentaclesif (sumcount2 == 0)return;for (sumcount = 0; sumcount < MAX_MONSTERS; ++sumcount)if (menv[sumcount].type == MONS_KRAKEN_TENTACLE&& (int) menv[sumcount].number == kraken_index){// Reduce by tentacles already placed.sumcount2--;}for (sumcount = sumcount2; sumcount > 0; --sumcount){// Tentacles aren't really summoned (controlled by spell_cast// being passed to summon_type), so I'm not sure what the// abjuration value (3) is doing there. (jpeg)if (-1 == create_monster(mgen_data(MONS_KRAKEN_TENTACLE, SAME_ATTITUDE(monster),3, spell_cast, monster->pos(), monster->foe, 0, god,MONS_PROGRAM_BUG, kraken_index, monster->colour,you.your_level, PROX_CLOSE_TO_PLAYER,you.level_type))){sumcount2--;}}if (sumcount2 == 1)mpr("A tentacle rises from the water!");else if (sumcount2 > 1)mpr("Tentacles burst out of the water!");return;}
static int _tentacle_too_far(monsters *head, monsters *tentacle){// The Shoals produce no disjoint bodies of water.// If this ever changes, we'd need to check if the head and tentacle// are still in the same pool.// XXX: Actually, using Feawn's Sunlight power you can separate pools...return grid_distance(head->pos(), tentacle->pos()) > LOS_RADIUS;}void mons_relocated(monsters *monster){if (monster->type == MONS_KRAKEN){int headnum = monster_index(monster);
if (invalid_monster_index(headnum))return;for (int i = 0; i < MAX_MONSTERS; ++i){monsters *tentacle = &menv[i];if (tentacle->type == MONS_KRAKEN_TENTACLE&& (int) tentacle->number == headnum&& _tentacle_too_far(monster, tentacle)){monster_die(tentacle, KILL_RESET, -1, true, false);}}}else if (monster->type == MONS_KRAKEN_TENTACLE){if (invalid_monster_index(monster->number)|| menv[monster->number].type!=MONS_KRAKEN|| _tentacle_too_far(&menv[monster->number], monster)){monster_die(monster, KILL_RESET, -1, true, false);}}}static int _destroy_tentacles(monsters *head){int tent = 0;int headnum = monster_index(head);if (invalid_monster_index(headnum))return 0;for (int i = 0; i < MAX_MONSTERS; ++i){monsters *monster = &menv[i];if (monster->type == MONS_KRAKEN_TENTACLE&& (int)monster->number == headnum){if (mons_near(monster))tent++;monster->hurt(monster, INSTANT_DEATH);}}return tent;}
},// A kraken and its tentacles get a random colour at creation.{MONS_KRAKEN, 'X', DARKGREY, "kraken",M_COLD_BLOOD | M_SPELLCASTER,MR_NO_FLAGS,1500, 20, MONS_KRAKEN, MONS_KRAKEN, MH_NATURAL, -3,{ {AT_BITE, AF_PLAIN, 15}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },{ 20, 10, 10, 0 },20, 0, MST_KRAKEN, CE_CLEAN, Z_NOZOMBIE, S_SILENT, I_ANIMAL,HT_WATER, 10, DEFAULT_ENERGY, MONUSE_NOTHING, MONEAT_NOTHING, SIZE_HUGE
{MONS_KRAKEN_TENTACLE, 'w', DARKGREY, "tentacle",M_COLD_BLOOD | M_NO_EXP_GAIN,MR_RES_ASPHYX,0, 10, MONS_KRAKEN_TENTACLE, MONS_KRAKEN_TENTACLE, MH_NATURAL, MAG_IMMUNE,{ {AT_HIT, AF_PLAIN, 15}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },{ 5, 3, 5, 0 },5, 7, MST_NO_SPELLS, CE_NOCORPSE, Z_NOZOMBIE, S_SILENT, I_ANIMAL,HT_WATER, 10, DEFAULT_ENERGY, MONUSE_NOTHING, MONEAT_NOTHING, SIZE_LARGE},
// Need to set a name for the player ghost.
if (mid >= MAX_MONSTERS || menv[mid].type != MONS_KRAKEN){for (mid = 0; mid < MAX_MONSTERS; mid++){if (menv[mid].type == MONS_KRAKEN && menv[mid].alive()){menv[mid].colour = random_choose(GREEN, LIGHTGREY,LIGHTGREEN, LIGHTCYAN,LIGHTRED, YELLOW, WHITE,-1);return;}}}if (mid >= MAX_MONSTERS){mpr("Couldn't find player kraken!");return;}}// FIXME: This is a bit useless, seeing how you cannot set the// ghost's stats, brand or level.
kraken"... Kraken, also called the Crab-fish, which [according to the pilots ofNorway] is not that huge, for heads and tails counted, he is no larger thanour Öland is wide [i.e. less than 16 km] ... He stays at the sea floor,constantly surrounded by innumerable small fishes, who serve as his food andare fed by him in return: for his meal, if I remember correctly what E.Pontoppidan writes, lasts no longer than three months, and another three arethen needed to digest it. His excrements nurture in the following an army oflesser fish, and for this reason, fishermen plumb after his resting place... Gradually, Kraken ascends to the surface, and when he is at ten totwelve fathoms, the boats had better move out of his vicinity, as he willshortly thereafter burst up, like a floating island, spurting water from hisdreadful nostrils and making ring waves around him, which can reach manymiles. Could one doubt that this is the Leviathan of Job?"-Jacob Wallenberg, "Min son på galejan", 1781.%%%%