the cutting room mirror

Cut Code

This article has a talk page!
view on tcrf.net

This is a sub-page of Proto:Dungeon Siege.

Enemies#

Test Enemies#

Mana Chicken - [t:template,n:mana_chicken]

   doc = "Tasty Mana Fried Chicken. take two.";
   category_name = "ambients";
   specializes = base_chicken;
   [actor]
   {
       [skills]
       {
           intelligence =  0, 0, 50;
           nature_magic =  0, 0, 50;
       }
       drops_spellbook = false;
   }
   [aspect]
   {
       life = 1;
       max_life = 1;
       mana = 0;
       max_mana = 200;
       mana_recovery_period = 1.0;
       mana_recovery_unit   = 2.0;
       [textures] { 0=b_c_na_ckn_white; }
       is_selectable    = true;
   }
   [common]
   {
       [template_triggers]
       {
           [*]
           {
               action* = call_sfx_script("feathers_flap_white");
               condition* = receive_world_message("we_anim_sfx",1);
           }
       }
   }
   [mind]
   {
       jat_guard = world\ai\jobs\actors\good\job_helper_follow.skrit;
       jat_brain = jat_none;
       actor_auto_xfers_mana = true;
       on_friend_entered_ocz_flee = false;
       sight_range = 12.0;
   }
   [inventory]
   {
       selected_active_location = il_active_primary_spell;
       [other] { il_active_primary_spell=spell_mana_channel; }
   }
   [physics]
   {
       break_effect = feathers_white;
       explode_when_killed = true;
   }

}

Heal Chicken - [t:template,n:heal_chicken]

   doc = "Tasty Mana Fried Chicken. take two.";
   category_name = "ambients";
   specializes = base_chicken;
   [actor]
   {
       [skills]
       {
           intelligence =  0, 0, 50;
           nature_magic =  0, 0, 50;
       }
       drops_spellbook = false;
   }
   [aspect]
   {
       life = 1;
       max_life = 1;
       mana = 0;
       max_mana = 200;
       mana_recovery_period = 1.0;
       mana_recovery_unit   = 2.0;
       [textures] { 0=b_c_na_ckn_red; }
       is_selectable    = true;
   }
   [common]
   {
       [template_triggers]
       {
           [*]
           {
               action* = call_sfx_script("feathers_flap_red");
               condition* = receive_world_message("we_anim_sfx",1);
           }
       }
   }
   [mind]
   {
       jat_guard = world\ai\jobs\actors\good\job_helper_follow.skrit;
       jat_brain = jat_none;
       actor_auto_heals_others_life = true;
       on_friend_entered_ocz_flee = false;
       sight_range = 12.0;
   }
   [inventory]
   {
       selected_active_location = il_active_primary_spell;
       [other] { il_active_primary_spell=spell_infuse_life; }
   }
   [physics]
   {
       break_effect = feathers_red;
       explode_when_killed = true;
   }

}

Spells#

In release, there are special template_triggers for nature and combat magic. They appear to not have been made as or implemented as of Beta 1 00.05.06.0703.

Animate Dead

     category_name = "magic";
     doc = "scroll animate dead";
     specializes = base_spell_dark;
   [aspect]
   {
         gold_value = 500;
   }
   [common]
   {
         description = "Raises a skeleton to do your bidding";
         screen_name = "Animate Dead";
   }
   [common]
   {
       [template_triggers]
       {
           [*]
           {
                 action* = call_sfx_script( "item_ring" );
                 condition* = receive_world_message("we_dropped");
           }
       }
   }
   [gui]
   {
         active_icon = b_gui_ig_i_ic_w_mag_dark;
   }
   [inventory]
   {
       [delayed_pcontent]
       {
           [oneof*]
           {
               [all*]
               {
                     il_main = skeleton;
               }
           }
       }
   }
   [magic]
   {
         cast_range = 10;
         cast_reload_delay = 1;
         is_one_shot = true;
         mana_cost = 1;
         max_level = 20;
         required_level = 10;
         requires_line_of_sight = true;
         speed_bias = 1;
         spell_skill_name = "Animate Dead";
         target_type_flags = tt_dead_friend | tt_dead_enemy;
         usage_context_flags = uc_passive;
   }

}

