The Dink Network

Re: discarded dmod ideas?

August 22nd 2006, 10:53 PM
girl.gif
joshriot
Peasant They/Them United States
keep it real 
has anyone thought of any really cool ideas for dmods that they either dont know how to make or just havent gotten around to?

ill give you some examples:

like a pond where dink can fish
or time with day and night by changing palletes
or a bow hunting range with different ranking sizes of game
or exploding shoes or something like that?

basically i just want people to post their ideas here of things theyve thought of that would be great for a dmod but they either dont know how to code or dont have the time to do. why let these ideas go to waste?
August 23rd 2006, 09:19 AM
custom_magicman.gif
magicman
Peasant They/Them Netherlands duck
Mmmm, pizza. 
Well... I've already made these, but the whole D-Mod they got into is discarded.

Sokoban-style minigame. It's actually pretty good, checks for wall collisions, block collisions, etc. The base screen script has a loop that checks if all "destination"-tiles have a block on them, and then it executes some sort of script (e.g.: warp to other screen, door opens, item appears). There's still a bug that allows you to push multiple blocks, of which only one has to pass a collision-check.

Torches, Zelda-style. Add a number of torches to a room, and a darkness-script. They start initially unlit, the room is dark then. If you light them all with the fireball spell, the room lights up. They stay lit for 60 seconds, and they remember screenchanges. So if you light one, spend 45 seconds on another screen and then return, it'll still burn until its full 60 seconds are over. If one or more of them go out, it's dark again.
I've made several variations to these, including one that if you light all torches on the screen, a door will open. If one (or more) of them goes out, the door closes. I also made an enemy that's very strong when it's dark, and easier to kill when it's light.

The light/dark-ness is done with partial fades from reDink.exe, but I guess I can make some palette thing and make them work with 1.08; if I ever figure out how palette-editing works. As long as variable bleeding is fixed.

In the series "Creative with enemies", I've made a modified spike-enemy. It's a bomber-spike now They walk around on their pins, and the death-sequence (the one when they lie on the ground) is used as attack: When they're on the ground, they shoot a fireball in the air. Then they get up. A few moments later, a shadow appears on the ground near Dink, and the fireball will come down.
There's also a hellfire-version, which is stronger. The hellfire-balls explode (like the bomb) when they hit the ground. Careful when using these, as they also hurt other enemies, which might make a battle easier than expected. Or put a very tough (e.g. stone giant) in a room, and a few of these buggers, and let Dink kill the giant by directing the spike's hellfire-balls at him.

I've made a few "boss-spells", for use in any wizard-style boss battle. The best one, in my opinion, is the firewall. It chooses a point on the screen, and builds a firewall with that point as its center. The direction of the firewall is random.

I also don't know what the heck this post does in this thread, as the ideas aren't discarded, but the D-Mod is.
August 23rd 2006, 10:29 AM
girl.gif
joshriot
Peasant They/Them United States
keep it real 
well so they are going to be used in a different dmod? otherwise technically arent the ideas discarded?
August 23rd 2006, 12:29 PM
pq_merm.gif
jess
Peasant She/Her
 
what about something taking place underwater??
August 23rd 2006, 05:38 PM
wizardg.gif
slayer4990
Peasant He/Him Canada
Foppery and Whim! 
maybe, the enemies have a small health bar on top of them that changes whenever you attack them
August 23rd 2006, 05:50 PM
slayer.gif
MadStalker
Peasant He/Him Finland
tag line 
I did a similar thing in Chores. Except that it shows the enemy's health as numbers, for example: HP: 24/50. The remaining health points are also stored after a screenchange.
August 23rd 2006, 06:20 PM
girl.gif
joshriot
Peasant They/Them United States
keep it real 
i like the health bar idea! except you have to earn it first. like dink takes a training class or identification magic or something. and of course it doesnt work on bosses.
August 23rd 2006, 06:23 PM
custom_magicman.gif
magicman
Peasant They/Them Netherlands duck
Mmmm, pizza. 
Healthbars could be made by making them a "shadow" of the original monster (some strange sp_brain and sp_brain_parm setting), and let them have a script that checks health changes

Here's a some code I wrote up:

en-monster.c //or whatever enemy you have

