If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Proto:Dungeon Siege/Cut Code

From The Cutting Room Floor
Jump to navigation Jump to search

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

Blank.png
Revision History
Several bits of version history was removed between beta and release.

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".