Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

Does this look right? sheetworker script

1500308760
SᵃᵛᵃǤᵉ
Sheet Author
API Scripter
I want the player to be able to select from a drop-down a manuever and have two inputs change their values // Manuever on('change:manuever change:manuever_AD change:manuever_move', function (e) { updateManuevers(); }); // Update Manuevers function updateManuevers() { console.log('********* updateManuevers *********'); getAttrs(['manuever', 'manuever_AD', 'manuever_move'], function(v){ if (manuever === "DN") { manuever_AD = "Any"; manuever_move = "None"; } if (manuever === "DN_ms") { manuever_AD = "Any, at -4"; manuever_move = "None"; } }); }
1500308947
Lithl
Pro
Sheet Author
API Scripter
You want v.maneuver in your getAttrs callback. You don't actually care what the current values of maneuver_AD or maneuver_move are, so you can remove the change:... events for them, and remove them from the first parameter to getAttrs. In order to set the value of maneuver_AD and maneuver_move on the sheet, you need to call setAttrs.
1500312933

Edited 1500313110
SᵃᵛᵃǤᵉ
Sheet Author
API Scripter
See changes // Manuever on('change:manuever', function (e) { updateManuevers(); }); // Update Manuevers function updateManuevers() { console.log('********* updateManuevers *********'); getAttrs(['manuever'], function(v){ if (v.manuever === "DN") { manuever_AD = "Any"; manuever_move = "None"; } if (v.manuever === "DN_ms") { manuever_AD = "Any, at -4"; manuever_move = "None"; } setAttrs({ manuever_AD: manuever_AD, manuever_move: manuever_move }); }); } } }); }
1500335773
Lithl
Pro
Sheet Author
API Scripter
Your maneuver_AD and maneuver_move variables are never declared. It will still work in non-strict mode, but I'm not actually certain whether sheet workers are running in strict mode or not. You also seem to have some extra closing brackets, though that might simply be a copy-paste issue. Also, while it doesn't change any functionality nor have a noticeable impact on performance, you can replace function(e) { updateManeuvers(); } with just updateManeuvers . The following should work: // Manuever on('change:manuever', updateManuevers); // Update Manuevers function updateManuevers() { console.log('********* updateManuevers *********'); getAttrs(['manuever'], function(v) { var attrs = {}; if (v.manuever === "DN") { attrs.manuever_AD = "Any"; attrs.manuever_move = "None"; } else if (v.manuever === "DN_ms") { attrs.manuever_AD = "Any, at -4"; attrs.manuever_move = "None"; } setAttrs(attrs); }); }
1500335934
SᵃᵛᵃǤᵉ
Sheet Author
API Scripter
Thanks, I have it working
1500377667
SᵃᵛᵃǤᵉ
Sheet Author
API Scripter
Somehow I have broken it. The input fields are not populating. here is the HTML for the select <div class="sheet-table"> <div class="sheet-header"> <div class="sheet-cell sheet-col0">Maneuver</div> <div class="sheet-cell sheet-col1">AD</div> <div class="sheet-cell sheet-col2">Movement</div> </div> <div class="sheet-row"> <div class="sheet-cell sheet-col0"> <select name="attr_maneuver"> <option value="Aim">Aim</option> <option value="AoA">All-Out Attack</option> <option value="AoD">All-Out Defense</option> <option value="Atk">Attack</option> <option value="CPost">Change Posture</option> <option value="Conc">Concentrate</option> <option value="DN">Do Nothing</option> <option value="Eval">Evaluate</option> <option value="Fnt">Feint</option> <option value="Atk_mv">Move and Attack</option> <option value="Mov">Move</option> <option value="Ready">Ready</option> <option value="Wait">Wait</option> </select> </div> <div class="sheet-cell sheet-col1"> <input type="text" name="attr_maneuver_AD"/> </div> <div class="sheet-cell sheet-col1" > <input type="text" name="attr_maneuver_move"/> </div> </div> <div class="sheet-row"> <div class="sheet-cell sheet-col3"> <input type="text" name="attr_maneuver_descr"/> </div> </div> </div> Here is the script // Maneuver on('change:maneuver', function (e) { updateManeuvers(); }); // Update Maneuvers function updateManeuvers() { console.log('********* updateManeuvers *********'); getAttrs(['maneuver'], function(v) { var attrs = {}; if (v.maneuver === "Aim") { maneuver_AD = "Any*"; maneuver_move = "Step"; maneuver_descr = "Aim a ranged weapon to get its Acc bonus."; } else if (v.maneuver === "AoA") { maneuver_AD = "None"; maneuver_move = "1/2 Move"; maneuver_descr = "Attack at a bonus or multiple times."; } else if (v.maneuver === "AoD") { maneuver_AD = "Any"; maneuver_move = "Varies"; maneuver_descr = "Increased or double defense."; } else if (v.maneuver === "Atk") { maneuver_AD = "Any"; maneuver_move = "Step"; maneuver_descr = "Attack unarmed or with a weapon."; } else if (v.maneuver === "CPost") { maneuver_AD = "Any"; maneuver_move = "None"; maneuver_descr = "Stand up, sit down, etc."; } else if (v.maneuver === "Conc") { maneuver_AD = "Any*"; maneuver_move = "Step"; maneuver_descr = "Focus on a mental task."; } else if (v.maneuver === "DN") { maneuver_AD = "Any‡"; maneuver_move = "None"; maneuver_descr = "Take no action but recover from stun."; } else if (v.maneuver === "Eval") { maneuver_AD = "Any"; maneuver_move = "Step"; maneuver_descr = "Study a foe prior to a melee attack."; } else if (v.maneuver === "Fnt") { maneuver_AD = "Any"; maneuver_move = "Step"; attrs.maneuver_descr = "Fake a melee attack."; } else if (v.maneuver === "Atk_mv") { amaneuver_AD = "No Parry"; maneuver_move = "Full Move"; maneuver_descr = "Move and attack at a penalty."; } else if (v.maneuver === "Mov") { maneuver_AD = "Any"; maneuver_move = "Full Move"; maneuver_descr = "Do nothing but move."; } else if (v.maneuver === "Ready") { maneuver_AD = "Any"; maneuver_move = "Step"; maneuver_descr = "Prepare a weapon or other item."; } else if (v.maneuver === "Wait") { maneuver_AD = "Any"; maneuver_move = "Varies"; maneuver_descr = "Hold yourself in readiness to act."; } setAttrs(attrs); }); }
1500392653
SᵃᵛᵃǤᵉ
Sheet Author
API Scripter
Still looking for some help
1500394860
Kryx
Pro
Sheet Author
API Scripter
you need to have an obejct that maneuver_AD, maneuver_move, and maneuver_descr save to. And then setAttrs with that object.
1500395023

