Мой вариант tome2 (sangband flavoured)

В этом разделе можно задавать вопросы о различных roguelike-играх

Модераторы: Sanja, Максим Кич

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Мой вариант tome2 (sangband flavoured)

Сообщение kipar » 10 мар 2011, 16:42

Да, про продажу факелов бесстрашия я как-то забыл, когда писал что созданные вещи продавать нельзя :) . Но в игре за алхимике мне больше всего не нравится бесконечный процесс накопления. Сначала 9к уровней надо копить очки на ArtifactCreation, потом арты качать (хотя до этой стадии я уже не доходил). А как Гондолин на 40-м уровне спасать?
Хотя твоя модификация видимо эти проблемы решает (можно будет качать что-нибудь кроме alchemy и weaponmastery), надо будет попробовать.

Кстати, есть еще вариант ТоМЕ(хотя там мало что от ТоМЕ осталось) - Portralis. Taм тоже можно свободно качать скиллы (хотя на практике там в идеале надо качать один скилл, а остальные набирать за счет эквипа), плюс интересная система мультиклассов (Abilities), другая система магии, огнестрельное оружие, ограниченная жизнь саммонов, нереально крутые крафтеры и т.д.. Правда напрямую эти фичи в твой вариант не добавишь, так что не знаю что и посоветовать.

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Мой вариант tome2 (sangband flavoured)

Сообщение oldbot » 10 мар 2011, 17:16

JustHarry писал(а):Я сайт ищу через гугль и захожу :newbie:
Сейчас уже и у меня открылся.
JustHarry писал(а):Реалтайм, потому что игра онлайновая...
Скорее потому что многопользовательская. Тот же crawl online пошаговый. Это понятно, т.к. ждать пока другие игроки на локации подумают, было бы совсем неинтересно. Но это уже совсем другая игра получается. Не рогалик, строго говоря.

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Мой вариант tome2 (sangband flavoured)

Сообщение oldbot » 10 мар 2011, 17:45

kipar писал(а):Да, про продажу факелов бесстрашия я как-то забыл, когда писал что созданные вещи продавать нельзя :) . Но в игре за алхимике мне больше всего не нравится бесконечный процесс накопления. Сначала 9к уровней надо копить очки на ArtifactCreation, потом арты качать (хотя до этой стадии я уже не доходил). А как Гондолин на 40-м уровне спасать?
Строго говоря, это и в оригинальном томе можно немного сгладить. Нужно при старте выбрать рандом квестов по максимуму, а при прохождении на квестах с потерянным мечом от героя-компаньона отказываться — тогда он учит одному на выбор из четырёх рандомных скилов. Но этого маловато. Я пробовал так алхимиком-майндкрафтером играть, не хватает.
kipar писал(а):Хотя твоя модификация видимо эти проблемы решает (можно будет качать что-нибудь кроме alchemy и weaponmastery), надо будет попробовать.
Я в первую очередь для этого её и делаю. Надоело начинать новым классом, чтобы попробовать очередной навык, потом чуть что не так прокачал, дальше идёшь — неиграбельно, и всё по новой. А ещё ведь навык начнёт себя проявлять по полной ближе к концу игры.
kipar писал(а):Кстати, есть еще вариант ТоМЕ(хотя там мало что от ТоМЕ осталось) - Portralis. Taм тоже можно свободно качать скиллы (хотя на практике там в идеале надо качать один скилл, а остальные набирать за счет эквипа), плюс интересная система мультиклассов (Abilities), другая система магии, огнестрельное оружие, ограниченная жизнь саммонов, нереально крутые крафтеры и т.д.. Правда напрямую эти фичи в твой вариант не добавишь, так что не знаю что и посоветовать.
Ща заценим. Может, вдохновит на что-то интересное, как санг на систему навыков вдохновил.

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Мой вариант tome2 (sangband flavoured)

Сообщение oldbot » 10 мар 2011, 17:50

