ohrrpgce / ohrrpgce Goto Github PK
View Code? Open in Web Editor NEWOfficial Hamster Republic RPG Construction Engine (mirror of SVN repository)
Home Page: https://rpg.HamsterRepublic.com/ohrrpgce/Source
License: Other
Official Hamster Republic RPG Construction Engine (mirror of SVN repository)
Home Page: https://rpg.HamsterRepublic.com/ohrrpgce/Source
License: Other
----------------------------------------------------------------------------- Official Hamster Republic RPG Construction Engine (O.H.R.RPG.C.E) http://HamsterRepublic.com/ohrrpgce/ ----------------------------------------------------------------------------- Welcome to the OHRRPGCE Source Code! This file gives some basic instructions for compiling the OHRRPGCE, some hints for hacking improvements, and some history of the code. ----------------------------------------------------------------------------- We strongly recommend reading http://rpg.HamsterRepublic.com/ohrrpgce/Source for more detailed up-to-date compiling instructions and documentation of the source code, especially http://rpg.HamsterRepublic.com/ohrrpgce/Compiling Please see whatsnew.txt for the changelog. ----------------------------------------------------------------------------- LICENSE: This program is free software; you can redistribute it and/or modify it. Dual licensed under the GNU GPL v2+ and MIT Licenses. Read LICENSE.txt for terms and disclaimer of liability. Any .RPG files you create are yours to distribute as you please; You hold your own copyright to games you make with this engine. ----------------------------------------------------------------------------- WINDOWS/LINUX/UNIX: Recommend FreeBASIC version 1.08.0 Requires minimum FreeBASIC version 1.04.0 Download FreeBASIC from http://freebasic.net/ http://rpg.hamsterrepublic.com/ohrrpgce/Getting_FreeBasic Compiling requires Python and Scons Building HSpeak requires Euphoria v4.0+: http://www.OpenEuphoria.com/ (Compiling x86_64 versions of HSpeak requires Euphoria 4.1+) Compiling gfx_directx.dll (optional) requires Visual C++ and a DirectX SDK. (See http://rpg.hamsterrepublic.com/ohrrpgce/Compiling#gfx_directx) x86, x86_64, and ARM on Win32, GNU/Linux, OSX and Android are tested. ----------------------------------------------------------------------------- MAC OS X: Compiling requires Python, Scons, and FreeBASIC 1.09+, or else a fork of FB Read http://rpg.hamsterrepublic.com/ohrrpgce/Compiling_in_Mac_OS_X ----------------------------------------------------------------------------- ANDROID: Requires a fork of FreeBASIC 1.06+ Requires sdl-android (ohrrpgce fork) See http://rpg.hamsterrepublic.com/ohrrpgce/Compiling_for_Android for info or try ./docker/ohrrpgce-build-env-android/andr-oldstyle.sh ----------------------------------------------------------------------------- WEB: Compiling requires Scons, Emscripten, and a fork of FreeBasic with emscripten support. Try ./docker/ohrrpgce-build-env-emscripten/emscr.sh Testing web builds doesn't work on file:// urls, use a local webserver. `python3 -m http.server` in the source dir, http://localhost:8000/ ----------------------------------------------------------------------------- INSTRUCTIONS Unpack the source code to a new folder Install FreeBASIC Install Python 3 if needed Install SConscript Run "scons --help" to see the many options and targets available Run "scons" to compile a debug build of Game and Custom Run "scons release=1" for release builds (Unix only) You can run "scons install" to install system-wide or as part of creating a package. You can run linux/ohrrpgce.py to create a .deb file. ----------------------------------------------------------------------------- MAKING IMPROVEMENTS There are still lots of bugs that need to be fixed. For a list of known bugs, visit http://HamsterRepublic.com/ohrrpgce/buglist.php We also welcome code-cleanup and new features as long as you don't break compatibility with existing games. If you want to submit a improvement see http://rpg.hamsterrepublic.com/ohrrpgce/Source#Submitting_Improvements ----------------------------------------------------------------------------- WHAT IF YOU WANT TO BREAK COMPATIBILITY? We don't reccomend breaking compatibility from the official version, but you are welcome to make your own "fork" of the OHRRPGCE code as long as you obey the conditions of the Dual GPL & MIT License. For practical purposes that means you can pick one licence or the other as best suits your needs for your own fork, but if you wish to contribute your changes back to us for inclusion in the official version, you should comply with both licenses. ----------------------------------------------------------------------------- HISTORY The OHRRPGCE's source code has a long history! The first version was written back in 1996 using QuickBasic 4.5 and some ASM libraries on a 486 DOS computer. The code was very messy, but gradually, patiently, over many years it has been incrementally cleaned up. Some of it is in very good shape while other parts of the code still show the legacy of technical debt. On the whole, we the developers are quite proud of how this codebase has grown from something promitive into something-- well, not modern, but certainly lovingly crafted! After releasing the source code under the GPL, it turns out that several people did in fact have time and motivation to improve the code. These new developers were a blessing, and have revitalized OHRRPGCE development. Although some questionable code still exists, it is always getting better. The OHRRPGCE has become a joyous exercise in incrementally transforming a BIG BALL OF MUD into well-structured code, while maintaining backwards compatibility all along the way. In 2021 we relicenced to GPLv2+ & MIT dual license by unanimous consent of all contributors. The code base is big and varied, but we hope that doesn't discourage you. Play around with the code, have fun, communicate with the other developers whenever you have questions, and if you make any improvements that you would like us to merge back into the official version, submit patches/pull requests; see http://rpg.hamsterrepublic.com/ohrrpgce/Source#Submitting_Improvements ----------------------------------------------------------------------------- James Paige - [email protected] - http://HamsterRepublic.com/ohrrpgce/ ----------------------------------------------------------------------------- Do you want to keep up with the latest development progress? Subscribe to the Developer's Mailing list: http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org -----------------------------------------------------------------------------
[bz#42]
NeoTA has provided me with a python script, "basclean.py" to clean up the
indentation in the OHR's source code. This should make the code much more readable.
From: @bob-the-hamster
Reported version: unknown
[bz#30]
weapon graphics are in the wrong place during "teleport" type attacker animations.
Weapon graphics are never aligned neatly (see bug bz#29 (#1042)) but in the case of
"teleport" type animations, weapon graphics are especially misplaced.
Fixing this requires a lot of battle code cleanup.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
Blocker for: bz#58
[bz#25]
An extremely high value for the "speed" stat (like 200) can cause heroes to get
stuck.
This is a timing issue, and will require some re-writing of my messy battle code
to fix.
temporary workaround: Don't make a hero that fast! A hero with a speed of 30 is
already super-fast
From: @bob-the-hamster
Reported version: 20040628 Ozarks
Severity: minor
[bz#11]
If you dismount a vehicle across the edge of a wraparound map, and if the "pass
walls while dismounting" bitset is on, your hero will walk backwards (moonwalk)
all the way around the map.
I know why this is happening, it is just kindof a pain to fix. Both wraparound
maps and vehicles are poorly planned hacks that I did not account for when
writing the map code.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#15]
In most menus in CUSTOM, it is possible to just type an ID number, rather than
holding down the arrow keys to scroll through available editable-things. In the
shop editor, cannot type in the shop ID number to jump to a particular shop.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#18]
In the map editor, pressing Ctrl+F fills the screen with the currently selected
tile, but does not apply the tile's default passability. Instead it leaves the
pre-existing passability in place.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
Severity: minor
[bz#45]
most of the arrays are single-precision because this is the default! And in this
way it uses twice as much memory as needed!
just by switching the largest arrays to integer, you could massively improve
memory usage! (and speed, too; some arrays currently occupy almost 64k where
they could use 32k!)
I have changed most arrays to use INTEGER type. This works OK as far as i can
tell; and it speeds up CUSTOMs graphics editing areas in DOSBox.
I'll attach a patch shortly.
From: @0ion9
Reported version: 20050519 Quaternion
[bz#2]
In the map editor, when resizing a map, you can press and hold the ALT key to
make the arrow keys resize the map faster. While the ALT key is held down, the
limits on maximum map size are not properly respected, allowing you to create a
map larger than the maximum size (16000 tiles in area) which crashes the program.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#39]
When you insert a hero name into a textbox using ${H#} ${C#} or ${P#}, if you do
not leave enough room, a long name may go over the right-hand side of the
screen, and wrap back on the other side in an ugly manner.
This happens because textboxes have no automatic wrapping support.
Fixing this bug would require a major overhaul of the way text boxes work.
From: @bob-the-hamster
Severity: feature request
[bz#31]
If you win the battle while a hero is in the middle of an attack, their weapon
picture can continue to display during the victory dance.
[Edit: attack animations and attacks by enemies can get stuck too --TMC]
Yet another bug that can only be fixed with a big cleanup of battle code :P
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#14]
Equipment with negative stat bonuses should not be able to reduce hero's stats
below zero
I am not totally sure whether or not I want to fix this, because heey; if you
wanna use negative stat bonuses, why not?
However, if I do not fix this misfeature, I need to fix all situations where
negative stats cause crashes.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
Severity: minor
[bz#29]
The position of weapon graphics in relationship to hero graphics is not
consistent, and is very difficult for the author to align.
I need to add weapon alignment data. This will probably come in the form of a
"hand" point for heroes, and a "handle" point for weapons.
From: @bob-the-hamster
Severity: feature request
Duplicates: bz#58
[bz#13]
There is currenty (almost) no math overflow checking in battle, so certain
situations, such as extremely high damage can result in a crash.
I need test cases with attacks that do so much damage they cause errors. 32767
is the maximum damage, but I am not sure in what situations exceeding that will
cause a crash.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#8]
Sometimes when running GAME.EXE under VDMS the game will lock up at the title
screen or the joystick calibration screen after several seconds. This is somehow
related to VDMS's joystick support.
Need more information:
* Does this happen on aall computers, or just for some people?
* Can this bug be avoided by disabling VDMS's joystick support?
* Exactly how much time must pass on the title screne or joystick calibration
screen before GAME locks up?
From: @bob-the-hamster
Reported version: 20040628 Ozarks
Operating system: Windows XP
[bz#28]
heroes don't use their "walk" animation for "dash-in" type attacker animations.
Fixing this requires a lot of clean-up of my ugly messy battle code. Bleck!
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#6]
It has been reported to me that "Oscillate" attacks animate as "Normal" attacks
when used on Allies (need confirmation)
In my own tests oscillate animation seems to work fine, so the problem may be
dependand upon which attack motion or attacker motion is used, maybe? If so,
which motions do it right? which do it wrong?
From: @bob-the-hamster
Reported version: 20040628 Ozarks
Severity: minor
[bz#26]
Importing a BMP file with an odd-numbered width dimensions does not work right.
For example, if your BMP file is 41x33 pixels it will not import right, but if
you make it one pixel wider; 42x33 it will work fine.
workaround: only use BMP files of even width
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#46]
The strings "Level up for " and " levels for " displayed after battles are not
customisable in CUSTOM.EXE.
From: @rversteegen
Reported version: unknown
Severity: minor
[bz#48]
A bit of code reorganisation to help with porting. All function declarations for the assembly-language library moved to a single include file, and all source files changed to reflect this.
From: Simon Bradley <neworiginal>
Reported version: 20050519 Quaternion
[bz#43]
Not yet sure if it hapens every hour, but when playing under VDMS, game.exe will
crash on the hour. Running on winXP. At least Fenrir-Lunaris also has
encountered this bug
needs more testing
From: @rversteegen
Reported version: unknown
[bz#5]
When an enemy attacks with the "First target" attack target type, it can hit
other heroes besides the first. (need confirmation)
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#7]
Optional spread attacks sometimes spread when you want them focused. This bug is
hard to reproduce, and I do not even know if it still happens. A consistently
reproducable test-case will probably be required in order to fix the bug.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
Severity: minor
[bz#20]
If an NPC (or a plotscript) displays a text box that does not exist, unusual
things can happen, including possibly a crash.
Normally you cannot assing non-existant text boxes to NPC's, but you can assign
a text box to aan NPC, and then delete the text box.
I think correct behavior for a non-existant text box would be to just display an
empty text box.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#36]
The command NPC Y(#) will return the ID number of the NPC referenced if no
copies of that NPC exist on the given map. It should return a value of -1 to
indicate that there are none of the referenced NPCs.
From: Mike Willis <msw188>
Reported version: 20040628 Ozarks
Operating system: Windows ME
[bz#1]
Items that increase stats (not including HP and MP) outside of battle are
supposed to permanently increase the max stat, but that is currently not
happening. only the "current" stat gets increased, so the effect goes away after
they next equip or level up
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#49]
There are still a bunch of GOTO statements scattered through the code. They
shame me. I must fix them.
From: @bob-the-hamster
Reported version: 20050519 Quaternion
[bz#40]
When resizing a map, normally you cannot make the width less than 16, and the
height less than 10. However, when making one dimension very large, causing the
other to be reduced to fit in the 32000 tile limit, the other dimension can be
reduced beyond the minimum.
A map with a tiny (less than minimum) dimension can still be "edited", but it
will appear glitched.
From: @pkmnfrk
Reported version: 20040628 Ozarks
[bz#27]
NPCs cannot walk across the edges of a wraparound map. Although the hero may
walk across the edges, enemys stop at the edges as if it was an invisible wall.
This is because the NPC code was all written before I added walkaround map
support as an afterthought.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#10]
using a jump attack on a target that is jumping can cause the first jumper to
get stuck off the screen
If both an enemy and a hero attack each other with a jump attack at the same
time, the one who jumped first never comes down.
Technically, only their graphics get stuck off-screen. IIRC, they still get
their turn, and can still keep attacking.
Fixing this requires me to re-write and clean up a lot of battle code. Something
I have to do anyway, but that I am not looking forward too :P
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#16]
When an enemy's HP is cured higher than 32767 the enemy's HP goes negative and
it dies. I do have a test-case for this bug already.
see also bug bz#13 (#1026) which is related.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
Duplicates: bz#13 (#1026)
[bz#34]
Imported songs cannot be deleted, but erasing their names makes them appear to
be deleted.
I should not use the presence or lack of a song name as aan indicator of whether
or not a song is present. When you delete the name of an imported song, it
should display "untitled" or something like that.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#38]
Act in advance of the battle-engine by choosing actions quickly.
If an enemy-targeted action is not-yet-executed when the battle ends*, it may
target a empty enemy slot instead of canceling out. Most obvious in attacks
involving the striker moving to a place adjacent to the enemy.
*when i defeat all enemies but the textboxes informing me of exp,gp, items
gained have yet to appear.
From: @0ion9
Reported version: 20040628 Ozarks
[bz#19]
Sometimes the default passability feature can be quite helpful, and other times
it can be a big pain. it would be helpful if there was an easy way to turn
default passability on and off while editing a map.
From: @bob-the-hamster
Severity: feature request
[bz#12]
An NPC at the edge of a wraparound map does not block the hero at the opposite
edge. When you walk across the edge of a wraparound map into a tile occupied by
an NPC, you step on top of it, rather than being blocked by it.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#9]
Elemental strength/weakness/absorbtion is not yet applied to spells used outside
of battle. This can screw up any out-of-battle cure spells that depend on
elemental effects... fortunately, not many people make their cure spells/items
this way, so I don't get yelled at for this bug very often ;)
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#50]
There are a couple of problems preventing the source from being compiled under
QB7.1 :
-stack() has not been renamed astack() in sglobals.bi
-bcom45.lib should not be linked anymore
-bcl71enr.lib needs to be made available to FREELINK instead (it is
automatically added for linking by qb71, it seems)
-nocom.obj should no longer be linked, it seems that it is contained in
bcl71enr.lib (linking both results in duplicate definition warnings)
From: @rversteegen
Reported version: unknown
[bz#35]
When you kill an enemy set to "Flee instead of die" and another enemy is spawned
in its place, the new enemy is facing backwards.
I just need to reset the enemy's direction after it finishes dying. this should
be fairly simple, in comparison to the other messy battle bugs that remain,
anyway :)
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#23]
"Don't revive heroes at Inn" bitset does not work. An inn will revive all dead
heroes regardless of this setting.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#32]
when no exp/gold are earned from a battle, the box should not be show at all,
rather than being shown blank
From: @bob-the-hamster
Reported version: 20040628 Ozarks
Severity: minor
[bz#41]
From Rya:
Before I start replying, there's one thing. You said you can raise the maximum
stats if you let the spell raise stats outside of battle. I tried that now
because you weren't so sure and found out that it works, but only until the hero
levels up. Then the stat will be reset to the normal.
(sorry if I told you already, but I can't remember it ^^")
I remember this bug, and thing it should be pretty easy to fix. IIRC, the
stat-bonus code is only applying the bonus to the "Current" stat and increasing
it over the maximum, and it should be applying the bonus to both the current and
maximum at the same time... or something like that
From: @bob-the-hamster
Reported version: 20040628 Ozarks
Duplicates: bz#1 (#917)
[bz#24]
In the text-box appearance editor, the numbering for backdrops is off-by-one
From: @bob-the-hamster
Reported version: 20040628 Ozarks
Severity: minor
[bz#21]
If you save on a door, you will go through the door when you load. This happens
because doors only activate when you step on them, after completing a movement,
but loading from a saved game has to position your hero on the map, and this
positioning counts as a movement and triggers the door (also triggers step-on
NPC's in the same way.)
I need to write a special-case for loading to bypass this bug.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#17]
the default maptile on a map does not fill the map with that tile's passability.
For most purposes, this is no problem. On most maps, the default tile is a grass
or dirt tile with blank passability.
However, on some dungeon maps or cave maps, the author may want the default
passability to be impassable, or perhaps on a world-map the author may want the
default tile to fill the map with "B" passability for boats.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
Severity: minor
[bz#37]
I encountered this bug with several games (possibly all would, were i to play
them long enough): I play a game with game.exe, and after a arbitrary amount of
time it locks up -- music keeps playing, i cannot do anything.
Games i see this bug with: Fox and the Eight-six, purgatory, Wandering Hamster..
anything sufficiently intersting that i might play for more than 15 minutes.
I intend to find out whether i can replicate this effect on SAMPLE.RPG ( i
suspect i can -- it seems independent both of the game and the saves)
From: @0ion9
Reported version: 20040628 Ozarks
Operating system: Windows 98
[bz#22]
Step-on activated NPCs don't get triggered if you hold still and they walk
underneath you
This happens because step-on activation is only triggered when the hero
completes a step, not when each NPC completes a step.
Checking step-on activation for every NPC in every game cycle might result in a
performance slowdown, so this bug might not be fixable.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#4]
The "Unreversable Picture" bitset does not work for certain attacks. I believe
this is dependant on the attacks animation pattern, but it would be great if
somebody could help me figure out which attack animation patterns do it right
and which do it wrong.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
Severity: minor
[bz#33]
An enemy with the "unescapable" bitset is turned on does not prevent the player
from running away if it is non-visible because of performing a "jump" type attack.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
[bz#3]
It is rare, but if you time it right, sometimes heroes can hit an untargetable
enemy if it is the last enemy left in battle. This is difficult to reproduce. A
consistent testcase will probably be neccisary for this to get fixed.
From: @bob-the-hamster
Reported version: 20040628 Ozarks
Severity: minor
Duplicates: bz#38 (#1051)
[bz#47]
When a script is run, it is assigned script buffer and heap one int ahead of
where it should be.
Additionally, if either the buffer or heap is filled exactly, an overflow is
triggered, even though the script fis completely
From: @rversteegen
Reported version: unknown
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.