Developer Store
Support
Member Forums

Screenshots
FAQ
Documentation
License
Known Issues
Downloads

MMOWorkshop.com Store Opened!
Torque MMO Kit - Open Sourced!
Torque MMO Kit - 1.5.2 Port Alpha Test
Torque MMO Kit - OSX Status

GarageGames.com irc.prairiegames.com
#mmoworkshop

PyTorque
TGB Web Browser


Boaal

J.C. Smith - The Repopulation - 0.0.4.3 Build Notes
xapken - Renaming RealmLords
Wolf Dreamer - Vista users how to do it
mpratt - MMO Game
foodstamp - Another Day Another Step Accomplished
hallsofvalhalla - After a long epiphany
Leathel - FoHO pre-Alpha 2.42
OldRod - More Musings on the MMO Industry
... MORE BLOGS!

Making a singleplayer map access...
Indoor environments
How to make a pet spell, as requ...
Atlas, Legacy, Megaterrains, Get...
Quest Remnants of Chaos
making a database call for a pla...
TGEA kit GuiControlProfile issue...
Followed the tutorials, but no s...
fxShapeReplicator (how much is t...
TGEA 1.7.1 kit
Show
Ignore:
Timestamp:
07/11/08 06:46:18 (6 months ago)
Author:
Llarlen
Message:
  • Bringing experimental branch up to date with testing branch.
  • All mission's waterblocks are now prepared for TMK features.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/games/minionsofmirth/v1/experimental/new-stuff/genesis/dialog/paladinepic.py

    r811 r1614  
    1  
    21from mud.world.defines import * 
    32from genesis.dbdict import * 
    43from mud.world.spawn import SpawnSoundProfile 
    54from mud.world.item import ItemSoundProfile 
    6  
     5from mud.world.battle import BattleGroup,BattleSequence,BattleResult,BattleMustSurvive,BattleProto 
    76 
    87#+++ Contents - Updated 11/3/07 - Citrine 
    98#               Added a suppress casting spell to Chask 
    10  
    11  
     9#             - Updated 1/28/08 - Citrine 
     10#               Moved Shirecraft Epaulette and Shirecraft Cloak to \genesis\item\prestige\halfling.py 
     11 
     12#             - Updated 1/28/08 - Citrine 
     13#               changed one proc on kauldur's recompense from melee to damaged 
     14 
     15 
     16endDialog = DBDialogAction() 
     17endDialog.endInteraction = True 
     18 
     19despawnNPC = DBDialogAction() 
     20despawnNPC.despawn = True 
     21 
     22attackPlayer = DBDialogAction() 
     23attackPlayer.attack = True 
     24 
     25checkCounterattakPlan = DBDialogAction() 
     26checkCounterattakPlan.addCheckItem("Counterattack Plan") 
     27takeCounterattackPlan = DBDialogAction() 
     28takeCounterattackPlan.addTakeItem("Counterattack Plan") 
     29 
     30giveNoteFromSashaan = DBDialogAction() 
     31giveNoteFromSashaan.addGiveItem("Note from Sashaan") 
     32checkNoteFromSashaan = DBDialogAction() 
     33checkNoteFromSashaan.addCheckItem("Note from Sashaan") 
     34takeNoteFromSashaan = DBDialogAction() 
     35takeNoteFromSashaan.addTakeItem("Note from Sashaan") 
     36 
     37giveKauldursRecompense = DBDialogAction() 
     38giveKauldursRecompense.addGiveItem("Kauldur's Recompense") 
    1239 
    1340#---------------------PART ONE 
     
    10231050item.bitmap = "STUFF/65" 
    10241051item.flags = RPG_ITEM_SOULBOUND 
     1052item.itemClassifiers = ['Key'] 
    10251053 
    10261054#--- Shneer Key 
     
    10291057item.bitmap = "STUFF/65" 
    10301058item.flags = RPG_ITEM_SOULBOUND 
     1059item.itemClassifiers = ['Key'] 
    10311060 
    10321061#--- Murmur Ring 
     
    11551184item.flags = RPG_ITEM_SOULBOUND 
    11561185 
    1157 #--- Shirecraft Cloak 
    1158 item = DBItemProto(name = "Shirecraft Cloak") 
    1159 item.flags = RPG_ITEM_SOULBOUND|RPG_ITEM_UNIQUE|RPG_ITEM_ARTIFACT 
    1160 item.skill="Light Armor" 
    1161 item.addRace("Halfling") 
    1162 item.level = 40 
    1163 item.armor = 40 
    1164 item.bitmap = "EQUIPMENT/BACK/9" 
    1165 item.slots = (RPG_SLOT_BACK,) 
    1166 item.addStat("str",15) 
    1167 item.addStat("dex",25) 
    1168 item.addStat("ref",25) 
    1169 item.addStat("bdy",35) 
    1170 item.addStat("agi",15) 
    1171 item.addStat("size",.1) 
    1172  
    1173 #--- Shirecraft Epaulette 
    1174 item = DBItemProto(name = "Shirecraft Epaulette") 
    1175 item.flags = RPG_ITEM_SOULBOUND|RPG_ITEM_UNIQUE|RPG_ITEM_ARTIFACT 
    1176 item.skill="Light Armor" 
    1177 item.addRace("Halfling") 
    1178 item.armor = 40 
    1179 item.level = 40 
    1180 item.bitmap = "EQUIPMENT/SHOULDERS/6" 
    1181 #bitmap is yech, but only shoulder bitmap available! 
    1182 item.slots = (RPG_SLOT_SHOULDERS,) 
    1183 item.addStat("str",15) 
    1184 item.addStat("dex",25) 
    1185 item.addStat("ref",25) 
    1186 item.addStat("bdy",35) 
    1187 item.addStat("agi",15) 
    1188 item.addStat("size",.1) 
    11891186 
    11901187 
     
    12581255ploot.addItem("Reverential Arms",RPG_FREQ_UNCOMMON) 
    12591256ploot.addItem("Reverential Shield",RPG_FREQ_UNCOMMON) 
     1257ploot.addItem("Protector's Chest", RPG_FREQ_UNCOMMON) 
     1258ploot.addItem("Protector's Boots", RPG_FREQ_UNCOMMON) 
     1259ploot.addItem("Protector's Legs", RPG_FREQ_UNCOMMON) 
     1260ploot.addItem("Protector's Gloves", RPG_FREQ_UNCOMMON) 
     1261ploot.addItem("Protector's Arms", RPG_FREQ_UNCOMMON) 
     1262ploot.addItem("Protector's Cloak", RPG_FREQ_RARE) 
     1263ploot.addItem("Protector's Belt", RPG_FREQ_RARE) 
     1264ploot.addItem("Protector's Shield", RPG_FREQ_RARE) 
    12601265spawn.loot = ploot 
    12611266spawn.dialog = "Hollen Nembersham" 
     
    12911296ploot.addItem("Shirecraft Epaulette",RPG_FREQ_UNCOMMON) 
    12921297ploot.addItem("Shirecraft Shield",RPG_FREQ_RARE) 
     1298ploot.addItem("Protector's Chest", RPG_FREQ_UNCOMMON) 
     1299ploot.addItem("Protector's Boots", RPG_FREQ_UNCOMMON) 
     1300ploot.addItem("Protector's Legs", RPG_FREQ_UNCOMMON) 
     1301ploot.addItem("Protector's Gloves", RPG_FREQ_UNCOMMON) 
     1302ploot.addItem("Protector's Arms", RPG_FREQ_UNCOMMON) 
     1303ploot.addItem("Protector's Cloak", RPG_FREQ_RARE) 
     1304ploot.addItem("Protector's Belt", RPG_FREQ_RARE) 
     1305ploot.addItem("Protector's Shield", RPG_FREQ_RARE) 
    12931306spawn.loot = ploot 
    12941307spawn.dialog  = "Muldin Fanglow" 
     
    13241337ploot.addItem("Shirecraft Epaulette",RPG_FREQ_UNCOMMON) 
    13251338ploot.addItem("Shirecraft Shield",RPG_FREQ_RARE) 
     1339ploot.addItem("Protector's Chest", RPG_FREQ_UNCOMMON) 
     1340ploot.addItem("Protector's Boots", RPG_FREQ_UNCOMMON) 
     1341ploot.addItem("Protector's Legs", RPG_FREQ_UNCOMMON) 
     1342ploot.addItem("Protector's Gloves", RPG_FREQ_UNCOMMON) 
     1343ploot.addItem("Protector's Arms", RPG_FREQ_UNCOMMON) 
     1344ploot.addItem("Protector's Cloak", RPG_FREQ_RARE) 
     1345ploot.addItem("Protector's Belt", RPG_FREQ_RARE) 
     1346ploot.addItem("Protector's Shield", RPG_FREQ_RARE) 
    13261347spawn.loot = ploot 
    13271348spawn.dialog = "Lunda Hokness" 
     
    16571678action.journalTopic = "Paladin Epic, Part II" 
    16581679action.journalEntry = "Part A: The Ghost" 
    1659 action.journalText = "Seek the Ghost of Mendrik Orskillen, who appears just before dawn on a small patch of stone near the steps to Zharim." 
     1680action.journalText = "Seek the Ghost of Mendrik, who appears just before dawn on a small patch of stone near the steps to Zharim." 
    16601681 
    16611682action2 = DBDialogAction() 
     
    23032324dialog = DBDialog(name="Mendrik Orskillen Main",greeting = DBDialogLine(text = "Leave me be.\\n")) 
    23042325modialog = DBDialog.getDBDialog('Mendrik Orskillen') 
    2305 tujdialog = DBDialog.getDBDialog("Tales Untold J") 
     2326#tujdialog = DBDialog.getDBDialog("Tales Untold J") 
    23062327dialog.addDialog(modialog) 
    2307 dialog.addDialog(tujdialog) 
     2328#dialog.addDialog(tujdialog) 
    23082329 
    23092330#--- Tassuk Garran 
     
    23432364ploot = DBLootProto() 
    23442365ploot.addItem("Tassuk Skull",RPG_FREQ_ALWAYS) 
     2366ploot.addItem("Titan Shards", RPG_FREQ_COMMON) 
    23452367spawn.loot = ploot 
    23462368 
     
    23642386spawn.textureLegs = "LEGS/LEGS31" 
    23652387spawn.desc = "Former Paladins of House Tutherrek, Ruin Knights have followed Tassuk Garran on his passage to darkness." 
     2388loot = DBLootProto() 
     2389loot.addItem("Titan Shards", RPG_FREQ_COMMON) 
     2390loot.addItem("Cataclysmic Chestplate",RPG_FREQ_UNCOMMON) 
     2391loot.addItem("Cataclysmic Vambraces",RPG_FREQ_UNCOMMON) 
     2392loot.addItem("Cataclysmic Legs",RPG_FREQ_UNCOMMON) 
     2393loot.addItem("Cataclysmic Gauntlets",RPG_FREQ_UNCOMMON) 
     2394loot.addItem("Cataclysmic Boots",RPG_FREQ_UNCOMMON) 
     2395loot.addItem("Cataclysmic Cloak",RPG_FREQ_UNCOMMON) 
     2396loot.addItem("Cataclysmic Belt",RPG_FREQ_UNCOMMON) 
     2397loot.addItem("Cataclysmic Shield",RPG_FREQ_UNCOMMON) 
     2398spawn.loot = loot 
     2399 
    23662400 
    23672401#--- Athka Sker 
     
    23962430ploot.addItem("Stonemaster's Greaves", RPG_FREQ_UNCOMMON) 
    23972431ploot.addItem("Stonemaster's Shield", RPG_FREQ_RARE) 
     2432ploot.addItem("Titan Shards", RPG_FREQ_COMMON) 
    23982433spawn.loot = ploot 
    23992434 
     
    24082443ploot.addItem("Reverential Boots",RPG_FREQ_UNCOMMON) 
    24092444ploot.addItem("Reverential Shield",RPG_FREQ_UNCOMMON) 
     2445ploot.addItem("Titan Shards", RPG_FREQ_COMMON) 
    24102446spawn.loot = ploot 
    24112447 
     
    24342470ploot.addItem("Reverential Shield",RPG_FREQ_UNCOMMON) 
    24352471ploot.addItem("Scroll of Suppression",RPG_FREQ_UNCOMMON) 
     2472ploot.addItem("Titan Shards", RPG_FREQ_COMMON) 
    24362473spawn.loot = ploot 
    24372474spawn.desc = "Ummun Dro Guthek is the stoic leader of the Paladins of House Tutherrek." 
     
    25612598req.addClassRequirement(True,'Paladin',50) 
    25622599 
     2600req2 = DBDialogRequirement() 
     2601req2.requireLevel = 30 
     2602 
    25632603action = DBDialogAction() 
    25642604action.addCheckItem("Hurgeon Coin") 
     
    26422682choice6.maxBump = True 
    26432683 
     2684action6 = DBDialogAction() 
     2685action6.attack = True 
     2686 
     2687choice8 = DBDialogChoice(text = "He's not joking.") 
     2688choice8.successLine = DBDialogLine(text = "How dare you threaten me!") 
     2689choice8.successLine.addAction(action6) 
     2690 
     2691action5 = DBDialogAction() 
     2692action5.addCheckItem("Note to Greftum") 
     2693 
     2694choice7 = DBDialogChoice(text = "Shelton Hale would like to be left alone.") 
     2695choice7.successLine = DBDialogLine(text = """\\nOh, look at this note. He is such a joker.\\n""") 
     2696choice7.successLine.addChoice(choice8) 
     2697choice7.successLine.addAction(action5) 
     2698choice7.addRequirement(req2) 
     2699 
    26442700dialog = DBDialog() 
    26452701dialog.name = "Greftum Humbottom I" 
    26462702dialog.greeting = DBDialogLine(text = "Begone! I'm a Troll, I tell you, a Troll! Grrr! Grrrr! Grrrrrrrrrrrr!\\n") 
     2703dialog.greeting.addChoice(choice7) 
    26472704dialog.greeting.addChoice(choice6) 
    26482705dialog.greeting.addChoice(choice5) 
     
    26712728action3.journalEntry = "Part U: Oshune Kahm" 
    26722729action3.journalText = "This part of your journey is complete. Take these plans to Oshune Kahm of the Paladin Defenders in Anidaen Forest and prepare for battle." 
     2730 
     2731endPartV = DBDialogAction() 
     2732endPartV.journalTopic = "Paladin Epic, Part III" 
     2733endPartV.journalEntry = "Part V: Note from Sashaan" 
     2734endPartV.journalText = "Your Epic journey is complete...for now." 
    26732735 
    26742736choice3 = DBDialogChoice(text = "I shall do as you ask.") 
     
    27062768choice4.maxBump = True 
    27072769 
     2770choice8 = DBDialogChoice(text = "Take the Shield.") 
     2771choice8.successLine = DBDialogLine(text = """Your tasks are complete...for now. Farewell!""") 
     2772choice8.successLine.addAction(takeNoteFromSashaan) 
     2773choice8.successLine.addAction(giveKauldursRecompense) 
     2774choice8.successLine.addAction(endPartV) 
     2775choice8.successLine.addAction(endDialog) 
     2776choice8.identifier = "Himmorlian Chask End" 
     2777choice8.maxTimes = 1 
     2778choice8.maxBump = True 
     2779choice8.hideOnMaxBump = True 
     2780 
     2781choice6 = DBDialogChoice(text = "I have a note from Sashaan the Mother.") 
     2782choice6.successLine = DBDialogLine(text = """\\nWell done, mortal you have not failed  
     2783me...you have not failed yourself. Those Doom Knight Holds will think again before they  
     2784attempt such a feat.\\n\\nYes. I did promise you a reward, something worthy of such a  
     2785deed and befitting a Paladin of your strength and honor. Take this shield, it has seen  
     2786much use but its strength and integrity matches that of your own.\\n""") 
     2787choice6.successLine.addChoice(choice8) 
     2788 
     2789choice7 = DBDialogChoice(text = "I have no proof.") 
     2790choice7.successLine = DBDialogLine(text = """(Himmorlian Chask fills with rage) Then you  
     2791shall feel my retribution!""") 
     2792choice7.successLine.addAction(attackPlayer) 
     2793 
     2794choice5 = DBDialogChoice(text = "The battle is complete.") 
     2795choice5.successLine = DBDialogLine(text = """\\nAnd what proof do you have that my wife  
     2796is safe? Pray - mortal - that you have proof or the degree of your suffering will be  
     2797beyond your comprehension.\\n""") 
     2798choice5.successLine.addChoice(choice6) 
     2799choice5.successLine.addChoice(choice7) 
     2800choice5.successLine.addAction(checkNoteFromSashaan) 
     2801choice5.addRequirement(req) 
     2802choice5.identifier = "Himmorlian Chask End" 
     2803choice5.maxTimes = 1 
     2804choice5.hideOnMaxBump = True 
     2805 
    27082806dialog = DBDialog() 
    27092807dialog.name = "Himmorlian Chask I" 
    27102808dialog.greeting = DBDialogLine(text = "I do not mean to be rude, but I am a very busy man.\\n") 
     2809dialog.greeting.addChoice(choice5) 
    27112810dialog.greeting.addChoice(choice) 
    27122811dialog.greeting.addChoice(choice4) 
     
    30773176action = DBDialogAction() 
    30783177action.addTakeItem("Hurgeon Coin") 
     3178action.addCheckItem("K Note 2") 
    30793179action.givePlatinum = 1000 
    30803180action.addGiveItem("Hurgeon Title") 
     
    31663266 
    31673267dialog = DBDialog() 
    3168 dialog.name = "Mukkstrose Vemnim
     3268dialog.name = "Gnome Assassins
    31693269dialog.greeting = DBDialogLine(text = "I have important business here!\\n") 
    31703270dialog.greeting.addChoice(choice4) 
     
    32763376dialog.greeting.addChoice(choice5) 
    32773377dialog.greeting.addChoice(choice) 
     3378 
     3379#-------------------------Oshune Kahm 
     3380triggerPaladinEpicBattle = DBDialogAction() 
     3381triggerPaladinEpicBattle.triggerBattle = "PaladinEpicBattle" 
     3382triggerPaladinEpicBattle.despawn = 15 * durMinute 
     3383triggerPaladinEpicBattle.endInteraction = True 
     3384 
     3385choice1 = DBDialogChoice(text = "I am ready for battle.") 
     3386choice1.successLine = DBDialogLine(text = """To Arms!""") 
     3387choice1.successLine.addAction(triggerPaladinEpicBattle) 
     3388 
     3389choice2 = DBDialogChoice(text = "I am not ready for battle.") 
     3390choice2.successLine = DBDialogLine(text = """Do not delay for too long.""") 
     3391choice2.successLine.addAction(endDialog) 
     3392 
     3393choice = DBDialogChoice(text = "I was given this plan.") 
     3394choice.successLine = DBDialogLine(text = """\\nThen let it be done. Galeel's forces have  
     3395been gathering. From this place I have been watching the Doom Hold Knights gather, over  
     3396there, beyond those trees. We are outnumbered but our faith is strong. Are you prepared  
     3397for battle? Now is the time for we have the element of surprise on our side.\\n""") 
     3398choice.successLine.addAction(checkCounterattakPlan) 
     3399choice.successLine.addChoice(choice1) 
     3400choice.successLine.addChoice(choice2) 
     3401 
     3402choice3 = DBDialogChoice(text = "I have no news.") 
     3403choice3.successLine = DBDialogLine(text = """Then pray for us.""") 
     3404choice3.successLine.addAction(endDialog) 
     3405 
     3406dialog = DBDialog() 
     3407dialog.name = "Paladin Epic - Oshune Kahm" 
     3408dialog.greeting = DBDialogLine(text = "What news do you bring?\\n") 
     3409dialog.greeting.addChoice(choice) 
     3410dialog.greeting.addChoice(choice3) 
     3411 
     3412#-------------------------Sashaan the Mother 
     3413endPartU = DBDialogAction() 
     3414endPartU.journalTopic = "Paladin Epic, Part III" 
     3415endPartU.journalEntry = "Part U: Oshune Kahm" 
     3416endPartU.journalText = "Completed!" 
     3417 
     3418addPartV = DBDialogAction() 
     3419addPartV.journalTopic = "Paladin Epic, Part III" 
     3420addPartV.journalEntry = "Part V: Note from Sashaan" 
     3421addPartV.journalText = "Deliver the note to Himmorlian Chask." 
     3422 
     3423 
     3424choice3 = DBDialogChoice(text = "I will deliver the note.") 
     3425choice3.successLine = DBDialogLine(text = """Farewell my child - Faith be with you.""") 
     3426choice3.successLine.addAction(takeCounterattackPlan) 
     3427choice3.successLine.addAction(giveNoteFromSashaan) 
     3428choice3.successLine.addAction(endPartU) 
     3429choice3.successLine.addAction(addPartV) 
     3430choice3.successLine.addAction(despawnNPC) 
     3431choice3.identifier = "Sashaan Post Battle" 
     3432choice3.maxTimes = 1 
     3433choice3.maxBump = True 
     3434choice3.hideOnMaxBump = True 
     3435 
     3436 
     3437choice2 = DBDialogChoice(text = "I'm confused.") 
     3438choice2.successLine = DBDialogLine(text = """\\nPlease do not think your toil was in vain   
     3439and that you were a simple pawn in a divine game. You have rid the land of evil and furthered  
     3440*my* cause, it is in this deed that I am very grateful. Also my child, you are a messenger  
     3441of love. You are a gift given to me by my beloved. Can you fathom a greater purpose in  
     3442your mortal life than to be a messenger of Love from one divine to another?\\n\\nIn proving  
     3443your honor, strength, and above all - your faith in my Mother: The Lady of Light - I may  
     3444have a need to call upon you one day to further aid me.\\n\\nWatch and listen for a sign  
     3445- you will know when it is time to seek me and you will know where to find me.\\n""") #hints at future Sashaan driven quests 
     3446choice2.successLine.addChoice(choice3) 
     3447 
     3448choice1 = DBDialogChoice(text = "I'm not worthy to be in your presence.") 
     3449choice1.successLine = DBDialogLine(text = """\\nYou have fought with honor and valor my  
     3450child. It makes me glad to see that there is such good in this world. My husband sent  
     3451you to save me, I assume that is what he told you. But I never truly feared for my  
     3452divine life, only this mortal shell would perish had the Trolls been successful in their  
     3453plans; he knows this and so now do you. It is in these jestures that he shows his love  
     3454for me for it seems that is the only way he knows to show his Love, and I will accept it.  
     3455There is good in him - there is love in him - there is hope. Please take this letter to  
     3456my beloved, it is proof that you have fulfilled your deed and I have no doubt that he  
     3457will look upon you with favor.\\n""") 
     3458choice1.successLine.addAction(checkCounterattakPlan) 
     3459choice1.addRequirement(req) 
     3460choice1.successLine.addChoice(choice2) 
     3461choice1.identifier = "Sashaan Post Battle" 
     3462choice1.maxTimes = 1 
     3463choice1.hideOnMaxBump = True 
     3464 
     3465choice1A = DBDialogChoice(text = "It was nice meeting you.") 
     3466choice1A.successLine = DBDialogLine(text = """Farewell my child.""") 
     3467choice1A.successLine.addAction(despawnNPC) 
     3468 
     3469choice = DBDialogChoice(text = "You are Sashaan?") 
     3470choice.successLine = DBDialogLine(text = """\\nYes. I am the Mother of the Elves.\\n""") 
     3471choice.successLine.addChoice(choice1) 
     3472choice.successLine.addChoice(choice1A) 
     3473 
     3474dialog = DBDialog() 
     3475dialog.name = "Paladin Epic - Sashaan the Mother" 
     3476dialog.greeting = DBDialogLine(text = "Speak my child.\\n") 
     3477dialog.greeting.addChoice(choice) 
     3478 
     3479#--- Oshune Kahm 
     3480spawn = DBSpawn() 
     3481spawn.name = "Oshune Kahm" 
     3482spawn.pclass = "Paladin" 
     3483spawn.plevel = 50 
     3484spawn.sclass = "Cleric" 
     3485spawn.slevel = 50 
     3486spawn.tclass = "Revealer" 
     3487spawn.tlevel = 50 
     3488spawn.race = "Human" 
     3489spawn.sex = "Male" 
     3490spawn.flags = RPG_SPAWN_UNIQUE 
     3491spawn.realm = RPG_REALM_LIGHT 
     3492spawn.isMonster = False 
     3493spawn.radius = 2  
     3494spawn.scale = 1.3 
     3495spawn.aggroRange = 20 
     3496spawn.addStat("healthMod" , 70) 
     3497spawn.textureArms = "ARMS/ARMS42" 
     3498spawn.textureLegs = "LEGS/LEGS43" 
     3499spawn.textureBody = "BODY/BODY44" 
     3500spawn.textureHands = "HANDS/HANDS43" 
     3501spawn.textureFeet = "FEET/FEET43" 
     3502spawn.desc = "The Captain of the Paladin Defenders, Oshune Kahm is both feared and revered." 
     3503spawn.dialog = "Paladin Epic - Oshune Kahm" 
     3504 
     3505OK = DBSpawnInfo(spawn="Oshune Kahm", startTime=20, endTime=6) 
     3506sg = DBSpawnGroup(zone="anidaenforest",groupName="OSHUNEKAHM") 
     3507sg.addSpawnInfo(OK) 
     3508 
    32783509 
    32793510#--- Lubrote Tand 
     
    33753606effect.leechType = 'health' 
    33763607effect.leechTick = 100 
    3377 effect.leechTickRate = 60 #10 seconds 
     3608effect.leechTickRate = durSecond * 10 
    33783609effect.drainType = 'health' 
    33793610effect.drainTick = 100 
    3380 effect.drainTickRate = 60 #10 seconds 
     3611effect.drainTickRate = durSecond * 10 
    33813612spell = DBSpellProto(name="Dissonance Health Leech") 
    33823613spell.iconDst = "SPELLICON_1_29" 
     
    35473778spell.name = "Death Dance" 
    35483779spell.target = RPG_TARGET_SELF 
    3549 spell.duration = 6*15 #15 seconds 
     3780spell.duration = durSecond * 15 
    35503781spell.castTime = 0 
    35513782spell.harmful = False 
     
    36543885item.flags = RPG_ITEM_SOULBOUND 
    36553886 
     3887#--- Note from Sashaan 
     3888item = DBItemProto(name="Note from Sashaan") 
     3889item.desc = "This sheet of parchment appears to be blank, however it does have a gentle glow about it." 
     3890item.bitmap = "STUFF/2" 
     3891item.flags = RPG_ITEM_SOULBOUND | RPG_ITEM_QUEST 
     3892item.light = 2 #has no effect other than RP value 
     3893 
    36563894#--- Kexxe Assassination 
    36573895item = DBItemProto(name="Kexxe Assassination") 
     
    40454283effect.leechType = 'health' 
    40464284effect.leechTick = 300 
    4047 effect.leechTickRate = 60 #10 seconds 
     4285effect.leechTickRate = durSecond * 10 
    40484286effect.drainType = 'health' 
    40494287effect.drainTick = 300 
    4050 effect.drainTickRate = 60 #10 seconds 
     4288effect.drainTickRate = durSecond * 10 
    40514289spell = DBSpellProto(name="Alaashiim Leech") 
    40524290spell.iconDst = "SPELLICON_1_29" 
     
    40554293spell.particleBegin = "ChimneyFireEmitter" 
    40564294spell.target = RPG_TARGET_OTHER 
    4057 spell.duration = 6*30 
     4295spell.duration = durSecond * 30 
    40584296spell.castTime = 0 
    40594297spell.harmful = True 
     
    40824320item.addSpell("Alaashiim Leech",RPG_ITEM_TRIGGER_MELEE,0) 
    40834321 
     4322#--- Kauldurs Recompense effects/affects 
     4323 
     4324#--- Galeel's Blessing 
     4325effect = DBEffectProto(name = "Galeel's Blessing") 
     4326effect.addStat(RPG_EFFECT_STAGE_GLOBAL,"health",3500) 
     4327spell = DBSpellProto() 
     4328spell.name = "Galeel's Blessing" 
     4329spell.particleBegin = "ChimneyFireEmitter" 
     4330spell.particleTextureBegin = "starofchaos" 
     4331spell.target = RPG_TARGET_ALLIANCE 
     4332spell.aoeRange = 0 
     4333spell.castRange = 0 
     4334spell.castTime = 0 
     4335spell.harmful = False 
     4336spell.sndBegin = "sfx/Magic_Spell_Heal7.ogg" 
     4337spell.beginMsg = "$tgt's alliance receives Galeel's Blessing." 
     4338spell.addEffect("Galeel's Blessing") 
     4339 
     4340#--- Galeel's Vengeance 
     4341effect = DBEffectProto(name = "Galeel's Vengeance") 
     4342effect.addDamage(RPG_DMG_ELECTRICAL,7000) 
     4343effect.resist = RPG_RESIST_ELECTRICAL 
     4344 
     4345spell = DBSpellProto() 
     4346spell.name = "Galeel's Vengeance" 
     4347spell.particleBegin = "ChimneyFireEmitter" 
     4348spell.particleTextureBegin = "starofchaos" 
     4349spell.target = RPG_TARGET_OTHER 
     4350spell.aoeRange = 0 
     4351spell.castRange = 15 
     4352spell.castTime = 0 
     4353spell.duration = 0 
     4354spell.harmful = True 
     4355spell.sndBegin = "sfx/Magic_WandZap1.ogg" 
     4356spell.beginMsg = "$tgt is struck by lightning for transgressing against Galeel's Champion." 
     4357spell.addEffect("Galeel's Vengeance") 
     4358 
     4359#--- Galeel's Shield of Hope 
     4360effect = DBEffectProto(name = "Galeel's Shield of Hope") 
     4361effect.dmgReflectionPercent = .25 
     4362effect.dmgReflectionMax = 1000 
     4363 
     4364spell = DBSpellProto() 
     4365spell.name = "Galeel's Shield of Hope" 
     4366spell.particleBegin = "ChimneyFireEmitter" 
     4367spell.particleTextureBegin = "starofchaos" 
     4368spell.iconDst = "SPELLICON_2_33" 
     4369spell.target = RPG_TARGET_SELF 
     4370spell.aoeRange = 0 
     4371spell.castRange = 0 
     4372spell.castTime = 0 
     4373spell.duration = durSecond * 30 
     4374spell.harmful = False 
     4375spell.sndBegin = "sfx/Magic_Spell_Heal7.ogg" 
     4376spell.beginMsg = "$tgt is protected by Galeel's Shield of Hope." 
     4377spell.addEffect("Galeel's Shield of Hope") 
     4378 
     4379#--- Kauldur's Recompense 
     4380item = DBItemProto() 
     4381item.name = "Kauldur's Recompense" 
     4382item.itemType = ['UNIQUE'] 
     4383item.skill = "Shields"  
     4384item.armor = 840 
     4385item.addClass("Paladin", 70) 
     4386item.addRealm(RPG_REALM_LIGHT) 
     4387item.flags = RPG_ITEM_SOULBOUND | RPG_ITEM_UNIQUE | RPG_ITEM_PREMIUM|RPG_ITEM_INDESTRUCTIBLE #no RPG_ITEM_QUEST 
     4388item.bitmap = "EQUIPMENT/SHIELDS/9" 
     4389item.model = "weapons/shield02.dts" 
     4390item.slots = (RPG_SLOT_SHIELD,) 
     4391item.desc = "It is said that the Lady of Light gave this shield to Kauldur." 
     4392item.addSpell("Galeel's Blessing", RPG_ITEM_TRIGGER_DAMAGED, 30) 
     4393item.addSpell("Galeel's Vengeance", RPG_ITEM_TRIGGER_DAMAGED, 20) 
     4394item.addSpell("Galeel's Shield of Hope", RPG_ITEM_TRIGGER_DAMAGED, 25) 
    40844395 
    40854396#---SPAWNS 
     
    41374448spawn.desc = "Even though he looks like a diminutive Troll, Greftum Humbottom is actually a Halfling Paladin spy from House Bremden!" 
    41384449spawn.dialog = "Greftum Humbottom I" 
     4450loot=DBLootProto() 
     4451loot.addItem("Humbottom Hankie") 
     4452spawn.loot = loot 
    41394453 
    41404454#--- Profane Guard Ghost 
     
    47215035spawn.dialog = "Mukkstrose Vemnim" 
    47225036 
     5037dialog = DBDialog(name="Mukkstrose Vemnim",greeting = DBDialogLine(text = "I have important business here!\\n")) 
     5038gnomeAssassinsDialog = DBDialog.getDBDialog('Gnome Assassins') 
     5039bardEpicDialog = DBDialog.getDBDialog('Bard Epic - Mukkstrose Vemnim') 
     5040dialog.addDialog(gnomeAssassinsDialog) 
     5041dialog.addDialog(bardEpicDialog) 
     5042 
    47235043#--- Leed Junsel 
    47245044spawn = DBSpawn() 
     
    47665086loot.addItem("Archer's Gloves",RPG_FREQ_RARE) 
    47675087loot.addItem("Archer's Boots",RPG_FREQ_RARE) 
     5088loot.addItem("Archer's Cloak",RPG_FREQ_RARE) 
     5089loot.addItem("Archer's Belt",RPG_FREQ_RARE) 
    47685090spawn.loot = loot 
    47695091spawn.desc = "Bratch Huln is a member of The Balance, the Fellowship of Light's grouping of Rangers, Druids and Tempests who work to maintain harmony in nature, he displays none of the cool confidence usually associated with this group. His face is weary and it is clear that he carries a terrible weight in his heart." 
     
    47995121loot.addItem("Barbaric Gloves",RPG_FREQ_RARE) 
    48005122loot.addItem("Barbaric Boots",RPG_FREQ_RARE) 
     5123loot.addItem("Barbaric Cloak",RPG_FREQ_RARE) 
     5124loot.addItem("Barbaric Belt",RPG_FREQ_RARE) 
    48015125loot.addItem("Arrows Alaashiim",RPG_FREQ_IMPOSSIBLE) 
    48025126spawn.loot = loot 
     
    48315155loot.addItem("Tactician's Gloves",RPG_FREQ_UNCOMMON) 
    48325156loot.addItem("Tactician's Boots",RPG_FREQ_UNCOMMON) 
     5157loot.addItem("Tactician's Cloak",RPG_FREQ_UNCOMMON) 
     5158loot.addItem("Tactician's Belt",RPG_FREQ_UNCOMMON) 
    48335159spawn.loot = loot 
    48345160spawn.desc = "Lubrote Tand appears to be an unassuming Gnome who is visiting Tahtald Manor. Looks can be deceiving." 
     
    49655291effect.leechType = 'health' 
    49665292effect.leechTick = 50 
    4967 effect.leechTickRate = 60 #10 seconds 
     5293effect.leechTickRate = durSecond * 10 
    49685294effect.drainType = 'health' 
    49695295effect.drainTick = 50 
    4970 effect.drainTickRate = 60 #10 seconds 
     5296effect.drainTickRate = durSecond * 10 
    49715297 
    49725298spell = DBSpellProto(name="Nokktu Leech") 
     
    49765302spell.particleBegin = "ChimneyFireEmitter" 
    49775303spell.target = RPG_TARGET_OTHER 
    4978 spell.duration = 6*30 
     5304spell.duration = durSecond * 30 
    49795305spell.castTime = 0 
    49805306spell.harmful = True 
     
    51815507sg.addSpawnInfo(mob1) 
    51825508 
    5183  
    5184  
     5509#--- Paladin Epic Battle 
     5510PEB1 = BattleProto(name="PaladinEpicBattle", zoneName = "anidaenforest") 
     5511PEB1.zoneMessage = "An Epic Battle has begun to save Sashaan the Mother!" 
     5512PEB1.zoneSound = "sfx/College_DrumCadence07.ogg" 
     5513BattleMustSurvive(name="Sashaan the Mother", battleProto=PEB1) 
     5514BattleMustSurvive(name="Rakkam Yidruth", battleProto=PEB1) 
     5515 
     5516#--- Ruln Hold Wave 1 
     5517PEB1bs = BattleSequence() 
     5518#PEB1bs.zoneMessage = "The Ruln Hold Knights are caught off guard!" 
     5519#PEB1bs.zoneSound = "sfx/College_DrumCadence03.ogg" 
     5520 
     5521PEB1.side1StartSequence = PEB1bs 
     5522 
     5523PEB1bg = BattleGroup() 
     5524PEB1bg.triggerSpawnGroup = "RULN_W1_1" 
     5525PEB1bg.spawnGroup = "RULNHOLDKNIGHT" 
     5526PEB1bg.attackDelay = durSecond * 30 
     5527PEB1bg.battleSequence=PEB1bs 
     5528 
     5529PEB1bg = BattleGroup() 
     5530PEB1bg.triggerSpawnGroup = "RULN_W1_2" 
     5531PEB1bg.spawnGroup = "DREGNUSHHOLDKNIGHT" 
     5532PEB1bg.attackDelay = durSecond * 30 
     5533PEB1bg.battleSequence=PEB1bs 
     5534 
     5535PEB1bg = BattleGroup() 
     5536PEB1bg.triggerSpawnGroup = "RULN_W1_3" 
     5537PEB1bg.spawnGroup = "DREGNUSHASSASSIN" 
     5538PEB1bg.attackDelay = durSecond * 30 
     5539PEB1bg.battleSequence=PEB1bs 
     5540 
     5541#--- Ruln Hold Wave 2 
     5542PEB1bs.nextSequence = PEB1bs = BattleSequence() 
     5543PEB1bs.zoneSound = "sfx/College_DrumCadence25.ogg" 
     5544PEB1bs.zoneMessage = "The Ruln Hold Knights retreat to the hills!" 
     5545 
     5546PEB1bg = BattleGroup() 
     5547PEB1bg.triggerSpawnGroup = "RULN_W2_1" 
     5548PEB1bg.spawnGroup = "RULNHOLDKNIGHT" 
     5549PEB1bg.attackDelay = durSecond * 1 
     5550PEB1bg.battleSequence=PEB1bs 
     5551 
     5552PEB1bg = BattleGroup() 
     5553PEB1bg.triggerSpawnGroup = "RULN_W2_2" 
     5554PEB1bg.spawnGroup = "DREGNUSHHOLDKNIGHT" 
     5555PEB1bg.attackDelay = durSecond * 1 
     5556PEB1bg.battleSequence=PEB1bs 
     5557 
     5558PEB1bg = BattleGroup() 
     5559PEB1bg.triggerSpawnGroup = "RULN_W2_3" 
     5560PEB1bg.spawnGroup = "DREGNUSHASSASSIN" 
     5561PEB1bg.attackDelay = durSecond * 1 
     5562PEB1bg.battleSequence=PEB1bs 
     5563 
     5564#--- Ruln Hold Wave 3 
     5565PEB1bs.nextSequence = PEB1bs = BattleSequence() 
     5566PEB1bs.zoneSound = "sfx/College_DrumCadence25.ogg" 
     5567PEB1bs.zoneMessage = "The Ruln Hold Knights engage in guerrilla warfare." 
     5568 
     5569PEB1bg = BattleGroup() 
     5570PEB1bg.triggerSpawnGroup = "RULN_W3" 
     5571PEB1bg.spawnGroup = "RULNHOLDKNIGHT" 
     5572PEB1bg.attackDelay = durSecond * 1 
     5573PEB1bg.battleSequence=PEB1bs 
     5574 
     5575#--- Ruln Hold Wave 4 
     5576PEB1bs.nextSequence = PEB1bs = BattleSequence() 
     5577PEB1bs.zoneSound = "sfx/College_DrumCadence25.ogg" 
     5578PEB1bs.zoneMessage = "The Dregnush Hold Knights attack the Paladin flanks!" 
     5579 
     5580PEB1bg = BattleGroup() 
     5581PEB1bg.triggerSpawnGroup = "RULN_W4" 
     5582PEB1bg.spawnGroup = "DREGNUSHHOLDKNIGHT" 
     5583PEB1bg.attackDelay = durSecond * 1 
     5584PEB1bg.battleSequence=PEB1bs 
     5585 
     5586#--- Ruln Hold Wave 5 
     5587PEB1bs.nextSequence = PEB1bs = BattleSequence() 
     5588PEB1bs.zoneSound = "sfx/College_DrumCadence25.ogg" 
     5589PEB1bs.zoneMessage = "The Ruln Hold Knights attack the Paladin flank!" 
     5590 
     5591PEB1bg = BattleGroup() 
     5592PEB1bg.triggerSpawnGroup = "RULN_W5" 
     5593PEB1bg.spawnGroup = "RULNHOLDKNIGHT" 
     5594PEB1bg.attackDelay = durSecond * 1 
     5595PEB1bg.battleSequence=PEB1bs 
     5596 
     5597#--- Ruln Hold Wave 6 
     5598PEB1bs.nextSequence = PEB1bs = BattleSequence() 
     5599PEB1bs.zoneSound = "sfx/College_DrumCadence25.ogg" 
     5600PEB1bs.zoneMessage = "The Paladins never seem to know where the Ruln Hold Knights will come from next!" 
     5601 
     5602PEB1bg = BattleGroup() 
     5603PEB1bg.triggerSpawnGroup = "RULN_W6" 
     5604PEB1bg.spawnGroup = "RULNHOLDKNIGHT" 
     5605PEB1bg.attackDelay = durSecond * 1 
     5606PEB1bg.battleSequence=PEB1bs 
     5607 
     5608#--- Ruln Hold Wave 7 
     5609PEB1bs.nextSequence = PEB1bs = BattleSequence() 
     5610 
     5611PEB1bg = BattleGroup() 
     5612PEB1bg.triggerSpawnGroup = "RULN_W7" 
     5613PEB1bg.spawnGroup = "DREGNUSHHOLDKNIGHT" 
     5614PEB1bg.attackDelay = durSecond * 1 
     5615PEB1bg.battleSequence=PEB1bs 
     5616 
     5617#--- Ruln Hold Wave 8 
     5618PEB1bs.nextSequence = PEB1bs = BattleSequence() 
     5619 
     5620PEB1bg = BattleGroup() 
     5621PEB1bg.triggerSpawnGroup = "RULN_W8" 
     5622PEB1bg.spawnGroup = "DREGNUSHHOLDKNIGHT" 
     5623PEB1bg.attackDelay = durSecond * 1 
     5624PEB1bg.battleSequence=PEB1bs 
     5625 
     5626#--- Ruln Hold Wave 9 
     5627PEB1bs.nextSequence = PEB1bs = BattleSequence() 
     5628 
     5629PEB1bg = BattleGroup() 
     5630PEB1bg.triggerSpawnGroup = "RULN_W9" 
     5631PEB1bg.spawnGroup = "RULNHOLDKNIGHT" 
     5632PEB1bg.attackDelay = durSecond * 1 
     5633PEB1bg.battleSequence=PEB1bs 
     5634 
     5635#--- Ruln Hold Wave 10 
     5636PEB1bs.nextSequence = PEB1bs = BattleSequence() 
     5637PEB1bs.zoneSound = "sfx/College_DrumCadence25.ogg" 
     5638PEB1bs.zoneMessage = "The Ruln Holds make one final thrust at the Paladin forces!" 
     5639 
     5640PEB1bg = BattleGroup() 
     5641PEB1bg.triggerSpawnGroup = "RULN_W10_1" 
     5642PEB1bg.spawnGroup = "RULNHOLDKNIGHT" 
     5643PEB1bg.attackDelay = durSecond * 1 
     5644PEB1bg.battleSequence=PEB1bs 
     5645 
     5646PEB1bg = BattleGroup() 
     5647PEB1bg.triggerSpawnGroup = "RULN_W10_2" 
     5648PEB1bg.spawnGroup = "DREGNUSHHOLDKNIGHT" 
     5649PEB1bg.attackDelay = durSecond * 1 
     5650PEB1bg.battleSequence=PEB1bs 
     5651 
     5652PEB1bg = BattleGroup() 
     5653PEB1bg.triggerSpawnGroup = "RULN_W10_3" 
     5654PEB1bg.spawnGroup = "DREGNUSHASSASSIN" 
     5655PEB1bg.attackDelay = durSecond * 1 
     5656PEB1bg.battleSequence=PEB1bs 
     5657 
     5658PEB1bg = BattleGroup() 
     5659PEB1bg.triggerSpawnGroup = "RULN_W10_4" 
     5660PEB1bg.spawnGroup = "RAKKAMYIDRUTH" 
     5661PEB1bg.attackDelay = durSecond * 1 
     5662PEB1bg.passive = True 
     5663PEB1bg.battleSequence=PEB1bs 
     5664 
     5665PEB1bg = BattleGroup() 
     5666PEB1bg.triggerSpawnGroup = "RULN_W10_5" 
     5667PEB1bg.spawnGroup = "DROKHOR" 
     5668PEB1bg.attackDelay = durSecond * 1 
     5669PEB1bg.passive = True 
     5670PEB1bg.battleSequence=PEB1bs 
     5671 
     5672#--- Paladin SEQUENCE 
     5673PEB1bs = BattleSequence() 
     5674PEB1bs.zoneMessage = "Galeel's forces launch a surprise attack on the Ruln Hold Knights!" 
     5675PEB1bs.zoneSound = "sfx/College_DrumCadence11.ogg" 
     5676 
     5677PEB1.side2StartSequence = PEB1bs 
     5678 
     5679#--- Wave 1 
     5680PEB1bg = BattleGroup() 
     5681PEB1bg.triggerSpawnGroup = "PAL_W1_1" 
     5682PEB1bg.spawnGroup = "PALADINDEFENDER" 
     5683PEB1bg.attackDelay = durSecond * 5 
     5684PEB1bg.battleSequence=PEB1bs 
     5685 
     5686PEB1bg = BattleGroup() 
     5687PEB1bg.triggerSpawnGroup = "PAL_W1_2" 
     5688PEB1bg.spawnGroup = "PALADINWARRIOR" 
     5689PEB1bg.attackDelay = durSecond * 5 
     5690PEB1bg.battleSequence=PEB1bs 
     5691 
     5692#PEB1bg = BattleGroup() 
     5693#PEB1bg.triggerSpawnGroup = "PAL_W1_3" 
     5694#PEB1bg.spawnGroup = "PIETISTICALPALADIN" 
     5695#PEB1bg.attackDelay = durSecond * 5 
     5696#PEB1bg.battleSequence=PEB1bs 
     5697 
     5698#--- Wave 2 
     5699PEB1bs.nextSequence = PEB1bs = BattleSequence() 
     5700PEB1bs.zoneSound = "sfx/College_DrumCadence25.ogg" 
     5701PEB1bs.zoneMessage = "Paladin reinforcements have arrived!" 
     5702 
     5703#PEB1bg = BattleGroup() 
     5704#PEB1bg.triggerSpawnGroup = "PAL_W1_1" 
     5705#PEB1bg.spawnGroup = "PALADINDEFENDER" 
     5706#PEB1bg.attackDelay = durSecond * 5 
     5707#PEB1bg.battleSequence=PEB1bs 
     5708 
     5709PEB1bg = BattleGroup() 
     5710PEB1bg.triggerSpawnGroup = "PAL_W1_2" 
     5711PEB1bg.spawnGroup = "PALADINWARRIOR" 
     5712PEB1bg.attackDelay = durSecond * 5 
     5713PEB1bg.battleSequence=PEB1bs 
     5714 
     5715#PEB1bg = BattleGroup() 
     5716#PEB1bg.triggerSpawnGroup = "PAL_W2_3" 
     5717#PEB1bg.spawnGroup = "PIETISTICALPALADIN" 
     5718#PEB1bg.attackDelay = durSecond * 5 
     5719#PEB1bg.battleSequence=PEB1bs 
     5720 
     5721#--- Wave 3 
     5722PEB1bs.nextSequence = PEB1bs = BattleSequence() 
     5723PEB1bs.zoneSound = "sfx/College_DrumCadence25.ogg" 
     5724PEB1bs.zoneMessage = "The Ruln Hold Knight tactics seem to be working. Galeel's forces are wearing thin." 
     5725 
     5726PEB1bg = BattleGroup() 
     5727PEB1bg.triggerSpawnGroup = "PAL_W1_1" 
     5728PEB1bg.spawnGroup = "PALADINDEFENDER" 
     5729PEB1bg.attackDelay = durSecond * 5 
     5730PEB1bg.battleSequence=PEB1bs 
     5731 
     5732#PEB1bg = BattleGroup() 
     5733#PEB1bg.triggerSpawnGroup = "PAL_W1_2" 
     5734#PEB1bg.spawnGroup = "PALADINWARRIOR" 
     5735#PEB1bg.attackDelay = 5 * durSecond 
     5736#PEB1bg.battleSequence=PEB1bs 
     5737 
     5738PEB1bg = BattleGroup() 
     5739PEB1bg.triggerSpawnGroup = "PAL_W1_3" 
     5740PEB1bg.spawnGroup = "PIETISTICALPALADIN" 
     5741PEB1bg.attackDelay = durSecond * 5 
     5742PEB1bg.battleSequence=PEB1bs 
     5743 
     5744PEB1bg = BattleGroup() 
     5745PEB1bg.triggerSpawnGroup = "PAL_W1_4" 
     5746PEB1bg.spawnGroup = "SASHAANTHEMOTHER" 
     5747PEB1bg.attackDelay = durSecond * 5 
     5748PEB1bg.passive = True 
     5749PEB1bg.battleSequence=PEB1bs 
     5750 
     5751#--- end results 
     5752PEB1s1victory = BattleResult() 
     5753PEB1s1victory.zoneMessage = "The Ruln Hold Knights have slaughtered Sashaan the Mother!" 
     5754#PEB1s1victory.triggerSpawnGroup = "PAL_W3_4" 
     5755#PEB1s1victory.spawnGroup = "" 
     5756PEB1s1victory.zoneSound = "sfx/College_DrumCadence07.ogg" 
     5757 
     5758PEB1s2victory = BattleResult() 
     5759PEB1s2victory.zoneMessage = "Galeel's forces have stopped the Ruln Holds from taking Sashaan's life!" 
     5760PEB1s2victory.triggerSpawnGroup = "PAL_W1_4" 
     5761PEB1s2victory.spawnGroup = "SASHAANTHEMOTHER" 
     5762PEB1s2victory.zoneSound = "sfx/College_DrumCadence07.ogg" 
     5763 
     5764PEB1.side1VictoryResult = PEB1s1victory 
     5765PEB1.side2VictoryResult = PEB1s2victory 
     5766 
     5767#--- Paladin Defender 
     5768spawn = DBSpawn() 
     5769spawn.name = "Paladin Defender" 
     5770spawn.race = "Human" 
     5771spawn.sex = "Male" 
     5772spawn.pclass = "Paladin" 
     5773spawn.plevel = 50 
     5774spawn.difficultyMod = 1.0 
     5775spawn.isMonster = False 
     5776spawn.realm = RPG_REALM_LIGHT 
     5777spawn.desc = "" 
     5778spawn.textureBody = "BODY/BODY1" 
     5779spawn.textureArms = "ARMS/ARMS1" 
     5780spawn.textureLegs = "LEGS/LEGS1" 
     5781spawn.textureFeet = "FEET/FEET1" 
     5782spawn.textureHands = "HANDS/HANDS1" 
     5783spawn.vocalSet = 'A' 
     5784loot = DBLootProto() 
     5785loot.addItem("Longsword",RPG_FREQ_ALWAYS) 
     5786spawn.loot = loot 
     5787 
     5788PS = DBSpawnInfo(spawn="Paladin Defender") 
     5789sg = DBSpawnGroup(zone="anidaenforest",groupName="PALADINDEFENDER") 
     5790sg.addSpawnInfo(PS) 
     5791 
     5792#--- Paladin Warrior  
     5793spawn = DBSpawn() 
     5794spawn.name = "Paladin Warrior" 
     5795spawn.pclass = "Paladin" 
     5796spawn.plevel = 50 
     5797spawn.sclass = "Warrior" 
     5798spawn.slevel = 50 
     5799spawn.sex = "Male" 
     5800spawn.race = "Human" 
     5801spawn.realm = RPG_REALM_LIGHT 
     5802spawn.isMonster = False 
     5803spawn.radius = 2 
     5804spawn.scale = 1 
     5805spawn.aggroRange = 20 
     5806spawn.difficultyMod = 1 
     5807spawn.model = "human/human_male_2.dts" 
     5808spawn.textureArms = "ARMS/ARMS37" 
     5809spawn.textureLegs = "LEGS/LEGS38" 
     5810spawn.textureBody = "BODY/BODY39" 
     5811spawn.textureHands = "HANDS/HANDS38" 
     5812spawn.textureFeet = "FEET/FEET38" 
     5813spawn.vocalSet = "B" 
     5814 
     5815PG = DBSpawnInfo(spawn="Paladin Warrior") 
     5816sg = DBSpawnGroup(zone="anidaenforest",groupName="PALADINWARRIOR") 
     5817sg.addSpawnInfo(PG) 
     5818 
     5819#--- Pietistical Paladin 
     5820spawn = DBSpawn() 
     5821spawn.name = "Pietistical Paladin" 
     5822spawn.pclass = "Paladin" 
     5823spawn.plevel = 55 
     5824spawn.sclass = "Warrior" 
     5825spawn.slevel = 55 
     5826spawn.sex = "Male" 
     5827spawn.race = "Human" 
     5828spawn.realm = RPG_REALM_LIGHT 
     5829spawn.isMonster = False 
     5830spawn.radius = 2 
     5831spawn.scale = 1 
     5832spawn.aggroRange = 20 
     5833spawn.difficultyMod = 1 
     5834spawn.model = "human/human_male_2.dts" 
     5835spawn.textureArms = "ARMS/ARMS37" 
     5836spawn.textureLegs = "LEGS/LEGS38" 
     5837spawn.textureBody = "BODY/BODY39" 
     5838spawn.textureHands = "HANDS/HANDS38" 
     5839spawn.textureFeet = "FEET/FEET38" 
     5840spawn.vocalSet = "B" 
     5841 
     5842GP = DBSpawnInfo(spawn="Pietistical Paladin") 
     5843sg = DBSpawnGroup(zone="anidaenforest",groupName="PIETISTICALPALADIN") 
     5844sg.addSpawnInfo(GP) 
     5845""" 
     5846#--- Sashaan's Ring 
     5847sound = ItemSoundProfile() 
     5848sound.sndEquip = "sfx/Pickup_GemBells04.ogg" 
     5849item = DBItemProto() 
     5850item.itemType = ['UNIQUE','JEWELRY'] 
     5851item.name = "Sashaan's Ring" 
     5852item.level = 100 
     5853item.bitmap = "EQUIPMENT/FINGER/4" 
     5854item.slots = (RPG_SLOT_LFINGER,RPG_SLOT_RFINGER) 
     5855item.flags = (RPG_ITEM_ARTIFACT|RPG_ITEM_SOULBOUND|RPG_ITEM_UNIQUE|RPG_ITEM_PREMIUM) 
     5856item.addStat("regenHealth",20) 
     5857item.addStat("regenMana",20) 
     5858item.addStat("regenStamina",20) 
     5859item.addStat("mnd",500) 
     5860item.addStat("wis",500) 
     5861item.addStat("mys",500) 
     5862item.addStat("str",500) 
     5863item.addStat("bdy",500) 
     5864item.addStat("dex",500) 
     5865item.addStat("ref",500) 
     5866item.addStat("agi",500) 
     5867item.addStat("armor",1000) 
     5868item.addStat("maxMana",1000) 
     5869item.addStat("maxHealth",1000) 
     5870item.addStat("maxStamina",1000) 
     5871item.addStat("resistMagical",100) 
     5872item.addStat("resistPhysical",100) 
     5873item.addStat("resistPoison",100) 
     5874item.addStat("resistDisease",100) 
     5875item.addStat("resistAcid",100) 
     5876item.addStat("resistFire",100) 
     5877item.addStat("resistElectrical",100) 
     5878item.addStat("resistCold",100) 
     5879item.desc = "This is Sashaan's personal ring, given to Sashaan by Kauldur as a token of his love and affection. It is the ring of a God!" 
     5880item.sndProfile = sound 
     5881""" 
     5882#--- Sashaan the Mother 
     5883spawn = DBSpawn() 
     5884spawn.realm = RPG_REALM_LIGHT 
     5885spawn.name = "Sashaan the Mother" 
     5886spawn.pclass = "Ranger" 
     5887spawn.plevel = 55 
     5888spawn.sclass = "Cleric" 
     5889spawn.slevel = 55 
     5890spawn.tclass = "Druid" 
     5891spawn.tlevel = 55 
     5892spawn.race = "Human" 
     5893spawn.sex = "Female" 
     5894spawn.flags = RPG_SPAWN_UNIQUE 
     5895spawn.isMonster = False 
     5896spawn.radius = 2  
     5897spawn.scale = 2 
     5898spawn.aggroRange = 20 
     5899spawn.textureHead = "HEAD/HEAD13" 
     5900spawn.addResistance(RPG_RESIST_MAGICAL, 1000) #She is a God afterall. 
     5901loot = DBLootProto() 
     5902loot.addItem("Candle", RPG_FREQ_ALWAYS) 
     5903loot.addItem("Protector's Chest", RPG_FREQ_ALWAYS) 
     5904loot.addItem("Protector's Boots", RPG_FREQ_ALWAYS) 
     5905loot.addItem("Protector's Legs", RPG_FREQ_ALWAYS) 
     5906loot.addItem("Protector's Gloves", RPG_FREQ_ALWAYS) 
     5907loot.addItem("Protector's Arms", RPG_FREQ_ALWAYS) 
     5908loot.addItem("Protector's Shield", RPG_FREQ_ALWAYS) 
     5909spawn.loot = loot 
     5910spawn.dialog = "Paladin Epic - Sashaan the Mother" 
     5911spawn.desc = "Sashaan the Mother is the mother of the Elves and lover of all natural things." 
     5912 
     5913rhk = DBSpawnInfo(spawn="Sashaan the Mother") 
     5914sg = DBSpawnGroup(zone="anidaenforest",groupName="SASHAANTHEMOTHER") 
     5915sg.addSpawnInfo(rhk) 
     5916 
     5917rhk = DBSpawnInfo(spawn="Ruln Hold Knight") 
     5918sg = DBSpawnGroup(zone="anidaenforest",groupName="RULNHOLDKNIGHT") 
     5919sg.addSpawnInfo(rhk) 
     5920 
     5921rhk = DBSpawnInfo(spawn="Dregnush Hold Knight") 
     5922sg = DBSpawnGroup(zone="anidaenforest",groupName="DREGNUSHHOLDKNIGHT") 
     5923sg.addSpawnInfo(rhk) 
     5924 
     5925#--- Dregnush Assassin 
     5926spawn = DBSpawn() 
     5927spawn.name = "Dregnush Assassin" 
     5928spawn.pclass = "Doom Knight" 
     5929spawn.plevel = 53 
     5930spawn.sclass = "Assassin" 
     5931spawn.slevel = 53 
     5932spawn.difficultyMod = 2 
     5933spawn.race = "Troll" 
     5934spawn.sex = "Male" 
     5935spawn.isMonster = True 
     5936spawn.radius = 2  
     5937spawn.scale = 1.1 
     5938spawn.flags