diff --git a/data/.wolf3d/N3Ddata.cdogscpn/graphics/brick_color.png b/data/.wolf3d/N3Ddata.cdogscpn/graphics/brick_color.png new file mode 100644 index 000000000..7d880d8a5 Binary files /dev/null and b/data/.wolf3d/N3Ddata.cdogscpn/graphics/brick_color.png differ diff --git a/data/.wolf3d/N3Ddata.cdogscpn/graphics/brick_color.txt b/data/.wolf3d/N3Ddata.cdogscpn/graphics/brick_color.txt new file mode 100644 index 000000000..76b2e9f37 --- /dev/null +++ b/data/.wolf3d/N3Ddata.cdogscpn/graphics/brick_color.txt @@ -0,0 +1,4 @@ +Derived from Dawnblocker Ortho +By Buch +http://opengameart.org/content/dawnblocker-ortho +http://creativecommons.org/publicdomain/zero/1.0/ \ No newline at end of file diff --git a/data/.wolf3d/N3Ddata.cdogscpn/graphics/coat_of_arms_flag.png b/data/.wolf3d/N3Ddata.cdogscpn/graphics/coat_of_arms_flag.png deleted file mode 100644 index cf76b7ce8..000000000 Binary files a/data/.wolf3d/N3Ddata.cdogscpn/graphics/coat_of_arms_flag.png and /dev/null differ diff --git a/data/.wolf3d/N3Ddata.cdogscpn/graphics/curtain_blue.png b/data/.wolf3d/N3Ddata.cdogscpn/graphics/curtain_blue.png new file mode 100644 index 000000000..3d7201efd Binary files /dev/null and b/data/.wolf3d/N3Ddata.cdogscpn/graphics/curtain_blue.png differ diff --git a/data/.wolf3d/N3Ddata.cdogscpn/graphics/noah_flag.png b/data/.wolf3d/N3Ddata.cdogscpn/graphics/noah_flag.png new file mode 100644 index 000000000..6fbc875a4 Binary files /dev/null and b/data/.wolf3d/N3Ddata.cdogscpn/graphics/noah_flag.png differ diff --git a/data/.wolf3d/N3Ddata.cdogscpn/map_objects.json b/data/.wolf3d/N3Ddata.cdogscpn/map_objects.json index 3b10d6bf5..695c65802 100644 --- a/data/.wolf3d/N3Ddata.cdogscpn/map_objects.json +++ b/data/.wolf3d/N3Ddata.cdogscpn/map_objects.json @@ -275,6 +275,16 @@ "Health": 0, "Flags": ["Inside", "OnWall"] }, + { + "Name": "curtain_blue", + "Pic": { + "Type": "Normal", + "Pic": "curtain_blue" + }, + "Offset": [-7, -11], + "Health": 0, + "Flags": ["Inside", "OnWall"] + }, { "Name": "monkey_portrait", "Pic": { @@ -305,6 +315,16 @@ "Health": 0, "Flags": ["Inside", "OnWall"] }, + { + "Name": "brick_color", + "Pic": { + "Type": "Normal", + "Pic": "brick_color" + }, + "Offset": [-8, -11], + "Health": 0, + "Flags": ["OnWall"] + }, { "Name": "eagle_portrait", "Pic": { @@ -346,10 +366,10 @@ "Flags": ["OnWall"] }, { - "Name": "coat_of_arms_flag", + "Name": "noah_flag", "Pic": { "Type": "Normal", - "Pic": "coat_of_arms_flag" + "Pic": "noah_flag" }, "Offset": [-7, -11], "Health": 0, diff --git a/data/.wolf3d/N3Ddata.cdogscpn/missions.json b/data/.wolf3d/N3Ddata.cdogscpn/missions.json index 3203e8ca6..380b20a20 100644 --- a/data/.wolf3d/N3Ddata.cdogscpn/missions.json +++ b/data/.wolf3d/N3Ddata.cdogscpn/missions.json @@ -188,8 +188,8 @@ "21": { "Name": "wall", "Type": "Wall", - "Style": "rock", - "Mask": "b801b6ff", + "Style": "brick2", + "Mask": "f09817ff", "MaskAlt": "9c682aff", "CanWalk": false, "IsOpaque": true, @@ -201,7 +201,7 @@ "Name": "wall", "Type": "Wall", "Style": "brick2", - "Mask": "fc2c04ff", + "Mask": "f09817ff", "MaskAlt": "9c682aff", "CanWalk": false, "IsOpaque": true, @@ -212,8 +212,8 @@ "23": { "Name": "wall", "Type": "Wall", - "Style": "wood2", - "Mask": "d9923cff", + "Style": "brick2", + "Mask": "747474ff", "MaskAlt": "9c682aff", "CanWalk": false, "IsOpaque": true, @@ -224,8 +224,8 @@ "24": { "Name": "wall", "Type": "Wall", - "Style": "wood2", - "Mask": "d9923cff", + "Style": "brick2", + "Mask": "747474ff", "MaskAlt": "9c682aff", "CanWalk": false, "IsOpaque": true, @@ -236,9 +236,9 @@ "25": { "Name": "wall", "Type": "Wall", - "Style": "steelwood", - "Mask": "bb8e37ff", - "MaskAlt": "9c682aff", + "Style": "wood", + "Mask": "ffaf61ff", + "MaskAlt": "bbbbbbff", "CanWalk": false, "IsOpaque": true, "Shootable": true, @@ -248,9 +248,9 @@ "26": { "Name": "wall", "Type": "Wall", - "Style": "cobble", - "Mask": "ffffffff", - "MaskAlt": "008400ff", + "Style": "wood", + "Mask": "ffaf61ff", + "MaskAlt": "bbbbbbff", "CanWalk": false, "IsOpaque": true, "Shootable": true, @@ -894,24 +894,13 @@ "MapObject": "swastika_wreath", "Positions": [[9, 14]] }, - { - "MapObject": "coat_of_arms_flag", - "Positions": [[7, 6]] - }, { "MapObject": "elevator_interior", - "Positions": [[11, 6], - [9, 6], - [7, 16]] - }, - { - "MapObject": "iron_cross", - "Positions": [[13, 6]] + "Positions": [[7, 16]] }, { "MapObject": "cobble_moss", - "Positions": [[15, 6], - [3, 8]] + "Positions": [[3, 8]] }, { "MapObject": "hitler_glass", @@ -1147,6 +1136,22 @@ { "MapObject": "naamah_portrait", "Positions": [[3, 6]] + }, + { + "MapObject": "brick_color", + "Positions": [[5, 6]] + }, + { + "MapObject": "noah_flag", + "Positions": [[7, 6]] + }, + { + "MapObject": "curtain_blue", + "Positions": [[11, 6]] + }, + { + "MapObject": "green_relief", + "Positions": [[15, 6]] }], "StaticCharacters": [{ "Index": 0, diff --git a/src/cdogs/map_wolf.c b/src/cdogs/map_wolf.c index 89261fc4e..f3bae3623 100644 --- a/src/cdogs/map_wolf.c +++ b/src/cdogs/map_wolf.c @@ -1471,130 +1471,174 @@ static void TryLoadWallObject( } break; case CWWALL_PURPLE: - switch (spearMission) + switch (map->type) { - case 2: - moName = "heer_flag"; + case CWMAPTYPE_N3D: + break; + default: + switch (spearMission) + { + case 2: + moName = "heer_flag"; + break; + } break; } - break; case CWWALL_RED_BRICK_FLAG: - switch (spearMission) + switch (map->type) { - case 1: - moName = "coat_of_arms_flag"; + case CWMAPTYPE_N3D: + moName = "noah_flag"; break; - case 3: - moName = "swastika_relief"; + default: + switch (spearMission) + { + case 1: + moName = "coat_of_arms_flag"; + break; + case 3: + moName = "swastika_relief"; + break; + } break; } - break; case CWWALL_ELEVATOR: { - const TileClass *tcBelow = - MissionStaticGetTileClass(m, levelSize, vBelow); - if (tcBelow == NULL) + switch (map->type) { + case CWMAPTYPE_N3D: break; - } - if (tcBelow->Type == TILE_CLASS_FLOOR) - { - moName = "elevator_interior"; - } - // Elevators only occur on east/west tiles - for (int dx = -1; dx <= 1; dx += 2) - { - const struct vec2i exitV = svec2i(v.x + dx, v.y); - const TileClass *tc = - MissionStaticGetTileClass(m, levelSize, exitV); - // Tile can be a vertical door - const uint16_t chd = CWLevelGetCh(level, 0, exitV.x, exitV.y); - const CWTile tile = CWChToTile(chd); - const bool isVerticalDoor = - tile == CWTILE_ELEVATOR_V || tile == CWTILE_DOOR_V || - tile == CWTILE_DOOR_GOLD_V || tile == CWTILE_DOOR_SILVER_V; - if (tc != NULL && (tc->Type == TILE_CLASS_FLOOR || isVerticalDoor)) + default: { + const TileClass *tcBelow = + MissionStaticGetTileClass(m, levelSize, vBelow); + if (tcBelow == NULL) { - Exit e; - e.Hidden = true; - e.Mission = missionIndex + 1; - // Check if coming back from secret level - if (map->type == CWMAPTYPE_SOD) + break; + } + if (tcBelow->Type == TILE_CLASS_FLOOR) + { + moName = "elevator_interior"; + } + // Elevators only occur on east/west tiles + for (int dx = -1; dx <= 1; dx += 2) + { + const struct vec2i exitV = svec2i(v.x + dx, v.y); + const TileClass *tc = + MissionStaticGetTileClass(m, levelSize, exitV); + // Tile can be a vertical door + const uint16_t chd = CWLevelGetCh(level, 0, exitV.x, exitV.y); + const CWTile tile = CWChToTile(chd); + const bool isVerticalDoor = + tile == CWTILE_ELEVATOR_V || tile == CWTILE_DOOR_V || + tile == CWTILE_DOOR_GOLD_V || tile == CWTILE_DOOR_SILVER_V; + if (tc != NULL && + (tc->Type == TILE_CLASS_FLOOR || isVerticalDoor)) { - if (missionIndex == 18) - { - e.Mission = 4; - } - else if (missionIndex == 19) + Exit e; + e.Hidden = true; + e.Mission = missionIndex + 1; + // Check if coming back from secret level + if (map->type == CWMAPTYPE_SOD) { - e.Mission = 12; + if (missionIndex == 18) + { + e.Mission = 4; + } + else if (missionIndex == 19) + { + e.Mission = 12; + } } - } - else - { - switch (missionIndex) + else { - case 9: - e.Mission = 1; - break; - case 19: - e.Mission = 11; - break; - case 29: - e.Mission = 27; - break; - case 39: - e.Mission = 33; - break; - case 49: - e.Mission = 45; - break; - case 59: - e.Mission = 53; - break; - default: - break; + switch (missionIndex) + { + case 9: + e.Mission = 1; + break; + case 19: + e.Mission = 11; + break; + case 29: + e.Mission = 27; + break; + case 39: + e.Mission = 33; + break; + case 49: + e.Mission = 45; + break; + case 59: + e.Mission = 53; + break; + default: + break; + } } + e.R.Pos = exitV; + e.R.Size = svec2i_zero(); + MissionStaticTryAddExit(m, &e); } - e.R.Pos = exitV; - e.R.Size = svec2i_zero(); - MissionStaticTryAddExit(m, &e); } } + } } break; case CWWALL_DEAD_ELEVATOR: - if (MissionStaticGetTileClass( - m, svec2i(level->header.width, level->header.height), vBelow) - ->Type == TILE_CLASS_FLOOR) + switch (map->type) { - moName = "elevator_interior"; + case CWMAPTYPE_N3D: + moName = "curtain_blue"; + break; + default: + if (MissionStaticGetTileClass( + m, svec2i(level->header.width, level->header.height), + vBelow) + ->Type == TILE_CLASS_FLOOR) + { + moName = "elevator_interior"; + } + break; } break; case CWWALL_WOOD_IRON_CROSS: - switch (spearMission) + switch (map->type) { - case 1: - moName = "iron_cross"; - break; - case 2: - moName = "wall_chart"; + case CWMAPTYPE_N3D: break; - case 3: - moName = "wall_goo2"; + default: + switch (spearMission) + { + case 1: + moName = "iron_cross"; + break; + case 2: + moName = "wall_chart"; + break; + case 3: + moName = "wall_goo2"; + break; + } break; } break; case CWWALL_DIRTY_BRICK_1: - switch (spearMission) + switch (map->type) { - case 1: - moName = "cobble_moss"; + case CWMAPTYPE_N3D: + moName = "green_relief"; break; - case 3: - moName = "wall_goo2"; + default: + switch (spearMission) + { + case 1: + moName = "cobble_moss"; + break; + case 3: + moName = "wall_goo2"; + break; + } break; } - break; case CWWALL_PURPLE_BLOOD: switch (spearMission) { @@ -2881,8 +2925,9 @@ static void AdjustTurningPoint(Mission *m, const struct vec2i v) { return; } - // HACK: locked doors can be opened by patrolling enemies walking into them - // Therefore unlock any locked doors directly in front of a turning point + // HACK: locked doors can be opened by patrolling enemies walking + // into them Therefore unlock any locked doors directly in front of + // a turning point const uint16_t unlockedAccess = 0; CArraySet(&m->u.Static.Access, v.x + v.y * m->Size.y, &unlockedAccess); } @@ -2945,7 +2990,8 @@ static bool TryLoadSpearSteamVanilla(CampaignList *list) for (int i = 1; i <= 3; i++) { char buf2[CDOGS_PATH_MAX]; - // Append spear mission pack to path - we will handle this later + // Append spear mission pack to path - we will handle this + // later sprintf(buf2, "%s?%d", buf, i); if (!TryLoadCampaign(list, buf2)) {