[User] Please transcribe this text

[Assistant] The twinge of regret flickered in his belly as Greystripe nodded and returned to washing.


[User] Please transcribe this text

[Assistant] Fireheart believed that Greystripe was wrong to think it was only Ravenpaw who had a problem with Tigerclaw.


[User] Please transcribe this text

[Assistant] Fireheart's own instincts told him that the ThunderClan deputy should not be trusted. He had to share his suspicions with Bluestar, for her safety, and the safety of the Clan.


[User] Please transcribe this text

[Assistant] A glimpse of gray fur on the other side of the clearing told Fireheart that Blue Star had emerged from her den. Alone.


[User] Please transcribe this text

[Assistant] He scrambled to his paws, but the ThunderClan leader leaped straight up onto the high rock and called to the Clan. Fireheart lashed his tail impatiently.


[User] Please transcribe this text

[Assistant] Greystripe's ears flicked excitedly as he heard Bluestar's call. A naming ceremony? He meowed. It must be Longtail getting his first apprentice. He's been dropping hints for days.


[User] Please transcribe this text

[Assistant] He bounded over to join the cats, gathering at the edge of the clearing, and still itching with frustration Fireheart followed.


[User] Please transcribe this text

[Assistant] A small black and white kit padded into the clearing. His soft paws made no sound on the hard earth.


[User] Please transcribe this text

[Assistant] He walked toward the high rock with his pale eyes lowered, and Fireheart almost expected to see him tremble.


[User] Please transcribe this text

[Assistant] The warrior had taunted him viciously on his first day with the clan, mocking his kitty pet origins. Fireheart had disliked him ever since. From this day forward, Blue Star meowed, staring down at the kit. Until he has earned his warrior name, this apprentice will be called Swiftpaw.


[User] Please transcribe this text

[Assistant] There was no flash of determination in the eyes of the black and white kid as he looked up at his leader. Instead his amber eyes were wide with anxiety.


[User] Please transcribe this text

[Assistant] Fireheart turned his head as Longtail padded toward his new apprentice. Blue Star spoke again. Longtail, you were Darkstripe's apprentice. He taught you well, and you have become a fierce and loyal warrior.


[User] Please transcribe this text

[Assistant] I hope you will pass some of these qualities on to SwiftPaw.


[User] Please transcribe this text

[Assistant] Fireheart searched Longtail's face for an expression of disdain as he looked down at Swiftpaw.


[User] Please transcribe this text

[Assistant] But the warrior's eyes softened as he met his new apprentice's gaze, and gently the two clan cats touched noses. It's okay, you're doing fine, Longtail murmured encouragingly. Yeah, right, Fireheart thought bitterly. Just because he's clan born, Longtail sure didn't welcome me like that. He glanced around the rest of the clan.


[User] Please transcribe this text

[Assistant] And felt a pang of resentment as the cats began to murmur congratulations to the new apprentice. What's up with you? whispered Graystripe. That'll be us one day. Fireheart nodded, suddenly cheered by the thought of getting his own apprentice and pushed away his resentment. He was a part of ThunderClan now, and surely that was all that mattered.


[User] Please transcribe this text

[Assistant] Fireheart knew he should be looking forward to his first gathering as a warrior.


[User] Please transcribe this text

[Assistant] But he was still determined to find a chance to tell Bluestar everything he knew about Tiger Claw, and the thought of it lay like a cold stone in his stomach. Have you got maggot gut or something? Meowed Graystripe beside him. You're pulling some very weird faces. Fireheart looked at his friend, wishing he could confide in him. But he'd promised to leave Graystripe out of it. I'm fine, he meowed. Come on, I hear Bluestar calling.


[User] Please transcribe this text

[Assistant] The two cats trotted over to the group assembling in the clearing. Blue Star dipped her head to acknowledge their arrival. Then she turned and led the cats out of the camp.


[User] Please transcribe this text

[Assistant] Fireheart paused while the other cats scrambled past him up the steep trail that led to the forest above.


[User] Please transcribe this text

[Assistant] Firepaw flexed his powerful hind legs and began to leap from boulder to boulder, leaving the camp behind. At the top, he paused to catch his breath, his sides heaving. The forest stretched away before him.


[User] Please transcribe this text

[Assistant] Beneath his paws he could feel the crisp crackle of newly fallen leaves.


[User] Please transcribe this text

[Assistant] Silver belt, glittered in the sky like morning dew scattered on black fur.


[User] Please transcribe this text

[Assistant] Fireheart thought of his first journey to four trees with Tigerclaw and Lionheart. He felt a pang of sadness as he remembered Lionheart.


[User] Please transcribe this text

[Assistant] Greystripe's mentor and ThunderClan's deputy between Redtail and Tigerclaw had been a warm-hearted golden warrior.


[User] Please transcribe this text

[Assistant] He'd been killed in battle and Tigerclaw had taken his place.


[User] Please transcribe this text

[Assistant] On Fireheart's first visit to Fourtrees, Lionheart had taken the apprentices on a roundabout route.


[User] Please transcribe this text

[Assistant] Blue star would lead them straight through the heart of thunderclan territory.


[User] Please transcribe this text

[Assistant] Fireheart could see her already disappearing into the undergrowth and he charged after the party of cats.


[User] Please transcribe this text

[Assistant] Fireheart ignored Graystripe's surprised meow and caught up with the clam leader. Blue Star, he called, panting as he drew up beside her. May I talk to you? Blue Star glanced at him and nodded. Take the lead, Tiger Claw, she meowed. She let her pace slow and Tiger Claw bounded past her.


[User] Please transcribe this text

[Assistant] The other cats followed the dark tabby without question as he raced on through the undergrowth. Blue Star and Fireheart dropped into a steady trot. Within a moment, they were alone.


[User] Please transcribe this text

[Assistant] Since then she had trusted him time and time again when other cats had questioned his loyalty to a clan whose blood he didn't share.


[User] Please transcribe this text

[Assistant] What would she say when Fireheart told her that he had lied about Ravenpaw?


[User] Please transcribe this text

[Assistant] He lived on a two-leg farm that lay on the route to Highstones, a sacred place for all the cats in the forest.


[User] Please transcribe this text

[Assistant] The ThunderClan leader stared past Fireheart into the depths of the forest.


[User] Please transcribe this text

[Assistant] I hope he is happier living with Barley than he was in the forest. B-But he was born into Thunderclan!


[User] Please transcribe this text

[Assistant] Fireheart stammered, taken aback by his leader's calm acceptance of Ravenpaw's departure.


[User] Please transcribe this text

[Assistant] That doesn't necessarily mean he was suited to clan life, Blue Star pointed out. After all, you aren't clan born, yet you've become a fine warrior. Ravenpaw may find his true path elsewhere. But he didn't leave ThunderClan because he wanted to, Fireheart protested. It was impossible for him to stay. Impossible? Blue Star rested her blue gaze on him. What do you mean?


[User] Please transcribe this text

[Assistant] Fireheart looked down at the ground. Well, Blue Star prompted. Fireheart's mouth was dry. Ravenpaw knew a secret about Tigerclaw, he croaked. I think Tigerclaw was planning to kill him, or else turn the clan against him.


[User] Please transcribe this text

[Assistant] Fireheart answered reluctantly, meeting her stern expression as boldly as he dared


[User] Please transcribe this text

[Assistant] That Tiger Claw killed Redtail in the battle with RiverClan.


[User] Please transcribe this text

[Assistant] Redtail had been the ThunderClan deputy before Lionheart. Fireheart had never met him.


[User] Please transcribe this text

[Assistant] It was the second time tonight she'd referred to his kitty pet roots. Blue Star went on.


[User] Please transcribe this text

[Assistant] Tigerclaw reported that it was RiverClan's deputy Oakheart who killed Redtail. She meowed. Ravenpaw must be mistaken. Did he actually see Tigerclaw kill Redtail?


[User] Please transcribe this text

[Assistant] And you know that by saying this, you are questioning Redtail's honor.


[User] Please transcribe this text

[Assistant] Because he must have been the cat that was responsible for Oakheart's death. One deputy would never kill another in battle. Not if it could possibly be avoided. And Redtail was the most honorable warrior I have ever known.


[User] Please transcribe this text

[Assistant] Blue Star's eyes clouded with pain, and Fireheart felt a pang of dismay that he should have hurt her memory of her former deputy, even if unintentionally.


[User] Please transcribe this text

[Assistant] I cannot account for Redtail's actions, he murmured.


[User] Please transcribe this text

[Assistant] I only know that Ravenpaw truly believes Tigerclaw was responsible for Redtail's death. Bluestar sighed and relaxed her shoulders. We all know that Ravenpaw has a vivid imagination. She meowed gently, her eyes sympathetic. He was badly injured in the battle, and he left before the fighting was over. Can you be sure he didn't fill in the parts he'd missed?


[User] Please transcribe this text

[Assistant] When apprentices from every clan had hung on Ravenpaw's words as he described the battle with RiverClan. And he hadn't mentioned Tigerclaw then. Fireheart jumped up as Bluestar stood. Are you going to bring Ravenpaw back to the clan? He asked, suddenly afraid he had caused even more trouble for his friend. Bluestar gazed deep into Fireheart's eyes. He is probably happier where he is, she meowed quietly. For now,


[User] Please transcribe this text

[Assistant] We will let the clan carry on believing he is dead. Fireheart stared back at her, his eyes wide with shock. Bluestar was going to lie to the clan. Tigerclaw is a great warrior, but he is very proud, Bluestar went on.


[User] Please transcribe this text

[Assistant] It'll be easier for him to accept that his apprentice died in battle rather than ran away. And it would be better for Ravenpaw too. Because Tigerclaw might go looking for him? Fireheart dared to ask.


[User] Please transcribe this text

[Assistant] Tiger Claw might be ambitious, but he is not a murderer.


[User] Please transcribe this text

[Assistant] The knowledge about Redtail's death had been resting heavily on his shoulders for days.


[User] Please transcribe this text

[Assistant] The clan leader clearly didn't think Tigerclaw was capable of cold-blooded murder. And worst of all,


[User] Please transcribe this text

[Assistant] Fireheart himself had begun to doubt whether Ravenpaw had been telling the truth. He leaped onto the far bank and charged on through the undergrowth.


