General Actions:
Log-in
Register
Wiki:
games
▼
:
Document Index
»
Space:
NPCTree
▼
:
Document Index
»
Page:
WebHome
Search
en
Page Actions:
Export
▼
:
Export as PDF
Export as RTF
Export as HTML
More actions
▼
:
Print preview
View Source
NPC Tree Generator
Wiki source code of
NPC Tree Generator
Last modified by
Adam Hattrell
on 2008/06/01 22:04
Content
·
Comments
(0)
·
Annotations
(0)
·
Attachments
(0)
·
History
·
Information
Hide line numbers
1: #set($groovyObject = $xwiki.parseGroovyFromPage("Groovy.Random")) 2: #set ($dice = $groovyObject.getRandom()) 3: 4: #macro (capital $word) #set ($firstLetter = "$word.charAt(0)") #set ($upperFirst = $firstLetter.toUpperCase()) ${upperFirst}${word.substring(1)} #end 5: 6: #macro (getRandomName) #set ($pageDoc = $xwiki.getDocument("ModernFirstNames.all")) #set ($names = $pageDoc.getObjects("NameManager.NameClass")) #set ($pick = $dice.nextInt($names.size())) #set ($choice = $names.get($pick)) #set ($firstName = $choice.get("name")) #set ($sql = "select prop.value from BaseObject as obj, XWikiDocument as doc, StringProperty as prop where obj.name=doc.fullName and obj.id = prop.id.id and doc.web='ModernLastNames' and obj.className='NameManager.NameClass' and obj.name<>'NameManager.NameClassTemplate' and prop.id.name='name'") #set ($names = $xwiki.search($sql)) #set ($pick = $dice.nextInt($names.size())) #set ($surname = $names.get($pick)) #capital("$firstName") #capital("$surname") #end 7: 8: 1 NPC Tree Generator 9: 10: This page allows you to generate a tree structure of NPCs. Later they will be able to take actions in order to compete for position. These actions will in turn generate rumours as they go. 11: 12: 1.1 Program Code 13: 14: * [NPCClass] 15: * [NPCClassSheet] 16: * [NPCTemplate] 17: * [NPCHomeTemplate] 18: 19: 1.1 Generate a new NPC Tree 20: 21: <FORM> 22: Space: <input type="text" name="space" value="New Space Name" /> 23: <input type="submit" name="add" value="add"> 24: </FORM> 25: 26: ## 27: ## First deal with any create new Page requests 28: ## 29: #if ($request.getParameter("add")) 30: #set ($space = $request.getParameter("space")) 31: ## 32: ## Create 1 new master 33: ## 34: #set ($masterName = "#getRandomName()") 35: #set ($mDoc = $xwiki.getDocument("$space",$util.clearName("$masterName"))) 36: #set ($mObj = $nDoc.getObject("NPCTree.NPCClass", true)) 37: $mObj.set("name", $masterName) 38: $mDoc.save() 39: ## 40: ## Create 5 new Children 41: ## 42: #set ($range = [1..5]) 43: #foreach ($number in $range) 44: #set ($subName = "#getRandomName()") 45: #set ($nDoc = $xwiki.getDocument("$space", $util.clearName("$subName"))) 46: #set ($nObj = $nDoc.getObject("NPCTree.NPCClass", true)) 47: $nObj.set("name", $subName) 48: $nObj.set("superior", $masterName) 49: $nDoc.save() 50: #end 51: ## 52: ## Now create a home page to control the tree 53: ## 54: #set ($params = "template=NPCTree.NPCHomeTemplate&sheet=1&parent=NPCTree.WebHome") 55: #set ($redirect = $xwiki.getURL("${space}.WebHome", "edit", $params)) 56: $response.sendRedirect($redirect) 57: #end 58: 59: 1.1 Existing Trees 60: 61: #set ($sql = "select distinct doc.web from XWikiDocument as doc, BaseObject as obj where obj.name=doc.fullName and obj.className='NPCTree.NPCClass' and obj.name<>'NPCTree.NPCTemplate'") 62: 63: #set ($results = $xwiki.search($sql)) 64: 65: #foreach ($item in $results) 66: * [${item}.WebHome] 67: #end