Advertisement
MrNoobers

Random Quest Text

Nov 11th, 2011
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <cfcomponent output="false">
  2.  
  3.     <cfset this.artifacts = []/>
  4.     <cfset this.targets = []/>
  5.     <cfset this.locations = []/>
  6.     <cfset this.questTypes = []/>
  7.    
  8.     <cffunction name="init" access="public" returntype="Any">
  9.        
  10.         <cfset createDefaults()/>
  11.        
  12.         <cfreturn this/>
  13.     </cffunction>
  14.    
  15.     <cffunction name="createDefaults" access="private">
  16.        
  17.         <cfset addElement("artifacts","Super Robot Gloves")/>
  18.         <cfset addElement("artifacts","Golden Crown of Sum'Guy")/>
  19.         <cfset addElement("artifacts","Sword of 10000 Truths")/>
  20.         <cfset addElement("artifacts","Noobslayer Boots")/>
  21.        
  22.                
  23.         <cfset addElement("targets","King BadGuy The 3rd")/>
  24.         <cfset addElement("targets","Bardy McAnnoyingSong")/>
  25.         <cfset addElement("targets","Tim")/>
  26.         <cfset addElement("targets","Sir John NotaTrap")/>
  27.        
  28.         <cfset addElement("locations","Mt Death")/>
  29.         <cfset addElement("locations","The Galaxy of Terror")/>
  30.         <cfset addElement("locations","The Zone of No Return")/>
  31.         <cfset addElement("locations","Teddy Bear Junction")/>
  32.        
  33.         <cfset addElement("questTypes","Assassination")/>
  34.         <cfset addElement("questTypes","Fetch Quest")/>
  35.         <cfset addElement("questTypes","Treasure")/>
  36.        
  37.     </cffunction>
  38.    
  39.     <cffunction name="addElement" access="public">
  40.         <cfargument name="elementType" type="string" required="true">
  41.         <cfargument name="elementName" type="string" required="true">      
  42.        
  43.         <cfif !structkeyexists(this,arguments.elementType)>
  44.             <cfthrow message="Invalid element type">
  45.         </cfif>
  46.        
  47.         <cfif !arrayfind(this[arguments.elementType],arguments.elementName)>
  48.             <cfset arrayAppend(this[arguments.elementType],arguments.elementName)/>
  49.         </cfif>
  50.        
  51.     </cffunction>
  52.    
  53.     <cffunction name="generateQuest" access="public" returntype="String">
  54.         <cfargument name="questType" type="string" required="false" default="">
  55.        
  56.         <cfset var qType = arguments.questType/>
  57.         <cfset var questText = ""/>
  58.         <cfset var simpleSwitch = randRange(1,2)/>
  59.        
  60.         <cfif !len(qType)>
  61.             <cfset qType = randomQuestType()/> 
  62.         </cfif>
  63.         <cfswitch expression="#qType#">
  64.             <cfcase value="Assassination">         
  65.                 <cfsavecontent variable="questText">                   
  66.                     <cfoutput>
  67.                     Brave adventurer!  There is a terrible threat to our kingdom.  You must find and slay #randomElement('targets')#.  They were last seen near #randomElement('locations')#.  Find them, slay them and untold riches shall be yours!                  
  68.                     </cfoutput>  
  69.                 </cfsavecontent>
  70.             </cfcase>
  71.             <cfcase value="Fetch Quest">           
  72.                 <cfsavecontent variable="questText">                   
  73.                     <cfif simpleSwitch eq 1>
  74.                         <cfoutput>                 
  75.                         Greetings!  I was wondering if you could do me a favor.  My good friend #randomElement('targets')# has crafted #randomElement('artifacts')# for me.  Could you travel to #randomElement('locations')# and get it for me?                   
  76.                         </cfoutput>
  77.                     <cfelse>
  78.                         <cfoutput>                 
  79.                         My Friend!  I'm glad you are here.  Could do me a favor?  I need you to deliver #randomElement('artifacts')#  to my good friend #randomElement('targets')# in #randomElement('locations')#. KTHXBAI!                   
  80.                         </cfoutput>
  81.                     </cfif>  
  82.                 </cfsavecontent>
  83.             </cfcase>
  84.             <cfcase value="Treasure">          
  85.                 <cfsavecontent variable="questText">                   
  86.                     <cfoutput>
  87.                     Psst.  Come closer.  I have heard tale of #randomElement('artifacts')#.  Rumor has it that it is located in #randomElement('locations')#.  All that's left is for someone to claim it!                 
  88.                     </cfoutput>  
  89.                 </cfsavecontent>
  90.             </cfcase>
  91.         </cfswitch>
  92.        
  93.         <cfreturn questText/>
  94.     </cffunction>
  95.  
  96.     <cffunction name="randomElement" access="private" returntype="String">
  97.         <cfargument name="elementType" type="string" required="true">
  98.        
  99.         <cfset createObject("java","java.util.Collections").Shuffle(this[arguments.elementType])/>
  100.        
  101.         <cfreturn this[arguments.elementType][1]/>
  102.     </cffunction>
  103.     <cffunction name="randomQuestType" access="private" returntype="String">
  104.        
  105.         <cfset createObject("java","java.util.Collections").Shuffle(this.questTypes)/>
  106.        
  107.         <cfreturn this.questTypes[1]/> 
  108.     </cffunction>
  109. </cfcomponent>
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement