1 2
7 8 9 10
Player (112)
Joined: 10/21/2010
Posts: 138
bad news: i can't get both moon coin AND light claw; my inventory is currently perfectly full, flute and gun powder will be put into storage in mana land before getting the drum, so i'd have then 1 slot free, which could either be the coin or the claw opening the storage one time more to take one of those out when i have room for it adds almost 900 frames to the total costs of the item, for a total of about 1800 frames; so i think it's best if i only take the light claw for zable, since there it basically hits a total of three bosses compared to only one with the coin against archdemon (plus the claw sort of kills half a boss fight with its roughly doubling damage) can drop the hammer as well.... on another note, if i'd go for a kill-em-all i'd miss lv18 after lugar by about 2,2-2,4k exp (measured by a simple test run); so i better be a bit more picky and go for 18-but-almost-19 at mhl addit: not sure, should i do this? Link to video i tend for a yes, because i find it very funny how bigieu does nothing while i collect one spirit a pack of twins, and then she just disappears!? she is just an ordinary npc (non-participating character) after all note: once does NOT work, because the moon forest entrance would still be blocked; that above does work though, just finished a non-tas'd test run with it at ~937k frames/4:20h finishing blow archdemon, considering how much time i wasted with not finding my way, killing almost everything in sight and lots of spell animations i can skip with tas, sub 4h seems reasonably possible
Player (112)
Joined: 10/21/2010
Posts: 138
small update (very busy lately); i took the 2x fire spirit version, and there there is just this (didn't know until a few minutes ago that it is possible): Link to video golems: Link to video
Player (112)
Joined: 10/21/2010
Posts: 138
next small-ish update, entrance moon forest, already got the moon coin; levels 16/16/15 1:55h total/1:47h in-game i still need about 6k additional exp from normal enemies, not yet sure which enemies/region is optimal for this on-the-way-grinding, or rather how many enemies i can still skip update: poor Lugar, Kevin has serious anger issues... Link to video
Former player
Joined: 5/4/2005
Posts: 502
Location: Onett, Eagleland
I only wish this site allowed english translation patches to be used on runs :(.
I think.....therefore I am not Barry Burton
Joined: 7/2/2007
Posts: 3960
Just hope someone makes some subtitles, I guess. Most of the text will be going by too fast to read anyway.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Player (112)
Joined: 10/21/2010
Posts: 138
we have two kinds of text boxes: 1. the long one-line text bar if i can push a button to determine when it closes, it hardly lasts 10 frames (1/6 second) after registering the button, short enough to easily miss 2. the big 3-line text boxes text flows at 1 symbol/space each frame; if it's full, it takes about 70 frames in both cases a translation patch wouldn't help much, you'd have to pause the video hundreds of times at the right frame if you wanted to read story stuff, so i agree that's better/easier to have/use subs than bother with a patch; might or not make them once i finish, though i've no idea how to note1: some dialog stays around longer because there are some animations triggered by the dialog box which have to finish first note2: i've yet to figure out/successfully reproduce how i got kevin to rapid punch lugar at the end; after he starts that he refuses any input and acts on his own w/out input but is still counted as player 1.
Player (112)
Joined: 10/21/2010
Posts: 138
Something is strange about Gildervine's AI, I can't get past 67xx/8245 health w/out suffering poison bubble or sleep flowers... no idea why... On an unrelated note, I once managed a double-kill kind scenario: Hawk+Riesz dead, Kevin low on life, only one enemy left; Kevin hits the enemy and knocks him down to 0 hp but gets hit as well, so he dies but the fight is won and Hawk+Riesz get revived at 1 hp, cue the game over screen. Might be material for game corruption or something - who knows.
Player (112)
Joined: 10/21/2010
Posts: 138
ok, 1.5k re-records later and no progress - i wish that was a joke (i hate gildervine), i give up on manual trying with him and wanna see how an iterative script fares against him; if it succeedes (which i doubt) it at least shows another nice contrast between "playing styles" - it feels stupid to use that, but i haven't found another cleaner way. i have not the faintest idea why gildervine makes such problems, just taking the sleep flower (he always targets riesz for whatever reason, since he started to threaten with casting it) wouldn't help since he'd soon after throw out two normal enemies and cast sleep flower or poison bubble AGAIN; and at exactly 50% hp he turns god mode on until all small enemies are gone and his head visible the following is mostly meant as a backup for myself in case i lose the script - though if anyone wants to use it, feel free to do so, but at own risk ofc the script is just a random-input-bot that starts at the current frame and saves results to savestate 8 and 9; slot 8 receives the result which lowered 7FFAF0 the most (gildervine's health in this case), slot 9 receives the try which lasted the longest (useful to check how far i can get w/out a spell) one try is aborted if one of the following condition is met: -someone in my party loses health -someone receives a negative status (e.g. sleep, poison) -for 80 frames 7FFAF0 didn't change a.k.a. no damage was dealt (changeable with failrange) -7F0032 becomes non-zero, this happens exactly for ALL message boxes - which means in this case a spell is announced -1000 frames passed (changeable with limit) more notes: -party states are from trangix's script -tries determines maximum number of iterations, once they are used up, the game is paused and state 8 loaded -L,R,select and start are not used because they'd freeze two characters for no gain -X is not used because i don't need the menu right now -the input is random, not systematically, else we'd never finish (16384 possibilities per frame, so 2.684.435.456 in 2 frames, no idea how much for 100 or even 1000, it just ebcomes unreasonable)
local csave=savestate.create(1)
local cmaster=savestate.create(9)
local dmaster=savestate.create(10)
local limit=1000
local tries=1000
local failrange=80

local frame=0
local hpA=0
local hpB=0
local hpC=0
local hpA2=0
local hpB2=0
local hpC2=0
local failcheck=0
local failcounter=0
local record=30000
local longest=0
local bossadr=0x7FFAF0

local inputA={}
local inputB={}

local eneX = 165
local eneY = 50

local nextlv = {0,30,67,125,204,363,602,945,1418,2049,2870,3914,5218,6819,8759,11080,13827,17049,20794,25115,30065,35701,42081,49265,57316,66298,76278,87324,99507,112899,127575,143611,161086,180080,200675,222956,247009,272921,300783,330686}

function getStatus(adr)
	local lv = memory.readbyte(adr + 0x21)
	local hp = memory.readword(adr + 0x2)
	local mh = memory.readword(adr + 0x12)
	local at = memory.readword(adr + 0x53)
	local di = memory.readword(adr + 0x5B)
	local ex = memory.readword(adr + 0xCF)
	local lu = memory.readbyte(adr + 0xD1)
	if ((lv>50) or (hp>mh) or (hp == 0) or (mh == 0) or (at == 0) or (at > 1000) or (di == 0) or (di > 500) or (ex == 0)) then
		return false
	else
		return lv,hp,mh,at,di,ex,lu
	end
end

function getChar(id)
	local charX = 0
	local charY = 0
	local atk,dif,exp,lv,nxt = 0
	local i,j
	for i = 0x7FE4F6 , 0x7FFFF6 , 0x10 do
		if (memory.readbyte(i) == memory.readbyte(i+0x3)) and (memory.readbyte(i) == id) then
			charX = memory.readword(i+0x29)
			charY = memory.readword(i+0x2d)
		end
	end
	for j = 0x7FEDD0 , 0x7FFFD0 , 0x100 do
		if (memory.readbyte(j) == memory.readbyte(j+0x20)) and (memory.readbyte(j) == id) then
			atk = memory.readbyte(j+0x73)
			dif = memory.readbyte(j+0x7B)
			exp = (memory.readbyte(j+0x2D)*50000) +memory.readbyte(j+0x2F)
			lv = memory.readbyte(j+0x41)
			nxt = nextlv[lv+2] - exp
		end
	end
	if (charX and charY and atk and dif and nxt) then
		return charX,charY,atk,dif,nxt
	end
end

function getEnemyList()
	local t = {}
	local i
	for i = 0 ,60, 1 do
		local tmp = memory.readbyte(0x7EB0A4+i*0x10)
		local num = memory.readbyte(0x7EB0A3+i*0x10)
		if ((tmp < 0x7f) and (tmp ~= 0)) then
			t[num] = tmp
		end
	end
	return t
end

function drawRiesz()
	local textX = 2
	local textY = 50
	if getChar(0x85) then
		local cX,cY,a,d,n = getChar(0x85)
		gui.text(textX,textY,string.format("Riesz (%4d,%4d)",cX,cY))
		gui.text(textX,textY+7,string.format("A:%3d D:%3d Next:%d",a,d,n))
	end
end

function drawKevin()
	local textX = 2
	local textY = 64
	if getChar(0x81) then
		local cX,cY,a,d,n = getChar(0x81)
		gui.text(textX,textY,string.format("Kevin (%4d,%4d)",cX,cY))
		gui.text(textX,textY+7,string.format("A:%3d D:%3d Next:%d",a,d,n))
	end
end

function drawHawk()
	local textX = 2
	local textY = 78
	if getChar(0x82) then
		local cX,cY,a,d,n = getChar(0x82)
		gui.text(textX,textY,string.format("Hawk  (%4d,%4d)",cX,cY))
		gui.text(textX,textY+7,string.format("A:%3d D:%3d Next:%d",a,d,n))
	end
end

function drawEnemy()
	local i = 0, j , adr
	local list = getEnemyList()
	for adr = 0x7FB0F0,0x7FFFF0,0x100 do
		local id = memory.readbyte(adr)
		if (id == list[3]) then
			if getStatus(adr) then
				local lv,hp,mh,at,di,ex,lu = getStatus(adr)
				local test = memory.readword(adr+0x33)
				gui.text(eneX,eneY+i*14,string.format("Lv.%02d %d/%d %x",lv+1,hp,mh,adr))
				gui.text(eneX,eneY+7+i*14,string.format("A:%d D:%d E:%d $:%d",at,di,ex,lu))
				i = i + 1
				list[3] = nil
			end
		elseif (id == list[4]) then
			if getStatus(adr) then
				local lv,hp,mh,at,di,ex,lu = getStatus(adr)
				local test = memory.readword(adr+0x33)
				gui.text(eneX,eneY+i*14,string.format("Lv.%02d %d/%d %x",lv+1,hp,mh,adr))
				gui.text(eneX,eneY+7+i*14,string.format("A:%d D:%d E:%d $:%d",at,di,ex,lu))
				i = i + 1
				list[4] = nil
			end
		elseif (id == list[5]) then
			if getStatus(adr) then
				local lv,hp,mh,at,di,ex,lu = getStatus(adr)
				local test = memory.readword(adr+0x33)
				gui.text(eneX,eneY+i*14,string.format("Lv.%02d %d/%d %x",lv+1,hp,mh,adr))
				gui.text(eneX,eneY+7+i*14,string.format("A:%d D:%d E:%d $:%d",at,di,ex,lu))
				i = i + 1
				list[5] = nil
			end
		end
	end
end

function drawTime()
	local d,h,m,day,hour,min,hm
	local color = "white"
	local dlist = {"Sun.","Mon.","Tue.","Wed.","Thr.","Fri.","Sat."}
	d = memory.readbyte(0x7E2FFA)
	h = memory.readbyte(0x7E2FFB)
	if ((h<5>12)) then color = "gray" end
	m = memory.readword(0x7E2FFC)
	hm = (h *32 + m)  *1440 / 16 / 32
	if (dlist[d+1]) then 
		day = dlist[d+1]
		hour = hm / 60
		min = hm % 60
		gui.text(210,0,string.format("%s %02d:%02d",day,hour,min),color)
	end
end

function drawAlert()
	local a, b, c
	local color = "white"
	a = memory.readbyte(0x7FEDE9)
	b = memory.readbyte(0x7E5F91)
	c = memory.readbyte(0x7E5F94)
	d = record
	gui.text(190,10,string.format("Value: %d",a),color)
	gui.text(190,20,string.format("Seed: %d, %d",b,c),color)
	gui.text(190,30,string.format("Health: %d",d),color)
end




savestate.load(csave)
savestate.save(cmaster)
record=memory.readdword(bossadr)

while(true) do
	frame=limit
	hpA=memory.readbyte(0x7FEDF2)
	hpB=memory.readbyte(0x7FF0F2)
	hpC=memory.readbyte(0x7FF3F2)
	hpA2=memory.readbyte(0x7FEDF3)
	hpB2=memory.readbyte(0x7FF0F3)
	hpC2=memory.readbyte(0x7FF3F3)
	failcheck=memory.readdword(bossadr)
	failcounter=failrange

	while frame>0 do
		drawRiesz()
		drawKevin()
		drawHawk()
		drawEnemy()
		drawTime()
		drawAlert()
		inputA={}
		inputB={}
		if math.random(1000)<620 then
			inputA.A=1
		end
		if math.random(1000)<540 then
			inputB.A=1
		end
		if math.random(1000)<250 then
			inputA.B=1
		end
		if math.random(1000)<280 then
			inputB.B=1
		end
		if math.random(1000)<10 then
			inputA.Y=1
		end
		if math.random(1000)<10 then
			inputB.Y=1
		end
		if math.random(1000)<75 then
			inputA.left=1
		else if math.random(900)<80 then
			inputA.right=1
			end
		end
		if math.random(1000)<100 then
			inputB.left=1
		else if math.random(900)<100 then
			inputB.right=1
			end
		end
		if math.random(1000)<75 then
			inputA.up=1
		else if math.random(900)<75 then
			inputA.down=1
			end
		end
		if math.random(1000)<100 then
			inputB.up=1
		else if math.random(900)<100 then
			inputB.down=1
			end
		end

		joypad.set(1,inputA)
		joypad.set(2,inputB)  
		frame=frame-1
		snes9x.frameadvance()

		if failcheck==memory.readdword(bossadr) then
			failcounter=failcounter-1
			if failcounter==0 then
				frame=limit
				if memory.readdword(bossadr)<record then
					record=memory.readdword(bossadr)
					savestate.save(cmaster)
				end
				if longest<movie.framecount() then
				longest=movie.framecount()
					savestate.save(dmaster)
				end
				savestate.load(csave)
				tries=tries-1
				failcounter=failrange
			end
		else
			failcheck=memory.readdword(bossadr)
			failcounter=failrange
		end
		if hpA~=memory.readbyte(0x7FEDF2) or hpB~=memory.readbyte(0x7FF0F2) or hpC~=memory.readbyte(0x7FF3F2) then
			frame=limit
			if memory.readdword(bossadr)<record then
				record=memory.readdword(bossadr)
				savestate.save(cmaster)
			end
			if longest<movie.framecount() then
				longest=movie.framecount()
				savestate.save(dmaster)
			end
			savestate.load(csave)
			tries=tries-1
			failcounter=failrange
		end
		if hpA2~=memory.readbyte(0x7FEDF3) or hpB2~=memory.readbyte(0x7FF0F3) or hpC2~=memory.readbyte(0x7FF3F3) then
			frame=limit
			if memory.readdword(bossadr)<record then
				record=memory.readdword(bossadr)
				savestate.save(cmaster)
			end
			if longest<movie.framecount() then
				longest=movie.framecount()
				savestate.save(dmaster)
			end
			savestate.load(csave)
			tries=tries-1
			failcounter=failrange
		end
		if memory.readbyte(0x7FEE22)~=0 or memory.readbyte(0x7FF122)~=0 or memory.readbyte(0x7FF422)~=0 then
			frame=limit
			if memory.readdword(bossadr)<record then
				record=memory.readdword(bossadr)
				savestate.save(cmaster)
			end
			if longest<movie.framecount() then
				longest=movie.framecount()
				savestate.save(dmaster)
			end
			savestate.load(csave)
			tries=tries-1
			failcounter=failrange
		end
		if memory.readbyte(0x7F0032)~=0 then
			frame=limit
			if memory.readdword(bossadr)<record then
				record=memory.readdword(bossadr)
				savestate.save(cmaster)
			end
			if longest<movie.framecount() then
				longest=movie.framecount()
				savestate.save(dmaster)
			end
			savestate.load(csave)
			tries=tries-1
			failcounter=failrange
		end
		if frame == 1 then
			frame=limit
			if memory.readdword(bossadr)<record then
				record=memory.readdword(bossadr)
				savestate.save(cmaster)
			end
			if longest<movie.framecount() then
				longest=movie.framecount()
				savestate.save(dmaster)
			end
			savestate.load(csave)
			tries=tries-1
			failcounter=failrange
		end
		if tries==0 then
			savestate.load(cmaster)
			snes9x.pause()
		end
	end
end
addendum: was quoted already way earlier in this thread:
Meeple Lard's technical guide on GameFAQs wrote:
Luck does stuff in battle. That's right, it does. There are certain enemies (non bosses) that can use Magic and Level 2/3 techs. They'll either use them as Counter Attacks or just on a Whim. Now, with the Single Target attacks, the Higher Luck the character has, the less likely they are to be hit with a spell like that.
this has sadly to be taken too literally - luck does NOT affect bosses at all; i used a cheat to set everyone's luck to 1 while playing back all my previous boss-fights - all went as if nothing changed
Player (112)
Joined: 10/21/2010
Posts: 138
Gilderb**ch honestly... 160k re-records for that!? Link to video minor explanation: at 50% health gildervine turns unvulnerable if any normal enemies are on screen, they don't even have to be alive so... let's just kill it quick and be done? i wish... that bug watched to much anime as it refuses to die for ~15 seconds after it's been killed; i needed to apply more pressure to the game/system to stop gilder at that point and way less to let that bug die - plain impossible, so here goes the first spell; and the bug takes long to die... sleep flower is part of gilder removing his god mode, can't do anything about it pollen attack... ~70k re-records (mostly via bot) and couldn't get past it magic shield... 25% health skill, no time after the last spell to do something sleep flower at 200 health left... another ~40k re-records here... really, does he start so high on priority? i know that spells/skills get a set priority when the character "decides" to use it, and then the priority increases as time passes; gilder seems to start/increase unreasonably high there... Riesz - as useful as ever; stands around, gets poison bubbled, put to sleep, gets up and immediatly put to sleep again at least he got a deserved sprite mess-up - a bit cartoony cross-popping-veins i hope it's not only for my emulator though 75% of all re-records so far for one boss, one boss that is normally not even a real threat just annoying /rant
Former player
Joined: 9/1/2005
Posts: 803
Looking pretty solid there. While I'm sure you've thought about this already, did you consider the possibility of grabbing a considerable amount of moon coins (chest drop) while you were in the forest getting luna (or possibly on your way to Dolan)? The 1/5hp down effect works on bosses, so I imagine it would be extremely handy as a timesaver on some of the bosses that have rather high amounts of hp, or are just a pain to kill. Either way, keep it up, it's looking good.
Player (112)
Joined: 10/21/2010
Posts: 138
Atma wrote:
Looking pretty solid there.
Honestly, the Gildervine is the worst battle i have done so far; it seems the more re-records a boss takes, the worse it will be at the end. Compare: G-vine with 160k re-records: gets off 5 spells Gorva with a few hundred: no spells, no hit (my personal favorite battle btw)
Atma wrote:
While I'm sure you've thought about this already, did you consider the possibility of grabbing a considerable amount of moon coins (chest drop) while you were in the forest getting luna (or possibly on your way to Dolan)? The 1/5hp down effect works on bosses, so I imagine it would be extremely handy as a timesaver on some of the bosses that have rather high amounts of hp, or are just a pain to kill.
I already got one, it will be used against the final boss, all others have to low total health to justify getting one; i think it costs about 1k frames total to wait for a chest to appear, to manipulate the drop(hopefully 0) then later at the boss fight open the menu and use the coin and for the animation; that kind of assumes the enemy killing is for free, which it is not; and that is against the MAXIMUM of 3600 frames (one minute) the boss battle will be active (substract buff-times etc from it) for all but the last two bosses; actually way less considering how over-powered Kevin will be after his glitch before the next boss (boosted to max atk i mean; need flammie for it, that's way it's not been done so far). Special cases: Dangaard (thunder god beast) - insanely high health this "early" in the game, but in reality it's 4 separat boss battles in a row with very low health each (5-6k), would be nice if one coin counted for all of these, but it doesn't. Would probably no even then be worth it. Bigieu - almost triple the previous bosses health, could be worth it, but i go with one ice saber on Kevin and Hawk each against her, this should still exceed the damage i can do with a 1k frame investment for a coin. Archdemon - slightly more health than bigieu, but no weakness (he only absorbs certain elements, but is weak to nothing, at least not to a saber'd attack), so basically cuts my damage in half - definitly coin-worthy. I hope that was not too much details. xD
Atma wrote:
Either way, keep it up, it's looking good.
thanks edit: wow, after 4 months i finally advance from page 9 to 10
Player (112)
Joined: 10/21/2010
Posts: 138
at mhl - class changing, want to rethink/test my plans regarding who changes at all, atm i think only Hawk should get a cc costs: ~30 seconds for each cc, and increased damage taken from spells
Joined: 9/12/2010
Posts: 4
praetarius3 wrote:
at mhl - class changing, want to rethink/test my plans regarding who changes at all, atm i think only Hawk should get a cc costs: ~30 seconds for each cc, and increased damage taken from spells
i would recommend class changing them all, not only you gain damage output and several new skills, but your stats automatically max out to highest possible stats your previous classes attains. so i dont see how you could get increased damage taken from spells since your int score is automatically maxed out of previous classes which translates into higher mag def.
Joined: 7/2/2007
Posts: 3960
He's glitching the heck out of the game, you do know that right? Kevin's strength stat is glitched way beyond what would be achievable via levelups. As for magic defense, there's a multiplier in the game code that kicks in if the character has changed class. In other words, the magic defense equation is different for base classes vs. upgraded classes.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Player (112)
Joined: 10/21/2010
Posts: 138
Derakon wrote:
He's glitching the heck out of the game, you do know that right? Kevin's strength stat is glitched way beyond what would be achievable via levelups.
small nitpick here; his str isn't touched at all - which is currently my main problem*; only the atk will be altered normally base atk = str * weapon multiplier + minor constants from weapons with glitch it'll simply be base atk = maximum allowed (370) totally independent from str, or actually slightly less, depends on how often i repeat the glitch specifically: i start with 114 atk, each repetition increases the current atk by 1/7 114 -> 130 first glitch 130 -> 148 second 148 -> 169 third ... 251 -> 286 seventh 286 -> 326 eight 326 -> 372 ninth, capped down to 370, fits extremely well 370 -> 370 tenth werewolf's atk buff and the atk-up spell affect a third different value actually, so it goes up a bit more
Derakon wrote:
As for magic defense, there's a multiplier in the game code that kicks in if the character has changed class. In other words, the magic defense equation is different for base classes vs. upgraded classes.
ignoring that magic defense in general is stupidly ineffective either way**, i should be able to reduce the amount of spells that hit me to almost none, so it shouldn't matter anyway - i'd have said exactly none, but that gildervine incident proofed me otherwise *after he lvls up outside of wolf form, the glitch will end and he'll be back to the upper atk formula with a meager 10 str (or a bit more if i cc him) and 10 weapon multiplier this a big problem considering that the 6 bosses in the final dungeon (zable, jagan, fmh, genova, tzenker, bigieu) are almost back-to-back with high exp rewards each (50% of a lvl and more) and not so many enemies inbetween - between tzenker and bigieu are exactly 3 if i remember right **with best armor you can reduce spell damage by 8 points for every int you gain vs 300-500 damage means exactly nothing; or spr instead of int for certain spells; skills like whirlwind profit from that spell multiplier, too - why does that remember my of a certain incident where i walked into the cave of darkness and was greeted by 3 full techs...
Joined: 7/2/2007
Posts: 3960
Thanks for clarifying, Praetarius. And for those spells you can't stop, at least you have Reisz/Lise handy to take the damage. :)
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Player (112)
Joined: 10/21/2010
Posts: 138
sure, no problem most spells that concern me hit all anyway - e.g. fable zar's hell cross opening attack, archdemon's skill/spell arsenal, maybe fiegmund's diving below the battlefield - but that should already be all
Joined: 9/12/2010
Posts: 4
praetarius3 wrote:
Derakon wrote:
He's glitching the heck out of the game, you do know that right? Kevin's strength stat is glitched way beyond what would be achievable via levelups.
small nitpick here; his str isn't touched at all - which is currently my main problem*; only the atk will be altered normally base atk = str * weapon multiplier + minor constants from weapons with glitch it'll simply be base atk = maximum allowed (370) totally independent from str, or actually slightly less, depends on how often i repeat the glitch specifically: i start with 114 atk, each repetition increases the current atk by 1/7 114 -> 130 first glitch 130 -> 148 second 148 -> 169 third ... 251 -> 286 seventh 286 -> 326 eight 326 -> 372 ninth, capped down to 370, fits extremely well 370 -> 370 tenth werewolf's atk buff and the atk-up spell affect a third different value actually, so it goes up a bit more
Derakon wrote:
As for magic defense, there's a multiplier in the game code that kicks in if the character has changed class. In other words, the magic defense equation is different for base classes vs. upgraded classes.
ignoring that magic defense in general is stupidly ineffective either way**, i should be able to reduce the amount of spells that hit me to almost none, so it shouldn't matter anyway - i'd have said exactly none, but that gildervine incident proofed me otherwise *after he lvls up outside of wolf form, the glitch will end and he'll be back to the upper atk formula with a meager 10 str (or a bit more if i cc him) and 10 weapon multiplier this a big problem considering that the 6 bosses in the final dungeon (zable, jagan, fmh, genova, tzenker, bigieu) are almost back-to-back with high exp rewards each (50% of a lvl and more) and not so many enemies inbetween - between tzenker and bigieu are exactly 3 if i remember right **with best armor you can reduce spell damage by 8 points for every int you gain vs 300-500 damage means exactly nothing; or spr instead of int for certain spells; skills like whirlwind profit from that spell multiplier, too - why does that remember my of a certain incident where i walked into the cave of darkness and was greeted by 3 full techs...
interesting info, based on info i gleaned from gamefaqs and whatnot, opposite seems to occur, nice find i might be able to use that for my solo SD3 playthrough also wouldnt class changing lise and hawk for stat ups and stat ups skills save more time considering you generally lower the bosses' damage output and defenses thus boosting your damage output further by using those skills?
Joined: 7/2/2007
Posts: 3960
Class changing a character is only relevant if their increased offense makes up for the time spent on the class change. As I understand it Lise is basically irrelevant with or without class changing -- it's not worth spending the time to level her up / buy her better weapons since that time could be better used letting Kevin attack more. Hawk's more of an edge case since he does contribute some useful damage.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Player (112)
Joined: 10/21/2010
Posts: 138
plus all stat-ups are better used via items (no charge-up time so to speak, and not restricting class choices - the buff spells that can't be bought are available as drop early enough) although i only have to care for atk-up and sabers, as i have almost no defense that could be increased; 10 -> 13, yeah sure, no stat-downs can be covered by hawk's jutsus, so i lose exactly nothing by not changing riesz - hawk gets them relatively late, but i only "need" def-down for archdemon, everyone else has too low hp&def to make it worth it's time atk-down or mind-down is the best single spell to use if more survivability is needed (600 or something spellpower down by 1/3 is better than buffing the max defense of 300 by 1/5)
Player (112)
Joined: 10/21/2010
Posts: 138
I went with CC for Hawk+Kevin; Riesz is simply too inactive (would be way more useful with 3-player patch, but...) I hope the atk glitch is not too repetitive/boring: Link to video
Joined: 7/2/2007
Posts: 3960
That is pretty dull, but if it's only two minutes then it can be skipped over. What exactly is going on there?
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Player (112)
Joined: 10/21/2010
Posts: 138
glitching Kevin's Atk to max is going on there Kevin has to transform into his wolf form, or at least start; the wolf bonus is given very early, and that's all I need here. Once he has his temporary wolf form atk bonus, i call flammie to get away; now this is where the real glitch happens: his wolf atk bonus is NOT removed because I use flammie. If a rope or door or whatever is used while Kevin is transformed, his transformation is ended properly and the atk bonus removed. Not so here; he keeps his higher atk as his new BASE attack. So if I repeat the process again his wolf atk bonus is applied again and again until his base atk reaches the cap of 370. Remember, I started at 114 base atk for Kevin; this 2:15 minutes investment more than trippled his base atk and increases his real damage almost ten-fold. He deals about 260 damage with a normal attack while in wolf form now against the ninjas in the desert fortress; without the glitch it'd be 30ish. I all the time say "base atk", because that is capped at 370; but wolf bonus and atk-up/saber can still get us even higher attack power. how to lose this glitch: 1) changing his weapon Always when the game has to display the attack value of any weapon Kevin can equip, it recalculates and resets his base atk to the calculated value. 2) lvling while in human form While in wolf form the game does not update your attack on a lvl up ever; so if str is taken, his atk does NOT increase until you re-equip his weapon. (see above) 3) shopping Can't have him sell his old weapons (don't need to anyway) or have him buy a weapon himself; if e.g. Hawk buys it for him, fast enough to not show the improvement dialog, it's fine though. Any questions left?
Joined: 7/2/2007
Posts: 3960
Thanks for the detailed explanation. Makes sense. :) Sounds like you might have to spam levelups during the nighttime then. Or take non-STR levelups when human? Not that boosting STR would help much at this point, would it?
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Player (112)
Joined: 10/21/2010
Posts: 138
no, the glitch is lost as soon as the lvl-up screen comes up and Kevin isn't in wolf-form, what stat I take then does not matter at all on the matter of lvl-ups one more note: the game does indeed update the base atk of kevin, no matter which form he currently has, specifically it gets brought down to normal - however, when he untransforms back to human, the game overwrites the base attack of Kevin again with his old attack value; that way I can save the glitched attack. how I think the game works this: starting point: variables: human form, atk = 370 Kevin transforms: game order: store his atk in a back-up value and update atk with wolf bonus variables: atk = 422, back-up-value = 370 this is probably done because rounding errors with a integer system can be fatal/game breaking; x = atk * 8 / 7 loses any number after the point (so 422.85 becomes 422) x * 7 / 8 is not necessarily the old "atk" value (369 in this case, so already wrong) Kevin levels up: game order: update atk, run lvl-up script variables: atk = str * weapon multiplier + constants = 114 back-up-value is not touched, THIS right here is one part of the reason why I can have an (even more) overpowered Kevin --NOTE: here Kevin is WEAK-- Kevin is transformed back to human: game order: give him his old atk back variables: atk = back-up-value = 370 for what ever reason calling flammie does NOT trigger this method, THAT is the 2nd part of our glitch demonstrating the result: Link to video edit: 545545 frames, finally done with all those long cutscenes, back to dungeon crawling
1 2
7 8 9 10