HavenHold

Elexxorine
19 Mar 2007, 11:16
Ok, I know my game hasn't been mentioned a lot lately, but I've still been working on it. The battle codes are now finished and I have only a few more bits to do on the system part of the game, rather than the actual content. The release with be soon, most definity, and all those interested should let me know... lol. More details later...

007bond
20 Mar 2007, 06:31
Is it an online game?

Elexxorine
20 Mar 2007, 11:13
Yes.

lyteside
20 Mar 2007, 15:09
i'm really really excited about this one. i know you have been working on it forever now.

Elexxorine
20 Mar 2007, 19:04
Well I've been working on it under the name 'HavenHold' for about two years, and much of the code was based from previous rpg I'd been making...

Right bit of info now... Spend two full days with nothing but programming the game and I've managed to do all the battle codes, so now you can attack monsters and players (in pvp zones) and monsters can attack you and other monsters. And monsters can gain exp and level up jsut like players... in fact they run off all the same procedures!!! Scary? Need to tweek it so monsters can attack each toher when there's no palyer in the room though. All shop stuff and equiping works perfectly... Currently doing object cloning and spawning, which with then be expanded for monsters... All npc's can move independant around the maps, follow palyers around, and attack stuff. Feel of the game is good, I've even managed to make independant timers for players to make cutscenes and an intro for palyes (something Tron said couldn't be done in quest, I showed him!). The next stuff on my list is to finish off all the stats stuff, increasing them when you level, and modifiers (base for them at least)... after that all the system stuff for the alpha will be done. Just need to make the real maps and story lines, etc and it'll be ready!!! Tron's helping a bit on story ideas, but I'd appriate anybody else wanting to help on this part of the game (and getting their name on the cedits!!! OMG!!!)

lyteside
20 Mar 2007, 20:07
elexxorine wrote:Need to tweek it so monsters can attack each toher when there's no palyer in the room though.


dude, that's what i'm working on right now too! cool.

let me know if there's any code you can share to help with that.

Elexxorine
20 Mar 2007, 20:42
lol. send me what you've got, i'll send you what i've got... i'd really like to look at your battel codes actually, see how you've done it...

lyteside
20 Mar 2007, 21:00
sure thing. here you go. it's timer based.

http://www.deltasmusic.com/the%20art/battle.txt

GameBoy
21 Mar 2007, 00:08
Elex, let me know when you need the server hosting.

Elexxorine
21 Mar 2007, 12:52
Steve, soon. A prolly full game might be released in a month or so, or I cna release one with test maps just showing what you can do in about a week. Can I also have a small website with it? I can host my own forum if you need me too though.

Lyteside, I've had a look at your battle codes... Timers are hard to do in multiplayer games and flags go out hte window (but I replaced them with properties!) Anyway here's a look at my codes:
!addto game

command <attack #target2#; /attack #target2#> {
if property <#name[userid]#; dead> then msg <You cannot do that.> else {
set string <target2; $getobjectname(#target2#)$>
if property <#target2#; attackable> then {
msg <You rush to attack $capfirst(#(target2):alias#)$.>
do <player.att(%userid%; #target2#)>
}
else msg <You cannot attack #(target):article#.>
}
}
' this is a really cool rode for npc's, letting them attack players and each other!
afterturn {
for each object in <#quest.currentroom[userid]#> {
if property <#quest.thing#; attackable> and ( #(quest.thing):t_hp# > 0 ) then {
set string <att_mob; #quest.thing#>
if ( #(att_mob):target# =) or ( $locationof(#(att_mob):target#)$ <> $locationof(#att_mob#)$ ) then do <mob_tar> else {
if ( #(att_mob):target# <>) and ( $locationof(#(att_mob):target#)$ = $locationof(#att_mob#)$ ) then {
' do <mob.att(#att_mob#; #(att_mob):target#)>
do <att.att(#att_mob#; #(att_mob):target#)>
}
}
}
}
}
!end

define procedure <mob_tar>
set numeric <att_rand; $rand(1; 10)$>
if ( #(att_mob):aggro# > %att_rand% ) then {
set numeric <att_tars; 0>
for each object in <$locationof(#att_mob#)$> {
if property <#quest.thing#; netplayer> then {
inc <att_tars>
set string <att_tar[att_tars]; #quest.thing#>
}
else {
if property <#quest.thing#; attackable> and ( #quest.thing# <> #att_mob# ) then {
inc <att_tars>
set string <att_tar[att_tars]; #quest.thing#>
}
}

