FIX: Roll mods concatenation, Added GetExperience
							parent
							
								
									881ab7f8f0
								
							
						
					
					
						commit
						b609b673e6
					
				|  | @ -10,7 +10,7 @@ | |||
|     "OSE.SitMod": "Situational Modifier", | ||||
|     "OSE.Modifier": "Modifier", | ||||
|     "OSE.RollMode": "Roll Mode", | ||||
|     "OSE.RollExample": "Roll Example", | ||||
|     "OSE.RollExample": "e.g. +1d4", | ||||
| 
 | ||||
|     "OSE.Name": "Name", | ||||
|     "OSE.Class": "Class", | ||||
|  | @ -161,5 +161,7 @@ | |||
|     "OSE.exploration.sd.long": "Find Secret Door", | ||||
|     "OSE.exploration.sd.short": "Secret Door", | ||||
|     "OSE.exploration.ft.long": "Find Room Trap", | ||||
|     "OSE.exploration.ft.short": "Find Trap" | ||||
|     "OSE.exploration.ft.short": "Find Trap", | ||||
| 
 | ||||
|     "OSE.messages.getExperience": "{name} gained {value} experience points!" | ||||
| } | ||||
|  | @ -25,7 +25,20 @@ export class OseActor extends Actor { | |||
|   /* -------------------------------------------- */ | ||||
|   /*  Socket Listeners and Handlers | ||||
|     /* -------------------------------------------- */ | ||||
| 
 | ||||
|   getExperience(value, options = {}) { | ||||
|     console.log(this.data); | ||||
|     if (this.data.type != 'character') { | ||||
|       return; | ||||
|     } | ||||
|     let modified = value + (this.data.data.details.xp.bonus * value) / 100; | ||||
|     console.log(modified); | ||||
|     return this.update({ | ||||
|       "data.details.xp.value": modified + this.data.data.details.xp.value | ||||
|     }).then(() => { | ||||
|       const speaker = ChatMessage.getSpeaker({actor: this}); | ||||
|       ChatMessage.create({content: game.i18n.format("OSE.messages.getExperience", {name: this.name, value: modified}), speaker}); | ||||
|     }); | ||||
|   } | ||||
|   /* -------------------------------------------- */ | ||||
|   /*  Rolls                                       */ | ||||
|   /* -------------------------------------------- */ | ||||
|  | @ -89,7 +102,7 @@ export class OseActor extends Actor { | |||
|       ...{ | ||||
|         rollData: { | ||||
|           type: "Check", | ||||
|           stat: score, | ||||
|           target: this.data.data.scores[score].value, | ||||
|         }, | ||||
|       }, | ||||
|     }; | ||||
|  | @ -178,7 +191,7 @@ export class OseActor extends Actor { | |||
| 
 | ||||
|     // Add Str to damage
 | ||||
|     if (attData.type == 'melee') { | ||||
|       dmgParts.push("+", data.scores.str.mod); | ||||
|       dmgParts.push(data.scores.str.mod); | ||||
|     } | ||||
| 
 | ||||
|     // Damage roll
 | ||||
|  | @ -199,21 +212,17 @@ export class OseActor extends Actor { | |||
| 
 | ||||
|     if (attData.type == "missile") { | ||||
|       rollParts.push( | ||||
|         "+", | ||||
|         data.scores.dex.mod.toString(), | ||||
|         "+", | ||||
|         data.thac0.mod.missile.toString() | ||||
|       ); | ||||
|     } else if (attData.type == "melee") { | ||||
|       rollParts.push( | ||||
|         "+", | ||||
|         data.scores.str.mod.toString(), | ||||
|         "+", | ||||
|         data.thac0.mod.melee.toString() | ||||
|       ); | ||||
|     } | ||||
|     if (game.settings.get("ose", "ascendingAC")) { | ||||
|       rollParts.push("+", this.data.data.thac0.bba.toString()); | ||||
|       rollParts.push(this.data.data.thac0.bba.toString()); | ||||
|     } | ||||
| 
 | ||||
|     const rollData = { | ||||
|  |  | |||
|  | @ -53,7 +53,7 @@ export class OseDice { | |||
|       } | ||||
|     } else if (data.rollData.type == "Check") { | ||||
|       // SCORE CHECKS
 | ||||
|       let sc = data.data.scores[data.rollData.stat].value; | ||||
|       let sc = data.rollData.target; | ||||
|       if (die == 1 || (roll.total <= sc && die < 20)) { | ||||
|         details = `<div class='roll-result roll-success'><b>Success!</b> (${sc})</div>`; | ||||
|       } else { | ||||
|  | @ -95,8 +95,8 @@ export class OseDice { | |||
|     // Optionally include a situational bonus
 | ||||
|     if (form !== null) data["bonus"] = form.bonus.value; | ||||
|     if (data["bonus"]) parts.push(data["bonus"]); | ||||
| 
 | ||||
|     const roll = new Roll(parts.join(""), data).roll(); | ||||
|   | ||||
|     const roll = new Roll(parts.join("+"), data).roll(); | ||||
| 
 | ||||
|     // Convert the roll to a chat message and return the roll
 | ||||
|     let rollMode = game.settings.get("core", "rollMode"); | ||||
|  |  | |||
|  | @ -1,33 +1,33 @@ | |||
| <img class="profile-img" src="{{actor.img}}" data-edit="img" title="{{actor.name}}" /> | ||||
| <section class="header-details flexrow"> | ||||
|   <h1 class="charname"> | ||||
|     <input name="name" type="text" value="{{actor.name}}" placeholder="{{localize 'OSE.Name'}}" /> | ||||
|     <input name="name" type="text" value="{{actor.name}}" placeholder="{{localize 'OSE.Name'}}" data-dtype="String" /> | ||||
|   </h1> | ||||
|   <ul class="summary flexrow"> | ||||
|     <li> | ||||
|       <input type="text" name="data.details.title" value="{{data.details.title}}" | ||||
|       <input type="text" name="data.details.title" value="{{data.details.title}}" data-dtype="String" | ||||
|          /> | ||||
|       <label>{{localize 'OSE.Title'}}</label> | ||||
|     </li> | ||||
|     <li> | ||||
|       <input type="text" name="data.details.alignment" value="{{data.details.alignment}}" | ||||
|       <input type="text" name="data.details.alignment" value="{{data.details.alignment}}" data-dtype="String" | ||||
|          /> | ||||
|       <label>{{localize 'OSE.Alignment'}}</label> | ||||
|     </li> | ||||
|   </ul> | ||||
|   <ul class="summary flexrow"> | ||||
|     <li class="flex3"> | ||||
|       <input type="text" name="data.details.class" value="{{data.details.class}}" | ||||
|       <input type="text" name="data.details.class" value="{{data.details.class}}" data-dtype="String" | ||||
|         /> | ||||
|       <label>{{localize 'OSE.Class'}}</label> | ||||
|     </li> | ||||
|     <li> | ||||
|       <input type="text" name="data.details.level" value="{{data.details.level}}" | ||||
|       <input type="text" name="data.details.level" value="{{data.details.level}}" data-dtype="Number" | ||||
|          /> | ||||
|       <label>{{localize 'OSE.Level'}}</label> | ||||
|     </li> | ||||
|     <li class="flex2"> | ||||
|       <input type="text" name="data.details.xp.value" value="{{data.details.xp.value}}" | ||||
|       <input type="text" name="data.details.xp.value" value="{{data.details.xp.value}}" data-dtype="Number" | ||||
|          /> | ||||
|       <label>{{localize 'OSE.Experience'}}</label> | ||||
|       {{#if data.details.xp.bonus}} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue