Ejemplo n.º 1
0
void EQPlayer::updateLevel(const levelUpStruct *levelup)
{
  QString totalExp;
  QString gainedExp;
  QString leftExp;
  QString needKills;
  QString tempStr;

  totalExp = Commanate(levelup->exp);
  gainedExp = Commanate((uint32_t) (levelup->exp - m_currentExp));
  
  needKills = Commanate(((calc_exp( levelup->level,
				    getPlayerRace  (),
				    getPlayerClass ()
				    ) - levelup->exp
			  )          /  ( levelup->exp > m_currentExp    ?
					  levelup->exp - m_currentExp :
					  1
					  )
			 )
			);
  
  tempStr = QString("Exp: %1 (%2) [%3]").arg(totalExp).arg(gainedExp).arg(needKills);
  
  emit expChangedStr (tempStr);

  m_defaultLevel = levelup->level;
  m_playerLevel  = levelup->level;

  m_maxExp = calc_exp( getPlayerLevel (),
		     getPlayerRace  (),
		     getPlayerClass ()
		     );
  
  emit expChangedInt( levelup->exp,
		      calc_exp( getPlayerLevel () - 1,
				getPlayerRace  (),
				getPlayerClass ()
				),
		      calc_exp( getPlayerLevel (),
				getPlayerRace  (),
				getPlayerClass ()
				)
		      );
  
  m_currentExp = levelup->exp;

  m_validExp = true;

  // update the con table
  fillConTable();
}
Ejemplo n.º 2
0
void EQPlayer::reset()
{
  memset(&m_thePlayer, 0, sizeof(playerProfileStruct));

  setUseDefaults(true);

  m_currentExp = 0;
  m_maxExp = calc_exp(getPlayerLevel(), 
		    getPlayerRace(), 
		    getPlayerClass());

  for (int a = 0; a < MAX_KNOWN_SKILLS; a++)
    m_playerSkills[a] = 255; // indicate an invalid value

  for (int a = 0; a < MAX_KNOWN_LANGS; a++)
    m_playerLanguages[a] = 255; // indicate an invalid value
  
  setPlayerLevel (1);
  setPlayerRace (1);
  setPlayerClass (1);
  
  emit deleteSkills();
  emit deleteLanguages();

  m_validExp = false;
  m_validAttributes = false;

  // update the con table
  fillConTable();
}
Ejemplo n.º 3
0
void calc_exp( int hd[], int cg, int tk, int pointhd[], int pointnum, int deck[], int decknum, int recursioncount, int starthd ) {
  int nexthd[HNUM];
  int nextdeck[CNUM];
  int point = 0;
  int i, j;

  for ( i = starthd; i < HNUM; i++) {
    for ( j = 0; j < CNUM; j++) {
      // 山札にカードがあれば
      if ( deck[j] == 0 ) {
        // 手札とデッキの複製
        arr_copy( nexthd, hd, HNUM );
        nexthd[i] = j;
        arr_copy( nextdeck, deck, CNUM );
        nextdeck[j] = -1;

        if ( recursioncount == 1 ) {
          // 一手目の期待値の加算
          pointhd[i] += point_convert(poker_point(nexthd))*decknum;
        } else {
          // 二手目の期待値の加算
          point = point_convert(poker_point(nexthd));
          pointhd[pointnum] += point;
          if ( pointnum < i ) {
            pointhd[i] += point;
          }
        }

        if ( cg > 7 - RECURSION_LIMIT ) { continue; }
        if ( recursioncount >= RECURSION_LIMIT ) { continue; }

        // 再帰呼び出し
        if ( pointnum == -1 ) {
          calc_exp( nexthd, cg+1, tk, pointhd, i, nextdeck, decknum-1, recursioncount+1, i );
        } else {
          calc_exp( nexthd, cg+1, tk, pointhd, pointnum, nextdeck, decknum-1, recursioncount+1, i );
        }
      }
    }
  }
}
Ejemplo n.º 4
0
int command_calc(char *text, int len)
{
	double res;
	char str[100];
	int calcerr;

	res = calc_exp(text, &calcerr);
	switch (calcerr){
		case CALCERR_OK:
			if (trunc(res)==res) safe_snprintf (str,sizeof(str), "%s = %.0f",text,res);
			else safe_snprintf (str,sizeof(str), "%s = %.2f",text,res);
			LOG_TO_CONSOLE (c_orange1, str);
			break;
		case CALCERR_SYNTAX:
			safe_snprintf (str,sizeof(str), "%s = Syntax error",text);
			LOG_TO_CONSOLE (c_orange1, str);
			break;
		case CALCERR_DIVIDE:
			safe_snprintf (str, sizeof(str),"%s = Divide by zero",text);
			LOG_TO_CONSOLE (c_orange1, str);
			break;
		case CALCERR_MEM:
			safe_snprintf (str,sizeof(str), "%s = Memory error",text);
			LOG_TO_CONSOLE (c_orange1, str);
			break;
		case CALCERR_XOPSYNTAX:
			safe_snprintf (str,sizeof(str), "%s = Bad argument for X", text);
			LOG_TO_CONSOLE (c_orange1, str);
			break;
		case CALCERR_LOPSYNTAX:
			safe_snprintf (str,sizeof(str), "%s = Bad argument for L", text);
			LOG_TO_CONSOLE (c_orange1, str);
			break;
		case CALCERR_EOPSYNTAX:
			safe_snprintf (str,sizeof(str), "%s = Bad argument for E", text);
			LOG_TO_CONSOLE (c_orange1, str);
			break;
		case CALCERR_NOPSYNTAX:
			safe_snprintf (str,sizeof(str), "%s = Bad argument for N", text);
			LOG_TO_CONSOLE (c_orange1, str);
			break;
		case CALCERR_ZOPSYNTAX:
			safe_snprintf (str,sizeof(str), "%s = Bad argument for Z", text);
			LOG_TO_CONSOLE (c_orange1, str);
			break;
		case CALCERR_QOPSYNTAX:
			safe_snprintf (str,sizeof(str), "%s = Bad argument for Q", text);
			LOG_TO_CONSOLE (c_orange1, str);
			break;
	}
	return 1;
}
Ejemplo n.º 5
0
int select_card( int hd[], int cg, int tk, int ud[], int us, int deck[], int decknum ) {
  int hightexp = ( decknum > 1 ) ? poker_point(hd)*decknum*(decknum-1) : poker_point(hd)*decknum;
  int select = -1;
  int recursioncount = 1;
  int pointhd[HNUM] = { 0 }; // 期待値を格納
  int i;

  calc_exp( hd, cg, tk, pointhd, -1, deck, decknum, recursioncount, 0);

  for ( i = 0; i < HNUM; i++) {
    if ( pointhd[i] > hightexp ) {
      hightexp = pointhd[i];
      select = i;
    }
  }
  return select;
}
Ejemplo n.º 6
0
PUBLIC struct seg_des *seg_static_load(struct comal_line *line)
{
	struct proc_func_rec *pf = &line->lc.pfrec;
	struct string *name;
	enum VAL_TYPE type;
	struct seg_des *seg;

	calc_exp(pf->external->filename, (void **) &name, &type);
	seg = mem_alloc(RUN_POOL, sizeof(struct seg_des));
	seg->lineroot = expand_fromfile(name->s);
	mem_free(name);
	seg->extdef = line;
	seg->save_localproc = line->lc.pfrec.localproc;
	seg_total_scan(seg);
	seg_proccheck(line, seg->procdef);
	seg->prev = NULL;

	pf->external->seg = seg;

	return seg;
}
Ejemplo n.º 7
0
/* main */
int main (int argc, char** argv)   
{
    unsigned int calc_mod = 0;
    double idata  = 0;
    double kdata  = 0;
    double result = 0;
    
    if(argc < 2 || argc > 4)
    {
        printf("enter cmd numbers must greater than 2 and less than 5!!!\n\n");
	    printf("命令格式如下所示:\n");
    	printf("./calc_sim 1 xxx xxx      add\n");
    	printf("./calc_sim 2 xxx xxx      sub\n");
    	printf("./calc_sim 3 xxx xxx      multi\n");
    	printf("./calc_sim 4 xxx xxx      div\n");
    	printf("./calc_sim 5              PI\n");
    	printf("./calc_sim 6 xxx          sin\n");
    	printf("./calc_sim 7 xxx          cos\n");
    	printf("./calc_sim 8 xxx          tan\n");
    	printf("./calc_sim 9 xxx          fabs\n");
    	printf("./calc_sim 10 xxx         exp\n");
    	printf("./calc_sim 11 xxx         log\n");
    	printf("./calc_sim 12 xxx         log10\n");
   	    printf("./calc_sim 13 xxx xxx     pow\n");
    	printf("./calc_sim 14             rand\n");

    	return -1;
    }

    argv++;
    calc_mod=atoi(*argv);

    if(calc_mod < 1 || calc_mod > 14){
	     printf("命令格式如下所示:\n");
    	     printf("./calc_sim 1 xxx xxx      add\n");
    	     printf("./calc_sim 2 xxx xxx      sub\n");
    	     printf("./calc_sim 3 xxx xxx      multi\n");
    	     printf("./calc_sim 4 xxx xxx      div\n");
    	     printf("./calc_sim 5              PI\n");
    	     printf("./calc_sim 6 xxx          sin\n");
    	     printf("./calc_sim 7 xxx          cos\n");
    	     printf("./calc_sim 8 xxx          tan\n");
    	     printf("./calc_sim 9 xxx          fabs\n");
    	     printf("./calc_sim 10 xxx         exp\n");
    	     printf("./calc_sim 11 xxx         log\n");
    	     printf("./calc_sim 12 xxx         log10\n");
   	     printf("./calc_sim 13 xxx xxx     pow\n");
    	     printf("./calc_sim 14             rand\n");
	return -1;
	
        }

    
    if(argc==2){
	
	    printf("Enter is mod<%d>  \n", calc_mod);
    
        switch(calc_mod){
            case 5:
                result = calc_PI();
                printf("calc PI result is %f\n",result);
                break;
	        case 14:
                result = calc_rand();
                printf("calc rand result is %f\n",result);
                break;
            default:
                if(calc_mod==1)
                    printf("add 格式:./calc_sim 1 xxx xxx\n");
                if(calc_mod==2)
                    printf("sub 格式:./calc_sim 2 xxx xxx\n");
                if(calc_mod==3)
                    printf("multi 格式:./calc_sim 3 xxx xxx\n");
                if(calc_mod==4)
                    printf("div 格式:./calc_sim 4 xxx xxx\n");
                if(calc_mod==5)
                    printf("PI 格式:./calc_sim 5\n");
                if(calc_mod==6)
                    printf("sin 格式:./calc_sim 6 xxx\n");
                if(calc_mod==7)
                    printf("cos 格式:./calc_sim 7 xxx\n");
                if(calc_mod==8)
                    printf("tan 格式:./calc_sim 8 xxx\n");
                if(calc_mod==9)
                    printf("fabs 格式:./calc_sim 9 xxx\n");
                if(calc_mod==10)
                    printf("exp 格式:./calc_sim 10 xxx\n");
                if(calc_mod==11)
                    printf("log 格式:./calc_sim 11 xxx\n");
                if(calc_mod==12)
                    printf("log10 格式:./calc_sim 12 xxx\n");
                if(calc_mod==13)
                    printf("pow 格式:./calc_sim 13 xxx xxx\n");
                if(calc_mod==14)
                    printf("rand 格式:./calc_sim 14\n");
                
                break;
	
        }   
    }

    if(argc==3){

        argv ++;
        idata = atof(*argv);

	    printf("Enter is mod<%d> data_f<%f> \n", calc_mod, idata);

	    switch(calc_mod){
	        case 6:
                result = calc_sin(idata);
                printf("calc sin (%f) result is %f\n",idata,result);
                break;

            case 7:
                result = calc_cos(idata);
                printf("calc cos (%f) result is %f\n",idata,result);
                break;

            case 8:
                result = calc_tan(idata);
                printf("calc tan (%f) result is %f\n",idata,result);
                break;

            case 9:
                result = calc_fabs(idata);
                printf("calc fabs (%f) result is %f\n",idata,result);
                break;

            case 10:
                result = calc_exp(idata);
                printf("calc exp (%f) result is %f\n",idata,result);
                break;

            case 11:
                if(idata<=0){
                printf("真数必须大于0\n");
                break;
                }
                result = calc_log(idata);
                printf("calc log (%f) result is %f\n",idata,result);
	            break;

            case 12:
                if(idata<=0){
                printf("真数必须大于0\n");
                break;
                }
                result = calc_log10(idata);
                printf("calc log10 (%f) result is %f\n",idata,result);
                break;
            default:
		if(calc_mod==1)
                    printf("add 格式:./calc_sim 1 xxx xxx\n");
                if(calc_mod==2)
                    printf("sub 格式:./calc_sim 2 xxx xxx\n");
                if(calc_mod==3)
                    printf("multi 格式:./calc_sim 3 xxx xxx\n");
                if(calc_mod==4)
                    printf("div 格式:./calc_sim 4 xxx xxx\n");
                if(calc_mod==5)
                    printf("PI 格式:./calc_sim 5\n");
                if(calc_mod==6)
                    printf("sin 格式:./calc_sim 6 xxx\n");
                if(calc_mod==7)
                    printf("cos 格式:./calc_sim 7 xxx\n");
                if(calc_mod==8)
                    printf("tan 格式:./calc_sim 8 xxx\n");
                if(calc_mod==9)
                    printf("fabs 格式:./calc_sim 9 xxx\n");
                if(calc_mod==10)
                    printf("exp 格式:./calc_sim 10 xxx\n");
                if(calc_mod==11)
                    printf("log 格式:./calc_sim 11 xxx\n");
                if(calc_mod==12)
                    printf("log10 格式:./calc_sim 12 xxx\n");
                if(calc_mod==13)
                    printf("pow 格式:./calc_sim 13 xxx xxx\n");
                if(calc_mod==14)
                    printf("rand 格式:./calc_sim 14\n");
                
                break;
        }
	}

    if(argc==4){

        argv ++;
        idata = atof(*argv);
        argv ++;    
        kdata = atof(*argv);    
    
        printf("Enter is mod<%d> data_f<%f> data_b<%f> \n", calc_mod, idata, kdata);
    
        switch(calc_mod)
        {
    	    case 1:
    	        result = calc_add(idata, kdata);   
                printf("Calc add (%f + %f) result is %f\n", idata, kdata, result);  	    	
    	        break;
    	    	
    	    case 2:
    	        result = calc_sub(idata, kdata);
                printf("Calc sub (%f - %f) result is %f\n", idata, kdata, result);     	    	    
    	        break;
    	    
	        case 3:
	            result = calc_multi(idata,kdata);
	            printf("calc multi(%f * %f) result is %f\n",idata,kdata,result);
	            break;
		
	        case 4:
                if(kdata==0){
                    printf("除数不能为0\n");
                    break;}
                else
	            result = calc_div(idata,kdata);
	            printf("calc div(%f / %f) result is %f\n",idata,kdata,result);             
	            break;

            case 13:
                result = calc_pow(idata,kdata);
                printf("calc pow (%f , %f) result is %f\n",idata,kdata,result);
                break;

            default:
		if(calc_mod==1)
                    printf("add 格式:./calc_sim 1 xxx xxx\n");
                if(calc_mod==2)
                    printf("sub 格式:./calc_sim 2 xxx xxx\n");
                if(calc_mod==3)
                    printf("multi 格式:./calc_sim 3 xxx xxx\n");
                if(calc_mod==4)
                    printf("div 格式:./calc_sim 4 xxx xxx\n");
                if(calc_mod==5)
                    printf("PI 格式:./calc_sim 5\n");
                if(calc_mod==6)
                    printf("sin 格式:./calc_sim 6 xxx\n");
                if(calc_mod==7)
                    printf("cos 格式:./calc_sim 7 xxx\n");
                if(calc_mod==8)
                    printf("tan 格式:./calc_sim 8 xxx\n");
                if(calc_mod==9)
                    printf("fabs 格式:./calc_sim 9 xxx\n");
                if(calc_mod==10)
                    printf("exp 格式:./calc_sim 10 xxx\n");
                if(calc_mod==11)
                    printf("log 格式:./calc_sim 11 xxx\n");
                if(calc_mod==12)
                    printf("log10 格式:./calc_sim 12 xxx\n");
                if(calc_mod==13)
                    printf("pow 格式:./calc_sim 13 xxx xxx\n");
                if(calc_mod==14)
                    printf("rand 格式:./calc_sim 14\n");
    	     
    	        break;
        }
    }
    
    return 0;
}
Ejemplo n.º 8
0
void EQPlayer::updateExp(const expUpdateStruct* exp)
{
  QString totalExp;
  QString gainedExp;
  QString leftExp;
  QString needKills;
  QString tempStr;

  if (m_currentExp > 0)
  {
    totalExp  = Commanate(exp->exp);
    gainedExp = Commanate((uint32_t) (exp->exp - m_currentExp));

    needKills = Commanate((( calc_exp( getPlayerLevel (),
				       getPlayerRace  (),
				       getPlayerClass ()
				       )  - exp->exp
			     )           /   ( exp->exp > m_currentExp    ?
					       exp->exp - m_currentExp :
					       1
					       )
			   )            + 1
			  );
    
    leftExp = Commanate((( calc_exp( getPlayerLevel (),
				     getPlayerRace  (),
				     getPlayerClass ()
				     )
			   ) - ( calc_exp(
					  getPlayerLevel ()              - 1,
					  getPlayerRace  (),
					  getPlayerClass ()
					  )
				 )
			 )  - ( exp->exp - ( calc_exp( getPlayerLevel () - 1,
						       getPlayerRace  (),
						       getPlayerClass ()
						       )
					     )
				)
			);
    
    tempStr = QString("Exp: %1 (%2) [%3]").arg(totalExp).arg(gainedExp).arg(needKills);
    emit expChangedStr (tempStr);
    
    tempStr = QString("Exp: %1 (%2)(%3) left %4").arg(totalExp).arg(gainedExp).arg(needKills).arg(leftExp);
    
    emit msgReceived(tempStr);

    if (m_freshKill)
    {
      emit expGained( m_lastSpawnPlayerKilled.name,
		      m_lastSpawnPlayerKilled.level,
		      exp->exp - m_currentExp,
		      m_longZoneName);
      
      // have gained experience for the kill, it's no longer fresh
      m_freshKill = false;
    }
    else if ((m_lastSpellOnId == 0x0184) || // Resuscitate
	     (m_lastSpellOnId == 0x0187) || // Revive (does it or don't it?)
	     (m_lastSpellOnId == 0x0188) || // Resurrection
	     (m_lastSpellOnId == 0x02f4) || // Resurrection Effects
	     (m_lastSpellOnId == 0x02f5) || // Resurrection Effect
	     (m_lastSpellOnId == 0x03e2) || // Customer Service Resurrection
	     (m_lastSpellOnId == 0x05f4)) // Reviviscence
      {
	emit expGained( spell_name(m_lastSpellOnId),
			0, // level of caster would only confuse things further
			exp->exp - m_currentExp,
			m_longZoneName);
      }
    else
      emit expGained( "Unknown", // Randomly blessed with xp?
		      0, // don't know what gave it so, level 0
		      exp->exp - m_currentExp,
		      m_longZoneName
		      );
    
    emit stsMessage(tempStr);
  }
  
  emit expChangedInt ( exp->exp,
		       calc_exp( getPlayerLevel () - 1,
				 getPlayerRace  (),
				 getPlayerClass ()
				 ),
		       calc_exp( getPlayerLevel (),
				 getPlayerRace  (),
				 getPlayerClass ()
				 )
		       );
  
  m_currentExp = exp->exp;

  m_validExp = true;
}
Ejemplo n.º 9
0
void EQPlayer::backfill(const playerProfileStruct* player)
{
  QString messag;
  
  printf("EQPlayer::backfill():\n");
  
  messag.sprintf("Zone: Name='%s' Last='%s'\n", 
		 player->name, player->lastName);
  emit msgReceived(messag);
  
  messag.sprintf("Zone: Level: %d\n", player->level);
  emit msgReceived(messag);
  
  messag.sprintf("Zone: PlayerMoney: P=%d G=%d S=%d C=%d\n",
		 player->platinum, player->gold, 
		 player->silver, player->copper);
  emit msgReceived(messag);
  
  messag.sprintf("Zone: BankMoney: P=%d G=%d S=%d C=%d\n",
		 player->platinumBank, player->goldBank, 
		 player->silverBank, player->copperBank);
  emit msgReceived(messag);
  
  memcpy(&m_thePlayer, player, sizeof(playerProfileStruct));
  
  m_playerLevel = player->level;
  m_playerRace = player->race;
  m_playerClass = player->class_;
  
  setUseDefaults(false);
  setPlayerName(player->name);
  setPlayerLastName(player->lastName);
  setPlayerLevel(player->level);
  setPlayerRace(player->race);
  setPlayerClass(player->class_);
  
  messag = "Exp: " + Commanate(player->exp);
  
  // Due to the delayed decode, we must reset
  // maxplayer on zone and accumulate all totals.
  m_maxSTR += player->STR;
  m_maxSTA += player->STA;
  m_maxCHA += player->CHA;
  m_maxDEX += player->DEX;
  m_maxINT += player->INT;
  m_maxAGI += player->AGI;
  m_maxWIS += player->WIS;
  
  emit statChanged (LIST_STR, m_maxSTR, m_maxSTR);
  emit statChanged (LIST_STA, m_maxSTA, m_maxSTA);
  emit statChanged (LIST_CHA, m_maxCHA, m_maxCHA);
  emit statChanged (LIST_DEX, m_maxDEX, m_maxDEX);
  emit statChanged (LIST_INT, m_maxINT, m_maxINT);
  emit statChanged (LIST_AGI, m_maxAGI, m_maxAGI);
  emit statChanged (LIST_WIS, m_maxWIS, m_maxWIS);
  
  m_maxMana = calcMaxMana( m_maxINT,
			   m_maxWIS,
			   m_playerClass,
			   m_playerLevel
			   ) + m_plusMana;
  
  emit manaChanged(m_thePlayer.MANA, m_maxMana);  // need max mana

  uint32_t playerExp = player->exp;

  if (playerExp > m_currentExp)
    m_currentExp = playerExp;
  else
    playerExp = m_currentExp;
  
  m_maxExp = calc_exp(m_playerLevel,m_playerRace,m_playerClass);

  emit expChangedStr (messag);
  emit expChangedInt ( playerExp,
                       calc_exp(m_playerLevel-1, m_playerRace, m_playerClass),
                       calc_exp(m_playerLevel,   m_playerRace, m_playerClass)
		       );
  
  // Merge in our new skills...
  for (int a = 0; a < MAX_KNOWN_SKILLS; a++)
  {
    if ((m_playerSkills[a] == 255) || // not valid
	(player->skills[a] > m_playerSkills[a])) // or a higher value
      m_playerSkills[a] = player->skills[a];

    emit addSkill (a, m_playerSkills[a]);
  }

  // Merge in our new languages...
  for (int a = 0; a < MAX_KNOWN_LANGS; a++)
  {
    if ((m_playerLanguages[a] == 255) ||
	(player->languages[a] > m_playerLanguages[a]))
      m_playerLanguages[a] = player->languages[a];
    
    emit addLanguage (a, m_playerLanguages[a]);
  }

  m_validAttributes = true;
  m_validMana = true;
  m_validExp = true;

  // update the con table
  fillConTable();
}
Ejemplo n.º 10
0
int main(int argc,char **argv){
	
	unsigned int calc_mod = 0;
	double idata  = 0;
        double kdata  = 0;
        double result = 0;
	
	

	if(argc <2){
	
	 printf("enter cmd numbers must >= 2!!\n");
	 return -1;
}
       
       if(2 == argc){
  		argv++;	
		calc_mod = atoi(*argv);

	switch(calc_mod){
		case 5:
			printf("Calc PI is %f\n",calc_pi());
			break;

		case 14:
			result = calc_rand();
			printf("Calc rand result is %f\n", result);
			break;
		default:
			printf("Input abnormally\n");
			break;
}
}
	if(3 == argc){
		argv++;	
		calc_mod = atoi(*argv);
		argv++;    
            	idata = atof(*argv);
	switch(calc_mod){
		case 6:
			result = calc_sin((double) idata);
			printf("Calc sin (%f) result is %f\n",idata,result);			
				break;
		case 7: 
			result= calc_cos((double) idata);
			printf("Calc cos (%f) result is %f\n",idata,result);
				break;
		case 8:
			if(PI/2 == idata ||-PI/2 == idata){
				printf("Input abnormally\n");
				break; 			
			}
			result = calc_tan((double) idata);
			printf("Calc tan (%f) result is %f\n",idata,result);				
				break;
		case 9:
			result = calc_fabs((double) idata);
			printf("Calc tan (%f) result is %f\n",idata,result);
				break;
		case 10:
			result = calc_exp((double) idata);
			printf("Calc exp (%f) result is %f\n",idata,result);
				break;
		case 11:
			if(idata <= 0){
				printf("Input abnormally\n");
				break;
			}
			result = calc_ln((double) idata);
			printf("Calc ln (%f) result is %f\n",idata,result);
				break;
		case 12:
			if(idata <= 0){
				printf("Input abnormally\n");
				break;
			}
			result = calc_log10((double) idata);
			printf("Calc log10 (%f) result is %f\n",idata,result);
				break;	
		default:
			printf("Input abnormally\n");
				break;
}
}

	if(4 == argc){
		argv++;	
		calc_mod = atoi(*argv);
		argv++;    
            	idata = atof(*argv);
		argv++;
  		kdata = atof(*argv); 
	switch(calc_mod){
		case 1:
			result = calc_add(idata, kdata);   
	                printf("Calc add (%f + %f) result is %f\n", idata, kdata, result); 
			break;
		case 2:
  			result = calc_sub(idata, kdata);
 	                printf("Calc sub (%f - %f) result is %f\n", idata, kdata, result);     	    	    
    	 			break;
		case 3: 
			result = calc_mul(idata,kdata);
			printf("Calc mul (%f * %f) result is %f\n", idata, kdata, result);
				break;
		case 4:
			if(0 == kdata){
				printf("Input abnormaly\n");
				break;
			}	
			result = calc_div(idata,kdata);
			printf("Calc div (%f / %f) result is %f\n", idata, kdata, result);
		case 13:
			result = calc_pow(idata,kdata);
			printf("Calc pow (%f / %f) result is %f\n", idata, kdata, result);
				break;
		default:
			printf("Input abnormally\n");
				break;
} 
}
  
return 0;

}
Ejemplo n.º 11
0
void warped_raise(int cn,int base)
{
    int n,in,val;

    for (n=0; n<V_MAX; n++) {
        if (!skill[n].cost) continue;
        if (!ch[cn].value[1][n]) continue;

        switch(n) {
        case V_HP:
            val=max(10,base-(base/4));
            break;
        case V_ENDURANCE:
            val=max(10,base-(base/4));
            break;

        case V_WIS:
            val=max(10,base-(base/5));
            break;
        case V_INT:
            val=max(10,base-(base/10));
            break;
        case V_AGI:
            val=max(10,base-(base/10));
            break;
        case V_STR:
            val=max(10,base-(base/10));
            break;

        case V_HAND:
            val=max(1,base);
            break;
        case V_ARMORSKILL:
            val=max(1,(base/10)*10);
            break;
        case V_ATTACK:
            val=max(1,base);
            break;
        case V_PARRY:
            val=max(1,base);
            break;
        case V_IMMUNITY:
            val=max(1,base);
            break;

        case V_TACTICS:
            val=max(1,base-5);
            break;
        case V_WARCRY:
            val=max(1,base);
            break;
        case V_SURROUND:
            val=max(1,base-20);
            break;
        case V_BODYCONTROL:
            val=max(1,base-20);
            break;
        case V_SPEEDSKILL:
            val=max(1,base-10);
            break;
        case V_PERCEPT:
            val=max(1,base-10);
            break;
        case V_RAGE:
            val=max(1,base-5);
            break;
        case V_PROFESSION:
            val=min(60,max(1,base-5));
            break;

        default:
            val=max(1,base-40);
            break;
        }

        val=min(val,120);
        ch[cn].value[1][n]=val;
    }
    ch[cn].exp=ch[cn].exp_used=calc_exp(cn);
    ch[cn].level=exp2level(ch[cn].exp);

    ch[cn].prof[P_LIGHT]=min(30,ch[cn].value[1][V_PROFESSION]);
    ch[cn].prof[P_DARK]=min(30,ch[cn].value[1][V_PROFESSION]);
    if (ch[cn].value[1][V_PROFESSION]>30) {
        ch[cn].prof[P_ATHLETE]=min(30,ch[cn].value[1][V_PROFESSION]-30);
    }


    // create special equipment bonus to equal that of the average player
    in=create_item("equip1");
    for (n=0; n<5; n++) it[in].mod_value[n]=1+base/2.75;
    ch[cn].item[12]=in;
    it[in].carried=cn;

    in=create_item("equip2");
    for (n=0; n<4; n++) it[in].mod_value[n]=1+base/2.75;
    ch[cn].item[13]=in;
    it[in].carried=cn;

    in=create_item("equip3");
    for (n=0; n<5; n++) it[in].mod_value[n]=1+base/2.75;
    ch[cn].item[14]=in;
    it[in].carried=cn;

    in=create_item("armor_spell");
    ch[cn].item[15]=in;
    it[in].carried=cn;
    it[in].mod_value[0]=max(13,min(123,ch[cn].value[1][V_ARMORSKILL]+10))*20;

    in=create_item("weapon_spell");
    ch[cn].item[16]=in;
    it[in].carried=cn;
    it[in].mod_value[0]=max(13,min(123,ch[cn].value[1][V_HAND]+10));
}