set numeric <att_rand; $rand(1; %att_tars%)$>
if ( $locationof(#att_tars[att_rand]#)$ = $locationof(#att_mob#)$ ) then {
property <#att_mob#; target=#att_tars[att_rand]#>
if property <#(att_mob):target#; netplayer> then {
for each object in <$locationof(#att_mob#)$> {
if property <#quest.thing#; netplayer> then {
if ( #quest.thing# = #(att_mob):target# ) then {
set numeric <us; #(quest.thing):userid#>
if property <#name[us]#; not blind> then msgto <player%us%; You see $capfirst(#(att_mob):alias#)$ rush towards you.>
}
else {
set numeric <us; #(quest.thing):userid#>
set string <att_def; #(att_mob):target#>
if property <#name[us]#; not blind> then msgto <player%us%; You see $capfirst(#(att_mob):alias#)$ rush towards $capfirst(#(att_def):alias#)$.>
}
}
}
}
else {
for each object in <$locationof(#att_mob#)$> {
if property <#quest.thing#; netplayer> then {
set numeric <us; #(quest.thing):userid#>
set string <att_def; #(att_mob):target#>
if property <#name[us]#; not blind> then msgto <player%us%; You see $capfirst(#(att_mob):alias#)$ rush towards $capfirst(#(att_def):alias#)$.>
}
}
}
}
}

end define

