deadCells.hx 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. function buildMainRooms()
  2. {
  3. Struct.createSpecificRoom("PrisonFlaskRoom").setName("start")
  4. .chain(Struct.createSpecificRoom("PerkShop").setName("perk"))
  5. .chain(Struct.createSpecificRoom("PrisonMonsterDoor").setName("monster"))
  6. .chain(Struct.createSpecificExit("PrisonDepths", "aDangerousExit").setName("mainExit"));
  7. Struct.createRoomWithType("BuyableTreasure")
  8. .addBefore("mainExit");
  9. Struct.createRoomWithType("WallJumpGate")
  10. .addBefore("mainExit");
  11. Struct.createSpecificRoom("ChristmasGift")
  12. .addBefore("mainExit");
  13. Struct.createSpecificRoom("Pokeball")
  14. .addBefore("mainExit");
  15. Struct.createShop().branchBetween("monster", "mainExit");
  16. Struct.createRoomWithType("Treasure").branchBetween("monster", "mainExit");
  17. Struct.createRunicZDoor(Struct.createRoomWithType("Treasure"), 3, Struct.allRooms);
  18. Struct.createRunicZDoor(Struct.createRoomWithType("Treasure"), 1, Struct.allRooms);
  19. }
  20. function buildSecondaryRooms()
  21. {
  22. trace("buildSecondaryRooms");
  23. var exit = Struct.getRoomByName("mainExit");
  24. var mains = Struct.allRooms.filter(function(_room) return _room.parent != null &&
  25. _room.parent != Struct.getRoomByName("start") &&
  26. _room.parent != Struct.getRoomByName("perk") &&
  27. _room.parent != Struct.getRoomByName("monster") &&
  28. _room != exit && _room.isMainLevel() && _room.isParentOf(exit) && _room.childrenCount > 1);
  29. var mainsCopy = mains.copy();
  30. for(i in 0...Random.irange(1, 4)) {
  31. if(mainsCopy.length == 0) {
  32. mainsCopy = mains.copy();
  33. }
  34. Struct.createRoomWithTypeFromGroup("Combat", "Prison").addBefore(Random.arraySplice(mainsCopy).getName());
  35. }
  36. for(i in 0...2) {
  37. Struct.createRoomWithTypeFromGroup("Combat", "Prison").addBefore("mainExit");
  38. }
  39. }
  40. function addTeleports()
  41. {
  42. var rooms = Struct.allRooms.filter(function(_room) return _room.isMainLevel() );
  43. var exit = Struct.getRoomByName("mainExit");
  44. for(room in rooms) {
  45. if( room.type == "Corridor" && room.childrenCount > 1 && room.calcTypeDistance("Teleport", true) > 1 ){
  46. room.setType("Teleport");
  47. }
  48. }
  49. for(room in rooms) {
  50. if(room.calcTypeDistance("Teleport", true) > 2){
  51. Struct.createRoomWithType("Teleport").addBefore(room.getName());
  52. }
  53. }
  54. }
  55. function buildTimedDoors()
  56. {
  57. var dh = new DecisionHelper(Struct.allRooms);
  58. dh.score(function(_room) return _room.spawnDistance <= 5 ? -4 : _room.spawnDistance >= 8 ? -10 : 0);
  59. dh.score(function(_room) return Random.irange(0, 1));
  60. Struct.createTimedBranchBefore(dh.getBest());
  61. }
  62. function finalize()
  63. {
  64. Struct.createRoomWithType("TeleportGate")
  65. .addBefore("mainExit");
  66. }
  67. function buildMobRoster(_mobList)
  68. {
  69. addMobRosterFrom("PrisonStart", _mobList);
  70. }
  71. function setLevelProps(_levelProps)
  72. {
  73. setLevelPropsFrom("PrisonStart", _levelProps);
  74. _levelProps.timedDoor = 8.0;
  75. _levelProps.timedGoldMul = 2.0;
  76. _levelProps.timedScrolls = 1;
  77. _levelProps.wind = 0.0;
  78. _levelProps.musicIntro = "music/prisonstart_loop.ogg";
  79. _levelProps.musicLoop = "music/prisonstart_loop.ogg";
  80. _levelProps.doorColor = 11278336;
  81. _levelProps.zDoorColor = 11278336;
  82. _levelProps.loadingColor = 2491170;
  83. _levelProps.loadingDescColor = 6652612;
  84. }
  85. function setLevelInfo(_levelInfo){
  86. setLevelInfoFrom("PrisonStart", _levelInfo);
  87. _levelInfo.baseLootLevel = 3;
  88. _levelInfo.baseMobTier = 5;
  89. _levelInfo.biome = "PrisonStart";
  90. _levelInfo.cellBonus = 0.0;
  91. _levelInfo.doubleUps = 1;
  92. _levelInfo.eliteRoomChance = 1.0;
  93. _levelInfo.eliteWanderChance = 1.0;
  94. _levelInfo.extraMobTier = 0;
  95. _levelInfo.flags = 1;
  96. _levelInfo.goldBonus = 0;
  97. _levelInfo.mobDensity = 1.3;
  98. _levelInfo.name = "Decaying Cells";
  99. _levelInfo.tripleUps = 2;
  100. }