[User] Please transcribe this text

[Assistant] Fireheart skidded to a halt behind Bluestar as they reached the other Thunderclan cats.


[User] Please transcribe this text

[Assistant] The group had paused at the top of the slope that led down to four trees.


[User] Please transcribe this text

[Assistant] Did the dark warrior suspect what had passed between him and bluestar?


[User] Please transcribe this text

[Assistant] Fireheart shook his head to clear his mind and tried to think like Bluestar.


[User] Please transcribe this text

[Assistant] Of course Tigerclaw would be interested in what Fireheart had said to Bluestar. He was the clan deputy, so he would want to know anything that might affect the clan. Fireheart looked again at Tigerclaw. The dark tabby was staring down the slope, his ears pricked and alert.


[User] Please transcribe this text

[Assistant] Fireheart sensed a tightening of muscles and prickling of fur around him. Then Bluestar signaled with a flick of her tail, and the ThunderClan cats plunged down the slope toward the gathering.


[User] Please transcribe this text

[Assistant] Warriors Number 1 Into the Wild by Aaron Hunter Performed by McLeod Andrews Chapter 10


[User] Please transcribe this text

[Assistant] By the following morning, a thin drizzle soaked the tree tops and dripped down into the camp. Firepaw woke up feeling damp. It had been an uncomfortable night.


[User] Please transcribe this text

[Assistant] He stood up and shook himself vigorously fluffing out his fur.


[User] Please transcribe this text

[Assistant] She lifted her head and squinted at Firepaw as he approached. My bones ache this morning. Has it been raining all night? Since just after moon high, Firepaw replied.


[User] Please transcribe this text

[Assistant] He reached out and prodded her mossy nest cautiously. Your bedding is soaking wet. Why don't you move nearer to the nursery? It's more sheltered there.


[User] Please transcribe this text

[Assistant] What? And be kept awake all night by those mewling kits? I'd rather get wet. Yellowfang growled.


[User] Please transcribe this text

[Assistant] Firepaw watched her circle stiffly on her mossy bed.


[User] Please transcribe this text

[Assistant] Then at least let me fetch you some dry bedding, he offered.


[User] Please transcribe this text

[Assistant] It was the first time she had thanked him for anything, and the first time she had not called him kitty-pet.


[User] Please transcribe this text

[Assistant] Well don't just stand there like a startled squirrel, go and fetch some moss. She snapped. Firepaw's whiskers twitched with amusement. This was more like the yellow fang he was used to. He nodded and sprinted off.


[User] Please transcribe this text

[Assistant] This was the queen who had watched Yellowfang's angry outburst at the tabby kit the day before. Sorry, Speckletail, Firepaw mewed. Are you on your way to see Yellowfang?


[User] Please transcribe this text

[Assistant] What would I want with that unnatural creature? Replied Speckletail crossly.


[User] Please transcribe this text

[Assistant] Actually it's you I was looking for. Bluestar wants to see you.


[User] Please transcribe this text

[Assistant] Firepaw hurried toward the high rock and Blue Star's den.


[User] Please transcribe this text

[Assistant] Bluestar was sitting outside, her head bobbing rhythmically as she licked the gray fur below her throat. She paused when she noticed Firepaw. How is Yellowfang today? She meowed. Her bedding is wet, so I was going to fetch her more, Firepaw replied. I'll ask one of the queens to see to that.


[User] Please transcribe this text

[Assistant] Blue Star gave her chest another lick, and then I'd fire Paul carefully.


[User] Please transcribe this text

[Assistant] Is she fit enough to hunt for herself yet? She asked. I don't think so, Firepaw meowed. But she can walk well enough now. I see, meowed Blue Star. She looked thoughtful for a moment.


[User] Please transcribe this text

[Assistant] It is time for you to return to your training, Firepaw.


[User] Please transcribe this text

[Assistant] But you'll need to work hard to make up for time you have lost. Great! I mean, thank you, Blue Star. Firepaw stammered.


[User] Please transcribe this text

[Assistant] You will go out with Tigerclaw, Graypaw, and Ravenpaw this morning.


[User] Please transcribe this text

[Assistant] I've asked Tigerclaw to assess the warrior skills of all our apprentices.


[User] Please transcribe this text

[Assistant] Don't worry about Yellowfang. I'll make sure someone sees to her while you are gone. Firepaw nodded. Now, join your companions, Bluestar ordered. I expect they're waiting for you. Thank you, Bluestar, Firepaw mewed.


[User] Please transcribe this text

[Assistant] He turned with a flick of his tail and darted toward his den.


[User] Please transcribe this text

[Assistant] Bluestar was right. Greypaw and Ravenpaw were both waiting for him by their favorite tree stump.


[User] Please transcribe this text

[Assistant] Greypaw looked stiff and uncomfortable, his long fur clumped by the dampness of the air.


[User] Please transcribe this text

[Assistant] Ravenpaw was pacing around the tree stump lost in thought, the white tip of his tail twitching. So you're joining us today?


[User] Please transcribe this text

[Assistant] Greypaw called as Firepaw approached. Someday, huh?


[User] Please transcribe this text

[Assistant] He shook himself roughly to get rid of the clinging wetness.


[User] Please transcribe this text

[Assistant] Yes, Bluestar told me that Tigerclaw is going to assess us today. Are Sandpaw and Dustpaw coming too?


[User] Please transcribe this text

[Assistant] White Storm and Darkstripe took them out on warrior patrol. I suppose Tigerclaw is going to look at them later, Graypaw answered. Come on, we should get going, urged Ravenpaw.


[User] Please transcribe this text

[Assistant] The three cats trotted through the gorse track and out of the camp. They hurried to the sandy hollow.


[User] Please transcribe this text

[Assistant] Tigerclaw had not arrived, so they hung around in the shelter of a pine tree, their fur fluffed up against the chill. Are you worried about the assessment?


[User] Please transcribe this text

[Assistant] Firepaw asked Ravenpaw, as the young cat padded backward and forward with quick, nervous paw steps. There's no need to be. You're Tigerclaw's apprentice after all.


[User] Please transcribe this text

[Assistant] When he reports back to Bluestar, he's going to want to tell her how good you are.


[User] Please transcribe this text

[Assistant] You can never tell with tiger claw. Mute Ravenpaw, still pacing.


[User] Please transcribe this text

[Assistant] For goodness sake, sit down. Greypaw grumbled. At this rate, you'll be worn out before we begin.


[User] Please transcribe this text

[Assistant] By the time Tigerclaw arrived, the sky had changed. The clouds looked less like thick gray fur and more like the soft white balls of down that queens use to line the nests of their newborns. Blue skies couldn't be far behind.


[User] Please transcribe this text

[Assistant] But the breeze that brought the softer clouds carried a fresh chill.


[User] Please transcribe this text

[Assistant] Tiger Claw greeted them briskly and launched straight into the exercise details.


[User] Please transcribe this text

[Assistant] Lionheart and I have spent the last few weeks trying to teach you how to hunt decently, Emout. Today you'll have a chance to show me how much you have learned.


[User] Please transcribe this text

[Assistant] Each of you will take a different route and hunt as much prey as possible, and whatever you catch will be added to the supplies in the camp.


[User] Please transcribe this text

[Assistant] You will follow the trail beyond the Great Sycamore as far as the Snake Rocks. That should be easy enough for your pitiful skills. You, Greypaw," Tigerclaw continued.


[User] Please transcribe this text

[Assistant] We'll take the route along the stream as far as the thunder path. Great, mute Greypaw. Wetpaw for me. Tigerclaw's stare silenced him. And finally you, Firepaw.


[User] Please transcribe this text

[Assistant] What a shame your great mentor couldn't be here today to witness your performance for herself.


[User] Please transcribe this text

[Assistant] Tigerclaw finished, fixing them all with his pale-eyed stare.


[User] Please transcribe this text

[Assistant] Ravenpaw was the first to sprint away toward the snake rocks. Tigerclaw took a different track into the woods, leaving Graypaw and Firepaw alone in the hollow, trying to guess who Tigerclaw would follow first.


[User] Please transcribe this text

[Assistant] I don't know why he thinks Snake Rocks is an easy route, Mute Graypaw. The place is crawling with adders. Birds and mice stay away from there because there are so many snakes.


[User] Please transcribe this text

[Assistant] Ravenpaw'll have to spend his whole time trying not to get bitten. Firepaw agreed. Oh, he'll be okay. Mute Graypaw.


[User] Please transcribe this text

[Assistant] Not even an adder would be fast enough to catch Ravenpaw at the moment. He's so jumpy.


[User] Please transcribe this text

[Assistant] Then bounded up the side of the hollow and began to head for the tall pines.


[User] Please transcribe this text

[Assistant] It felt strange to be going in this direction, toward the two-leg place he had been raised in.


[User] Please transcribe this text

[Assistant] Cautiously, Firepaw crossed the narrow path into the pine forest.


[User] Please transcribe this text

[Assistant] He looked through the straight rows of trees across the flat forest floor, alert for the sight and scent of prey. A movement caught his eye. It was a mouse scrabbling through the pine needles.


[User] Please transcribe this text

[Assistant] Remembering his first lesson firepod dropped into the stalking position.


[User] Please transcribe this text

[Assistant] Then he buried it, so that he could pick it up on his return journey.


[User] Please transcribe this text

[Assistant] The ground here was deeply rutted by the tracks of the huge two leg monster that tore down the trees. Firepaw took a deep breath, his mouth open.


[User] Please transcribe this text

[Assistant] The monster's acid breath had not touched the air here for a while.


[User] Please transcribe this text

[Assistant] Firepaw followed the deep tracks, jumping across the ruts. They were half filled with rain, which made him feel thirsty. He was tempted to stop and take a few mouthfuls, but he hesitated.


[User] Please transcribe this text

[Assistant] One lap of that muddy trench water and he'd taste the monsters foul smelling tracks for days. He decided to wait.


[User] Please transcribe this text

[Assistant] Perhaps there would be a rainwater puddle beyond the tulpines.


[User] Please transcribe this text

[Assistant] Firepaw's fur began to prickle with some extra awareness.


[User] Please transcribe this text

