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
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