Epic Battles
****WARNING: Not for the feint of heart!****
In this tutorial we are going to create a small battle between Wolves and Humans that takes place in the City of Jorfu around /coords 556 -277 51. This battle will be for the Fellowship of Light, therefore we'll tip the scale a bit in the Humans' favor so that FoL players have a better chance of winning this battle.
STEP ONE: Rough Layout of Battle
First, I am going to write a rough layout of who spawns on each side, their names, levels, the number of each I want to spawn, and how many sequences will be in this battle. Doing this now will help us in the next steps. Mine looks like this:
| FoL side - Humans | Opposing side - Wolves |
| Side 1, Sequence 1 | Side 2, Sequence 1 |
| (B1_S1_#) | (B1_S2_#) |
| 1. Human Destroyer | 1. Wolf Crusader |
| Lvl 34 - 4 | Lvl 25 - 4 |
| 2. Human Punisher | 2. Wolf Protector |
| Lvl 36 - 2 | Lvl 28 - 2 |
| Side 1, Sequence 2 | Side 2, Sequence 2 |
| (B1_S1_#) | (B1_S2_#) |
| 3. Human Deathbinder | 3. Wolf Crusader |
| Lvl 38 - 2 | Lvl 25 - 1 |
| 4. Ororcali | 4. Wolf Protector |
| Lvl 38 - 1 | Lvl 28 - 2 |
| 0. Taskmaster Duro | 0. Captain Flamehorn |
| Lvl 40 - 1 | Lvl 33 - 1 |
Taskmaster Duro and Captain Flamehorn are the leaders of each side and whomever survives the battle is the winner. If either one dies during the battle, the other side automatically wins.
Note: B1_S1_# means battle 1, side 1 and is used to define the spawngroups in Python and in the Mission editor. We'll delve into these numbers later on in the tutorial.
Before we proceed, let's get our file setup to begin creating the battle. Load Python. Create a new file and save it as: ~\my.mmorpg\genesis\battle\jorfubattle.py
Add the following text to the top of the file and save:
from mud.world.battle import BattleGroup,BattleSequence,BattleResult,BattleMustSurvive,BattleProto from genesis.dbdict import *
Now we need to import this new module, open ~\my.mmorpg\genesis\battle\__init__.py add the following line, save and close this file:
import jorfubattle
STEP TWO: Spawns
In this step we'll create our spawns that we defined in the previous step.
1. Create a new file and save it as: ~\my.mmorpg\genesis\spawns\humans.py, add the following to the top of the file and save:
from genesis.dbdict import * from mud.world.defines import * from mud.world.spawn import SpawnSoundProfile
2. Open ~\my.mmorpg\genesis\spawns\spawnmain.py add the following text and save:
import humans
3. Now let's create our spawns inside of: ~\my.mmorpg\genesis\spawns\humans.py. Here is how my layout of the spawns looks. If you want a more detailed explanation of spawns see the NPC and Monster Creation Tutorial.
#--- Taskmaster Duro spawn = DBSpawn() spawn.name = "Taskmaster Duro" spawn.race = "Human" spawn.sex = "Female" spawn.pclass = "Doom Knight" spawn.plevel = 40 spawn.difficultyMod = 2 spawn.isMonster = False spawn.flags = RPG_SPAWN_UNIQUE spawn.desc = "" spawn.textureBody = "BODY/BODY1" spawn.textureArms = "ARMS/ARMS1" spawn.textureLegs = "LEGS/LEGS1" spawn.textureFeet = "FEET/FEET1" spawn.textureHands = "HANDS/HANDS1" spawn.vocalSet = 'A' spawn.dialog = "" #--- Ororcali spawn = spawn.clone() spawn.name = "Ororcali" spawn.sex = "Male" spawn.pclass = "Warrior" spawn.plevel = 38 spawn.difficultyMod = 1 spawn.dialog = "" #--- Human Deathbinder spawn = spawn.clone() spawn.name = "Human Deathbinder" spawn.pclass = "Assassin" spawn.flags = 0 #--- Human Punisher spawn = spawn.clone() spawn.name = "Human Punisher" spawn.pclass = "Wizard" spawn.plevel = 36 #--- Human Destroyer spawn = spawn.clone() spawn.name = "Human Destroyer" spawn.pclass = "Barbarian" spawn.plevel = 34
Note: I created a dialog parameter but left it blank, the battle dialog will get inserted here in a later step.
Save the file.
2. Now, we'll create the wolf spawns. Open ~\my.mmorpg\genesis\spawns\animal.py and create the 3 wolf spawns. Here is how mine looks:
#--- Captain Flamehorn spawn = DBSpawn() spawn.name = "Captain Flamehorn" spawn.race = "Animal" spawn.sex = "Male" spawn.pclass = "Paladin" spawn.plevel = 33 spawn.difficultyMod = 2 spawn.isMonster = False spawn.flags = RPG_SPAWN_UNIQUE spawn.desc = "" spawn.model = "animal/wolf.dts" spawn.animation = "wolf" spawn.textureSingle = "single/wolf_grey" spawn.sndProfile = sounds #--- Wolf Protector spawn = spawn.clone() spawn.name = "Wolf Protector" spawn.pclass = "Warrior" spawn.plevel = 28 spawn.difficultyMod = 1 spawn.flags = 0 #--- Wolf Crusader spawn = spawn.clone() spawn.name = "Wolf Crusader" spawn.pclass = "Cleric" spawn.plevel = 25
Save the file.
3. Run genesis.py
STEP THREE: Spawngroups
Now, we'll assign the newly created spawns to spawngroups. We want each spawn to have its own spawngroup.
1. Open ~\my.mmorpg\genesis\battle\jorfubattle.py and add the following text:
#--- Human vs. Wolf #--- Human Spawngroups o1 = DBSpawnInfo(spawn="Human Destroyer") sg = DBSpawnGroup(zone="jorfu",groupName="DESTROYER") sg.addSpawnInfo(o1) o1 = DBSpawnInfo(spawn="Human Punisher") sg = DBSpawnGroup(zone="jorfu",groupName="PUNISHER") sg.addSpawnInfo(o1) o1 = DBSpawnInfo(spawn="Human Deathbinder") sg = DBSpawnGroup(zone="jorfu",groupName="DEATHBINDER") sg.addSpawnInfo(o1) o1 = DBSpawnInfo(spawn="Ororcali") sg = DBSpawnGroup(zone="jorfu",groupName="ORORCALI") sg.addSpawnInfo(o1) o1 = DBSpawnInfo(spawn="Taskmaster Duro") sg = DBSpawnGroup(zone="jorfu",groupName="TASKMASTER") sg.addSpawnInfo(o1) #--- Wolf Spawngroups e1 = DBSpawnInfo(spawn="Wolf Crusader") sg = DBSpawnGroup(zone="jorfu",groupName="CRUSADER") sg.addSpawnInfo(e1) e1 = DBSpawnInfo(spawn="Wolf Protector") sg = DBSpawnGroup(zone="jorfu",groupName="PROTECTOR") sg.addSpawnInfo(e1) e1 = DBSpawnInfo(spawn="Captain Flamehorn") sg = DBSpawnGroup(zone="jorfu",groupName="CAPTAIN") sg.addSpawnInfo(e1)
Note: do not forget that groupName must be a unique identifier for the zone.
2. Save the file. Run genesis.py
STEP FOUR: Dialog
In this step we will write 2 dialogs, one for the questgiver and the other for the reward giver.
1. First, let's assign the quest giving dialog to Guard Andarry. Open ~\my.mmorpg\genesis\zone\jorfu\spawn.py and add update his dialog to look like this:
spawn.dialog = "HumanWolfSkirmish"
We'll create his dialog in the next step.
Note: you may want to move his spawnpoint closer to the battle location so that the player is near where the battle begins.
2. We'll write Guard Andarry a simple dialog. He has heard rumors of wolves amassing near the city's center, planning an attack. Make sure the dialog is named HumanWolfSkirmish as defined above in his spawn information. Add the dialog to ~\my.mmorpg\genesis\battles\jorfubattle.py and save. Here is how my dialog looks:
#--- HumanWolfSkirmish Dialog action1 = DBDialogAction() action1.endInteraction = True action2 = DBDialogAction() #action2.addCheckItem("Captain Flamehorn's Attack Plans") #action2.triggerBattle = "HumanWolfSkirmish" action2.endInteraction = True choice = DBDialogChoice(text=r'Show Guard Andarry the attack plans.') choice.successLine = DBDialogLine(text="Make haste to the battle!") choice.successLine.addAction(action2) choice2 = DBDialogChoice(text=r'I will let you know if I find anything.') choice2.successLine = DBDialogLine(text="Be careful!") choice2.successLine.addAction(action1) dialog = DBDialog() dialog.name = "HumanWolfSkirmish" dialog.greeting = DBDialogLine() dialog.greeting.text = """Be watchful around these parts. There are rumors of wolf packs mobilizing along the city's border! Please report back to me if you come across any useful information!\\n""" dialog.greeting.addChoice(choice) dialog.greeting.addChoice(choice2)
Note: I commented out the item check line and the trigger battle line, we'll add these in once they have been set up.
Save the file and run genesis.py to check for errors.
3. Now, we'll setup Taskmaster Duro's reward dialog upon a successful defeat of Captain Flamehorn's wolves. Add this dialog to the same file as above and save. Here is how my dialog looks:
#--- HumanWolfSkirmishReward Dialog action = DBDialogAction() #action.addTakeItem("Captain Flamehorn's Attack Plans") #action.addGiveItem("Battle Chain of Jorfu") action.despawn = True choice = DBDialogChoice(text=r'Give Captain Flamehorn\'s Attack Plans.') choice.successLine = DBDialogLine(text="""Thanks for alerting us to the Captain's plan! Please accept this gift in gratitude! Goodbye.""") choice.successLine.addAction(action) dialog = DBDialog() dialog.name = "HumanWolfSkirmishReward" dialog.greeting = DBDialogLine() dialog.greeting.text = """Thank you for helping us defeat the legions of Captain Flamehorn!\\n""" dialog.greeting.addChoice(choice)
Note: I commented out the give and take item lines since these items still need to be created.
This dialog needs to be assigned to Taskmaster Duro's spawn. Open ~\genesis\spawn\humans.py, add the following line to his spawn info and save the file:
spawn.dialog = "HumanWolfSkirmishReward"
STEP FIVE: Items
Let's create the 2 items that we reference in the above dialogs. For more information, see the Items and Loot Tutorial on creating items.
1. Open ~\my.mmorpg\genesis\battles\jorfubattle.py and add the following text and save:
#--- Items #--- Captain Flamehorn's Attack Plans item = DBItemProto(name = "Captain Flamehorn's Attack Plans") item.bitmap = "STUFF/2" item.flags = RPG_ITEM_SOULBOUND|RPG_ITEM_ARTIFACT item.desc = "Captain Flamehorn's forces are on the move! Bring these plans to Guard Andarry immediately!" #--- Battle Chain of Jorfu item = DBItemProto(name = "Battle Chain of Jorfu") item.level = 25 item.flags = RPG_ITEM_SOULBOUND|RPG_ITEM_UNIQUE|RPG_ITEM_ARTIFACT item.armor = 50 item.bitmap = "EQUIPMENT/NECK/1" item.slots = (RPG_SLOT_NECK,) item.addStat("str",40) item.addStat("mnd",20) item.addStat("mys",20) item.addStat("bdy",40) item.addStat("maxHealth", 100) item.addStat("resistMagical", 20) item.desc = "This chain commemorates your victory over Captain Flamehorn."
*********add some item icons to my.mmorpg****************
2. Make sure the give/check/take item lines in the above dialog entries are no longer commented out(remove the pound sign in front of each line).
Note: do not remove the # from the trigger battle line yet.
3. We need to add the attack plans to someone's loot table in order for the player to be able to retrieve this item. Let's add it to the wolf Radothe. Open ~\my.mmorpg\genesis\zone\jorfu\spawns.py, add the following line to his loot table, and save:
loot.addItem("Captain Flamehorn's Attack Plans", RPG_FREQ_ALWAYS)
4. Run genesis.py and check for errors.
STEP SIX: Battle Sequences
Now for the fun part! We'll layout the battle sequences in Python next. Open ~\my.mmorpg\genesis\battles\jorfubattle.py
1. First, we'll set up a battle prototype. Let's give it a name and define the zone it will take place in:
battle = BattleProto(name="HumanWolfSkirmish",zoneName = "jorfu")
Now, we'll define a zone-wide message and sound effect that is displayed/heard so everyone knows that this battle is about to begin.
battle.zoneMessage = "Great armies of humans and wolves are amassed! The battle will soon be fought!" battle.zoneSound = "sfx/College_DrumCadence07.ogg"
As we laid out above, we now need to define the 2 parties that must survive the battle. These are the leaders of both sides of the battle.
BattleMustSurvive(name="Taskmaster Duro",battleProto=battle) BattleMustSurvive(name="Captain Flamehorn",battleProto=battle)
2. Now, we'll layout the waves of mobs for each side of the battle.
As laid out in the chart in STEP ONE, each side has two battle sequences. We'll start by laying out the Human sequences.
In the first sequence we have Human Destroyers and Human Punishers. When they join the battle we want to trigger a sound effect and we want them to have a delay before they begin their attack. Add the following text:
#--- SIDE 1 SEQUENCE 1 bs = BattleSequence() bs.zoneSound = "sfx/College_DrumCadence03.ogg" battle.side1StartSequence = bs bg = BattleGroup() bg.triggerSpawnGroup = "B1_S1_1" bg.spawnGroup = "DESTROYER" bg.attackDelay = 60*6 bg.battleSequence=bs bg = BattleGroup() bg.triggerSpawnGroup = "B1_S1_2" bg.spawnGroup = "PUNISHER" bg.attackDelay = 65*6 bg.battleSequence=bs
Note: each spawngroup has a unique numerical identifier and is using the spawnGroup as laid out in STEP THREE.
Once this group is entirely defeated, the second wave of Humans needs to spawn. This group has Human Deathbinders, Ororcali, and Taskmaster Duro. When they join the battle we want to trigger a sound effect and message alerting the enemy that they have joined and we should add a delay to their attack as well. Add the following text:
#--- SIDE 1 SEQUENCE 2 bs.nextSequence = bs = BattleSequence() bs.zoneSound = "sfx/College_DrumCadence25.ogg" bs.zoneMessage = "Taskmaster Duro and his troopers have joined the battle!" bg = BattleGroup() bg.triggerSpawnGroup = "B1_S1_3" bg.spawnGroup = "DEATHBINDER" bg.battleSequence=bs bg = BattleGroup() bg.triggerSpawnGroup = "B1_S1_4" bg.spawnGroup = "ORORCALI" bg.battleSequence=bs bg = BattleGroup() bg.triggerSpawnGroup = "B1_S1_0" bg.spawnGroup = "TASKMASTER" bg.battleSequence=bs
Now we need to create spawngroups for the wolves, mine look like this:
#--- SIDE 2 SEQUENCE 1 bs = BattleSequence() bs.zoneSound = "sfx/College_DrumCadence11.ogg" battle.side2StartSequence = bs bg = BattleGroup() bg.triggerSpawnGroup = "B1_S2_1" bg.spawnGroup = "CRUSADER" bg.attackDelay = 65*6 bg.battleSequence=bs bg = BattleGroup() bg.triggerSpawnGroup = "B1_S2_2" bg.spawnGroup = "PROTECTOR" bg.attackDelay = 70*6 bg.battleSequence=bs #--- SIDE 2 SEQUENCE 2 bs.nextSequence = bs = BattleSequence() bs.zoneSound = "sfx/College_DrumCadence25.ogg" bs.zoneMessage = "Captain Flamehorn has joined the battle!" bg = BattleGroup() bg.triggerSpawnGroup = "B1_S2_3" bg.spawnGroup = "CRUSADER" bg.battleSequence=bs bg = BattleGroup() bg.triggerSpawnGroup = "B1_S2_4" bg.spawnGroup = "PROTECTOR" bg.attackDelay = 5*6 bg.battleSequence=bs bg = BattleGroup() bg.triggerSpawnGroup = "B1_S2_0" bg.spawnGroup = "CAPTAIN" bg.attackDelay = 15*6 bg.passive = True bg.battleSequence=bs
3. Next, we'll define the defeat and victory messages depending upon the outcome of the battle. We need to create a Battle Result prototype, display a zone-wide message, trigger the victor, and play a sound. We'll set up victories for both sides of the battle, they should look something like this:
#--- end results s1victory = BattleResult() s1victory.zoneMessage = "Taskmaster Duro's legions are victorious!" s1victory.triggerSpawnGroup = "B1_S1_0" s1victory.spawnGroup = "TASKMASTER" s1victory.zoneSound = "sfx/College_DrumCadence07.ogg" s2victory = BattleResult() s2victory.zoneMessage = "Captain Flamehorn has prevailed!" s2victory.triggerSpawnGroup = "B1_S2_0" s2victory.spawnGroup = "CAPTAIN" s2victory.zoneSound = "sfx/College_DrumCadence07.ogg" battle.side1VictoryResult = s1victory battle.side2VictoryResult = s2victory
4. Finally, we need to remove the comment on the following line of dialog so that the battle will now be triggered:
action2.triggerBattle = "HumanWolfSkirmish"
5. Save your files. Run genesis.py and check for errors.
STEP SEVEN: Laying out SpawnPoints in Mission File
1. Load your single player world and use /imm tp jorfu to teleport to The City of Jorfu. Hit Ctrl-F11 to enter editor mode. Create a new SimGroup and call it 'Battle_1'. Alt-left click on the new folder to add your spawns to this folder.
Note: Use the skills you learned in previous tutorials about placing spawnpoints.
2. As we laid out in our chart above, let's first place the 4 Human Destroyer spawns. Rename their SpawnPoint and change their SpawnGroup parameter to B1_S1_1. Then place the 2 Human Punisher spawns. Rename their SpawnPoint and change their SpawnGroup parameter to B1_S1_2.
3. Now we'll place the opposing wolf spawns. First, place the 4 Wolf Crusader spawns. Rename their SpawnPoint and change their SpawnGroup parameter to B1_S2_1. Then place the 2 Wolf Protector spawns. Rename their SpawnPoint and change their SpawnGroup parameter to B1_S2_2.
4. Next, let's lay out the second wave of Human spawns as defined above. Place the 2 Human Deathbinder spawns, rename their SpawnPoint, and change their SpawnGroup parameter to B1_S1_3. Place Ororcali's spawn, rename his SpawnPoint and change his SpawnGroup parameter to B1_S1_4. Finally, place the Taskmaster Duro spawn, rename her SpawnPoint and change her SpawnGroup parameter to B1_S1_0.
5. Finally, lay out the second wave of wolf spawns as defined above. Place 1 Wolf Crusader, rename its SpawnPoint, and change its SpawnGroup parameter to B1_S2_3. Place 1 Wolf Protector, rename its SpawnPoint, and change its SpawnGroup parameter to B1_S2_4. Finally, place the Captain Flamehorn, rename his SpawnPoint and change his SpawnGroup parameter to B1_S2_0.
6. Save your mission file and close the game.
Here is how my mission file looks:
new SimGroup(Battle_1) {
new rpgSpawnPoint(B1_S1_1) {
position = "561.362 -272.771 50";
rotation = "0.135341 -0.0892285 0.986773 67.4953";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S1_1";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S1_1) {
position = "553.134 -278.403 50";
rotation = "0.169029 -0.16921 0.970977 91.7486";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S1_1";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S1_1) {
position = "551.719 -265.443 50";
rotation = "0.161899 -0.169416 0.972156 94.2143";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S1_1";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S1_2) {
position = "540.26 -284.356 50";
rotation = "0.127492 -0.151654 0.980177 101.022";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S1_2";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S1_1) {
position = "538.74 -271.084 50";
rotation = "0.131779 -0.157765 0.978644 101.471";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S1_1";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S1_2) {
position = "541.47 -256.36 50";
rotation = "0.136881 -0.160747 0.977458 100.456";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S1_2";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S2_1) {
position = "594.848 -276.527 50";
rotation = "0.214439 0.17073 -0.9617 79.2412";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S2_1";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S2_1) {
position = "604.087 -271.086 50";
rotation = "0.206614 0.171025 -0.963359 81.3405";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S2_1";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S2_1) {
position = "602.878 -285.372 50";
rotation = "0.230347 0.182208 -0.955898 79.2158";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S2_1";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S2_2) {
position = "610.009 -292.526 50";
rotation = "0.20955 0.198303 -0.957478 89.3287";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S2_2";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S2_1) {
position = "614.29 -279.398 50";
rotation = "0.238532 0.1849 -0.95337 78.2274";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S2_1";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S2_2) {
position = "617.142 -268.098 50";
rotation = "0.234169 0.185103 -0.954412 79.2646";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S2_2";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S1_3) {
position = "520.109 -273.712 50";
rotation = "0.134282 -0.14574 0.980167 95.8296";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S1_3";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S1_3) {
position = "521.167 -265.31 50";
rotation = "0.103027 -0.143176 0.98432 109.38";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S1_3";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S1_0) {
position = "511.66 -267.77 50";
rotation = "0.105049 -0.143146 0.984111 108.326";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S1_0";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S1_4) {
position = "526.516 -270.569 50";
rotation = "0.108793 -0.124389 0.986251 98.4383";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S1_4";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S2_3) {
position = "628.38 -282.05 50";
rotation = "0.188659 0.119895 -0.974696 66.2098";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S2_3";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S2_4) {
position = "631.225 -272.431 50";
rotation = "0.18838 0.129148 -0.973568 70.3054";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S2_4";
WanderGroup = "-1";
};
new rpgSpawnPoint(B1_S2_0) {
position = "635.583 -280.178 50";
rotation = "0.171839 0.101643 -0.979867 62.2354";
scale = "1 1 1";
dnStartTime = "-1";
dnEndTime = "-1";
dataBlock = "rpgSpawnPointMarker";
SpawnGroup = "B1_S2_0";
WanderGroup = "-1";
};
};
7. Run genesis.py.
STEP EIGHT: Testing the Battle
Verify that all dialogs and actions work as intended. Test the difficulty of the battle and make adjustments to numbers of spawns and/or their levels as necessary.
Return to Tutorials