[Assistant] He recognized sounds and scents familiar from his old watching place on the fence post, and knew instantly where he was. These were the woods that bordered the two-leg place. He must be very close to his old home now. Ahead.


[User] Please transcribe this text

[Assistant] Firepaw could smell two legs and hear their voices, loud and raucous like crows. It was a group of young two legs playing in the woods. Firepaw crouched and peered ahead through the ferns. The sounds were distant enough to be safe.


[User] Please transcribe this text

[Assistant] He changed direction, skirting the noises, making sure he was not seen. Firepaw stayed alert and watchful, but not just for two legs. Tigerclaw might be somewhere nearby. He thought he heard a twig snap in the bushes behind him. He sniffed the air, but smelled nothing new. Was he being watched now? He wondered. Out of the corner of his eye, Firepaw sensed movement.


[User] Please transcribe this text

[Assistant] At first he thought it was Tiger Claw's dark brown fur, but then he saw a flash of white. He stopped, crouched, and inhaled deeply. The smell was unfamiliar. It was a cat, but not a ThunderClan cat.


[User] Please transcribe this text

[Assistant] Firepaw felt his fur bristle with the instincts of a clan warrior. He would have to chase the intruder out of ThunderClan territory. Firepaw watched the creature moving through the undergrowth.


[User] Please transcribe this text

[Assistant] He could see its outline clearly as it skittered between the ferns.


[User] Please transcribe this text

[Assistant] He crouched lower, his tail waving back and forth in slow rhythm.


[User] Please transcribe this text

[Assistant] As the black and white cat neared, Firepaw rocked his haunches from side to side as he prepared to spring. One more heartbeat, and he leaped.


[User] Please transcribe this text

[Assistant] He thought, as he raced through the undergrowth, smelling its fear scent. In my territory! He was closing in rapidly on the fleeing animal.


[User] Please transcribe this text

[Assistant] It had slowed its headlong rush, preparing to scramble up the wide mossy trunk of a fallen tree.


[User] Please transcribe this text

[Assistant] With the blood roaring in his ears, Firepaw leaped onto its back in a single bound.


[User] Please transcribe this text

[Assistant] Firepaw could feel the cat struggling beneath him as he gripped on with all his claws. It let out a desperate and terrified yowl. Firepaw released his grip and backed away.


[User] Please transcribe this text

[Assistant] The black and white cat cringed at the foot of the fallen tree, trembling and looked up at him.


[User] Please transcribe this text

[Assistant] Firepaw lifted his nose, feeling a ripple of disgust at the intruder's easy surrender.


[User] Please transcribe this text

[Assistant] This soft plump house cat with its round eyes and narrow face looked very different from the lean broad headed cats Firepaw lived with now. And yet, something about this cat seemed familiar. Firepaw stared harder. He sniffed, drawing in the other cat's scent. I don't recognize the smell, he thought, searching his memory. Then it came to him.


[User] Please transcribe this text

[Assistant] Smudge, he meowed out loud. How do you know my name? Stammered Smudge, still crouching. It's me, Firepaw meowed. The house cat looked confused. We were kittens together. I lived in the garden next to you, Firepaw insisted. Rusty, meowed Smudge in disbelief. Is that you? Did you find the Wildcats again?


[User] Please transcribe this text

[Assistant] Or are you living with new house folk? You must be if you're still alive. I'm called Firepaw now, Firepaw meowed.


[User] Please transcribe this text

[Assistant] He relaxed his shoulders and let his fur fall flat into a sleek orange pelt. Smudge relaxed too, his ears pricked up. Fireball, he echoed amused.


[User] Please transcribe this text

[Assistant] Well, Firepaw, it looks like your new housefolk don't feed you enough. You certainly weren't this scrawny last time we met.


[User] Please transcribe this text

[Assistant] I don't need two legs to feed me, Firepaw replied. I've got a whole forest of food to eat. Two legs? House folk, that's what the clans call them. Smudge looked bewildered for a second.


[User] Please transcribe this text

[Assistant] Ben, his expression changed to one of complete astonishment. You mean, you're really living with the Wildcats? Yes, Firepaw paused. You know, you smell different, unfamiliar. Unfamiliar, Smudge echoed, he sniffed. I suppose you're used to the smell of those Wildcats now. Firepaw shook his head as if to clear his mind.


[User] Please transcribe this text

[Assistant] I should know your smell like I'd know the smell of my birth mother.


[User] Please transcribe this text

[Assistant] Then Firepaw remembered. Smudge had passed six moons.


[User] Please transcribe this text

[Assistant] No wonder he looked so soft and fat and smelled so strange. You've been to the cutter, he gasped. I mean, the vet. Smudge shrugged his plump black shoulders. So? He mewed. Firepaw was speechless, so Blue Star was right. Come on then, what's it like living wild? Smudge demanded. Is it as good as you thought it'd be? Firepaw thought for a moment.


[User] Please transcribe this text

[Assistant] He remembered the teasing he suffered about his kitty pet blood. Then he remembered the thrill of his first catch.


[User] Please transcribe this text

[Assistant] Smudge tipped his head to one side and stared at Firepole, clearly confused. I should be getting home, he mewed. Mealtime soon. Go carefully, Smudge.


[User] Please transcribe this text

[Assistant] Firepaw leaned forward and gave his old friend an affectionate lick between the ears. Smudge nuzzled him in return. And stay alert.


[User] Please transcribe this text

[Assistant] There may be another cat in the area who is not as fond of kittypets. I mean, house cats, as I am.


[User] Please transcribe this text

[Assistant] Smudge's ears flicked nervously at these words. He looked around cautiously and leaped up onto the trunk of the fallen tree. Goodbye, Rusty, he mewed. I'll tell everyone at home that you're okay. Bye, Smudge, meowed Firepaw. Enjoy your meal.


[User] Please transcribe this text

[Assistant] He watched the white tip of Smudge's tail disappear over the edge of the tree.


[User] Please transcribe this text

[Assistant] In the distance he could hear the rattle of dried food being shaken and a two-leg voice calling.


[User] Please transcribe this text

[Assistant] He looked up at the branches above him and began to stalk silently across the forest floor, every sense alert.


[User] Please transcribe this text

[Assistant] Now, he just needed to impress Bluestar and Tigerclaw, and the day would be perfect.


[User] Please transcribe this text

[Assistant] I like sitting by the whale on fine afternoons. It was warm last Sunday, so I went and sat on the river bank as usual. Some children were playing games on the bank, and there were some people rowing on the river.


[User] Please transcribe this text

[Assistant] Suddenly one of the children kicked a ball very hard and it went towards a passing boat. Some people on the bank called out to the man in the boat, but he did not hear them.


[User] Please transcribe this text

[Assistant] We only have one bonehead on our team. Me. It's my fault we're stuck here. Messed up a spell. It happens.


[User] Please transcribe this text

[Assistant] Hey guys. So today we're going to be continuing on with our object inventory. So we will be adding how to pick up items and how to then drop them from the inventory.


[User] Please transcribe this text

[Assistant] Alright, so let's get started. Let's jump into the step event of our inventory object. So remember, this was where all of our code was for picking up and selecting the items. So we're going to need another case here.


[User] Please transcribe this text

[Assistant] So if you remember in our logic here, we say if the pickup slot is not equal to minus one, so this means if we are picking something up and then we go ahead and decide what to do with it. But if we are not picking something up, this was our case here.


[User] Please transcribe this text

[Assistant] So if we're not picking something up and the item that we're selecting isn't nothing, so that means we are currently hovering over a slot with an item in it.


[User] Please transcribe this text

[Assistant] So this is the case that we will want to put in our check for dropping the item. So for me, I'm going to make this a middle click press that will drop the item. So I'm just going to add a heading to this because this was for dropping our pickup item into the new slot.


[User] Please transcribe this text

[Assistant] So now we are adding the actual dropping of the item into the game world.


[User] Please transcribe this text

[Assistant] And let's just put in our mouse button. And of course we want the button pressed because I don't want to keep dropping things if I'm holding down the middle mouse button.


[User] Please transcribe this text

[Assistant] Alright, so there's a few things we have to do when we drop the item. So one thing will be to reduce the item count itself.


[User] Please transcribe this text

[Assistant] Another thing is to check if, for example, we just had one item in the inventory. If we're dropping that, that means the slot will be reduced to zero. So we're going to have to make the slot into the nothing item. And then of course, we're also going to have to make the item so that it looks like we're actually dropping a real item into the game world. So we'll get this set up.


[User] Please transcribe this text

[Assistant] So remember that we already have access to the inventory grid from above, so we can use this variable. So let's reduce the item count. So let's go in grid.


[User] Please transcribe this text

[Assistant] And remember that the item counts were in the second column of this grid. The first column was for the kind of item that it was. So, one.


[User] Please transcribe this text

[Assistant] And then for the row that we want in our inventory grid,


[User] Please transcribe this text

[Assistant] That will just be whatever slot we're currently selecting, which we have also already set up above. So we can just put selected slot and then we just can put minus equals one and that will get rid of one of the items there. And then of course we need to check. If that was the last one, we need to get rid of it.


[User] Please transcribe this text

[Assistant] So now we'll just check if the count, the current count is equal to zero.


[User] Please transcribe this text

[Assistant] Let's go ahead and change the item type, so whatever item it was, if it was a carrot, if it was an artichoke, whatever it was, now we're gonna set it to be the nothing item.


[User] Please transcribe this text

[Assistant] And remember, the first column was the one that was storing what kind of item it was. Alright, and I might put that onto the next line. There we go.


[User] Please transcribe this text

[Assistant] Alright, and now we need to actually create the item. So we haven't made this object yet, so we need to go and do that. So let's come into our objects and we're going to create a new one. And I'll put this, yea, I'll just put this here for now.


[User] Please transcribe this text

[Assistant] Little item picture that is in the inventory slot so it just looks like we really just dropped it into the world. So it's gonna need a lot of the same information.


[User] Please transcribe this text

[Assistant] That the inventory has for drawing the slots themselves. So if you remember, we needed some stuff about the size of the slot. We needed the sprite that we were getting and we'll need the items location on our sprite sheet. So it has to be one of these.


[User] Please transcribe this text