kipar писал(а):Хотя твоя модификация видимо эти проблемы решает (можно будет качать что-нибудь кроме alchemy и weaponmastery), надо будет попробовать.
А, так что, вычленять патчи (у меня там ещё несколько своих мелочей, нужных толлько мне), выкладывать исходники? То, что в первом посте, неиграбельно.

Аватара пользователя
Fantom_019
Сообщения: 132
Зарегистрирован: 20 ноя 2008, 12:03

Re: Мой вариант tome2 (sangband flavoured)

Сообщение Fantom_019 » 10 мар 2011, 18:34

Я за исходники. Хочу хочу хочу!

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Мой вариант tome2 (sangband flavoured)

Сообщение oldbot » 10 мар 2011, 18:39

Хорошо, сейчас сделаю.

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Мой вариант tome2 (sangband flavoured)

Сообщение kipar » 10 мар 2011, 19:34

Я бы вообще не отказался от бинарников :) Что-то подсказывает мне, что при попытке самостоятельно скомпилить под mingw опять напорюсь на какой-нибудь трабл.

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Мой вариант tome2 (sangband flavoured)

Сообщение oldbot » 10 мар 2011, 19:39

Выкладываю патч. Кроме моих доработок и обхода бага с barehand, там ещё некоторые из патчей с killerbunnies.org (наиболее полезные из не включённых в апстрим).
Скрытый текст: ПОКАЗАТЬ

Код: Выделить всё

diff --git a/lib/edit/p_info.txt b/lib/edit/p_info.txt
index 1531f4f..a18976f 100644
--- a/lib/edit/p_info.txt
+++ b/lib/edit/p_info.txt
@@ -801,6 +801,79 @@ C:a:k:+1000:+300:Mindcraft
 C:a:k:+0:+200:Sneakiness
 C:a:k:+0:+100:Magic-Device
 
+C:N:6:Discoverer
+C:D:0:Discoverer is a "master of nothing" but could learn almost everything.
+C:D:0:The only exceptions are "random" magic (thaumaturgy and runecraft),
+C:D:0:dark magic (necromancy and demonology) and prayer.
+C:S:0:0:0:0:0:0:0:0
+C:K:0:0:0:0:0:0:0:0
+C:X:0:0:0:0:0:0:0:0
+C:B:4:30:3
+C:C:L:L:20000:2:40
+C:P:4:50
+C:E:0:0:0:0:0:0
+C:k:=0:=400:Air
+C:k:=0:=400:Alchemy
+C:k:=0:=400:Antimagic
+C:k:=0:=400:Archery
+C:k:=0:=400:Axe-mastery
+C:k:=0:=400:Backstab
+C:k:=0:=400:Barehand-combat
+C:k:=0:=400:Boomerang-mastery
+C:k:=0:=400:Boulder-throwing
+C:k:=0:=400:Bow-mastery
+C:k:=0:=400:Combat
+C:k:=0:=400:Conveyance
+C:k:=0:=400:Corpse-preservation
+C:k:=0:=400:Critical-hits
+C:k:=0:=400:Crossbow-mastery
+C:k:=0:=400:Demonology
+C:k:=0:=400:Disarming
+C:k:=0:=400:Divination
+C:k:=0:=400:Dodging
+C:k:=0:=400:Earth
+C:k:=0:=400:Fire
+C:k:=0:=400:Geomancy
+C:k:=0:=400:Hafted-mastery
+C:k:=0:=400:Magic
+C:k:=0:=400:Magic-Device
+C:k:=0:=400:Mana
+C:k:=0:=400:Meta
+C:k:=0:=400:Mimicry
+C:k:=0:=400:Mind
+C:k:=0:=400:Mindcraft
+C:k:=0:=400:Monster-lore
+C:k:=0:=400:Music
+C:k:=0:=400:Nature
+C:k:=0:=400:Polearm-mastery
+C:k:=0:=400:Possession
+C:k:=0:=400:Sling-mastery
+C:k:=0:=400:Sneakiness
+C:k:=0:=400:Sorcery
+C:k:=0:=400:Spell-power
+C:k:=0:=400:Spirituality
+C:k:=0:=400:Stealing
+C:k:=0:=400:Stealth
+C:k:=0:=400:Stunning-blows
+C:k:=0:=400:Summoning
+C:k:=0:=400:Sword-mastery
+C:k:=0:=400:Symbiosis
+C:k:=0:=400:Temporal
+C:k:=0:=400:Water
+C:k:=0:=400:Weaponmastery
+C:k:=0:=0:Thaumaturgy
+C:k:=0:=0:Runecraft
+C:k:=0:=0:Necromancy
+C:k:=0:=0:Demonology
+C:k:=0:=0:Prayer
+C:G:NO_GOD
+C:O:39:4:1d1
+
+C:a:N:Discoverer
+C:a:D:0:Discoverer is a "master of nothing" but could learn almost everything.
+C:a:D:0:The only exceptions are "random" magic (thaumaturgy and runecraft),
+C:a:D:0:dark magic (necromancy and demonology) and prayer.
+
 ###############################TEST###############################
 C:N:30:Test
 C:D:0:Simple testers.
