1
0
Fork 0
mirror of https://codeberg.org/noisytoot/notnotdnethack.git synced 2025-07-30 01:12:25 +01:00

Merge branch 'compat-3.21.1' of https://github.com/Chris-plus-alphanumericgibberish/dNAO.git into compat-3.21.1

This commit is contained in:
ChrisANG 2021-09-25 01:21:26 -04:00
commit 7a600a804e
7 changed files with 39 additions and 50 deletions

View file

@ -6114,11 +6114,10 @@ struct obj *obj;
You("chip off the existing rune.");
multi-=1;
if(carvee->oartifact) pline("The wood heals like the rune was never there.");
else carvee->spe -= 1;
if(carvee->spe < -1*rn2(8)){
You("destroyed the %s in the process.", xname(carvee));
useup(carvee);
return 0;
else if(--carvee->spe < -1*rn2(8)) {
You("destroyed the %s in the process.", xname(carvee));
useup(carvee);
return 0;
}
}
multi -= carveTurns[rune-FIRST_RUNE];

View file

@ -7053,13 +7053,12 @@ arti_invoke(obj)
}
break;
case DEATH_TCH:
if ((!uwep && uwep == obj)){
if (!(uwep && uwep == obj)){
You_feel("that you should be wielding %s.", the(xname(obj)));;
obj->age = monstermoves;
return(0);
}
getdir((char *)0);
if (!isok(u.ux + u.dx, u.uy + u.dy)) break;
if ((mtmp = m_at(u.ux + u.dx, u.uy + u.dy))) {
/* message */
@ -7152,8 +7151,7 @@ arti_invoke(obj)
}
struct monst *mtmp = makemon(pm, u.ux, u.uy, MM_EDOG|MM_ADJACENTOK);
mtmp = tamedog(mtmp, (struct obj *) 0);
initedog(mtmp);
if (mtmp->mtyp != PM_SKELETON)
set_template(mtmp, SKELIFIED);
@ -8555,10 +8553,6 @@ arti_invoke(obj)
/* revert */
rehumanize();
}
else if (Unchanging) {
You_feel("the mask's magic be blocked by something.");
return partial_action();
}
else {
/* steal a face */
if(getdir((char *)0)) {
@ -8575,13 +8569,14 @@ arti_invoke(obj)
xkilled(mtmp, 3);
obj->corpsenm = mtmp->mtyp;
/* keep consistent with on-wear code in do_wear.c */
if (obj == ublindf) {
if (obj == ublindf && !Unchanging) {
activate_mirrored_mask(obj);
}
}
else {
/* resisted */
pline("%s resists!", Monnam(mtmp));
obj->age = monstermoves; // but does use your turn
}
}
}
@ -11043,7 +11038,7 @@ activate_mirrored_mask(obj)
struct obj * obj;
{
polymon(obj->corpsenm);
u.mtimedone = (u.ulevel * 30) / max(1, 10 + mons[obj->corpsenm].mlevel - u.ulevel);
u.mtimedone = 5 + (u.ulevel * 30) / max(1, 10 + mons[obj->corpsenm].mlevel - u.ulevel);
if (!polyok(&mons[obj->corpsenm])) u.mtimedone /= 3;
uskin = obj;
ublindf = (struct obj *)0;

View file

@ -1315,7 +1315,7 @@ register const char *let,*word;
(otyp != HELLFIRE_COMPONENT))
|| (!strcmp(word, "build a scrap maw with") &&
(otyp != SCRAP))
|| (!strcmp(word, "create a skeletal minion of") &&
|| (!strcmp(word, "make a skeletal minion of") &&
!(otyp == CORPSE))
|| (!strcmp(word, "feed blood to") &&
!(otyp == CORPSE && otmp->odrained && (peek_at_iced_corpse_age(otmp) + 20) >= monstermoves))

View file

@ -112,36 +112,27 @@ struct permonst * ptr; /* summon as though you were <X> */
EMIN(mtmp)->min_align = atyp;
EPRI(mtmp)->shralign = atyp;
if(mon->isminion) mtmp->isminion = TRUE;
mtmp->mpeaceful = mon->mpeaceful;
mtmp->mpeaceful = mon && mon->mpeaceful;
}
if (is_angel(mtmp->data)){
if(mon->mtyp == PM_LAMASHTU || mon->mfaction == LAMASHTU_FACTION)
mtmp->mfaction = LAMASHTU_FACTION;
if(has_template(mon, MAD_TEMPLATE))
set_template(mtmp, MAD_TEMPLATE);
if(has_template(mon, FALLEN_TEMPLATE))
set_template(mtmp, FALLEN_TEMPLATE);
/* some templates are passed from summoner to summon */
if (mon && (
get_template(mon) == FRACTURED ||
get_template(mon) == VAMPIRIC ||
get_template(mon) == PSEUDONATURAL ||
get_template(mon) == CRANIUM_RAT ||
get_template(mon) == MISTWEAVER ||
get_template(mon) == YELLOW_TEMPLATE ||
get_template(mon) == DREAM_LEECH ||
(get_template(mon) == MAD_TEMPLATE && is_angel(mtmp->data)) ||
(get_template(mon) == FALLEN_TEMPLATE && is_angel(mtmp->data))
) && mtemplate_accepts_mtyp(get_template(mon), mtmp->mtyp)
) {
set_template(mtmp, get_template(mon));
}
if(has_template(mon, FRACTURED)){
set_template(mtmp, FRACTURED);
}
if(has_template(mon, VAMPIRIC)){
set_template(mtmp, VAMPIRIC);
}
if(has_template(mon, PSEUDONATURAL)){
set_template(mtmp, PSEUDONATURAL);
}
if(has_template(mon, CRANIUM_RAT)){
set_template(mtmp, CRANIUM_RAT);
}
if(has_template(mon, MISTWEAVER)){
set_template(mtmp, MISTWEAVER);
}
if(has_template(mon, YELLOW_TEMPLATE)){
set_template(mtmp, YELLOW_TEMPLATE);
}
if(has_template(mon, DREAM_LEECH)){
set_template(mtmp, DREAM_LEECH);
/* as are some factions */
if (mon && (mon->mtyp == PM_LAMASHTU || mon->mfaction == LAMASHTU_FACTION)) {
mtmp->mfaction = LAMASHTU_FACTION;
}
}
cnt--;

View file

@ -1556,6 +1556,7 @@ int effect_num;
int tmp;
char buf[BUFSZ];
struct obj * optr;
const char * s;
boolean greater = /* lilith/belial seduce */
(mon->mtyp == PM_MOTHER_LILITH || mon->mtyp == PM_BELIAL);
@ -1602,7 +1603,8 @@ int effect_num;
flags.botl = 1;
break;
case SEDU_DULLSENSES:
Your("%s are dulled.", greatest ? "mind" : "senses");
s = greatest ? "mind" : "senses";
Your("%s %s dulled.", s, vtense(s, "are"));
if (greatest) {
if (u.sealsActive&SEAL_HUGINN_MUNINN){
unbind(SEAL_HUGINN_MUNINN, TRUE);

View file

@ -410,7 +410,8 @@ int tary;
/* Special demon/minion handling code */
/* mvu only; we don't want it mvm and player's is handled as an ability */
if (youdef && !magr->cham && gates_in_help(pa) && !template_blocks_gate(magr) && !ranged && (magr->summonpwr < magr->data->mlevel)) {
if (youdef && !magr->cham && gates_in_help(pa) && !template_blocks_gate(magr)
&& !ranged && !wildmiss && (magr->summonpwr < magr->data->mlevel)) {
if (!magr->mcan && !rn2(13)) {
msummon(magr, (struct permonst *)0);
}
@ -2905,6 +2906,7 @@ int dmg; /* damage to deal */
}
if (*hp(mdef) < 1) {
int nocorpse = (attk && (attk->adtyp == AD_DGST || attk->adtyp == AD_DISN)) ? 0x2 : 0;
/* killed a pet by accident */
if (mdef->mtame && !cansee(mdef->mx, mdef->my)) {
You_feel("embarrassed for a moment.");
@ -2915,11 +2917,11 @@ int dmg; /* damage to deal */
/* non-verbose */
if (!flags.verbose) {
You("destroy it!");
if (dmg) xkilled(mdef, 0);
if (dmg) xkilled(mdef, 0|nocorpse);
}
/* verbose */
else {
if (dmg) killed(mdef);
if (dmg) xkilled(mdef, 1|nocorpse);
}
}
if (*hp(mdef) > 0)

View file

@ -1712,13 +1712,13 @@ int vis;
if (magr) {
pline("%s attack passes harmlessly through %s.",
(youagr ? "Your" : s_suffix(Monnam(magr))),
the(mon_nam(mdef)));
mon_nam(mdef));
}
else {
pline("%s %s harmlessly through %s.",
The(cxname(weapon)),
vtense(cxname(weapon), "pass"),
the(mon_nam(mdef)));
mon_nam(mdef));
}
}
}