MCPcopy Create free account
hub / github.com/NetHack/NetHack / god_zaps_you

Function god_zaps_you

src/pray.c:609–691  ·  view source on GitHub ↗

"I am sometimes shocked by... the nuns who never take a bath without * wearing a bathrobe all the time. When asked why, since no man can see them, * they reply 'Oh, but you forget the good God'. Apparently they conceive of * the Deity as a Peeping Tom, whose omnipotence enables Him to see through * bathroom walls, but who is foiled by bathrobes." --Bertrand Russell, 1943 * Divine wrath, dun

Source from the content-addressed store, hash-verified

607 * Divine wrath, dungeon walls, and armor follow the same principle.
608 */
609staticfn void
610god_zaps_you(aligntyp resp_god)
611{
612 if (u.uswallow) {
613 pline(
614 "Suddenly a bolt of lightning comes down at you from the heavens!");
615 pline("It strikes %s!", mon_nam(u.ustuck));
616 if (!resists_elec(u.ustuck)) {
617 pline("%s fries to a crisp!", Monnam(u.ustuck));
618 /* Yup, you get experience. It takes guts to successfully
619 * pull off this trick on your god, anyway.
620 * Other credit/blame applies (luck or alignment adjustments),
621 * but not direct kill count (pacifist conduct).
622 */
623 xkilled(u.ustuck, XKILL_NOMSG | XKILL_NOCONDUCT);
624 } else
625 pline("%s seems unaffected.", Monnam(u.ustuck));
626 } else {
627 pline("Suddenly, a bolt of lightning strikes you!");
628 if (Reflecting) {
629 shieldeff(u.ux, u.uy);
630 if (Blind)
631 pline("For some reason you're unaffected.");
632 else
633 (void) ureflects("%s reflects from your %s.", "It");
634 monstseesu(M_SEEN_REFL);
635 } else if (Shock_resistance) {
636 shieldeff(u.ux, u.uy);
637 pline("It seems not to affect you.");
638 monstseesu(M_SEEN_ELEC);
639 monstunseesu(M_SEEN_REFL);
640 } else {
641 fry_by_god(resp_god, FALSE);
642 monstunseesu(M_SEEN_REFL | M_SEEN_ELEC);
643 }
644 }
645
646 pline("%s is not deterred...", align_gname(resp_god));
647 if (u.uswallow) {
648 pline("A wide-angle disintegration beam aimed at you hits %s!",
649 mon_nam(u.ustuck));
650 if (!resists_disint(u.ustuck)) {
651 pline("%s disintegrates into a pile of dust!", Monnam(u.ustuck));
652 xkilled(u.ustuck, XKILL_NOMSG | XKILL_NOCORPSE | XKILL_NOCONDUCT);
653 } else
654 pline("%s seems unaffected.", Monnam(u.ustuck));
655 } else {
656 pline("A wide-angle disintegration beam hits you!");
657
658 /* disintegrate shield and body armor before disintegrating
659 * the impudent mortal, like black dragon breath -3.
660 */
661 if (uarms && !(EReflecting & W_ARMS)
662 && !(EDisint_resistance & W_ARMS))
663 (void) disintegrate_arm(uarms);
664 if (uarmc && !(EReflecting & W_ARMC)
665 && !(EDisint_resistance & W_ARMC))
666 (void) disintegrate_arm(uarmc);

Callers 2

angrygodsFunction · 0.85
desecrate_altarFunction · 0.85

Calls 15

mon_namFunction · 0.85
MonnamFunction · 0.85
xkilledFunction · 0.85
shieldeffFunction · 0.85
ureflectsFunction · 0.85
monstseesuFunction · 0.85
monstunseesuFunction · 0.85
fry_by_godFunction · 0.85
align_gnameFunction · 0.85
disintegrate_armFunction · 0.85
YouFunction · 0.85
godvoiceFunction · 0.85

Tested by

no test coverage detected