@@ -1953,6 +2026,7 @@ M:C:Rogue
 M:C:Mage
 M:C:Priest
 M:C:Loremaster
+M:C:Discoverer
 #M:C:Test
 #M:C:Chaos-Warrior
 
diff --git a/src/birth.c b/src/birth.c
index 5f4eac5..635b8ac 100644
--- a/src/birth.c
+++ b/src/birth.c
@@ -3373,6 +3373,8 @@ void player_birth(void)
 	/* Finish skills */
 	p_ptr->skill_points = 0;
 	p_ptr->skill_last_level = 1;
+	p_ptr->exp_unspent = 0;
+	p_ptr->skill_points_total = 0;
 
 	recalc_skills(FALSE);
 
diff --git a/src/cmd7.c b/src/cmd7.c
index a8a1ce9..bd38a8f 100644
--- a/src/cmd7.c
+++ b/src/cmd7.c
@@ -1948,6 +1948,11 @@ void do_cmd_create_artifact(object_type *q_ptr)
 	char out_val[160];
 	char choice = 0;
 	bool_ lockpval = FALSE;
+	int lockpval_which = -1;
+	int lockpval_reason = 0;
+	static char *lockpval_reasons[2] = {
+		"don't know how", "aren't skilled enough"
+	};
 	int pval;
 	int oldpval;
 	energy_use = 100;
@@ -2005,7 +2010,14 @@ void do_cmd_create_artifact(object_type *q_ptr)
 			/* If this item has an ability that depends on pval which the player
 			 * cannot set, don't allow them to change the pval either. */
 			if ( a_select_flags[i].pval && flags_select[i])
+			{
 				lockpval = TRUE;
+				if (lockpval_which < 0)
+				{
+					lockpval_which = i;
+					lockpval_reason = 0;
+				}
+			}
 
 			/* Set the color and set-ablitity of this flag */
 			if ( flags_select[i] )
@@ -2019,8 +2031,15 @@ void do_cmd_create_artifact(object_type *q_ptr)
 			/* If the alchemist has not passed the skill level for this flag,
 			 Set this flag as unsettable.
 			 */
-			if ( flags_select[i])
+			if ( a_select_flags[i].pval && flags_select[i])
+			{
 				lockpval = TRUE;
+				if (lockpval_which < 0)
+				{
+					lockpval_which = i;
+					lockpval_reason = 1;
+				}
+			}
 			else
 				flags_select[i] = -4;
 		}