[Assistant] And also actually before I forget, I'm just gonna make this a child of our parent depth object so that it also has its depth being controlled in our game. So we need to put event inherited up atop so that it's inheriting all of the parent depth object and collision stuff.


[User] Please transcribe this text

[Assistant] Alright, so the first thing I'm gonna put in is the cell size for our items. Obviously, if yours is different, you're gonna have to put a different number here, but for us, it was just 32.


[User] Please transcribe this text

[Assistant] I'm just going to make a variable called item SPR for sprite, and that's just going to store the sprite inventory items. So next we need the sprite width and height. So you probably remember a lot of this code from before.


[User] Please transcribe this text

[Assistant] And there's actually a couple more things that it needs. It needs an item number. So this is the thing that you will want to set if you're going to put an item into the game world. So you'll want to specify what kind of item it's going to be with the item number. So remember that was just a long index that we had here for all of our different kinds of items. And then we're also going to need the item.


[User] Please transcribe this text

[Assistant] X frame and Y frame, which just means, so, for example, the potatoes, the potatoes would have an X frame of 2 because it's 0, 1, 2 across, and a Y frame of 0 because it's on the first column. So that's how we were getting what item it kind of was.


[User] Please transcribe this text

[Assistant] But by default, when this item is created, that's fine for us to just set it to...


[User] Please transcribe this text

[Assistant] Well, anything we want really, because this should be updated at some point. Alright.


[User] Please transcribe this text

[Assistant] So now we can come into its drawer event and get it to actually draw itself. Okay, so we just draw, sprite, part.


[User] Please transcribe this text

[Assistant] And we will just refer to that item sprite. To be honest, you could just put that in here, but.


[User] Please transcribe this text

[Assistant] I generally like to set this as a, as an instance variable in case I have many kinds of drawings in the event and I don't want to go and change this later.


[User] Please transcribe this text

[Assistant] So the sub image will just be zero because we don't have any frames. So now of course we have to get the X and Y location of the.


[User] Please transcribe this text

[Assistant] Part of the sprite that we're drawing, so remember how I said that potato, we want this right here. So that would actually be the cell size times the X frame.


[User] Please transcribe this text

[Assistant] So we put X frame times cell size and the same for the Y, but the Y frame. The width and height of the cell is cell size. And now the X and Y location, we're just going to put this as wherever the item currently is.


[User] Please transcribe this text

[Assistant] But you should, we should note that because of how the sprite is anchored,


[User] Please transcribe this text

[Assistant] This kind of means that it's going to be drawing it at the top left as if the origin was the top left of the sprite. So we might actually have to add an offset later, but for now this is fine. So now that we have the object, let's come back to the inventory so that we can actually create it. And remember,


[User] Please transcribe this text

[Assistant] We will want to be changing these variables here. So I might just copy this and we'll come back to the inventory. Come back to the step event.


[User] Please transcribe this text

[Assistant] And back to what we were doing before. So in here, we will need to create the item. So we can go var inst for instance, instance create layer.


[User] Please transcribe this text

[Assistant] And now, where should we create it? Well, I'm just gonna create it at the player's x and y location, in the instances layer, and the kind of item is objItem. Alright.


[User] Please transcribe this text

[Assistant] So we have created it. Now we need to actually modify the item number and the X frame and Y frame variables. So we go with inst. And I'm just going to paste what we had in the create event.


[User] Please transcribe this text

[Assistant] Alright, so for the item number, we actually already have access to this up here.


[User] Please transcribe this text

[Assistant] When we were getting what kind of item it was that we were selecting. So we can actually just grab that. The item number is going to be equal to this.


[User] Please transcribe this text

[Assistant] And remember when you're going into a with statement, you don't have access to any of the inventories instance variables, but this one is fine. This one is a local variable. So it exists while this code block is running. All right. And now the X and whoops, that should be Y frame.


[User] Please transcribe this text

[Assistant] It's just going to be the, so the item number.


[User] Please transcribe this text

[Assistant] Mod, so the width of the cell divided by the cell size. So that is going to get us the number of frames that are in the width. So the width divided by the cell size will get us the number of frames right here, which is what we want.


[User] Please transcribe this text

[Assistant] And then the same for the y-frame, but instead of mod we use div.


[User] Please transcribe this text

[Assistant] And I might also just add a debug message. So that should come up in the console when we drop the item. All right. I think we're ready to run the game. So let's hit F5.


[User] Please transcribe this text

[Assistant] One of these picture frames, so it's at three, it should reduce to two.


[User] Please transcribe this text

[Assistant] There you go. So it's dropped into the game world. And so just like I said, it's kind of dropped so that the origin of our item is here. So we actually probably want to give this an offset.


[User] Please transcribe this text

[Assistant] So that the item itself is anchored at this point right here. Anyway, let's just do another test. So let's drop this chili. So this should reduce to the nothing item if we drop it. There we go.


[User] Please transcribe this text

[Assistant] We also might want to just give it a bit more randomness when we drop the item, so maybe we want it to fly off in a random direction. So those are two things we have to do.


[User] Please transcribe this text

[Assistant] So first we'll do, we'll fix the offset. So let's come back to the sprite. So I might just make the offset at half the width of the sprite horizontally and then make it anchored at the bottom. Or maybe since most of these are kind of centered a little bit towards the middle, we might make it two thirds of the total width of the cell size. So let's come back to the item and I'm going to add an X offset and I'll make that equal to the cell size over two and a Y offset.


[User] Please transcribe this text

[Assistant] So now when we're drawing it, instead of drawing it right at the X and Y location, I'm going to make this at the offset of the X and Y. So X minus the X offset and Y minus the Y offset. Alright, so quickly we'll run that and test it.


[User] Please transcribe this text

[Assistant] So now their origin is sort of there, because they're getting created exactly where the player's x and y origin is.


[User] Please transcribe this text

[Assistant] Alright, so now let's make them, when they're created, just fly off in a random kind of direction.


[User] Please transcribe this text

[Assistant] I'm gonna kind of randomize this. I'm gonna have sort of a random direction between 0 and 360.


[User] Please transcribe this text

[Assistant] And then the distance I want it to fly off in.


[User] Please transcribe this text

[Assistant] So this will kind of be, if you imagine the player as being at the center of a circle, how far away do you want the items to fly?


[User] Please transcribe this text

[Assistant] So you can set this as whatever you want, I might just make it 32.


[User] Please transcribe this text

[Assistant] I'm gonna make a goal x and a goal y for where I want the sprite to end up. So I'm gonna make this equal to wherever it currently is, plus, so a random direction, 32 pixels off from where the player is.


[User] Please transcribe this text

[Assistant] So Game Maker doesn't really have a way to move in vectors, so what we have to do is convert that vector to a horizontal and vertical component. So if we're moving off to this point over here, how far over to the x is that and how far over to the y is that? And then we can say, well, go towards that.


[User] Please transcribe this text

[Assistant] Alright, and I'm also gonna just make a variable called dropMove and this is gonna be set to true initially and this is gonna be saying if we have just dropped it this will be true and then once we reach our goal location we will turn this off.


[User] Please transcribe this text

[Assistant] But so long as this is true, we will move towards our goal location. So now let's come into the step event. I'm going to say if, drop move.


[User] Please transcribe this text

[Assistant] If you see here, it has two values and it will make them kind of closer together by some amount. So if we put.


[User] Please transcribe this text

[Assistant] This, for example, then it's gonna go and look at x and goal x, so for example, if we told it to interpolate by 0.5, what this would do is every step, it would kind of halve the distance between them. But this would actually be pretty quick, so I'm gonna turn this down to 0.1. Again, you can make this whatever you want. And y. Alright.


[User] Please transcribe this text

[Assistant] And then I'm going to check if the distance from our goal X is pretty close. So maybe like less than one, we will turn off this drop move.


[User] Please transcribe this text

[Assistant] Let's go if. So this is going to get the difference between x and goal x, the absolute difference. So whatever this value is right here, if it's negative or positive, it's just going to make it positive. So we're just getting the difference. So if this is less than one, I'm going to say that we're pretty much just at the x location and we'll do the same for the y. So if this is the case, then we will turn off drop move.


[User] Please transcribe this text

[Assistant] It's a bit difficult to see with the inventory up, but you can see that they kind of flew off in a random direction.


[User] Please transcribe this text

[Assistant] So later we might make it that the game is completely paused and no items can move while the inventory is up, so you will actually be able to see it flying off, but for now that's fine. So let's move on and add the actual picking up of the items.


[User] Please transcribe this text

[Assistant] So basically what we're gonna do is check for a kind of collision with the player, and if we are colliding with the player, we are going to pick up the item and destroy the OBJ item that exists in the game.


[User] Please transcribe this text

[Assistant] Except, I'm not gonna do a straight up place meeting collision with the player. I'm actually going to check if it's within a kind of detection radius, and then if it is within that radius, we're gonna be pulled in by the player until we eventually are on top of it, and that is when we will add it to the inventory.


[User] Please transcribe this text

[Assistant] Alright, so here, we're only gonna be checking this if we have finished being dropped. So we're gonna put this in an else. Like that. Alright, and let's set up our check. So I'm actually gonna use the function


[User] Please transcribe this text

[Assistant] Point in rectangle, and we're gonna basically check if the player is within a kind of rectangle around the item. You could do point in circle or something if you wanted it to be circular, but it doesn't really matter.


[User] Please transcribe this text

[Assistant] The player won't ever actually see what this looks like, so I'm just gonna use a rectangle because they tend to be more performant. So first I'm actually gonna set


[User] Please transcribe this text

[Assistant] A radius of 32 around the item and obviously rectangles don't really have a radius but we can make it kind of like the half width of the rectangle. And I'm also just gonna save


[User] Please transcribe this text

[Assistant] The player's x and y location in some local variables because we're going to be referring to it a couple times. So this function asks for firstly, what point do you want to check that is in our rectangle? So this will be the px and py, the player's x and player's y, and then we have to give it the coordinates for the rectangle itself. So for the top left corner of the rectangle it will be x minus r, y minus r, and then for the bottom right


[User] Please transcribe this text

[Assistant] If check, so if we are within this detection radius.


[User] Please transcribe this text

[Assistant] Then we need to be doing one of two things, either moving towards the player or if we are right on top of the player, we will add ourselves to the inventory. So let's do the, if we are on top of the player. So I'm actually going to do another rectangle check.


