Skip to content

Commit

Permalink
Merge branch 'develop' into macos-develop
Browse files Browse the repository at this point in the history
  • Loading branch information
backwardsEric committed Jul 20, 2024
2 parents 6523fe9 + 722c7c0 commit 275652d
Show file tree
Hide file tree
Showing 32 changed files with 172 additions and 173 deletions.
2 changes: 1 addition & 1 deletion src/action/mutation-execution.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ bool exe_mutation_power(PlayerType *player_ptr, PlayerMutationType power)
return alchemy(player_ptr);
case PlayerMutationType::GROW_MOLD:
for (DIRECTION i = 0; i < 8; i++) {
summon_specific(player_ptr, -1, player_ptr->y, player_ptr->x, lvl, SUMMON_MOLD, PM_FORCE_PET);
summon_specific(player_ptr, player_ptr->y, player_ptr->x, lvl, SUMMON_MOLD, PM_FORCE_PET);
}

return true;
Expand Down
34 changes: 17 additions & 17 deletions src/blue-magic/blue-magic-summon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ bool cast_blue_summon_cyber(PlayerType *player_ptr, bmc_type *bmc_ptr)
{
msg_print(_("サイバーデーモンを召喚した!", "You summon a Cyberdemon!"));
for (int k = 0; k < 1; k++) {
if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_CYBER, bmc_ptr->p_mode)) {
if (summon_specific(player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_CYBER, bmc_ptr->p_mode)) {
if (!bmc_ptr->pet) {
msg_print(_("召喚されたサイバーデーモンは怒っている!", "The summoned Cyberdemon is angry!"));
}
Expand All @@ -48,7 +48,7 @@ bool cast_blue_summon_monster(PlayerType *player_ptr, bmc_type *bmc_ptr)
{
msg_print(_("仲間を召喚した。", "You summon help."));
for (int k = 0; k < 1; k++) {
if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_NONE, bmc_ptr->p_mode)) {
if (summon_specific(player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_NONE, bmc_ptr->p_mode)) {
if (!bmc_ptr->pet) {
msg_print(_("召喚されたモンスターは怒っている!", "The summoned monster is angry!"));
}
Expand All @@ -64,7 +64,7 @@ bool cast_blue_summon_monsters(PlayerType *player_ptr, bmc_type *bmc_ptr)
{
msg_print(_("モンスターを召喚した!", "You summon monsters!"));
for (int k = 0; k < bmc_ptr->plev / 15 + 2; k++) {
if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_NONE, (bmc_ptr->p_mode | bmc_ptr->u_mode))) {
if (summon_specific(player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_NONE, (bmc_ptr->p_mode | bmc_ptr->u_mode))) {
if (!bmc_ptr->pet) {
msg_print(_("召喚されたモンスターは怒っている!", "The summoned monsters are angry!"));
}
Expand All @@ -80,7 +80,7 @@ bool cast_blue_summon_ant(PlayerType *player_ptr, bmc_type *bmc_ptr)
{
msg_print(_("アリを召喚した。", "You summon ants."));
if (summon_specific(
player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_ANT, (PM_ALLOW_GROUP | bmc_ptr->p_mode))) {
player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_ANT, (PM_ALLOW_GROUP | bmc_ptr->p_mode))) {
if (!bmc_ptr->pet) {
msg_print(_("召喚されたアリは怒っている!", "The summoned ants are angry!"));
}
Expand All @@ -95,7 +95,7 @@ bool cast_blue_summon_spider(PlayerType *player_ptr, bmc_type *bmc_ptr)
{
msg_print(_("蜘蛛を召喚した。", "You summon spiders."));
if (summon_specific(
player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_SPIDER, (PM_ALLOW_GROUP | bmc_ptr->p_mode))) {
player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_SPIDER, (PM_ALLOW_GROUP | bmc_ptr->p_mode))) {
if (!bmc_ptr->pet) {
msg_print(_("召喚された蜘蛛は怒っている!", "The summoned spiders are angry!"));
}
Expand All @@ -110,7 +110,7 @@ bool cast_blue_summon_hound(PlayerType *player_ptr, bmc_type *bmc_ptr)
{
msg_print(_("ハウンドを召喚した。", "You summon hounds."));
if (summon_specific(
player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HOUND, (PM_ALLOW_GROUP | bmc_ptr->p_mode))) {
player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HOUND, (PM_ALLOW_GROUP | bmc_ptr->p_mode))) {
if (!bmc_ptr->pet) {
msg_print(_("召喚されたハウンドは怒っている!", "The summoned hounds are angry!"));
}
Expand All @@ -125,7 +125,7 @@ bool cast_blue_summon_hydra(PlayerType *player_ptr, bmc_type *bmc_ptr)
{
msg_print(_("ヒドラを召喚した。", "You summon a hydras."));
if (summon_specific(
player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HYDRA, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HYDRA, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
if (!bmc_ptr->pet) {
msg_print(_("召喚されたヒドラは怒っている!", "The summoned hydras are angry!"));
}
Expand All @@ -140,7 +140,7 @@ bool cast_blue_summon_angel(PlayerType *player_ptr, bmc_type *bmc_ptr)
{
msg_print(_("天使を召喚した!", "You summon an angel!"));
if (summon_specific(
player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_ANGEL, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_ANGEL, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
if (!bmc_ptr->pet) {
msg_print(_("召喚された天使は怒っている!", "The summoned angel is angry!"));
}
Expand All @@ -155,7 +155,7 @@ bool cast_blue_summon_demon(PlayerType *player_ptr, bmc_type *bmc_ptr)
{
msg_print(_("混沌の宮廷から悪魔を召喚した!", "You summon a demon from the Courts of Chaos!"));
if (summon_specific(
player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_DEMON, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_DEMON, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
if (!bmc_ptr->pet) {
msg_print(_("召喚されたデーモンは怒っている!", "The summoned demon is angry!"));
}
Expand All @@ -170,7 +170,7 @@ bool cast_blue_summon_undead(PlayerType *player_ptr, bmc_type *bmc_ptr)
{
msg_print(_("アンデッドの強敵を召喚した!", "You summon an undead adversary!"));
if (summon_specific(
player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_UNDEAD, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_UNDEAD, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
if (!bmc_ptr->pet) {
msg_print(_("召喚されたアンデッドは怒っている!", "The summoned undead is angry!"));
}
Expand All @@ -185,7 +185,7 @@ bool cast_blue_summon_dragon(PlayerType *player_ptr, bmc_type *bmc_ptr)
{
msg_print(_("ドラゴンを召喚した!", "You summon a dragon!"));
if (summon_specific(
player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_DRAGON, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_DRAGON, (bmc_ptr->g_mode | bmc_ptr->p_mode))) {
if (!bmc_ptr->pet) {
msg_print(_("召喚されたドラゴンは怒っている!", "The summoned dragon is angry!"));
}
Expand All @@ -199,7 +199,7 @@ bool cast_blue_summon_dragon(PlayerType *player_ptr, bmc_type *bmc_ptr)
bool cast_blue_summon_high_undead(PlayerType *player_ptr, bmc_type *bmc_ptr)
{
msg_print(_("強力なアンデッドを召喚した!", "You summon a greater undead!"));
if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD,
if (summon_specific(player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD,
(bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
if (!bmc_ptr->pet) {
msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead is angry!"));
Expand All @@ -214,7 +214,7 @@ bool cast_blue_summon_high_undead(PlayerType *player_ptr, bmc_type *bmc_ptr)
bool cast_blue_summon_high_dragon(PlayerType *player_ptr, bmc_type *bmc_ptr)
{
msg_print(_("古代ドラゴンを召喚した!", "You summon an ancient dragon!"));
if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_DRAGON,
if (summon_specific(player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_DRAGON,
(bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
if (!bmc_ptr->pet) {
msg_print(_("召喚された古代ドラゴンは怒っている!", "The summoned ancient dragon is angry!"));
Expand All @@ -229,7 +229,7 @@ bool cast_blue_summon_high_dragon(PlayerType *player_ptr, bmc_type *bmc_ptr)
bool cast_blue_summon_amberite(PlayerType *player_ptr, bmc_type *bmc_ptr)
{
msg_print(_("アンバーの王族を召喚した!", "You summon a Lord of Amber!"));
if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_AMBERITES,
if (summon_specific(player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_AMBERITES,
(bmc_ptr->g_mode | bmc_ptr->p_mode | bmc_ptr->u_mode))) {
if (!bmc_ptr->pet) {
msg_print(_("召喚されたアンバーの王族は怒っている!", "The summoned Lord of Amber is angry!"));
Expand All @@ -246,7 +246,7 @@ bool cast_blue_summon_unique(PlayerType *player_ptr, bmc_type *bmc_ptr)
int count = 0;
msg_print(_("特別な強敵を召喚した!", "You summon a special opponent!"));
for (int k = 0; k < 1; k++) {
if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_UNIQUE,
if (summon_specific(player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_UNIQUE,
(bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE))) {
count++;
if (!bmc_ptr->pet) {
Expand All @@ -256,7 +256,7 @@ bool cast_blue_summon_unique(PlayerType *player_ptr, bmc_type *bmc_ptr)
}

for (int k = count; k < 1; k++) {
if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD,
if (summon_specific(player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_HI_UNDEAD,
(bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE))) {
count++;
if (!bmc_ptr->pet) {
Expand All @@ -277,7 +277,7 @@ bool cast_blue_summon_dead_unique(PlayerType *player_ptr, bmc_type *bmc_ptr)
BIT_FLAGS mode = bmc_ptr->g_mode | bmc_ptr->p_mode | PM_ALLOW_UNIQUE | PM_CLONE;

msg_print(_("特別な強敵を蘇らせた!", "You summon a special dead opponent!"));
if (summon_specific(player_ptr, (bmc_ptr->pet ? -1 : 0), player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_DEAD_UNIQUE, mode)) {
if (summon_specific(player_ptr, player_ptr->y, player_ptr->x, bmc_ptr->summon_lev, SUMMON_DEAD_UNIQUE, mode)) {
if (!bmc_ptr->pet) {
msg_print(_("蘇生されたユニーク・モンスターは怒っている!", "The summoned special dead opponent is angry!"));
}
Expand Down
34 changes: 17 additions & 17 deletions src/cmd-action/cmd-mane.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1052,7 +1052,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
max_cyber = 4;
}
for (k = 0; k < max_cyber; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_CYBER, mode);
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_CYBER, mode);
}
break;
}
Expand All @@ -1063,7 +1063,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("仲間を召喚した。", "You summon help."));
for (k = 0; k < 1; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_NONE, (mode | u_mode));
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_NONE, (mode | u_mode));
}
break;
}
Expand All @@ -1074,7 +1074,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("モンスターを召喚した!", "You summon monsters!"));
for (k = 0; k < 6; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_NONE, (mode | u_mode));
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_NONE, (mode | u_mode));
}
break;
}
Expand All @@ -1085,7 +1085,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("アリを召喚した。", "You summon ants."));
for (k = 0; k < 6; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_ANT, mode);
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_ANT, mode);
}
break;
}
Expand All @@ -1096,7 +1096,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("蜘蛛を召喚した。", "You summon spiders."));
for (k = 0; k < 6; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_SPIDER, mode);
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_SPIDER, mode);
}
break;
}
Expand All @@ -1107,7 +1107,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("ハウンドを召喚した。", "You summon hounds."));
for (k = 0; k < 4; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_HOUND, mode);
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_HOUND, mode);
}
break;
}
Expand All @@ -1118,7 +1118,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("ヒドラを召喚した。", "You summon hydras."));
for (k = 0; k < 4; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_HYDRA, mode);
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_HYDRA, mode);
}
break;
}
Expand All @@ -1129,7 +1129,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("天使を召喚した!", "You summon an angel!"));
for (k = 0; k < 1; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_ANGEL, mode);
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_ANGEL, mode);
}
break;
}
Expand All @@ -1140,7 +1140,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("混沌の宮廷から悪魔を召喚した!", "You summon a demon from the Courts of Chaos!"));
for (k = 0; k < 1; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_DEMON, (mode | u_mode));
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_DEMON, (mode | u_mode));
}
break;
}
Expand All @@ -1151,7 +1151,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("アンデッドの強敵を召喚した!", "You summon an undead adversary!"));
for (k = 0; k < 1; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_UNDEAD, (mode | u_mode));
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_UNDEAD, (mode | u_mode));
}
break;
}
Expand All @@ -1162,7 +1162,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("ドラゴンを召喚した!", "You summon a dragon!"));
for (k = 0; k < 1; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_DRAGON, (mode | u_mode));
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_DRAGON, (mode | u_mode));
}
break;
}
Expand All @@ -1173,7 +1173,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("強力なアンデッドを召喚した!", "You summon greater undead!"));
for (k = 0; k < 6; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_HI_UNDEAD, (mode | u_mode));
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_HI_UNDEAD, (mode | u_mode));
}
break;
}
Expand All @@ -1184,7 +1184,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("古代ドラゴンを召喚した!", "You summon ancient dragons!"));
for (k = 0; k < 4; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_HI_DRAGON, (mode | u_mode));
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_HI_DRAGON, (mode | u_mode));
}
break;
}
Expand All @@ -1195,7 +1195,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("アンバーの王族を召喚した!", "You summon Lords of Amber!"));
for (k = 0; k < 4; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_AMBERITES, (mode | PM_ALLOW_UNIQUE));
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_AMBERITES, (mode | PM_ALLOW_UNIQUE));
}
break;
}
Expand All @@ -1206,12 +1206,12 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("特別な強敵を召喚した!", "You summon special opponents!"));
for (k = 0; k < 4; k++) {
if (summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_UNIQUE, (mode | PM_ALLOW_UNIQUE))) {
if (summon_specific(player_ptr, target_row, target_col, plev, SUMMON_UNIQUE, (mode | PM_ALLOW_UNIQUE))) {
count++;
}
}
for (k = count; k < 4; k++) {
summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_HI_UNDEAD, (mode | u_mode));
summon_specific(player_ptr, target_row, target_col, plev, SUMMON_HI_UNDEAD, (mode | u_mode));
}
break;
}
Expand All @@ -1222,7 +1222,7 @@ static bool use_mane(PlayerType *player_ptr, MonsterAbilityType spell)
}
msg_print(_("特別な強敵を蘇生した!", "You summon special dead opponents!"));
for (auto k = 0; k < 4; k++) {
if (summon_specific(player_ptr, -1, target_row, target_col, plev, SUMMON_DEAD_UNIQUE, (mode | PM_ALLOW_UNIQUE | PM_CLONE))) {
if (summon_specific(player_ptr, target_row, target_col, plev, SUMMON_DEAD_UNIQUE, (mode | PM_ALLOW_UNIQUE | PM_CLONE))) {
count++;
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/cmd-item/cmd-usestaff.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ int staff_effect(PlayerType *player_ptr, int sval, bool *use_charge, bool powerf
case SV_STAFF_SUMMONING: {
const int times = randint1(powerful ? 8 : 4);
for (k = 0; k < times; k++) {
if (summon_specific(player_ptr, 0, player_ptr->y, player_ptr->x, player_ptr->current_floor_ptr->dun_level, SUMMON_NONE,
if (summon_specific(player_ptr, player_ptr->y, player_ptr->x, player_ptr->current_floor_ptr->dun_level, SUMMON_NONE,
(PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET))) {
ident = true;
}
Expand Down
Loading

0 comments on commit 275652d

Please sign in to comment.