Avida

 

Changeset 3664

Show
Ignore:
Timestamp:
03/05/10 20:57:59 (6 months ago)
Author:
zaman
Message:

added immunity_reaction and fixed immunity_task

Location:
development/source/main
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • development/source/main/cAvidaConfig.h

    r3641 r3664  
    378378  CONFIG_ADD_VAR(IMMUNITY_TASK, int, -1, "Task providing immunity from the required task."); 
    379379  CONFIG_ADD_VAR(REQUIRED_REACTION, int, -1, "Reaction ID required for successful divide."); 
     380  CONFIG_ADD_VAR(IMMUNITY_REACTION, int, -1, "Reaction ID that provides immunity for successful divide."); 
    380381  CONFIG_ADD_VAR(REQUIRED_BONUS, double, 0.0, "Required bonus to divide."); 
    381382  CONFIG_ADD_VAR(REQUIRE_EXACT_COPY, int, 0, "Require offspring to be an exact copy (only divide mutations allowed)."); 
  • development/source/main/cOrganism.cc

    r3618 r3664  
    740740 
    741741  if (required_task != -1 && m_phenotype.GetCurTaskCount()[required_task] == 0) {  
    742     if (immunity_task==-1 || m_phenotype.GetCurTaskCount()[immunity_task] == 0) { 
     742    if (immunity_task==-1 && m_phenotype.GetCurTaskCount()[immunity_task] == 0) { 
    743743      Fault(FAULT_LOC_DIVIDE, FAULT_TYPE_ERROR, 
    744744            cStringUtil::Stringf("Lacks required task (%d)", required_task)); 
     
    750750   
    751751  const int required_reaction = m_world->GetConfig().REQUIRED_REACTION.Get(); 
    752   if (required_reaction != -1 && m_phenotype.GetCurReactionCount()[required_reaction] == 0) { 
    753     Fault(FAULT_LOC_DIVIDE, FAULT_TYPE_ERROR, 
     752  const int immunity_reaction = m_world->GetConfig().IMMUNITY_REACTION.Get(); 
     753  if (required_reaction != -1 && m_phenotype.GetCurReactionCount()[required_reaction] == 0)   { 
     754    if (immunity_reaction != -1 && m_phenotype.GetCurReactionCount()[immunity_reaction] == 0) {   
     755      Fault(FAULT_LOC_DIVIDE, FAULT_TYPE_ERROR, 
    754756          cStringUtil::Stringf("Lacks required reaction (%d)", required_reaction)); 
    755     return false; //  (divide fails) 
     757      return false; //  (divide fails) 
     758    } 
    756759  } 
    757760