@@ -2129,7 +2148,9 @@ void do_cmd_create_artifact(object_type *q_ptr)
 				{
 					if ( lockpval )
 					{
-						msg_print("You cannot do that - you don't know how!");
+						msg_format("You %s to increase '%s'",
+							   lockpval_reasons[lockpval_reason],
+							   al_name + a_select_flags[lockpval_which].desc);
 						continue;
 					}
 					if (q_ptr->exp - exp < 0)
@@ -2144,7 +2165,9 @@ void do_cmd_create_artifact(object_type *q_ptr)
 				{
 					if ( lockpval )
 					{
-						msg_print("You cannot do that - you don't know how!");
+						msg_format("You %s to decrease '%s'",
+							   lockpval_reasons[lockpval_reason],
+							   al_name + a_select_flags[lockpval_which].desc);
 						continue;
 					}
 					pval--;
@@ -3639,7 +3662,7 @@ void do_cmd_alchemist(void)
 
 	while (TRUE)
 	{
-		if (!get_com("[P]ower, [R]echarge or [L]eech an item, [E]xtract essences, or recipe [B]ook?", &ch))
+		if (!get_com("[P]ower item, [R]echarge ([F]ully), [E]xtract ([A]ll) magic, or recipe [B]ook?", &ch))
 		{
 			ext = 0;
 			break;
@@ -3664,7 +3687,10 @@ void do_cmd_alchemist(void)
 			ext = 3;
 			break;
 		}
-		if (ch == 'L' || ch == 'l')
+		/* We'll be nice and catch 'l' here as well as 'a', for
+		 * people who trained their muscle memory on the original
+		 * '[L]eech' command. -dsb */
+		if (ch == 'L' || ch == 'l' || ch == 'A' || ch == 'a')
 		{
 			ext = 2;
 			repeat = 1;
@@ -3675,6 +3701,12 @@ void do_cmd_alchemist(void)
 			ext = 4;
 			break;
 		}
+		if (ch == 'F' || ch == 'f')
+		{
+			ext = 3;
+			repeat = 1;
+			break;
+		}
 	}
 
 	/**********Add a power*********/
@@ -4340,28 +4372,40 @@ void do_cmd_alchemist(void)
 		/* Take a turn */
 		energy_use = 100;
 
-		/* Destroy the essences */
-		(void)alchemist_items_check(o_ptr->tval, o_ptr->sval, 0, -1, TRUE);
+		do
+		{ /* Repeat (for full-recharge command) */
 
-		if ((o_ptr->tval == TV_STAFF) && (o_ptr->number > 1))
-		{
-			/* Unstack staves */
-			/* Get local object */
-			q_ptr = &forge2;
+			if (!alchemist_items_check(o_ptr->tval, o_ptr->sval, 0, 0, TRUE))
+			{
+				/* Out of essences; exit the loop. */
+				repeat = 0;
+				break;
+			}
 
-			/* Obtain a local object */
-			object_copy(q_ptr, o_ptr);
+			/* Destroy the essences */
+			(void)alchemist_items_check(o_ptr->tval, o_ptr->sval, 0, -1, TRUE);
 
-			/* Modify quantity */
-			q_ptr->number = 1;
+			if ((o_ptr->tval == TV_STAFF) && (o_ptr->number > 1))
+			{
+				/* Unstack staves */
+				/* Get local object */
+				q_ptr = &forge2;
+
+				/* Obtain a local object */
+				object_copy(q_ptr, o_ptr);
 
-			/* Unstack the used item */
-			o_ptr->number--;
+				/* Modify quantity */
+				q_ptr->number = 1;
+
+				/* Unstack the used item */
+				o_ptr->number--;
 
-			o_ptr = q_ptr;
-			carry_o_ptr = TRUE;
+				o_ptr = q_ptr;
+				carry_o_ptr = TRUE;
+			}
+			o_ptr->pval++;
 		}
-		o_ptr->pval++;
+		while (repeat == 1);
 	}
 	else if ( ext == 4)
 	{
diff --git a/src/loadsave.c b/src/loadsave.c
index f72c8c6..5f3efaa 100644
--- a/src/loadsave.c
+++ b/src/loadsave.c
@@ -315,6 +315,7 @@ static bool_ do_extra(int flag)
 	/* Dump the skills */
 	do_s16b(&p_ptr->skill_points, flag);
 	do_s16b(&p_ptr->skill_last_level, flag);
+	do_s16b(&p_ptr->skill_points_total, flag);
 	do_s16b(&p_ptr->melee_style, flag);
 	do_s16b(&p_ptr->use_piercing_shots, flag);
 
@@ -386,6 +387,7 @@ static bool_ do_extra(int flag)
 
 	do_s32b(&p_ptr->max_exp, flag);
 	do_s32b(&p_ptr->exp, flag);
+	do_s32b(&p_ptr->exp_unspent, flag);
 	do_u16b(&p_ptr->exp_frac, flag);
 	do_s16b(&p_ptr->lev, flag);
 
diff --git a/src/skills.c b/src/skills.c
index 36b4f58..a06fca8 100644
--- a/src/skills.c
+++ b/src/skills.c
@@ -375,6 +375,8 @@ void recalc_skills(bool_ init)
 		/* Redraw various info */
 		p_ptr->redraw |= (PR_WIPE | PR_BASIC | PR_EXTRA | PR_MAP);
 	}
+	if (get_skill(SKILL_HAND) && !get_skill(SKILL_MASTERY) && p_ptr->melee_style != SKILL_HAND) p_ptr->melee_style = SKILL_HAND;
+	select_default_melee();
 }
 
 /*
diff --git a/src/types.h b/src/types.h
index dd9c198..0ed020b 100644
--- a/src/types.h
+++ b/src/types.h
@@ -1857,6 +1857,8 @@ struct player_type
 
 	bool_ did_nothing;               /* True if the last action wasnt a real action */
 	bool_ leaving;                   /* True if player is leaving */
+	s32b exp_unspent;
+	s16b skill_points_total;
 };
 
 
