diff --git a/less/character-sheet.less b/less/character-sheet.less index 7cdc0d8..ebf94bf 100644 --- a/less/character-sheet.less +++ b/less/character-sheet.less @@ -639,12 +639,45 @@ flex-direction: column; } + .defenseBox { + position: absolute; + bottom: 5px; + right: 10px + } + .defenseTable { - border-radius: 10px; + border-radius: 5px; + text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; th { border: 2px black; - padding: 5px; + padding: 3.5px; + padding-right: 4.5px; + font-size: 12px; } } + + .effectiveness0 { + background-color: black; + color: yellow; + // text-shadow: none; + } + + .effectiveness½ { + background-color: red; + color: yellow; + // text-shadow: none; + } + + .effectiveness1 { + background-color: white; + color: white; + text-shadow: none; + } + + .effectiveness½ { + background-color: green; + color: yellow; + // text-shadow: none; + } } diff --git a/modules/sheets/pokemonCharacterSheet.js b/modules/sheets/pokemonCharacterSheet.js index 2c08bb5..cf5d75f 100644 --- a/modules/sheets/pokemonCharacterSheet.js +++ b/modules/sheets/pokemonCharacterSheet.js @@ -1,6 +1,332 @@ const api = foundry.applications.api; const sheets = foundry.applications.sheets; +effectivenessChart = { + "normal": { + "normal": 1, + "fire": 1, + "water": 1, + "electric": 1, + "grass": 1, + "ice": 1, + "fighting": 1, + "poison": 1, + "ground": 1, + "flying": 1, + "psychic": 1, + "bug": 1, + "rock": 0.5, + "ghost": 0, + "dragon": 1, + "dark": 1, + "steel": 0.5 + }, + "fire": { + "normal": 1, + "fire": 0.5, + "water": 0.5, + "electric": 1, + "grass": 2, + "ice": 2, + "fighting": 1, + "poison": 1, + "ground": 1, + "flying": 1, + "psychic": 1, + "bug": 2, + "rock": 0.5, + "ghost": 1, + "dragon": 0.5, + "dark": 1, + "steel": 2 + }, + "water": { + "normal": 1, + "fire": 2, + "water": 0.5, + "electric": 1, + "grass": 0.5, + "ice": 1, + "fighting": 1, + "poison": 1, + "ground": 2, + "flying": 1, + "psychic": 1, + "bug": 1, + "rock": 2, + "ghost": 1, + "dragon": 0.5, + "dark": 1, + "steel": 1 + }, + "electric": { + "normal": 1, + "fire": 1, + "water": 2, + "electric": 0.5, + "grass": 0.5, + "ice": 1, + "fighting": 1, + "poison": 1, + "ground": 0, + "flying": 2, + "psychic": 1, + "bug": 1, + "rock": 1, + "ghost": 1, + "dragon": 0.5, + "dark": 1, + "steel": 1 + }, + "grass": { + "normal": 1, + "fire": 0.5, + "water": 2, + "electric": 1, + "grass": 0.5, + "ice": 1, + "fighting": 1, + "poison": 0.5, + "ground": 2, + "flying": 0.5, + "psychic": 1, + "bug": 0.5, + "rock": 2, + "ghost": 1, + "dragon": 0.5, + "dark": 1, + "steel": 0.5 + }, + "ice": { + "normal": 1, + "fire": 0.5, + "water": 0.5, + "electric": 1, + "grass": 2, + "ice": 0.5, + "fighting": 1, + "poison": 1, + "ground": 2, + "flying": 2, + "psychic": 1, + "bug": 1, + "rock": 1, + "ghost": 1, + "dragon": 2, + "dark": 1, + "steel": 0.5 + }, + "fighting": { + "normal": 2, + "fire": 1, + "water": 1, + "electric": 1, + "grass": 1, + "ice": 2, + "fighting": 1, + "poison": 0.5, + "ground": 1, + "flying": 0.5, + "psychic": 0.5, + "bug": 0.5, + "rock": 2, + "ghost": 0, + "dragon": 1, + "dark": 2, + "steel": 2 + }, + "poison": { + "normal": 1, + "fire": 1, + "water": 1, + "electric": 1, + "grass": 2, + "ice": 1, + "fighting": 1, + "poison": 0.5, + "ground": 0.5, + "flying": 1, + "psychic": 1, + "bug": 1, + "rock": 0.5, + "ghost": 0.5, + "dragon": 1, + "dark": 1, + "steel": 0 + }, + "ground": { + "normal": 1, + "fire": 2, + "water": 1, + "electric": 2, + "grass": 0.5, + "ice": 1, + "fighting": 1, + "poison": 2, + "ground": 1, + "flying": 0, + "psychic": 1, + "bug": 0.5, + "rock": 2, + "ghost": 1, + "dragon": 1, + "dark": 1, + "steel": 2 + }, + "flying": { + "normal": 1, + "fire": 1, + "water": 1, + "electric": 0.5, + "grass": 2, + "ice": 1, + "fighting": 2, + "poison": 1, + "ground": 1, + "flying": 1, + "psychic": 1, + "bug": 2, + "rock": 0.5, + "ghost": 1, + "dragon": 1, + "dark": 1, + "steel": 0.5 + }, + "psychic": { + "normal": 1, + "fire": 1, + "water": 1, + "electric": 1, + "grass": 1, + "ice": 1, + "fighting": 2, + "poison": 2, + "ground": 1, + "flying": 1, + "psychic": 0.5, + "bug": 1, + "rock": 1, + "ghost": 1, + "dragon": 1, + "dark": 0, + "steel": 0.5 + }, + "bug": { + "normal": 1, + "fire": 0.5, + "water": 1, + "electric": 1, + "grass": 2, + "ice": 1, + "fighting": 0.5, + "poison": 0.5, + "ground": 1, + "flying": 0.5, + "psychic": 2, + "bug": 1, + "rock": 1, + "ghost": 0.5, + "dragon": 1, + "dark": 2, + "steel": 0.5 + }, + "rock": { + "normal": 1, + "fire": 2, + "water": 1, + "electric": 1, + "grass": 1, + "ice": 2, + "fighting": 0.5, + "poison": 1, + "ground": 0.5, + "flying": 2, + "psychic": 1, + "bug": 2, + "rock": 1, + "ghost": 1, + "dragon": 1, + "dark": 1, + "steel": 0.5 + }, + "ghost": { + "normal": 0, + "fire": 1, + "water": 1, + "electric": 1, + "grass": 1, + "ice": 1, + "fighting": 1, + "poison": 1, + "ground": 1, + "flying": 1, + "psychic": 2, + "bug": 1, + "rock": 1, + "ghost": 2, + "dragon": 1, + "dark": 0.5, + "steel": 0.5 + }, + "dragon": { + "normal": 1, + "fire": 1, + "water": 1, + "electric": 1, + "grass": 1, + "ice": 1, + "fighting": 1, + "poison": 1, + "ground": 1, + "flying": 1, + "psychic": 1, + "bug": 1, + "rock": 1, + "ghost": 1, + "dragon": 2, + "dark": 1, + "steel": 0.5 + }, + "dark": { + "normal": 1, + "fire": 1, + "water": 1, + "electric": 1, + "grass": 1, + "ice": 1, + "fighting": 0.5, + "poison": 1, + "ground": 1, + "flying": 1, + "psychic": 2, + "bug": 1, + "rock": 1, + "ghost": 2, + "dragon": 1, + "dark": 0.5, + "steel": 0.5 + }, + "steel": { + "normal": 1, + "fire": 0.5, + "water": 0.5, + "electric": 0.5, + "grass": 1, + "ice": 2, + "fighting": 1, + "poison": 1, + "ground": 1, + "flying": 1, + "psychic": 1, + "bug": 1, + "rock": 2, + "ghost": 1, + "dragon": 1, + "dark": 1, + "steel": 0.5 + } +} + export default class pokemonCharacterSheet extends api.HandlebarsApplicationMixin(sheets.ActorSheetV2) { sheetContext = {}; @@ -84,13 +410,25 @@ export default class pokemonCharacterSheet extends api.HandlebarsApplicationMixi context.system.spArmorClass += 2; } - context.defenses = ["1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"] + context.defenses = context.types.map(type => this.calcEffectiveness(context, type)); context.system.speed = 30+5*context.system.stats.speed; return context; } + calcEffectiveness(context, type) { + effectiveness = 1 + + effectiveness *= effectivenessChart[type][context.system.type1] + + if (context.system.type2 != "") { + effectiveness *= effectivenessChart[type][context.system.type2] + } + + return effectiveness + } + /** @override */ _onRender(context, options) { const tabs = new foundry.applications.ux.Tabs({navSelector: ".tabs", contentSelector: ".content", initial: this.tab}); diff --git a/pokemon.css b/pokemon.css index c5ac424..55e0370 100644 --- a/pokemon.css +++ b/pokemon.css @@ -533,10 +533,35 @@ display: flex; flex-direction: column; } +.pokemon.sheet.characterSheet .defenseBox { + position: absolute; + bottom: 5px; + right: 10px; +} .pokemon.sheet.characterSheet .defenseTable { - border-radius: 10px; + border-radius: 5px; + text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; } .pokemon.sheet.characterSheet .defenseTable th { border: 2px black; - padding: 5px; + padding: 3.5px; + padding-right: 4.5px; + font-size: 12px; +} +.pokemon.sheet.characterSheet .effectiveness0 { + background-color: black; + color: yellow; +} +.pokemon.sheet.characterSheet .effectiveness½ { + background-color: red; + color: yellow; +} +.pokemon.sheet.characterSheet .effectiveness1 { + background-color: white; + color: white; + text-shadow: none; +} +.pokemon.sheet.characterSheet .effectiveness½ { + background-color: green; + color: yellow; } diff --git a/system.json b/system.json index 3103d9f..2239d75 100644 --- a/system.json +++ b/system.json @@ -1,5 +1,5 @@ { - "version": "0.1.9", + "version": "0.1.10", "id": "pokemon", "title": "Pokémon TTRPG", "description": "A Pokémon TTRPG", diff --git a/system.zip b/system.zip index 2a53ff5..44046e4 100644 Binary files a/system.zip and b/system.zip differ diff --git a/templates/partials/character-sheet-character.hbs b/templates/partials/character-sheet-character.hbs index 1ac19f4..35be469 100644 --- a/templates/partials/character-sheet-character.hbs +++ b/templates/partials/character-sheet-character.hbs @@ -58,6 +58,8 @@