feat,refac: 게임 로직 내 '랜덤'을 RandUtil을 활용하여 재설정

- 기존의 랜덤 코드는 deprecated 처리
- 서버 시작 시 랜덤하게 정해진 hiddenSeed를 활용
- 랜덤 생성 단위
  - 월 실행
  - 사령턴 실행 결과
  - 커맨드 실행 결과
  - 작위 보상
  - 부대장 생성
  - 유니크 획득 시도
  - 설문 조사
  - 장수 생성
  - NPC국 생성, NPC 생성, NPC의 토너먼트 베팅
  - 전투
  - 도시 점령
  - 자율 행동 선택
  - 랜덤 턴 변경
- 거래장, 토너먼트 등 구 랜덤 코드를 이용하는 잔여 코드 있음
This commit is contained in:
2022-05-17 03:46:59 +09:00
parent 2cb697f3dc
commit c5ceff6fb5
136 changed files with 1000 additions and 784 deletions
@@ -22,14 +22,14 @@ class che_격노시도 extends BaseWarUnitTrigger{
if($oppose->hasActivatedSkill('필살')){
$self->activateSkill('격노');
$oppose->deactivateSkill('회피');
if($self->isAttacker() && Util::randBool(1/2)){
if($self->isAttacker() && $self->rng->nextBool(1/2)){
$self->activateSkill('진노');
}
}
else if(Util::randBool(1/4)){
else if($self->rng->nextBool(1/4)){
$self->activateSkill('격노');
$oppose->deactivateSkill('회피');
if($self->isAttacker() && Util::randBool(1/2)){
if($self->isAttacker() && $self->rng->nextBool(1/2)){
$self->activateSkill('진노');
}
}
@@ -48,7 +48,7 @@ class che_계략시도 extends BaseWarUnitTrigger{
$magicTrialProb *= 3;
}
if(!Util::randBool($magicTrialProb)){
if(!$self->rng->nextBool($magicTrialProb)){
return true;
}
@@ -57,11 +57,11 @@ class che_계략시도 extends BaseWarUnitTrigger{
$magicSuccessProb = $oppose->getGeneral()->onCalcOpposeStat($general, 'warMagicSuccessProb', $magicSuccessProb);
if($oppose instanceof WarUnitCity){
$magic = Util::choiceRandom(array_keys(static::$tableToCity));
$magic = $self->rng->choice(array_keys(static::$tableToCity));
[$successDamage, $failDamage] = static::$tableToCity[$magic];
}
else{
$magic = Util::choiceRandom(array_keys(static::$tableToGeneral));
$magic = $self->rng->choice(array_keys(static::$tableToGeneral));
[$successDamage, $failDamage] = static::$tableToGeneral[$magic];
}
@@ -70,7 +70,7 @@ class che_계략시도 extends BaseWarUnitTrigger{
$self->activateSkill('계략시도', $magic);
if(Util::randBool($magicSuccessProb)){
if($self->rng->nextBool($magicSuccessProb)){
$self->activateSkill('계략');
$selfEnv['magic'] = [$magic, $successDamage];
}
@@ -26,7 +26,7 @@ class che_반계시도 extends BaseWarUnitTrigger{
return true;
}
if(!Util::randBool($this->prob)){
if(!$self->rng->nextBool($this->prob)){
return true;
}
@@ -35,7 +35,7 @@ class che_약탈시도 extends BaseWarUnitTrigger{
if($self->hasActivatedSkill('약탈불가')){
return true;
}
if(!Util::randBool($this->ratio)){
if(!$self->rng->nextBool($this->ratio)){
return true;
}
@@ -43,7 +43,7 @@ class che_저격발동 extends BaseWarUnitTrigger
$general->increaseVarWithLimit('atmos', $selfEnv['addAtmos'], 0, GameConst::$maxAtmosByWar);
if (!$oppose->hasActivatedSkill('부상무효') && $oppose instanceof WarUnitGeneral) {
$oppose->getGeneral()->increaseVarWithLimit('injury', Util::randRangeInt($selfEnv['woundMin'], $selfEnv['woundMax']), null, 80);
$oppose->getGeneral()->increaseVarWithLimit('injury', $self->rng->nextRangeInt($selfEnv['woundMin'], $selfEnv['woundMax']), null, 80);
}
$this->processConsumableItem();
@@ -36,7 +36,7 @@ class che_저격시도 extends BaseWarUnitTrigger{
if($self->hasActivatedSkill('저격불가')){
return true;
}
if(!Util::randBool($this->ratio)){
if(!$self->rng->nextBool($this->ratio)){
return true;
}
@@ -22,12 +22,12 @@ class che_저지시도 extends BaseWarUnitTrigger{
if($self->hasActivatedSkill('저지불가')){
return true;
}
$ratio = $self->getComputedAtmos() + $self->getComputedTrain();
if(Util::randBool($ratio / 400)){
if($self->rng->nextBool($ratio / 400)){
$self->activateSkill('특수', '저지');
}
return true;
}
}
@@ -19,13 +19,13 @@ class che_전투치료시도 extends BaseWarUnitTrigger{
if($self->hasActivatedSkill('치료불가')){
return true;
}
if(!Util::randBool(0.4)){
if(!$self->rng->nextBool(0.4)){
return true;
}
$self->activateSkill('치료');
return true;
}
}
@@ -22,13 +22,13 @@ class che_필살시도 extends BaseWarUnitTrigger{
return true;
}
if(!Util::randBool($self->getComputedCriticalRatio())){
if(!$self->rng->nextBool($self->getComputedCriticalRatio())){
return true;
}
$self->activateSkill('필살시도', '필살');
return true;
}
}
@@ -22,13 +22,13 @@ class che_회피시도 extends BaseWarUnitTrigger{
return true;
}
if(!Util::randBool($self->getComputedAvoidRatio())){
if(!$self->rng->nextBool($self->getComputedAvoidRatio())){
return true;
}
$self->activateSkill('회피시도', '회피');
return true;
}
}