diff --git a/src/xtra2.c b/src/xtra2.c
index f425acf..9246f95 100644
--- a/src/xtra2.c
+++ b/src/xtra2.c
@@ -3505,6 +3507,32 @@ bool_ set_food(int v)
 	return (TRUE);
 }
 
+void gain_skill_points(void) {
+	s16b s = p_ptr->skill_points_total;
+	s32b d;
+	if (s <= 100) d = 1;
+	else if (s <= 200) d = (s-60)/20;
+	else if (s <= 280) d = (s-147)/8;
+	else if (s <= 380) d = (s-209)/4;
+	else if (s <= 480) d = 3*(s-322)/4;
+	else if (s <= 540) d = 25*(s-451)/4;
+	else if (s <= 600) d = 50*(s-483)/4;
+	else if (s <= 720) d = 125*(s-540)/4;
+	else if (s <= 780) d = 85*(s-570)/2;
+	else if (s <= 840) d = 63*(s-602);
+	else if (s <= 920) d = 15000;
+	else d = 25000;
+	while (p_ptr->exp_unspent >= d) {
+		p_ptr->skill_points++;
+		s++;
+		p_ptr->exp_unspent -= d;
+	}
+	if (p_ptr->skill_points_total == s)
+		return;
+	p_ptr->skill_points_total = s;
+	cmsg_format(TERM_L_GREEN, "You can increase %d more skills.", p_ptr->skill_points);
+	p_ptr->redraw |= PR_STUDY;
+}
 
 /*
  * Advance experience levels and print experience
@@ -3540,6 +3568,7 @@ void check_experience(void)
 	/* Handle stuff */
 	handle_stuff();
 