[User] Please transcribe this text

[Assistant] But instead of having the radius as 32, I'm gonna make this a lot smaller.


[User] Please transcribe this text

[Assistant] So if the player is within a very small rectangle of the object, then we will pick it up. So I'm actually going to say if we are not within this, then we will move towards the player. But otherwise, we are right on top of the player so we will pick it up.


[User] Please transcribe this text

[Assistant] So let's firstly do the moving towards the player that's probably...


[User] Please transcribe this text

[Assistant] Easiest, it's actually gonna be exactly the same as this.


[User] Please transcribe this text

[Assistant] We'll use Lipe again, but instead of the heading towards the goal X and goal Y, we will head towards the player X and player Y. Okay. So that's that. And now we will do the picking up of the item.


[User] Please transcribe this text

[Assistant] So now to do this, we will actually have to kind of refer to the inventory object. So to add ourselves to the inventory, we have to tell the inventory what kind of item we are.


[User] Please transcribe this text

[Assistant] So we have actually saved what kind of item we are in the item number variable. So whatever this number was from 1 to however many items we had, tomatoes, carrots, whatever, that is the kind of item that it is. So we need to tell the inventory what item we are, so we need to make this a local variable.


[User] Please transcribe this text

[Assistant] Okay, if we're picking up the item, there's a few different cases that can happen. So there might already be an item of the type that we're picking up. So if we're picking up a tomato and we've already got tomatoes in our inventory, then we'll want to stack it onto that existing stack. So we'll want to check if the item already exists in the inventory.


[User] Please transcribe this text

[Assistant] Otherwise, we will have to add it to an empty slot if there is one. And if there is no empty slot, then, well, we won't pick up the item.


[User] Please transcribe this text

[Assistant] So we will need access to the inventory data structure again. So I'm going to make a data structure as a local variable. So we're going to do that. So I'll just call this dsInv. So remember this was our inventory grid that's storing what is in the current inventory. And I'm going to actually make another variable called picked up.


[User] Please transcribe this text

[Assistant] And it's gonna be false to begin with, but if in some of our checks we find that it is actually...


[User] Please transcribe this text

[Assistant] Okay to pick it up, so either adding it to an existing point or an empty one, we're gonna set this to true, but otherwise we might do something else if it's false. Alright, so let's start off with checking if the item already exists, so we're gonna have to loop through our inventory.


[User] Please transcribe this text

[Assistant] So remember our format for looping through stuff, so we're gonna do a repeat statement.


[User] Please transcribe this text

[Assistant] And remember the number of times that we're going to have to repeat is the number of inventory slots. And so because we're in a with statement, we do have access to the instance variables that are in our inventory object. So we had a variable called


[User] Please transcribe this text

[Assistant] Inventory slots, where we set out how many inventory slots we had. And that's how many slots we want to check.


[User] Please transcribe this text

[Assistant] So we put that. All right. And now every time we loop through a slot,


[User] Please transcribe this text

[Assistant] So we're checking if the item itself already exists. And just like before, remember the left column of the inventory grid is what is containing the kind of item that it is. So we're literally going to check if the current row slot that we're on, if that is equal to what we had as our item number of the OBJ item.


[User] Please transcribe this text

[Assistant] The neat thing about this is if you have multiple stacks of say, tomatoes in your inventory, it's going to add it to the first stack because we're looping through the inventory starting at zero. Alright, so we go ds-inv. So all we have to do is add to the current stack. And I'm also going to set picked up equal to true.


[User] Please transcribe this text

[Assistant] And we can also put a break so that we break out of the repeat loop because if we find a slot, we don't have to check the rest.


[User] Please transcribe this text

[Assistant] So, but if this statement is not true, then we are going to...


[User] Please transcribe this text

[Assistant] Increment the yy value for the next slot so that we keep looping through this grid.


[User] Please transcribe this text

[Assistant] Okay, so that is for checking if the inventory already exists. We're going to do a similar thing for checking if there is an empty slot. So if it goes through all of this and pick up is still false, then we know that it hasn't found a slot that already exists. So what I can say is if it hasn't picked up.


[User] Please transcribe this text

[Assistant] And I'll just tab this forwards. There we go. But instead of checking if the current slot is equal to the item number, we check if it is to zero. But if we're just incrementing the number,


[User] Please transcribe this text

[Assistant] Of course this is gonna make the number of nothing items 1, because if it finds that this is equal to 0, or actually we could have just put


[User] Please transcribe this text

[Assistant] Nothing. What we'll also want to do is set this equal to our item. So equal to the item number. Otherwise everything else will be the same.


[User] Please transcribe this text

[Assistant] Alright, and now finally, if we have actually picked up the item itself at any point, so either from finding an item slot where it is already stored or from finding an empty slot, then we are actually gonna destroy it.


[User] Please transcribe this text

[Assistant] Before we run it, of course, don't forget that we are actually still with the inventory and we don't want to destroy the actual inventory, so let's take this.


[User] Please transcribe this text

[Assistant] Make sure that we come outside of the with statement. So if you just highlight this bracket, it should tell you where it ends. So here, and we'll put this here.


[User] Please transcribe this text

[Assistant] Because remember picked up is a local variable, so it should come out of the with statement with us. All right, let's run the game.


[User] Please transcribe this text

[Assistant] So because you kind of pick them up immediately after you drop them, you might want to add something like a keyboard check for actually drawing the items into you, or you might just want to give a larger window after you've dropped it or something. I might just do the button press though, so I'm gonna go if.


[User] Please transcribe this text

[Assistant] So I'm just saying, if I'm not pressing the O key, then don't do any of this. Alright.


[User] Please transcribe this text

[Assistant] So, let's drop some of these. Right, and they're just falling around the player, and if I hold the O button, they come right to me. And you can see everything is being logged in the console. Alright, so that is it for today.


[User] Please transcribe this text

[Assistant] So our inventory is starting to really come together. We might add a few more flourishes to it. We might add some item descriptions and to the actual pop-up notifications for picking up the inventory. So that will come next time.


[User] Please transcribe this text

[Assistant] Frank Hawkins was telling me about his


[User] Please transcribe this text

[Assistant] Frank was the head of a very large business


[User] Please transcribe this text

[Assistant] Frank used to make spare parts for airplanes. At that time, he had two helpers.


[User] Please transcribe this text

[Assistant] In a few years, the small workshop had become a large factory which employed 728 people.


[User] Please transcribe this text

[Assistant] Frank smiled when he remembered his hard early years and the long road to success.


[User] Please transcribe this text

[Assistant] Hey guys. So today we're continuing on with our inventory system and we're gonna be implementing a way to select our items in the inventory, pick them up, and also stack them.


[User] Please transcribe this text

[Assistant] All right, so in our object inventories create event, we're going to need to declare a few new variables and I'll just put it in here.


[User] Please transcribe this text

[Assistant] So we have the mouse hovered over that spot and another one called the pick up items. Basically we're going to set this to negative one to start off with and that's going to mean we're not picking up any item.


[User] Please transcribe this text

[Assistant] But when we do go and pick something up, this number is gonna change from minus one to one of the items here that we've set up. So you're gonna be holding on to one of these items.


[User] Please transcribe this text

[Assistant] Now for the system to work, we're going to need to get the mouse's position on the inventory itself. So we're going to need to convert the mouse's position to an inventory slot. And of course there isn't a built in variable for this, so we're going to kind of have to make our own one and that will just correspond to these values and we'll change them in the step event. So let's come into the step event.


[User] Please transcribe this text

[Assistant] Actually, before we even do anything, so just like here, how we have, don't bother doing any of this drawing stuff, if we're not actually showing the inventory at the moment, remember we just set up this variable that you can toggle that would show the inventory or hide it.


[User] Please transcribe this text

[Assistant] I'm also going to put this in here because we don't need to be detecting or figuring out where our mouse is or what slot we're selecting if we're not actually showing the inventory.


[User] Please transcribe this text

[Assistant] Okay, so let's start off by trying to convert our mouse position to the inventory slot. Now, you might have used mouseX


[User] Please transcribe this text

[Assistant] Mouse x and mouse y, and this gets the position of the mouse in your room. So just like any object in your room has an x and y position, so does the mouse. But the thing is, we don't want the mouse's x position in the room, we want it relative to the GUI layer. So I'm going to set up two more variables here. Mouse x.


[User] Please transcribe this text

[Assistant] And so we're gonna set this to be the device mouse X to the GUI. So this, if you just middle click on this,


[User] Please transcribe this text

[Assistant] So you can see that this returns the position of the mouse relative to the GUI layer, and that's exactly what we want, because everything that we're drawing is in the GUI layer. So now if the mouse is hovering over one of our slots in the GUI layer, it should give us the corresponding X value that we actually care about.


[User] Please transcribe this text

[Assistant] Okay, and we'll do the same for the mouse y. Just change that to a y.


[User] Please transcribe this text

[Assistant] Alright, so we have the mouse position relative to the GUI layer, but now what we need to do is convert that to a slot. So if you recall, our slots that we're drawing to the screen,


[User] Please transcribe this text

[Assistant] So the slots themselves, they have a sprite width of the cell size, right? Which, if you're using the sprites that I'm using is just 32. And we're drawing them at a distance apart, that is this.


[User] Please transcribe this text

[Assistant] So they are one cell size and then one X buffer apart. So we kind of, we need to break up the mouse's position into increments of this. So we need to get, mouse, are you on the first slot or the second one or the third or the fourth? So we're going to need this variable.


[User] Please transcribe this text

[Assistant] And I'll just set this up as a temporary variable, so as the cell including the x-buffer. And remember we have to multiply that by the scaling factor of course. Alright, and the same for the y.


[User] Please transcribe this text

[Assistant] We've got the mouse position, we've got the slots themselves, but


[User] Please transcribe this text

[Assistant] What we also want to do is get our mouse position not only relative to the GUI layer, but also relative to the inventory. So we don't really care about the mouse if it's not on the inventory itself. And remember we're drawing the inventory itself. So we set up some variables.


[User] Please transcribe this text

[Assistant] Right here. And these correspond to where we start drawing all the slots from. So we only really care about the mouse's position if it's larger than this.


[User] Please transcribe this text

