10-04-2012, 03:44 AM
Another day chugs along and yep, I'm still working on the ABS. I'm not going to teach the system who's boss. I'm going to teach it who's GOD! It will know that I am it's master, it's creator. The Lord Numero Uno. The Ayatollah of Rock n Rolla. *Cough* Sorry.
Now before I go and talk about the ABS, I should mention that I did one more update to Mousie. I totally forgot that the original version of MrMo's ABS and some other older ABSs out there used Cybersam's Full Keyboard script. And rather than he coding an Input.press? command like he did for Input.trigger?, he instead made an Input.pressed? which meant that anyone using it would need to do rewrites for every press-based menu systems and the like. No. No no NO! I didn't really like that when I first encountered these ABSs. It meant I would need to edit Mousie when it came to the new mouse press method I wrote. Rather than that, I added another routine into Mousie to detect and take care of Cybersam's Input.pressed? method.
Now that Mousie is out of the way...
I wasn't going to be satisfied with Lycan if I 'required' Cybersam's input script one day and then had to go through the script and perform edits everywhere for another input script. So, I did the next best thing. I made an adaptation value within the configuration page. It looks like this:
With that statement, it recognizes the use of Cybersam's Input Pressed system and reads a predefined keycode such as Input::C or the like. And if I wished to use my own input script, I merely need to change it to this!
At least this time I made it mirror the default Input.press? command.
Now that did take me a while, but what took me longer was to reintroduce Cassandra's Personality Edits from the old MrMo Add-Ons that I created a while back. Though they are similar in many respects, Lycan has a different Enemy Attack system, so it wasn't the easiest to convert. Making the enemies run and cower when a fellow enemy target was killed was easy enough, and making them take a step back when hit was almost a mirror. Making them keep their distance so they can perform ranged attacks was now even easier. Making them Hunt their prey if the player gets out of their vision and hearing range was hard. However, I may add a visual touch later so enemies who are actively hunting can use a different graphic (like a wolf with his nose to the ground trailing its victim). I also came up with an algorythm so enemies don't just run away at whatever speed they're set. They move in the same Move Speed / Move Frequency pattern that they normally do.
Hit and run tactics for enemies was a fun one to add months ago to MrMo's ABS Ultimate, so I obviously wanted it back. Likewise, I added custom enemy MASH rates because no two enemies should be able to attack the player with the exact same speed. A slow and meandering Zombie from the Black and White 'Night of the Living Dead' should have a long mash rate compared to one of the speedy buggers from Zombieland. And I put back my enemy range system. An enemy with a long pointy spear should be able to hit a guy 2 tiles away compared to a little willowisp with a small pointy stick.
And lastly today, I only realized that every time I was hit by an enemy... I got knocked back a tile. Waitaminute. I realized at that moment that I never coded a kick/knock-back value for enemies.... ever! Surely no pathetic slime can have the same strength to knock a warrior back the same distance as a Minotaur with a BattleAxe!!! Oh, I HAD to do something about this. Now, each enemy can have their own 'Kick' value. A Ghost Event may give a 0 kick value which makes the player merely jump, a Kobold Event a value of 1 as he has a nice heavy club, and a pathetic enemy Slime has a value of -1. Sorry, no nil values allowed in the config. A value of -1 just indicates that the guy won't get kicked back.
Whew. Now to relax.
Now before I go and talk about the ABS, I should mention that I did one more update to Mousie. I totally forgot that the original version of MrMo's ABS and some other older ABSs out there used Cybersam's Full Keyboard script. And rather than he coding an Input.press? command like he did for Input.trigger?, he instead made an Input.pressed? which meant that anyone using it would need to do rewrites for every press-based menu systems and the like. No. No no NO! I didn't really like that when I first encountered these ABSs. It meant I would need to edit Mousie when it came to the new mouse press method I wrote. Rather than that, I added another routine into Mousie to detect and take care of Cybersam's Input.pressed? method.
Now that Mousie is out of the way...
I wasn't going to be satisfied with Lycan if I 'required' Cybersam's input script one day and then had to go through the script and perform edits everywhere for another input script. So, I did the next best thing. I made an adaptation value within the configuration page. It looks like this:
Code:
# Customized Press Input Call
PRESSED_KEY = "Input.pressed?(keycode)"
Code:
# Customized Press Input Call
PRESSED_KEY = "Input.press?(keycode)"
Now that did take me a while, but what took me longer was to reintroduce Cassandra's Personality Edits from the old MrMo Add-Ons that I created a while back. Though they are similar in many respects, Lycan has a different Enemy Attack system, so it wasn't the easiest to convert. Making the enemies run and cower when a fellow enemy target was killed was easy enough, and making them take a step back when hit was almost a mirror. Making them keep their distance so they can perform ranged attacks was now even easier. Making them Hunt their prey if the player gets out of their vision and hearing range was hard. However, I may add a visual touch later so enemies who are actively hunting can use a different graphic (like a wolf with his nose to the ground trailing its victim). I also came up with an algorythm so enemies don't just run away at whatever speed they're set. They move in the same Move Speed / Move Frequency pattern that they normally do.
Hit and run tactics for enemies was a fun one to add months ago to MrMo's ABS Ultimate, so I obviously wanted it back. Likewise, I added custom enemy MASH rates because no two enemies should be able to attack the player with the exact same speed. A slow and meandering Zombie from the Black and White 'Night of the Living Dead' should have a long mash rate compared to one of the speedy buggers from Zombieland. And I put back my enemy range system. An enemy with a long pointy spear should be able to hit a guy 2 tiles away compared to a little willowisp with a small pointy stick.
And lastly today, I only realized that every time I was hit by an enemy... I got knocked back a tile. Waitaminute. I realized at that moment that I never coded a kick/knock-back value for enemies.... ever! Surely no pathetic slime can have the same strength to knock a warrior back the same distance as a Minotaur with a BattleAxe!!! Oh, I HAD to do something about this. Now, each enemy can have their own 'Kick' value. A Ghost Event may give a 0 kick value which makes the player merely jump, a Kobold Event a value of 1 as he has a nice heavy club, and a pathetic enemy Slime has a value of -1. Sorry, no nil values allowed in the config. A value of -1 just indicates that the guy won't get kicked back.
Whew. Now to relax.