|
Post by Frumple on Feb 2, 2008 20:49:20 GMT -5
The short of it is that I wanna' expand the PC Monster's ability list to that of a regular class's... but I think I need a little help, and an idea or two.
Here's the basic outline of what I want to change the Monsters' ability list to look like -- basically, I want to split the three already there into 6 themed choices, add in some boss-type abilities for the class-level 6 stuff, and... I've got no clue for a 10th level whatsit. Most-to-all of the abilities will be passive, as that follows what's already there.
I'm fairly sure I can filch most of the coding from other abilities, but I'm not sure where to start for the reflection and stat-causing abilities., so... help, please?
I'd also like something to fill in all the ??? spots in the list, but my brain's pullin' empty at the moment. Ideas?
|
|
|
Post by Variaz on Feb 2, 2008 22:12:48 GMT -5
We have to be careful when making abilities for the monster race. Some monsters like dragons already get tons of hp, so giving them an ability to boost it even further would be a lot. Still, I like some of the ideas, especially giving Monsters access to the reflections. As for a level 10 ability....hmmm... maybe something that raises both the number of blows and spells by a percentage? I'm as puzzled as you are about this one...
|
|
|
Post by Frumple on Feb 3, 2008 20:02:05 GMT -5
Yeah... I had actually forgotten about the uber-hp critters like dragons and stuff -- I play skeletons somewhere like 30 out of 50 monsters I roll up, and more than half the rest are something that can use equipment -- 'p's, 'h's, etc. Thinking on it, I figure switching out the HP boost with a damage reduction passive of some sort would be fit the theme better and be a titch more balanced.
Only thought for the resilence blank would be some kind of absorbtion ability -- though pretty low effect rate, maybe something like 1 in 5 to 1 in 10 kick-in at 100 pts.
The peace one... is it possible with the engine we've got to pull off something like spirit link from WC3? A damage 'spreader' for a group? If it were possible to make it drain from the largest hp-pool and work its way down, that could make for a pretty powerful trick.
Still drawing a blank for a 10th level. It might be kind awesome if it were possible to code some kind of ability-stealing trick so, say, a skeleton could snatch a dragon's breath for a few turns or charges or something.
Another thought would be a 10th level that opened up magic slots for monsters in the normal-character way. Be a method for monsters to get ahold of some utility spells and junk, but I can only guess that it'd be ridiculously hard to code... and I'd really like to keep complexity down a bit, as I'd like to give a shot to doing the coding myself.
Which does beg the question -- how does one add abilities to monster race? Is it hardcoded? I could find the abilties and junk for the other classes, and improved attack/defense for the monsters, but imp. magic is hiding, and I'm not sure how to give the critters more tricks.
|
|
|
Post by Variaz on Feb 3, 2008 21:21:35 GMT -5
Indeed, it's hard-coded... This could be rather easily modified however. Ability-stealing would actually be rather easy to code, and very fun, but I wonder if it would be really worth it... Monsters with no spells would probably have low spellcasting stats anyway, making the copied spell useless, or even impossible to cast. Can you give me more details about this one? I'm not sure what you mean exactly, I don't remember Spirit Link from WC3. I'm not much of a WC3 fan, it was a huge step down from Starcraft IMO...
|
|
|
Post by Frumple on Feb 3, 2008 21:44:36 GMT -5
Ah, spirit-link. Never used it much, but the short of it was that it linked several units together, and any damage taken by one was spread amongst the whole.
Say you've got one dude with 25 hp, who's linked to another 4 of its kin, and this critter gets hit with something that does 25 damage. Instead of the hit dude dying, all of the linked fellows would take 5 damage. That's the basic concept.
Ideally, it would work in Portalis by drawing from whatever's in the group with the highest HP, and damaging that first, untill some other linked critter has higher HP, at which point the damage switches to them untill it happens again -- basically allowing you to use allies as a HP buffer... or perhaps only applying to allies, and not yourself, which would probably significantly extend some cirtters life spans.
Of course, that would be much stronger than the WC3 ability, which would simply divide whatever damage a linked creature takes among all the critters linked... something that could be pretty dangerous in P if the summoner is in the link group.
--
As for the ability-steal, maybe letting it apply to non-magic effects too would let it help out non-casters. Being able to filch a ghost's cold touch melee and similar would be pretty helpful for a lotta' crittters.
Also, strangely enough, it's my non-casting monsters that tend to end up with high Int, as they get physical stat-growth (It's not uncommon for my skeletal warriors to have 20 Str/Dex/Int by level 10 or so), unlike casters. Still, there's several (or several could be added, heh...) non-offensive abilities that would help out non-caster monsters that could be filched. Maybe some (temp) stat-leech to go with it, to make it more attractive for magic-low monsters?
And yeah, WC3 was weaker than SC in a lotta' ways... except custom maps, which was the only thing I played in either of 'em, heh. There's actually a roguelike-type custom map for WC3, somewhere or another. It's not even horrible, heh.
|
|
|
Post by Frumple on Aug 23, 2008 19:06:01 GMT -5
Re-su-rec-TION!
So my Other Roguelike's out of dev-cycle 'till next year, and I've come slinking back to Portralis (and probably Gearhead, heh. Mecha is win, too.) for the later months of 2k8. I'd like to make the original thrust of this thread my intended-thing-to-do while I'm still lurking around, so...
I guess this is a combination question and shout-out -- One, has the monster J abilities been luafied while I was distracted, so that I can go ahead and start mucking about with them, and Two, anyone have any ideas for the still-blank spots in the list up there? I'll probably rummage something up out of the depths of my mind at some point, but considering I'm going to be neck deep in an oodle of philosophy classes while messing around with this, it might end up being something obscure and relating to crazy old dead dudes...
Still, between this (or something similar) and Mistah V's essence idea, monsters might end up with a few new (hopefully neater) tricks... maybe even before next year, heh.
|
|
|
Post by Gando on Aug 23, 2008 19:17:35 GMT -5
Welcome back Frumple.
|
|
|
Post by Variaz on Aug 23, 2008 19:39:54 GMT -5
Welcome back! To tell you the truth, I haven't really modified the Monster race a whole lot. It really needs improvement, and I guess it may be time for me to review this thread, to see where we were at. Still, I did manage to make an interesting Monster race build using Sekira's improved Martial Arts code, and that worked great.
|
|
|
Post by Frumple on Sept 12, 2008 22:38:03 GMT -5
Rather than wait for the monster's J list to be moddable, I've just slapped a new class into the class.txt (and everywhere else I eventually figured out I needed to tell the code I had added something...) to see if I can't get something done, heh. Hopefully, of course, if/when monster abilities get opened up, the code will still work with minimal effort. I'll try, at least, to post progress as I go along -- right now, I'm struggling with the, uh... first ability. Naturally, I've forgotten every bit of what (little, to be fair) I had figured out of LUA/Port's coding the last time I mucked around like this. Of Brawn's three parts, I've thus far gotten the +to_Dam to work, by cannablizing the defender's shield fighting code. Unfortunately, the other two parts (+Str, +Fighting) aren't working quite right... Untill I tried for a while longer. I'm guessing it's some kind of coding effeciency thing to split up the various bonuses (stats, abilities, to_Hit, etc.). Splitting the base code into three and stuffing them in the appropriate places is, apparently, effective... if ugly. Is there anyway to consolodate these planned combo-boosting passives into one spot in the passive.lua file? It's likely something blatently obvious... In any case! Class.txt entry for the testing critter. Init.lua needed something like for kensai and gunner (why not the, uh, other stuff?) for the appropriate class number/id whatsit, or it spammed error messages at you like mad (and didn't work, of course.). # Testing Placeholder N:Beast:22:0 K:This:This; K:Is:Is; K:A:A; K:Test:Test; K:This Is:This Is; K:Only:Only; K:A Test:A Test; K:Slime:Slime; K:Brained:Brained; K:Monkey:Monkey; A:Brawn:0:0:0:0 A:Skill:0:0:0:0 A:Hardiness:0:0:0:0 A:Resilience:0:0:0:0 A:War:0:0:0:0 A:Peace:0:0:0:0 A:Steelskin:0:0:0:0 A:Soulskin:0:0:0:0 A:Mystery Strike:0:0:0:0 A:Ascendent Form:0:0:0:0 Ascendant Form is what I'm planning for the 10th, though I'm not exactly what to do with it right now. It's going to incorperate either an active or passive effect that is variable based on what points you have in the other monster abilities. As monsters can't (right now, at least) multiclass, having at least one really synergystic ability seems viable. It'll likely be some horrible abomination of code, kehe. In any case, working as intented now, though the numbers are wonky to the extreme. I'm just slapping them underneath whatever piece of coding I stole copied it from. It's far from difficult to guess what I did, but just for the sake of completeness... -- Beast Brawn Fightingboost if (p_ptr.abilities[(CLASS_BEAST * 10) + 1] >= 1) then
p_ptr.skill_bonus[1] = p_ptr.skill_bonus[1] + (p_ptr.abilities[(CLASS_BEAST * 10) + 1] * 2) end -- TestPeice one, Brawn Dambonus if (p_ptr.abilities[(CLASS_BEAST * 10) + 1] >= 1) then p_ptr.to_d = p_ptr.to_d + (p_ptr.abilities[(CLASS_BEAST * 10) + 1] * 20) p_ptr.dis_to_d = p_ptr.dis_to_d + (p_ptr.abilities[(CLASS_BEAST * 10) + 1] * 20) end -- Beast Brawn Strengthboost if (p_ptr.abilities[(CLASS_BEAST * 10) + 1] >= 1) then
p_ptr.stat_add[A_STR+1] = p_ptr.stat_add[A_STR+1] + (((p_ptr.stat_cur[A_STR+1] * p_ptr.abilities[(CLASS_BEAST * 10) + 1]) * 5) / 100) end
... the three parts of the brawn code, scattered to the four winds inside the passive.lua file. Having gotten this much done, the next five should be fairly easy. I'll post them all in one go, unless someone wants them split up or something. And yeah, I realize this is, uh, kinda' basic. I care not! Better coded here than my fond-of-noises computer. Still, I did manage to make an interesting Monster race build using Sekira's improved Martial Arts code, and that worked great. Yeah, I've never really had horrible problems with the monster race's power, and they have a few neat tricks here and there, they're just... bland. And, well, way back in some freakishly early version of NewAngband, it was the monsters that drew me to it first, if only for a little while. Monster rights now! Hohoho. Something like that. Kinda' late, heh. Anyway, multiclassing (classes period) is a pretty big part of Port, and monster's kinda' got shafted there -- three generic 'blah' passive abilities and not much else, unless you count evolution as 'class changing'... but that doesn't bring nearly as much to the table as an actual class would. I intend to make it SIX 'blah' passives, and then some sorta' neat stuff. I'd say it'd probably be pretty interesting to actually scribble up a few 'archetype' classes for advanced monsters or something. Maybe the next project, heh.
|
|
|
Post by Frumple on Sept 13, 2008 0:58:44 GMT -5
Small update before I settle down to pass out for the night. I actually think I can get most of the test coding done by the end of the weekend, possible barring the 10th level ability -- it's a doozy and a half what I want to do with it. Doable, though, and if I can get it to work, it'd be major-level awesome.
Anyway, a revised ability list. Things with a -Check at the end are functioning at-this-moment, mostly. I need to check the hardiness damage reduction against physical returning monsters, but that's about it (and the code snippit I posted to get physreturning critters to honor Iron Skin should be easily portable in any case.).
6 - Clvl 1s Imp Attack -- Brawn -- Fighting, Strength, to_Dam -Check -- Skill -- M. Arts, Dex, to_Hit -Check
Imp Def -- Hardiness -- Defense, Damage Reduction --Physonlyfornow---, AC -Check -- Resilience -- Magic Defense, Regeneration, Reflection ala item.
Imp Magic -- War -- Spellcraft, IntOrDamageBoost, Mana -- Peace -- Leadership, Cha, Alignment booster (?)
3 Clvl 6s -- Steelskin -- Physical Reflection -- Soulskin -- Magical Reflection -- Mystery Strike -- Random status infliction.
1 Clvl 10 Ascendant Body. Effect depends on your investment in other abilities. Tentative balance, each effect takes as its ability level the lower of your AB and the original skill. Thus, if you had an AB of 100, but only a Brawn of 20, the Reach effect would act as if a 20 point one. Togglable. Debate -- AB unlocks all of the below to be togglable or 'all or nothing'?
Brawn -- 'Reach' attack. 100 point AB, 100 point brawn, 10 square chain(?). Maybe only 1% of max blows (rounded up) per 2 points? Skill -- Short-ranged directed teleport (Jump) with temp Invis. Hardiness -- Spikes! Basically like damage reflection, but a set amount of damage rather than however much they do to you. Resilience -- Bounce -- replicates a % of taken damage to nearby squares. War -- Does a multiple of your current resistances in damage via an aura effect ala pallie heal. Alt, causes magical effects to spawn a reduced effect field (copying the original magic) in their AoE. Peace -- Gives chance attempt to cause attacking (they don't have to hit [i]or[/i] damage you.) monsters to turn peaceful. At 100 Peace and 100 Acendant, 100% chance. Resistable, though. Physical Reflection -- Drains health from nearby monsters. Magical Reflection -- Drains mana from nearby monsters. Mystery Strike -- Aura effect of random stat.
My only questions at the moment is if having an alignment booster for Peace would be worth it -- I saw something in one of the LUA files that had some monsters generating peaceful (or something like that) for high alignment PCs, so I figured it might be both thematic and useful...
... and how would one go about having ability based reflection power? I'm eyeballing the item-reflection code as is... doesn't look too hard to slap that ptr.ability thingy into it and have it add ability level onto the item power. Ideas/comments?
AB's a monster, yes, but I want to implement it anyway.
Anyway, that's it for the night. More tomorrow, kehe.
|
|
|
Post by Frumple on Sept 13, 2008 16:33:02 GMT -5
And the remainder of the combo-boosters, skill through peace. All seem to be functioning well enough, which surprises the hell outta' me.
-- Skill -- M. Arts, Dex, to_Hit -- Beast Skill MArtboost if (p_ptr.abilities[(CLASS_BEAST * 10) + 2] >= 1) then
p_ptr.skill_bonus[19] = p_ptr.skill_bonus[19] + (p_ptr.abilities[(CLASS_BEAST * 10) + 2] * 2) end -- Beast Skill Hitbonus if (p_ptr.abilities[(CLASS_BEAST * 10) + 2] >= 1) then p_ptr.to_d = p_ptr.to_d + (p_ptr.abilities[(CLASS_BEAST * 10) + 2] * 20) p_ptr.dis_to_d = p_ptr.dis_to_d + (p_ptr.abilities[(CLASS_BEAST * 10) + 2] * 20) end -- Beast Skill Dexboost if (p_ptr.abilities[(CLASS_BEAST * 10) + 2] >= 1) then
p_ptr.stat_add[A_DEX+1] = p_ptr.stat_add[A_DEX+1] + (((p_ptr.stat_cur[A_DEX+1] * p_ptr.abilities[(CLASS_BEAST * 10) + 2]) * 5) / 100) end BREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAK -- Hardiness -- Defense, Physical Reduction, AC -- Beast Hardiness ACboost if ((p_ptr.abilities[(CLASS_BEAST * 10) + 3] >= 1)) then
p_ptr.to_a = p_ptr.to_a + (p_ptr.abilities[(CLASS_BEAST * 10) + 3] * 50) p_ptr.dis_to_a = p_ptr.dis_to_a + (p_ptr.abilities[(CLASS_BEAST * 10) + 3] * 50) end -- Beast Hardiness Defenceboost if (p_ptr.abilities[(CLASS_BEAST * 10) + 3] >= 1) then
p_ptr.skill_bonus[5] = p_ptr.skill_bonus[5] + (p_ptr.abilities[(CLASS_BEAST * 10) + 3] * 2) end -- Beast Hardiness Damage reduction! - In Elements.lua Put it under, uh... defender magic block, iirc (Line 2833). May need to mess around with physical returning elites too, d**nit. Bah. if ((p_ptr.abilities[(CLASS_BEAST * 10) + 3] >= 1) and (monster_physical)) then dam = dam - (p_ptr.abilities[(CLASS_BEAST * 10) + 3] * 500) if (dam < 0) then dam = 0 end end BREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAK -- Resilience -- Magic Defense, Regeneration, Reflection ala item. -- Beast Resilience MDefboost if (p_ptr.abilities[(CLASS_BEAST * 10) + 4] >= 1) then
p_ptr.skill_bonus[28] = p_ptr.skill_bonus[28] + (p_ptr.abilities[(CLASS_BEAST * 10) + 4] * 2) end -- Beast Resilience Regen -- Placed in before_player_moves function. (Line 15 or therabouts.) if ((p_ptr.chp < p_ptr.mhp) and (p_ptr.abilities[(CLASS_BEAST * 10) + 4] >= 1)) then
p_ptr.chp = p_ptr.chp + (p_ptr.abilities[(CLASS_BEAST * 10) + 4] * 10) else if p_ptr.chp >= p_ptr.mhp then p_ptr.chp = p_ptr.mhp end end -- For reflection, adjust reflection ability (Line 2762 starts) in elements.lua as follows. if ((p_ptr.reflect) or (p_ptr.abilities[(CLASS_BEAST * 10) + 4] >= 1) and not(monster_physical) and not(monster_ranged)) then
local i local ppower local mpower
ppower = 0 mpower = 0
i = 24 while (i <= 52) do
-- Check for reflecting ability. if (inven(i).reflect > 0) or ((p_ptr.abilities[(CLASS_BEAST * 10) + 4] >= 1)) then ppower = ppower + inven(i).reflect + (p_ptr.abilities[(CLASS_BEAST * 10) + 4])
BREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAK -- War -- Spellcraft, Int, Damboost
-- Beast War Spellboost if (p_ptr.abilities[(CLASS_BEAST * 10) + 5] >= 1) then
p_ptr.skill_bonus[2] = p_ptr.skill_bonus[2] + (p_ptr.abilities[(CLASS_BEAST * 10) + 5] * 2) end -- Beast War Intboost if (p_ptr.abilities[(CLASS_BEAST * 10) + 5] >= 1) then
p_ptr.stat_add[A_INT+1] = p_ptr.stat_add[A_INT+1] + (((p_ptr.stat_cur[A_INT+1] * p_ptr.abilities[(CLASS_BEAST * 10) + 5]) * 5) / 100) end -- Beast War Damage bonus - Put just before monster resistence check in elements.lua's magic attack. (Line 180) if (p_ptr.abilities[(CLASS_BEAST * 10) + 5] >= 1) then dam = dam + (dam * (((p_ptr.abilities[(CLASS_BEAST * 10) + 5]) * 10) / 100)) end BREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAKBREAK -- Peace -- Leadership, Cha, Alignment booster (?) -- Beast Peace leadboost if (p_ptr.abilities[(CLASS_BEAST * 10) + 6] >= 1) then
p_ptr.skill_bonus[10] = p_ptr.skill_bonus[10] + (p_ptr.abilities[(CLASS_BEAST * 10) + 6] * 2) end -- Beast Peace Chaboost if (p_ptr.abilities[(CLASS_BEAST * 10) + 6] >= 1) then
p_ptr.stat_add[A_CHA+1] = p_ptr.stat_add[A_CHA+1] + (((p_ptr.stat_cur[A_CHA+1] * p_ptr.abilities[(CLASS_BEAST * 10) + 6]) * 5) / 100) end -- Beast Peace Alignboost if (p_ptr.alignment > 0) and (p_ptr.abilities[(CLASS_BEAST * 10) + 6] >= 1) then p_ptr.alignment = p_ptr.alignment + (p_ptr.alignment * p_ptr.abilities[(CLASS_BEAST * 10) + 6]) * 5) / 100) end
Most of them gets stuffed near similar abilities in the passive.lua file. The one's that don't are noted. With them in the appropriate place, the Beast testing human is recieving appropriate bonuses from the first six abilities. Huzzah!
As for getting them to work, I'm guessing the monster's improved attack/defense stuff's little apprentice body=monster thingy in place of CLASS_BEAST would be most all it took to get the lot of them working on an actual monster body.
Now to get the three sixth level abilities working. I imagine switching out monster and player code-descriptor things and shifting the boss reflection code to the hit-player instead of hit-monster whatsit will work fine there. Then it's just picking apart whatever soft-coded status inflicting abilities are in the lua files, slapping them together, and then letting it work on melee attacks. Doesn't sound too hard.
And then Ascendant Form... I think the hardest part of that is that there doesn't seem to be any soft-coded aura effects I can filch from. I'll see...
|
|
|
Post by Gando on Sept 13, 2008 21:23:25 GMT -5
what in tarnation is this supposed to be?? lol
|
|
|
Post by Frumple on Sept 13, 2008 23:59:40 GMT -5
Ah... heh. Was used to seperate what I had working and what I was working on -- I do my work in Notepad++ (Which I adore, by the by.), and if it has a line-break feature, I haven't bothered to figure out what it is...
It was a single line, stretching from one end of my screen to the other, but posting it did strage things to it, heh. Probably due to word wrap or whatever, which I turn off when monkeying with code.
|
|
|
Post by Variaz on Sept 14, 2008 11:15:35 GMT -5
I'm looking at the class, and it seems interesting, but perhaps not for use as the 'base' monster class. For the base class, indeed, the three abilities are rather lame, but I would rather use something that improves a particular monster's features, rather than have some special abilities.
Actually, the class you posted could be used by any characters(I don't really see anything Monster-related in it), since a lot of abilities are based on reflection and stuff. If you make the class, post it, and it could become a standard Advanced Class, or perhaps a replacement for Monster Mage? I like your class more than the Monster Mage, which doesn't have much except the very useful Monster Magics, but the rest isn't on par with the Monster race... Morphing isn't very useful. Perhaps replace one of your abilities with the Monster Magics, which are quite good, and replace the rest by this new class?
What the Monster race really needs is to have counters implemented, and eventually, the scripted powers of some of the monsters. And have abilities that focus around improving and using their innate abilities better, so that every traits of a specific monster could be used and have a character build on.
Or, perhaps we could just keep the three innate abilities, and allow Monsters to get a standard class? Since they already use different stats calculations, and are often limited in their item choices, perhaps it wouldn't be too bad... And that opens many possibilites. One could choose to focus on the monster's innate abilities, or just use the body for resistances and stuff, and go for a normal build. Or a combination of both.
|
|
|
Post by Frumple on Sept 15, 2008 20:44:26 GMT -5
Small update about the lack of updates, heh. Been sick a few days -- mananged to get the physical/magical reflections functioning (even well, it seems. Not sure if they honor resistances yet, but they don't do that funny volly effect item reflection can pull off. Mystery strike's got me stalled, though -- I want to give it a power (avg of str + int * points of some degree vs avg of str + mind of target) and then have it roll to see what happens. That's not too hard to pull off, but I can only find the softcode for three (confusion, fear, stun) of the status effects I want to be able to happen -- at least four more (poison and cut effects would be nice, as would blinding. Still thinking for the last one) is my goal.
I'll respond more to your comments later, V, just as soon as swallowing stops feeling like someone's putting a knife through my throat. Short form: If you can use it and the coding's not horrific, then I don't really care how it gets used, heh.
|
|