![]() |
|
Star Wolves 3D space RPG with deep strategy and tactical elements |
![]() |
|
Thread Tools | Display Modes |
|
#1
|
|||
|
|||
![]()
I didn't try so I don't know. You can change existing ones without problems. Choosing specialization works like choosing between 4 different pilots with the same face pic.
Quote:
all needed graphic tweaks go here: ..\Data\TEXTURE\Interface\Pilot\PerkTree The same place as other pilots: ..\Data\Scripts\include\PilotProperties.script Look for "properties_Hero_gun", ..Hero_pil, etc. It's not totally true that you can't add new perks. It's just very limited. Check here: ..\Data\Scripts\AI\perkDispatcher.script It's a list of functions connected with certain perks. Inside these functions you can add your ifs involve any perk. For example - some time ago I've created Master Mind perk and added it to the ModifyGainedExperience function: Code:
if pilot:HavePerk("Master_Mind") then amplifier = amplifier + 1 end; So.. you are limited to the existing, hardcoded abilities but you can mix them in your own perks. |
#2
|
|||
|
|||
![]()
Ah, sorry for spelling your name out wrong Goblin Wizard.
Yeah, that's what I meant by mix n matching. The game is scripted in LUA (or so it seems) so I should be able to use everything the devs did. But I guess that means new summon spells are out of the question, eh? I remember in SW2 that most summon spells shared the same assets, so you couldn't have more than one active. I'm guessing I can make additional summons, by basing it off of higher levels of current summons rather than making new summons from scratch (because I can't think of the way to tell the game to use my newSummonGroup variable) Lame, just when I was thinking of making a Summoner character. I'll have to make due without a new summon group then. Since you're making very decent progress with ships, I'm glad to say that I've got half of my work cut out for me. By the time I work out a few new hero classes you'll probably release an update or two. Speaking of which, why isn't there an "unofficial" patch or expansion pack for the game available yet? Don't you think you could do more if you teamed up? I'd be eager to help out with the said part of the game which noone seems to have touched yet - character creation. The main reason behind this is that Missiles are somewhat lame (something I plan on fixing later, possibly adding some missile-swarms/spams or reworking the missiles in general since their only use is to snipe outside of "response range" which is, imho, very lame). Gunnery is ok, as is Piloting, but Sensors are also useless due to the fact that outiside repairing and knocking off missiles (which are lame) everything else is of marginal use (for a specialization). Thus, I have a few additional classes in mind, apart from activating some npc ones - Summoner - Missiler (improved) - Gunner (default) - Sensors (improved) - Piloting (might improve when I see what I've got to work with) - Dogfighter (i think this class is already in the game, favors piloting and in-fighting skills) - Squadron Commander (a bit of summoning paired with passive/active buffs and debuffs, more of a support role really). While the Summoner was supposed to have all four summoning spells, possible bumped onto higher levels, the Squadron Commander was supposed to call in a support group - repair, reshield and that sorta thing. If scratch new summons are impossible though.... any ideas how to piggy-back this into the game? EDIT: Crap, why only 4? Can I maybe do something (dialog perhaps) before the player is generated and "pick" a character generation path from there? Say, picking "Assault" dialog option would show only the "Dogfighter / gunner / pilot / missiler" classes, while "Support" would allow for summoner/squadron cmdr/sensors? Also, I expected the XMLs to reflect the engine all the time, and vice-versa only some of the time. So I don't put my faith in XMLs too much, because I expect that to not work more often than not. "Glad" to see it works sometimes and some other times it doesn't. Last edited by Aleksandar; 08-03-2010 at 01:45 PM. |
#3
|
|||
|
|||
![]()
As you said 4 summon types are possible. Everyone with several levels. Do you really need more than 4 for each character?
But if you really need more you can use a little trick. Summon type perk can activate any part of the code, right? Why don't activate a dialog with several options? Every option summons a group of your choice or activate any other part of the code you desire. It needs some clicking but you can try. |
#4
|
|||
|
|||
![]()
On a quick glance, I noticed this
Code:
function CanAddProperty(pilot, proper) --proper = {100,{"Instructor", "Tactics"},{}} prop_ = proper[2]; // {"Instructor, "Tactics"}; deprop_ = proper[3]; // {} numProps = getn(proper[2]); //2 numDeProps = getn(proper[3]); //0 ~for each prop in prop_ check to see if the pilot has the passed props arguments. return 1 if he does. ~for each deprop in deprop_ check to see if the pilot has the passed deprop arguments. return 0 if he does. The first part of the code checks if you can actually get the property by checking for prereq skills. The second part of the code checks the third param (first is XP price, second is a list of all the prereqs and the third is a list of all denials) and if the pilot has that property (say, Gunnery_3) you cannot get the wanted property. This leads me to believe we can make Character Decisions so that if you get one skill, you cannot get some others. This will work well in fleshing out the classes since I can put way more skills and interlace them in a mutually-exclusive tree, thus holding two classes in just one class. That way, I hope, I'll make some dummy "choice" perks and use them to limit the trees. So, say advancing gunnery 1 and 2 is ok, but picking Gunnery 3 forever locks you out of picking Missiles 3, which further locks you away from all the Missily goodness but opens the door to gunnery goodness perks. This way, I believe, I can put all my 7-8 classes into four, rename them into Assault / Dogfighter / Commander / Support and have each one describe the opportunities found within. The original devs never seemed to used this, so it may not work. But it's a shot. Last edited by Aleksandar; 08-03-2010 at 02:29 PM. Reason: code talk |
#5
|
|||
|
|||
![]() Quote:
Doesn't seem like there's anything there preventing you from expanding the branches further like you've planned. |
#6
|
|||
|
|||
![]() Quote:
Code:
function CanAddProperty-Shark(pilot, property) if property == nil then return 0; else local nPrereqs = getn(property[2]); local nDenials = getn(property[3]); local prop_ = property[2]; local deny_ = property[3];- local prereqsMet = FALSE; local deniesMet = FALSE; local i = 1; if(nPrereqs > 0) then if(pilot:HasProperty(prop_[1])) then prereqsMet = TRUE; i = i+1; elseif return FALSE; --no prereq met end; -- Retrieved the first prereq flag. Collate with others and return while ((i <= nPrereqs) and (prereqsMet ~= FALSE)) do prereqsMet = prereqsMet and (pilot:HasProperty(prop_[i])); end; end; --Prereqs calculated, check for denies if(nDenials > 0) then --restart the counter i = 1; while ((i < nDenials) and (deniesMet ~= TRUE)) do deniesMet = deniesMet or (pilot:HasProperty(prop_[i])); end; end; --Denies calculated; return prereqsMet && !deniesMet return (prereqsMet and (not deniesMet)); end; --property not nil end; --eof Btw, I'm Aleksandar, a math/IT/AI graduate. Not much of a Touhou fan, but I adore bullethell shmups. Last edited by Aleksandar; 08-03-2010 at 03:53 PM. |
#7
|
|||
|
|||
![]()
I don't know LUA so I can't comment on that (really ought to look it up but things just keep happening...) - how do you tell the game to use new functions you add? I'm guessing you just add calls from other scripts?
Not much of a technical guy, I'm just a 2-bit musician ![]() |
#8
|
|||
|
|||
![]()
@Aleksandar - nice to see an educated programmer here. I like poking through the scripts but it's just a hobby.
btw if I understand correctly - your script does the same as original only in other way. AFAIK CanAddProperty function is base function called from the exe so you shouldn't change it's name. |
![]() |
|
|