void main( void )
{
//Little used trick to retrieve the value you set.
//Change 50 to whatever you want.
int &hp = sp_hitpoints(&current_sprite, 50);

//This block can be left out if you don't store hp.
//editor_frame could be used instead.
int &ednum = sp_editor_num(&current_sprite);
int &oldhp = editor_seq(&ednum, -1);
if (&oldhp != 0)
{
sp_hitpoints(&current_sprite, &oldhp);
}

//(seq, fr) is the healthbar's pic.
//Brain 15 is the shadow brain. It now mimicks the monster's x and y coördinate, and size.
//Too bad about the size... Mini-monsters will have mini-healthbars.
int &hbar = create_sprite(1,1,15,seq,fr);
sp_brain_parm(&hbar, &current_sprite);
sp_custom("maxhp", &hbar, &hp);
sp_script(&hbar, "healthbar");
//rest of monster script here...
}

healthbar.c

void main( void )
{
//full-size, on top of the sprite
sp_size(&current_sprite, 100);
sp_que(&current_sprite, -20);
int ÷

//Wait a bit so we can transfer some variables. Maybe not needed.
wait(1);
int &shadowing = sp_brain_parm(&current_sprite, -1);
int &maxhp = sp_custom("maxhp", &current_sprite, -1);

loop:
//A wait so the loop doesn't crash the game.
wait(100);

//Retrieve the current amount of hp.
&div = sp_hitpoints(&shadowing, -1);

&div * 100;
&div / &maxhp;
//&div is now the percentage of health.
if (&div > 100)
{
//More health than the maximum? That's not something we can display
&div = 100;
}

//Limit it to the 0-20 range.
//0 is no health, 20 is full health, 10 is middle health, etc.
//Divide by 10 to convert to 0-10 range.
&div / 5;

//For every number between 0 and 20 you should have a frame, else just change the range.
sp_pframe(&current_sprite, &div);

//And loop back!
goto loop;
}

Note: This is experimental. I haven't ever attached a script to a shadow-brained sprite before, and I don't know what will happen, or if it even works. If there's a way to do it, though, then this is.
August 23rd 2006, 08:22 PM
peasantmg.gif
ehasl
Peasant He/Him
 
Ah, this is the place where I post my dead projects. Nice initiative, Josh. Hehe.

