Lines Matching refs:ptr

43 is_home_elemental(ptr)
44 register struct permonst *ptr;
46 if (ptr->mlet == S_ELEMENTAL)
47 switch (monsndx(ptr)) {
60 wrong_elem_type(ptr)
61 register struct permonst *ptr;
63 if (ptr->mlet == S_ELEMENTAL) {
64 return((boolean)(!is_home_elemental(ptr)));
69 if(!is_swimmer(ptr)) return TRUE;
71 if (!pm_resistance(ptr,MR_FIRE)) return TRUE;
73 if(!(is_flyer(ptr) && ptr->mlet != S_TRAPPER) && !is_floater(ptr)
74 && !amorphous(ptr) && !noncorporeal(ptr) && !is_whirly(ptr))
167 register struct permonst *ptr = mtmp->data;
168 register int mm = monsndx(ptr);
184 switch (ptr->mlet) {
190 if(is_mercenary(ptr)) {
219 } else if (is_elf(ptr)) {
249 } else if (ptr->msound == MS_PRIEST ||
250 quest_mon_represents_role(ptr,PM_PRIEST)) {
268 if (!rn2(20) || is_lord(ptr))
277 otmp = mksobj(!rn2(4) || is_lord(ptr) ?
302 } else if (is_dwarf(ptr)) {
375 if(ptr == &mons[PM_FOREST_CENTAUR]) {
420 if (!is_demon(ptr)) break;
431 bias = is_lord(ptr) + is_prince(ptr) * 2 + extra_nasty(ptr);
434 if(strongmonst(ptr)) (void) mongets(mtmp, BATTLE_AXE);
438 if(strongmonst(ptr))
450 if(strongmonst(ptr)) (void) mongets(mtmp, LONG_SWORD);
454 if(strongmonst(ptr))
493 register struct permonst *ptr = mtmp->data;
501 switch(ptr->mlet) {
504 if(is_mercenary(ptr)) {
507 switch(monsndx(ptr)) {
515 default: impossible("odd mercenary %d?", monsndx(ptr));
549 if(ptr != &mons[PM_GUARD] &&
550 ptr != &mons[PM_WATCHMAN] &&
551 ptr != &mons[PM_WATCH_CAPTAIN]) {
554 if (ptr != &mons[PM_SOLDIER] && !rn2(3))
557 if (ptr == &mons[PM_WATCHMAN] && rn2(3))
559 } else if (ptr == &mons[PM_SHOPKEEPER]) {
568 } else if (ptr->msound == MS_PRIEST ||
569 quest_mon_represents_role(ptr,PM_PRIEST)) {
579 } else if (quest_mon_represents_role(ptr,PM_MONK)) {
589 if (ptr == &mons[PM_MINOTAUR]) {
592 } else if (is_giant(ptr)) {
603 if (ptr == &mons[PM_NAZGUL]) {
610 if (ptr == &mons[PM_MASTER_LICH] && !rn2(13))
612 else if (ptr == &mons[PM_ARCH_LICH] && !rn2(3)) {
641 if (ptr == &mons[PM_ICE_DEVIL] && !rn2(4)) {
643 } else if (ptr == &mons[PM_ASMODEUS]) {
653 if (ptr == &mons[PM_SOLDIER] && rn2(13)) return;
660 if (likes_gold(ptr) && !mtmp->mgold && !rn2(5))
664 if (likes_gold(ptr) && !findgold(mtmp->minvent) && !rn2(5))
824 makemon(ptr, x, y, mmflags)
825 register struct permonst *ptr;
831 boolean anymon = (!ptr);
842 fakemon.data = ptr; /* set up for goodpos */
846 } while(!goodpos(x, y, ptr ? &fakemon : (struct monst *)0, gpflags) ||
851 if(enexto_core(&bypos, u.ux, u.uy, ptr, gpflags)) {
862 if(enexto_core(&bypos, x, y, ptr, gpflags)) {
871 if(ptr){
872 mndx = monsndx(ptr);
890 if(!(ptr = rndmonst())) {
896 fakemon.data = ptr; /* set up for goodpos */
898 mndx = monsndx(ptr);
901 xlth = ptr->pxlth;
911 set_mon_data(mtmp, ptr, 0);
917 mtmp->m_lev = adj_lev(ptr);
918 if (is_golem(ptr)) {
920 } else if (is_rider(ptr)) {
923 } else if (ptr->mlevel > 49) {
928 mtmp->mhpmax = mtmp->mhp = 2*(ptr->mlevel - 6);
930 } else if (ptr->mlet == S_DRAGON && mndx >= PM_GRAY_DRAGON) {
938 if (is_home_elemental(ptr))
942 if (is_female(ptr)) mtmp->female = TRUE;
943 else if (is_male(ptr)) mtmp->female = FALSE;
946 if (In_sokoban(&u.uz) && !mindless(ptr)) /* know about traps here */
948 if (ptr->msound == MS_LEADER) /* leader knows about portal */
953 mtmp->mpeaceful = (mmflags & MM_ANGRY) ? FALSE : peace_minded(ptr);
955 switch(ptr->mlet) {
964 if(hides_under(ptr) && OBJ_AT(x, y))
989 if (is_unicorn(ptr) &&
990 sgn(u.ualign.type) == sgn(ptr->maligntyp))
994 if (Inhell && is_bat(ptr))
1028 } else if (ptr->msound == MS_NEMESIS) {
1036 if(((is_ndemon(ptr)) ||
1047 if(is_dprince(ptr) && ptr->msound == MS_BRIBE) {
1069 if ((ptr->geno & G_SGROUP) && rn2(2)) {
1071 } else if (ptr->geno & G_LGROUP) {
1078 if(is_armed(ptr))
1087 if ((ptr->mflags3 & M3_WAITMASK) && !(mmflags & MM_NOWAIT)) {
1088 if (ptr->mflags3 & M3_WAITFORU)
1090 if (ptr->mflags3 & M3_CLOSE)
1166 align_shift(ptr)
1167 register struct permonst *ptr;
1181 case AM_LAWFUL: alshift = (ptr->maligntyp+20)/(2*ALIGNWEIGHT);
1183 case AM_NEUTRAL: alshift = (20 - abs(ptr->maligntyp))/ALIGNWEIGHT;
1185 case AM_CHAOTIC: alshift = (-(ptr->maligntyp-20))/(2*ALIGNWEIGHT);
1200 register struct permonst *ptr;
1203 if (u.uz.dnum == quest_dnum && rn2(7) && (ptr = qt_montype()) != 0)
1204 return ptr;
1241 ptr = &mons[mndx];
1246 if (upper && !isupper(def_monsyms[(int)(ptr->mlet)])) continue;
1248 if (elemlevel && wrong_elem_type(ptr)) continue;
1250 if (Inhell && (ptr->geno & G_NOHELL)) continue;
1251 ct = (int)(ptr->geno & G_FREQ) + align_shift(ptr);
1362 adj_lev(ptr) /* adjust strength of monsters based on u.uz and u.ulevel */
1363 register struct permonst *ptr;
1367 if (ptr == &mons[PM_WIZARD_OF_YENDOR]) {
1371 tmp = ptr->mlevel + mvitals[PM_WIZARD_OF_YENDOR].died;
1376 if((tmp = ptr->mlevel) > 49) return(50); /* "special" demons/devils */
1381 tmp2 = (u.ulevel - ptr->mlevel); /* adjust vs. the player */
1384 tmp2 = (3 * ((int) ptr->mlevel))/ 2; /* crude upper limit */
1398 struct permonst *ptr = mtmp->data;
1407 oldtype = monsndx(ptr);
1422 else if (is_golem(ptr)) /* strange creatures */
1424 else if (is_home_elemental(ptr))
1426 lev_limit = 3 * (int)ptr->mlevel / 2; /* same as adj_lev() */
1448 return ptr; /* doesn't gain a level */
1450 if (is_mplayer(ptr)) lev_limit = 30; /* same as player */
1452 else if (lev_limit > 49) lev_limit = (ptr->mlevel > 49 ? 50 : 49);
1455 ptr = &mons[newtype];
1459 an(ptr->mname), mhe(mtmp),
1460 nonliving(ptr) ? "expires" : "dies");
1461 set_mon_data(mtmp, ptr, -1); /* keep mvitals[] accurate */
1465 set_mon_data(mtmp, ptr, 1); /* preserve intrinsics */
1478 return ptr;
1564 peace_minded(ptr)
1565 register struct permonst *ptr;
1567 aligntyp mal = ptr->maligntyp, ual = u.ualign.type;
1569 if (always_peaceful(ptr)) return TRUE;
1570 if (always_hostile(ptr)) return FALSE;
1571 if (ptr->msound == MS_LEADER || ptr->msound == MS_GUARDIAN)
1573 if (ptr->msound == MS_NEMESIS) return FALSE;
1575 if (race_peaceful(ptr)) return TRUE;
1576 if (race_hostile(ptr)) return FALSE;
1586 if (is_minion(ptr)) return((boolean)(u.ualign.record >= 0));