#!QUESTMAKER_START_SCRIPT Competitive Dispel #1
#The player must dispel or otherwise remove a spell, disease, poison, or
#other affect from 1 or more affected mobs on your map.
#
#!QUESTMAKER_PAGE Quest Name/Duration
#Enter the unique name and starting time/duration for your new quest.
#Times are entered as a simple number or math expression to denote a
#time in default ticks (4 second period), or you may follow the expression
#with the word seconds, minutes, hours, days, mudhours, muddays, mudweeks,
#mudmonths, or mudyears. Time expressions may include numbers, math
#symbols, or the ? operator to generate random numbers. Example:
#"5 + 3?10 minutes" would generate a frequency of 8-15 minutes.#
#
#Quest ID:
#Enter a unique name/id for your quest:
#$QUEST_ID=$UNIQUE_QUEST_NAME=competitive_dispel_1
#
#Quest Name:
#Enter a friendly displayable name for your quest:
#$QUEST_NAME=$STRING=Competitive Dispel #1
#
#Quest Frequency:
#This is the time between quest starts.
#$FREQUENCY=$TIMEEXPRESSION=90 minutes
#
#Quest Duration:
#This is how long your quest remains running, and how long a player
#accepting the quest has to complete the quest and report back in.
#$DURATION=$TIMEEXPRESSION=90 minutes
#
#Quest-Player Criterium:
#You may leave this entry blank, or enter a Zapper Mask to describe what
#kinds of players may participate in this quest. You can use this to set
#race, level, or other requirements.
#$QUEST_CRITERIA=$ZAPPERMASK
#
#!QUESTMAKER_PAGE Dispel Quest Basics
#Here's where you specify the basic shape and form of your quest.
#
#The Thing To Dispel:
#Specify the Ability ID of the spell/disease/poison/affect/whatever that
#the player needs to dispel in order to complete the quest. You may
#also optionally include some parameters in case the ability you choose
#needs them. Most don't, but you'd need to consult the help files to
#be sure.
#$DISPEL_SPELL=$ABILITY=Disease_Plague
#Optinal parameters:
#$DISPEL_SPELL_PARMS=($STRING)
#
#Affect one MOB or a GROUP of mobs.
#Specify here whether a single MOB will be affected by a disease, or
#whether you would potentially like a whole MOBGROUP to be affected.
#$DISPELEE_TYPE=$CHOOSE=MOB,MOBGROUP
#
#The Number To Dispel:
#Specify the number of affected mobs the player will need to dispel in
#order to complete the quest. You may enter a numeric expression, but
#make sure it evaluates to something >= 1! Also, if you specified that
#numerous mobs will be affected above by selecting MOBGROUP, you might
#also consider making this number even larger than 1. :)
#$NUMBER_TO_DISPEL=$EXPRESSION=1
#
#!QUESTMAKER_PAGE Specify the Announcer
#The Announcer is the mob who will be announcing the quest initially. This must
#be an existing mob in your world. They will announce the quest to players
#once, and then mark whether the player says they accept the quest
#
#Announcer Area/Room:
#Specify below the name of the area that your Announcer mob will be located
#in and/or the room in which the mob can be found. You may leave both blank
#to force the quest manager to find the mob somewhere in the world, but this
#will hurt the performance of your mud, so use with care.
#Use double-quotes around multi-word areas and room ids/names.
#
#Announcer Area:
#$ANNOUNCER_AREA=($AREA)
#Announcer Room ID:
#$ANNOUNCER_ROOM=($ROOMID)
#
#Announcer mob name:
#Specify the name of the mob who will act as the Announcer mob.
#Use double-quotes around multi-word names.
#If you specified an area or room above, then the mob must be located there.
#You may optionally have the quest manager select a 'random' mob by entering
#a mob name of ANY MASK= followed by a Zapper Mask (see help on
#ZAPPERMASKS for information on zapper mask syntax).
#Remember, if the quest manager can not find your mob, the quest will not
#be started.
#$ANNOUNCER_NAME=$NAME
#
#!QUESTMAKER_PAGE Announcer greetings/instructions
#Here's where you specify any special text said by the announcer regarding
#your quest
#
#Announcer greeting:
#Specify what the announcer says to people when they enter the room about their
#quest.
#$QUEST_NOTIFYSTRING=$LONG_STRING=I have some work I need done.
#
#Announcer instructions:
#Specify what the announcer says to people who have accepted the quest. This
#should give some details about what is to be done. You can leave this blank
#if you like.
#$QUEST_INSTRUCTIONSSTRING=($LONG_STRING)=There are lots of people in some area affected by some affect that need it to go away. Please go make it go away for them. (Your announcement should be more specific)
#
#Announcer announcement:
#Select what type of annoucement the Announcer will make when the quest starts.
#$QUEST_ANNOUNCEMENT_TYPE=$CHOOSE=YELL,QUESTCHAT,MPECHO,SAY
#This is what the announcement says. Leave it blank if you only want him to talk to people who enter the room with him.
#$QUEST_ANNOUNCEMENT=($STRING)
#
#!QUESTMAKER_PAGE Specify the Dispelee(s)
#The Dispelee(s) is the mob or group of mobs who will be affected by the
#spell/disease/poison/whatever. These are the ones whom the player needs
#to "cure" in order to complete the quest.
#
#Dispelee Area/Room:
#Specify below the name of the area that your Dispelee mob(s) will be located
#in and/or the room in which the mob(s) can be found. You may leave both blank
#to force the quest manager to find the mob(s) all over the world, but this
#will hurt the performance of your mud, so use with care.
#Use double-quotes around multi-word areas and room ids/names.
#
#Dispelee(s) Area:
#$DISPELEE_AREA=($AREA)
#Dispelee(s) Room ID:
#$DISPELEE_ROOM=($ROOMID)
#
#Dispelee(s) mob name(s):
#Specify the name(s) of the mob(s) who will act as the Dispelees.
#Use double-quotes around multi-word names.
#If you specified an area or room above, then the mob(s) must be located there.
#You may optionally have the quest manager select multiple mob(s) by entering
#a mob name of ANY MASK= followed by a Zapper Mask (see help on
#ZAPPERMASKS for information on zapper mask syntax).
#Remember, if the quest manager can not find your mobs, the quest will not
#be started. And if they can't find enough to specify the number of dispellees
#your mentioned above, the players won't be able to finish the quest!
#$DISPELEE_NAME=$NAME
#
#!QUESTMAKER_PAGE Dispelee greetings/responses
#Here's where you specify any special text said by the dispelee(s) before,
#after, or during the quest.
#
#Dispelee greeting:
#Specify what the Dispelee says to people when they enter the room. You
#may leave this blank to keep it a secret.
#$DISPELEE_GREETING=$LONG_STRING=I've got a disease or poison or something.
#
#Dispelee response #1:
#Specify what the dispelee says to players who successfully remove the
#disease/poison/spell/whatever from them, EVEN if they are not yet done
#with the quest because they have more to do. You may leave this blank
#if you like.
#$DISPELEE_RESPONSE_1=($LONG_STRING)=Wow. It's gone from me.
#
#Dispelee response #2:
#Specify what the dispelee says to players who successfully complete the
#whole quest. You may leave this blank
#if you like.
#$DISPELEE_RESPONSE_2=($LONG_STRING)=Wow. You've completed the quest.
#
#!QUESTMAKER_PAGE Quest Completion
#Select some rewards for completing the quest:
#
#Reward items:
#Specify zero or more items to choose from as a reward
#$REWARD_ITEMS=$ITEMXML_ZEROORMORE
#
#Quest Point?
#$QUEST_POINT=$CHOOSE=YES,NO
#Amount of money (an amount, or leave blank):
#$GOLD=($EXPRESSION)
#Amount of experience points, blank for none, or a number% for percent of exp to next level:
#$EXP=($STRING)=10%
#
#Player Faction to give to or take from:
#$FACTION=($FACTION)
#If you selected a faction above, enter a new numeric amount,
#or enter +value to add, or --value to subtract:
#$NUMFACTION=($STRING)
#
#Select whether a player may complete this quest multiple times,
#or 'prev' to require a previous quest, if multiple found.
#$MULTIPLE=$CHOOSE=YES,NO,PREV
#
#If you choose, you may have completion of this quest automatically start another.
#If this is what you want, enter the next quests name here:
#$NEXT_QUEST=($EXISTING_QUEST_NAME)
#
#!QUESTMAKER_END_SCRIPT Competitive Dispel #1
set name $QUEST_ID
set display $QUEST_NAME
set author $#AUTHOR
set wait $FREQUENCY
set interval 1
#quiet
set minplayers 1
set playermask $QUEST_CRITERIA
set area $ANNOUNCER_AREA
set room $ANNOUNCER_ROOM
set mobgroup
set mob $ANNOUNCER_NAME
give stat keyplayer true
give script LOAD=$QUEST_ID_dispelannouncer.script
set area $DISPELEE_AREA
set room $DISPELEE_ROOM
set $DISPELEE_TYPE $DISPELEE_NAME
give stat keyplayer true
give affect $DISPEL_SPELL $DISPEL_SPELL_PARMS
give script LOAD=$QUEST_ID_dispel.script
set duration $DURATION
<?xml version="1.0"?>
<FILE><NAME>$QUEST_ID_rewarditems.xml</NAME><DATA><ITEMS>$REWARD_ITEMS</ITEMS></DATA></FILE>
<FILE><NAME>$QUEST_ID_dispelannouncer.script</NAME>
<DATA>
ONCE_PROG 100
MPSETVAR * $QUEST_ID_ALREADY_TOLD ''
MPSETVAR * $QUEST_ID_COUNT ''
MPSETVAR * $QUEST_ID_CURED ''
MPSETVAR * $QUEST_ID_ACCEPTED ''
MPSETVAR * $QUEST_ID_NUMACCEPTED ''
$QUEST_ANNOUNCEMENT_TYPE $QUEST_ANNOUNCEMENT
~
QUEST_TIME_PROG * -1
mpsetvar $i $QUEST_ID_NUMACCEPTED '$<$i $QUEST_ID_ACCEPTED>.LENGTH#'
for $0 = 0 to< '$<$i $QUEST_ID_NUMACCEPTED>'
if !QUESTWINNER('$<$i $QUEST_ID_ACCEPTED>.$0' *)
tell "$<$i $QUEST_ID_ACCEPTED>.$0" You failed to complete my quest in time.
endif
mpqset * STATISTICS FAILED
next
MPSETVAR * $QUEST_ID_NUMACCEPTED ''
MPSETVAR * $QUEST_ID_ALREADY_TOLD ''
MPSETVAR * $QUEST_ID_CURED ''
MPSETVAR * $QUEST_ID_COUNT ''
MPSETVAR * $QUEST_ID_ACCEPTED ''
~
QUEST_TIME_PROG * 1
mpsetvar $i $QUEST_ID_NUMACCEPTED '$<$i $QUEST_ID_ACCEPTED>.LENGTH#'
for $0 = 0 to< '$<$i $QUEST_ID_NUMACCEPTED>'
tell "$<$i $QUEST_ID_ACCEPTED>.$0" You have less than a minute left.
next
~
GREET_PROG 100
if ISLIKE($n '$QUEST_CRITERIA') and ISPC($n) and ( EVAL('$MULTIPLE' != 'PREV') or QUESTWINNER($n previous) )
if EVAL('$MULTIPLE' == 'YES') OR !QUESTWINNER($n *)
if !STRIN('$<$i $QUEST_ID_ALREADY_TOLD>' '$n')
sayto "$n" $QUEST_NOTIFYSTRING -- just say 'i accept' to take on this quest.
MPSETVAR $i $QUEST_ID_ALREADY_TOLD '$<$i $QUEST_ID_ALREADY_TOLD> "$n"'
endif
endif
endif
~
SPEECH_PROG p i accept
if ISLIKE($n '$QUEST_CRITERIA') and ISPC($n) and ( EVAL('$MULTIPLE' != 'PREV') or QUESTWINNER($n previous) )
if EVAL('$MULTIPLE' == 'YES') OR !QUESTWINNER($n *)
if VAR($n $QUEST_ID_COUNT == '')
sayto "$n" $QUEST_INSTRUCTIONSSTRING
mpscript $n INDIVIDUAL LOAD=$QUEST_ID_playertrack.script
mpsetvar $i $QUEST_ID_ACCEPTED '$<$i $QUEST_ID_ACCEPTED> $n'
mpsetvar $n $QUEST_ID_COUNT 0
mpqset * STATISTICS ACCEPTED
mpqset * REMAINING $DURATION
else
sayto "$n" Yes, yes, I know .. thanks again.
endif
endif
endif
~
</DATA></FILE>
<FILE><NAME>$QUEST_ID_dispel.script</NAME>
<DATA>
ALL_GREET_PROG 99
if affected($i $DISPEL_SPELL) and ISPC($n) and VAR($@i $QUEST_ID_CURED == '')
wake
stand
say "$n" $DISPELEE_GREETING
endif
~
RAND_PROG 99
if !affected($i $DISPEL_SPELL) and VAR($@i $QUEST_ID_CURED == '')
mpsetvar $@i $QUEST_ID_CURED 'TRUE'
mpargset $1 ''
for $0 = 1 to '$%NUMMOBSROOM(*)%'
if VAR('$%ROOMMOB($0)%' $QUEST_ID_COUNT != '')
mpargset $1 $%ROOMMOB($0)%
endif
next
if EVAL($1 != '')
mpsetvar $1 $QUEST_ID_COUNT ++
mpargset $2 '$<$1 $QUEST_ID_COUNT>'
wake
stand
sayto "$1" $DISPELEE_RESPONSE_1
if EVAL($2 >= $NUMBER_TO_DISPEL)
sayto "$1" $DISPELEE_RESPONSE_2
if EVAL('$EXP' != '')
mpexp $1 $EXP
endif
if EVAL('$FACTION' != '')
mpfaction $1 $FACTION +$NUMFACTION
endif
if EVAL('$QUEST_POINT' == 'YES') AND !QUESTWINNER($1 *)
mpoload QuestPoint
give "a quest point" "$1"
endif
if EVAL('$GOLD' != '') AND EVAL('$GOLD' > 0)
mpoload $GOLD
give $GOLD "$1"
endif
mpoload fromfile $QUEST_ID_rewarditems.xml any
if EVAL('$b' != '')
give "$b" "$n"
endif
mpquestwin '$1' *
mpendquest *
mpqset * STATISTICS SUCCESS
IF EVAL('$NEXT_QUEST' != '')
mpstartquest $NEXT_QUEST
ELSE
IF EVAL('$MULTIPLE' == 'PREV')
mptransfer $n $n
ENDIF
ENDIF
else
mpechoat '$1' Total done: $2/$NUMBER_TO_DISPEL
endif
endif
endif
~
</DATA></FILE>
<FILE><NAME>$QUEST_ID_playertrack.script</NAME>
<DATA>
ONCE_PROG 100
mpsetvar $i INSTRUCTIONS $QUEST_INSTRUCTIONSSTRING
~
QUEST_TIME_PROG * -1
if !QUESTWINNER($i *)
mpechoat $i The quest '$QUEST_NAME' has ended
endif
mpqset * STATISTICS FAILED
~
RAND_PROG 99
if QVAR(* REMAINING == '')
MPENDQUEST $i
else
mpsetvar $i TIME_REMAINING $%QVAR(* REMAINING)%
endif
~
</DATA></FILE>