Skip to content

Commit

Permalink
replacing package "player_equipment" and "job_equipment_hair_change" …
Browse files Browse the repository at this point in the history
…with "sprite_change"

- renamed package "player_equipment" to "sprite_change"
- removed package "job_equipment_hair_change"
  • Loading branch information
ya4ept committed Dec 14, 2024
1 parent 99ef6b0 commit b0df35b
Show file tree
Hide file tree
Showing 4 changed files with 498 additions and 169 deletions.
109 changes: 27 additions & 82 deletions src/Network/Receive.pm
Original file line number Diff line number Diff line change
Expand Up @@ -4502,40 +4502,47 @@ sub cash_shop_buy_result {

}

sub player_equipment {
sub sprite_change {
my ($self, $args) = @_;

my ($sourceID, $type, $ID1, $ID2) = @{$args}{qw(sourceID type ID1 ID2)};
my $player = ($sourceID ne $accountID)? $playersList->getByID($sourceID) : $char;
my ($ID, $type, $value1, $value2) = @{$args}{qw(ID type value1 value2)};
my $player = ($ID ne $accountID)? $playersList->getByID($ID) : $char;
return unless $player;

if ($type == 0) {
# Player changed job
$player->{jobID} = $ID1;
$player->{jobID} = $value1;
message TF("%s changed Job to: %s\n", $player, $jobs_lut{$value1}), "parseMsg_statuslook";

} elsif ($type == 2) {
if ($ID1 ne $player->{weapon}) {
message TF("%s changed Weapon to %s\n", $player, itemName({nameID => $ID1})), "parseMsg_statuslook", 2;
$player->{weapon} = $ID1;
if ($value1 ne $player->{weapon}) {
message TF("%s changed Weapon to %s (%d)\n", $player, itemName({nameID => $value1}), $value1), "parseMsg_statuslook", 2;
$player->{weapon} = $value1;
}
if ($ID2 ne $player->{shield}) {
message TF("%s changed Shield to %s\n", $player, itemName({nameID => $ID2})), "parseMsg_statuslook", 2;
$player->{shield} = $ID2;
if ($value2 ne $player->{shield}) {
message TF("%s changed Shield to %s (%d)\n", $player, itemName({nameID => $value2}), $value2), "parseMsg_statuslook", 2;
$player->{shield} = $value2;
}
} elsif ($type == 3) {
message TF("%s changed Lower headgear to %s (%d)\n", $player, headgearName($ID1), $ID1), "parseMsg_statuslook";
$player->{headgear}{low} = $ID1;
message TF("%s changed Lower headgear to %s (%d)\n", $player, headgearName($value1), $value1), "parseMsg_statuslook";
$player->{headgear}{low} = $value1;
} elsif ($type == 4) {
message TF("%s changed Upper headgear to %s (%d)\n", $player, headgearName($ID1), $ID1), "parseMsg_statuslook";
$player->{headgear}{top} = $ID1;
message TF("%s changed Upper headgear to %s (%d)\n", $player, headgearName($value1), $value1), "parseMsg_statuslook";
$player->{headgear}{top} = $value1;
} elsif ($type == 5) {
message TF("%s changed Middle headgear to %s (%d)\n", $player, headgearName($ID1), $ID1), "parseMsg_statuslook";
$player->{headgear}{mid} = $ID1;
message TF("%s changed Middle headgear to %s (%d)\n", $player, headgearName($value1), $value1), "parseMsg_statuslook";
$player->{headgear}{mid} = $value1;
} elsif ($args->{part} == 6) {
message TF("%s changed Hair color to: %s (%d)\n", $player, $haircolors{$value1}, $value1), "parseMsg_statuslook";
$player->{hair_color} = $value1;
} elsif ($type == 9) {
if ($player->{shoes} && $ID1 ne $player->{shoes}) {
message TF("%s changed Shoes to: %s\n", $player, itemName({nameID => $ID1})), "parseMsg_statuslook", 2;
if ($player->{shoes} && $value1 ne $player->{shoes}) {
message TF("%s changed Shoes to: %s\n", $player, itemName({nameID => $value1})), "parseMsg_statuslook", 2;
}
$player->{shoes} = $ID1;
$player->{shoes} = $value1;
} elsif ($type == 12) {
message TF("%s changed Robe to: SPRITE_ROBE_ID=%d\n", $player, $value1, $value1), "parseMsg_statuslook";
} else {
error TF("%s changed unknown sprite type (%d), write about it to OpenKore developer\n", $player, $type), "parseMsg_statuslook";
}
}

Expand Down Expand Up @@ -7081,68 +7088,6 @@ sub item_upgrade {
}
}

sub job_equipment_hair_change {
my ($self, $args) = @_;
return unless changeToInGameState();

my $actor = Actor::get($args->{ID});
assertClass($actor, "Actor") if DEBUG;

if ($args->{part} == 0) {
# Job change
$actor->{jobID} = $args->{number};
message TF("%s changed job to: %s\n", $actor, $jobs_lut{$args->{number}}), "parseMsg/job", ($actor->isa('Actor::You') ? 0 : 2);

} elsif ($args->{part} == 3) {
# Bottom headgear change
message TF("%s changed bottom headgear to: %s\n", $actor, headgearName($args->{number})), "parseMsg_statuslook", 2 unless $actor->isa('Actor::You');
$actor->{headgear}{low} = $args->{number} if ($actor->isa('Actor::Player') || $actor->isa('Actor::You'));

} elsif ($args->{part} == 4) {
# Top headgear change
message TF("%s changed top headgear to: %s\n", $actor, headgearName($args->{number})), "parseMsg_statuslook", 2 unless $actor->isa('Actor::You');
$actor->{headgear}{top} = $args->{number} if ($actor->isa('Actor::Player') || $actor->isa('Actor::You'));

} elsif ($args->{part} == 5) {
# Middle headgear change
message TF("%s changed middle headgear to: %s\n", $actor, headgearName($args->{number})), "parseMsg_statuslook", 2 unless $actor->isa('Actor::You');
$actor->{headgear}{mid} = $args->{number} if ($actor->isa('Actor::Player') || $actor->isa('Actor::You'));

} elsif ($args->{part} == 6) {
# Hair color change
$actor->{hair_color} = $args->{number};
message TF("%s changed hair color to: %s (%s)\n", $actor, $haircolors{$args->{number}}, $args->{number}), "parseMsg/hairColor", ($actor->isa('Actor::You') ? 0 : 2);
}

#my %parts = (
# 0 => 'Body',
# 2 => 'Right Hand',
# 3 => 'Low Head',
# 4 => 'Top Head',
# 5 => 'Middle Head',
# 8 => 'Left Hand'
#);
#if ($part == 3) {
# $part = 'low';
#} elsif ($part == 4) {
# $part = 'top';
#} elsif ($part == 5) {
# $part = 'mid';
#}
#
#my $name = getActorName($ID);
#if ($part == 3 || $part == 4 || $part == 5) {
# my $actor = Actor::get($ID);
# $actor->{headgear}{$part} = $items_lut{$number} if ($actor);
# my $itemName = $items_lut{$itemID};
# $itemName = 'nothing' if (!$itemName);
# debug "$name changes $parts{$part} ($part) equipment to $itemName\n", "parseMsg";
#} else {
# debug "$name changes $parts{$part} ($part) equipment to item #$number\n", "parseMsg";
#}

}

# Leap, Snap, Back Slide... Various knockback
sub high_jump {
my ($self, $args) = @_;
Expand Down
4 changes: 2 additions & 2 deletions src/Network/Receive/ServerType0.pm
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ sub new {
'00BE' => ['stat_info', 'v C', [qw(type val)]], # was "stats_points_needed"
'00C0' => ['emoticon', 'a4 C', [qw(ID type)]],
'00C2' => ['users_online', 'V', [qw(users)]],
'00C3' => ['job_equipment_hair_change', 'a4 C2', [qw(ID part number)]],
'00C3' => ['sprite_change', 'a4 C2', [qw(ID type value1)]], # 8
'00C4' => ['npc_store_begin', 'a4', [qw(ID)]],
'00C6' => ['npc_store_info', 'v a*', [qw(len itemList)]],#-1
'00C7' => ['npc_sell_list', 'v a*', [qw(len itemsdata)]],
Expand Down Expand Up @@ -292,7 +292,7 @@ sub new {
'01D3' => ['sound_effect', 'Z24 C V a4', [qw(name type term ID)]],
'01D4' => ['npc_talk_text', 'a4', [qw(ID)]],
'01D6' => ['map_property2', 'v', [qw(type)]],
'01D7' => ['player_equipment', 'a4 C v2', [qw(sourceID type ID1 ID2)]],
'01D7' => ['sprite_change', 'a4 C v2', [qw(ID type value1 value2)]], # 11
# OLD' 01D8' => ['actor_exists', 'a4 v14 a4 x4 v x C a3 x2 C v', [qw(ID walk_speed opt1 opt2 option type hair_style weapon shield lowhead tophead midhead hair_color clothes_color head_dir guildID skillstatus sex coords act lv)]],
'01D8' => ['actor_exists', 'a4 v14 a4 a2 v2 C2 a3 C3 v', [qw(ID walk_speed opt1 opt2 option type hair_style weapon shield lowhead tophead midhead hair_color clothes_color head_dir guildID emblemID manner opt3 stance sex coords unknown1 unknown2 act lv)]], # standing
# OLD '01D9' => ['actor_connected', 'a4 v14 a4 x4 v x C a3 x2 v', [qw(ID walk_speed opt1 opt2 option type hair_style weapon shield lowhead tophead midhead hair_color clothes_color head_dir guildID skillstatus sex coords lv)]],
Expand Down
4 changes: 2 additions & 2 deletions src/Network/Receive/kRO/Sakexe_0.pm
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ sub new {
'00BE' => ['stat_info', 'v C', [qw(type val)]], # 5 was "stats_points_needed"
'00C0' => ['emoticon', 'a4 C', [qw(ID type)]], # 7
'00C2' => ['users_online', 'V', [qw(users)]], # 6
'00C3' => ['job_equipment_hair_change', 'a4 C2', [qw(ID part number)]], # 8
'00C3' => ['sprite_change', 'a4 C2', [qw(ID type value1)]], # 8
'00C4' => ['npc_store_begin', 'a4', [qw(ID)]], # 6
'00C6' => ['npc_store_info', 'v a*', [qw(len itemList)]],#-1
'00C7' => ['npc_sell_list', 'v a*', [qw(len itemsdata)]], # -1
Expand Down Expand Up @@ -307,7 +307,7 @@ sub new {
'01D3' => ['sound_effect', 'Z24 C V a4', [qw(name type term ID)]], # 35
'01D4' => ['npc_talk_text', 'a4', [qw(ID)]], # 6
'01D6' => ['map_property2', 'v', [qw(type)]], # 4
'01D7' => ['player_equipment', 'a4 C v2', [qw(sourceID type ID1 ID2)]], # 11 # TODO: inconsistent with C structs
'01D7' => ['sprite_change', 'a4 C v2', [qw(ID type value1 value2)]], # 11 # TODO: inconsistent with C structs
'01D8' => ['actor_exists', 'a4 v14 a4 a2 v2 C2 a3 C3 v', [qw(ID walk_speed opt1 opt2 option type hair_style weapon shield lowhead tophead midhead hair_color clothes_color head_dir guildID emblemID manner opt3 stance sex coords xSize ySize act lv)]], # 54 # standing
'01D9' => ['actor_connected', 'a4 v14 a4 a2 v2 C2 a3 C2 v', [qw(ID walk_speed opt1 opt2 option type hair_style weapon shield lowhead tophead midhead hair_color clothes_color head_dir guildID emblemID manner opt3 stance sex coords xSize ySize lv)]], # 53 # spawning
'01DA' => ['actor_moved', 'a4 v9 V v5 a4 a2 v2 C2 a6 C2 v', [qw(ID walk_speed opt1 opt2 option type hair_style weapon shield lowhead tick tophead midhead hair_color clothes_color head_dir guildID emblemID manner opt3 stance sex coords xSize ySize lv)]], # 60 # walking
Expand Down
Loading

0 comments on commit b0df35b

Please sign in to comment.