MCPcopy Create free account
hub / github.com/DFHack/dfhack / adjust_unit_counters

Function adjust_unit_counters

plugins/timestream.cpp:429–461  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

427}
428
429static void adjust_unit_counters(df::unit * unit, int32_t timeskip) {
430 auto * c1 = &unit->counters;
431 decrement_counter(c1, &df::unit::T_counters::job_counter, timeskip);
432 decrement_counter(c1, &df::unit::T_counters::swap_counter, timeskip);
433 decrement_counter(c1, &df::unit::T_counters::winded, timeskip);
434 decrement_counter(c1, &df::unit::T_counters::stunned, timeskip);
435 decrement_counter(c1, &df::unit::T_counters::unconscious, timeskip);
436 decrement_counter(c1, &df::unit::T_counters::suffocation, timeskip);
437 decrement_counter(c1, &df::unit::T_counters::webbed, timeskip);
438 decrement_counter(c1, &df::unit::T_counters::soldier_mood_countdown, timeskip);
439 decrement_counter(c1, &df::unit::T_counters::pain, timeskip);
440 decrement_counter(c1, &df::unit::T_counters::nausea, timeskip);
441 decrement_counter(c1, &df::unit::T_counters::dizziness, timeskip);
442 auto * c2 = &unit->counters2;
443 decrement_counter(c2, &df::unit::T_counters2::paralysis, timeskip);
444 decrement_counter(c2, &df::unit::T_counters2::numbness, timeskip);
445 decrement_counter(c2, &df::unit::T_counters2::fever, timeskip);
446 decrement_counter(c2, &df::unit::T_counters2::exhaustion, timeskip * 3);
447 increment_counter(c2, &df::unit::T_counters2::hunger_timer, timeskip);
448 increment_counter(c2, &df::unit::T_counters2::thirst_timer, timeskip);
449 auto job = unit->job.current_job;
450 if (job && job->job_type == df::job_type::Rest)
451 decrement_counter(c2, &df::unit::T_counters2::sleepiness_timer, timeskip * 200);
452 else if (job && job->job_type == df::job_type::Sleep)
453 decrement_counter(c2, &df::unit::T_counters2::sleepiness_timer, timeskip * 19);
454 else
455 increment_counter(c2, &df::unit::T_counters2::sleepiness_timer, timeskip);
456 decrement_counter(c2, &df::unit::T_counters2::stomach_content, timeskip * 5);
457 decrement_counter(c2, &df::unit::T_counters2::stomach_food, timeskip * 5);
458 decrement_counter(c2, &df::unit::T_counters2::vomit_timeout, timeskip);
459 // stored_fat wanders about based on other state; we can likely leave it alone and
460 // not materially affect gameplay
461}
462
463// need to manually adjust job completion_timer values for jobs that are controlled by unit actions
464// with a timer of 1, which are destroyed immediately after they are created. longer-lived unit

Callers 1

adjust_unitsFunction · 0.85

Calls 2

decrement_counterFunction · 0.85
increment_counterFunction · 0.85

Tested by

no test coverage detected