Confusion

     category_name = "magic";
     doc = "scroll confusion";
     specializes = base_spell_good;
   [aspect]
   {
         gold_value = 500;
   }
   [common]
   {
         screen_name = "Confusion";
   }
   [common]
   {
       [template_triggers]
       {
           [*]
           {
                 action* = call_sfx_script( "item_ring" );
                 condition* = receive_world_message("we_dropped");
           }
       }
   }
   [gui]
   {
         active_icon = b_gui_ig_i_ic_w_mag_light;
   }
   [magic]
   {
         apply_enchantments = false;
         cast_range = 20;
         cast_reload_delay = 5;
         effect_duration = 30;
         is_one_shot = true;
         mana_cost = 4;
         requires_line_of_sight = true;
         target_type_flags = tt_conscious_enemy | tt_unconscious_enemy;
         usage_context_flags = uc_aggressive;
   }
   [spell_switch_alignment]
   {
         alignment_freq_max = 5;
         alignment_freq_min = 3;
         description = "Confusion spell";
         effect_script = confusion;
         screen_name = "Confused";
   }

}

Deathball

     category_name = "magic";
     doc = "scroll deathball";
     specializes = base_spell_dark;
   [aspect]
   {
         gold_value = 150;
   }
   [attack]
   {
         damage_max = 10;
         damage_min = 5;
   }
   [common]
   {
         description = "Throws a tracking ball of death at an enemy";
         screen_name = "Deathball";
       [template_triggers]
       {
           [*]
           {
                 action* = call_sfx_script("green_deathball");
                 condition* = receive_world_message("we_req_cast");
           }
           [*]
           {
                 action* = call_sfx_script( "item_ring" );
                 condition* = receive_world_message("we_dropped");
           }
       }
   }
   [gui]
   {
         active_icon = b_gui_ig_i_ic_w_mag_dark;
   }
   [magic]
   {
         cast_range = 20;
         cast_reload_delay = 1;
         is_one_shot = false;
         mana_cost = 2;
         max_level = 10;
         required_level = 3;
         requires_line_of_sight = true;
         speed_bias = 1;
         spell_skill_name = "Deathball";
         target_type_flags = tt_conscious_enemy | tt_unconscious_enemy | tt_breakable | tt_terrain;
         usage_context_flags = uc_offensive;
   }

}

Gorack's Deathball

     category_name = "magic";
     doc = "scroll gorack deathball";
     specializes = base_spell_monster;
   [attack]
   {
         damage_max = 3;
         damage_min = 2;
   }
   [common]
   {
       [template_triggers]
       {
           [*]
           {
                 action* = call_sfx_script("green_deathball");
                 condition* = receive_world_message("we_req_cast");
           }
       }
   }
   [magic]
   {
         cast_range = 10;
         cast_reload_delay = 1;
         is_one_shot = false;
         mana_cost = 0;
         requires_line_of_sight = true;
         speed_bias = 1;
         target_type_flags = tt_conscious_enemy;
         usage_context_flags = uc_offensive;
   }

}

spell_gorack_deathball is still mentioned in the game's code, but was commented out of use.

