Shoals Surfer
Posts: 267
Joined: Friday, 26th April 2013, 17:05
Abusing ashenzari
Is this correct or is there some part of coding which prevents this?
Ask fellow adventurers how to stay alive in the deep, dark, dangerous dungeon below, or share your own accumulated wisdom.
Shoals Surfer
Posts: 267
Joined: Friday, 26th April 2013, 17:05
Abyss Ambulator
Posts: 1111
Joined: Monday, 18th March 2013, 23:23
Ziggurat Zagger
Posts: 6454
Joined: Tuesday, 30th October 2012, 19:06
Tomb Titivator
Posts: 850
Joined: Wednesday, 25th April 2012, 03:07
Dis Charger
Posts: 2064
Joined: Wednesday, 9th January 2013, 19:44
Shoals Surfer
Posts: 329
Joined: Tuesday, 7th May 2013, 17:09
Ziggurat Zagger
Posts: 6454
Joined: Tuesday, 30th October 2012, 19:06
Dis Charger
Posts: 2064
Joined: Wednesday, 9th January 2013, 19:44
Ziggurat Zagger
Posts: 4055
Joined: Tuesday, 10th January 2012, 19:49
Ziggurat Zagger
Posts: 6454
Joined: Tuesday, 30th October 2012, 19:06
Amnesiac wrote:but you also gain +100% base exp from crosstraining. So this is what happens: lets say you train sblades and longblades at the same time. You gain 66.6% to SB and 33.3% LB is doubled by crosstraining, so you theoretically gain 133.3% exp then after you train both to 20, you transfer 90% of SB to LB, loosing 10% of those 66%, so that means that you make ~25% more exp. This doesn't sound like an easy thing to abuse and it works only on crosstrainable skills, though.
Dis Charger
Posts: 2064
Joined: Wednesday, 9th January 2013, 19:44
crate wrote:you don't gain xp by crosstraining and then transferring
this is specifically protected against in the code
Shoals Surfer
Posts: 267
Joined: Friday, 26th April 2013, 17:05
crate wrote:you don't gain xp by crosstraining and then transferring
this is specifically protected against in the code
Mines Malingerer
Posts: 48
Joined: Friday, 26th July 2013, 13:25
Ziggurat Zagger
Posts: 3163
Joined: Friday, 6th January 2012, 18:45
Abyss Ambulator
Posts: 1182
Joined: Tuesday, 13th September 2011, 20:34
Vaults Vanquisher
Posts: 451
Joined: Sunday, 11th September 2011, 00:07
Tomb Titivator
Posts: 850
Joined: Wednesday, 25th April 2012, 03:07
Ziggurat Zagger
Posts: 6454
Joined: Tuesday, 30th October 2012, 19:06
ajon wrote:It seems like everyone is focusing on putting a skill into its cross training counterpart. My question is if you train long blades, then use cross training bonus to train shortblades naturally, what happens if you transfer the longblades skill into say dodging, does you short blades skill now drop since you really only have X amount of exp into it and its not longer being multiplied, or does it stay at the skill it was at. IF this is the case, you made out since you spent less training short blades and only really lost 10% by transferring the longblades into a totally different skill. it seems if you go back and forth between transferring L and S blades to each other, it would most likely be a losing proposition.
Ziggurat Zagger
Posts: 6454
Joined: Tuesday, 30th October 2012, 19:06
daggaz wrote:Seems still mildly useful to me, if you do the following:
Play a kobold fighter, start with short blades with no intention to go stabbing.
Train shortblades up to 16 (easy to do with kobold aptitudes). Make use of the many, many shortblades in early dungeon that are often branded.
Find a good longblade, usually some time just after lair.
Crosstrain longblades, snag that nice bonus. Continue boosting shortblades if you need a higher mindelay for say, a triple sword.
Pick a magic school or something and transfer shortblades xp into it.
You still lose the 10%, but you got to step thru shortblades in the early game to great benefit, which makes training longblades significantly cheaper by the time you need them, and then you get to not have crappy shortblades on your non-stabber.
Abyss Ambulator
Posts: 1182
Joined: Tuesday, 13th September 2011, 20:34
Dis Charger
Posts: 2064
Joined: Wednesday, 9th January 2013, 19:44
Ziggurat Zagger
Posts: 3163
Joined: Friday, 6th January 2012, 18:45
Shoals Surfer
Posts: 329
Joined: Tuesday, 7th May 2013, 17:09
Shoals Surfer
Posts: 267
Joined: Friday, 26th April 2013, 17:05
Dis Charger
Posts: 2064
Joined: Wednesday, 9th January 2013, 19:44
ebarrett wrote:all this effort being put into trying to break the game would certainly be better used learning the game
Tomb Titivator
Posts: 850
Joined: Wednesday, 25th April 2012, 03:07
Ziggurat Zagger
Posts: 6454
Joined: Tuesday, 30th October 2012, 19:06
siprus wrote:I did some wizard mode testing. First i gave myself skill points with s to short blades. Then to long blades. Picked up ashenzari and started training Crosstraning away from short blades didn't decreases skill points in longblades. Though I'm not sure if it transferred same amount of xp as it would have done without long blades skill :/ I guess This could easily be achieved through some additonal wizard mode testing. Another thing i'm not sure if wizard mode xp is counted differently from regular xp.
Nevertheless I'd be interested to see how this is coded.
// Transfer skill points from one skill to another (Ashenzari transfer
// knowledge ability). If simu, it just simulates the transfer and don't
// change anything. It returns the new level of tsk.
int transfer_skill_points(skill_type fsk, skill_type tsk, int skp_max,
bool simu, bool boost)
{
ASSERT(!is_invalid_skill(fsk) && !is_invalid_skill(tsk));
const int penalty = 90; // 10% XP penalty
int total_skp_lost = 0; // skill points lost in fsk.
int total_skp_gained = 0; // skill points gained in tsk.
int fsk_level = you.skills[fsk];
int tsk_level = you.skills[tsk];
int fsk_points = you.skill_points[fsk];
int tsk_points = you.skill_points[tsk];
int fsk_ct_points = you.ct_skill_points[fsk];
int tsk_ct_points = you.ct_skill_points[tsk];
if (!simu && you.ct_skill_points[fsk] > 0)
dprf("ct_skill_points[%s]: %d", skill_name(fsk), you.ct_skill_points[fsk]);
// We need to transfer by small steps and updating skill levels each time
// so that cross/anti-training are handled properly.
while (total_skp_lost < skp_max
&& (simu || total_skp_lost < (int)you.transfer_skill_points))
{
int skp_lost = min(20, skp_max - total_skp_lost);
int skp_gained = skp_lost * penalty / 100;
float ct_bonus = crosstrain_bonus(tsk);
if (ct_bonus > 1 && fsk != tsk)
{
skp_gained *= ct_bonus;
you.ct_skill_points[tsk] += (1 - 1 / ct_bonus) * skp_gained;
}
else if (is_antitrained(tsk))
skp_gained /= ANTITRAIN_PENALTY;
ASSERT(you.skill_points[fsk] > you.ct_skill_points[fsk]);
int ct_penalty = skp_lost * you.ct_skill_points[fsk]
/ (you.skill_points[fsk] - you.ct_skill_points[fsk]);
ct_penalty = min<int>(ct_penalty, you.ct_skill_points[fsk]);
you.ct_skill_points[fsk] -= ct_penalty;
skp_lost += ct_penalty;
if (!simu)
{
skp_lost = min<int>(skp_lost, you.transfer_skill_points
- total_skp_lost);
}
total_skp_lost += skp_lost;
change_skill_points(fsk, -skp_lost, false);
// If reducing fighting would reduce your maxHP to 0 or below,
// we cancel the last step and end the transfer.
if (fsk == SK_FIGHTING && get_real_hp(false, true) <= 0)
{
change_skill_points(fsk, skp_lost, false);
total_skp_lost -= skp_lost;
if (!simu)
you.transfer_skill_points = total_skp_lost;
break;
}
total_skp_gained += skp_gained;
if (fsk != tsk)
{
change_skill_points(tsk, skp_gained, false);
if (you.skills[tsk] == 27)
break;
}
}
int new_level = you.skill(tsk, 10, !boost);
// Restore the level
you.skills[fsk] = fsk_level;
you.skills[tsk] = tsk_level;
if (simu)
{
you.skill_points[fsk] = fsk_points;
you.skill_points[tsk] = tsk_points;
you.ct_skill_points[fsk] = fsk_ct_points;
you.ct_skill_points[tsk] = tsk_ct_points;
}
else
{
// Perform the real level up
check_skill_level_change(fsk);
check_skill_level_change(tsk);
if ((int)you.transfer_skill_points < total_skp_lost)
you.transfer_skill_points = 0;
else
you.transfer_skill_points -= total_skp_lost;
dprf("skill %s lost %d points", skill_name(fsk), total_skp_lost);
dprf("skill %s gained %d points", skill_name(tsk), total_skp_gained);
if (you.ct_skill_points[fsk] > 0)
dprf("ct_skill_points[%s]: %d", skill_name(fsk), you.ct_skill_points[fsk]);
if (you.transfer_skill_points == 0 || you.skills[tsk] == 27)
ashenzari_end_transfer(true);
else
dprf("%d skill points left to transfer", you.transfer_skill_points);
}
return new_level;
}
Shoals Surfer
Posts: 267
Joined: Friday, 26th April 2013, 17:05
Shoals Surfer
Posts: 255
Joined: Sunday, 24th April 2011, 04:13
ajon wrote:Its not game breaking to understand how something works. In fact, its as you say, learning the game.
Dis Charger
Posts: 2064
Joined: Wednesday, 9th January 2013, 19:44
siprus wrote:So if I understood it correctly when you start untraining skill which gets crosstraining bonus you basically get 50% less skill points to your new skill, no matter the order you put skillpoints into that skill.
Actually way originally thought it would work was a bit silly XD
Shoals Surfer
Posts: 267
Joined: Friday, 26th April 2013, 17:05
Blades Runner
Posts: 546
Joined: Saturday, 7th May 2011, 02:43
Barkeep
Posts: 3890
Joined: Wednesday, 14th August 2013, 23:25
Location: USA
Dungeon Master
Posts: 4031
Joined: Thursday, 16th December 2010, 20:37
Location: France
siprus wrote:I did some wizard mode testing. First i gave myself skill points with s to short blades. Then to long blades.
Amnesiac wrote:because my eyes hurt from that code.
Dis Charger
Posts: 1949
Joined: Monday, 18th February 2013, 07:59
Location: France
Dungeon Master
Posts: 4031
Joined: Thursday, 16th December 2010, 20:37
Location: France
minmay wrote:But what if you train polearms to 20 and then train axes to 20 and then transfer away from polearms to get rid of the crosstraining on axes and then transfer away from axes???galehar wrote:As has been explained by others, you can't game the system by transferring from a crosstrained skill. It would just be reduced faster to compensate. The other idea of transferring from the higher level skill and still enjoy the crosstrain bonus to the lower level one should work, but I don't consider this to be an exploit.
mopl wrote:Someone also asked about using a manual and then transferring but it wasn't answered...
When worshipping Ash, I use to learn every skill which I have a manual for and then transfer to some useful skill, but is it worth it ? Or do I just lose the 10% XP ??
Ziggurat Zagger
Posts: 3163
Joined: Friday, 6th January 2012, 18:45
mopl wrote:When worshipping Ash, I use to learn every skill which I have a manual for and then transfer to some useful skill, but is it worth it ? Or do I just lose the 10% XP ??
Return to Dungeon Crawling Advice
Users browsing this forum: No registered users and 33 guests