Best Python code snippet using websmith_python
CharacterCreation.py
Source:CharacterCreation.py
12from client import *34# Character Templates5CharacterTemplates = (6 ("Samurai", 1062948, 1062950, 5591, Skills.Bushido, 50, Skills.Swordsmanship, 50, Skills.Wrestling, 0, 40, 30, 10),7 ("Ninja", 1062949, 1062951, 5589, Skills.Ninjitsu, 50, Skills.Hiding, 50, Skills.Wrestling, 0, 40, 30, 10),8 ("Paladin", 1061177, 1061227, 5587, Skills.Chivalry, 50, Skills.Tactics, 50, Skills.Wrestling, 0, 45, 20, 15),9 ("Necromancer", 1061178, 1061228, 5557, Skills.Necromancy, 50, Skills.Swordsmanship, 30, Skills.Tactics, 20, 25, 20, 35),10 ("Warrior", 1061180, 1061230, 5577, Skills.Tactics, 50, Skills.Healing, 45, Skills.Swordsmanship, 5, 35, 35, 10),11 ("Mage", 1061179, 1061229, 5569, Skills.Magery, 50, Skills.Meditation, 50, Skills.Wrestling, 0, 25, 10, 45),12 ("Blacksmith", 1061181, 1061231, 5555, Skills.Blacksmithy, 50, Skills.Tinkering, 45, Skills.Mining, 5, 60, 10, 10),13 ("Advanced", 3000448, 3000448, 5505, Skills.Alchemy, 50, Skills.Alchemy, 50, Skills.Alchemy, 0, 30, 25, 25),14)1516# City Names17CityNames = ("Yew", "Minoc", "Britain", "Moonglow", "Trinsic", "Magincia", "Jhelom", "Skara Brae", "Vesper")1819# Description of a city displayed in the right html gump20CityDescriptions = (1075072, 1075073, 1075074, 1075075, 1075076, 1075077, 1075078, 1075079, 1075080)2122# In this order: None, Short, Long, Ponytail, Mohawk, Pageboy, Topknot, Curly, Receding, Pigtails23HairstyleIds = (0, 0x203b, 0x203c, 0x203d, 0x2044, 0x2045, 0x204a, 0x2047, 0x2048, 0x2049)2425# In this order: None, Goatee, Long Beard, Short Beard, Moustache, Medium Short Beard, Medium Long beard, Vandyke26FacialHairstyleIds = (0, 0x2040, 0x203e, 0x203f, 0x2041, 0x204b, 0x204c, 0x204d)2728CTINDEX_NAME = 0 # Index Constant for the template name29CTINDEX_LOCALIZEDNAME = 130CTINDEX_LOCALIZEDDESC = 231CTINDEX_GUMP = 332CTINDEX_SKILL1 = 433CTINDEX_SKILL1VALUE = 534CTINDEX_SKILL2 = 635CTINDEX_SKILL2VALUE = 736CTINDEX_SKILL3 = 837CTINDEX_SKILL3VALUE = 938CTINDEX_STRENGTH = 1039CTINDEX_DEXTERITY = 1140CTINDEX_INTELLIGENCE = 124142GENDER_MALE = 043GENDER_FEMALE = 14445# Note: This won't work with sphere46MAXIMUM_STATS = 8047MAX_STAT = 6048MIN_STAT = 1049SKILLCOUNT = Skills.count()5051# List of forbidden name contents52FORBIDDEN = ("lord", "lady", "gm", "counselor", "seer")5354# Return true if character name is valid55def isValidName(name):56 name = name.lower()57 for word in FORBIDDEN:58 # Contains wrong word59 if word in name:60 return False61 62 # Also the name may only contain certain characters,63 # but the first char has to be a letter64 if ord(name[0]) < ord('a') or ord(name[0]) > ord('z'):65 return False66 67 # Check the rest of the chars68 for ch in name:69 if ch != ' ' and ch != '-' and ch != '\'' and ch != '.' and (ord(ch) < ord('a') or ord(ch) > ord('z')):70 return False7172 return True7374# This class manages the context of the current character creation75class Context:76 """77 Setup the contexts default78 """79 def __init__(self):80 self.profession = -181 self.strength = 1082 self.dexterity = 1083 self.intelligence = 1084 self.skill1 = -185 self.skill2 = -186 self.skill3 = -187 self.skill1Value = 5088 self.skill2Value = 5089 self.skill3Value = 090 self.normalizingSkills = False91 self.hairstyle = 092 self.facialhairstyle = 093 self.pantscolor = random(2, 0x3e9)94 self.shirtcolor = random(2, 0x3e9)95 self.gender = GENDER_MALE96 self.haircolor = random(0x44e, 0x47d)97 self.facialhaircolor = random(0x44e, 0x47d)98 self.skincolor = random(0x3ea, 0x422)99 self.name = 'Nobody'100101 """102 Show the first page of the character creation103 """104 def showFirst(self):105 loginDialog = Gui.findByName("LoginDialog")106 loginDialog.findByName("CharacterCreation1").visible = True107 108 """109 Hide all character creation pages110 """111 def hideAll(self):112 loginDialog = Gui.findByName("LoginDialog")113 loginDialog.findByName("CharacterCreation1").visible = False114 loginDialog.findByName("CharacterCreation2").visible = False115 loginDialog.findByName("CharacterCreation3").visible = False 116117 """118 Select the profession with the given id119 """120 def selectProfession(self, id):121 self.profession = id122 123 self.setStrength(CharacterTemplates[id][CTINDEX_STRENGTH], True)124 self.setDexterity(CharacterTemplates[id][CTINDEX_DEXTERITY], True)125 self.setIntelligence(CharacterTemplates[id][CTINDEX_INTELLIGENCE], True)126 127 self.setSkillValue(1, CharacterTemplates[id][CTINDEX_SKILL1VALUE], True)128 self.setSkillValue(2, CharacterTemplates[id][CTINDEX_SKILL2VALUE], True)129 self.setSkillValue(3, CharacterTemplates[id][CTINDEX_SKILL3VALUE], True)130 dialog = Gui.findByName("CharacterCreation2")131 dialog.findByName("SkillBox1").selectItem(CharacterTemplates[id][CTINDEX_SKILL1])132 dialog.findByName("SkillBox2").selectItem(CharacterTemplates[id][CTINDEX_SKILL2])133 dialog.findByName("SkillBox3").selectItem(CharacterTemplates[id][CTINDEX_SKILL3])134135 # Hide current dialog and show next136 loginDialog = Gui.findByName("LoginDialog")137 loginDialog.findByName("CharacterCreation1").visible = False138 139 if CharacterTemplates[id][CTINDEX_NAME] == "Advanced":140 loginDialog.findByName("CharacterCreation2").visible = True141 else:142 self.dialog2Next(None)143 144 """145 Initialize the Character creation dialog (page 1)146 """147 def setupDialog1(self, dialog):148 # Center the title label149 label = dialog.findByName("TitleLabel") 150 if label:151 label.update()152 label.x = label.x + (400 - label.width) / 2 153 154 xpos = 135155 ypos = 147156 157 # Add profession selection buttons158 for i in range(0, len(CharacterTemplates)):159 template = CharacterTemplates[i]160 optn = Gui.createDialog("CharacterTemplate")161 if optn:162 # Set the label text and the gump id163 label = optn.findByName("TemplateLabel")164 label.text = Localization.get(template[CTINDEX_LOCALIZEDNAME])165 btn = optn.findByName("TemplateButton")166 btn.setStateGump(BS_UNPRESSED, template[CTINDEX_GUMP])167 btn.setStateGump(BS_PRESSED, template[CTINDEX_GUMP] + 1)168 btn.setStateGump(BS_HOVER, template[CTINDEX_GUMP] + 1)169 btn.setTag("profession", str(i))170 connect(btn, "onButtonPress(cControl*)", self.characterCreation1Next)171 172 optn.setPosition(xpos, ypos)173 dialog.addControl(optn)174 175 if i % 2 == 0:176 xpos += 205177 else:178 xpos -= 205179 ypos += 70180 181 connect(dialog.findByName("BackButton"), "onButtonPress(cControl*)", self.dialog1Back)182 183 def dialog1Back(self, button):184 LoginDialog.show(PAGE_SELECTCHAR) 185 186 """187 Select a profession and advance to the next page.188 """189 def characterCreation1Next(self, button):190 # We only process profession buttons here191 if not button.hasTag("profession"):192 return 193194 self.selectProfession(int(button.getTag("profession")))195196 """197 Go back198 """199 def dialog2Back(self, button):200 # Hide current dialog and show next201 loginDialog = Gui.findByName("LoginDialog")202 loginDialog.findByName("CharacterCreation2").visible = False203 loginDialog.findByName("CharacterCreation1").visible = True204 205 """206 Close an error dialog and show207 self.showAfterError instead208 """209 def closeErrorDialog(self, button):210 loginDialog = Gui.findByName("LoginDialog")211 212 errorDialog = loginDialog.findByName("CharacterCreationError") 213 errorDialog.visible = False214 errorDialog.deleteLater()215 216 dialog = loginDialog.findByName(self.showAfterError)217 dialog.visible = True218 219 """220 Check if the skills differ, then next screen221 """222 def dialog2Next(self, button):223 loginDialog = Gui.findByName("LoginDialog")224 dialog = loginDialog.findByName("CharacterCreation2")225 self.skill1 = dialog.findByName("SkillBox1").selectionIndex()226 self.skill2 = dialog.findByName("SkillBox2").selectionIndex()227 self.skill3 = dialog.findByName("SkillBox3").selectionIndex()228 229 # Check if the user has selected three different skillst230 if self.skill1 == self.skill2 or self.skill1 == self.skill3 or self.skill2 == self.skill3 or self.skill1 == -1 or self.skill2 == -1 or self.skill3 == -1:231 dialog.visible = False232 self.showError("Please Select Three Different Skills.", "CharacterCreation2")233 return234 235 # Hide current dialog and show next236 dialog.visible = False 237 self.showDialog3()238 239 def showError(self, message, showAfter):240 loginDialog = Gui.findByName("LoginDialog")241 errorDialog = loginDialog.findByName("CharacterCreationError")242 if not errorDialog:243 errorDialog = Gui.createDialog("CharacterCreationError")244 loginDialog.addControl(errorDialog)245 246 label = errorDialog.findByName("MessageLabel")247 label.text = message248 label.x = 25 + (180 - label.width) / 2249 250 self.showAfterError = showAfter251 connect(errorDialog.findByName("OkButton"), "onButtonPress(cControl*)", self.closeErrorDialog)252 errorDialog.visible = True253 254 def strengthScrolled(self, value):255 loginDialog = Gui.findByName("LoginDialog")256 strengthScroller = loginDialog.findByName("StrengthScroller")257 self.setStrength(strengthScroller.pos)258 259 def dexterityScrolled(self, value):260 loginDialog = Gui.findByName("LoginDialog")261 dexterityScroller = loginDialog.findByName("DexterityScroller")262 self.setDexterity(dexterityScroller.pos)263 264 def intelligenceScrolled(self, value):265 loginDialog = Gui.findByName("LoginDialog")266 intelligenceScroller = loginDialog.findByName("IntelligenceScroller")267 self.setIntelligence(intelligenceScroller.pos)268 269 def skill1Scrolled(self, value):270 if self.normalizingSkills:271 return272 loginDialog = Gui.findByName("LoginDialog")273 scroller = loginDialog.findByName("SkillScroller1")274 self.setSkillValue(1, scroller.pos)275 276 def skill2Scrolled(self, value):277 if self.normalizingSkills:278 return 279 loginDialog = Gui.findByName("LoginDialog")280 scroller = loginDialog.findByName("SkillScroller2")281 self.setSkillValue(2, scroller.pos)282 283 def skill3Scrolled(self, value):284 if self.normalizingSkills:285 return 286 loginDialog = Gui.findByName("LoginDialog")287 scroller = loginDialog.findByName("SkillScroller3")288 self.setSkillValue(3, scroller.pos) 289290 """291 Initialize the Character creation dialog (page 2)292 """293 def setupDialog2(self, dialog): 294 # Center the title label295 label = dialog.findByName("TitleLabel")296 if label:297 label.update() # Make sure the size is correct298 label.x = label.x + (400 - label.width) / 2299 300 backButton = dialog.findByName("BackButton")301 nextButton = dialog.findByName("NextButton")302 connect(backButton, "onButtonPress(cControl*)", self.dialog2Back)303 connect(nextButton, "onButtonPress(cControl*)", self.dialog2Next)304 305 connect(dialog.findByName("StrengthScroller"), "scrolled(int)", self.strengthScrolled)306 connect(dialog.findByName("DexterityScroller"), "scrolled(int)", self.dexterityScrolled)307 connect(dialog.findByName("IntelligenceScroller"), "scrolled(int)", self.intelligenceScrolled)308 connect(dialog.findByName("SkillScroller1"), "scrolled(int)", self.skill1Scrolled)309 connect(dialog.findByName("SkillScroller2"), "scrolled(int)", self.skill2Scrolled)310 connect(dialog.findByName("SkillScroller3"), "scrolled(int)", self.skill3Scrolled) 311312 items = []313 for i in range(0, SKILLCOUNT - 1):314 items.append(Localization.get(1044060 + i))315316 # Set up the combo boxes317 cb1 = dialog.findByName("SkillBox1")318 cb1.setItems(items)319 cb2 = dialog.findByName("SkillBox2")320 cb2.setItems(items)321 cb3 = dialog.findByName("SkillBox3")322 cb3.setItems(items)323 324 """325 Change the shirt color326 """327 def setShirtColor(self, color):328 dialog = Gui.findByName("LoginDialog")329 gump = dialog.findByName("PaperdollTorso")330 gump.hue = color331 self.shirtcolor = color332 333 """334 Change the pants color335 """336 def setPantsColor(self, color):337 dialog = Gui.findByName("LoginDialog")338 gump = dialog.findByName("PaperdollLegs")339 gump.hue = color340 self.pantscolor = color341 342 """343 The hair style changed344 """345 def hairStyleChanged(self):346 dialog = Gui.findByName("CharacterCreation3")347 348 cb = dialog.findByName("HairStyle")349 style = cb.selectionIndex()350 351 self.hairstyle = style352 353 gump = dialog.findByName("PaperdollHair")354 if style == 0:355 gump.visible = False356 else:357 # Get the gump id358 tiledata = Tiledata.getItemInfo(HairstyleIds[style]) 359 360 gump.visible = True361 if self.gender == GENDER_FEMALE and Gumpart.exists(60000 + tiledata.animation):362 gump.setId(60000 + tiledata.animation)363 else:364 gump.setId(50000 + tiledata.animation) 365 366 """367 The facial hair style changed368 """369 def facialHairStyleChanged(self):370 dialog = Gui.findByName("CharacterCreation3")371 372 cb = dialog.findByName("FacialHairStyle")373 style = cb.selectionIndex()374 self.facialhairstyle = style375 376 gump = dialog.findByName("PaperdollFacialHair")377 378 # No beards for females379 if self.gender == GENDER_FEMALE: 380 self.facialhairstyle = 0381 gump.visible = False382 return383 384 if style == 0:385 gump.visible = False386 else:387 # Get the gump id388 tiledata = Tiledata.getItemInfo(FacialHairstyleIds[style])389 390 gump.visible = True391 gump.setId(50000 + tiledata.animation)392 393 """394 Show dialog 3395 """ 396 def showDialog3(self):397 self.setShirtColor(self.shirtcolor)398 self.setPantsColor(self.pantscolor)399 loginDialog = Gui.findByName("LoginDialog")400 charCreation = loginDialog.findByName("CharacterCreation3")401 402 # Select random hairstyle403 cb = charCreation.findByName("HairStyle")404 cb.selectItem(random(0, len(HairstyleIds) - 1))405 406 charCreation.visible = True 407 408 """409 Change the color of the skin.410 """411 def setSkinColor(self, color, dialog = None):412 if not dialog:413 loginDialog = Gui.findByName("LoginDialog")414 dialog = loginDialog.findByName("CharacterCreation3")415 gump = dialog.findByName("PaperdollBody")416 gump.hue = color417 self.skincolor = color418 419 """420 Change the color of the hair.421 """422 def setHairColor(self, color, dialog = None):423 if not dialog:424 loginDialog = Gui.findByName("LoginDialog")425 dialog = loginDialog.findByName("CharacterCreation3")426 gump = dialog.findByName("PaperdollHair")427 gump.hue = color428 self.haircolor = color429 430 """431 Change the color of the facial hair.432 """433 def setFacialHairColor(self, color, dialog = None):434 if not dialog:435 loginDialog = Gui.findByName("LoginDialog")436 dialog = loginDialog.findByName("CharacterCreation3")437 gump = dialog.findByName("PaperdollFacialHair")438 gump.hue = color 439 self.facialhaircolor = color440 441 """442 The hair color button has been clicked443 """444 def changeHairColorClicked(self, button):445 self.setDialog3Visibility(False)446 447 dialog = Gui.findByName("CharacterCreation3")448 dialog.findByName("HairColorPicker").visible = True449 self.selectingColor = "hair"450 451 """452 The facial hair color button has been clicked453 """454 def changeFacialHairColorClicked(self, button):455 self.setDialog3Visibility(False)456 457 dialog = Gui.findByName("CharacterCreation3")458 dialog.findByName("HairColorPicker").visible = True459 self.selectingColor = "facial"460461 """462 Gender button slots463 """464 def setFemaleGender(self, button):465 self.setGender(GENDER_FEMALE)466 467 def setMaleGender(self, button):468 self.setGender(GENDER_MALE)469 470 """471 Change gender472 """473 def setGender(self, gender):474 if self.gender == gender:475 return476 477 self.gender = gender # Change local gender setting478 479 # Change Paperdoll Body480 loginDialog = Gui.findByName("LoginDialog")481 dialog = loginDialog.findByName("CharacterCreation3")482 gump = dialog.findByName("PaperdollBody")483 if gender == GENDER_FEMALE:484 gump.id = 0xd485 else:486 gump.id = 0xc487488 # Refresh the gumps489 self.hairStyleChanged()490 self.facialHairStyleChanged()491 492 # Shoes493 gump = dialog.findByName("PaperdollFeet")494 if gender == GENDER_FEMALE:495 gump.id = 60480496 else:497 gump.id = 50480498499 # Legs500 gump = dialog.findByName("PaperdollLegs")501 if gender == GENDER_FEMALE:502 gump.id = 60449503 else:504 gump.id = 50430505506 # Torso507 gump = dialog.findByName("PaperdollTorso")508 if gender == GENDER_FEMALE:509 gump.id = 60434510 else:511 gump.id = 50434512513 # Hide or show the facial hairstyle button514 dialog.findByName("FacialHairStyle").visible = (gender == GENDER_MALE)515 dialog.findByName("FacialHairColorButton").visible = (gender == GENDER_MALE)516 517 # Rename the Skirt/Pants color button accordingly518 if gender == GENDER_MALE:519 dialog.findByName("PantsColorButton").text = Localization.get(3000441)520 else:521 dialog.findByName("PantsColorButton").text = Localization.get(3000439 )522 523 """524 Set up the third dialog page525 """526 def setupDialog3(self, dialog):527 styles = []528 for i in range(0, len(HairstyleIds)):529 styles.append(Localization.get(3000340 + i))530 531 cb = dialog.findByName("HairStyle")532 cb.setItems(styles)533 cb.selectItem(0)534 connect(cb, "selectionChanged()", self.hairStyleChanged)535 connect(dialog.findByName("HairColorButton"), "onButtonPress(cControl*)", self.changeHairColorClicked)536 537 styles = [Localization.get(3000340)]538 for i in range(0, len(FacialHairstyleIds)-1):539 styles.append(Localization.get(3000351 + i))540 541 cb = dialog.findByName("FacialHairStyle")542 cb.setItems(styles)543 cb.selectItem(0)544 connect(cb, "selectionChanged()", self.facialHairStyleChanged)545 connect(dialog.findByName("FacialHairColorButton"), "onButtonPress(cControl*)", self.changeFacialHairColorClicked)546547 connect(dialog.findByName("FemaleButton"), "onButtonPress(cControl*)", self.setFemaleGender) 548 connect(dialog.findByName("MaleButton"), "onButtonPress(cControl*)", self.setMaleGender)549 connect(dialog.findByName("ShirtColorButton"), "onButtonPress(cControl*)", self.selectShirtColor)550 connect(dialog.findByName("PantsColorButton"), "onButtonPress(cControl*)", self.selectPantsColor)551 connect(dialog.findByName("ClothColorPicker"), "colorSelected(ushort)", self.clothColorSelected)552 connect(dialog.findByName("SkinColorPicker"), "colorSelected(ushort)", self.skinToneSelected)553 connect(dialog.findByName("HairColorPicker"), "colorSelected(ushort)", self.hairColorSelected)554 connect(dialog.findByName("SkinToneButton"), "onButtonPress(cControl*)", self.selectSkinTone)555 556 connect(dialog.findByName("BackButton"), "onButtonPress(cControl*)", self.dialog3Back)557 connect(dialog.findByName("NextButton"), "onButtonPress(cControl*)", self.dialog3Next)558 559 self.setHairColor(self.haircolor, dialog)560 self.setFacialHairColor(self.facialhaircolor, dialog)561 self.setSkinColor(self.skincolor, dialog)562 563 """564 Set up the fourth dialog page565 """566 def setupDialog4(self, dialog):567 connect(dialog.findByName("BackButton"), "onButtonPress(cControl*)", self.dialog4Back)568 connect(dialog.findByName("NextButton"), "onButtonPress(cControl*)", self.dialog4Next)569 connect(dialog.findByName("CityInfoScroller"), "scrolled(int)", self.cityScrollerScroll)570 571 # Bind the combo box change event 572 for city in CityNames:573 connect(dialog.findByName(city), "stateChanged()", self.citySelected)574 575 """576 City scroller has been used.577 """578 def cityScrollerScroll(self, oldpos):579 dialog = Gui.findByName("CharacterCreation4")580 scroller = dialog.findByName("CityInfoScroller")581 label = dialog.findByName("CityInfo")582 label.y = - scroller.pos583 584 """585 The city selection has changed586 """587 def citySelected(self):588 dialog = Gui.findByName("CharacterCreation4")589 text = ''590 591 # Check which one was selected592 for i in range(0, len(CityNames)):593 radio = dialog.findByName(CityNames[i])594 if radio.checked:595 text = Localization.get(CityDescriptions[i])596 break597 598 label = dialog.findByName("CityInfo")599 label.height = 0600 label.text = text601 label.update()602 label.y = 0603604 diff = 1 + label.height - label.parent.height605 606 if diff <= 0:607 diff = 1608 609 scroller = dialog.findByName("CityInfoScroller")610 scroller.pos = 0611 scroller.setRange(0, diff)612613 """614 Dialog 4 Next/Back615 """616 def dialog4Back(self, button):617 loginDialog = Gui.findByName("LoginDialog")618 loginDialog.findByName("CharacterCreation4").visible = False619 loginDialog.findByName("CharacterCreation3").visible = True620 621 def dialog4Next(self, button):622 loginDialog = Gui.findByName("LoginDialog")623 dialog = loginDialog.findByName("CharacterCreation4") 624 selected = None625 626 # Make sure a city has been selected627 for city in CityNames:628 if dialog.findByName(city).checked:629 selected = city630 break631 632 # Show error if not633 if not selected:634 dialog.visible = False635 self.showError("Please select a start location.", "CharacterCreation4")636 return637 638 # Look it up in the starting locations array and639 # submit the given start location id640 startLocations = UoSocket.startLocations()641 642 for location in startLocations:643 if location[1] == selected or location[2] == selected:644 self.startLocation = location[0]645 break646 647 self.finalize()648649 """650 Finalize the character creation651 """652 def finalize(self):653 # Hide the entire dialog654 self.hideAll()655 656 # Create parameter list657 params = (self.name, self.gender == GENDER_FEMALE, self.strength, self.dexterity, self.intelligence,658 self.skill1, self.skill1Value, self.skill2, self.skill2Value, self.skill3, self.skill3Value, 659 self.skincolor, self.haircolor, self.facialhaircolor,660 HairstyleIds[self.hairstyle], FacialHairstyleIds[self.facialhairstyle], 661 self.startLocation, 0, self.shirtcolor, self.pantscolor)662 Network.createCharacter(params)663664 """665 Back + Next Button666 """667 def dialog3Next(self, dialog): 668 loginDialog = Gui.findByName("LoginDialog")669 dialog = loginDialog.findByName("CharacterCreation3")670 self.name = dialog.findByName("NameTextfield").text671 672 # Check the name673 if len(self.name) < 2:674 dialog.visible = False 675 self.showError(Localization.get(3000612), "CharacterCreation3") # Your character name is too short.676 return677 678 # Check if the name is valid679 if not isValidName(self.name):680 dialog.visible = False681 self.showError(Localization.get(3000611), "CharacterCreation3") # Your character name is too short.682 return683 684 startLocations = UoSocket.startLocations()685 686 # If there is only one start location or if we're chosing a template,687 # jump directly into the game688 if len(startLocations) == 1 or CharacterTemplates[self.profession][CTINDEX_NAME] != 'Advanced':689 self.startLocation = random(0, len(startLocations)-1)690 self.finalize()691 else:692 loginDialog = Gui.findByName("LoginDialog")693 loginDialog.findByName("CharacterCreation3").visible = False694 loginDialog.findByName("CharacterCreation4").visible = True695696 def dialog3Back(self, dialog):697 loginDialog = Gui.findByName("LoginDialog")698 loginDialog.findByName("CharacterCreation3").visible = False699 700 # Advanced Profession701 if self.profession == len(CharacterTemplates) - 1:702 loginDialog.findByName("CharacterCreation2").visible = True703 else:704 loginDialog.findByName("CharacterCreation1").visible = True705706 """707 The button for selecting the skin color has been pressed708 """709 def selectSkinTone(self, button):710 self.setDialog3Visibility(False)711 712 dialog = Gui.findByName("CharacterCreation3")713 dialog.findByName("SkinColorPicker").visible = True714715 """716 The button for selecting the shirt color has been pressed717 """718 def selectShirtColor(self, button):719 self.setDialog3Visibility(False)720 721 dialog = Gui.findByName("CharacterCreation3")722 dialog.findByName("ClothColorPicker").visible = True723 self.selectingColor = 'shirt' # Remember what we're picking the color for724725 """726 The button for selecting the pants color has been pressed727 """728 def selectPantsColor(self, button):729 self.setDialog3Visibility(False)730 731 dialog = Gui.findByName("CharacterCreation3")732 dialog.findByName("ClothColorPicker").visible = True733 self.selectingColor = 'pants' # Remember what we're picking the color for734735 """736 This gets triggered when a skin color is selected.737 """738 def skinToneSelected(self, color):739 self.setSkinColor(color)740 741 # Hide the skin color picker742 dialog = Gui.findByName("CharacterCreation3")743 dialog.findByName("SkinColorPicker").visible = False744 745 # Show all other controls746 self.setDialog3Visibility(True)747 748 """749 This gets triggered when a hair color is selected.750 """751 def hairColorSelected(self, color):752 if self.selectingColor == 'hair':753 self.setHairColor(color)754 elif self.selectingColor == 'facial':755 self.setFacialHairColor(color)756 757 # Hide the skin color picker758 dialog = Gui.findByName("CharacterCreation3")759 dialog.findByName("HairColorPicker").visible = False760 761 # Show all other controls762 self.setDialog3Visibility(True) 763764 """765 This gets triggered when a cloth color is selected.766 """767 def clothColorSelected(self, color):768 if self.selectingColor == 'shirt':769 self.setShirtColor(color)770 elif self.selectingColor == 'pants':771 self.setPantsColor(color)772 773 # Hide the cloth color picker774 dialog = Gui.findByName("CharacterCreation3")775 dialog.findByName("ClothColorPicker").visible = False776 777 # Show all other controls778 self.setDialog3Visibility(True)779 780 """781 Hide or show the contents of dialog 3782 """783 def setDialog3Visibility(self, visibility):784 dialog = Gui.findByName("CharacterCreation3")785 ids = ("MaleButton", "FemaleButton", "ShirtColorButton", "PantsColorButton", "SkinToneButton", "HairStyle", "HairColorButton", "FacialHairStyle", "FacialHairColorButton")786 for id in ids:787 ctrl = dialog.findByName(id)788 ctrl.visible = visibility789790 """791 Change one of the characters skills (1, 2 or 3)792 """793 def setSkillValue(self, skill, value, dontnormalize = False):794 if self.normalizingSkills and not dontnormalize:795 return796 797 loginDialog = Gui.findByName("LoginDialog")798 799 # Update the scrollbar800 scroller = loginDialog.findByName("SkillScroller%u" % skill)801 if scroller.pos != value:802 scroller.pos = value803 804 # Update the label805 label = loginDialog.findByName("SkillLabel%u" % skill)806 label.text = str(value)807 808 # Save strength809 if skill == 1:810 self.skill1 = value811 elif skill == 2:812 self.skill2 = value813 elif skill == 3:814 self.skill3 = value 815 816 if not dontnormalize:817 self.normalizeSkills(skill)818819 """820 Change the character strength821 """822 def setStrength(self, strength, dontnormalize = False):823 loginDialog = Gui.findByName("LoginDialog")824 825 # Update the scrollbar826 strengthScroller = loginDialog.findByName("StrengthScroller")827 if strengthScroller.pos != strength:828 strengthScroller.pos = strength829 830 # Update the label831 strengthLabel = loginDialog.findByName("StrengthLabel")832 strengthLabel.text = strength833 834 # Save strength835 self.strength = strength836 837 if not dontnormalize:838 self.normalizeStats(0)839 840 """841 Change the character dexterity842 """843 def setDexterity(self, dexterity, dontnormalize = False):844 loginDialog = Gui.findByName("LoginDialog")845 846 # Update the scrollbar847 dexterityScroller = loginDialog.findByName("DexterityScroller")848 if dexterityScroller.pos != dexterity:849 dexterityScroller.pos = dexterity850 851 # Update the label852 dexterityLabel = loginDialog.findByName("DexterityLabel")853 dexterityLabel.text = dexterity854 855 # Save dexterity856 self.dexterity = dexterity857 858 if not dontnormalize:859 self.normalizeStats(1)860 861 """862 Change the character intelligence863 """864 def setIntelligence(self, intelligence, dontnormalize = False):865 loginDialog = Gui.findByName("LoginDialog")866 867 # Update the scrollbar868 intelligenceScroller = loginDialog.findByName("IntelligenceScroller")869 if intelligenceScroller.pos != intelligence:870 intelligenceScroller.pos = intelligence871 872 # Update the label873 intelligenceLabel = loginDialog.findByName("IntelligenceLabel")874 intelligenceLabel.text = intelligence875 876 # Save intelligence877 self.intelligence = intelligence878 879 if not dontnormalize:880 self.normalizeStats(2)881 882 """883 If the statsum is greater than the maximum allowance, 884 reduce several stats.885 """886 def normalizeStats(self, excludeStat):887 # Temporary variables for str, dex, int888 strength = self.strength889 dexterity = self.dexterity890 intelligence = self.intelligence891 892 statsum = strength + dexterity + intelligence893 overflow = statsum - MAXIMUM_STATS894 895 if overflow > 0:896 # Exclude Strength897 if excludeStat == 0:898 if dexterity > intelligence:899 dexterity -= overflow900 if dexterity < MIN_STAT:901 intelligence -= MIN_STAT - dexterity902 dexterity = MIN_STAT 903 else:904 intelligence -= overflow;905 if intelligence < MIN_STAT:906 dexterity -= MIN_STAT - intelligence907 intelligence = MIN_STAT908 909 # Exclude Dexterity 910 elif excludeStat == 1:911 if strength > intelligence:912 strength -= overflow913 if strength < MIN_STAT:914 intelligence -= MIN_STAT - strength915 strength = MIN_STAT916 else:917 intelligence -= overflow918 if intelligence < MIN_STAT:919 strength -= MIN_STAT - intelligence920 intelligence = MIN_STAT921 922 # Exclude Intelligence923 elif excludeStat == 2:924 if strength > dexterity:925 strength -= overflow926 if strength < MIN_STAT:927 dexterity -= MIN_STAT - strength928 strength = MIN_STAT929 else:930 dexterity -= overflow931 if dexterity < MIN_STAT:932 strength -= MIN_STAT - dexterity933 dexterity = MIN_STAT934 elif overflow < 0:935 # Exclude Strength936 if excludeStat == 0:937 if dexterity < intelligence:938 dexterity -= overflow939 if dexterity < MIN_STAT:940 intelligence -= MIN_STAT - dexterity941 dexterity = MIN_STAT942 else:943 intelligence -= overflow;944 945 # Exclude Dexterity 946 elif excludeStat == 1:947 if strength < intelligence:948 strength -= overflow949 if strength < MIN_STAT:950 intelligence -= MIN_STAT - strength951 strength = MIN_STAT952 else:953 intelligence -= overflow954 955 # Exclude Intelligence956 elif excludeStat == 2:957 if strength < dexterity:958 strength -= overflow959 if strength < MIN_STAT:960 dexterity -= MIN_STAT - strength961 strength = MIN_STAT962 else:963 dexterity -= overflow964965 if strength != self.strength:966 self.setStrength(strength, True) # Set strength but dont normalize again967 if dexterity != self.dexterity:968 self.setDexterity(dexterity, True) # Set dexterity but dont normalize again969 if intelligence != self.intelligence:970 self.setIntelligence(intelligence, True) # Set intelligence but dont normalize again971 972 """973 If the skillsum is greater than the maximum allowance, 974 reduce several skills.975 """976 def normalizeSkills(self, excludeSkill):977 if self.normalizingSkills:978 return979 980 self.normalizingSkills = True981 982 # Temporary variables for str, dex, int983 skill1 = self.skill1984 skill2 = self.skill2985 skill3 = self.skill3986 987 statsum = skill1 + skill2 + skill3988 overflow = statsum - 100989990 if overflow > 0:991 # Exclude Skill1992 if excludeSkill == 1:993 if skill2 < skill3:994 skill2 -= overflow995 if skill2 < 0:996 skill3 -= 0 - skill2997 skill2 = 0998 else:999 skill3 -= overflow;1000 if skill3 < 0:1001 skill2 -= 0 - skill31002 skill3 = 01003 1004 # Exclude Skill2 1005 elif excludeSkill == 2:1006 if skill1 < skill3:1007 skill1 -= overflow1008 if skill1 < 0:1009 skill3 -= 0 - skill11010 skill1 = 01011 else:1012 skill3 -= overflow1013 if skill3 < 0:1014 skill1 -= 0 - skill31015 skill3 = 01016 1017 # Exclude Skill31018 elif excludeSkill == 3:1019 if skill1 < skill2:1020 skill1 -= overflow1021 if skill1 < 0:1022 skill2 -= 0 - skill11023 skill1 = 01024 else:1025 skill2 -= overflow1026 if skill2 < 0:1027 skill1 -= 0 - skill21028 skill2 = 01029 elif overflow < 0:1030 # Exclude Skill11031 if excludeSkill == 1:1032 if skill2 > skill3:1033 skill2 -= overflow1034 if skill2 > 50:1035 skill3 += skill2 - 501036 skill2 = 501037 else:1038 skill3 -= overflow;1039 if skill3 > 50:1040 skill2 += skill3 - 501041 skill3 = 501042 1043 # Exclude Skill2 1044 elif excludeSkill == 2:1045 if skill1 > skill3:1046 skill1 -= overflow1047 if skill1 > 50:1048 skill3 += skill1 - 501049 skill1 = 501050 else:1051 skill3 -= overflow1052 if skill3 > 50:1053 skill1 += skill3 - 501054 skill3 = 501055 1056 # Exclude Skill31057 elif excludeSkill == 3:1058 if skill1 > skill2:1059 skill1 -= overflow1060 if skill1 > 50:1061 skill2 += skill1 - 501062 skill1 = 501063 else:1064 skill2 -= overflow1065 if skill2 > 50:1066 skill1 += skill2 - 501067 skill2 = 501068 1069 if skill1 != self.skill1:1070 self.setSkillValue(1, skill1, True) # Set skill1 but dont normalize again1071 if skill2 != self.skill1:1072 self.setSkillValue(2, skill2, True) # Set skill2 but dont normalize again1073 if skill3 != self.skill3:1074 self.setSkillValue(3, skill3, True) # Set skill3 but dont normalize again 10751076 self.normalizingSkills = False10771078# Create the Character Creation context 1079context = Context()10801081def initialize(dialog):1082 global context1083 if dialog.objectName == "CharacterCreation1":1084 context.setupDialog1(dialog)1085 connect(LoginDialog, "showCharacterCreation()", context.showFirst)1086 connect(LoginDialog, "hideCharacterCreation()", context.hideAll)1087 elif dialog.objectName == "CharacterCreation2":1088 context.setupDialog2(dialog)1089 elif dialog.objectName == "CharacterCreation3":1090 context.setupDialog3(dialog)1091 elif dialog.objectName == "CharacterCreation4":
...
findby_name.py
Source:findby_name.py
1# coding: utf-82from __future__ import absolute_import3from datetime import date, datetime # noqa: F4014from typing import List, Dict # noqa: F4015from swagger_server.models.base_model_ import Model6from swagger_server import util7class FindbyName(Model):8 """NOTE: This class is auto generated by the swagger code generator program.9 Do not edit the class manually.10 """11 def __init__(self, _date: datetime=None, orph_acode: int=None, preferred_term: str=None): # noqa: E50112 """FindbyName - a model defined in Swagger13 :param _date: The _date of this FindbyName. # noqa: E50114 :type _date: datetime15 :param orph_acode: The orph_acode of this FindbyName. # noqa: E50116 :type orph_acode: int17 :param preferred_term: The preferred_term of this FindbyName. # noqa: E50118 :type preferred_term: str19 """20 self.swagger_types = {21 '_date': datetime,22 'orph_acode': int,23 'preferred_term': str24 }25 self.attribute_map = {26 '_date': 'Date',27 'orph_acode': 'ORPHAcode',28 'preferred_term': 'Preferred term'29 }30 self.__date = _date31 self._orph_acode = orph_acode32 self._preferred_term = preferred_term33 @classmethod34 def from_dict(cls, dikt) -> 'FindbyName':35 """Returns the dict as a model36 :param dikt: A dict.37 :type: dict38 :return: The FindbyName of this FindbyName. # noqa: E50139 :rtype: FindbyName40 """41 return util.deserialize_model(dikt, cls)42 @property43 def _date(self) -> datetime:44 """Gets the _date of this FindbyName.45 :return: The _date of this FindbyName.46 :rtype: datetime47 """48 return self.__date49 @_date.setter50 def _date(self, _date: datetime):51 """Sets the _date of this FindbyName.52 :param _date: The _date of this FindbyName.53 :type _date: datetime54 """55 self.__date = _date56 @property57 def orph_acode(self) -> int:58 """Gets the orph_acode of this FindbyName.59 :return: The orph_acode of this FindbyName.60 :rtype: int61 """62 return self._orph_acode63 @orph_acode.setter64 def orph_acode(self, orph_acode: int):65 """Sets the orph_acode of this FindbyName.66 :param orph_acode: The orph_acode of this FindbyName.67 :type orph_acode: int68 """69 self._orph_acode = orph_acode70 @property71 def preferred_term(self) -> str:72 """Gets the preferred_term of this FindbyName.73 :return: The preferred_term of this FindbyName.74 :rtype: str75 """76 return self._preferred_term77 @preferred_term.setter78 def preferred_term(self, preferred_term: str):79 """Sets the preferred_term of this FindbyName.80 :param preferred_term: The preferred_term of this FindbyName.81 :type preferred_term: str82 """...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!