feat: ChangeCity에 최대 내정 수치도 연산자로 바꿀 수 있도록

This commit is contained in:
2025-06-25 12:31:29 +00:00
parent 7ec6ca605f
commit 7b1eedb574
+10
View File
@@ -120,6 +120,16 @@ class ChangeCity extends \sammo\Event\Action{
return DB::db()->sqleval('ROUND(%b * %d, 0)', $keyMax, $value/100); return DB::db()->sqleval('ROUND(%b * %d, 0)', $keyMax, $value/100);
} }
if(Util::ends_with($key, '_max') && preg_match(self::REGEXP_MATH, $value, $matches)){
//key가 아예 최대치에 대한 값이면 연산은 결과값이 0보다만 높게.
$op = $matches[1];
$value = $matches[2];
if($op == '/' && $value == 0){
throw new \InvalidArgumentException('0으로 나눌 수 없습니다.');
}
return DB::db()->sqleval('greatest(0, ROUND(%b '.$op.' %i, 0))', $key, $value);
}
if(preg_match(self::REGEXP_MATH, $value, $matches)){ if(preg_match(self::REGEXP_MATH, $value, $matches)){
$op = $matches[1]; $op = $matches[1];
$value = $matches[2]; $value = $matches[2];