Divine Intervention

     category_name = "magic";
     doc = "scroll divine intervention";
     specializes = base_spell_good;
   [aspect]
   {
         gold_value = 150;
   }
   [common]
   {
         screen_name = "Divine Intervention";
       [template_triggers]
       {
           [*]
           {
                 action* = call_sfx_script( "item_ring" );
                 condition* = receive_world_message("we_dropped");
           }
       }
   }
   [gui]
   {
         active_icon = b_gui_ig_i_ic_w_mag_light;
   }
   [magic]
   {
         cast_range = 10;
         cast_reload_delay = 1;
         effect_duration = 60;
         is_one_shot = true;
         mana_cost = 1;
         requires_line_of_sight = true;
         speed_bias = 1;
         spell_skill_name = "Divine Intervention";
         target_type_flags = tt_unconscious_friend | tt_conscious_friend;
         usage_context_flags = uc_defensive;
       [enchantments]
       {
           [*]
           {
                 alteration = alter_strength;
                 description = "Holy Strength";
                 duration = 60;
                 value = 2*(#magic+10);
           }
           [*]
           {
                 alteration = alter_dexterity;
                 description = "Holy Skill";
                 duration = 60;
                 value = 2*(#magic+10);
           }
       }
   }
   [spell_status_effect]
   {
         description = blessed;
         effect_script = divine_intervention;
         state_name = intervention;
   }

}

Magic Lantern

     category_name = "magic";
     doc = "scroll magic lantern";
     specializes = base_spell_good;
   [aspect]
   {
         gold_value = 250;
   }
   [common]
   {
         screen_name = "Magic Lantern";
       [template_triggers]
       {
           [*]
           {
                 action* = call_sfx_script( "item_ring" );
                 condition* = receive_world_message("we_dropped");
           }
       }
   }
   [gui]
   {
         active_icon = b_gui_ig_i_ic_w_mag_light;
   }
   [magic]
   {
         cast_range = 10;
         cast_reload_delay = 1;
         effect_duration = 30;
         is_one_shot = true;
         mana_cost = 30/(#magic+1);
         max_level = 5;
         requires_line_of_sight = true;
         speed_bias = 1;
         spell_skill_name = "Magic Lantern";
         target_type_flags = tt_unconscious_friend | tt_conscious_friend;
         usage_context_flags = uc_defensive;
   }
   [spell_status_effect]
   {
         description = lit;
         effect_script = magic_lantern;
         state_name = lantern;
   }

}

Probably removed as there were no places dark enough to constitute its implementation. Seems to suggest there was plans for darker nights / dungeons.

Reused in Dungeon Siege II#

Mana Plants#

/*

 ============================================================================
 ----------------------------------------------------------------------------

   File        :   brain_mana_plant.skrit

   Author(s)   :   Bartosz Kijanka

   Purpose     :   The mana mushroom will automatically give mana to anyone
                   nearby.

   ToDo:

   $$$     Re-evaluate transmitting state only as often as spell re-casting.

   (C)opyright 2000 Gas Powered Games, Inc.

 ----------------------------------------------------------------------------
 ============================================================================

  • /

Go m_Go$; GoMind m_Mind$; Job m_Job$; Goid m_Target$;

startup state Startup$ { }

//////////////////////////////////////////////////////////////////////////////// // init event OnJobInitPointers$( Job job$ ) {

   m_Job$      = job$;
   m_Go$       = job$.GetGo();
   m_Mind$     = job$.GetGo.GetMind();

}

event OnJobInit$( Job job$ ) {

   OnJobInitPointers$( job$ );

   SetState Meditating$;

}

state Meditating$ {

   transition
   {
       -> Meditating$:     OnWorldMessage( WE_FRIEND_SPOTTED );
   }

   event OnWorldMessage$( eWorldEvent e$, WorldMessage msg$ )
   {
       if( e$ == WE_FRIEND_SPOTTED )
       {
           Go bud$ = MakeGoid( msg$.Data1 ).Go;
           if( bud$ != NULL )
           {
               if( bud$.Aspect.ManaRatio < 1.0 )
               {
                   Go spell$ = m_Go$.Inventory.SelectedSpell;
                   if( spell$ != NULL )
                   {
                       spell$.Magic.SCast( bud$ );
                       m_Target$ = bud$.Goid;
                       m_Job$.SetTimer( 0 );
                       SetState( Transferring$ );
                   }
               }
           }
       }
   }

   event OnEnterState$
   {
   }

}

state Transferring$ {

   transition
   {
       -> Transferring$:       OnWorldMessage( WE_JOB_TIMER_DONE );
   }

   event OnWorldMessage$( eWorldEvent e$, WorldMessage /*msg$*/ )
   {
       if( e$ == WE_JOB_TIMER_DONE )
       {
           Go target$ = m_Target$.Go;
           if( target$ != NULL )
           {
               if( target$.Aspect.ManaRatio >= 1.0 )
               {
                   SetState( Meditating$ );
               }
           }
       }
   }

   event OnEnterState$
   {
       //m_Go$.DebugProbeReport( "attacking\n" );
       // $$$ change this period to only as often as required to keep the spell going continuously...
       // $$$ Rick needs to add interface to Magic for this...
       m_Job$.SetTimer( 1.0 );
   }

}

Quests#

Cut Quests#

There are several cases where bringing people to places were quests in of themselves.

Ulora_to_Stonebridge

   [*]
   {
       name            = Ulora_to_Stonebridge;
       speaker         = "Ulora";
       speaker_role    = "Azunite Scribe";
       description     = "Escort Ulora to Stonebridge.";
       sample          = s_v_cr_ulora1.mp3;
   }

Gyorn_to_Glacern

   [*]
   {
       name            = Gyorn_to_Glacern;
       speaker         = "Gyorn";
       speaker_role    = "Old Soldier";
       description     = "Escort Gyorn to Glacern.";
       sample          = s_v_bt_gyorn1.mp3;
   }

There was also a quest featuring a cut character named Ilandro and them asking you to help find their friends. It appears the dialogue was never recorded, and they used a commented out line audio file from Gyorn_to_Glacern.

quest_find_ilandro_friend

   [*]
   {
       name            = quest_find_ilandro_friend;
       speaker         = "Ilandro";
       speaker_role    = "Minstrel";
       description     = "Find Ilandro's friends.";

// sample = s_v_bt_gyorn1.mp3;

   }

Differences#

  • Gyorn's quest was slightly different. In the beta it was "Seek out Gyorn in Stonebridge", but in release it's "Seek Gyorn in Stonebridge".