Skip to content

Commit c1cf651

Browse files
authored
Фиксы андроидов (corvax-team#466)
* Update AndroidSystem.cs * Update AndroidSystem.cs
1 parent 0edbaf9 commit c1cf651

File tree

1 file changed

+28
-38
lines changed

1 file changed

+28
-38
lines changed

Content.Server/_WL/Android/AndroidSystem.cs

Lines changed: 28 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ public override void Initialize()
6565
SubscribeLocalEvent<AndroidComponent, ComponentStartup>(OnStartup);
6666

6767
SubscribeLocalEvent<AndroidComponent, AndroidChargeEvent>(OnDoAfter);
68-
SubscribeLocalEvent<AndroidComponent, MobStateChangedEvent>(OnMobstateChanged);
6968
SubscribeLocalEvent<AndroidComponent, BeforeDealHeatDamageFromLightBulbEvent>(OnGetLightBulb);
7069
SubscribeLocalEvent<AndroidComponent, RefreshMovementSpeedModifiersEvent>(OnModifiersRefresh);
7170
SubscribeLocalEvent<AndroidComponent, ItemToggledEvent>(OnToggle);
@@ -86,14 +85,6 @@ public override void Update(float frameTime)
8685
continue;
8786
}
8887

89-
/*
90-
if (!powerCellDrawComp.CanDraw)
91-
{
92-
_powerCell.SetDrawEnabled((uid, powerCellDrawComp), false);
93-
continue;
94-
}
95-
*/
96-
9788
_powerCell.SetDrawEnabled((uid, powerCellDrawComp), true);
9889
}
9990
}
@@ -204,20 +195,7 @@ private void OnGetLightBulb(EntityUid android, AndroidComponent comp, BeforeDeal
204195
args.Cancel();
205196
}
206197

207-
private void OnMobstateChanged(EntityUid android, AndroidComponent comp, MobStateChangedEvent args)
208-
{
209-
if (!TryComp<PowerCellDrawComponent>(android, out var powerCellDrawComp))
210-
return;
211-
212-
/*
213-
if (args.NewMobState == MobState.Dead)
214-
powerCellDrawComp.CanDraw = false;
215-
else powerCellDrawComp.CanDraw = true;
216-
*/
217-
}
218-
219-
private void CheckAndDoForcedSleep(EntityUid android,
220-
AndroidComponent comp)
198+
private void CheckAndDoForcedSleep(EntityUid android, AndroidComponent comp)
221199
{
222200
if (_gameTiming.CurTime < comp.NextTime)
223201
return;
@@ -227,12 +205,14 @@ private void CheckAndDoForcedSleep(EntityUid android,
227205
if (!_powerCell.TryGetBatteryFromSlot(android, out var battery))
228206
return;
229207

230-
if (battery == null)
231-
return;
232-
233-
if (battery.Value.Comp.ChargeRate / battery.Value.Comp.MaxCharge * 100 > 5f)
234-
return;
208+
if (battery == null || !_powerCell.HasDrawCharge(android))
209+
{
210+
DoForcedSleep(android, comp);
211+
}
212+
}
235213

214+
private void DoForcedSleep(EntityUid android, AndroidComponent comp)
215+
{
236216
if (_random.Prob(comp.ForcedSleepChance))
237217
{
238218
var duration = _random.Next(comp.SleepTimeMin, comp.SleepTimeMax);
@@ -246,11 +226,12 @@ private void OnVerb(EntityUid target, AndroidChargeTargetComponent comp, GetVerb
246226
return;
247227

248228
if (!HasComp<AndroidComponent>(args.User) ||
249-
!_powerCell.TryGetBatteryFromSlot(args.User, out var battery_ent))
229+
!_powerCell.TryGetBatteryFromSlot(args.User, out var batteryEnt) ||
230+
batteryEnt.Value.Comp.State == BatteryState.Full)
250231
return;
251232

252233
if (!TryComp<BatteryComponent>(args.Target, out var targetBattery) ||
253-
targetBattery.ChargeRate / targetBattery.MaxCharge * 100f <= 5f)
234+
targetBattery.State == BatteryState.Empty)
254235
return;
255236

256237
var doAfter = new DoAfterArgs(EntityManager, args.User, AndroidDoAfterChargeTime, new AndroidChargeEvent(), args.User, target, null)
@@ -275,21 +256,30 @@ private void OnDoAfter(EntityUid android, AndroidComponent comp, AndroidChargeEv
275256
if (args.Cancelled || args.Handled)
276257
return;
277258

278-
if (!_powerCell.TryGetBatteryFromSlot(android, out var batteryEnt)
279-
|| batteryEnt.Value.Comp.ChargeRate / batteryEnt.Value.Comp.MaxCharge * 100f >= 95f
280-
|| batteryEnt == null
281-
|| !TryComp<BatteryComponent>(args.Target, out var targetBattery)
282-
|| targetBattery.ChargeRate / targetBattery.MaxCharge * 100f <= 5f)
259+
if (!_powerCell.TryGetBatteryFromSlot(android, out var batteryEnt) || !TryComp<BatteryComponent>(batteryEnt, out var battery))
283260
{
284261
args.Handled = true;
285262
return;
286263
}
287264

288-
if (!EntityManager.TryGetComponent<BatteryComponent>(batteryEnt, out var battery))
265+
float chargeTransfer = Math.Clamp(comp.ChargeRate, 0f, battery.MaxCharge - _battery.GetCharge(batteryEnt.Value.Owner));
266+
267+
if (chargeTransfer == 0f
268+
|| !HasComp<BatteryComponent>(args.Target)
269+
|| _battery.GetCharge(args.Target.Value) < chargeTransfer * comp.TargetDecreaseFactor)
270+
{
271+
args.Handled = true;
289272
return;
273+
}
274+
275+
_battery.ChangeCharge((batteryEnt.Value, battery), chargeTransfer);
276+
_battery.ChangeCharge(args.Target.Value, -chargeTransfer * comp.TargetDecreaseFactor);
290277

291-
_battery.SetCharge((batteryEnt.Value, battery), battery.ChargeRate + comp.ChargeRate);
292-
_battery.SetCharge(args.Target.Value, targetBattery.ChargeRate - comp.ChargeRate * comp.TargetDecreaseFactor);
278+
if (battery.State == BatteryState.Full)
279+
{
280+
args.Handled = true;
281+
return;
282+
}
293283

294284
args.Repeat = true;
295285
}

0 commit comments

Comments
 (0)