Skip to content

Ch99.1: Your own event map support

The lazy author takes forever to update event support
How about making your own event update pack?


Appendix ‐‐ Making your own event map support

Warning: If you don't have your own kcauto python environment, then it is highly impossible for you to make your own update pack(since you have no access to kcauto/kca_enums/nodes.py) (2025/11/12, with the latest update, nodes define are separated to data/combat/map_enum.json, so normal user should be able to follow this guide now)

There are three things to setup:

  1. assets (assets/combat/_event_next_page_<X>.png
    and assets/combat/_event_world_E-<X>.png)
  2. map data (data/combat/E-<X>.json)
  3. nodes (data/combat/map_enum.json)

Assets

For assets, you have to capture ref of the map icon
FROM
image
TO
_event_world_E-1

And the next page button
FROM

next_page_event.png

TO
next_page_event_sample.png

Then replace the files in assets/combat/_event_next_page_<X>.png and assets/combat/_event_world_E-<X>.png


map data

Now we have to setup the map data so that kcauto can handle combat and LBAS for us.
First thing first, we need to get the map image ready.
I personally get it from kancolle wiki
We need the image without any scaling so be careful with the source you use.

image

Where you can get reliable map image


A mini tool tool/map/mapCoorUpdater.py could help building up the map data,
the requirement to run this python file is listed in tool/map/mapCoorUpdaterRequirement.txt.

Run the tool and it will pull the latest map edges data from KC3 source code.
So make sure you work on this after KC3 has updated the event map data.

image

Map Coordinates Updater

After you finished filling in basic info,
the coor of each node is needed to be defined (ref:issue#20 and discussion#71):

  1. Click top left of the map
  2. Follow the guide from the tool and set the node type if needed,
    press
    • o for option node
    • a for anti-air node
    • s for anti-sub node
    • b for boss node
  3. Click on each node

image

Set node C as option node

top_left

Where to click on the image

image

mapCoorUpdater finished setting up E-4.json


Nodes

In order for kcauto to handle,
all nodes are defined in data/combat/map_enum.json.

You don't have to add the newly updated nodes into the file manually, tho.
Run tool/map/maps_generater.py and it will generate tool/map/map_enum.json.
then replace data/combat/map_enum.json with tool/map/map_enum.json.

Debugging map data

In case you need to debug a E-X.json file, Let's take a look in an old E-5.json.
Map data defines the node, edge, and enemy type in a map.

{
    "world": "E",               //This is an event map
    "subworld": 5,              //The 5th world
    "panel": 1,                 //It is located at the 1st panel (The upper one), this is needed because for example E1~E3 could all located at page 1
    "page": 3,                  //It is located at 3rd page
    "enemy_context": [          //What type of enemy will appear in this map, these data will then provide to quest module
        "subs",
        "carriers",
        "transports"
    ],
    "nodes": {                  //Coords for every nodes, this is the offset from top left of the GAME WINDOW(not your browser or screen) to the node
        "A": {
            "coords": [
                157,
                273
            ]
        },
        ...
        ...
        "L2": {
            "coords": [
                775,
                424
            ]
        }
    },
    "edges": {                   //The edge between every nodes, this is defined in the api from kancolle
        "1": [
            "Start 1",
            "A"
        ],
        ...
        ...
        "37": [
            "V",
            "U"
        ]
    }
}