Edited 1500395168
SᵃᵛᵃǤᵉ
Sheet Author
API Scripter
Can you help me write this...its been screwed up all morning PLEASE?!
1500396583
Lithl
Pro
Sheet Author
API Scripter
Instead of maneuver_AD = ... and friends, you need attrs.maneuver_AD = ...
1500396950
SᵃᵛᵃǤᵉ
Sheet Author
API Scripter
I went back an corrected all the misspellings apparently this is how to spell "maneuver" However it is still broke
1500397539
SᵃᵛᵃǤᵉ
Sheet Author
API Scripter
Here is the latest version // Maneuver on('change:maneuver', function (e) { updateManeuvers(); }); // Update Maneuvers function updateManeuvers() { console.log('********* updateManeuvers *********'); getAttrs(['maneuver'], function(v) { var attrs = {}; if (v.maneuver === "Aim") { maneuver_AD = "Any*"; maneuver_move = "Step"; maneuver_descr = "Aim a ranged weapon to get its Acc bonus."; } else if (v.maneuver === "AoA") { maneuver_AD = "None"; maneuver_move = "1/2 Move"; maneuver_descr = "Attack at a bonus or multiple times."; } else if (v.maneuver === "AoD") { maneuver_AD = "Any"; maneuver_move = "Varies"; maneuver_descr = "Increased or double defense."; } else if (v.maneuver === "Atk") { maneuver_AD = "Any"; maneuver_move = "Step"; maneuver_descr = "Attack unarmed or with a weapon."; } else if (v.maneuver === "CPost") { maneuver_AD = "Any"; maneuver_move = "None"; maneuver_descr = "Stand up, sit down, etc."; } else if (v.maneuver === "Conc") { maneuver_AD = "Any*"; maneuver_move = "Step"; maneuver_descr = "Focus on a mental task."; } else if (v.maneuver === "DN") { maneuver_AD = "Any‡"; maneuver_move = "None"; maneuver_descr = "Take no action but recover from stun."; } else if (v.maneuver === "Eval") { maneuver_AD = "Any"; maneuver_move = "Step"; maneuver_descr = "Study a foe prior to a melee attack."; } else if (v.maneuver === "Fnt") { maneuver_AD = "Any"; maneuver_move = "Step"; attrs.maneuver_descr = "Fake a melee attack."; } else if (v.maneuver === "Atk_mv") { maneuver_AD = "No Parry"; maneuver_move = "Full Move"; maneuver_descr = "Move and attack at a penalty."; } else if (v.maneuver === "Mov") { maneuver_AD = "Any"; maneuver_move = "Full Move"; maneuver_descr = "Do nothing but move."; } else if (v.maneuver === "Ready") { maneuver_AD = "Any"; maneuver_move = "Step"; maneuver_descr = "Prepare a weapon or other item."; } else if (v.maneuver === "Wait") { maneuver_AD = "Any"; maneuver_move = "Varies"; maneuver_descr = "Hold yourself in readiness to act."; } setAttrs({ maneuver_AD: maneuver_AD, maneuver_move: maneuver_move, maneuver_descr: maneuver_descr }); }); }
1500404048
SᵃᵛᵃǤᵉ
Sheet Author
API Scripter
Do I need to put attr. in front of all of the maneuvers?
1500479575
SᵃᵛᵃǤᵉ
Sheet Author
API Scripter
I have it working!!! // Maneuver on('change:man', function (e) { updatemans(); }); // Update mans function updatemans() { console.log('********* updatemans *********'); getAttrs(['man'], function(v) { var attrs = {}; if (v.man === "Aim") { activedefense = "Any*"; movement = "Step"; description = "Aim a ranged weapon to get its Acc bonus."; } else if (v.man === "AoA") { activedefense = "None"; movement = "1/2 Move"; description = "Attack at a bonus or multiple times."; } else if (v.man === "AoD") { activedefense = "Any"; movement = "Varies"; description = "Increased or double defense."; } else if (v.man === "Atk") { activedefense = "Any"; movement = "Step"; description = "Attack unarmed or with a weapon."; } else if (v.man === "CPost") { activedefense = "Any"; movement = "None"; description = "Stand up, sit down, etc."; } else if (v.man === "Conc") { activedefense = "Any*"; movement = "Step"; description = "Focus on a mental task."; } else if (v.man === "DN") { activedefense = "Any‡"; movement = "None"; description = "Take no action but recover from stun."; } else if (v.man === "Eval") { activedefense = "Any"; movement = "Step"; description = "Study a foe prior to a melee attack."; } else if (v.man === "Fnt") { activedefense = "Any"; movement = "Step"; description = "Fake a melee attack."; } else if (v.man === "Atk_mv") { activedefense = "No Parry"; movement = "Full Move"; description = "Move and attack at a penalty."; } else if (v.man === "Mov") { activedefense = "Any"; movement = "Full Move"; description = "Do nothing but move."; } else if (v.man === "Ready") { activedefense = "Any"; movement = "Step"; description = "Prepare a weapon or other item."; } else if (v.man === "Wait") { activedefense = "Any"; movement = "Varies"; description = "Hold yourself in readiness to act."; } setAttrs({ activedefense: activedefense, movement: movement, description: description }); }); }