I am thinking of ripping apart everything that has to do with skills and
spells. I want to write out a whole in-game spell programming language. Yes,
I understand it is going to be one huge undertaking. What I was wondering
was: how would it be best to iterate through affects each tick? If I attach
on an expandable array to each mobile (and player character) it would need
to iterate through the entire mob index, as well as descriptor lists. I
think that'll take too much memory and processor usage (but may be the only
way). I was also thinking about creating an iteration that ran through all
affects, and have a pointer back to the 'owner' of the affect. Too expand
into affects on weapons, going by affect may save some serious computation
time. What would also be the best ways to handle mob/obj loading? Has anyone
else ever attempted or done this before? Where would one go if they wanted
to get a look at how to write a simple programming language that works
inside a program? Would this all be feasible? If anyone (Including all the
flames and yabb'ing from Edwin..... We love you! ;^) has any ideas, please
let me know. Any leads that may help me are most welcome, as are
comments, -constructive- critisim, etc. I know it can be done, just want to
Do It Once And Do It Right (DIOADIR [DEE-oh uh-dur]: one word phrase, how
everything that is to be accomplished should be done, but rarely is)
Here are a few of my ideas for 'spellC' (examples)
This would know to only affect a player or mobile in an 'attacking' way
(something to the degree of tar_offensive_mob for only mobs):
some_spell(tar_offensive_all){
if(aff_exist(victim))
no_aff('They are already affected by %s', spell_name)
else
addaff spell_name ( timer, to_where, to_where)
}
This would know to go through the entire room, only affecting players:
some_spell(tar_room_defensive_all){
if(aff_exist(victim))
no_aff('They are already affected by %s', spell_name)
else
addaff spell_name ( timer, to_where, to_where)
}
This is what might be used to create something (knowing type food,
automatically set wear_take, and values set by type and level):
some_spell(tar_room_none){
create mushroom(food, caster_level,
"mushroom",
"A mushroom",
"A magic mushroom sprouts here.")
}
Drylar Levre -
"'Twas brillig an ye slythy toves/did gyre and gymble in ye wabe/all mymsy
were ye borogoves/and ye mome raths outgrabe."