/************************************************************************ Realms of Aurealis James Rhone aka Vall of RoA monk.c All skills/spells/functions that deal with the RoA original monk class (monshai) can be found here. design and concepts: Mouseglove and co. code: jtrhone aka Vall of RoA ******** 100% Completely Original Code ******** *** BE AWARE OF ALL RIGHTS AND RESERVATIONS *** ******** 100% Completely Original Code ******** All rights reserved henceforth. Please note that no guarantees are associated with any code from Realms of Aurealis. All code which has been released to the general public has been done so with an 'as is' pretense. RoA is based on both Diku and CircleMUD and ALL licenses from both *MUST* be adhered to as well as the RoA license. *** Read, Learn, Understand, Improve *** *************************************************************************/ /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Monshai: Monshai are an order dedicated to control of the body by a combination of spiritual cleansing and mental discipline. They may be based in a monestary or wander as their individual callings see fit. Monshai function best when in balance between the forces of good and evil, but when out of balance, tend to function better when the scales are tipped to good than to evil. Monshai are normally very quiet, peaceful men and women, who seek only to live in harmony with their surroundings. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */ /* monshai stuff left TO DO -8/96 roa Curtain 8 Rank I magic/breath resistance. Shield 17 Rank II magic/breath resistance. Inertial Balance 20 Allows them to "walk on water". Barrier 37 Rank III magic/breath resistance. Wall 59 Rank IV magic/breath resistance. Sanctum 60 Make current room their sanctum. Astral Walk 60 Move whole group to Sanctum instantly. Quivering Palm 65 Rank I attack ability. *only works in rooms flagged PEACEFUL. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Full descriptions. ================== (Note: I'm only going to worry about the new ones, or the ones that are changed from their current form. =) Curtain - Gives them a +1 to resist all magic/breath attacks. Shield - Gives them a +2 to resist magic/breath attacks. Inertial Balance: This allows them to "walk" into both swim and no_swim water rooms. Discern: This is a concentration based identify skill. It should have a %chance of failure equal to 100-lvl of character. Barrier - Gives them a +3 to resist magic/breath attacks. Wall - Gives them a +5 to resist magic/breath attacks. Sanctum: Allows them to pick any room (in a hometown or the pc house zone) as their private sanctum. This can be changed at any time, but they have to be in the room to set it. (Like the settle command). Astral Walk: Allows the monshai and anyone who is grouped with him/her to be mentally shifted through astral projection to the monshai's sanctum. Quivering Palm: This is an attack that, if successful, will kill any creature lower level then the monshai in one hit, or stun and damage it if unsuccessful/higher level than the monshai. Set it up something like this: The chance of success IF the pc is equal or higher level: (PCLvl - MobLvl) + 10 = % chance of success. If successful, mob is set to 0 hit points. If unsuccessful, mob takes: (PCLvl/5)d10+(PCLvl) damage and is stunned for 5 rounds. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Skill Lvl Cost: Duration: Effect: ===== === ===== ========= ======= Curtain 8 10 Lvl/2 hours Self only Shield 17 25 Lvl/2 hours Self only Inertial Balance 20 30 Lvl/3 hours Self only Barrier 37 40 Lvl/2 hours Self only Wall 58 65 Lvl/2 hours Self only Sanctum 61 50 Instant Current Room Astral Walk 61 150 Instant Self/Group Quivering Palm 65 200 Instant 1 mob/pc */ #include "conf.h" #include "sysdep.h" #include "structures.h" #include "utils.h" #include "comm.h" #include "interpreter.h" #include "acmd.h" #include "handler.h" #include "db.h" #include "roaolc.h" #include "magic.h" #include "affect.h" #include "fight.h" #include "lists.h" ACMD(do_aura) { chdata *vict = NULL; char align[100]; char *argu = argument; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_AURA)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (!*argu) { send_to_char("You must supply a target whose aura you wish to detect.\n\r", ch); return; } skip_spaces(&argu); if (!(vict = get_char_room_vis(ch, argu))) { send_to_char("Your target is nowhere to be found.\n\r",ch); return; } if (GET_MANA(ch) < 5) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 5; if (GET_SKILL(ch, SKILL_AURA) < number(1, 101)) { act("$N's aura confuses you.", FALSE, ch, 0, vict, TO_CHAR); return; } if (GET_ALIGNMENT(vict) >= 900) strcpy(align, "%BHoly%0"); else if (GET_ALIGNMENT(vict) > 400) strcpy(align, "%6Good%0"); else if (GET_ALIGNMENT(vict) > -400) strcpy(align, "Neutral"); else if (GET_ALIGNMENT(vict) > -900) strcpy(align, "%1Evil%0"); else if (GET_ALIGNMENT(vict) <= -900) strcpy(align, "%1Demonic%0"); act("$N is briefly covered by a %Bstrange aura%0!", TRUE,ch, 0, vict, TO_ROOM); act("$n looks into your heart!", TRUE, ch, 0, vict, TO_VICT); sprintf(buf, "$N's aura seems to be %s.", align); act(buf, FALSE, ch, 0, vict, TO_CHAR); } ACMD(do_snarl) { chdata *vict = NULL; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_SNARL)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (!(vict = FIGHTING(ch))) { send_to_char("Such a skill works better while fighting, Monshai.\n\r",ch); return; } if (!SAME_ROOM(ch, vict)) { send_to_char("Your target has fled!\n\r",ch); return; } if (!check_truce(ch, vict)) return; if (!check_mortal_combat(ch, vict)) return; if (GET_MANA(ch) < 35) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 35; act("You %Bsnarl%0 at $N!", FALSE, ch, 0, vict, TO_CHAR); act("$n %Bsnarls%0 at you!", FALSE, ch, 0, vict, TO_VICT); if (GET_SKILL(ch, SKILL_SNARL) < number(1, 101)) { act("$N %Bscreams%0 back at you in defiance!", FALSE, ch, 0, vict,TO_CHAR); act("You %Bscream%0 back at $m in defiance!", FALSE, ch, 0, vict,TO_VICT); act("$N laughs at $n's attempt to frighten $M!", FALSE, ch, 0, vict, TO_ROOM); return; } else if (!number(0, 1)) { act("Your %Bsnarl%0 %4chills%0 $N to the bone!", FALSE, ch, 0,vict,TO_CHAR); act("$n's %Bsnarl%0 %4chills%0 you to the bone!", FALSE, ch, 0, vict,TO_VICT); act("$N looks frightened as $n %Bsnarls%0!", FALSE, ch, 0, vict, TO_ROOM); do_flee(vict,"",0,0); } } ACMD(do_sense) { if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_SENSE)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (GET_MANA(ch) < 5) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 5; if (GET_SKILL(ch, SKILL_SENSE) < number(1, 101)) { act("This area confuses you.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (ROOM_FLAGGED(ch->in_room, PEACEFUL)) act("You sense %Bpeace%0 throughout this area.", TRUE, ch, 0, 0, TO_CHAR); else act("You sense %1violence%0 around this area.", TRUE, ch, 0, 0, TO_CHAR); } /* Cleansing: Confers an inability to be poisoned. It won't remove poison if they're already sick, but it will stop them from GETTING poisoned. Cleansing 9 20 Lvl/4 hours Self only */ ACMD(do_cleanse) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_CLEANSE)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (GET_MANA(ch) < 20) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 20; if (GET_SKILL(ch, SKILL_CLEANSE) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_CLEANSE)) { af.type = SKILL_CLEANSE; af.duration = GET_LEVEL(ch)/4; af.modifier = 0; af.location = APPLY_NONE; af.bitvector = 0; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on protecting yourself against impurities!", FALSE, ch, 0,0, TO_CHAR); act("$n protects $mself against impurities!", FALSE, ch, 0, 0,TO_ROOM); } else act("You are already protected from impurities!", FALSE, ch, 0, 0,TO_CHAR); } /* Hasten Self: A three-round, self only haste skill which simulates the effects of the spell of the same name. Hasten Self 40 55 level/20 Self only */ ACMD(do_hasten) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_HASTEN)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (GET_MANA(ch) < 55) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 55; if (GET_SKILL(ch, SKILL_HASTEN) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_HASTEN) && !affected_by_spell(ch, SPELL_HASTE)) { af.type = SKILL_HASTEN; af.duration = GET_LEVEL(ch)/20; af.modifier = 0; af.location = APPLY_NONE; af.bitvector = AFF_HASTE; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on quickening your reactions!", FALSE, ch, 0,0, TO_CHAR); act("$n hastens $mself!", FALSE, ch, 0, 0, TO_ROOM); } else act("You are already hastened!", FALSE, ch, 0, 0, TO_CHAR); } /* Rank III skills: turtle shell - Lowers the monshai's ac by 3d4+(lvl/5). Turtle Shell 50 65 Lvl/2 hours Self only */ ACMD(do_turtle) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_TURTLE)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (GET_MANA(ch) < 65) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 65; if (GET_SKILL(ch, SKILL_TURTLE) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_TURTLE)) { af.type = SKILL_TURTLE; af.duration = GET_LEVEL(ch)/2; af.modifier = -dice(3, 4)-(GET_LEVEL(ch)/5); af.location = APPLY_AC; af.bitvector = 0; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on defending yourself!", FALSE, ch, 0, 0, TO_CHAR); act("$n seems more nimble!", FALSE, ch, 0, 0, TO_ROOM); } else act("You are already using that defense technique!", FALSE, ch, 0, 0, TO_CHAR); } /* Rank III skills: Fox Flip - Lowers the monshai's ac by 2d4+(lvl/6). Fox Flip 28 40 Lvl/2 hours Self only */ ACMD(do_flip) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_FLIP)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (GET_MANA(ch) < 40) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 40; if (GET_SKILL(ch, SKILL_FLIP) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_FLIP)) { af.type = SKILL_FLIP; af.duration = GET_LEVEL(ch)/2; af.modifier = -dice(2, 4)-(GET_LEVEL(ch)/6); af.location = APPLY_AC; af.bitvector = 0; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on defending yourself!", FALSE, ch, 0, 0, TO_CHAR); act("$n seems more nimble!", FALSE, ch, 0, 0, TO_ROOM); } else act("You are already using that defense technique!", FALSE, ch, 0, 0, TO_CHAR); } /* Rank II skills: Cheetah Leap - Lowers the monshai's ac by 1d6+(lvl/8). Cheetah Leap 10 25 Lvl/2 hours Self only */ ACMD(do_leap) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_LEAP)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (GET_MANA(ch) < 25) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 25; if (GET_SKILL(ch, SKILL_LEAP) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_LEAP)) { af.type = SKILL_LEAP; af.duration = GET_LEVEL(ch)/2; af.modifier = -dice(1, 6)-(GET_LEVEL(ch)/8); af.location = APPLY_AC; af.bitvector = 0; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on defending yourself!", FALSE, ch, 0, 0, TO_CHAR); act("$n seems more nimble!", FALSE, ch, 0, 0, TO_ROOM); } else act("You are already using that defense technique!", FALSE, ch, 0, 0, TO_CHAR); } /* Rank I skills: Rabbit Roll - This is a low powered armor-type skill that allows the monshai to lower his ac by 1d4+(lvl/10). Rabbit Roll 2 10 Lvl/2 hours Self only */ ACMD(do_roll) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_ROLL)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (GET_MANA(ch) < 10) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 10; if (GET_SKILL(ch, SKILL_ROLL) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_ROLL)) { af.type = SKILL_ROLL; af.duration = GET_LEVEL(ch)/2; af.modifier = -dice(1, 4)-(GET_LEVEL(ch)/10); af.location = APPLY_AC; af.bitvector = 0; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on defending yourself!", FALSE, ch, 0, 0, TO_CHAR); act("$n seems more nimble!", FALSE, ch, 0, 0, TO_ROOM); } else act("You are already using that defense technique!", FALSE, ch, 0, 0, TO_CHAR); } /* Rank IV skills: Lightning Fist - Adds 5 points to damroll while in effect. Lightning Fist 52 65 Lvl/2 rounds Self only */ ACMD(do_fist) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_FIST)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (GET_MANA(ch) < 65) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 65; if (GET_SKILL(ch, SKILL_FIST) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_FIST)) { af.type = SKILL_FIST; af.duration = GET_LEVEL(ch)/2; af.modifier = 5; af.location = APPLY_DAMROLL; af.bitvector = 0; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on hitting harder!", FALSE, ch, 0, 0, TO_CHAR); act("$n suddenly looks more dangerous!", FALSE, ch, 0, 0, TO_ROOM); } else act("You're already concentrating on fist of lightning!", FALSE, ch,0, 0,TO_CHAR); } // Iron Hand - This adds 3 points to the damroll while in effect. // Iron Hand 31 40 Lvl/2 rounds Self only ACMD(do_ironhand) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_IRONHAND)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (GET_MANA(ch) < 40) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 40; if (GET_SKILL(ch, SKILL_IRONHAND) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_IRONHAND)) { af.type = SKILL_IRONHAND; af.duration = GET_LEVEL(ch)/2; af.modifier = 3; af.location = APPLY_DAMROLL; af.bitvector = 0; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on hitting harder!", FALSE, ch, 0, 0, TO_CHAR); act("$n suddenly looks more dangerous!", FALSE, ch, 0, 0, TO_ROOM); } else act("You're already concentrating on iron hands!", FALSE, ch,0,0,TO_CHAR); } /* Stone Finger - This adds 2 points to the damroll while in effect. Stone Finger 12 25 Lvl/2 rounds Self only */ ACMD(do_stone) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_STONE_FINGER)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (GET_MANA(ch) < 25) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 25; if (GET_SKILL(ch, SKILL_STONE_FINGER) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_STONE_FINGER)) { af.type = SKILL_STONE_FINGER; af.duration = GET_LEVEL(ch)/2; af.modifier = 2; af.location = APPLY_DAMROLL; af.bitvector = 0; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on hitting harder!", FALSE, ch, 0, 0, TO_CHAR); act("$n suddenly looks more dangerous!", FALSE, ch, 0, 0, TO_ROOM); } else act("You're already concentrating on stone finger!", FALSE, ch, 0, 0,TO_CHAR); } /* Razor Nail - This adds 1 point to the damroll while in effect. Razor Nail 3 10 Lvl/2 rounds Self only */ ACMD(do_razor) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_RAZOR)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (GET_MANA(ch) < 10) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 10; if (GET_SKILL(ch, SKILL_RAZOR) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_RAZOR)) { af.type = SKILL_RAZOR; af.duration = GET_LEVEL(ch)/2; af.modifier = 1; af.location = APPLY_DAMROLL; af.bitvector = 0; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on hitting sharply!", FALSE, ch, 0, 0, TO_CHAR); act("$n suddenly looks more dangerous!", FALSE, ch, 0, 0, TO_ROOM); } else act("You're already hitting sharply!", FALSE, ch, 0, 0, TO_CHAR); } /* Levitation: This is equivilent to the pixie's ability to float. It's not flight, but it will allow them to move into flight only areas. Levitation 19 30 Lvl/3 hours Self only */ ACMD(do_levitate) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_LEVITATE)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (GET_MANA(ch) < 30) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 30; if (GET_SKILL(ch, SKILL_LEVITATE) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!IS_AFFECTED(ch, AFF_WINGS)) { af.type = SKILL_LEVITATE; af.duration = GET_LEVEL(ch)/3; af.modifier = 0; af.location = APPLY_NONE; af.bitvector = AFF_WINGS; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on floating!", FALSE, ch, 0, 0, TO_CHAR); act("$n suddenly levitates!", FALSE, ch, 0, 0, TO_ROOM); } else act("You're already affected by wings!", FALSE, ch, 0, 0, TO_CHAR); } /* Trance - In a peaceful room, doubles regen. Trance * 56 65 Lvl/2 rounds Self only */ ACMD(do_trance) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_TRANCE)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (!ROOM_FLAGGED(ch->in_room, PEACEFUL)) { send_to_char("There is too much violence surrounding you for meditation.\n\r",ch); return; } if (GET_MANA(ch) < 65) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 65; if (GET_SKILL(ch, SKILL_TRANCE) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_TRANCE)) { af.type = SKILL_TRANCE; af.duration = GET_LEVEL(ch)/2; af.modifier = 0; af.location = APPLY_NONE; af.bitvector = 0; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on regeneration!", FALSE, ch, 0, 0, TO_CHAR); act("$n slips into a %4deep%0 state of meditation.", FALSE, ch, 0,0, TO_ROOM); } else act("You're already in that state of meditation!", FALSE, ch, 0, 0, TO_CHAR); } /* Wa * 34 40 Lvl/2 rounds Self only Wa - In a peaceful room, ups regen by 175%. */ ACMD(do_wa) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_WA)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (!ROOM_FLAGGED(ch->in_room, PEACEFUL)) { send_to_char("There is too much violence surrounding you for meditation.\n\r",ch); return; } if (GET_MANA(ch) < 40) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 40; if (GET_SKILL(ch, SKILL_WA) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_WA)) { af.type = SKILL_WA; af.duration = GET_LEVEL(ch)/2; af.modifier = 0; af.location = APPLY_NONE; af.bitvector = 0; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on regeneration!", FALSE, ch, 0, 0, TO_CHAR); act("$n slips into a state of meditation.", FALSE, ch, 0, 0, TO_ROOM); } else act("You're already in that state of meditation!", FALSE, ch, 0, 0, TO_CHAR); } /* 150% regen if aff by Mok and in peaceful room Mok * 15 25 Lvl/2 rounds Self only */ ACMD(do_mok) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_MOK)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (!ROOM_FLAGGED(ch->in_room, PEACEFUL)) { send_to_char("There is too much violence surrounding you for meditation.\n\r",ch); return; } if (GET_MANA(ch) < 25) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 25; if (GET_SKILL(ch, SKILL_MOK) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_MOK)) { af.type = SKILL_MOK; af.duration = GET_LEVEL(ch)/2; af.modifier = 0; af.location = APPLY_NONE; af.bitvector = 0; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on regeneration!", FALSE, ch, 0, 0, TO_CHAR); act("$n slips into a state of meditation.", FALSE, ch, 0, 0, TO_ROOM); } else act("You're already in that state of meditation!", FALSE, ch, 0, 0, TO_CHAR); } /* 125% regen if aff by Mok and in peaceful room Om * 15 25 Lvl/2 rounds Self only */ ACMD(do_om) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_OM)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (!ROOM_FLAGGED(ch->in_room, PEACEFUL)) { send_to_char("There is too much violence surrounding you for meditation.\n\r",ch); return; } if (GET_MANA(ch) < 15) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 15; if (GET_SKILL(ch, SKILL_OM) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_OM)) { af.type = SKILL_OM; af.duration = GET_LEVEL(ch)/2; af.modifier = 0; af.location = APPLY_NONE; af.bitvector = 0; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on regeneration!", FALSE, ch, 0, 0, TO_CHAR); act("$n slips into a state of meditation.", FALSE, ch, 0, 0, TO_ROOM); } else act("You're already in that state of meditation!", FALSE, ch, 0, 0, TO_CHAR); } /* Iron Skin 46 60 Lvl/2 rounds Self only Iron Skin 46 Lowered versin of Stone Skin. equiv to armor now 8/5/98 -jtrhone */ ACMD(do_iron) { struct affected_type af; if (IN_NOWHERE(ch)) return; if (!IS_MONK(ch)) { send_to_char("Only those members of the Monshai class know of such a skill.\n\r",ch); return; } if (!GET_SKILL(ch, SKILL_IRON)) { send_to_char("You know not of that skill yet, Monshai.\n\r",ch); return; } if (GET_MANA(ch) < 60) { send_to_char("You feel too weak to do such, Monshai.\n\r",ch); return; } GET_MANA(ch) -= 60; if (GET_SKILL(ch, SKILL_IRON) < number(1, 101)) { act("You lose your concentration.", FALSE, ch, 0, 0, TO_CHAR); return; } act("$n lowers $s head in concentration.", TRUE, ch, 0, 0, TO_ROOM); if (!affected_by_spell(ch, SKILL_IRON)) { af.type = SKILL_IRON; af.duration = 24; af.modifier = -GET_LEVEL(ch); af.location = APPLY_AC; af.bitvector = 0; af.bitvector2 = 0; affect_to_char(ch, &af); act("You concentrate on hardening your skin!", FALSE, ch, 0, 0, TO_CHAR); act("$n suddenly looks more defensive.", FALSE, ch, 0, 0, TO_ROOM); } else act("You're already affected by iron skin!", FALSE, ch, 0, 0,TO_CHAR); }