This commit is contained in:
Nikolaj
2025-08-05 10:52:49 +02:00
parent 39d2275125
commit 06857ec0df
6 changed files with 404 additions and 6 deletions

View File

@@ -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;
}
}

View File

@@ -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});

View File

@@ -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;
}

View File

@@ -1,5 +1,5 @@
{
"version": "0.1.9",
"version": "0.1.10",
"id": "pokemon",
"title": "Pokémon TTRPG",
"description": "A Pokémon TTRPG",

Binary file not shown.

View File

@@ -58,6 +58,8 @@
</div>
</div>
<div class="defenseBox">
<span class="header">Defenses</span>
<table class="defenseTable">
<tr>
{{#each types}}