전투 구현 반영
This commit is contained in:
@@ -310,12 +310,16 @@ class WarUnit{
|
|||||||
return $this->activatedSkill[$skillName] ?? false;
|
return $this->activatedSkill[$skillName] ?? false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function activateSkill(string $skillName):bool{
|
function activateSkill(... $skillNames):bool{
|
||||||
$this->activatedSkill[$skillName] = true;
|
foreach($skillNames as $skillName){
|
||||||
|
$this->activatedSkill[$skillName] = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function deactivateSkill(string $skillName):bool{
|
function deactivateSkill(... $skillNames):bool{
|
||||||
$this->activatedSkill[$skillName] = false;
|
foreach($skillNames as $skillName){
|
||||||
|
$this->activatedSkill[$skillName] = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkPreActiveSkill():bool{
|
function checkPreActiveSkill():bool{
|
||||||
|
|||||||
@@ -474,17 +474,17 @@ class WarUnitGeneral extends WarUnit{
|
|||||||
$oppose = $this->getOppose();
|
$oppose = $this->getOppose();
|
||||||
$specialWar = $this->getSpecialWar();
|
$specialWar = $this->getSpecialWar();
|
||||||
$item = $this->getItem();
|
$item = $this->getItem();
|
||||||
|
$crewType = $this->getCrewType();
|
||||||
|
|
||||||
if(
|
if(
|
||||||
!$this->hasActivatedSkill('특수') &&
|
!$this->hasActivatedSkill('특수') &&
|
||||||
!$this->isAttacker &&
|
!$this->isAttacker &&
|
||||||
$this->getCrewTypeName() == '목우'
|
$crewType->name == '목우'
|
||||||
){
|
){
|
||||||
//XXX: 병종에 특수 스킬이 달려있도록 설정해야함
|
//XXX: 병종에 특수 스킬이 달려있도록 설정해야함
|
||||||
$ratio = $this->getComputedAtmos() + $this->getComputedTrain();
|
$ratio = $this->getComputedAtmos() + $this->getComputedTrain();
|
||||||
if(Util::randBool($ratio / 400)){
|
if(Util::randBool($ratio / 400)){
|
||||||
$this->activateSkill('특수');
|
$this->activateSkill('특수', '저지');
|
||||||
$this->activateSkill('저지');
|
|
||||||
$activated = true;
|
$activated = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -498,10 +498,10 @@ class WarUnitGeneral extends WarUnit{
|
|||||||
$oppose = $this->getOppose();
|
$oppose = $this->getOppose();
|
||||||
$specialWar = $this->getSpecialWar();
|
$specialWar = $this->getSpecialWar();
|
||||||
$item = $this->getItem();
|
$item = $this->getItem();
|
||||||
|
$crewType = $this->getCrewType();
|
||||||
|
|
||||||
if ($specialWar == 60 && $oppose->hasActivatedSkill('저지')) {
|
if ($specialWar == 60 && $oppose->hasActivatedSkill('저지')) {
|
||||||
$oppose->deactivateSkill('저지');
|
$oppose->deactivateSkill('특수', '저지');
|
||||||
$oppose->deactivateSkill('특수');
|
|
||||||
$activated = true;
|
$activated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -509,22 +509,53 @@ class WarUnitGeneral extends WarUnit{
|
|||||||
!$this->hasActivatedSkill('특수') &&
|
!$this->hasActivatedSkill('특수') &&
|
||||||
Util::randBool($this->getComputedCriticalRatio())
|
Util::randBool($this->getComputedCriticalRatio())
|
||||||
){
|
){
|
||||||
$this->activateSkill('특수');
|
$this->activateSkill('특수', '필살');
|
||||||
$this->activateSkill('필살');
|
|
||||||
$activated = true;
|
$activated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(
|
if(
|
||||||
!$this->hasActivatedSkill('특수') &&
|
!$this->hasActivatedSkill('특수') &&
|
||||||
Util::randBool($this->getComputedAvoidRatio())
|
Util::randBool($this->getComputedAvoidRatio())
|
||||||
){
|
){
|
||||||
$this->activateSkill('특수');
|
$this->activateSkill('특수', '회피시도', '회피');
|
||||||
$this->activateSkill('회피시도');
|
|
||||||
$this->activateSkill('회피');
|
|
||||||
$activated = true;
|
$activated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//계략
|
||||||
|
if($crewType->magicCoef){
|
||||||
|
$magicRatio = getGeneralIntel($general, true, true, true, false) / 100;
|
||||||
|
$magicRatio *= $crewType->magicCoef;
|
||||||
|
|
||||||
|
if($specialWar == 41){
|
||||||
|
$magicRatio += 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Util::randBool($magicRatio)){
|
||||||
|
$magicSuccessRatio = 0.3;
|
||||||
|
if($specialWar == 40){
|
||||||
|
$magicSuccessRatio += 0.2;
|
||||||
|
}
|
||||||
|
if($specialWar == 41){
|
||||||
|
$magicSuccessRatio += 0.2;
|
||||||
|
}
|
||||||
|
if($specialWar == 42){
|
||||||
|
$magicSuccessRatio += 0.1;
|
||||||
|
}
|
||||||
|
if($specialWar == 44){
|
||||||
|
$magicSuccessRatio += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$magic = Util::choiceRandom(['위보', '매복', '반목', '화계', '혼란']);
|
||||||
|
$this->activateSkill($magic);
|
||||||
|
if(Util::randBool($magicSuccessRatio)){
|
||||||
|
$this->activateSkill('계략');
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$this->activateSkill('계략실패');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $activated;
|
return $activated;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -534,6 +565,7 @@ class WarUnitGeneral extends WarUnit{
|
|||||||
$oppose = $this->getOppose();
|
$oppose = $this->getOppose();
|
||||||
$specialWar = $this->getSpecialWar();
|
$specialWar = $this->getSpecialWar();
|
||||||
$item = $this->getItem();
|
$item = $this->getItem();
|
||||||
|
$crewType = $this->getCrewType();
|
||||||
|
|
||||||
if($specialWar == 73 && Util::randBool(0.2)){
|
if($specialWar == 73 && Util::randBool(0.2)){
|
||||||
$this->activateSkill('치료');
|
$this->activateSkill('치료');
|
||||||
@@ -543,8 +575,7 @@ class WarUnitGeneral extends WarUnit{
|
|||||||
if($specialWar == 74 && $oppose->hasActivatedSkill('필살')){
|
if($specialWar == 74 && $oppose->hasActivatedSkill('필살')){
|
||||||
if($this->isAttacker){
|
if($this->isAttacker){
|
||||||
if(Util::randBool(1/3)){
|
if(Util::randBool(1/3)){
|
||||||
$this->activateSkill('진노');
|
$this->activateSkill('진노', '격노');
|
||||||
$this->activateSkill('격노');
|
|
||||||
$activated = true;
|
$activated = true;
|
||||||
}
|
}
|
||||||
else if(Util::randBool(1/4)){
|
else if(Util::randBool(1/4)){
|
||||||
@@ -590,6 +621,17 @@ class WarUnitGeneral extends WarUnit{
|
|||||||
$activated = true;
|
$activated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//계략
|
||||||
|
if(
|
||||||
|
$specialWar == 45 &&
|
||||||
|
$oppose->hasActivatedSkill('계략') &&
|
||||||
|
Util::randBool(0.3)
|
||||||
|
){
|
||||||
|
$this->activateSkill('반계');
|
||||||
|
$oppose->deactivateSkill('계략');
|
||||||
|
$activated = true;
|
||||||
|
}
|
||||||
|
|
||||||
return $activated;
|
return $activated;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user