Prototype area/progs - Looking for Feedback!

For builders to discuss and ask building questions.
Post Reply
Xryon
Sword Master
Sword Master
Posts: 233
Joined: Thu Aug 25, 2005 5:24 am
Location: Waterdeep

Prototype area/progs - Looking for Feedback!

Post by Xryon » Thu Feb 05, 2015 10:21 pm

Hello again everyone. These last few weeks have seen me post almost as much as I had in the last five years, and I apologize to anyone that's tired of seeing all my messages.

This one relates to a series of progs I hinted at in my last post. This has already passed the area checker, and should be fully functional. I'm mainly looking for opinions on whether or not it's worth pursuing, if anyone sees any way to better optimize its functionality, and (probably most importantly) whether or not this is even an allowed way of doing this.

The basic idea started off as a 'I wonder if I could do this' kind of thing, and turned into quite a bit of research, conversion, and toying around with our building system. What this does, in its current incarnation, is take a Warrior and class them as a Fighter with some stipulations. Quest information has been removed, but it will be attached to a tribal quest that, at its completion, gives the player a permanent item (tribal tattoo) and, if I did it right, matches them pretty closely to the DnD Barbarian (http://www.d20srd.org/srd/classes/barbarian.htm). This is currently set up by level for Orcish characters, as that is who my area is geared towards. Alternatives by ECL could be easily accomplished.

In more detail, this series of progs does the following (in no specific order):

Code: Select all

Sets character as a Fighter
Removes Tower Shield Proficiency feat
Removes Armor Proficiency 3 (Heavy Armor)
Adds AC values by level to match SRD's Barbarian DR
Adds 'Discern' skill. SRD calls for 'Trap Sense', thought this was a reasonable stand-in
Disallows retraining of Armor Proficiency 3/Tower Shield Proficiency
Introduces MacGuyver'd 'Barbarian Rage' skill, in its progressive forms
  -Also introduces Fatigue affect up until 'Tireless Rage' is obtained
Adds feats at various levels per SRD
Sets up objvalues to disallow logging out during Rage/Fatigue
Adds progressive number of uses, by level, resetting to current maximum on new day
Allows player to check remaining uses by 'examining' item
Disallows use of 'Rage' if wearing heavy armor 
Alright, notes out of the way, progs below. Ignore the placeholder values, I haven't gotten around to that part yet. Hopefully the formatting doesn't go TOO crazy.

Code: Select all

#MOBILES
#123400
shaman~
desc~
desc~
~
U 50 CLASS_GRUUMSH RACE_ORCMOUNTAIN SEX_MALE POS_STANDING DEITY_GRUUMSH
ACT_SENTINEL|ACT_CITIZEN
AFF_TRUESIGHT AFF_SANCTUARY
ARMOR_TYPE_LEATHER MATERIAL_HIDE
ALIGN_CHAOTIC_EVIL
15 13 17 14 14 11 13
LANG_ORCISH|LANG_COMMON
LANG_ORCISH|LANG_COMMON
RIS_NONE RIS_NONE RIS_NONE
>intercept_prog wake~
mpmset $n questr 123400 0 0 4
mpsetclan $n fighters
mpsetfeat $n armor_proficiency 2
mpsetfeat $n tower_shield_proficiency 0
~
|
#0

#OBJECTS
#123400
barb tattoo~
short desc~
long desc~
~
ITEM_TYPE_TREASURE
FLAG_MAGIC|FLAG_NOREMOVE|FLAG_PERMANENT
CAN_WEAR_TAKE|CAN_WEAR_BODY|CAN_WEAR_ARMS|CAN_WEAR_HANDS
QUALITY_OUTSTANDING MATERIAL_FLESH COND_PERFECT SIZE_MEDIUM
0 0 0 0 LAYER_UNDER 0
E
tattoo~
detailed desc
~
> intercept_prog train~
 if stringprefix($1) == train
   mpunintercept
 if string($2) == level
   mpunintercept
 if level($n) == 3
   mpsetfeat $n 'uncanny_dodge' 1
  else
    mpunintercept
    if level($n) == 6
	 mppractice $n 1 discern
    else
      mpunintercept
      if level($n) == 8
	   mposet on $n i123400 value5 2
     else
       mpunintercept
       if level($n) == 11
	    mpsetfeat $n 'improved_uncanny_dodge' 1
       else
         mpunintercept
         if level($n) == 13
	      mppractice $n 2 discern
         else
           mpunintercept
           if level($n) == 16
	        mposet on $n i123400 affect ac -1
           else
             mpunintercept
	         if level($n) == 18
	          mposet on $n i123400 value5 3
             else
               mpunintercept
	           if level($n) == 21
	            mppractice $n 3 discern
               else
                 mpunintercept
	             if level($n) == 23
	              mposet on $n i123400 affect ac -2
                 else
                   mpunintercept
	               if level($n) == 28
	                mposet on $n i123400 value5 4
	                mppractice $n 4 discern
                   else
                     mpunintercept
	                 if level($n) == 31
	                  mposet on $n i123400 affect ac -3
                     else
                       mpunintercept
	                   if level($n) == 33
	                    mpsetfeat $n 'indomitable_will' 1
                       else
                          mpunintercept
	                      if level($n) == 36
	                       mppractice $n 5 discern
                         else
                           mpunintercept
	                       if level($n) == 38
	                        mposet on $n i123400 value5 5
                           else
                             mpunintercept
	                         if level($n) == 41
	                          mposet on $n i123400 affect ac -4
                             else
                               mpunintercept
	                           if level($n) == 46
	                            mppractice $n 6 discern
                               else
                                 mpunintercept
	                             if level($n) == 48
	                              mposet on $n i123400 ac -5
	                              mposet on $n i123400 value5 6
                                 else
                                   if stringprefix($1) == train
								     mpunintercept
								     if string($2) == 'armor proficiency'
								     or string($2) == 'tower shield proficiency'
								      mpechoat $n Your barbarian training denies you the use of heavy armor or tower shields.
								   else
								     mpunintercept
									 endif
								   endif  
	                             endif
							   endif
                             endif
						   endif
						 endif
					   endif
					 endif
				   endif
				 endif
			   endif
			 endif
		   endif
		 endif
	   endif
	 endif
   endif
 endif
 endif
 endif
~
>intercept_prog rage~
  if wear_loc($o) != -1
   if otypewear(1)
   or otypewear(12)
   or otypewear(4)
   or otypewear(5)
     mpechoat $n Your armor is too stifling to embrace your rage.
  else
    if objval5($o) == 0
	  mpechoat $n You have used your daily rage.
	else
	  if wear_loc($o) != -1
	    if level($n) >= 1
		and level($n) < 26
		  mpechoat $n You give into your rage.
		  mpmadd $n str 4
		  mpmadd $n con 4
		  mpmadd $n ac 2
		  mpoadd $o value5 -1
		  mpoadd $o value0 1
		  pause 720
		  mpechoat $n Your rage fades, leaving you fatigued.
		  mpmadd $n str -6
		  mpmadd $n con -6
		  mpmadd $n ac -2
          mpoadd $o value0 -1
		  mpoadd $o value1 1
		  pause 180
		  mpechoat $n You recover from your fatigue.
		  mpoadd $o value1 -1
		  mpmadd $n str 2
		  mpmadd $n con 2
	  else
	    if wear_loc($o) != -1
		  if level($n) >= 26
		  and level($n) < 43
		    mpechoat $n Your enhanced rage takes hold.
			mpmadd $n str 6
			mpmadd $n con 6
			mpmadd $n ac 2
			mpoadd $o value5 -1
			mpoadd $o value0 1
			pause 720
			mpechoat $n Your rage fades away, leaving you fatigued.
			mpoadd value0 -1
			mpoadd value1 1
			mpmadd $n str -8
			mpmadd $n con -8
			mpmadd $n ac -2
			pause 180
			mpechoat $n You recover from your fatigue.
			mpoadd $o value1 -1
			mpmadd $n str 2
			mpmadd $n con 2
		else
		  if wear_loc($o) != -1
		    if level($n) >= 43
			and level($n) < 48
			  mpechoat $n Your enhanced rage takes hold.
			  mpmadd $n str 6
			  mpmadd $n con 6
			  mpmadd $n ac 2
			  mpoadd $o value5 -1
			  mpoadd $o value0 1
			  pause 720
			  mpechoat $n Your rage fades away.
			  mpoadd $o value0 -1
			  mpmadd $n str -6
			  mpmadd $n con -6
			  mpmadd $n ac -2
			else
			  if wear_loc($o) != -1
			    if level($n) == 48
				  mpechoat $n You bring the full weight of your rage to bear.
				  mpmadd $n str 8
				  mpmadd $n con 8
				  mpmadd $n ac 2
				  mpoadd $o value5 -1
				  mpoadd $o value0 1
				  pause 720
				  mpechoat $n Your rage subsides.
				  mpoadd value0 -1
				  mpmadd $n str -8
				  mpmadd $n con -8
				  mpmadd $n ac -2
				endif
			  endif
			endif
		  endif
		  endif
		endif
		endif
	  endif
	  endif
	endif
  endif
~
>time_prog 0~
 if wear_loc($o) != -1
   if level($n) >= 1
   and level($n) < 8
     mposet on $n $o value5 1
 else
   if wear_loc($o) != -1
     if level($n) >= 8
	 and level($n) < 18
       mposet on $n $o value5 2
   else
     if wear_loc($o) != -1
       if level($n) >= 18
       and level($n) < 28
         mposet on $n $o value5 3
     else
       if wear_loc($o) != -1
         if level($n) >= 28
         and level($n) < 38
           mposet on $n $o value5 4
       else
         if wear_loc($o) != -1
           if level($n) >= 38
           and level($n) < 48
             mposet on $n $o value5 5
         else
           if wear_loc($o) != -1
             if level($n) == 48
               mposet on $n $o value5 6
             endif
           endif
           endif
         endif
         endif
       endif
       endif
     endif
     endif
   endif
   endif
  endif
~
>exa_prog 100~
 if wear_loc($o) != -1
   if objval5($o) == 0
     mpechoat $n You have exceeded your daily rage useage.
 else
   if wear_loc($o) != -1
     if objval5($o) == 1
	   mpechoat $n You have one remaining use of Rage for today.
   else
     if wear_loc($o) != -1
	   if objval5($o) == 2
	     mpechoat $n You have two remaining uses of Rage for today.
	 else
	   if wear_loc($o) != -1
	     if objval5($o) == 3
		   mpechoat $n You have three remaining uses of Rage for today.
	   else
	     if wear_loc($o) != -1
		   if objval5($o) == 4
		     mpechoat $n You have four remaining uses of Rage for today.
		 else
		   if wear_loc($o) != -1
		     if objval5($o) == 5
			   mpechoat $n You have five remaining uses of Rage for today.
		   else
		     if wear_loc($o) != -1
			   if objval5($o) == 6
			     mpechoat $n You have six remaining uses of Rage for today.
			   endif
			 endif
			 endif
		   endif
		   endif
		 endif
		 endif
	   endif
	   endif
	 endif
	 endif
   endif
   endif
 endif
~
>intercept_prog quit~
 if objval0($o) == 1
    mpechoat $n {90} You cannot quit in the middle of your rage!
 else
   if objval1($o) == 1
	mpechoat $n {90} You cannot quit while recovering from your rage.
   else
	  mpunintercept
   endif
 endif
~
|
#0
Thanks for your time!
Post Reply