Page 1 of 1


PostPosted: Mon Aug 06, 2012 10:34 pm
by malkin
The fetid Medlar comes from the Toxic Norns' home world. Toxic Norns will find this manky very nutritious, but other creatures may become intoxicated.

Re: Medlar

PostPosted: Thu Apr 18, 2013 6:32 pm
by malkin
Just thought I should publish the source code to this, in the hope of helping other developers. :geek: For this one, I had trouble getting my agent to compile correctly.

Code: Select all

*Flag agent, stores information about my patch plant

new: simp 1 205 10853 "blnk" 0 0 9000

*The first thing you're going to do is define the number of your spawn script - script 1000.
*This is the script that the patch core will trigger when it's time to spawn a fruit/bud/whatever.

setv name "spawn_script" 1000

*Now you have to define the file name and image number of the sprite that will represent your plant
*when it is fully grown. This will be used both in placing a fruit/bud and serving as the little
*indicator that shows on the hand when you're placing the patch.

sets name "sprite_file" "medlar"
setv name "sprite_pose" 13

*finally, you need to define the classifiers for your produce

setv name "prod_fmly" 2
setv name "prod_gnus" 9
setv name "prod_spcs" 10853

*Now that you have everything defined, you need to contact the patch core agent (1 1 22929) and let
*it know that you're here-- the patch scripts will take it from there and generate the
*placement windows, let the user choose options, and so on.

seta va00 targ
enum 1 1 22929
   mesg wrt+ targ 1000 va00 0 0

**That's it for your install script!

*Now for your spawn script-- this is 1000 as we defined it in the install script.
scrp 1 205 10853 1000
*If this script is running, it's because the patch core decided it was time for your
*patch to spawn a new bud. It has also sent the coordinates it has decided were proper in
*_p1_ (x) and _p2_ (y)

*So first, create your little fruit to be:
*As of May 2012, patch_plane lets the users choose which plane the fruit will appear on.
   new: simp 2 9 10853 "medlar" 14 0 name "patch_plane"
   attr 80
   bhvr 48
   accg 2
   perm 64
   fric 100
   elas 30
   aero 2
*And move it to the coords sent by the patch agent:
   mvto _p1_ _p2_
*Now, a few new name variables have been defined in your patch flag agent since you last
*left it-- these are settings that have been defined in the options window as well as a
*unique patch ID number that has been generated. You'll need to copy these over to your
*your budding fruit!
*The patch ID is important-- if you don't copy it over, the patch plant won't realize that
*the fruit is there, and it will spawn another one, and continue spawning FOREVER.
   setv name "patch_id" mame "patch_id"
*then there's the ticks as set in the options panel:
   tick rand mame "tickfrom" mame "tickto"
*personally I like to define a default tick too, in case something goes wrong and the tick ends
*up as 0.
   doif tick eq 0
      tick 200

*This is the fruit pickup script, copypasted from Clabs
scrp 2 9 10853 4
*if it hasn't been picked up before, a few things are going to change...
*like it starts actually acting like fruit~
   doif ov00 eq 0
      setv ov00 1
   doif attr eq 67
      attr 195
   perm 60

scrp 2 9 10853 6
   doif carr eq null
      plne 4000

*And the timer....copypasted but greatly edited!
scrp 2 9 10853 9

   doif ov00 eq 0
      doif carr eq null
         doif pose lt 13
            setv va00 pose
            addv va00 1
            pose va00
*changed from 64 to 80
            doif attr eq 80
*this is the turning point at which it becomes edible~
               attr 67
            addv ov99 1

         doif ov99 ge 20
            setv ov99 0
            doif attr eq 67
               attr 195
            setv ov00 1
*if ov00 is 1, it's been picked or fallen, and thus stops growing and starts rotting.
   doif ov00 eq 1
*We're going to set its patch id to 0 now.. this detaches it from the patch itself
*So that it doesn't count toward the number that can grow on the bush
      setv name "patch_id" 0
      addv ov99 1
      doif ov99 ge 50
         doif carr eq null and room targ <> -1
            altr room targ 4 0.01
            altr room targ 3 0.01
            kill ownr

*eat script!
scrp 2 9 10853 12

   setv va00 posl
   setv va01 post

   stim writ from 78 1
   stim writ from 82 1

   wait 10
   snde "eat1"
   kill ownr

enum 1 205 10853
   kill targ
enum 2 9 10853
   kill targ

and now the PRAY file:
Code: Select all

group DSGB "Medlar"

"Dependency 1" "gb_pp_medlar.c16"
"Dependency 2" "medlar.c16"
"Dependency 3" "medlar.catalogue"
"Dependency 4" "gb_pp_medlar.c16"
"Dependency 5" "medlar.c16"
"Dependency 6" "medlar.catalogue"
"Agent Animation Gallery" "gb_pp_medlar"
"Agent Description" "This medlar is a little manky."
"Agent Animation File" "gb_pp_medlar.c16"
"Agent Animation Gallery" "gb_pp_medlar"
"Agent Author" "Amaikokonut/Malkin"
"Remove script" "enum 1 205 10853\n   kill targ\nnext\nenum 2 9 10853\n   kill targ\nnext"

"Script Count" 1
"Script 1" @ "medlar.cos"

"Agent Type" 0
"Dependency Count" 6
"Dependency Category 1" 2
"Dependency Category 2" 2
"Dependency Category 3" 7
"Dependency Category 4" 2
"Dependency Category 5" 2
"Dependency Category 6" 7
"Agent Sprite First Image" 0
"GB_Category" 1

inline FILE "gb_pp_medlar.c16" "gb_pp_medlar.c16"
inline FILE "medlar.c16" "medlar.c16"
inline FILE "medlar.catalogue" "medlar.catalogue"

And here's the CAOS2PRAY information, which went just before the *flag agent commentary:

Code: Select all

*GB Template
*# Pray-File "gb_pp_medlar.agent"
*# DS-Name "Medlar"

*# Depend gb_pp_medlar.c16
*# Depend medlar.c16

*# Depend medlar.catalogue
*# Attach gb_pp_medlar.c16

*# Attach medlar.c16

*# Attach medlar.catalogue

*# desc = "This medlar is a little manky."
*# Agent Animation File = "gb_pp_medlar.c16"
*# Agent Animation Gallery = "gb_pp_medlar"
*# Agent Sprite First Image = 0
*# GB_Category = 1
*# Agent Author = "Amaikokonut/Malkin"