[Package Index | Mudlib Index | Effect Index]
See also:
help::tasks
.c
Written by Deutha
varargs mixed attempt_task(int difficulty, int bonus, int upper, mixed extra, int degree)
varargs mixed attempt_task_e(int difficulty, int bonus, int upper, int half, int degree)
varargs mixed compare_skills(object offob, string offskill, object defob, string defskill, int modifier, int off_tm_type, int def_tm_type, int degree, int offperc, int defperc)
This is an example of the simpler, binary success/failure behaviour.
switch(TASKER->compare_skills(attacker, "fighting.melee.sword",
                              defender, "fighting.defence.parry",
                              25, TM_COMMAND, TM_FREE) {
case OFFAWARD:
  tell_object(attacker, "%^@tm%^You manage to grasp one of the "
                        "principles of slicing people up more firmly."
                        "%^RESET%^\n");
case OFFWIN:
  say(defender->one_short() + " loses an arm!\n");
  break;
case DEFAWARD:
  tell_object(defender, "%^@tm%^You feel better able to keep your arms "
                        "attached when parrying unarmed.%^RESET%^\n");
case DEFWIN:
  say(defender->one_short() + " keeps " + defender->query_possesive() +
      " arm attached.\n");
  break;
}
This is an example of the finer grained degree-of-success behaviour.
class tasker_result tr;
tr = (class tasker_result)TASKER->compare_skills(
  attacker, "fighting.melee.sword",
  defender, "fighting.defence.parry",
  25, TM_COMMAND, TM_FREE, 1 );
switch( tr->result ) {
case OFFAWARD:
  tell_object(attacker, "%^@tm%^You manage to grasp one of the "
                        "principles of slicing people up more firmly."
                        "%^RESET%^\n");
case OFFWIN:
  switch( tr->degree ) {
  case TASKER_MARGINAL:
    say( "You just barely scrape your opponent's hand.\n" );
    break;
  case TASKER_NORMAL:
    say( "You slice into your opponent's arm.\n" );
    break;
  case TASKER_EXCEPTIONAL:
    say( "You slice deeply into your opponent's muscle and sinew, and "
      "he screams in pain!\n" );
    break;
  case TASKER_CRITICAL:
    say( "You slice your opponent's arm clean off.  Blood spurts "
      "everywhere like a cherry slurpee machine gone insane!\n" );
    break;
  }
  break;
case DEFAWARD:
  tell_object(defender, "%^@tm%^You feel better able to keep your arms "
                        "attached when parrying unarmed.%^RESET%^\n");
case DEFWIN:
  switch( tr->degree ) {
     ...
     similar code in here...
     ...
  }
  break;
}
int is_critical(int margin)
void load_me()
void lucky_achievements(object player, int level)
varargs mixed perform_task(object person, string skill, int difficulty, int tm_type, int degree, int gp_cost)
This is an example of the simpler, binary success/failure behaviour.
switch(TASKER->perform_task( person, "covert.manipulation.stealing",
                             300, TM_COMMAND ) ) {
 case AWARD :
   tell_object( person, "%^@tm%^You manage to grasp the principles "
               "of stealing more firmly.%^RESET%^\n" );
   // Note, no break;
 case SUCCEED :
   // Whatever happens when it succeeds
   break;
 default :
   // Whatever happens when it fails
}
This is an example of the finer grained degree-of-success behaviour.
class tasker_result tr;
tr = (class tasker_result)TASKER->perform_task( person,
  "other.direction", 300, TM_FREE, 1, 50 );
switch( tr->result ) {
case AWARD:
  tell_object(attacker, "%^@tm%^You feel very aligned!%^RESET%^\n" );
case SUCCEED:
   switch( tr->degree ) {
   case TASKER_MARGINAL:
      say( "You think he went thataway. Maybe.\n" );
      break;
   case TASKER_NORMAL:
      say( "You're pretty sure he went that way.\n" );
      break;
   case TASKER_EXCEPTIONAL:
      say( "He definitely went thataway!\n" );
      break;
   case TASKER_CRITICAL:
      say( "Your surity that he went thataway is so powerful that even "
        "if he didn't go thataway, he'll be in that direction.\n" );
      break;
  }
  break;
case FAIL:
  switch( tr->degree ) {
     ...
     Boy, it's a good thing I've already explained this, or I'd be
     pretty hard-pressed to think of an example of a critical failure
     for other.direction.  You get the idea.
     ...
  }
  break;
}
varargs void save_me(int now)
void set_control(mixed * args)
int success_probability(int difficulty, int bonus, int tm_type)
void write_back_trace(string skill, string trace)