Empire resources and vacation mode
* Modified the empire resources update to check for vacation mode and apply the modifier from vacation.cashDivider if necessary. * Some parts of the database need to be reloaded: -> 050-updates/015-empire-resources.sql
This commit is contained in:
parent
96670d45be
commit
cb65a6e643
3 changed files with 83 additions and 26 deletions
legacyworlds-server-data/db-structure/parts/050-updates
|
@ -29,30 +29,46 @@ AS $process_empire_resources_updates$
|
|||
UPDATE emp.resources _emp_resources
|
||||
|
||||
SET empres_possessed = CASE
|
||||
WHEN _emp_resources.empres_possessed + _pl_resources.pres_income - _pl_resources.pres_upkeep > 0 THEN
|
||||
_emp_resources.empres_possessed + _pl_resources.pres_income - _pl_resources.pres_upkeep
|
||||
WHEN _emp_resources.empres_possessed + _raw.res_delta > 0 THEN
|
||||
_emp_resources.empres_possessed + _raw.res_delta
|
||||
ELSE
|
||||
0
|
||||
END ,
|
||||
empres_owed = CASE
|
||||
WHEN _emp_resources.empres_possessed + _pl_resources.pres_income - _pl_resources.pres_upkeep < 0 THEN
|
||||
_pl_resources.pres_upkeep - _emp_resources.empres_possessed - _pl_resources.pres_income
|
||||
WHEN _emp_resources.empres_possessed + _raw.res_delta < 0 THEN
|
||||
-( _emp_resources.empres_possessed + _raw.res_delta )
|
||||
ELSE
|
||||
0
|
||||
END
|
||||
|
||||
FROM sys.updates _upd_sys
|
||||
INNER JOIN emp.empires_updates _upd_emp
|
||||
USING ( updtgt_id , updtype_id , update_id )
|
||||
INNER JOIN emp.planets _emp_planets
|
||||
ON empire_id = name_id
|
||||
INNER JOIN verse.planet_resources _pl_resources
|
||||
USING ( planet_id )
|
||||
FROM (
|
||||
SELECT _upd_emp.name_id AS empire_id , _pl_resources.resource_name_id ,
|
||||
( _pl_resources.pres_income - _pl_resources.pres_upkeep ) / ( CASE
|
||||
WHEN _vacation.account_id IS NULL THEN
|
||||
1
|
||||
ELSE
|
||||
sys.get_constant( 'vacation.cashDivider' )
|
||||
END ) AS res_delta
|
||||
|
||||
WHERE _upd_sys.update_last = $1
|
||||
AND _upd_sys.update_state = 'PROCESSING'
|
||||
AND _emp_resources.empire_id = _upd_emp.name_id
|
||||
AND _emp_resources.resource_name_id = _pl_resources.resource_name_id;
|
||||
FROM sys.updates _upd_sys
|
||||
INNER JOIN emp.empires_updates _upd_emp
|
||||
USING ( updtgt_id , updtype_id , update_id )
|
||||
INNER JOIN emp.planets _emp_planets
|
||||
ON empire_id = name_id
|
||||
INNER JOIN verse.planet_resources _pl_resources
|
||||
USING ( planet_id )
|
||||
INNER JOIN naming.empire_names _emp_name
|
||||
ON _emp_name.id = _upd_emp.name_id
|
||||
LEFT OUTER JOIN users.vacations _vacation
|
||||
ON _vacation.account_id = _emp_name.owner_id
|
||||
AND _vacation.status = 'PROCESSED'
|
||||
|
||||
WHERE _upd_sys.update_last = $1
|
||||
AND _upd_sys.update_state = 'PROCESSING'
|
||||
) _raw
|
||||
|
||||
WHERE _emp_resources.empire_id = _raw.empire_id
|
||||
AND _emp_resources.resource_name_id = _raw.resource_name_id;
|
||||
|
||||
$process_empire_resources_updates$ LANGUAGE SQL;
|
||||
|
||||
|
|
Reference in a new issue