+	gain_skill_points();
 
 	/* Lose levels while possible */
 	while ((p_ptr->lev > 1) &&
@@ -3590,17 +3619,6 @@ void check_experience(void)
 		/* Message */
 		cmsg_format(TERM_L_GREEN, "Welcome to level %d.", p_ptr->lev);
 
-		if (p_ptr->skill_last_level < p_ptr->lev)
-		{
-			s32b pts;
-			call_lua("exec_module_info", "(s)", "d", "skill_per_level", &pts);
-
-			p_ptr->skill_last_level = p_ptr->lev;
-			p_ptr->skill_points += pts;
-			cmsg_format(TERM_L_GREEN, "You can increase %d more skills.", p_ptr->skill_points);
-			p_ptr->redraw |= PR_STUDY;
-		}
-
 		/* Gain this level's abilities */
 		apply_level_abilities(p_ptr->lev);
 
@@ -3732,6 +3750,7 @@ void gain_exp(s32b amount)
 
 	/* Gain some experience */
 	p_ptr->exp += amount / num;
+	p_ptr->exp_unspent += amount / num;
 
 	/* Hook it! */
 	process_hooks(HOOK_PLAYER_EXP, "(d)", amount / num);
Последний раз редактировалось oldbot 10 мар 2011, 19:45, всего редактировалось 1 раз.

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Мой вариант tome2 (sangband flavoured)

Сообщение oldbot » 10 мар 2011, 19:41

kipar писал(а):Я бы вообще не отказался от бинарников :) Что-то подсказывает мне, что при попытке самостоятельно скомпилить под mingw опять напорюсь на какой-нибудь трабл.
Как я уже писал, у меня не только нет винды, но даже не на что её поставить. Возможно, Fantom_019 или ещё кто-то соберёт и выложит.
Последний раз редактировалось oldbot 11 мар 2011, 00:21, всего редактировалось 1 раз.

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Мой вариант tome2 (sangband flavoured)

Сообщение oldbot » 10 мар 2011, 23:56

Пропатчил сам, если что. Архив распаковать в каталоге tome2.
Вложения
tome2.zip
(155.55 КБ) 185 скачиваний

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Мой вариант tome2 (sangband flavoured)

Сообщение oldbot » 05 дек 2011, 20:33

Версия 0.2 :)
Исправлены ошибки:
- расовый модификатор экспы при получении очков навыков игнорировался;
- класс Discoverer обнулял расовые модификаторы навыков.
Изменения:
- количество получаемых очков навыков вычисляется теперь не по хитрым формулам, а напрямую исходя из 20 очков на уровень; после получения 50-го уровня очки навыков начисляются с той же скоростью, что и последние несколько уровней;
- при получении уровня количество очков навыков округляется вверх до 20*lev, чтобы нивелировать неточности при делении;
- при старте игры Discoverer теперь единственный рекомендуемый класс для всех рас; остальные классы пока оставлены в сравнительных целях (играть ими не рекомендуется: overskilled!).

Инструкция по сборке та же:
1. распаковать архив в каталоге с оригинальными исходниками tome2;
2. собрать по оригинальной инструкции.
tome2.zip
(155.8 КБ) 183 скачивания

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Мой вариант tome2 (sangband flavoured)

Сообщение oldbot » 07 дек 2011, 13:31

Вслед замечанию kipar-а. Если кто-то готов сделать и выложить виндовую сборку, буду весьма благодарен и постараюсь оперативно реагировать на все возможные проблемы (которых по идее быть не должно, т.к. изменения пока совсем незначительны).

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Мой вариант tome2 (sangband flavoured)

Сообщение kipar » 07 дек 2011, 18:43

А, ну я этим человеком и буду :lol: - для разнообразия под винду все собралось без проблем.
Так что откомпилированная под Windows версия:
tome_win32.zip
(2.47 МБ) 193 скачивания

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Мой вариант tome2 (sangband flavoured)

Сообщение oldbot » 07 дек 2011, 18:50

Спасибо! :)

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Мой вариант tome2 (sangband flavoured)

Сообщение kipar » 09 дек 2011, 19:48

Очки за уровень выдаются не при получении уровня, а после первого убийства на нем.

Ну и отвык я от ТоМЕ, младшие уровни кажутся халявой (тем более с халявными Sorcery и Symbiosis), а до старших уровней качаться долго. Надо бы какую-нибудь нетривиальную комбинацию скиллов придумать.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 38 гостей