define procedure <player.att>
' p1= userid p2=target.
if property <$parameter(2)$; attackable> then {

set string <att_mob; player$parameter(1)$>
' the part where the poor ol' monster finially get to attack.
set string <pa.tar; $parameter(2)$>
if ( $locationof(#pa.tar#)$ = $locationof(#att_mob#)$ ) then {

set string <att_def; #pa.tar#>
' do <player.att2(player%userid%; $parameter(2)$)>
do <att.att(player$parameter(1)$; $parameter(2)$)>
}
else if property <$parameter(2)$; netplayer> then {
set string <pa; player$parameter(1)$>
set string <pa; $locationof(#pa#)$>
if property <#pa#; pvp> then {
set string <att_mob; player$parameter(1)$>
' the part where the poor ol' monster finially get to attack.
set string <pa.tar; $parameter(2)$>
if ( $locationof(#pa.tar#)$ = $locationof(#att_mob#)$ ) then {

set string <att_def; #pa.tar#>
' do <player.att2(player%userid%; $parameter(2)$)>
do <att.att(player$parameter(1)$; $parameter(2)$)>
}
}
else msgto <$parameter(1)$; |crThis is not a PVP zone.|cb>
}
end define

define procedure <att_att>

set string <att_def; $parameter(2)$>
set string <att_mob; $parameter(1)$>

' the part where the poor ol' monster finially get to attack.
if ( #(att_mob):t_dex# > #(att_def):t_agl# ) then {
set numeric <att_da; #(att_mob):t_str# * 10>
set numeric <att_var; >
if ( $rand(1; 2)$ = 1 ) then set numeric <att_da; %att_da% + #(att_mob):t_str#> else set numeric <att_da; %att_da% - #(tt_mob):t_str#>
set numeric <att_da; %att_da% / 10>
set string <att_wep; #(att_mob):equip_weapon#>
if ( #att_wep# =) or ( #att_wep# = ! ) then set numeric <att_wea; 0> else set numeric <att_wea; #(att_wep):damage#>
if ( %att_wea% < 1 ) then set numeric <att_wea; 0>
set numeric <att_da; %att_da% + %att_wea%>
set string <att_arm; #(att_def):total_armour>
if ( %att_arm% < 1 ) then set numeric <att_arm; 0>
set numeric <att_da; %att_da% - %att_arm%>>

set numeric <hp; #(att_def):c_hp#>
set numeric <hp; %hp% - %att_def%>
property <#att_def#; c_hp=%hp%>

if property <#att_def#; netplayer> then {
for each object in <$locationof(#att_mob#)$> {
if property <#quest.thing#; netplayer> then {
if ( #quest.thing# = #att_def# ) then {
set numeric <us; #(quest.thing):userid#>
msgto <player%us%; $capfirst(#(att_mob):alias#)$ attacks you, causing %att_da% damage.>
}
else {
set numeric <us; #(quest.thing):userid#>
if property <#name[us]#; not blind> then msgto <player%us%; $capfirst(#(att_mob):alias#)$ attacks $capfirst(#(att_def):alias#)$, causing %att_da% damage.>
}
}
}
}
else {
for each object in <$locationof(#att_mob#)$> {
if property <#quest.thing#; netplayer> then {
set numeric <us; #(quest.thing):userid#>
if property <#name[us]#; not blind> then msgto <player%us%; $capfirst(#(att_mob):alias#)$ attacks $capfirst(#(att_def):alias#)$, causing %att_da% damage.>
}
}
}
' check if it's dead...
if ( #(att_def):c_hp# < 1 ) then {
property <#att_def#; dead>

if property <#(att_def#; netplayer> then {
do <player.dead(#(att_def):userid#)$>
}
else {
do <mobclear(#att_def#)>
}

set numeric <expm; #(att_def):level#>
set numeric <expm; %expm% * 100>
set numeric <expm; %expm% / #(attmob):level#>
set numeric <expm; %expm% /10>
set numeric <exp; #(att_mob):exp#>
set numeric <exp; %exp% + %expm%>
property <#att_mob#; exp=%exp%>
if property <#att_mob#; netplayer> then do <levelupcheck(#(att_mob):alias#)> else do <levelupcheck(#att_mob#)>
}
}
' and then if it misses.
else {
if property <#att_def#; netplayer> then {
for each object in <$locationof(#att_mob#)$> {
if property <#quest.thing#; netplayer> then {
if ( #quest.thing# = #att_def# ) then {
set numeric <us; #(quest.thing):userid#>
msgto <player%us%; $capfirst(#(att_mob):alias#)$ tries to attack you, but you manage to dodge out of the way.>
}
else {
set numeric <us; #(quest.thing):userid#>
if property <#name[us]#; not blind> then msgto <player%us%; $capfirst(#(att_mob):alias#)$ tries to attack $capfirst(#(att_def):alias#)$, but $capfirst(#(att_def):alias#)$ manages to dodge out of the way.>
}
}
}
}
else {
for each object in <$locationof(#att_mob#)$> {
if property <#quest.thing#; netplayer> then {
set numeric <us; #(quest.thing):userid#>
if property <#name[us]#; not blind> then msgto <player%us%; $capfirst(#(att_mob):alias#)$ tries to attack $capfirst(#(att_def):alias#)$, but $capfirst(#(att_def):alias#)$ manages to dodge out of the way.>
}
}
}
}

end define
Both players and monster use the same battle codes, but have seperate ines for allowing the attack... I'm going to try jsut changing '#quest.currentroom[userid]#' to game on selecting the monsters and test if that allows al monsters to attack. The only fear is if lots of people are playing the afterturn script will go crazy... Oh well that's what the testing is for I guess.

Anyway, going to go now, Got a free period, then lunch then another free period so should be able to get lots of programming done.

Also just wondering, how big is your game now? The previous version I had was huge.... Seeing the new stuff you've put I'm wondering how much bigger it is!!

paul_one
21 Mar 2007, 13:54
... Is it just me, or does the logic in this scripting not work properly?

There's bits where you seem to treat players and objects slightly differently - but not really differently at all..

There's also the fact you use "att_mob" quite a bit - surely you'll find that having more than one person fighting will cause this to become confused.

Each procedure should be section-ised, because Quest uses global variables instead of localised variables.. How you can also make it player-centric (if that makes sense) and local is quite tricky.

GameBoy
21 Mar 2007, 16:09
Yeah, i'll work on a website tonight after work. Gotta do some work on my bike today.

Elexxorine
22 Mar 2007, 08:26
Steve, thanks.

Tron, yeah... I was going to but it into smaller chunks once tested. The differences between palyer's and monsters are small, for example between using the name and 'player%number%' because palyers and monsters are named differently. I could lob a '[userid]' on the wnd of everthing but then monsters couldn't attack without players...

Btw on Tuesday night I did my first bit of programming in 'Gambas', which is the linux version of say visual basic. It was fun but I hate having to 'dim' all the variables!!! I'm writing a maths program that works out pi using arctans and stuff... and loops! I love loops... lol. Anyway, back to the school type thing.

I really need to test al lthe battle stuff, need to make monsters and a way to spawn them first though... It'll use the small procedures as object cloning! lol. That's what I'll be working on now.

paul_one
22 Mar 2007, 11:11

It was fun but I hate having to 'dim' all the variables!!!

Don't know if gambas is any different to normal VB in alot of ways. There should be an option to turn that off - but it's better programming practice to:
make a 'data structure' that you require,
get the required amount of memory you need (using dim),
run through the code - using the data structure.

Otherwise, getting a list of variables you're using, etc, is such a pain, plus you could produce multiple variables which serve the same purpose.

I'm sure you'll get it working :) .

