Hey everyone,
So to start off, I have no idea what I am doing and am heavily using ChatGPT. I was able to fix another mod here with chatGPT then was like "hur dur, I can do one from scratch"
I'm working on a mod to expand city territory in my game from 3 tiles to 5, but I'm running into issues. I have zero coding experience, so I need someone to help troubleshoot why this isn't working.
====================File 1=========================
class CityExpansionMod {
constructor() {
this.newCityRadius = 5; // Expanding from 3 to 5 tiles
this.init();
}
init() {
engine.on('GameStarted', this.applyCityExpansion.bind(this));
engine.on('GameLoaded', this.applyCityExpansion.bind(this));
engine.on('TileClaimed', this.updateTileOwnership.bind(this));
engine.on('CityGrowth', this.expandTerritory.bind(this));
}
applyCityExpansion() {
if (typeof City !== 'undefined' && City.prototype) {
City.prototype.getMaxWorkingRadius = function () {
return 5; // Expanding from 3 to 5 tiles
};
City.prototype.canAcquireTile = function (tile) {
let distance = this.getDistanceFromCityCenter(tile);
let isOwned = LandClaimFlagManager.isTileOwned(tile, this.owner);
return distance <= 5 && isOwned; // Ensure tile is within range and owned
};
}
console.log(`CityExpansionMod: City radius and tile acquisition expanded to 5 tiles.`);
}
updateTileOwnership(tile, owner) {
if (typeof City !== 'undefined' && City.prototype) {
City.prototype.canAcquireTile = function (tile) {
let distance = this.getDistanceFromCityCenter(tile);
let isOwned = LandClaimFlagManager.isTileOwned(tile, owner);
return distance <= 5 && isOwned; // Ensure tile is within range and owned
};
}
}
expandTerritory(city) {
let tiles = city.getNearbyTiles(5);
tiles.forEach(tile => {
if (!tile.isOwned && city.canAcquireTile(tile)) {
LandClaimFlagManager.claimTile(tile, city.owner);
console.log(`CityExpansionMod: Tile at ${tile.x}, ${tile.y} claimed.`);
}
});
}
cleanup() {
engine.off('GameStarted', this.applyCityExpansion.bind(this));
engine.off('GameLoaded', this.applyCityExpansion.bind(this));
engine.off('TileClaimed', this.updateTileOwnership.bind(this));
engine.off('CityGrowth', this.expandTerritory.bind(this));
delete window.CityExpansionMod;
}
}
window.CityExpansionMod = new CityExpansionMod();
====================File 2=========================
<?xml version="1.0" encoding="utf-8"?>
<Mod id="CityExpansionMod" version="1.0"
xmlns="ModInfo">
<Properties>
<Name>City Radius Expansion</Name>
<Description>Expands the city working radius from 3 tiles to 5 tiles.</Description>
<Authors>YourName</Authors>
<Package>Mod</Package>
<AffectsSavedGames>1</AffectsSavedGames>
</Properties>
<Dependencies>
<Mod id="base-standard" title="LOC_MODULE_BASE_STANDARD_NAME" />
</Dependencies>
<ActionCriteria>
<Criteria id="always">
<AlwaysMet/>
</Criteria>
</ActionCriteria>
<ActionGroups>
<ActionGroup id="city-expansion-actions" scope="game" criteria="always">
<Actions>
<UIScripts>
<Item>ui/CityExpansion.js</Item>
</UIScripts>
</Actions>
</ActionGroup>
</ActionGroups>
</Mod>
Thanks in advance!
So to start off, I have no idea what I am doing and am heavily using ChatGPT. I was able to fix another mod here with chatGPT then was like "hur dur, I can do one from scratch"
I'm working on a mod to expand city territory in my game from 3 tiles to 5, but I'm running into issues. I have zero coding experience, so I need someone to help troubleshoot why this isn't working.
What I’m Trying to Do:
- Expand the city working radius from 3 to 5 tiles.
- Allow cities to claim and expand into territory up to 5 tiles away.
- Ensure UI updates properly to reflect the expanded borders.
What I Have So Far:
I updated two files:- City Radius Expansion Mod (Expands city territory in logic).
- UI Adjustments (To reflect the changes visually).
What I Need Help With:
- Checking if the mod is even loading.
- Making sure the radius expansion actually applies.
- Fixing any issues preventing UI from displaying properly.
- Any general advice for someone with zero coding experience.
====================File 1=========================
class CityExpansionMod {
constructor() {
this.newCityRadius = 5; // Expanding from 3 to 5 tiles
this.init();
}
init() {
engine.on('GameStarted', this.applyCityExpansion.bind(this));
engine.on('GameLoaded', this.applyCityExpansion.bind(this));
engine.on('TileClaimed', this.updateTileOwnership.bind(this));
engine.on('CityGrowth', this.expandTerritory.bind(this));
}
applyCityExpansion() {
if (typeof City !== 'undefined' && City.prototype) {
City.prototype.getMaxWorkingRadius = function () {
return 5; // Expanding from 3 to 5 tiles
};
City.prototype.canAcquireTile = function (tile) {
let distance = this.getDistanceFromCityCenter(tile);
let isOwned = LandClaimFlagManager.isTileOwned(tile, this.owner);
return distance <= 5 && isOwned; // Ensure tile is within range and owned
};
}
console.log(`CityExpansionMod: City radius and tile acquisition expanded to 5 tiles.`);
}
updateTileOwnership(tile, owner) {
if (typeof City !== 'undefined' && City.prototype) {
City.prototype.canAcquireTile = function (tile) {
let distance = this.getDistanceFromCityCenter(tile);
let isOwned = LandClaimFlagManager.isTileOwned(tile, owner);
return distance <= 5 && isOwned; // Ensure tile is within range and owned
};
}
}
expandTerritory(city) {
let tiles = city.getNearbyTiles(5);
tiles.forEach(tile => {
if (!tile.isOwned && city.canAcquireTile(tile)) {
LandClaimFlagManager.claimTile(tile, city.owner);
console.log(`CityExpansionMod: Tile at ${tile.x}, ${tile.y} claimed.`);
}
});
}
cleanup() {
engine.off('GameStarted', this.applyCityExpansion.bind(this));
engine.off('GameLoaded', this.applyCityExpansion.bind(this));
engine.off('TileClaimed', this.updateTileOwnership.bind(this));
engine.off('CityGrowth', this.expandTerritory.bind(this));
delete window.CityExpansionMod;
}
}
window.CityExpansionMod = new CityExpansionMod();
====================File 2=========================
<?xml version="1.0" encoding="utf-8"?>
<Mod id="CityExpansionMod" version="1.0"
xmlns="ModInfo">
<Properties>
<Name>City Radius Expansion</Name>
<Description>Expands the city working radius from 3 tiles to 5 tiles.</Description>
<Authors>YourName</Authors>
<Package>Mod</Package>
<AffectsSavedGames>1</AffectsSavedGames>
</Properties>
<Dependencies>
<Mod id="base-standard" title="LOC_MODULE_BASE_STANDARD_NAME" />
</Dependencies>
<ActionCriteria>
<Criteria id="always">
<AlwaysMet/>
</Criteria>
</ActionCriteria>
<ActionGroups>
<ActionGroup id="city-expansion-actions" scope="game" criteria="always">
<Actions>
<UIScripts>
<Item>ui/CityExpansion.js</Item>
</UIScripts>
</Actions>
</ActionGroup>
</ActionGroups>
</Mod>
Thanks in advance!