Skip to content

Commit f32c9b7

Browse files
committed
Code review: Hunter and skinner have same behaviour. Time for hunter and skinner in case of active leather addon to finish their work is doubled to give the skinner the chance to reach the dead animal in time
1 parent 1443103 commit f32c9b7

File tree

3 files changed

+29
-11
lines changed

3 files changed

+29
-11
lines changed

libs/s25main/figures/nofSkinner.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,22 @@ void nofSkinner::WorkAborted()
5353
}
5454
}
5555

56+
void nofSkinner::AnimalLost()
57+
{
58+
animal = nullptr;
59+
60+
switch(state)
61+
{
62+
default: return;
63+
case State::SkinnerWalkingToCarcass: StartWalkingHome(); break;
64+
case State::SkinnerSkinningCarcass:
65+
// Remove Working-Event
66+
GetEvMgr().RemoveEvent(current_ev);
67+
StartWalkingHome();
68+
break;
69+
}
70+
}
71+
5672
unsigned short nofSkinner::GetCarryID() const
5773
{
5874
throw std::logic_error("Must not be called. Handled by custom DrawWalkingWithWare");

libs/s25main/figures/nofSkinner.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,5 @@ class nofSkinner : public nofWorkman
4646
GO_Type GetGOT() const final { return GO_Type::NofSkinner; }
4747

4848
void WorkAborted() override;
49+
void AnimalLost();
4950
};

libs/s25main/nodeObjs/noAnimal.cpp

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include "noAnimal.h"
66
#include "EventManager.h"
7+
#include "LeatherLoader.h"
78
#include "Loader.h"
89
#include "SerializedGameData.h"
910
#include "SoundManager.h"
@@ -159,23 +160,21 @@ void noAnimal::HandleEvent(const unsigned id)
159160
// Sterbe-Event
160161
case 2:
161162
{
162-
// we stay in dead state until skinner has done his work, otherwise he has no chance to reach the animal in
163-
// time
164-
if(skinner)
165-
current_ev = GetEvMgr().AddEvent(this, 30, 2);
166-
else
167-
{
168-
// nun verschwinden
169-
current_ev = GetEvMgr().AddEvent(this, 30, 3);
170-
state = State::Disappearing;
171-
}
163+
// nun verschwinden
164+
current_ev = GetEvMgr().AddEvent(this, 30, 3);
165+
state = State::Disappearing;
172166

173167
// Jäger ggf. Bescheid sagen (falls der es nicht mehr rechtzeitig schafft, bis ich verwest bin)
174168
if(hunter)
175169
{
176170
hunter->AnimalLost();
177171
hunter = nullptr;
178172
}
173+
if(skinner)
174+
{
175+
skinner->AnimalLost();
176+
skinner = nullptr;
177+
}
179178
}
180179
break;
181180
// Verschwind-Event
@@ -322,6 +321,7 @@ bool noAnimal::IsGettingSkinned() const
322321
void noAnimal::Skinned()
323322
{
324323
if(!hunter)
324+
// Remove decay event for animal because skinner has taken it
325325
GetEvMgr().RemoveEvent(current_ev);
326326
// Reset skinner
327327
skinner = nullptr;
@@ -402,7 +402,8 @@ void noAnimal::Die()
402402
if(ANIMALCONSTS[species].dead_id)
403403
{
404404
// Verwesungsevent
405-
current_ev = GetEvMgr().AddEvent(this, 300, 2);
405+
unsigned gf_length = leatheraddon::isAddonActive(*world) ? 600 : 300;
406+
current_ev = GetEvMgr().AddEvent(this, gf_length, 2);
406407
state = State::Dead;
407408
} else
408409
{

0 commit comments

Comments
 (0)