[Assistant] And in order to get what cell our mouse is in, we can deduct this value from our mouse's value and then just divide that remainder to get what slot we're in. So let's come back.


[User] Please transcribe this text

[Assistant] And we'll set up a few more temporary variables. So I'm going to call this the imouseX. So imouseX for the mouse's X position on the inventory slots. So just like I said, mouseX, and then we deduct the slots position.


[User] Please transcribe this text

[Assistant] So now we've kind of gotten rid of that upper left section of the GUI layer because we don't really care about that. And it's as if the mouse's position is now starting fresh and zero zero is now the top left corner of the slots. So if these values are larger than zero, then we know that the mouse is somewhere in this lower section.


[User] Please transcribe this text

[Assistant] What we can do now is if we divide that number by the cells themselves, so this factor right here, because remember, the cells are this size each in width, so if we divide our mouse's exposition by that, then we're gonna get a number between 0 and the number of slots that we have for the width of the inventory.


[User] Please transcribe this text

[Assistant] Because there's 8 slots that we're currently drawing, so it's gonna go from 0, 1, 2, 3, 4, 5, 6, or 7. Right? And then exactly the same for the y value. So we need to get these values. And I'll just call this nx for number x.


[User] Please transcribe this text

[Assistant] So instead of just straight up dividing the IML's X position by the cell X buff,


[User] Please transcribe this text

[Assistant] I'm actually going to use div because I want a whole number, right? I don't want to get, so that we're in the slot 2.2, right? Because there is no slot 2.2, there's just slot


[User] Please transcribe this text

[Assistant] So if we use div, div just gets the number of times that a factor can be divided into another, so it doesn't have any remainder, which is exactly what we want. So we just use div, and then the same for the y.


[User] Please transcribe this text

[Assistant] So this value has gotten kind of like the coordinates of the slot that we're in. So we have an X kind of coordinate and then we have a Y coordinate and that will give us the slot. So now what we need to actually do is because our slots aren't really set up into a grid, they're just one long list, right? So they're just numbered from zero.


[User] Please transcribe this text

[Assistant] So we need to convert these x and y coordinates to a number. So this is actually the values that we want for the variables that we set up here. So the mouse slot x and the mouse slot y. So I'm going to set mSlot equal to that.


[User] Please transcribe this text

[Assistant] And I'm doing this on a separate line. I could have just made these directly equal to this here, but we're actually going to be adding a little bit more in a second between these two points, and I'll explain that in just a minute.


[User] Please transcribe this text

[Assistant] For now this is fine, so we've gotten the mouse x coordinate and the mouse kind of y slot coordinate. Now all we have to do is calculate the actual slot.


[User] Please transcribe this text

[Assistant] So our selected slot itself, so it's going to be equal to, so first the actual x coordinate itself, so because that's going kind of down the list as our x coordinate gets larger. But as we go up in the m slot y, that's actually jumping a whole eight slots. So we need to add.


[User] Please transcribe this text

[Assistant] M slot Y and then multiply that by the number of inventory slots that we have in the width. And we set that up as the variable M slots width. So we'll use this one here.


[User] Please transcribe this text

[Assistant] And we'll make it so that if we're selecting a slot, let's make it look a little bit different. So let's just add kind of like a highlight to it. So here's where we were drawing the inventory slot, which was the part of the slot kind of on the back. So the slot itself, and then this right here was drawing the item itself.


[User] Please transcribe this text

[Assistant] I'll keep this here and we're going to draw the item differently if we are selecting it. So if we're not selecting it, it will do this. But if we are, then I'm going to draw it a little bit differently. So we're just going to go switch.


[User] Please transcribe this text

[Assistant] And so what we're gonna switch is the slot itself that we're currently on. So remember, our slot, selected slot that we just set up, this is going to be a number from 0 to 16, or 0 to however many inventory slots that you had.


[User] Please transcribe this text

[Assistant] So basically what we want is right here we're gonna check if the current slot that we're on, which is going to be our ii value, because remember this is our incrementing factor that we're using to loop through the entire grid of our inventory slots, and it does this 17 times at the moment.


[User] Please transcribe this text

[Assistant] So if we get to the point where ii is equal to our selected slot, then we're going to draw it differently. So in the case that ii is equal to our selected slot,


[User] Please transcribe this text

[Assistant] Then we're going to draw it in a special way, but otherwise we're just going to have a default case that it's going to just draw it just as we had before.


[User] Please transcribe this text

[Assistant] So, I'm actually gonna still draw it like this.


[User] Please transcribe this text

[Assistant] So, and this is where you could get a little bit creative. I'm gonna be a little bit boring and just draw something on top to make it look highlighted, so I'm actually going to draw it normally, but then after it's drawn it,


[User] Please transcribe this text

[Assistant] And you might be thinking, this is just going to cover it up, which is exactly what we would do if we left the code like that.


[User] Please transcribe this text

[Assistant] But I'm actually going to change what's called the blend mode that we're using to draw this. So basically every time you draw something new to the screen, what Game Maker does is it's gonna blend the picture that was there, everything that you've previously drawn, right? It's gonna blend that thing with the new thing that you're drawing on top.


[User] Please transcribe this text

[Assistant] And how much of the new picture that we keep is the blend mode itself. So by default, what it does is generally it just gets all of the new thing and it just discards all of the old thing. But what I'm going to tell it to do is keep all of the old thing and just add the new thing to it. And what this is going to do is just make everything a lot brighter.


[User] Please transcribe this text

[Assistant] And to do this, we just use GPU, set blend mode. So we're going to use the additive blend mode, right? So just as I said, so this adds the new picture to the old picture. And then afterwards, of course, we want to change it back to the normal one.


[User] Please transcribe this text

[Assistant] And if you run the game right now, you'll see that this one is actually gonna look extremely bright. So I'm not gonna add the full image, I'm gonna turn down the alpha of this a little bit to 0.3.


[User] Please transcribe this text

[Assistant] So be sure and play around with that a little bit if you're not sure what it's doing. I also have a video that goes over using blend modes that you might be interested in. You could also just keep it really simple and just draw like a white rectangle over this area, but we'll just do it this way for fun.


[User] Please transcribe this text

[Assistant] Alright, so that should be it for the selecting, so let's run the game and see what that looks like.


[User] Please transcribe this text

[Assistant] Okay, great, so we can see that wherever the mouse is hovering over, we get a new item being selected. Now there's a couple things...


[User] Please transcribe this text

[Assistant] That we're gonna want to change about this. So for instance, if we come over to the spot in between two of them,


[User] Please transcribe this text

[Assistant] You can kind of see that it counts the buffer here as the previous one and you might not want it to take into account the buffer at all. So we're going to fix that. And we're also just going to optimize it a little bit.


[User] Please transcribe this text

[Assistant] And tell it to not do any of these calculations if it's gone outside of the bounds of the inventory, because you can see here that if you go outside it, it starts doing some pretty weird stuff.


[User] Please transcribe this text

[Assistant] So we're gonna tell it to not do any of this stuff if our mouse isn't here.


[User] Please transcribe this text

[Assistant] Alright, so let's come back to the step event. And here, what I'm gonna do is because we're saving it here, in an instance variable,


[User] Please transcribe this text

[Assistant] While these all get deleted as soon as this script runs, it's gonna hold whatever mouse slot that we had from last time. So this is good, so we'll say that we'll only update this if we're in the bounds of the inventory.


[User] Please transcribe this text

[Assistant] Alright, and now I'm gonna refer to these values here, because what we can just say is if nx is between 0 and the number of slots we have, so 0 to 7 for the horizontal,


[User] Please transcribe this text

[Assistant] So less than 8. So this won't be including 8. So this is exactly what we want. We want it to be between 0 and 7. And the same for the y.


[User] Please transcribe this text

[Assistant] Alright, and then we just wrap this stuff in that condition, so we only update it if we're on the slots. And let's just give that a run and see if that worked.


[User] Please transcribe this text

[Assistant] So it's still updating fine, and if we go off the board, it doesn't go all weird. Alright, good.


[User] Please transcribe this text

[Assistant] But you will notice that if we go off the board just like this after selecting something, so it's not updating it from what it was because it doesn't fulfill the requirements of that condition that we set. But if I come to that bottom row here, the selected slot kind of goes away and that's because it is treating these slots.


[User] Please transcribe this text

[Assistant] As part of the inventory slots. I don't want that. I don't want it to update if I'm over a slot that I can't actually access. So there is one more thing that we have to add to this.


[User] Please transcribe this text

[Assistant] So that if it calculates that we're on a selected slot that is larger than the current inventory slots that we specify. So remember what we just set this to? Well, I have it as 17 right now. So I'm actually going to say, take the minimum.


[User] Please transcribe this text

[Assistant] Or inventory slots minus one. So if this is less than 17 minus one, which is 16, remember we're going from zero to 16. So if this value is actually smaller than this one, then it will take this value here.


[User] Please transcribe this text

[Assistant] So we're kind of setting the max at 16. So now if we run it, there we go, you can see that it's not updating if we come here. Alright.


[User] Please transcribe this text

[Assistant] Now finally, I'm just gonna make it so that if we hover over the space between the inventory slots that it doesn't update that either.


[User] Please transcribe this text

[Assistant] It doesn't really make much of a difference for us, but if you have configured your inventory a bit differently and the buffer between the slots is actually quite large, it's gonna look very strange when you hover the mouse over one of those areas and you actually get the slot selecting. So we're gonna make it so that it doesn't do that. So in here, we're gonna do something. So remember, our calculations are kind of treating the


[User] Please transcribe this text

[Assistant] Inventory slot itself and then plus the buffer. So each slot is kind of larger than it actually appears to the user. So what we want to do is say, well, if the mouse is in that slot and it's between the bounds of the slot itself and not the buffer, then we will update it. But if it's not, then we're not gonna update it. So I'm going to set up two more variables.


[User] Please transcribe this text

[Assistant] So Sx and Sy. And what I'm gonna do is I'm gonna get the imouse x position. So this is the one that was kind of relative to the slots. So we're treating the upper left corner of the slots as our zero. So if this, and then minus,


[User] Please transcribe this text

[Assistant] All of the buffer space from that. So remember because this value was kind of the rounded down version.