Elexxorine
22 Mar 2007, 15:15
I can just remember all the variables I'm using anyway. It's actually scary, cos I have to find a procedure I hadn't touched in ages and remembered instandly which library it was in and where it was... It scared me when I realised - I think a doctor might've said I'm spending too much time programming then, but that's not possible. Yeah, I've used a timy bit of VB, and Gambas doesn't look anything different, except that you get a pawn giving you thumbs up when you start it, makes me giggle each time...

I was actually wondering if Gameboy ever got his quest emulator working? And wasn't quest built in VB? I think actually thinking of re-making HavenHold into VB sometime but like with its own interface, and maybe graphics insteed of text, but I'll finish the asl version first... spend so much time on it, I deserve to be killed if I was to leave it now...

Tron, I'm going to be sending you a copy of all what I've done early next week so you can test the codes actually work... kk?

My to do list looks a little like this:

* skills...
* 'stat_workout' proc.
* picking up and dropping.
* cloning objects from orig's.
* make monster spawning in an arena/whatever.
* Make main city maps and put them in.
* Make sewer maps, plus complex.
* Finish off cut-scenes and other starting off stuff.
* Redo the dieing stuff... with new idea.

The stats stuff is half done, picking up done, going to reverse it for dropping. I've donw cloning but need to do spawning, which will then be applied for mob spawning... I've got drawings off all the maps and the starting cutscenes and so on are practically done, jsut want to tweek them a bit. Once this list is got through, I'll jsut need to put all the people in and do the story lines... and that'll actually prolly be more than the alpha... lol.

Freak
22 Mar 2007, 20:24
Was Gameboy trying to duplicate QDK or the Quest runner? I did get Geas working, though I decided to do a heavy rewrite, and that's making slow progress.

