﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Millisecond Forums » Millisecond Forums » Inquisit 6  » Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><generator>InstantForum 2017-1 Final</generator><description>Millisecond Forums</description><link>https://forums.millisecond.com/</link><webMaster>Millisecond Forums</webMaster><lastBuildDate>Sat, 27 Jun 2026 07:10:26 GMT</lastBuildDate><ttl>20</ttl><item><title>Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic35854.aspx</link><description>Hello,&lt;br/&gt;&lt;br/&gt;I hope this message finds you well.&lt;br/&gt;I am currently using Inqusit6 to create a Cyberball task for use in fMRI experiment.&lt;br/&gt;I am struggling with two points now.&lt;br/&gt;&lt;br/&gt;The first is that even though I can customize the sequence of passes, I cannot set up who throws the strongball(In other word fast speed passes) to whom.&lt;br/&gt;Specifically, for example, NPC1 throws a fast pass to NPC3 while slow to NPC2 (participant) and NPC4. &lt;br/&gt;I want to set up something like this for NPC1, NPC3 and NPC4.&lt;br/&gt;I have tried various ways, but they did not work. I would like to know what code I can use to execute it.&lt;br/&gt;&lt;br/&gt;The second is to set a time limit.&lt;br/&gt;In my experiment, I plan to have two types of sessions of the Cyberball task, with each session lasting 3 minutes and repeating this. The number of throws does not indicate the end of the session.&lt;br/&gt;I have tried setting timeout and clocktimer, but 30 throws remain the end condition of the session, and I can't change it.&lt;br/&gt;Is it possible to set time as the end condition for each session of Cyberball task?&lt;br/&gt;And please tell me how to do that.&lt;br/&gt;&lt;br/&gt;Thank you in advance for your help.&lt;br/&gt;&lt;br/&gt;Best regard,&lt;br/&gt;&lt;br/&gt;</description><pubDate>Tue, 05 Mar 2024 06:17:37 GMT</pubDate><dc:creator>S.T</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic36044.aspx</link><description>Dear Dave,&lt;br/&gt;&lt;br/&gt;I understand.&lt;br/&gt;I will try it.&lt;br/&gt;&lt;br/&gt;Thank you.</description><pubDate>Tue, 05 Mar 2024 06:17:37 GMT</pubDate><dc:creator>S.T</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic36043.aspx</link><description>&lt;blockquote data-id="36042" class="if-quote-wrapper" unselectable="on" data-guid="1709604665427" contenteditable="false" id="if_insertedNode_1709604664684"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="36042" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="36042" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="36042" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;S.T - 3/5/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-36042"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;blockquote data-id="35913" class="if-quote-wrapper" unselectable="on" data-guid="1709604665427" contenteditable="false" id="if_insertedNode_1709603891499"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35913" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35913" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35913" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 1/26/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35913"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;Dear Dave,&lt;br/&gt;&lt;br/&gt;Sorry for the frequent questions.&lt;br/&gt;I'm almost there, so please teach me.&lt;br/&gt;&lt;br/&gt;When I perform an experiment, I would like to record the following in the data.&lt;br/&gt;"How many milliseconds after the start of the program did the experiment begin?"&lt;br/&gt;"How many milliseconds after the start of the program did each throw go through?"&lt;br/&gt;"How many milliseconds after the start of the program was the participant's response?"&lt;br/&gt;&lt;br/&gt;In other words, I want to record the flow of each throw in milliseconds from the start of the program.&lt;br/&gt;However, time as a record is just the date and time to the second which I don't need to record.&lt;br/&gt;I don't know what program to use to get the above data.&lt;br/&gt;Could you please tell me how to do this?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Thank you in advance for your help.&lt;br/&gt;&lt;a class="if-quote-goto quote-link" href="#" data-id="36042"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;You need to log script.elapsedtime at the points of interest.&lt;br/&gt;&lt;br/&gt;&lt;a href="https://www.millisecond.com/support/docs/current/html/language/properties/elapsedtime.htm"&gt;https://www.millisecond.com/support/docs/current/html/language/properties/elapsedtime.htm&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;</description><pubDate>Tue, 05 Mar 2024 02:12:14 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic36042.aspx</link><description>&lt;blockquote data-id="35913" class="if-quote-wrapper" unselectable="on" data-guid="1709603892490" contenteditable="false" id="if_insertedNode_1709603891499"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35913" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35913" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35913" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 1/26/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35913"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;Dear Dave,&lt;br/&gt;&lt;br/&gt;Sorry for the frequent questions.&lt;br/&gt;I'm almost there, so please teach me.&lt;br/&gt;&lt;br/&gt;When I perform an experiment, I would like to record the following in the data.&lt;br/&gt;"How many milliseconds after the start of the program did the experiment begin?"&lt;br/&gt;"How many milliseconds after the start of the program did each throw go through?"&lt;br/&gt;"How many milliseconds after the start of the program was the participant's response?"&lt;br/&gt;&lt;br/&gt;In other words, I want to record the flow of each throw in milliseconds from the start of the program.&lt;br/&gt;However, time as a record is just the date and time to the second which I don't need to record.&lt;br/&gt;I don't know what program to use to get the above data.&lt;br/&gt;Could you please tell me how to do this?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Thank you in advance for your help.&lt;br/&gt;</description><pubDate>Tue, 05 Mar 2024 01:58:53 GMT</pubDate><dc:creator>S.T</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic35920.aspx</link><description>Dear Dave,&lt;br/&gt;&lt;br/&gt;This issue has been resolved.&lt;br/&gt;Thank you.</description><pubDate>Tue, 30 Jan 2024 08:10:52 GMT</pubDate><dc:creator>S.T</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic35919.aspx</link><description>&lt;blockquote data-id="35913" class="if-quote-wrapper" unselectable="on" data-guid="1706599220795" contenteditable="false" id="if_insertedNode_1706599219532"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35913" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35913" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35913" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 1/26/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35913"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;Dear　Dave,&lt;br/&gt;&lt;br/&gt;Thanks to your numerous helps, the program is about to be completed.&lt;br/&gt;&lt;br/&gt;I just have a few more questions.&lt;br/&gt;In Inqusit, I don't understand how to record data.&lt;br/&gt;In this experiment, I want to record player 2 (participant) throwing "when", "to whom", and "at which speed".&lt;br/&gt;&lt;br/&gt;What code should I add in the program as I sent you the other day?&lt;br/&gt;&lt;br/&gt;Best regard,&lt;br/&gt;</description><pubDate>Tue, 30 Jan 2024 07:22:06 GMT</pubDate><dc:creator>S.T</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic35913.aspx</link><description>&lt;blockquote data-id="35912" class="if-quote-wrapper" unselectable="on" data-guid="1706275014968" contenteditable="false" id="if_insertedNode_1706275014634"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35912" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35912" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35912" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;S.T - 1/26/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35912"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;blockquote data-id="35910" class="if-quote-wrapper" unselectable="on" data-guid="1706275014968" contenteditable="false" id="if_insertedNode_1706274615150"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35910" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35910" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35910" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 1/26/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35910"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;br/&gt;&lt;a class="if-quote-goto quote-link" href="#" data-id="35910"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;Dear, Dave&lt;br/&gt;&lt;br/&gt;Thank you for your reply.&lt;br/&gt;I understand that I will use the responsetext property if I need the characters.&lt;br/&gt;Now that I can experiment with numbers, I changed it to numbers instead of characters, as in the following code.&lt;br/&gt;However, whether I select "1" or "2", it cannot be thrown in Fastspeed, but only in Slowspeed.&lt;br/&gt;What am I doing wrong?&lt;br/&gt;&lt;br/&gt;The code is as below&lt;br/&gt;&amp;lt;trial player2speed&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.received_from = values.ball_at;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_offsets;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2received += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player1state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//catch&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2state = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player3state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player4state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player5state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player6state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player7state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player8state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player9state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_at = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (trial.player2speed.response == "slow") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.slowspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (trial.player2speed.response == "fast") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.fastspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;/ stimulusframes = [1=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stats, slow, fast]&lt;br/&gt;/ validresponse = ("1", "2")&lt;br/&gt;/ responsemessage = ("1", button.slow, 100)&lt;br/&gt;/ responsemessage = ("2", button.fast, 100)&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp; if (trial.player2.response == "2") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parameters.throwspeed = parameters.slowspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp; if (trial.player2.response == "3") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.fastspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2;&lt;br/&gt;]&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;button slow&amp;gt;&lt;br/&gt;/ caption = "SLOW THROW"&lt;br/&gt;/ size = (15%, 8%)&lt;br/&gt;/ position = (50%, 45%)&lt;br/&gt;/ fontstyle = ("Verdana", 3%, true)&lt;br/&gt;&amp;lt;/button&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;button fast&amp;gt;&lt;br/&gt;/ caption = "FAST THROW"&lt;br/&gt;/ size = (15%, 8%)&lt;br/&gt;/ position = (50%, 55%)&lt;br/&gt;/ fontstyle = ("Verdana", 3%, true)&lt;br/&gt;&amp;lt;/button&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Sorry for asking so many questions.&lt;br/&gt;Many thanks for your always prompt and clear answers.&lt;br/&gt;&lt;br/&gt;Respectfully yours,&lt;a class="if-quote-goto quote-link" href="#" data-id="35912"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;You're using the wrong trial's response property. </description><pubDate>Fri, 26 Jan 2024 13:17:26 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic35912.aspx</link><description>&lt;blockquote data-id="35910" class="if-quote-wrapper" unselectable="on" data-guid="1706274616675" contenteditable="false" id="if_insertedNode_1706274615150"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35910" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35910" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35910" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 1/26/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35910"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;br/&gt;&lt;a class="if-quote-goto quote-link" href="#" data-id="35910"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;Dear, Dave&lt;br/&gt;&lt;br/&gt;Thank you for your reply.&lt;br/&gt;I understand that I will use the responsetext property if I need the characters.&lt;br/&gt;Now that I can experiment with numbers, I changed it to numbers instead of characters, as in the following code.&lt;br/&gt;However, whether I select "1" or "2", it cannot be thrown in Fastspeed, but only in Slowspeed.&lt;br/&gt;What am I doing wrong?&lt;br/&gt;&lt;br/&gt;The code is as below&lt;br/&gt;&amp;lt;trial player2speed&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.received_from = values.ball_at;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_offsets;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2received += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player1state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//catch&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2state = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player3state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player4state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player5state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player6state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player7state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player8state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player9state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_at = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (trial.player2speed.response == "slow") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.slowspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (trial.player2speed.response == "fast") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.fastspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;/ stimulusframes = [1=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stats, slow, fast]&lt;br/&gt;/ validresponse = ("1", "2")&lt;br/&gt;/ responsemessage = ("1", button.slow, 100)&lt;br/&gt;/ responsemessage = ("2", button.fast, 100)&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp; if (trial.player2.response == "2") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parameters.throwspeed = parameters.slowspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp; if (trial.player2.response == "3") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.fastspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2;&lt;br/&gt;]&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;button slow&amp;gt;&lt;br/&gt;/ caption = "SLOW THROW"&lt;br/&gt;/ size = (15%, 8%)&lt;br/&gt;/ position = (50%, 45%)&lt;br/&gt;/ fontstyle = ("Verdana", 3%, true)&lt;br/&gt;&amp;lt;/button&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;button fast&amp;gt;&lt;br/&gt;/ caption = "FAST THROW"&lt;br/&gt;/ size = (15%, 8%)&lt;br/&gt;/ position = (50%, 55%)&lt;br/&gt;/ fontstyle = ("Verdana", 3%, true)&lt;br/&gt;&amp;lt;/button&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Sorry for asking so many questions.&lt;br/&gt;Many thanks for your always prompt and clear answers.&lt;br/&gt;&lt;br/&gt;Respectfully yours,</description><pubDate>Fri, 26 Jan 2024 13:15:07 GMT</pubDate><dc:creator>S.T</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic35910.aspx</link><description>&lt;blockquote data-id="35909" class="if-quote-wrapper" unselectable="on" data-guid="1706272687870" contenteditable="false" id="if_insertedNode_1706272685937"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35909" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35909" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35909" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;S.T - 1/26/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35909"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;blockquote data-id="35906" class="if-quote-wrapper" unselectable="on" data-guid="1706272687870" contenteditable="false" id="if_insertedNode_1706250693705"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35906" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35906" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35906" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 1/24/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35906"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;Dear Dave,&lt;br/&gt;&lt;br/&gt;The second question was resolved as a result of adopting a different approach.&lt;br/&gt;Please consider the first issue  about trial player2speed (Fastspeed is not executed).&lt;br/&gt;&lt;br/&gt;Thank you.&lt;br/&gt;Respectfully yours,&lt;br/&gt;&lt;a class="if-quote-goto quote-link" href="#" data-id="35909"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;The response property does not return the character, it returns the numerical keyboard scancode.&lt;br/&gt;&lt;br/&gt;&lt;a href="https://www.millisecond.com/support/docs/current/html/language/scancodes.htm"&gt;https://www.millisecond.com/support/docs/current/html/language/scancodes.htm&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;If you want the character, you need to work with the responsetext property.&lt;br/&gt;&lt;br/&gt;[code]&amp;lt;block exampleblock&amp;gt;&lt;br/&gt;/ trials = [1-4 = trial.example]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial example&amp;gt;&lt;br/&gt;/ stimulusframes = [1=text.exampletext]&lt;br/&gt;/ validresponse = (anyresponse)&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.showresponse;&lt;br/&gt;]&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial showresponse&amp;gt;&lt;br/&gt;/ stimulusframes = [1=text.showresponse]&lt;br/&gt;/ trialduration = 5000&lt;br/&gt;/ validresponse = (0)&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text exampletext&amp;gt;&lt;br/&gt;/ items = ("Press any key")&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text showresponse&amp;gt;&lt;br/&gt;/ items = ("Scan code: &amp;lt;%trial.example.response%&amp;gt; | Character: &amp;lt;%trial.example.responsetext%&amp;gt;")&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;[/code]&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;</description><pubDate>Fri, 26 Jan 2024 12:46:23 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic35909.aspx</link><description>&lt;blockquote data-id="35906" class="if-quote-wrapper" unselectable="on" data-guid="1706250694695" contenteditable="false" id="if_insertedNode_1706250693705"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35906" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35906" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35906" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 1/24/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35906"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;Dear Dave,&lt;br/&gt;&lt;br/&gt;The second question was resolved as a result of adopting a different approach.&lt;br/&gt;Please consider the first issue  about trial player2speed (Fastspeed is not executed).&lt;br/&gt;&lt;br/&gt;Thank you.&lt;br/&gt;Respectfully yours,&lt;br/&gt;</description><pubDate>Fri, 26 Jan 2024 06:34:48 GMT</pubDate><dc:creator>S.T</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic35907.aspx</link><description>&lt;blockquote data-id="35906" class="if-quote-wrapper" unselectable="on" data-guid="1706244705404" contenteditable="false" id="if_insertedNode_1706244704271"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35906" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35906" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35906" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 1/24/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35906"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;Dear, Dave &lt;br/&gt;Thanks for the reply.&lt;br/&gt;As you said, I was thinking too hard.&lt;br/&gt;&lt;br/&gt;Sorry for repeating but I would like to ask one more question.&lt;br/&gt;It's about the problem about wanting to get the participant's response with the keyboard instead of a click.&lt;br/&gt;&lt;br/&gt;I could change about the start, end and the choice of player to throw.&lt;br/&gt;But there are two problems.&lt;br/&gt;First, about &amp;lt;trial player2speed&amp;gt;.&lt;br/&gt;There are two different speeds for the pass, but the default is button, so it needs to be changed.&lt;br/&gt;If I make the following code, there is no problem when selecting "s" or "f". &lt;br/&gt;However, when "f" is selected, it never becomes Fastspeed. (The code for the button did not change whether I wrote it or not.)&lt;br/&gt;What code is correct?&lt;br/&gt;&lt;br/&gt;Second, about &amp;lt;trial player2&amp;gt;.&lt;br/&gt;The current code is making numbers like 1,3,5 the target of the response.&lt;br/&gt;I really want to make "r", "g", "b", and "y" the response codes, but if I make them not numbers, the game will be forced to terminate the moment a participant holds the ball (bug).&lt;br/&gt;What part am I not understanding?&lt;br/&gt;&lt;br/&gt;Thank you in advance for your help.&lt;br/&gt;Respetfully yours,&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Currently, the program for the trial looks like this:&lt;br/&gt;**************************************************************************************************************&lt;br/&gt;**************************************************************************************************************&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TRIALS&lt;br/&gt;**************************************************************************************************************&lt;br/&gt;**************************************************************************************************************&lt;br/&gt;// handles the NPCs (virtual players) as well as player 2 in "spectate" conditions&lt;br/&gt;&amp;lt;trial npctrial&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.received_from = values.ball_at;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_at = values.throw_to;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.ball_at == 2) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2received += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_offsets;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player1state = (values.ball_at == 1) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2state = (values.ball_at == 2) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player3state = (values.ball_at == 3) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player4state = (values.ball_at == 4) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player5state = (values.ball_at == 5) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player6state = (values.ball_at == 6) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player7state = (values.ball_at == 7) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player8state = (values.ball_at == 8) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player9state = (values.ball_at == 9) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.throw_to == 0){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.npcs.nextindex;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = round(rand(1, 4)) * 1000;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (values.throw_to == values.ball_at){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.deprecated +=1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.realizedThrowSchedule = concat(values.realizedThrowSchedule, values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throwcount += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.previousthrowspeed = parameters.throwspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.previousthrowspeed == parameters.fastspeed) { // if previous throw was fast&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.slowspeed; // next throw must be slow&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (values.throw_to == 3) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.fastspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parameters.throwspeed = parameters.slowspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.ball_at == 2) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2thrown += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ stimulusframes = [1=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stats]&lt;br/&gt;&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ showmousecursor = false&lt;br/&gt;/ validresponse = (0)&lt;br/&gt;/ trialduration = values.delay&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.throw;&lt;br/&gt;]&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial player2forceslow&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.received_from = values.ball_at;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_offsets;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2received += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player1state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//catch&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2state = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player3state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player4state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player5state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player6state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player7state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player8state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player9state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_at = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.slowspeed;&lt;br/&gt;]&lt;br/&gt;/ validresponse = (0)&lt;br/&gt;/ trialduration = 0&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2;&lt;br/&gt;]&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;// handles the human player&lt;br/&gt;&lt;span style="background-color: rgb(145, 255, 152);"&gt;&amp;lt;trial player2speed&amp;gt;&lt;/span&gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.received_from = values.ball_at;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_offsets;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2received += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player1state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//catch&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2state = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player3state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player4state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player5state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player6state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player7state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player8state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player9state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_at = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;&lt;span style="background-color: rgb(145, 255, 152);"&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (trial.player2speed.response == "slow") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.slowspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (trial.player2speed.response == "fast") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.fastspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;/span&gt;&lt;br/&gt;/ stimulusframes = [1=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stats, slow, fast]&lt;br/&gt;&lt;span style="background-color: rgb(145, 255, 152);"&gt;/ validresponse = ("s", "f")&lt;br/&gt;/ responsemessage = ("s", button.slow, 100)&lt;br/&gt;/ responsemessage = ("f", button.fast, 100)&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp; if (trial.player2.response == "s") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parameters.throwspeed = parameters.slowspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp; if (trial.player2.response == "f") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.fastspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2;&lt;br/&gt;]&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;button slow&amp;gt;&lt;br/&gt;/ caption = "SLOW THROW"&lt;br/&gt;/ size = (15%, 8%)&lt;br/&gt;/ position = (50%, 45%)&lt;br/&gt;/ fontstyle = ("Verdana", 3%, true)&lt;br/&gt;&amp;lt;/button&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;button fast&amp;gt;&lt;br/&gt;/ caption = "FAST THROW"&lt;br/&gt;/ size = (15%, 8%)&lt;br/&gt;/ position = (50%, 55%)&lt;br/&gt;/ fontstyle = ("Verdana", 3%, true)&lt;br/&gt;&amp;lt;/button&amp;gt;&lt;br/&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="background-color: rgb(145, 255, 152);"&gt;&amp;lt;trial player2&amp;gt;&lt;/span&gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.received_from = values.ball_at;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_offsets;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2received += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player1state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//catch&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2state = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player3state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player4state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player5state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player6state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player7state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player8state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player9state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_at = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = substring(trial.player2.response, length(trial.player2.response)-1, 1);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.realizedThrowSchedule = concat(values.realizedThrowSchedule, values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2thrown += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throwcount += 1;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ stimulusframes = [1=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stats]&lt;br/&gt;&lt;br/&gt;&lt;span style="background-color: rgb(145, 255, 152);"&gt;/ validresponse = ("1", "3", "5" player5, player6, player7, player8, player9)&lt;br/&gt;/ responsemessage = ("1", player1click, 100)&lt;br/&gt;/ responsemessage = ("3", player3click, 100)&lt;br/&gt;/ responsemessage = ("5", player4click, 100)&lt;/span&gt;&lt;br/&gt;/ responsemessage = (player5, player5click, 100)&lt;br/&gt;/ responsemessage = (player6, player6click, 100)&lt;br/&gt;/ responsemessage = (player7, player7click, 100)&lt;br/&gt;/ responsemessage = (player8, player8click, 100)&lt;br/&gt;/ responsemessage = (player9, player9click, 100)&lt;br/&gt;&lt;span style="background-color: rgb(145, 255, 152);"&gt;/ inputdevice = keyboard&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp; if (trial.player2.response == 2) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values.throw_to = 1; // use assignment operator, separate statements properly&lt;br/&gt;&amp;nbsp;&amp;nbsp;  return trial.throw;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp; if (trial.player2.response == 4) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = 3; // use assignment operator, separate statements properly&lt;br/&gt;&amp;nbsp;&amp;nbsp;  return trial.throw;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp; if (trial.player2.response == 6) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = 4; // use assignment operator, separate statements properly&lt;br/&gt;&amp;nbsp;&amp;nbsp;  return trial.throw;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;// implements the throw animation&lt;br/&gt;&amp;lt;trial throw&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trial.throw.resetstimulusframes();&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (parameters.throwspeed == parameters.fastspeed) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;systembeep.duration = 2000;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;systembeep.frequency = 100;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;systembeep.playthrough = true;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trial.throw.insertstimulustime(systembeep, 900 + expressions.throwduration);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player1.skip = expressions.skip_player1pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player2.skip = expressions.skip_player2pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player3.skip = expressions.skip_player3pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player4.skip = expressions.skip_player4pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player5.skip = expressions.skip_player5pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player6.skip = expressions.skip_player6pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player7.skip = expressions.skip_player7pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player8.skip = expressions.skip_player8pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player9.skip = expressions.skip_player9pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throwingplayer_x = list.player_x.item(values.ball_at);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throwingplayer_y = list.player_y.item(values.ball_at);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.receivingplayer_x = list.player_x.item(values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.receivingplayer_y = list.player_y.item(values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_x = values.receivingplayer_x;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_throwoffset;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.throwcount &amp;gt;= parameters.nthrows){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stop = true;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stop = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player1.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player2.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player3.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player4.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player5.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player6.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player7.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player8.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player9.skip = false;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ stimulustimes = [0=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow0, stats; &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;500=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow1, stats; &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;600=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow2, stats;  &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;700=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow3, stats; &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;800=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow4, stats; &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;900=ball_to]&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ showmousecursor = false&lt;br/&gt;/ validresponse = (0)&lt;br/&gt;/ trialduration = 900 + expressions.throwduration&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.throw_to == 2 &amp;amp;&amp;amp; !parameters.spectate){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (parameters.throwspeed == parameters.fastspeed) { // if throw received was fast&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2forceslow; // player 2 must throw slow&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (parameters.throwspeed == parameters.slowspeed) { // otherwise go to speed selection first&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2speed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.npctrial;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;]&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;// displays the welcome message / instructions / game cover story&lt;br/&gt;&amp;lt;trial instructions&amp;gt;&lt;br/&gt;/ stimulusframes = [1=clearscreen, banner, logo, instructions]&lt;br/&gt;/ validresponse = ("r")&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;// displays the "Connecting to other players..." message and animation&lt;br/&gt;&amp;lt;trial start&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.npcs.reset();&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.realizedThrowSchedule = concat(values.realizedThrowSchedule, values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_x = list.player_x.item(values.throw_to);&lt;br/&gt;]&lt;br/&gt;/ stimulusframes = [1=clearscreen, connectingmessage, connectinganimation]&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ validresponse = ("r")&lt;br/&gt;/ trialduration = replace(5000,6000,7000)&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.throw_to == 2 &amp;amp;&amp;amp; !parameters.spectate){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2speed; //trial.player2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.npctrial;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;]&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;// end screen with exit&lt;br/&gt;&amp;lt;trial thankyou&amp;gt;&lt;br/&gt;/ stimulusframes = [1=clearscreen, thankyoumessage]&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ validresponse = ("r")&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;</description><pubDate>Fri, 26 Jan 2024 05:06:07 GMT</pubDate><dc:creator>S.T</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic35906.aspx</link><description>&lt;blockquote data-id="35905" class="if-quote-wrapper" unselectable="on" data-guid="1706101071013" contenteditable="false" id="if_insertedNode_1706101069715"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35905" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35905" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35905" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;S.T - 1/24/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35905"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;br/&gt;&lt;br/&gt;&lt;blockquote data-id="35892" class="if-quote-wrapper" unselectable="on" data-guid="1706101071013" contenteditable="false" id="if_insertedNode_1706082399215"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35892" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35892" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35892" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 1/22/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35892"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;Dear Dave, &lt;br/&gt;Thanks for the reply.&lt;br/&gt;I will try the question about the keyboard.&lt;br/&gt;&lt;br/&gt;I will change my question about setting the speed of the throws by the NPCs.&lt;br/&gt;I had a suggestion the other day to create a scheduling list, but that didn't work and instead I used "if else" and it worked.&lt;br/&gt;What I want to do is have the NPCs (P1, P4) only make fast passes to other NPCs (P3).&lt;br/&gt;If a fast pass is thrown by another player (mainly participant P2), it is constrained to throw only slow passes, not fast passes.&lt;br/&gt;&lt;br/&gt;With the code below(The green line drawn corresponds to the area), I could set up P1 or P4 to only make fast passes against P3.&lt;br/&gt;However, the "if fast paths are received, only slow paths can be thrown" constraint, which was working until I wrote the if else to do this, does not work in this code.&lt;br/&gt;In other words, if a fast pass is received from P2 (participant), the NPCs will throw a fast pass against P3.&lt;br/&gt;&lt;br/&gt;What part of the code is incorrect?&lt;br/&gt;Currently, the program for the trial looks like this:&lt;br/&gt;&lt;br/&gt;**************************************************************************************************************&lt;br/&gt;**************************************************************************************************************&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TRIALS&lt;br/&gt;**************************************************************************************************************&lt;br/&gt;**************************************************************************************************************&lt;br/&gt;// handles the NPCs (virtual players) as well as player 2 in "spectate" conditions&lt;br/&gt;&amp;lt;trial npctrial&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.received_from = values.ball_at;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_at = values.throw_to;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.ball_at == 2) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2received += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_offsets;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player1state = (values.ball_at == 1) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2state = (values.ball_at == 2) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player3state = (values.ball_at == 3) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player4state = (values.ball_at == 4) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player5state = (values.ball_at == 5) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player6state = (values.ball_at == 6) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player7state = (values.ball_at == 7) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player8state = (values.ball_at == 8) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player9state = (values.ball_at == 9) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.throw_to == 0){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.npcs.nextindex;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = round(rand(1, 4)) * 1000;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (values.throw_to == values.ball_at){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.deprecated +=1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;&lt;span style="background-color: rgb(209, 255, 145);"&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.realizedThrowSchedule = concat(values.realizedThrowSchedule, values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throwcount += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.previousthrowspeed = parameters.throwspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.previousthrowspeed == parameters.fastspeed) { // if previous throw was fast&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.slowspeed; // next throw must be slow&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if(values.throw_to == 3){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.fastspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parameters.throwspeed = parameters.slowspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.ball_at == 2) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2thrown += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/span&gt;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ stimulusframes = [1=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stats]&lt;br/&gt;&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ showmousecursor = false&lt;br/&gt;/ validresponse = (0)&lt;br/&gt;/ trialduration = values.delay&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.throw;&lt;br/&gt;]&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial player2forceslow&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.received_from = values.ball_at;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_offsets;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2received += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player1state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//catch&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2state = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player3state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player4state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player5state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player6state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player7state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player8state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player9state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_at = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.slowspeed;&lt;br/&gt;]&lt;br/&gt;/ validresponse = (0)&lt;br/&gt;/ trialduration = 0&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2;&lt;br/&gt;]&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;// handles the human player&lt;br/&gt;&amp;lt;trial player2speed&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.received_from = values.ball_at;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_offsets;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2received += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player1state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//catch&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2state = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player3state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player4state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player5state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player6state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player7state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player8state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player9state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_at = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (trial.player2speed.response == "slow") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.slowspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (trial.player2speed.response == "fast") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.fastspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;/ stimulusframes = [1=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stats, slow, fast]&lt;br/&gt;/ validresponse = (button.slow, button.fast)&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2;&lt;br/&gt;]&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;button slow&amp;gt;&lt;br/&gt;/ caption = "SLOW THROW"&lt;br/&gt;/ size = (15%, 8%)&lt;br/&gt;/ position = (50%, 45%)&lt;br/&gt;/ fontstyle = ("Verdana", 3%, true)&lt;br/&gt;&amp;lt;/button&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;button fast&amp;gt;&lt;br/&gt;/ caption = "FAST THROW"&lt;br/&gt;/ size = (15%, 8%)&lt;br/&gt;/ position = (50%, 55%)&lt;br/&gt;/ fontstyle = ("Verdana", 3%, true)&lt;br/&gt;&amp;lt;/button&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial player2&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.received_from = values.ball_at;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//expressions.set_offsets;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player2received += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player1state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//catch&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player2state = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player3state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player4state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player5state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player6state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player7state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player8state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player9state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.ball_at = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = substring(trial.player2.response, length(trial.player2.response)-1, 1);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.realizedThrowSchedule = concat(values.realizedThrowSchedule, values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2thrown += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throwcount += 1;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ stimulusframes = [1=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stats]&lt;br/&gt;&lt;br/&gt;/ validresponse = (player1, player3, player4, player5, player6, player7, player8, player9)&lt;br/&gt;/ responsemessage = (player1, player1click, 100)&lt;br/&gt;/ responsemessage = (player3, player3click, 100)&lt;br/&gt;/ responsemessage = (player4, player4click, 100)&lt;br/&gt;/ responsemessage = (player5, player5click, 100)&lt;br/&gt;/ responsemessage = (player6, player6click, 100)&lt;br/&gt;/ responsemessage = (player7, player7click, 100)&lt;br/&gt;/ responsemessage = (player8, player8click, 100)&lt;br/&gt;/ responsemessage = (player9, player9click, 100)&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.throw;&lt;br/&gt;]&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;// implements the throw animation&lt;br/&gt;&amp;lt;trial throw&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trial.throw.resetstimulusframes();&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (parameters.throwspeed == parameters.fastspeed) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;systembeep.duration = 2000;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;systembeep.frequency = 100;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;systembeep.playthrough = true;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trial.throw.insertstimulustime(systembeep, 900 + expressions.throwduration);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player1.skip = expressions.skip_player1pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player2.skip = expressions.skip_player2pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player3.skip = expressions.skip_player3pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player4.skip = expressions.skip_player4pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player5.skip = expressions.skip_player5pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player6.skip = expressions.skip_player6pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player7.skip = expressions.skip_player7pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player8.skip = expressions.skip_player8pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player9.skip = expressions.skip_player9pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throwingplayer_x = list.player_x.item(values.ball_at);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throwingplayer_y = list.player_y.item(values.ball_at);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.receivingplayer_x = list.player_x.item(values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.receivingplayer_y = list.player_y.item(values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_x = values.receivingplayer_x;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_throwoffset;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.throwcount &amp;gt;= parameters.nthrows){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stop = true;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stop = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player1.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player2.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player3.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player4.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player5.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player6.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player7.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player8.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player9.skip = false;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ stimulustimes = [0=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow0, stats; &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;500=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow1, stats; &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;600=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow2, stats;  &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;700=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow3, stats; &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;800=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow4, stats; &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;900=ball_to]&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ showmousecursor = false&lt;br/&gt;/ validresponse = (0)&lt;br/&gt;/ trialduration = 900 + expressions.throwduration&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.throw_to == 2 &amp;amp;&amp;amp; !parameters.spectate){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (parameters.throwspeed == parameters.fastspeed) { // if throw received was fast&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2forceslow; // player 2 must throw slow&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (parameters.throwspeed == parameters.slowspeed) { // otherwise go to speed selection first&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2speed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.npctrial;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;]&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;// displays the welcome message / instructions / game cover story&lt;br/&gt;&amp;lt;trial instructions&amp;gt;&lt;br/&gt;/ stimulusframes = [1=clearscreen, banner, logo, instructions, play]&lt;br/&gt;/ validresponse = (play)&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;// displays the "Connecting to other players..." message and animation&lt;br/&gt;&amp;lt;trial start&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.npcs.reset();&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.realizedThrowSchedule = concat(values.realizedThrowSchedule, values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_x = list.player_x.item(values.throw_to);&lt;br/&gt;]&lt;br/&gt;/ stimulusframes = [1=clearscreen, connectingmessage, connectinganimation]&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ validresponse = (0)&lt;br/&gt;/ trialduration = replace(5000,6000,7000)&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.throw_to == 2 &amp;amp;&amp;amp; !parameters.spectate){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2speed; //trial.player2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.npctrial;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;]&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;// end screen with exit button&lt;br/&gt;&amp;lt;trial thankyou&amp;gt;&lt;br/&gt;/ stimulusframes = [1=clearscreen, thankyoumessage, exit]&lt;br/&gt;/ validresponse = (exit)&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Sorry for the length of this message.&lt;br/&gt;Please confirm.&lt;br/&gt;&lt;br/&gt;Respectfully yours,&lt;br/&gt;&lt;a class="if-quote-goto quote-link" href="#" data-id="35905"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;[code]/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.previousthrowspeed = parameters.throwspeed; // record speed of previous throw&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.throw_to == 3) { // if recipient is P3&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.fastspeed; // throw fast ball by default&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// BUT &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.previousthrowspeed == parameters.fastspeed) { // if previous throw was fast&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.slowspeed; // next throw must be slow&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};  &lt;br/&gt;...&lt;br/&gt;][/code]&lt;br/&gt;&lt;br/&gt;Should be as simple as that?</description><pubDate>Wed, 24 Jan 2024 13:04:41 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic35905.aspx</link><description>&lt;br/&gt;&lt;br/&gt;&lt;blockquote data-id="35892" class="if-quote-wrapper" unselectable="on" data-guid="1706082400745" contenteditable="false" id="if_insertedNode_1706082399215"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35892" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35892" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35892" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 1/22/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35892"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;Dear Dave, &lt;br/&gt;Thanks for the reply.&lt;br/&gt;I will try the question about the keyboard.&lt;br/&gt;&lt;br/&gt;I will change my question about setting the speed of the throws by the NPCs.&lt;br/&gt;I had a suggestion the other day to create a scheduling list, but that didn't work and instead I used "if else" and it worked.&lt;br/&gt;What I want to do is have the NPCs (P1, P4) only make fast passes to other NPCs (P3).&lt;br/&gt;If a fast pass is thrown by another player (mainly participant P2), it is constrained to throw only slow passes, not fast passes.&lt;br/&gt;&lt;br/&gt;With the code below(The green line drawn corresponds to the area), I could set up P1 or P4 to only make fast passes against P3.&lt;br/&gt;However, the "if fast paths are received, only slow paths can be thrown" constraint, which was working until I wrote the if else to do this, does not work in this code.&lt;br/&gt;In other words, if a fast pass is received from P2 (participant), the NPCs will throw a fast pass against P3.&lt;br/&gt;&lt;br/&gt;What part of the code is incorrect?&lt;br/&gt;Currently, the program for the trial looks like this:&lt;br/&gt;&lt;br/&gt;**************************************************************************************************************&lt;br/&gt;**************************************************************************************************************&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TRIALS&lt;br/&gt;**************************************************************************************************************&lt;br/&gt;**************************************************************************************************************&lt;br/&gt;// handles the NPCs (virtual players) as well as player 2 in "spectate" conditions&lt;br/&gt;&amp;lt;trial npctrial&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.received_from = values.ball_at;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_at = values.throw_to;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.ball_at == 2) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2received += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_offsets;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player1state = (values.ball_at == 1) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2state = (values.ball_at == 2) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player3state = (values.ball_at == 3) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player4state = (values.ball_at == 4) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player5state = (values.ball_at == 5) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player6state = (values.ball_at == 6) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player7state = (values.ball_at == 7) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player8state = (values.ball_at == 8) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player9state = (values.ball_at == 9) + 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.throw_to == 0){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.npcs.nextindex;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = round(rand(1, 4)) * 1000;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (values.throw_to == values.ball_at){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.deprecated +=1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;&lt;span style="background-color: rgb(209, 255, 145);"&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.realizedThrowSchedule = concat(values.realizedThrowSchedule, values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throwcount += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.previousthrowspeed = parameters.throwspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.previousthrowspeed == parameters.fastspeed) { // if previous throw was fast&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.slowspeed; // next throw must be slow&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if(values.throw_to == 3){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.fastspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parameters.throwspeed = parameters.slowspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.ball_at == 2) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2thrown += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/span&gt;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ stimulusframes = [1=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stats]&lt;br/&gt;&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ showmousecursor = false&lt;br/&gt;/ validresponse = (0)&lt;br/&gt;/ trialduration = values.delay&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.throw;&lt;br/&gt;]&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial player2forceslow&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.received_from = values.ball_at;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_offsets;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2received += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player1state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//catch&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2state = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player3state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player4state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player5state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player6state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player7state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player8state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player9state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_at = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.slowspeed;&lt;br/&gt;]&lt;br/&gt;/ validresponse = (0)&lt;br/&gt;/ trialduration = 0&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2;&lt;br/&gt;]&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;// handles the human player&lt;br/&gt;&amp;lt;trial player2speed&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.received_from = values.ball_at;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_offsets;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2received += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player1state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//catch&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2state = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player3state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player4state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player5state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player6state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player7state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player8state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player9state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_at = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (trial.player2speed.response == "slow") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.slowspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (trial.player2speed.response == "fast") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameters.throwspeed = parameters.fastspeed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;]&lt;br/&gt;/ stimulusframes = [1=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stats, slow, fast]&lt;br/&gt;/ validresponse = (button.slow, button.fast)&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2;&lt;br/&gt;]&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;button slow&amp;gt;&lt;br/&gt;/ caption = "SLOW THROW"&lt;br/&gt;/ size = (15%, 8%)&lt;br/&gt;/ position = (50%, 45%)&lt;br/&gt;/ fontstyle = ("Verdana", 3%, true)&lt;br/&gt;&amp;lt;/button&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;button fast&amp;gt;&lt;br/&gt;/ caption = "FAST THROW"&lt;br/&gt;/ size = (15%, 8%)&lt;br/&gt;/ position = (50%, 55%)&lt;br/&gt;/ fontstyle = ("Verdana", 3%, true)&lt;br/&gt;&amp;lt;/button&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial player2&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.received_from = values.ball_at;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//expressions.set_offsets;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player2received += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player1state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//catch&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player2state = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player3state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player4state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player5state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player6state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player7state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player8state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.player9state = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.ball_at = 2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = substring(trial.player2.response, length(trial.player2.response)-1, 1);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.realizedThrowSchedule = concat(values.realizedThrowSchedule, values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.player2thrown += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throwcount += 1;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ stimulusframes = [1=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stats]&lt;br/&gt;&lt;br/&gt;/ validresponse = (player1, player3, player4, player5, player6, player7, player8, player9)&lt;br/&gt;/ responsemessage = (player1, player1click, 100)&lt;br/&gt;/ responsemessage = (player3, player3click, 100)&lt;br/&gt;/ responsemessage = (player4, player4click, 100)&lt;br/&gt;/ responsemessage = (player5, player5click, 100)&lt;br/&gt;/ responsemessage = (player6, player6click, 100)&lt;br/&gt;/ responsemessage = (player7, player7click, 100)&lt;br/&gt;/ responsemessage = (player8, player8click, 100)&lt;br/&gt;/ responsemessage = (player9, player9click, 100)&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.throw;&lt;br/&gt;]&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;// implements the throw animation&lt;br/&gt;&amp;lt;trial throw&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trial.throw.resetstimulusframes();&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (parameters.throwspeed == parameters.fastspeed) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;systembeep.duration = 2000;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;systembeep.frequency = 100;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;systembeep.playthrough = true;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trial.throw.insertstimulustime(systembeep, 900 + expressions.throwduration);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player1.skip = expressions.skip_player1pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player2.skip = expressions.skip_player2pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player3.skip = expressions.skip_player3pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player4.skip = expressions.skip_player4pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player5.skip = expressions.skip_player5pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player6.skip = expressions.skip_player6pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player7.skip = expressions.skip_player7pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player8.skip = expressions.skip_player8pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player9.skip = expressions.skip_player9pic;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throwingplayer_x = list.player_x.item(values.ball_at);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throwingplayer_y = list.player_y.item(values.ball_at);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.receivingplayer_x = list.player_x.item(values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.receivingplayer_y = list.player_y.item(values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_x = values.receivingplayer_x;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expressions.set_throwoffset;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.throwcount &amp;gt;= parameters.nthrows){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stop = true;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stop = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player1.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player2.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player3.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player4.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player5.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player6.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player7.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player8.skip = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picture.player9.skip = false;&lt;br/&gt;]&lt;br/&gt;&lt;br/&gt;/ stimulustimes = [0=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow0, stats; &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;500=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow1, stats; &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;600=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow2, stats;  &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;700=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow3, stats; &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;800=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label, &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerthrow4, stats; &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;900=ball_to]&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ showmousecursor = false&lt;br/&gt;/ validresponse = (0)&lt;br/&gt;/ trialduration = 900 + expressions.throwduration&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.throw_to == 2 &amp;amp;&amp;amp; !parameters.spectate){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (parameters.throwspeed == parameters.fastspeed) { // if throw received was fast&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2forceslow; // player 2 must throw slow&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (parameters.throwspeed == parameters.slowspeed) { // otherwise go to speed selection first&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2speed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.npctrial;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;]&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;// displays the welcome message / instructions / game cover story&lt;br/&gt;&amp;lt;trial instructions&amp;gt;&lt;br/&gt;/ stimulusframes = [1=clearscreen, banner, logo, instructions, play]&lt;br/&gt;/ validresponse = (play)&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;// displays the "Connecting to other players..." message and animation&lt;br/&gt;&amp;lt;trial start&amp;gt;&lt;br/&gt;/ ontrialbegin = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.npcs.reset();&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.throw_to = list.throwschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.delay = list.delayschedule.nextvalue;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.realizedThrowSchedule = concat(values.realizedThrowSchedule, values.throw_to);&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.ball_x = list.player_x.item(values.throw_to);&lt;br/&gt;]&lt;br/&gt;/ stimulusframes = [1=clearscreen, connectingmessage, connectinganimation]&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ validresponse = (0)&lt;br/&gt;/ trialduration = replace(5000,6000,7000)&lt;br/&gt;/ branch = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.throw_to == 2 &amp;amp;&amp;amp; !parameters.spectate){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.player2speed; //trial.player2;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.npctrial;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;]&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;// end screen with exit button&lt;br/&gt;&amp;lt;trial thankyou&amp;gt;&lt;br/&gt;/ stimulusframes = [1=clearscreen, thankyoumessage, exit]&lt;br/&gt;/ validresponse = (exit)&lt;br/&gt;/ recorddata = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Sorry for the length of this message.&lt;br/&gt;Please confirm.&lt;br/&gt;&lt;br/&gt;Respectfully yours,&lt;br/&gt;</description><pubDate>Wed, 24 Jan 2024 07:54:55 GMT</pubDate><dc:creator>S.T</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic35892.aspx</link><description>&lt;blockquote data-id="35891" class="if-quote-wrapper" unselectable="on" data-guid="1705926545075" contenteditable="false" id="if_insertedNode_1705926544031"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35891" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35891" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35891" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;S.T - 1/22/2024&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35891"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;blockquote data-id="35855" class="if-quote-wrapper" unselectable="on" data-guid="1705926545075" contenteditable="false" id="if_insertedNode_1705906459858"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35855" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35855" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35855" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 12/19/2023&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35855"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;Dear Dave.&lt;br/&gt;&lt;br/&gt;Sorry for the addition.&lt;br/&gt;The other day when I told you that I could not schedule the speed of the passes thrown by npcs, I was told by you the following.&lt;br/&gt;&lt;br/&gt;---------------------------------------------------------------------------------------------&lt;br/&gt;&amp;nbsp;You can implement throw speed changes in the exact same way as other aspects are already implemented, specifically the &amp;lt;list&amp;gt; encoding which player is You can implement implement throw speed changes in the exact same way as other aspects are already implemented, specifically the &amp;lt;list&amp;gt; encoding which player is supposed to pass the ball to which other player, and the time taken for each player to decide before doing the pass.&lt;br/&gt;&lt;br/&gt;Look at the custom throwschedule lists (there are several examples included in the code) and the corresponding delayschedule lists. Understand how these work, then do the same thing to encode schedule throw "strength"&lt;br/&gt;---------------------------------------------------------------------------------------------&lt;br/&gt;&lt;br/&gt;While considering how the other schedules (throwschedule, delayschedule) work, I created a similar one named speedschedule.&lt;br/&gt;When I run the experiment, a bug occurs: from the start, the ball thrown by npcs disappears and the assignment is over in about 3 seconds.&lt;br/&gt;What are the possible causes?&lt;br/&gt;&lt;br/&gt;I apologize for the repetitiveness.&lt;br/&gt;Thank you very much in advance.&lt;br/&gt;&lt;br/&gt;Respectfully yours,&lt;br/&gt;&lt;br/&gt;&lt;a class="if-quote-goto quote-link" href="#" data-id="35891"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;Regarding your first question, you can find previous forum posts dealing with that: &lt;a href="https://forums.millisecond.com/Topic35694.aspx"&gt;https://forums.millisecond.com/Topic35694.aspx&lt;/a&gt;&lt;br/&gt;Your second question isn't answerable without you providing the faulty code and explaining exactly what you did and why.</description><pubDate>Mon, 22 Jan 2024 12:30:49 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic35891.aspx</link><description>&lt;blockquote data-id="35855" class="if-quote-wrapper" unselectable="on" data-guid="1705906460676" contenteditable="false" id="if_insertedNode_1705906459858"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35855" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35855" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35855" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 12/19/2023&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35855"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;Dear Dave.&lt;br/&gt;&lt;br/&gt;Sorry for the addition.&lt;br/&gt;The other day when I told you that I could not schedule the speed of the passes thrown by npcs, I was told by you the following.&lt;br/&gt;&lt;br/&gt;---------------------------------------------------------------------------------------------&lt;br/&gt;&amp;nbsp;You can implement throw speed changes in the exact same way as other aspects are already implemented, specifically the &amp;lt;list&amp;gt; encoding which player is You can implement implement throw speed changes in the exact same way as other aspects are already implemented, specifically the &amp;lt;list&amp;gt; encoding which player is supposed to pass the ball to which other player, and the time taken for each player to decide before doing the pass.&lt;br/&gt;&lt;br/&gt;Look at the custom throwschedule lists (there are several examples included in the code) and the corresponding delayschedule lists. Understand how these work, then do the same thing to encode schedule throw "strength"&lt;br/&gt;---------------------------------------------------------------------------------------------&lt;br/&gt;&lt;br/&gt;While considering how the other schedules (throwschedule, delayschedule) work, I created a similar one named speedschedule.&lt;br/&gt;When I run the experiment, a bug occurs: from the start, the ball thrown by npcs disappears and the assignment is over in about 3 seconds.&lt;br/&gt;What are the possible causes?&lt;br/&gt;&lt;br/&gt;I apologize for the repetitiveness.&lt;br/&gt;Thank you very much in advance.&lt;br/&gt;&lt;br/&gt;Respectfully yours,&lt;br/&gt;&lt;br/&gt;</description><pubDate>Mon, 22 Jan 2024 07:03:47 GMT</pubDate><dc:creator>S.T</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic35890.aspx</link><description>Dear Dave.&lt;br/&gt;&lt;br/&gt;Hello,&lt;br/&gt;I hope you had a wonderful holiday season.&lt;br/&gt;Thank you for your reply the other day.&lt;br/&gt;Some things are still unresolved, but things are going better than last time.&lt;br/&gt;&lt;br/&gt;I have one additional question.&lt;br/&gt;Usually in cyberball tasks, subjects respond with a button or a click.&lt;br/&gt;However, I want to do cyberball with MRI, so instead of buttons and clicks, I want to use the keyboard to enter the subject's responses.&lt;br/&gt;I have tried something, but all I get are errors (worst case is a force close for unknown reason).&lt;br/&gt;&lt;br/&gt;Could you please tell me how to convert cyberball5 to keyboard input or what code to use?&lt;br/&gt;Thank you in advance.&lt;br/&gt;&lt;br/&gt;Respectfully yours,&lt;br/&gt;S.T&lt;br/&gt;</description><pubDate>Mon, 22 Jan 2024 05:25:18 GMT</pubDate><dc:creator>S.T</dc:creator></item><item><title>RE: Two questions about programming Cyberball 5 (how to set the type of speed of balls thrown by NPCs and end a session by time)</title><link>https://forums.millisecond.com/Topic35855.aspx</link><description>&lt;blockquote data-id="35854" class="if-quote-wrapper" unselectable="on" data-guid="1702946745832" contenteditable="false" id="if_insertedNode_1702946744824"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="35854" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="35854" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="35854" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;S.T - 12/19/2023&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-35854"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;Hello,&lt;br/&gt;&lt;br/&gt;I hope this message finds you well.&lt;br/&gt;I am currently using Inqusit6 to create a Cyberball task for use in fMRI experiment.&lt;br/&gt;I am struggling with two points now.&lt;br/&gt;&lt;br/&gt;The first is that even though I can customize the sequence of passes, I cannot set up who throws the strongball(In other word fast speed passes) to whom.&lt;br/&gt;Specifically, for example, NPC1 throws a fast pass to NPC3 while slow to NPC2 (participant) and NPC4. &lt;br/&gt;I want to set up something like this for NPC1, NPC3 and NPC4.&lt;br/&gt;I have tried various ways, but they did not work. I would like to know what code I can use to execute it.&lt;br/&gt;&lt;br/&gt;The second is to set a time limit.&lt;br/&gt;In my experiment, I plan to have two types of sessions of the Cyberball task, with each session lasting 3 minutes and repeating this. The number of throws does not indicate the end of the session.&lt;br/&gt;I have tried setting timeout and clocktimer, but 30 throws remain the end condition of the session, and I can't change it.&lt;br/&gt;Is it possible to set time as the end condition for each session of Cyberball task?&lt;br/&gt;And please tell me how to do that.&lt;br/&gt;&lt;br/&gt;Thank you in advance for your help.&lt;br/&gt;&lt;br/&gt;Best regard,&lt;br/&gt;&lt;br/&gt;&lt;a class="if-quote-goto quote-link" href="#" data-id="35854"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;You can implement throw speed changes in the exact same way as other aspects are already implemented, specifically the &amp;lt;list&amp;gt; encoding which player is supposed to pass the ball to which other player, and the time taken for each player to decide before doing the pass.&lt;br/&gt;&lt;br/&gt;Look at the custom throwschedule lists (there are several examples included in the code) and the corresponding delayschedule lists. Understand how these work, then do the same thing to encode schedule throw "strength."&lt;br/&gt;&lt;br/&gt;&amp;gt; I&amp;nbsp; have tried setting timeout and clocktimer, but 30 throws remain the end condition of the session, and I can't change it.&lt;br/&gt;&lt;br/&gt;You need to spend more time reading and understanding the code.&lt;br/&gt;&lt;br/&gt;Here is where the stop bit is set in &amp;lt;trial throw&amp;gt;:&lt;br/&gt;&lt;br/&gt;[code]/ ontrialend = [&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.throwcount &amp;gt;= parameters.nthrows){&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stop = true;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stop = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;...&lt;br/&gt;][/code]&lt;br/&gt;&lt;br/&gt;If the number of throws performed (values.throwcount) is greater or equal than the pre-set number of throws (parameters.nthrows), the block is stopped. If you don't want that and/or want a different stop condition, then change it.</description><pubDate>Tue, 19 Dec 2023 00:55:17 GMT</pubDate><dc:creator>Dave</dc:creator></item></channel></rss>