[User] Please transcribe this text

[Assistant] Yeah, because we were using div, we were sort of going to be rounding down to the nearest slot that we're on.


[User] Please transcribe this text

[Assistant] But for the mouse's actual X position, there's gonna be a little bit more buffer room on top of that. So if we take away that rounded down value, we're just gonna get the mouse's kind of raw position on that slot. And then we just have to check if it is less than the slot size, then we know that.


[User] Please transcribe this text

[Assistant] Is within the boundary of that item and it's not in any of the buffer space. And so we're going to do the same for the Y.


[User] Please transcribe this text

[Assistant] So if it's less than the cell size, times the scale of course,


[User] Please transcribe this text

[Assistant] Alright, perfect. So you can see it's not updating when we're in the buffer space between the slots. Okay.


[User] Please transcribe this text

[Assistant] So finally, we've got the selecting of the items working, but let's make it so that we can pick up items and stack them on top of each other. So.


[User] Please transcribe this text

[Assistant] This will be playing around with the pick up item value that we set.


[User] Please transcribe this text

[Assistant] And luckily a lot of the hard work has been done for us because of this.


[User] Please transcribe this text

[Assistant] Selecting stuff, so we already know what slot we're selecting. Actually, I might just wrap all this in a region.


[User] Please transcribe this text

[Assistant] But we know that after all of those calculations, we ended up with a selected slot that we're on.


[User] Please transcribe this text

[Assistant] So now what we have to do when we're picking it up is we kind of have to access that slot and see what is contained in there.


[User] Please transcribe this text

[Assistant] So now we are doing the pick up item. So we're gonna need access to our inventory grid. So again, I'm just gonna make our inventory grid a local variable because we're gonna be accessing it quite a few times in this step. So I'll just call it inventory grid. And now what we're gonna do.


[User] Please transcribe this text

[Assistant] Is get the actual item that we're selecting. So I'm going to call this selected slot item. So SS item. So we're going to get the actual item itself. So like what kind of item it is, if it's a tomato or a carrot or whatever. And we remember that the items types, they were stored in the zero column of our inventory grid and the.


[User] Please transcribe this text

[Assistant] So there we go. So we're getting the selected slot item from the grid. And now I'm going to say if I.


[User] Please transcribe this text

[Assistant] So click the right mouse button, I'm going to pick up that item.


[User] Please transcribe this text

[Assistant] Actually, I'm only going to do this if the item that we're picking up, so if the SS item slot, if that is not nothing. So we only want to pick it up if there's actually an item in that inventory slot. So we just check here first. Does not equal.


[User] Please transcribe this text

[Assistant] Our nothing item, because remember in when we were declaring all of the item types?


[User] Please transcribe this text

[Assistant] One of the constants in our enumerator was denoting that nothing item. There we go. We just wrap that.


[User] Please transcribe this text

[Assistant] So if our SS item is equal to something other than none, and we click the mouse right button, I'm going to set pick up item equal to


[User] Please transcribe this text

[Assistant] Selected slot. Alright, and let's come into the draw GUI event. And so just like with the selected slot case here, I'm also going to create.


[User] Please transcribe this text

[Assistant] Instead of going to all of the times I've referred to the pick up item and changing it to pick up slot, what you can do is just ctrl shift f.


[User] Please transcribe this text

[Assistant] And then search for pick up item and then we can replace every single time that we refer to this with a different value. So I'm going to change this to pick up slot. There we go. Cause I think that makes more sense.


[User] Please transcribe this text

[Assistant] Alright, so if the slot that we're currently on is equal to the pickup slot, and let's just grab this.


[User] Please transcribe this text

[Assistant] So what I'm going to do is draw this. I'm going to just draw it at a lower alpha value. So I'm going to draw it at.


[User] Please transcribe this text

[Assistant] Point two, but if you wanted, when you pick up the slot for it to completely disappear from the slot, maybe you wouldn't want to do this at all.


[User] Please transcribe this text

[Assistant] And then what I'm gonna do is just draw the item wherever our mouse cursor is so it kind of looks like we've picked it up and now it's kind of wherever the mouse is. And I have to do it down the bottom of here because I want this to draw on top of all of our slots. So we come down here and so what we just say is if, if the pickup slot does not equal


[User] Please transcribe this text

[Assistant] Negative one, which was the default value that we set it here. So this was meaning that there was nothing picked up. So if there's nothing there, it won't draw this stuff, but otherwise.


[User] Please transcribe this text

[Assistant] We actually have a bunch of logic set up for getting the type of item in the inventory slots itself. This right here, so this was accessing the grid, the inventory grid, looking at the slot and then extracting what kind of item it was. And then it was finding where that item was positioned on our item sprite so that we could draw it using the draw sprite part. So I'm actually just going to grab this.


[User] Please transcribe this text

[Assistant] Put that in here, but instead of drawing it at


[User] Please transcribe this text

[Assistant] Where to draw it in a grid-like fashion, so remember we were incrementing these variables each time we were going through the loop. So instead of drawing it at some location like that, we just want to draw it at the mouse's position. And fairly easy, that's just mouseX and mouseY.


[User] Please transcribe this text

[Assistant] So that will draw the item itself, but actually let's also draw the number on that item. So remember in our inventory group, we were not only storing the item type, but we were also storing how much of that item that we had and we were storing that one.


[User] Please transcribe this text

[Assistant] The information for how many of the item that we had, that was in the second column of the grid, so in column one. So we just need to access the item number from our inventory grid, so exactly the same. And same as before, so pick up slot. And then I'll just grab this for the item number.


[User] Please transcribe this text

[Assistant] And then again, instead of xx and yy, we just get mouse x and mouse y.


[User] Please transcribe this text

[Assistant] Alright. Oh, and then instead of the number string that we were drawing from here,


[User] Please transcribe this text

[Assistant] I called it inum here, so I'll just change that. Alright, and that's run the game.


[User] Please transcribe this text

[Assistant] Okay, so we're currently not picking anything up, but if we right click, there we go, so we get the carrot and


[User] Please transcribe this text

[Assistant] So the number is actually drawing there, but the mouse cursor is kind of in the way, and you can see it if you move it a little bit fast, like that. So you might want to draw it over in the middle or something, so if we just add, for example,


[User] Please transcribe this text

[Assistant] So half the width of the cell size, it should draw that number a little bit over.


[User] Please transcribe this text

[Assistant] Looks a bit weird, but that is a bit better, we can see the nutlock. Alright. Bye.


[User] Please transcribe this text

[Assistant] So we need to come back to the step event and add some more logic. So this was for picking it up. So we know that we currently have an item picked up if our pickup slot does not equal negative one. So we can just check.


[User] Please transcribe this text

[Assistant] Then we go ahead and do this stuff. And actually we could just make this an else if.


[User] Please transcribe this text

[Assistant] Alright, so remember the mouse right click was to pick something up and we'll make the left click to put it back down. So we'll go, I might just copy this and change it to the left. Alright.


[User] Please transcribe this text

[Assistant] We're going to need to do some different things depending on the slot that we want to put it down on. So say that we pick something up and then we are currently on a slot with nothing in it.


[User] Please transcribe this text

[Assistant] Then that will just be adding the contents of what we're picking up to that new slot. But if this slot that we're currently on already has something on it, and say that we're picking up a tomato and we're trying to put it down on a carrot, we don't want to allow that to happen.


[User] Please transcribe this text

[Assistant] But if, again, we're picking up some tomatoes and we are hovering over a slot with other tomatoes, then we want those items to stack on top of each other. So there's kind of three cases for what we're doing here, so. If.


[User] Please transcribe this text

[Assistant] So the current item that we're on, so if that is equal,


[User] Please transcribe this text

[Assistant] So remember this was like the type of item, so if it was a chara.tomato or whatever, so if that is equal to none, then we will just add it to the slot. Else, if ssItem, so the selected slot that we're on is equal to the type of item that our pickup slot is currently holding,


[User] Please transcribe this text

[Assistant] Then we will stack them on top of each other, and then,


[User] Please transcribe this text

[Assistant] Otherwise, so if we're not on a slot that has nothing and we're not on a slot that is the same type as us, then we are on a slot that has something in it, but it's not our type. Alright, so let's do the easiest one first. Let's do the case if it has just nothing at all.


[User] Please transcribe this text

[Assistant] So in this case, then we want to change the contents of the inventory grid to be our pickup item. So we go.


[User] Please transcribe this text

[Assistant] The slot of the inventory that we're currently selecting, let's change that. So that would be the type of item that's currently in that slot. Let's change it to be the type of item in the pickup slot.


[User] Please transcribe this text

[Assistant] And we'll also want to change the number to be...


[User] Please transcribe this text

[Assistant] We want to set that to whatever the number of items in the picked up item that we are holding. Alright, so we've changed the value of


[User] Please transcribe this text

[Assistant] The selected slot, but now what we have to do is actually get rid of the entry from where we had picked it up. Because now that item doesn't exist there anymore, we've moved it to this empty slot.


[User] Please transcribe this text

[Assistant] So we'll just copy and paste this, but we'll change these values and then instead of having them equal to something like this, we are setting them to be nothing because now the old slot has nothing in it.


[User] Please transcribe this text

[Assistant] So the number is zero and then the type of item is none, which remember is actually just zero. Okay. And then finally what we have to do is remember our pick up slot variable.


[User] Please transcribe this text

[Assistant] We have to change this back to be negative one so that we're no longer picking anything up.


[User] Please transcribe this text

[Assistant] Okay, so that is the logic for if we're putting it down into a slot that has nothing in it. Now we'll do the one where, if the slot that we're trying to put it down onto, if it's of the same type.


[User] Please transcribe this text

[Assistant] Of the item that we're picking up. So if we have a tomato and we're putting it down onto a tomato.


[User] Please transcribe this text

[Assistant] Now, there's actually two things that could be going on here, so we could either be putting it back down onto the original slot that we had picked it up from, in which case we don't really have to do anything, we just have to turn off the fact that we're picking it up.


[User] Please transcribe this text

[Assistant] But otherwise, if we're not putting it back down on the slot that we picked it up from, then we know that is a different tomato slot and we'll want to be stacking the items together. So let's just check for that first.


[User] Please transcribe this text

