Skip to content

ccdirectlink3/CCTimer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 

Repository files navigation

CCTimer

A timer for CrossCode! It can also be used as an AutoSplitter for LiveSplit.

Installation

  1. Install CCLoader.
  2. Download and extract CCTimer.
  3. Put the timer directory in the assets/mods directory.
  4. To connect LiveSplit to CCTimer to LiveSplit add an AutoSplitter to your layout and set the script path to <CrossCode Root Directory>/assets/mods/timer/CrossCode.asl.

Configuration

The options for the autosplitter are located in the settings.json file.

Time

There are two methods of time tracking:

IGT

If the "time" entry is not set or has the value "time": "IGT" the game takes the actual ingame time and sends it to livesplit.

Example

{
    "time": "IGT"
}

State

The time can be tracked using the states of the game if "time": "state". If this method is used, the time is independent of the ingame time and continues even after restarts or different saves.

The possible values for the state filter ("filter") can are:

  • RUNNING
  • TELEPORT
  • LOADING
  • NEWGAME
  • RESET
  • LOADGAME
  • MENU
  • PAUSE
  • LEVELUP
  • QUICK
  • ONMAPMENU
  • QUESTSOLVED

These values can be either used inclusive or exclusive (or both)

Example

{
    "time": "state",
	"filter": {
		"include": [
			"RUNNING",
			"MENU",
			"LEVELUP",
			"QUICK",
			"ONMAPMENU",
			"QUESTSOLVED"
		],
		"exclude": []
    }
}

Splits

The splits that are automatically triggered are stored as an array in "splits". If the split contains "once": true it is only triggered once gamestart. Otherwise it is triggered on every frame the condition is valid. There are four types of splits:

Start

The "start" split is a special split that starts the timer when any map is loaded.

Example

{
	"splits": [{
		"type": "start"
	}]
}

Loadmap

"loadmap" checks if the map that is loaded is the same that is in "name".

Example

{
	"splits": [{
		"type": "loadmap",
		"name": "rookie-harbor.south"
	}]
}

Event triggered

"eventtriggered" checks if a var condition is valid. To see which var conditions are possible enable Print all events in the options menu.

Example

{
	"splits": [{
		"type": "eventtriggered",
		"name": "maps.cargoShip/cabins1.kitchenScene",
		"value": true
	}]
}

Damage

"damage" checks if an entity is damaged. HP ranges can be filtered using "above" and/or below.

Example

{
	"splits": [{
		"type": "damage",
		"name": "shredder-alpha",
		"below": 0
	}]
}

Combined

The "combined" split is triggered if all "conditions" apply. Every condition is a split and can contain "once": true.

Example

{
	"splits": [{
		"type": "combined",
		"conditions": [{
			"type": "loadmap",
			"name": "rookie-harbor.south",
			"once": true
		}, {
			"type": "eventtriggered",
			"name": "maps.cargoShip/cabins1.kitchenScene",
			"value": true
		}]
	}]
}

Full example

{
	"time": "state",
	"filter": {
		"include": [
			"RUNNING",
			"TELEPORT",
			"LOADING",
			"NEWGAME",
			"RESET",
			"LOADGAME",
			"MENU",
			"PAUSE",
			"LEVELUP",
			"QUICK",
			"ONMAPMENU",
			"QUESTSOLVED"
		],
		"exclude": []
	},
	"splits": [{
		"type": "start"
	}, {
		"type": "loadmap",
		"name": "rookie-harbor.south",
		"once": true
	}, {
		"type": "eventtriggered",
		"name": "maps.cargoShip/cabins1.kitchenScene",
		"value": true,
		"once": true
	}, {
		"type": "damage",
		"name": "shredder-alpha",
		"below": 0
	}, {
		"type": "combined",
		"once": true,
		"conditions": [{
			"type": "loadmap",
			"name": "rookie-harbor.south",
			"once": true
		}, {
			"type": "eventtriggered",
			"name": "maps.cargoShip/cabins1.kitchenScene",
			"value": true,
			"once": true
		}]
	}]
}

Packages

No packages published

Languages

  • JavaScript 83.5%
  • ASL 16.5%