This is the entire code for the twins challenge in Sandbox:
cMissionDefinition C5_Psycho_Battle
{
Duration = "262800"
ExplicitStart = "false"
MissionType = "16"
Module = "2"
StartTime = "25200"
WaitUntilEnd = "false"
cMissionChallengeStart test20
{
ChallengeItemName = "Psycho1"
EnableFade = "true"
FadeIntoBlackType = "2"
FadeOutOfBlackType = "0"
MinimumDurationSecondsReal = "3"
MinimumDurationSecondsTicks = "0"
MinNumberOfSecondsBeforeFadeOut = "1"
cMissionSendCommandToProp ZombieClear29
{
Loop = "true"
PropCommand = "18"
}
cMissionTeleportPlayer Move_Player1
{
SpawnPoint = "StartTwins"
TeleportAllPlayers = "true"
}
cMissionSendCommandToProp Door_Shut2
{
Loop = "true"
PropCommand = "12"
PropName = "NightClubDoor1"
}
cMissionSendCommandToProp Door_Shut3
{
Loop = "true"
PropCommand = "12"
PropName = "NightClubDoor"
}
cMissionSendCommandToProp Door_Locked
{
Loop = "true"
PropCommand = "11"
PropName = "NightClubDoor"
}
cMissionSendCommandToProp Door_Locked1
{
Loop = "true"
PropCommand = "11"
PropName = "NightClubDoor1"
}
cMissionZombieFactory PalVista5
{
Amount0 = "2"
Amount1 = "2"
Amount2 = "2"
ClumpRadiusDelta = "1.0"
Type0 = "zombie_skinny"
Type1 = "zombie_fat"
Type2 = "zombie_skinny_female"
ZombieWarehouseName = "Pal_Vista"
}
cMissionAdjustZombieTuning DEFAULT43
{
MaxAttractorsForSurvivor = "10000"
NumberOfAllowableZombiesChasingYouZone0 = "6000"
NumberOfAllowableZombiesChasingYouZone1 = "4000"
NumberOfAllowableZombiesChasingYouZone2 = "3000"
NumberOfAllowableZombiesChasingYouZone3 = "1000"
WanderingZombies = "30"
}
cMissionZombieFactory w_Yucatan_Walkways_F23
{
Amount0 = "2"
Amount1 = "2"
Amount2 = "2"
Amount3 = "2"
ClumpNoise = "5"
ClumpRadius = "8"
ClumpRadiusDelta = "2"
ClumpSize = "11"
PercentClump = "50"
Type0 = "zombie_skinny"
Type1 = "zombie_fat"
Type2 = "zombie_skinny_female"
Type3 = "zombie_showgirl"
ZombieWarehouseName = "w_Yucatan_Walkways"
}
cMissionZombieFactory w_Yucatan_Walkways_F22
{
Amount0 = "2"
Amount1 = "2"
Amount2 = "2"
Amount3 = "2"
ClumpNoise = "5"
ClumpRadius = "10"
ClumpRadiusDelta = "1.0"
ClumpSize = "11"
PercentClump = "50"
Type0 = "zombie_skinny"
Type1 = "zombie_fat"
Type2 = "zombie_skinny_female"
Type3 = "zombie_showgirl"
ZombieWarehouseName = "w_Yucatan_Walkways_SSentrance"
}
cMissionZombieFactory w_Yucatan_NStrip_Exit_F23
{
Amount0 = "2"
Amount1 = "2"
Amount2 = "2"
Amount3 = "2"
ClumpRadiusDelta = "1.0"
Type0 = "zombie_fat"
Type1 = "zombie_skinny"
Type2 = "zombie_skinny_female"
Type3 = "zombie_showgirl"
ZombieWarehouseName = "w_Yucatan_NStrip_Exit"
}
cMissionZombieFactory w_Yucatan_NStrip_Exit_F22
{
Amount0 = "1"
Amount1 = "1"
Amount2 = "1"
ClumpRadiusDelta = "1.0"
Type0 = "zombie_fat"
Type1 = "zombie_skinny"
Type2 = "zombie_skinny_female"
ZombieWarehouseName = "w_Yucatan_NStrip_Exit_Grad1"
}
cMissionZombieFactory w_Yucatan_NStrip_Exit2_F11
{
Amount0 = "1"
Amount1 = "1"
Amount2 = "1"
Amount3 = "1"
ClumpRadiusDelta = "1.0"
Type0 = "zombie_fat"
Type1 = "zombie_skinny"
Type2 = "zombie_skinny_female"
Type3 = "zombie_showgirl"
ZombieWarehouseName = "w_Yucatan_NStrip_Exit_Grad"
}
cMissionZombieFactory w_Yucatan_Slots_F14
{
Amount0 = "2"
Amount1 = "2"
Amount2 = "2"
Amount3 = "2"
ClumpNoise = "2"
ClumpRadius = "3"
ClumpRadiusDelta = "1.0"
ClumpSize = "3"
PercentClump = "50"
Type0 = "zombie_skinny"
Type1 = "zombie_skinny_female"
Type2 = "zombie_showgirl"
Type3 = "zombie_fat"
ZombieWarehouseName = "w_Yucatan_Slots"
}
cMissionZombieFactory w_Yucatan_Palisades_exit11
{
Amount0 = "1"
Amount1 = "1"
Amount2 = "1"
ClumpRadiusDelta = "1.0"
Type0 = "zombie_fat"
Type1 = "zombie_skinny"
Type2 = "zombie_skinny_female"
ZombieWarehouseName = "w_Yucatan_Exit_Palisades"
}
cMissionZombieFactory w_Yucatan_FoodBarn_exit11
{
Amount0 = "1"
Amount1 = "1"
Amount2 = "1"
ClumpRadiusDelta = "1.0"
Type0 = "zombie_fat"
Type1 = "zombie_skinny"
Type2 = "zombie_skinny_female"
ZombieWarehouseName = "w_Yucatan_Exit_FoodBarn"
}
cMissionZombieFactory w_Yucatan_FoodBarn_exitdoors11
{
Amount0 = "1"
Amount1 = "1"
Amount2 = "1"
ClumpRadiusDelta = "1.0"
Type0 = "zombie_fat"
Type1 = "zombie_skinny"
Type2 = "zombie_skinny_female"
ZombieWarehouseName = "w_Yucatan_Exit_FoodBarndoors"
}
cMissionZombieFactory w_Yucatan_Rug11
{
Amount0 = "1"
Amount1 = "1"
Amount2 = "1"
Amount3 = "1"
ClumpRadiusDelta = "1.0"
Type0 = "zombie_skinny"
Type1 = "zombie_skinny_female"
Type2 = "zombie_showgirl"
Type3 = "zombie_fat"
ZombieWarehouseName = "w_Yucatan_Rug"
}
cMissionZombieFactory Shoal_Entryway8
{
Amount0 = "2"
Amount1 = "2"
Amount2 = "2"
Amount3 = "2"
ClumpRadiusDelta = "1.0"
PercentQueen = "0"
Type0 = "zombie_fat"
Type1 = "zombie_skinny_female"
Type2 = "zombie_showgirl"
Type3 = "zombie_skinny"
ZombieWarehouseName = "w_Yucatan_Shoal"
}
cMissionZombieFactory YucatanTrhoughFoodBarnDoors11
{
Amount0 = "3"
Amount1 = "3"
Amount2 = "3"
ClumpRadiusDelta = "1.0"
Type0 = "zombie_fat"
Type1 = "zombie_skinny"
Type2 = "zombie_skinny_female"
ZombieWarehouseName = "YucatanThroughFoodBarnDoors"
}
cMissionResetItemPlacement Shoal_Replace1
{
Reset_All_Placements_of_same_type = "true"
Target = "Beer1"
}
cMissionResetItemPlacement Shoal_Replace2
{
Reset_All_Placements_of_same_type = "true"
Target = "DrinkCocktail1"
}
cMissionResetItemPlacement Shoal_Replace18
{
Reset_All_Placements_of_same_type = "true"
Target = "JellyBeans1"
}
cMissionResetItemPlacement Shoal_Replace17
{
Reset_All_Placements_of_same_type = "true"
Target = "Pineapple1"
}
cMissionResetItemPlacement Shoal_Replace16
{
Reset_All_Placements_of_same_type = "true"
Target = "Vodka5"
}
cMissionResetItemPlacement Shoal_Replace15
{
Reset_All_Placements_of_same_type = "true"
Target = "AMp1"
}
cMissionResetItemPlacement Shoal_Replace14
{
Reset_All_Placements_of_same_type = "true"
Target = "Battery1"
}
cMissionResetItemPlacement Shoal_Replace13
{
Reset_All_Placements_of_same_type = "true"
Target = "CashRegister"
}
cMissionResetItemPlacement Shoal_Replace12
{
Reset_All_Placements_of_same_type = "true"
Target = "Chair_8"
}
cMissionResetItemPlacement Shoal_Replace11
{
Reset_All_Placements_of_same_type = "true"
Target = "ChefKnife"
}
cMissionResetItemPlacement Shoal_Replace10
{
Reset_All_Placements_of_same_type = "true"
Target = "GarbageCan_11"
}
cMissionResetItemPlacement Shoal_Replace9
{
Reset_All_Placements_of_same_type = "true"
Target = "GiftshopLamp"
}
cMissionResetItemPlacement Shoal_Replace8
{
Reset_All_Placements_of_same_type = "true"
Target = "Handbag"
}
cMissionResetItemPlacement Shoal_Replace7
{
Reset_All_Placements_of_same_type = "true"
Target = "Keg4"
}
cMissionResetItemPlacement Shoal_Replace6
{
Reset_All_Placements_of_same_type = "true"
Target = "Machete3"
}
cMissionResetItemPlacement Shoal_Replace5
{
Reset_All_Placements_of_same_type = "true"
Target = "Micstand1"
}
cMissionResetItemPlacement Shoal_Replace4
{
Reset_All_Placements_of_same_type = "true"
Target = "NightStick1"
}
cMissionResetItemPlacement Shoal_Replace3
{
Reset_All_Placements_of_same_type = "true"
Target = "PottedPlant_6"
}
cMissionResetItemPlacement Shoal_Replace23
{
Reset_All_Placements_of_same_type = "true"
Target = "Shotgun"
}
cMissionResetItemPlacement Shoal_Replace22
{
Reset_All_Placements_of_same_type = "true"
Target = "SpeakerWeapon"
}
cMissionResetItemPlacement Shoal_Replace21
{
Reset_All_Placements_of_same_type = "true"
Target = "VelvetPole2"
}
cMissionResetItemPlacement Shoal_Replace20
{
Reset_All_Placements_of_same_type = "true"
Target = "WrenchLarge"
}
cMissionResetItemPlacement Shoal_Replace19
{
Reset_All_Placements_of_same_type = "true"
Target = "Painting3"
}
}
cMissionLevelReady Challenge3-Start18
{
LevelName = "LEVEL_YUCATAN_CASINO"
cMissionSpawnItem ChallengeLure2
{
DisablePhysicsOnInitialPlacement = "true"
IsStatic = "false"
ItemName = "Psycho1"
LinearVelocity = "0.0,0.0,0.0"
Location = "393.069,6.052,-293.488"
Rotation = "0,0,0,1"
}
cMissionZombieRemoval Challenge_SafeZone18
{
Location = "395.371,6.052,-289.014"
Radius = "20"
}
}
cMissionOnEvent Gold6
{
EventString = "Gold28"
cMissionSetChuckState GiveReward6
{
ChuckState = "19"
Value = "53"
}
}
cMissionObjective Challenge3-Objective18
{
HideFromFE = "false"
cMissionObjectiveEvent Challenge3-Event19
{
EventString = "guide_arrow_reached"
MissionWaypoint = "YUCATAN_CASINO,393.069,6.052,-293.488"
}
}
cMissionChallengeEnd C5_Psycho_Battle_End
{
cMissionSendCommandToProp Door_Unlocked
{
Loop = "true"
PropCommand = "8"
PropName = "NightClubDoor1"
}
cMissionSendCommandToProp Door_Unlocked1
{
Loop = "true"
PropCommand = "8"
PropName = "NightClubDoor"
}
cMissionSendCommandToProp Door_Open
{
Loop = "true"
PropCommand = "13"
PropName = "NightClubDoor"
}
}
}
There are parts of the code we don't need, such as zombiefactory, itemreplacment, command prop, and others.
And now, here you have the clean code, which only have the important parts of the code:
cMissionDefinition C5_Psycho_Battle
{
Duration = "262800"
ExplicitStart = "false"
MissionType = "16"
Module = "2"
StartTime = "25200"
WaitUntilEnd = "false"
cMissionChallengeStart test20
{
ChallengeItemName = "Psycho1"
EnableFade = "true"
FadeIntoBlackType = "2"
FadeOutOfBlackType = "0"
MinimumDurationSecondsReal = "3"
MinimumDurationSecondsTicks = "0"
MinNumberOfSecondsBeforeFadeOut = "1"
{
Loop = "true"
PropCommand = "18"
}
cMissionTeleportPlayer Move_Player1
{
SpawnPoint = "StartTwins"
TeleportAllPlayers = "true"
}
}
cMissionLevelReady Challenge3-Start18
{
LevelName = "LEVEL_YUCATAN_CASINO"
cMissionSpawnItem ChallengeLure2
{
DisablePhysicsOnInitialPlacement = "true"
IsStatic = "false"
ItemName = "Psycho1"
LinearVelocity = "0.0,0.0,0.0"
Location = "393.069,6.052,-293.488"
Rotation = "0,0,0,1"
}
}
cMissionOnEvent Gold6
{
EventString = "Gold28"
cMissionSetChuckState GiveReward6
{
ChuckState = "19"
Value = "53"
}
}
cMissionObjective Challenge3-Objective18
{
HideFromFE = "false"
cMissionObjectiveEvent Challenge3-Event19
{
EventString = "guide_arrow_reached"
MissionWaypoint = "YUCATAN_CASINO,393.069,6.052,-293.488"
}
}
cMissionChallengeEnd C5_Psycho_Battle_End
}
}
After this, we can see that the code is small, really small indeed, but is not the end.
While looking at the code i found this:
ChallengeItemName = "Psycho1"
Which is a dispenser in items.txt that spawn the psychopath:
cChallengeDispenseItemPsycho Psycho1
{
AssetFilename = "sandbox_mode_prop"
AudioEventID = "10"
AudioFilename = "fx_kiosk"
AudioItemName = "Kiosk"
BattleFile = "data/datafile/battle_twins.txt"
BattleName = "Twins"
BronzeLevel = "180"
BronzeLevelCoop = "170"
BronzeReward = "10000"
CollidableQuality = "0"
CollisionType = "3"
Description = "86204"
DescriptionCoop = "86224"
DisplayName = "86000"
GoldLevel = "60"
GoldLevelCoop = "55"
GoldReward = "45000"
InteractDistance = "2"
LoadDistance = "100"
MergedFilename = "data/dynamicprops/sandbox_mode_prop"
Mission = "C5_Psycho_Battle"
MissionCoop = "C5_Psycho_BattleCoop"
NameID = "86104"
NameIDCoop = "86124"
PropEffectsOnCondition0 = "0"
PyroEffect0 = "379"
RestrictedByRegion = "false"
SilverLevel = "120"
SilverLevelCoop = "115"
SilverReward = "20000"
SortOrder = "28"
Units = "3"
UnlockCriteria = "9495"
Weight = "200"
}
Yup, the code you need to edit is bigger now, but wait, there is more.
After looking at the dispenser code, i see it use the battle file of the twins, which say how they fight
what they do, and where it starts:
cBossNode TwinsBattleStart
{
Boss = "boss_twinsilver"
Location = "398, 6.0, -313.0"
Name = "TwinsBattleStart"
Rotation = "0.0, 0.5, 0.0"
Type = "8"
}
cBossNode BattleRepositionNode0
{
Boss = "boss_twinsilver"
Location = "-4.21, 0.2, -21.47"
Name = "BattleRepositionNode0"
Type = "10"
}
cBossNode BattleRepositionNode1
{
Boss = "boss_twinsilver"
Location = "-1.88, 0.2, -21.3"
Name = "BattleRepositionNode1"
Type = "10"
}
cBossNode BattleRepositionNode2
{
Boss = "boss_twinsilver"
Location = "-3.17, 0.2, -19.7"
Name = "BattleRepositionNode2"
Type = "10"
}
cBossNode BattleRepositionNode3
{
Boss = "boss_twinsilver"
Location = "3.43, 0.2, -19.7"
Name = "BattleRepositionNode03"
Type = "10"
}
cBossNode BattleRepositionNode4
{
Boss = "boss_twinsilver"
Location = "2.67, 0.2, -21.0"
Name = "BattleRepositionNode4"
Type = "10"
}
cBossNode TwinsPlayerStart0
{
Boss = "boss_twinsilver"
Location = "396.0, 6.0, -309.0"
Name = "TwinsPlayerStart0"
Rotation = "0, -1.5, 0"
Type = "9"
}
cBossNode TwinsPlayerStart1
{
Boss = "boss_twinsilver"
Location = "396.0, 6.0, -312.0"
Name = "TwinsPlayerStart1"
Rotation = "0, -1.5, 0"
Type = "9"
}
cItemPlacement TwinsWhite
{
ItemName = "boss_twingold"
Location = "399.0, 6.0, -302.0"
Rotation = "0.029, 0.716, 0.026, -0.697"
}
cItemPlacement TwinsBlack
{
ItemName = "boss_twinsilver"
Location = "400.0, 6.0, -321.0"
Rotation = "0.029,0.716,0.026,-0.697"
}
cItemPlacement TwinsBlackKatana
{
DisablePhysicsOnInitialPlacement = "true"
ItemName = "TwinsBlackKatana"
Location = "395.0, 6.0, -315.0"
}
cItemPlacement TwinsWhiteKatana
{
DisablePhysicsOnInitialPlacement = "true"
ItemName = "TwinsWhiteKatana"
Location = "395.0, 6.0, -309.0"
}
cItemPlacement TwinsBlackPainting
{
DisablePhysicsOnInitialPlacement = "true"
ItemName = "TwinsBlackPainting"
Location = "399.0, 12.0, -302.0"
}
cItemPlacement TwinsWhitePainting
{
DisablePhysicsOnInitialPlacement = "true"
ItemName = "TwinsWhitePainting"
Location = "399.0, 12.0, -302.0"
}
cBossNode TwinsWhiteZoneNode
{
Boss = "boss_twingold"
Location = "0.0, 6.0, 0.0"
Type = "4"
}
cBossNode TwinsBlackCoverNode0
{
Boss = "boss_twinsilver"
Location = "12.29,-0.48,10.49"
Type = "1"
}
cBossNode TwinsBlackCoverNode1
{
Boss = "boss_twinsilver"
Location = "7.49,0.03,18.09"
Type = "1"
}
cBossNode TwinsBlackCoverNode2
{
Boss = "boss_twinsilver"
Location = "-4.52,0.03,11.71"
Type = "1"
}
cBossNode TwinsBlackCoverNode3
{
Boss = "boss_twinsilver"
Location = "-14.48,0.03,6.23"
Type = "1"
}
cBossNode TwinsBlackCoverNode4
{
Boss = "boss_twinsilver"
Location = "-9.58,0.03,-3.37"
Type = "1"
}
cBossNode TwinsBlackCoverNode5
{
Boss = "boss_twinsilver"
Location = "-3.29,0.03,-12.29"
Type = "1"
}
cBossNode TwinsBlackCoverNode6
{
Boss = "boss_twinsilver"
Location = "6.54,-0.47,-7.44"
Type = "1"
}
cBossNode TwinsBlackCoverNode7
{
Boss = "boss_twinsilver"
Location = "15.82,-0.47,-2.19"
Type = "1"
}
cBossNode TwinsBlackCoverNode8
{
Boss = "boss_twinsilver"
Location = "13.25,-0.47,5.86"
Type = "1"
}
cBossNode TwinsZone000
{
Boss = "boss_twinsilver"
Location = "-2.45, -0.4, -9.5"
Name = "TwinsZone000"
Type = "4"
}
cBossNode TwinsZone001
{
Boss = "boss_twinsilver"
Location = "1.3, -0.4, -6.2"
Name = "TwinsZone001"
Type = "4"
}
cBossNode TwinsZone002
{
Boss = "boss_twinsilver"
Location = "-0.5, -0.4, -3.3"
Name = "TwinsZone002"
Type = "4"
}
cBossNode TwinsZone003
{
Boss = "boss_twinsilver"
Location = "-2.8, -0.4, -2.6"
Name = "TwinsZone003"
Type = "4"
}
cBossNode TwinsZone004
{
Boss = "boss_twinsilver"
Location = "-4.8, -0.4, -4.5"
Name = "TwinsZone004"
Type = "4"
}
cBossNode TwinsZone2000
{
Boss = "boss_twingold"
Location = "-6.2, -0.4, 7.4"
Name = "TwinsZone2000"
Type = "7"
}
cBossNode TwinsZone2001
{
Boss = "boss_twingold"
Location = "-10.7, -0.4, 5.25"
Name = "TwinsZone2001"
Type = "7"
}
cBossNode TwinsZone2002
{
Boss = "boss_twingold"
Location = "-7.2, -0.4, 0.0"
Name = "TwinsZone2002"
Type = "7"
}
cBossNode TwinsZone2003
{
Boss = "boss_twingold"
Location = "-4.8, -0.4, 1.4"
Name = "TwinsZone2003"
Type = "7"
}
cBossNode TwinsZone2004
{
Boss = "boss_twingold"
Location = "-4.1, -0.4, 3.4"
Name = "TwinsZone2004"
Type = "7"
}
cWaypoint BossWaypoint000
{
Location = "9.17,-0.35,2.80"
Name = "BossWaypoint000"
Type = "1"
}
cWaypoint BossWaypoint001
{
Location = "11.43,-0.35,4.08"
Name = "BossWaypoint001"
Type = "1"
}
cWaypoint BossWaypoint003
{
Location = "14.74,-0.48,-1.86"
Name = "BossWaypoint003"
Type = "1"
}
cWaypoint BossWaypoint004
{
Location = "8.22,-0.48,-5.35"
Name = "BossWaypoint004"
Type = "1"
}
cWaypoint BossWaypoint006
{
Location = "6.64,-0.48,-2.50"
Name = "BossWaypoint006"
Type = "1"
}
cWaypoint BossWaypoint007
{
Location = "2.22,-0.48,-5.02"
Name = "BossWaypoint007"
Type = "1"
}
cWaypoint BossWaypoint008
{
Location = "3.96,-0.48,-7.66"
Name = "BossWaypoint008"
Type = "1"
}
cWaypoint BossWaypoint009
{
Location = "-4.28,-0.48,-2.67"
Name = "BossWaypoint009"
Type = "1"
}
cWaypoint BossWaypoint010
{
Location = "-6.49,0.03,-4.04"
Name = "BossWaypoint010"
Type = "1"
}
cWaypoint BossWaypoint011
{
Location = "-6.69,0.03,-5.03"
Name = "BossWaypoint011"
Type = "1"
}
cWaypoint BossWaypoint012
{
Location = "-1.79,0.15,-11.03"
Name = "BossWaypoint012"
Type = "1"
}
cWaypoint BossWaypoint015
{
Location = "-3.33,0.15,-11.00"
Name = "BossWaypoint015"
Type = "1"
}
cWaypoint BossWaypoint017
{
Location = "-3.52,-0.35,6.88"
Name = "BossWaypoint017"
Type = "1"
}
cWaypoint BossWaypoint018
{
Location = "-4.91,0.15,9.31"
Name = "BossWaypoint018"
Type = "1"
}
cWaypoint BossWaypoint019
{
Location = "-6.24,0.15,9.20"
Name = "BossWaypoint019"
Type = "1"
}
cWaypoint BossWaypoint020
{
Location = "-12.41,0.15,5.54"
Name = "BossWaypoint020"
Type = "1"
}
cWaypoint BossWaypoint021
{
Location = "-8.10,0.15,-1.43"
Name = "BossWaypoint021"
Type = "1"
}
cWaypoint BossWaypoint022
{
Location = "-9.01,0.15,-0.88"
Name = "BossWaypoint022"
Type = "1"
}
cWaypoint BossWaypoint023
{
Location = "-6.01,-0.35,-0.05"
Name = "BossWaypoint023"
Type = "1"
}
cWaypoint BossWaypoint024
{
Location = "-0.13,-0.35,8.69"
Name = "BossWaypoint024"
Type = "1"
}
cWaypoint BossWaypoint025
{
Location = "-1.35,0.15,10.76"
Name = "BossWaypoint025"
Type = "1"
}
cWaypoint BossWaypoint026
{
Location = "-1.02,0.15,12.16"
Name = "BossWaypoint026"
Type = "1"
}
cWaypoint BossWaypoint028
{
Location = "1.13,0.15,13.57"
Name = "BossWaypoint028"
Type = "1"
}
cWaypoint BossWaypoint030
{
Location = "7.78,0.15,17.11"
Name = "BossWaypoint030"
Type = "1"
}
cWaypoint BossWaypoint031
{
Location = "8.95,0.15,16.36"
Name = "BossWaypoint031"
Type = "1"
}
cWaypoint BossWaypoint032
{
Location = "11.28,-0.35,11.08"
Name = "BossWaypoint032"
Type = "1"
}
cWaypoint BossWaypoint033
{
Location = "8.20,-0.35,9.46"
Name = "BossWaypoint033"
Type = "1"
}
cWaypoint BossWaypoint034
{
Location = "16.3,-0.35,5.6"
Name = "BossWaypoint034"
Type = "1"
}
cWaypoint BossWaypoint035
{
Location = "18.5,-0.35,7.2"
Name = "BossWaypoint035"
Type = "1"
}
cWaypoint BossWaypoint036
{
Location = "15.06,-0.35,13.7"
Name = "BossWaypoint036"
Type = "1"
}
cWaypoint BossWaypoint037
{
Location = "12.58,-0.35,12.5"
Name = "BossWaypoint037"
Type = "1"
}
cWaypoint BossWaypoint038
{
Location = "17.43,-0.35,4.93"
Name = "BossWaypoint038"
Type = "1"
}
cWaypoint BossWaypoint039
{
Location = "17.37,-0.35,1.78"
Name = "BossWaypoint039"
Type = "1"
}
cWaypoint BossWaypoint040
{
Location = "16.18,-0.35,-2.55"
Name = "BossWaypoint040"
Type = "1"
}
cWaypoint BossWaypoint041
{
Location = "15.32,-0.35,-3.80"
Name = "BossWaypoint041"
Type = "1"
}
cWaypoint BossWaypoint042
{
Location = "14.85,-0.35,-4.74"
Name = "BossWaypoint042"
Type = "1"
}
cWaypoint BossWaypoint043
{
Location = "10.67,-0.35,-6.90"
Name = "BossWaypoint043"
Type = "1"
}
cWaypoint BossWaypoint044
{
Location = "12.44,0.15,-7.59"
Name = "BossWaypoint044"
Type = "1"
}
cWaypoint BossWaypoint045
{
Location = "11.87,-0.10,-7.13"
Name = "BossWaypoint045"
Type = "1"
}
cWaypoint BossWaypoint046
{
Location = "15.29,0.15,-6.07"
Name = "BossWaypoint046"
Type = "1"
}
cWaypoint BossWaypoint047
{
Location = "16.31,0.15,-9.59"
Name = "BossWaypoint047"
Type = "1"
}
cWaypoint BossWaypoint048
{
Location = "14.25,0.15,-10.75"
Name = "BossWaypoint048"
Type = "1"
}
cWaypoint BossWaypoint050
{
Location = "12.27,0.15,-8.75"
Name = "BossWaypoint050"
Type = "1"
}
cWaypoint BossWaypoint051
{
Location = "10.96,0.15,-9.63"
Name = "BossWaypoint051"
Type = "1"
}
cWaypoint BossWaypoint052
{
Location = "13.52,0.15,-11.58"
Name = "BossWaypoint052"
Type = "1"
}
cWaypoint BossWaypoint053
{
Location = "11.92,0.15,-11.78"
Name = "BossWaypoint053"
Type = "1"
}
cWaypoint BossWaypoint054
{
Location = "12.93,0.15,-13.48"
Name = "BossWaypoint054"
Type = "1"
}
cWaypoint BossWaypoint055
{
Location = "13.91,0.15,-16.28"
Name = "BossWaypoint055"
Type = "1"
}
cWaypoint BossWaypoint056
{
Location = "12.14,0.15,-17.25"
Name = "BossWaypoint056"
Type = "1"
}
cWaypoint BossWaypoint057
{
Location = "4.84,0.15,-18.11"
Name = "BossWaypoint057"
Type = "1"
}
cWaypoint BossWaypoint058
{
Location = "2.81,0.15,-17.54"
Name = "BossWaypoint058"
Type = "1"
}
cWaypoint BossWaypoint059
{
Location = "3.50,0.15,-16.95"
Name = "BossWaypoint059"
Type = "1"
}
cWaypoint BossWaypoint061
{
Location = "11.14,0.15,-11.76"
Name = "BossWaypoint061"
Type = "1"
}
cWaypoint BossWaypoint062
{
Location = "3.74,0.15,-15.81"
Name = "BossWaypoint062"
Type = "1"
}
cWaypoint BossWaypoint063
{
Location = "1.60,0.15,-17.59"
Name = "BossWaypoint063"
Type = "1"
}
cWaypoint BossWaypoint064
{
Location = "-0.39,0.15,-18.65"
Name = "BossWaypoint064"
Type = "1"
}
cWaypoint BossWaypoint065
{
Location = "-1.85,0.15,-19.34"
Name = "BossWaypoint065"
Type = "1"
}
cWaypoint BossWaypoint066
{
Location = "-4.25,0.15,-15.76"
Name = "BossWaypoint066"
Type = "1"
}
cWaypoint BossWaypoint067
{
Location = "-5.42,0.15,-15.33"
Name = "BossWaypoint067"
Type = "1"
}
cWaypoint BossWaypoint068
{
Location = "-6.94,0.15,-12.32"
Name = "BossWaypoint068"
Type = "1"
}
cWaypoint BossWaypoint069
{
Location = "-6.33,0.15,-11.96"
Name = "BossWaypoint069"
Type = "1"
}
cWaypoint BossWaypoint070
{
Location = "-6.96,0.15,-10.73"
Name = "BossWaypoint070"
Type = "1"
}
cWaypoint BossWaypoint071
{
Location = "-7.76,0.40,-10.86"
Name = "BossWaypoint071"
Type = "1"
}
cWaypoint BossWaypoint072
{
Location = "-11.56,0.40,-12.86"
Name = "BossWaypoint072"
Type = "1"
}
cWaypoint BossWaypoint073
{
Location = "-17.89,0.40,-1.38"
Name = "BossWaypoint073"
Type = "1"
}
cWaypoint BossWaypoint074
{
Location = "-14.14,0.15,2.15"
Name = "BossWaypoint074"
Type = "1"
}
cWaypoint BossWaypoint075
{
Location = "-14.70,0.15,3.29"
Name = "BossWaypoint075"
Type = "1"
}
cWaypoint BossWaypoint076
{
Location = "-15.85,0.15,2.89"
Name = "BossWaypoint076"
Type = "1"
}
cWaypoint BossWaypoint077
{
Location = "-17.05,0.15,5.90"
Name = "BossWaypoint077"
Type = "1"
}
cWaypoint BossWaypoint078
{
Location = "-16.26,0.15,7.19"
Name = "BossWaypoint078"
Type = "1"
}
cWaypoint BossWaypoint079
{
Location = "-15.53,0.15,7.83"
Name = "BossWaypoint079"
Type = "1"
}
cWaypoint BossWaypoint080
{
Location = "-10.89,0.15,10.21"
Name = "BossWaypoint080"
Type = "1"
}
cWaypoint BossWaypoint081
{
Location = "-10.53,0.15,12.29"
Name = "BossWaypoint081"
Type = "1"
}
cWaypoint BossWaypoint082
{
Location = "-11.73,0.15,14.46"
Name = "BossWaypoint082"
Type = "1"
}
cWaypoint BossWaypoint083
{
Location = "-13.16,0.15,13.33"
Name = "BossWaypoint083"
Type = "1"
}
cWaypoint BossWaypoint084
{
Location = "-16.23,0.15,17.77"
Name = "BossWaypoint084"
Type = "1"
}
cWaypoint BossWaypoint085
{
Location = "-17.48,0.15,19.59"
Name = "BossWaypoint085"
Type = "1"
}
cWaypoint BossWaypoint086
{
Location = "-17.22,0.15,21.73"
Name = "BossWaypoint086"
Type = "1"
}
cWaypoint BossWaypoint087
{
Location = "-12.46,0.15,23.52"
Name = "BossWaypoint087"
Type = "1"
}
cWaypoint BossWaypoint088
{
Location = "-10.84,0.15,22.67"
Name = "BossWaypoint088"
Type = "1"
}
cWaypoint BossWaypoint089
{
Location = "-10.01,0.15,21.24"
Name = "BossWaypoint089"
Type = "1"
}
cWaypoint BossWaypoint090
{
Location = "-9.39,0.15,15.64"
Name = "BossWaypoint090"
Type = "1"
}
cWaypoint BossWaypoint091
{
Location = "-9.63,0.15,14.62"
Name = "BossWaypoint091"
Type = "1"
}
cWaypoint BossWaypoint092
{
Location = "-8.67,0.15,13.14"
Name = "BossWaypoint092"
Type = "1"
}
cWaypoint BossWaypoint093
{
Location = "-6.55,0.15,12.65"
Name = "BossWaypoint093"
Type = "1"
}
cWaypoint BossWaypoint094
{
Location = "-12.34,0.15,-1.33"
Name = "BossWaypoint094"
Type = "1"
}
cWaypoint BossWaypoint095
{
Location = "-13.42,0.40,-1.57"
Name = "BossWaypoint095"
Type = "1"
}
cWaypoint BossWaypoint096
{
Location = "-9.78,0.40,-8.26"
Name = "BossWaypoint096"
Type = "1"
}
cWaypoint BossWaypoint097
{
Location = "-9.02,0.15,-7.71"
Name = "BossWaypoint097"
Type = "1"
}
cWaypoint BossWaypoint098
{
Location = "-0.5,-0.4,-5.3"
Name = "BossWaypoint098"
Type = "1"
}
cWaypoint BossWaypoint099
{
Location = "0.9,-0.4,-3.8"
Name = "BossWaypoint098"
Type = "1"
}
cWaypoint BossWaypoint100
{
Location = "0.3,-0.4,-2.8"
Name = "BossWaypoint100"
Type = "1"
}
cWaypoint BossWaypoint101
{
Location = "-2.7,-0.4,-1.9"
Name = "BossWaypoint101"
Type = "1"
}
cWaypoint BossWaypoint102
{
Location = "-6.0,-0.4,4.4"
Name = "BossWaypoint102"
Type = "1"
}
cWaypoint BossWaypoint103
{
Location = "-3.6,-0.4,-4.7"
Name = "BossWaypoint103"
Type = "1"
}
cWaypoint BossWaypoint104
{
Location = "-3.3,-0.4,3.7"
Name = "BossWaypoint104"
Type = "1"
}
cWaypoint BossWaypoint105
{
Location = "-4.0,-0.4,-0.8"
Name = "BossWaypoint105"
Type = "1"
}
cWaypoint BossWaypoint106
{
Location = "-4.6,-0.4,5.0"
Name = "BossWaypoint106"
Type = "1"
}
cWaypoint BossWaypoint107
{
Location = "0.6.6,-0.4,-4.7"
Name = "BossWaypoint107"
Type = "1"
}
And yes, it's a really large code.
For being able to spawn your custom psychopath, you are gonna need to edit the three files, yes, edit and change
a lot of lines.
*Missions.txt*For the first file or in this case, code part, you are gonna need to change the next lines:
The first is the mission name; the next and the last is the name of the dispenser:
cMissionDefinition C5_Psycho_Battle
ChallengeItemName = "Psycho1"
ItemName = "Psycho1"
There is also this part of the code, maybe this can spawn you in another level, but i don't know. Need to see how this work.
SpawnPoint = "StartTwins"
*items.txt* ~Dispenser~ Psycho1The next part would be the dispenser.
Those are the codes that you can change.
They need to have the battlefile for the psychopath you want; the same battlename they use for their mission in the normal game (you can check that in missions.txt or in datafile.big); the same name of the mission that load the dispenser; and the same name of the mission that load the dispenser in Co-op.
cChallengeDispenseItemPsycho Psycho1
BattleFile = "data/datafile/battle_twins.txt"
BattleName = "Twins"
Mission = "C5_Psycho_Battle"
MissionCoop = "C5_Psycho_BattleCoop"
*battlefile_.txt*And for the last part, the battlefile. It's the file that is used in the whole thing.
If you want to spawn a desired psychopath, you are gonna need to edit this file.
And by edit, i mean a whole re-write. Why? you need to edit all the coordinates in the file to match them to where you want to spawn your desired psychopath.
If you don't edit them, then the game would crash, or you can spawn in another level, the psychopaths would move to a place that doesn't exist and they would get stuck in a wall, they can just keep running in circles, and more random stuff that can happen.
Editing battlefile_.txtFirst of all, i recommend you to edit the battlefile, this is used in the entire thing. You can make a custom battlefile and edit it so it doesn't change the original. Select your desired psychopath and where do you want him to spawn, this will be really hard to do, so i recommend you the one who have the less code in his battlefile (It' the postman, that's the one that have the less code). Look for coordinates, read what the coordinate name said about it (Run to, waypoint, start, spawn, appear...), and then select a coordinate to use.
Remember to name the custom battlefile with another name: battle_cat.txt
Editing items.txtAfter you did that, then the next file to edit would be items.txt.
Copy the entire dispenser code and put it under the original.
Put a custom name for it, not too large of course (postmancat).
Put the name of the custom battlefile you did (battle_cat.txt)
And make the name of the battlename and both missions. Just remember, not too big:
BattleName = "cat"
Mission = "postman_cat"
MissionCoop = "coopostman_cat"
The custom options for the dispenser would be like this:
cChallengeDispenseItemPsycho postmancat
BattleFile = "data/datafile/battle_cat.txt"
BattleName = "cat"
Mission = "postman_cat"
MissionCoop = "postman_cat"
Editing missions.txtAnd for the last, the edit to missions.txt.
This is important, because it will tell what will happen.
The edits to it are more than in items.txt, but not that much as in the battlefile.
Remember that in the last part we named some custom lines, we are gonna use some of them.
First of all, we are gonna need to put the custom mission name: postman_cat
The next thing to do would be editing the challengeitemname: postmancat
And now the spawn point. This change with the area you want to spawn the psychopath. I don't know if you can use a direct coordinate ("393.069,6.052,-293.488"). If you leave it like in the same way as in the original code, you are gonna spawn in the Yucatan casino (or your game can crash).
And the next code:
LevelName = "Here goes the name of the level where you want to spawn the psychopath"
ItemName = "postmancat" This is the name of the dispenser.
Location = "393.069,6.052,-293.488" I find this as a random coordinate. Put something near where your psycho is going to spawn.
And for the last part of the code:
cMissionObjective (See if you can change it to something else)
cMissionObjectiveEvent (See if you can change it to something else, it can't be the same as the last one.)
MissionWaypoint = "YUCATAN_CASINO,393.069,6.052,-293.488" (This will say where you have to go. Level name and coordinate)
And the end of the mission: cMissionChallengeEnd (name of the mission)_End
You edit this:
missionname
challengeitemname
spawnpoint
LevelName
ItemName
Location
cMissionObjective
cMissionObjectiveEvent
MissionWaypoint
cMissionChallengeEnd
And the code should look like this:
cMissionDefinition postman_cat
{
Duration = "262800"
ExplicitStart = "false"
MissionType = "16"
Module = "2"
StartTime = "25200"
WaitUntilEnd = "false"
cMissionChallengeStart test20
{
ChallengeItemName = "postmancat"
EnableFade = "true"
FadeIntoBlackType = "2"
FadeOutOfBlackType = "0"
MinimumDurationSecondsReal = "3"
MinimumDurationSecondsTicks = "0"
MinNumberOfSecondsBeforeFadeOut = "1"
{
Loop = "true"
PropCommand = "18"
}
cMissionTeleportPlayer Move_Player1
{
SpawnPoint = "Place a custom coordinate here?"
TeleportAllPlayers = "true"
}
}
cMissionLevelReady Challenge3-Start18
{
LevelName = "LEVEL_YUCATAN_CASINO"
cMissionSpawnItem ChallengeLure2
{
DisablePhysicsOnInitialPlacement = "true"
IsStatic = "false"
ItemName = "postmancat"
LinearVelocity = "0.0,0.0,0.0"
Location = "Coordinate near the psycho?"
Rotation = "0,0,0,1"
}
}
cMissionOnEvent Gold6
{
EventString = "Gold28"
cMissionSetChuckState GiveReward6
{
ChuckState = "19"
Value = "53"
}
}
cMissionObjective (catrelatedname?)
{
HideFromFE = "false"
cMissionObjectiveEvent (catrelatedname2?)
{
EventString = "guide_arrow_reached"
MissionWaypoint = "(Level name and coordinate)"
}
}
cMissionChallengeEnd postman_cat_End
}
}
All the custom names are just, well, custom. You can put whatever you want, just not a name that is already used in the game, and also, not a really large name. I may have missed something in the code. This can be edited and it would be edited. This can also work or not.
'Cause there are so many edited codes and lines, there is possible that at the first time you edit something it would not work, you just need to keep editing.
I don't know if this is even a tutorial. If there is something wrong about it, i can change it.
If you need help with something just told me.