GameBoy
23 Mar 2007, 02:08
I just wanted to write my own client so I could get the look I wanted. I always wanted to add extra bits like click-based ability, images (avatars etc.), and status bars. If you look at screenshots of Realms of Kaos and Nightmist (Muds which i've played for many years now), you'll get a good idea of what I wanted to do, but this is a project that needs to be started at the right time in order for it to be successful.

As for your visual (I assume 2D?) version of Havenhold, Elex, I can already help you there. http://www.os.nevetsweb.com. M:RPGe was originally an open source project, until M:RPGe 2 in which I wanted to build something that would compete with PlayerWorlds. I decided to go back to making it open source, but I changed the name to Oasis Source.

Our next version includes a Development Suite (Named, DevSuite), which is one peice of software that contains all the development tools needed to construct your world. This DevSuite can be compiled, and released publically allowing people to submit their own ideas, and contribute to the game. With this you could allow your game to be player-constructed, based on a set of rules that players should follow in order to submit new things to the game. Or you can just send the software to your developers.

I already released a couple of versions, the current available version is really different to our upcoming version, and I recommend waiting for v1.0, it'll be great.

Also Elex, I saw you on MSN today, but it wasn't you, it was somebody else! Anyway, I wanted to ask for the website, do you want a plain HTML website, or do you want a website like the Oasis Source site, where you can easily control your content from an admin panel. I can create a skin for it so it looks unique and RPG-ish. Let me know.

Elexxorine
23 Mar 2007, 09:01
I'd like something with an updating admin thingy so I can update the site from any computer if possible. So is OS just M:RPGE2 with a new name? I really like M:RPGE2 and the built in game maker... If I were to redo HavenHold graphically it'd be either 2d or isometric (if it looks good).

GameBoy
25 Mar 2007, 02:22
Well, M:RPGe was originally a plain open source engine (But really messy and really buggy). M:RPGe 2 was initially meant to be a game development kit design so that you didn't need to program anything to get a game working (Sorta like PlayerWorlds, but already a million times better).

I decided to back to it's original roots and release a new open source engine, only this time it's not buggy, it's faster, more secure, and has a new DevSuite program so you can do all your game editing through one peice of software, and share it with other developers.

I know you like programming Elex, get a copy of Visual Basic Studio 6, and Oasis will be a greating learning tool for you.

I'll get the HavenHold website up as soon as possible

007bond
25 Mar 2007, 08:24
Is that Visual Studio 6, or Visual Basic 6?

GameBoy
26 Mar 2007, 02:46
sorry, Visual Studio 6

I'm now working on the HavenHold website:
http://www.havenhold.co.nr/

What do you think of this:

Elexxorine
26 Mar 2007, 07:57
Thanks Steve. But why a castle?

Could you also pm me admin account details for the site, so I can but my stuff on it.

GameBoy
26 Mar 2007, 10:24
Dunno, I can easily change it. I'll set you up an admin account after you register

Elexxorine
26 Mar 2007, 11:30
KK. Registered as DePaw.

Elexxorine
27 Mar 2007, 10:49
Update:
Been testing the battle codes loads, killed lots of bugs (mainly typo's) and it now works quite smoothly. Added colours to the battle texts, red for you were hit, green if you hit your target. I also got monster spawning perfect - in the test map whne you enter a room it'll spawn a giant rat for you to kill (A hyper one that always attacks you too), it actually checks to see if there's a spare giant rat in the monster store room, if there is it moves that one to where it wants, otherwise it makes a clone of the 'back-up' copy of the monster and grabs that one. This means that therre's enough rats to go around but the onject will keep being used and reused. (The monsters are moved back to the store room and healed back to normal stats when killed).

There's only normal physical attacks so far with damage changing with your weapon and enemy's armour then an added bit a variance...

I think it's getting very nearly ready for first alpha now. I just to do a few more things and it's ready. Can everybody here who wants to test it let me know somehow? Also if sme-one can come up with a really cool name for the starting city I'll give them a prize!!!

Steve, I'll be needing that server very soon though I amy be able to do some of my own hosting over the holidays... I'd like to get my site in order before them though.... kk??

GameBoy
29 Mar 2007, 09:31
The website is fine for now. I'll set up my Quest server later today.

Elexxorine
29 Oct 2007, 20:04
Anyway, I'm getting on well with the game atm. I left it alone for a while and have picked it up again. I'll be having an alpha test soon in the future, I'll give a more exact time as I get more done, as they're are quite a few more things I want in it before release than I did before. If any of you guys are interested at all, let me know so I can keep you updated and such. I'm also getting a neat site, kindly hosted by Gameboy, he just needs to sort out the sql stuff for me... The website is still http://www.havenhold.co.nr btw... But the content will be changing soon.

I'm also making good progress with the actual game content. I want to have 1-2 hours playing material in the release so you can get a good feel for what the game will be like. You'll also be the first to find out about the plot, at least the start of it. Tron knows it already though as he's been helping me get some ideas together and such.

Lot me know if you're interested. I know I've been saying 'almost ready' for ages now but I keep wanting to add more to it. But I've written myself a set list of what to add, and when that's done I'll be releasing it for testing.

Alpha 1.6:
Done:
* Skills.
* Redo stats.
* Simple weather system, with visability.
* Make list of bio mods, effects. (don't ask!)
To-Do:
* Finish bio mods.
* Make journal/quest log.
* Add AR to equipable armour.
* Finish 'stat_workout' proc.
Game:
* One section of main city.
* Estimated 1-2 hours game play on release.

Alpha 1.7:
* Timered fast travel (eg: boat, train, spaceships).
* Put laws in (no killing or stealing).
* Bounty system.
* MAGIC.
* Trading.
* Write up poss new battle system.
Game:
* Whole of city, plus outside.
* Continue with the plot.
* 3-5 hours game play.

Alpha 1.8:
* Space travel.
* Prayer owned houses, ships, etc.
Game:
* New world!
* New race?

Hope this list sounds good! It'll be first released after 1.6 is finished. I'll play it all myself a few times first tom ake sure stuff works ok at least single player, and that there's enough content to keep you going for a while... :P

paul_one
30 Oct 2007, 18:43
Sounds like the feature list is a bit full!

Whenever I think of things being released I remember some quote I read that nothing is ever 'perfect' when it's released - it's more a balance of setting out specific goals, and getting close enough to have something people can use/enjoy.

The story is cool - although MUDs aren't my bag.

Elexxorine
30 Oct 2007, 18:48
Well, I'm releasing it as 1.6 at first. With the features, I'm basically finishing off what I started with the armour and stat stuff. The biomods are simple and fit in nicely with the visibility stuff, want to get the two intergrated sooner rather than later, and visability tied in with the weather/time. Also I have to put the journal/quest log in now for the game content stuff, as there will be quite a few quests for people to do.

Bio mods is neat, it covered all thing that can be different about your body. Such as going blind in one or both eyes, losing them, deafness, super hearing, night vision, gills, lungs, arms, legs, tails, wings.... !