A long time ago I released a timed exploding fireball as DinkGrenade on DN. Much later, after some negative reviews (mostly because it was not what the name would suggest), I wanted to make a new version. The new features would be grenade graphics (I actually made the inventory graphic good, just a green bomb: http://home.online.no/~sorica/grenade.gif)
and realistic physics, both throwing, gravity and collisions. It is possible to make, but I do not care enough. Feel free to use the graphic or any ideas for your own mods.

My other dead project is called "Battle Demonstration", and is basically some scripts that are supposed to show a flexible way to make battles between different teams of NPCs and monsters and Dink (or other playing characters). I am apparently too lazy to just perfect and release it, but I will put up some of the basic system here:
first the title screen (not really a part of the system, but I think it looks good. Sword stolen from Morrowind. ): http://home.online.no/~sorica/battle_title.jpg
and
http://home.online.no/~sorica/battle_title.bmp

The short version is this: sp_gold stores the team of the sprite. Everything else is just the way the sprite treats enemies and attackers. Dink is ignored in the demonstration, but that can easily be changed. Also, in this script only the sp_gold and the sp_brain are necessarily left unchanged, if you do not want really different behavior. I think one weakness of the script is that it does not search through sprites with all types of brains.

Then the long version, the script. I am sure it is terrible:
script for one sprite
void main( void )
{
//the following are local integers used for targeting
int &teamb;
int &mtargetb;
int &attackerb;
//This is the team of the current sprite.
int &current_teamb = 2;
//The following is not important for the targeting...
int &mcounter;

sp_speed(&current_sprite, 1);
sp_strength(&current_sprite, 10);
sp_defense(&current_sprite, 0);
sp_hitpoints(&current_sprite, 40);
sp_brain(&current_sprite, 9);
sp_distance(&current_sprite, 50);
sp_range(&current_sprite, 30);
sp_timing(&current_sprite, 0);
sp_nohit(&current_sprite, 0);

sp_base_walk(&current_sprite, 600);

preload_seq(601);
preload_seq(603);
preload_seq(607);
preload_seq(609);

sp_base_death(&current_sprite, 550);

preload_seq(551);
preload_seq(553);
preload_seq(557);
preload_seq(559);

sp_base_attack(&current_sprite, 590);

preload_seq(592);
preload_seq(594);
preload_seq(596);
preload_seq(598);

wait(500);
goto check;
}

void check()
{
check:
wait();
//This is the team of the current sprite. Since sp_gold is unused, I can store anything in it.
sp_gold(&current_sprite, &current_teamb);

//Find the current target...
&mtargetb = sp_target(&current_sprite, -1);

//If there is no target, or the target is Dink, get a new one.
if (&mtargetb < 2)
{
sp_target(&current_sprite, 0);
goto target;
}

//If the current target is friendly, try again.
&teamb = sp_gold(&mtargetb, -1);
if (&teamb == &current_teamb)
{
sp_target(&current_sprite, 0);
goto target;
}
//Return to check after waiting 0,2 seconds.
wait(200);
goto check;

target:
wait();

&mtargetb = get_rand_sprite_with_this_brain(9, &current_sprite);
if (&mtargetb > 0)
{
//if the new target is friendly, try again.
&teamb = sp_gold(&mtargetb, -1);
if (&teamb == &current_teamb)
{
goto target;
}
if (&teamb != &current_teamb)
{
//if the new target is an enemy, go on and attack it
sp_target(&current_sprite, &mtargetb);
}
}
//Return to check again...
goto check;
}

void hit()
{
&attackerb = &enemy_sprite;
//check the team of the sprite that just hit the current one
&teamb = sp_gold(&attackerb, -1);
if (&teamb == &current_teamb)
{
//If the new target is friendly , get a new one, using "target".
goto target;
}
if (&teamb != &current_teamb)
{
//If it is an enemy, though, go on and attack
sp_target(&current_sprite, &attackerb);
playsound(29, 22050, 0, &current_sprite, 0);
}
//Return to check, to make sure the sprite remains active and fighting.
goto check;
}

void attack()
{
playsound(31, 22050,0,&current_sprite, 0);
&mcounter = random(2000,0);
sp_attack_wait(&current_sprite, &mcounter);

//Return to check, to make sure the sprite remains active and fighting.
goto check;
}

Script finished. Understand?
August 23rd 2006, 09:22 PM
burntree.gif
Striker
Noble She/Her United States
Daniel, there are clowns. 
realistic physics, both, throwing, gravity and collisions.

Way, way, waaaay ahead of ya. I've been sitting on the code for something that does just that for about a year, but I've been too lazy to put in a d-mod. There are a few touch-ups that I haven't yet gotten around to trying now that I know all the v1.08 features that I really should to take more of a look at.
August 24th 2006, 03:43 AM
peasantmg.gif
ehasl
Peasant He/Him
 
Do you have realistic gravity in all directions in a normal Dink world? Or just from the top of the screen to the bottom? If you have the first, then why don't YOU finish the DinkGrenade?
August 24th 2006, 05:21 AM
custom_fish.png
SabreTrout
Noble He/Him United Kingdom
Tigertigertiger. 
Striker's grenade is pretty awesome, it must be said.

One of the (many) ideas I never got around to implementing was QTE style moments for AKT2. Say, you're walking into a room with a fireplace, a chair and a Goblin. Some text might flash up saying "Press X NOW!". If you pressed the button in the time allowed, it would initiate a small cut-scene where Jarvis would kick the chair into the Goblin, causing him to stumble back into the fire. Otherwise, you'd just have to fight him normally.

I never got it working to an acceptable standard, however, and it was dropped.
August 24th 2006, 08:11 AM
custom_magicman.gif
magicman
Peasant They/Them Netherlands duck
Mmmm, pizza. 
Not something like that, but I made a "bash space as often as you can" sequence
August 24th 2006, 12:35 PM
burntree.gif
Striker
Noble She/Her United States
Daniel, there are clowns. 
Because none of what I did was based on your code. Most of the code I used for reference came from Seth or Paul.
August 25th 2006, 02:02 PM
knightg.gif
cypry
Peasant He/Him Romania
Chop your own wood, and it will warm you twice. 
time with day and night by changing palletes
You can simulate the night, if you create a big shadow on the screen(made by dots). Still, the shadows will look bad, with moving sprites.
August 25th 2006, 03:35 PM
slayer.gif
rabidwolf9
Peasant He/Him United States
twitch.tv/rabidwolf9 
That looks like crap though.
August 25th 2006, 04:54 PM
death.gif
Just recolor the tiles and sprites using a darker palette.
August 26th 2006, 08:34 AM
knightg.gif
cypry
Peasant He/Him Romania
Chop your own wood, and it will warm you twice. 
I agree, but I used it and it works.