diff -pruN slashem-0.0.7E7F1-official-release/include/mondata.h slashem-0.0.7E7F1-gold-dragon/include/mondata.h --- slashem-0.0.7E7F1-official-release/include/mondata.h 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-gold-dragon/include/mondata.h 2005-11-01 23:21:52.000000000 +0100 @@ -174,7 +174,9 @@ #define emits_light(ptr) (((ptr)->mlet == S_LIGHT || \ (ptr) == &mons[PM_FIRE_VORTEX]) ? 3 : \ ((ptr) == &mons[PM_FIRE_ELEMENTAL]) ? 2 : \ - ((ptr) == &mons[PM_FIRE_VAMPIRE])? 2 : \ + ((ptr) == &mons[PM_FIRE_VAMPIRE])? 2 : \ + ((ptr) == &mons[PM_GOLD_DRAGON]) ? 1 : \ + ((ptr) == &mons[PM_BABY_GOLD_DRAGON]) ? 1 : \ ((ptr) == &mons[PM_FLAMING_SPHERE]) ? 1 : \ ((ptr) == &mons[PM_SHOCKING_SPHERE]) ? 1 : 0) /* [note: the light ranges above were reduced to 1 for performance...] */ diff -pruN slashem-0.0.7E7F1-official-release/src/bones.c slashem-0.0.7E7F1-gold-dragon/src/bones.c --- slashem-0.0.7E7F1-official-release/src/bones.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-gold-dragon/src/bones.c 2005-11-01 23:04:14.000000000 +0100 @@ -290,6 +290,10 @@ struct obj *corpse; /* check iron balls separately--maybe they're not carrying it */ if (uball) uball->owornmask = uchain->owornmask = 0; + /* extinguish armor */ + if(uarm->otyp == GOLD_DRAGON_SCALE_MAIL || uarm->otyp == GOLD_DRAGON_SCALES) + end_burn(uarm,FALSE); + /* dispose of your possessions, usually cursed */ if (u.ugrave_arise == (NON_PM - 1)) { struct obj *otmp; diff -pruN slashem-0.0.7E7F1-official-release/src/do_wear.c slashem-0.0.7E7F1-gold-dragon/src/do_wear.c --- slashem-0.0.7E7F1-official-release/src/do_wear.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-gold-dragon/src/do_wear.c 2005-11-01 23:24:30.000000000 +0100 @@ -589,16 +589,28 @@ Armor_on() makeknown(uarm->otyp); break; } - return 0; + if(uarm->otyp == GOLD_DRAGON_SCALE_MAIL || + uarm->otyp == GOLD_DRAGON_SCALES) { + begin_burn(uarm,FALSE); + if(!Blind) + pline("%s to glow.",Tobjnam(uarm,"begin")); + } + return 0; } int Armor_off() -{ - takeoff_mask &= ~W_ARM; - setworn((struct obj *)0, W_ARM); - cancelled_don = FALSE; - return 0; +{ + if(uarm->otyp == GOLD_DRAGON_SCALE_MAIL || + uarm->otyp == GOLD_DRAGON_SCALES) { + end_burn(uarm,FALSE); + if(!Blind) + pline("%s glowing.",Tobjnam(uarm,"stop")); + } + takeoff_mask &= ~W_ARM; + setworn((struct obj *)0, W_ARM); + cancelled_don = FALSE; + return 0; } /* The gone functions differ from the off functions in that if you die from @@ -607,7 +619,9 @@ Armor_off() int Armor_gone() { - takeoff_mask &= ~W_ARM; + if(uarm->otyp == GOLD_DRAGON_SCALE_MAIL || uarm->otyp == GOLD_DRAGON_SCALES) + end_burn(uarm,FALSE); + takeoff_mask &= ~W_ARM; setnotworn(uarm); cancelled_don = FALSE; return 0; diff -pruN slashem-0.0.7E7F1-official-release/src/mon.c slashem-0.0.7E7F1-gold-dragon/src/mon.c --- slashem-0.0.7E7F1-official-release/src/mon.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-gold-dragon/src/mon.c 2005-11-01 23:04:14.000000000 +0100 @@ -191,6 +191,7 @@ register struct monst *mtmp; case PM_BLACK_DRAGON: case PM_BLUE_DRAGON: case PM_GREEN_DRAGON: + case PM_GOLD_DRAGON: case PM_YELLOW_DRAGON: /* Make dragon scales. This assumes that the order of the */ /* dragons is the same as the order of the scales. */ @@ -1618,6 +1619,7 @@ register struct monst *mtmp; { struct permonst *mptr; int tmp; + struct obj* otmp; /* WAC just in case caller forgot to...*/ if (mtmp->mhp) mtmp->mhp = -1; @@ -1643,6 +1645,11 @@ register struct monst *mtmp; dismount_steed(DISMOUNT_GENERIC); #endif + /* extinguish monster's armor */ + if ( (otmp = which_armor(mtmp, W_ARM)) && + (otmp->otyp==GOLD_DRAGON_SCALE_MAIL || otmp->otyp == GOLD_DRAGON_SCALES) ) + end_burn(otmp,FALSE); + mptr = mtmp->data; /* save this for m_detach() */ /* restore chameleon, lycanthropes to true form at death */ if (mtmp->cham) diff -pruN slashem-0.0.7E7F1-official-release/src/mondata.c slashem-0.0.7E7F1-gold-dragon/src/mondata.c --- slashem-0.0.7E7F1-official-release/src/mondata.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-gold-dragon/src/mondata.c 2005-11-01 23:04:14.000000000 +0100 @@ -582,6 +582,7 @@ static const short grownups[][2] = { {PM_BABY_BLACK_DRAGON, PM_BLACK_DRAGON}, {PM_BABY_BLUE_DRAGON, PM_BLUE_DRAGON}, {PM_BABY_GREEN_DRAGON, PM_GREEN_DRAGON}, + {PM_BABY_GOLD_DRAGON, PM_GOLD_DRAGON}, {PM_BABY_YELLOW_DRAGON, PM_YELLOW_DRAGON}, {PM_RED_NAGA_HATCHLING, PM_RED_NAGA}, {PM_BLACK_NAGA_HATCHLING, PM_BLACK_NAGA}, diff -pruN slashem-0.0.7E7F1-official-release/src/monst.c slashem-0.0.7E7F1-gold-dragon/src/monst.c --- slashem-0.0.7E7F1-official-release/src/monst.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-gold-dragon/src/monst.c 2005-11-01 23:26:26.000000000 +0100 @@ -2213,6 +2213,13 @@ NEARDATA struct permonst mons[] = { SIZ(500, 500, 0, MS_ROAR, MZ_HUGE), MR_POISON|MR_HITASONE, 0, M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_CARNIVORE|M1_POIS, M2_HOSTILE|M2_STRONG|M2_GREEDY|M2_JEWELS, 0, CLR_GREEN), + MON("baby gold dragon", S_DRAGON, + LVL(12, 9, 2, 10, 0), G_GENO, + A(ATTK(AT_BITE, AD_PHYS, 2, 6), + NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), + SIZ(1500, 500, 0, MS_ROAR, MZ_HUGE), MR_FIRE, 0, + M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_CARNIVORE, + M2_HOSTILE|M2_STRONG|M2_GREEDY|M2_JEWELS, M3_INFRAVISIBLE, HI_GOLD), MON("baby yellow dragon", S_DRAGON, LVL(4, 9, 2, 10, 0), (G_GENO|2), A(ATTK(AT_BITE, AD_PHYS, 2, 6), @@ -2316,6 +2323,16 @@ NEARDATA struct permonst mons[] = { M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_SEE_INVIS|M1_OVIPAROUS| M1_CARNIVORE|M1_POIS, M2_HOSTILE|M2_STRONG|M2_NASTY|M2_GREEDY|M2_JEWELS|M2_MAGIC, 0, CLR_GREEN), + MON("gold dragon", S_DRAGON, + LVL(15, 9, -1, 20, -4), (G_GENO|1), + A(ATTK(AT_BREA, AD_FIRE, 6, 6), ATTK(AT_BITE, AD_PHYS, 3, 8), + ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4), + NO_ATTK, NO_ATTK), + SIZ(WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC), MR_FIRE, MR_FIRE, + M1_FLY|M1_THICK_HIDE|M1_NOHANDS|M1_SEE_INVIS|M1_OVIPAROUS| + M1_CARNIVORE, + M2_HOSTILE|M2_STRONG|M2_NASTY|M2_GREEDY|M2_JEWELS|M2_MAGIC, + M3_INFRAVISIBLE, HI_GOLD), MON("yellow dragon", S_DRAGON, LVL(18, 9, -4, 20, 7), (G_GENO|3), A(ATTK(AT_BREA, AD_ACID, 4, 6), ATTK(AT_BITE, AD_PHYS, 4, 8), diff -pruN slashem-0.0.7E7F1-official-release/src/objects.c slashem-0.0.7E7F1-gold-dragon/src/objects.c --- slashem-0.0.7E7F1-official-release/src/objects.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-gold-dragon/src/objects.c 2005-11-01 23:04:14.000000000 +0100 @@ -503,6 +503,7 @@ DRGN_ARMR("orange dragon scale mail", 1, DRGN_ARMR("black dragon scale mail", 1, DISINT_RES, 1200, 1, CLR_BLACK), DRGN_ARMR("blue dragon scale mail", 1, SHOCK_RES, 900, 1, CLR_BLUE), DRGN_ARMR("green dragon scale mail", 1, POISON_RES, 900, 1, CLR_GREEN), +DRGN_ARMR("gold dragon scale mail", 1, 0, 900, 1, HI_GOLD), DRGN_ARMR("yellow dragon scale mail", 1, ACID_RES, 900, 1, CLR_YELLOW), /* For now, only dragons leave these. */ @@ -518,6 +519,7 @@ DRGN_ARMR("orange dragon scales", 0, SLE DRGN_ARMR("black dragon scales", 0, DISINT_RES, 700, 7, CLR_BLACK), DRGN_ARMR("blue dragon scales", 0, SHOCK_RES, 500, 7, CLR_BLUE), DRGN_ARMR("green dragon scales", 0, POISON_RES, 500, 7, CLR_GREEN), +DRGN_ARMR("gold dragon scales", 0, 0, 500, 7, HI_GOLD), DRGN_ARMR("yellow dragon scales", 0, ACID_RES, 500, 7, CLR_YELLOW), #undef DRGN_ARMR diff -pruN slashem-0.0.7E7F1-official-release/src/polyself.c slashem-0.0.7E7F1-gold-dragon/src/polyself.c --- slashem-0.0.7E7F1-official-release/src/polyself.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-gold-dragon/src/polyself.c 2005-11-01 23:04:14.000000000 +0100 @@ -1583,6 +1583,9 @@ int atyp; case GREEN_DRAGON_SCALE_MAIL: case GREEN_DRAGON_SCALES: return PM_GREEN_DRAGON; + case GOLD_DRAGON_SCALE_MAIL: + case GOLD_DRAGON_SCALES: + return PM_GOLD_DRAGON; case YELLOW_DRAGON_SCALE_MAIL: case YELLOW_DRAGON_SCALES: return PM_YELLOW_DRAGON; diff -pruN slashem-0.0.7E7F1-official-release/src/timeout.c slashem-0.0.7E7F1-gold-dragon/src/timeout.c --- slashem-0.0.7E7F1-official-release/src/timeout.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-gold-dragon/src/timeout.c 2005-11-01 23:04:14.000000000 +0100 @@ -1557,6 +1557,8 @@ begin_burn(obj, already_lit) return; switch (obj->otyp) { + case GOLD_DRAGON_SCALE_MAIL: + case GOLD_DRAGON_SCALES: case MAGIC_LAMP: case MAGIC_CANDLE: obj->lamplit = 1; diff -pruN slashem-0.0.7E7F1-official-release/src/worn.c slashem-0.0.7E7F1-gold-dragon/src/worn.c --- slashem-0.0.7E7F1-official-release/src/worn.c 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-gold-dragon/src/worn.c 2005-11-01 23:04:14.000000000 +0100 @@ -236,6 +236,15 @@ boolean on, silently; int which = (int) objects[obj->otyp].oc_oprop; unseen = !canseemon(mon); + if(obj->otyp == GOLD_DRAGON_SCALE_MAIL || obj->otyp == GOLD_DRAGON_SCALES) { + if(on) + begin_burn(obj,FALSE); + else + end_burn(obj,FALSE); + if(!unseen && !silently) + if(on) pline("%s begins to glow.", The(xname(obj))); + } + if (!which) goto maybe_blocks; if (on) { diff -pruN slashem-0.0.7E7F1-official-release/win/share/monsters.txt slashem-0.0.7E7F1-gold-dragon/win/share/monsters.txt --- slashem-0.0.7E7F1-official-release/win/share/monsters.txt 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-gold-dragon/win/share/monsters.txt 2005-11-01 23:29:30.000000000 +0100 @@ -5125,6 +5125,25 @@ P = (108, 145, 182) MMMMMGFAAMMFFAAM MMMMMMMMMMMFAAMM } + # tile 638 (baby gold dragon) +{ + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMNNNAMMMMMMM + MMMMDHDHHAMMMMMM + MMMNHHHHHAMMMMMM + MMCHHHANHAMAAAMM + MCHCDAMNHAAAAAAM + MMDMMNHHAAAAAAAM + MMMMNNHHHHHAAAAM + MMMNOOHHHHHHAAAM + MMNHONHHHHHHHAAM + MMNHHNHHONHAHHAM + MMNHANHMANHAHHAM + MMMMMNHAAMMHHAAM + MMMMMMMMMMMHAAMM +} # tile 269 (baby yellow dragon) { MMMMMMMMMMMMMMMM @@ -5334,6 +5353,25 @@ P = (108, 145, 182) MMMMGFAAMMMFFJAM MMMMMMMMFFFFJAMM } +# tile 638 (gold dragon) +{ + MMMMMMNNNHAMMMMM + MMMMMDHDHHHAMMMM + MMMMNHHHHHHAMMMM + MMDCHHHMMHHAMMMM + CHCHCDMMNHHAMMMM + HDMDMMMNHHAMMMMM + MMMMMMONHAAAAAAM + MMMMNONHAAAAAAAA + MMNOONHAJHHJAAAM + MNOOONHHHHHHJAAM + MNOOONHHHHHHHAAM + HHOONNHHHHHHHHAM + NHMONHHOOHHJHJAM + NHAANHMAAHHAHHAM + MMMMNHAAJJJHHJAM + MMMMMMMMHHHHJAMM +} # tile 280 (yellow dragon) { MMMMMMNNNHAMMMMM diff -pruN slashem-0.0.7E7F1-official-release/win/share/objects.txt slashem-0.0.7E7F1-gold-dragon/win/share/objects.txt --- slashem-0.0.7E7F1-official-release/win/share/objects.txt 2005-07-02 09:24:44.000000000 +0200 +++ slashem-0.0.7E7F1-gold-dragon/win/share/objects.txt 2005-11-01 23:31:08.000000000 +0100 @@ -2541,6 +2541,25 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } +# tile 537 (gold dragon scale mail) +{ + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMNMNNNOOOMOMMM + MNMNNNNNOOOOOMOM + MNMNHHNHHHNHOAOA + MNMNHNHHHNHHOAOA + MMANNHHHNHHHOAMA + MMMNHHHNHHHNOAMM + MMMNHHNHHHNHOAMM + MMMMNNHHHNHOAAMM + MMMNMNHHNHOAOAMM + MMNNNANNHOAOOOAM + MNNNOAMNOAAOOOOA + MMNOAAMMMMMMOOAM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM +} # tile 133 (yellow dragon scale mail) { MMMMMMMMMMMMMMMM @@ -2750,6 +2769,25 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } +# tile 538 (gold dragon scales) +{ + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMHMMMMMMM + MMMMMMMHHHMMMMMM + MMMMHMHHHHAMMMMM + MMMHHHMHHAAHMMMM + MMHHHHAHAAHHAMMM + MMMHHAAHHAHAAMMM + MMMMAAHHAAAAMMMM + MMMMMMMAAHAMMMMM + MMMMMMMHHAAMMMMM + MMMMMMMMAAMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM +} # tile 144 (yellow dragon scales) { MMMMMMMMMMMMMMMM