Cog Quiz

Week 11 - Answer

Prev - Exit - Next

Show Quiz

Level 1

There are few things you want to make lights look flickering. First is the light around it and second is the mat on it.

   startup:

   SetTimer(rand());
   return;

   timer:

   if(On)
   {
      SetThingLight(lights, 1, 0);   //light to 1 with no delay
      SetSurfaceCel(surf, 1);   //brighter mat
      SetTimer(rand());   //in a bit of time (0 <= rand() <= 1)
   }
   else
   {
      SetThingLight(lights, 0, 0);   //darker, no light without a delay
      SetSurfaceCel(surf, 0);   //darker mat
      SetTimer(rand());   //bright again in a time
   }

   On = 1 - On;   //alternates bright and not

   return;

Level 2

It's kind of hard, but not a problem once you work it out. To rotate anything, use SetThingRotVel, just like the blades in Blades of Death.

You have 3 arms to control. For each of them set a speed for certain time rate. SetThingRotVel(thing, 'Pitch Yaw Roll');

Hour arm - SetThingRotVel(hour, 'x / 3600, 0, 0');

Minute arm - SetThingRotVel(hour, 'x / 60, 0, 0');

Second arm - SetThingRotVel(hour, 'x, 0, 0');

Move the value to yaw or roll according to where your arm 3do is facing to. The "x" is the velocity that makes the arm rotate 360deg in 1 minute. I haven't checked so, check it by inserting various values. And btw the blades of death's value was "400" when moving around. But that's too fast for a clock...

Note : Since SetThingRotVel rotates the thing from the center position of the thing, you want to make your arms 3do the same length to both side from the center and make 1 end transparent, or it rotates wrong.


Level 3

A few ParseArg can do it. Place an ATST in your level with the following cog attached via template.

   activated:

   player = GetSourceRef();
   if(GetThingType(player) != 10) return;   // if other than player activates, don't.
   SetThingModel(player, ATST_Model);   //change the look
   ParseArg(player, "size=0.300000");   //size
   ParseArg(player, "movesize=0.300000");   //another size
   ParseArg(player, "puppet=atst.pup");   //pup-key-move
   ParseArg(player, "maxthrust=0.30");   //move speed
   ParseArg(player, "maxrotthrust=10.00");   //rotation speed
   ParseArg(player, "soundclass=atst.snd");   //walking sound etc
   SetThingFlags(player, 0x4);   //mag sealed, was it?
   SetActorFlags(player, 0x100);   //droid...
   DestroyThing(GetSenderRef());   //get the atst away

   return;

if you want to get off from it, you might want to use a new hotkey or something.

   activated:

   player = GetSourceRef();
   SetThingModel(player, player_Model);   //change the look
   ParseArg(player, "size=0.065000");   //size
   ParseArg(player, "movesize=0.065000");   //another size
   ParseArg(player, "puppet=ky.pup");   //pup-key-move
   ParseArg(player, "maxthrust=2.00");   //move speed
   ParseArg(player, "maxrotthrust=180.00");   //rotation speed
   ParseArg(player, "soundclass=ky.snd");   //walking sound etc
   ClearThingFlags(player, 0x4);   //no more mag sealed
   ClearActorFlags(player, 0x100);   //human...

   CreateThing(atst_tpl, player);   //leave atst behind
   return;

Maybe that was easy enough.