[Assistant] So if the selected slot that we're on is not equal to the slot where we picked up the tomato in the first place, then we know that it's a different slot. Otherwise...


[User] Please transcribe this text

[Assistant] We're not gonna do anything that we do in here, we're just gonna change that to negative one. Alright.


[User] Please transcribe this text

[Assistant] So for this case, we know that we're putting it down onto a different tomato slot. We don't actually have to do this, we don't have to change the item type, but we do have to change the item number.


[User] Please transcribe this text

[Assistant] And we do have to set the original slot to zero as well. So we'll grab these and put them in here.


[User] Please transcribe this text

[Assistant] But instead of making the selected slot equal, the contents, the number of things that we had in the pickup slot.


[User] Please transcribe this text

[Assistant] We are going to add them together because we're stacking the items. So we just put plus equals. All right. So we're done for that one. And now finally, this will be the case for when we are, we're trying to put down the item that we have picked up, but


[User] Please transcribe this text

[Assistant] The slot is of a type that is not nothing and it's not our own type. So we're trying to put down a tomato onto like a carrot.


[User] Please transcribe this text

[Assistant] So in this case, what I'm gonna do is I'm going to...


[User] Please transcribe this text

[Assistant] Put down the item that we're currently picking up, and we're gonna pick up the item that is currently there. So we're kind of gonna, we're gonna do a swap.


[User] Please transcribe this text

[Assistant] So to do this, we're going to have mostly the same kind of logic as before. So we'll grab all of this and put it here.


[User] Please transcribe this text

[Assistant] So this is fine. We're still going to be replacing the selected slot with the item that we're picking up. But what I'm going to do is I'm going to actually swap the content. So I'm going to put this one back in here.


[User] Please transcribe this text

[Assistant] And now, we have to actually first, before we set this, we have to make sure that we're saving the contents of this and this so that we can put it here and here. Luckily, we already actually have this value because it's gonna be this one right here. So we can use that one.


[User] Please transcribe this text

[Assistant] But we haven't grabbed the number, so we, before we set it, we have to save it. So I'm gonna put, fa, ssItemNum.


[User] Please transcribe this text

[Assistant] Like that, so we're just saving the number first. And then we can make it equal it here. Alright. And now finally, you may or may not want this. So as it is, if we do the swap.


[User] Please transcribe this text

[Assistant] We'll be picking up the tomato, putting it down on the carrot, and the carrot will just pop back to where the tomato was.


[User] Please transcribe this text

[Assistant] So that's the current logic of what we're doing because after we do all this, we're turning off the item that we're selecting. But if you want, you can get rid of this line.


[User] Please transcribe this text

[Assistant] And then what will happen instead is that you'll put the tomato down,


[User] Please transcribe this text

[Assistant] And the carrot contents will go to where the tomato was, but you'll actually pick up


[User] Please transcribe this text

[Assistant] That carrot. So I'll show you what that looks like. So we'll just run the game, everything should be set up.


[User] Please transcribe this text

[Assistant] Okay, so let's pick up a tomato and we'll put it down onto a potato. So you can see I kind of pick up the potato and let's just test all of our cases. So we can put down the bucket back where it was.


[User] Please transcribe this text

[Assistant] Let's try and pick up an axe and then stack it onto another axe. There we go, so that works.


[User] Please transcribe this text

[Assistant] And let's try and put it onto a slot that we don't already have. Okay, good. It shouldn't be allowed to do that. So you can see it's just getting kind of like the highest value that it can. And if we put it out here, yep, that's working fine. All right. So we are done with today's video.


[User] Please transcribe this text

[Assistant] I'd like to thank everyone on Patreon who was supporting me to create these tutorials. And a special shoutout to Daniel Hargrave, Max Molinaro, Stuart Wells, Uthelien,


[User] Please transcribe this text

[Assistant] The Great Poultry, XD Game Studio, Monju 72, and Hunter T. Thanks for watching guys, I hope you're well, and I'll see you next time.


[User] Please transcribe this text

[Assistant] She's got a job now. A life. Don't fuck it up by finding her.


[User] Please transcribe this text

[Assistant] It is raining today, so Peppa and George cannot play outside.


[User] Please transcribe this text

[Assistant] Pepper likes to look after her little brother George.


[User] Please transcribe this text

[Assistant] George, you do love to throw Mr. Dinosaur in the air.


[User] Please transcribe this text

[Assistant] I wonder if this time you threw Mr. Dinosaur just a bit too high.


[User] Please transcribe this text

[Assistant] Well done, Pepper. You really are a very good detective.


[User] Please transcribe this text

[Assistant] Yeah, uh, you mentioned already the, the field in which Yokoi works, so he has a, he holds a PhD from Goldsmith College, studying with Berner Stigler, Matt Fuller and


[User] Please transcribe this text

[Assistant] Scott Lash and afterwards he went on to do his habilitation at Leuphana University in Lüneburg in Germany.


[User] Please transcribe this text

[Assistant] He has also worked since then as researcher, lecturer and visiting professor apart from Goldsmith and Lefana at the Bauhaus University in Weimar where he's currently, uhm, based.


[User] Please transcribe this text

[Assistant] The Strelka Institute for Media Architecture and Design in Moscow, the China Academy of Art, and, uh, His Alma Mater, the City University in Hong Kong.


[User] Please transcribe this text

[Assistant] Uh, he of course is prolific as a writer of, uh, books. You mentioned already on the existence of digital objects, and this was in 2016. It was followed by, uh,


[User] Please transcribe this text

[Assistant] The question concerning technology in China in 2017, which was also translated into many languages, then in 2019, uh, recursivity and contingency, and I believe it came out in this June, so June 2021, a new book.


[User] Please transcribe this text

[Assistant] And apart from being an author of monographs, he has also been co-editor of edited volumes and published many articles and journals such as Philosophy of, uh, Philosophy Today, Angelaki and eFlux.


[User] Please transcribe this text

[Assistant] And I'm particularly happy to have you here today because we tried last year and, uh, we are again in Graz, again, not in the physical same space, but at least this year we're going to get to hear your presentation. So I, without further ado.


[User] Please transcribe this text

[Assistant] I'll hand the stage to you. I was asked to remind everyone.


[User] Please transcribe this text

[Assistant] To ease the question and answer part, which is after the lecture or the presentation, as soon as you come up with questions, this is to the audience, as soon as you come up to questions, to please use the Zoom chat function and post them there so we can have a smoother start into that section.


[User] Please transcribe this text

[Assistant] Okay, so everybody enjoy the talk.


[User] Please transcribe this text

[Assistant] So we can, uh, I think we're all, uh, now trying to...


[User] Please transcribe this text

[Assistant] Let's grasp how we can formulate these differences somehow and maybe sketch them out for ourselves. Before we kind of taking the baton, I want to reiterate the invitation to those who have been here and listening and reading.


[User] Please transcribe this text

[Assistant] Uh, to bring forward questions to Yukui, if you have any, or if you have any, uh, remarks also perhaps. And if that is not the case, then maybe we can, uh, start. You want to start? I have many questions, so.


[User] Please transcribe this text

[Assistant] Okay then. No, I mean that's fine. If you have one central one, then maybe you can kick off.


[User] Please transcribe this text

[Assistant] Okay, thank you. Perhaps we move now more to the layer of a practical, ethical layer with the next question from the audience by Andre. I'm gonna read it to the audience.


[User] Please transcribe this text

[Assistant] Uhm, I would like to know if contingency and recursivity are elements and concepts that we should use as a reference to design digital environments that integrate human presence in a sustainable or healthier way since the technology available to us has been appropriated.


[User] Please transcribe this text

[Assistant] In a repetitive automated and linear thinking approach of approaches.


[User] Please transcribe this text

[Assistant] Thank you very much. There's currently not directly a question, but just a remark, which by, I think it's anyway what you also said in the, in the lecture. Of course from, to go from computable to unknown, there's a gap that is still.


[User] Please transcribe this text

[Assistant] To be filled, and I think as I understood your lecture in a way, that's why you, why you introduce in a way this concept of the incalculable.


[User] Please transcribe this text

[Assistant] I was wondering, because it was also mentioned before, of course, the term of the contingency, and for me it was, it seemed very similar, the use in which you introduced incalculable and


[User] Please transcribe this text

[Assistant] And, uh, formally the term of the contingency, whether maybe perhaps, uh, I'm curious in a way how you moved from the contingency to the incalculable. If, or is that, is that a refinement of the term? Is that a shift of the term perhaps?


[User] Please transcribe this text

[Assistant] Lifted beyond, beyond this domain of computation. So we're all kind of.


[User] Please transcribe this text

[Assistant] Curious about this, uhm, this force that is there that makes the, that makes, produces these differences. And I was thinking about, uh, you know, these definitions of the recursion and this, uh, reference to the self, which seems to be somehow at the core.


[User] Please transcribe this text

[Assistant] So I was wondering whether that is kind of, uh, the limit of understanding that term or whether you can go beyond that somehow in the terms of referentiality and reference. So on the one hand, you have all these auto, auto poetic, auto motive and so on this kind of.


[User] Please transcribe this text

[Assistant] There's always this drive of the reference to an identity to the self. And even if you mentioned Luhmann and the social systems,


[User] Please transcribe this text

[Assistant] He was always accused that he doesn't see any individuals and, you know, in a way the self is replaced by the self of the system, but it's still there, kind of this identity function, and it still remains somehow mysterious how the differences occur. So I was wondering about the production of differences, whether the kind of the recognition of


[User] Please transcribe this text

[Assistant] differences and whether maybe the incalculable to go back to this term could


[User] Please transcribe this text

[Assistant] Coming up, another discussion today, so I was wondering about the other and the otherness, whether that is something that is outside of recursivity, especially because you talk also about this plurality of technologies, plurality of epistemology and diversity of technology, how that fits in a way, how you can come


[User] Please transcribe this text

[Assistant] Is there a bridge in a way from this recursivity to this, uhm, plurality of otherness or bifurcations of futures and so on?


[User] Please transcribe this text

[Assistant] Thank you very much. Uh, in the meantime, we got several new questions. You want to go from the first one?


[User] Please transcribe this text

[Assistant] I would, if there's no current question, perhaps, I was wondering, uhm, out of the history of the