forums | blogs | polls | tutorials | downloads | rules | help

Error message

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls in remember_me_form_alter() (line 78 of /var/www/siegetheday.org/sites/all/modules/contrib/remember_me/remember_me.module).

I have a problem with Tank Viewer,it says Unknown header everytime I try to open a file

Phantasmos's picture

I have a problem with Tank Viewer,it says Unknown header everytime I try to open a file.I was using it few yrs ago and didnt have any problems.So hope someone here knows whats the problem

You can use the DS2 Tank Viewer that comes with the DS2 Toolkit to open .dsres or .ds2res files.

http://www.siegetheday.org/?q=node/971

Hope that fixes your problems. Smile

Phantasmos's picture

It works! thank you very much Smile I need to ask for more help.I modded long time ago,my username on siegecore was Swiper with RedXIII as a profile pic,dont know if u remember,anyway,I want to know how can I put weapon I created in some container or make it drop from specific boss or something.If not possible then how can I put it in shop so it comes for sale ONLY when I reach certain level? and whats the formula to make progressive weapons? like when u lv up weapon gains better stats.

I remember you, Swiper. Smile

To get a weapon in a certain container you add it to ctn_container_regional.gas.

Let's take the first one:

[t:template,n:barrel_cav_01_cf_r1]
{
category_name = "cf_r1";
doc = "1W_barrel_cav_01_cf_r1";
specializes = base_container_barrel;
[aspect]
{
model = m_i_cav_barrel-01;
}
[attack]
{
damage_max = 113;
damage_min = 61;
}
[inventory]
{
[pcontent]
{
[oneof*]
{
[gold*]
{
chance = 0.2;
max = 9521;
min = 3521;
}
[oneof*]
{
chance = 0.2;
il_main = potion_mana_medium;
il_main = potion_health_medium;
}
[oneof*]
{
chance = 0.25;
il_main = potion_mana_large;
il_main = potion_health_large;
}
}
}
}
[trapped]
{
trap = trp_generator_explosion_barrel;
}
}

You would need to add the following to the code:

[t:template,n:barrel_cav_01_cf_r1] { category_name = "cf_r1"; doc = "1W_barrel_cav_01_cf_r1"; specializes = base_container_barrel; [aspect] { model = m_i_cav_barrel-01; } [attack] { damage_max = 113; damage_min = 61; } [inventory] { [pcontent] { [oneof*] { [all*] { chance = 1.0; il_main = your weapon template name; } [gold*] { chance = 0.2; max = 9521; min = 3521; } [oneof*] { chance = 0.2; il_main = potion_mana_medium; il_main = potion_health_medium; } [oneof*] { chance = 0.25; il_main = potion_mana_large; il_main = potion_health_large; } } } } [trapped] { trap = trp_generator_explosion_barrel; } }

For a boss drop let's let the bear in the first cave be our guide. You just find his template in the bc_r1/objects/actor.gas and add the weapon to his inventory:

[t:bear,n:0x0670000f] { [inventory] { [other] { il_main = bd_un_le_f_pad_avg; replace with your weapon template } } [placement] { q orientation = 0,0.857167,0,0.515038; p position = -3.22138,0.080575,0.649907,0x7399111c; } }

Shops and world drops can be set in the pcontent block of the weapon's template, let's look at one with several different pcontent levels:
[t:template,n:ax_ra_g_c_2h2b_fin]
{
doc = "Flesh Splitter";
specializes = base_axe;
[aspect]
{
model = m_w_axe_086;
selection_indicator_scale = 0.65;
}
[attack]
{
attack_range = 0.5;
f damage_max = 138.000000;
f damage_min = 102.000000;
is_two_handed = true;
}
[common]
{
pcontent_special_type = rare, unique;
screen_name = "Flesh Splitter";
}
[gui]
{
active_icon = b_gui_ig_i_ic_axe_004;
equip_requirements = strength:30;
inventory_height = 3;
inventory_icon = b_gui_ig_i_w_axe_202;
inventory_width = 2;
}
[pcontent]
{
[base]
{
f modifier_max = 14.000000;
f modifier_min = 3.000000;
}
[c_mag]
{
f damage_max = 292.000000;
f damage_min = 216.000000;
equip_requirements = strength:55;
inventory_icon = b_gui_ig_i_w_axe_207;
model = m_w_axe_088;
f modifier_max = 56.000000;
f modifier_min = 40.000000;
}
[c_str]
{
f damage_max = 217.000000;
f damage_min = 161.000000;
equip_requirements = strength:43;
inventory_icon = b_gui_ig_i_w_axe_205;
model = m_w_axe_087;
f modifier_max = 40.000000;
f modifier_min = 22.000000;
}
[o_avg]
{
active_icon = b_gui_ig_i_ic_axe_008;
f damage_max = 159.000000;
f damage_min = 117.000000;
equip_requirements = strength:33;
inventory_icon = b_gui_ig_i_w_axe_203;
model = m_w_axe_091;
f modifier_max = 23.000000;
f modifier_min = 9.000000;
}
[o_fin]
{
active_icon = b_gui_ig_i_ic_axe_008;
f damage_max = 186.000000;
f damage_min = 138.000000;
equip_requirements = strength:38;
inventory_icon = b_gui_ig_i_w_axe_204;
model = m_w_axe_092;
f modifier_max = 32.000000;
f modifier_min = 14.000000;
}
[o_str]
{
active_icon = b_gui_ig_i_ic_axe_008;
f damage_max = 253.000000;
f damage_min = 187.000000;
equip_requirements = strength:49;
inventory_icon = b_gui_ig_i_w_axe_206;
model = m_w_axe_093;
f modifier_max = 49.000000;
f modifier_min = 33.000000;
}
}
}

Look at the equip_requirements and the f modifier_min and f modifier_max to get an idea where you want your weapon to appear.

And as for scaling weapons you can use this in the code:

[*] { alteration = alter_melee_damage_max; value = (((#melee)*0.5)*0.5); duration = #infinite; is_permanent = true; is_single_instance = false; } [*] { alteration = alter_melee_damage_min; description = "Alters Damage According to Melee Skill"; value = (((#melee)*0.5)*0.5); duration = #infinite; is_permanent = true; is_single_instance = false; }

Adjust as necessary to get what you want from it. Smile

Phantasmos's picture

I am little confused about boss drops,Im playing ds2 and I cant seem to find how to add weapon to boss inventory to make it drop.boss already has some items in its inventory.for example idk where to add item I want to drop when battling Giant Trisilisk,or Knnoted shambler,an example please? Smile and btw thanks for responding.

Phantasmos's picture

when you see my msg pls answer to this too.I made a shield template but shield in game doesnt show as unique,it shows as blue item although I put unique.also it doesnt show 45 defense as I put there,but it shows 58.here is template
[t:template,n:sara_unique_shield_lv15]
{
doc = "unique_sara_shield";
specializes = base_shield;
[aspect]
{
gold_value = 12000;
material = largesteel; //jmc_shield
model = m_w_shd_001-b;
[textures]
{
0 = b_w_shd_001-b;
}
}
[common]
{
allow_modifiers = true;
screen_name = "Thin Wall";
base_screen_name = "Unique shield"
rarity = unique;
}
[defend]
{
defense = 45.0;
}
[gui]
{
equip_requirements = melee:15,aegis:1;
inventory_icon = b_gui_ig_i_w_shd_001-b;
inventory_height = 2;
inventory_width = 2;
}
[magic]
{
[enchantments]
{
[*]
{
alteration = alter_max_life;
value = 50;
description = "+ Health";
duration = #infinite;
is_permanent = true;
is_single_instance = false;
}
[*]
{
alteration = alter_physical_resistance;
value = 0.10;
description = "+10% Melee and Ranged Resistance";
duration = #infinite;
is_permanent = true;
is_single_instance = false;
}
[*]
{
alteration = alter_strength;
value = 12;
description = "+ Strength";
duration = #infinite;
is_permanent = true;
is_single_instance = false;
}
[*]
{
alteration = alter_chance_to_block_melee_damage;
value = 20;
description = "+% Chance to Block Melee Attacks";
duration = #infinite;
is_permanent = true;
is_single_instance = false;
}
[*]
{
alteration = alter_magic_find_chance;
value = 30;
min_value_ceiling = 15;
description = "+% Chance to Find Magic Items";
duration = #infinite;
is_permanent = true;
is_single_instance = false;
}
}
}
[pcontent]
{
[base]
{
item_level = 15.0;
}
}
}
[loot_drop_indicator]{}
}

Sharkull's picture

I don't have the game installed, so looking for the problem in your code is impossible, but I can say that game drops from any mob are not done through their inventory (this is what they can use).

There will be a macro for the drop... possibly pointing to a container. I can't remember since it has been so long... but there should be something in the mob's template pointing to a macro... follow that lead.

Edit:
Oh, and in the template, you may try getting rid of the "allow_modifiers = true;" line.

Your coding is closing too early because of a missing closing } in the aspect block for starters. Everything from the "common" block on is not being read by engine.

[t:template,n:sara_unique_shield_lv15] { doc = "unique_sara_shield"; specializes = base_shield; [aspect] { gold_value = 12000; material = largesteel; //jmc_shield model = m_w_shd_001-b; [textures] { 0 = b_w_shd_001-b; } } [common] { allow_modifiers = true; screen_name = "Thin Wall"; base_screen_name = "Unique shield" rarity = unique; }

And you have too many closing } in the entire code. Should be:
[t:template,n:sara_unique_shield_lv15]
{
doc = "unique_sara_shield";
specializes = base_shield;
[aspect]
{
gold_value = 12000;
material = largesteel; //jmc_shield
model = m_w_shd_001-b;
}
[textures]
{
0 = b_w_shd_001-b;
}
[common]
{
allow_modifiers = true;
screen_name = "Thin Wall";
base_screen_name = "Unique shield"
rarity = unique;
}
[defend]
{
defense = 45.0;
}
[gui]
{
equip_requirements = melee:15,aegis:1;
inventory_icon = b_gui_ig_i_w_shd_001-b;
inventory_height = 2;
inventory_width = 2;
}
[magic]
{
[enchantments]
{
[*]
{
alteration = alter_max_life;
value = 50;
description = "+ Health";
duration = #infinite;
is_permanent = true;
is_single_instance = false;
}
[*]
{
alteration = alter_physical_resistance;
value = 0.10;
description = "+10% Melee and Ranged Resistance";
duration = #infinite;
is_permanent = true;
is_single_instance = false;
}
[*]
{
alteration = alter_strength;
value = 12;
description = "+ Strength";
duration = #infinite;
is_permanent = true;
is_single_instance = false;
}
[*]
{
alteration = alter_chance_to_block_melee_damage;
value = 20;
description = "+% Chance to Block Melee Attacks";
duration = #infinite;
is_permanent = true;
is_single_instance = false;
}
[*]
{
alteration = alter_magic_find_chance;
value = 30;
min_value_ceiling = 15;
description = "+% Chance to Find Magic Items";
duration = #infinite;
is_permanent = true;
is_single_instance = false;
}
}
[pcontent]
{
[base]
{
item_level = 15.0;
}
}
[loot_drop_indicator]{}
}

Phantasmos's picture

I found this in dark wizard boss template,he has a macro for it:

[inventory]
{
create_pcontent_on_drop = true; //required call for the reward drop
[pcontent]
{
macro = a2_pq6_princess_boss; // special quest reward loot macro
}
}
}

so I searched for that macro in act2 macro templates and found this.
///////////////////////////////////////////////////////////////////////////////
//
// Quest: Act II PQ6 (The Princess)
// Task: Defeat the Dark Mage Boss
//
// NOTE: CONTAINS A ONE TIME REWARD
//
///////////////////////////////////////////////////////////////////////////////

[a2_pq6_princess_boss]
{
[all*]
{
local_journal_bool = "reward:a2_pq6_mageboss";
macro_true = quest_level_6_macro_all_clients;
macro_false = quest_level_10_macro_all_clients;
}
}

now Im stuck,I have no idea where to find this reward and how to edit it,tried to search in containers but it isnt there.

Sharkull's picture

Look for quest_level_6_macro_all_clients... if that doesn't lead anywhere, I'm not sure where to look next.

The macros are called from flicks... and without the files to look at I can't track down where the actual items are listed. (It will be at least a week before I can even think about taking a look).

The quest level macros like quest_level_6_macro_all_clients are found in contentdb\pcontent\macros\quest_pcontent_macros.gas.

While that's one way of adding custom items to a monster's template, you can also add it in their template or map instance, for instance this adds a special item stone_glb_crystwind to a Krug Commander's inventory.

[inventory]
{
[equipment]
{
es_weapon_hand = axe_2h_krug_commander;
}
[pcontent]
{
[all*]
{
il_main = stone_glb_crystwind;
}
[all*]
{
macro = miniboss_monster_macro;
}
}
}

This block is similiar but adds a quest item to a container's template;

[inventory]
{
create_pcontent_on_drop = false;
drop_at_use_point = true;
[pcontent]
{
[all*]
{
il_main = map_lore_elddim; //quest item
}
[all*]
{
macro = quest_gold_macro; //gold drop macro
}
}
}

So all you need to do is add a section [all*] under the pcontent field in the inventory block which containes the line il_main = YOUR_OBJECT_HERE;

I haven't tried it but it appears if you want a special item to drop from a macro you'd use a similiar format as this macro for amren's personal reward in sq_personal_macros.gas;

[sq_personal_amren_firsttime]
{
[all*]
{
[all*]
{
player_drop_type = all;
il_main = bw_amren;
}
[all*]
{
macro = quest_level_8_macro_all_clients;
}
}
}

Hope this info helps you out.

Phantasmos's picture

ty all for info,I think I made it but I will see only when I get to the boss.Ill let u know if it worked Smile

Phantasmos wrote:
ty all for info,I think I made it but I will see only when I get to the boss.Ill let u know if it worked Smile

Good luck.

Possibily an easier way for you to test these types of things is to make a small test map in siege editor 2 (assuming you downloaded and installed it) and place a modified monster with the drop you want. It saves a lot of work in the long run if something doesn't work out how you expected.

Phantasmos's picture

ok I passed the boss,I wanted to put ring item so it drops from giant trilisk but when I completed quest when I need to put azunite artifact and it destroys all mobs in xeria temple,all drops there from monster were replaced with that ring,also boss dropped only gold,without any items,so I guess I made a mistake by adding it to boss drops.Anyway I threw away that idea and I have another question,when Im making tank files,what number do I have to put in priotiry part to make it for bw?

type 32767 in priority, but dont tell any other modders i told u that number or their mods may not work lol

Phantasmos's picture

lol k.can you please tell me 1 more thing.how do I make my custom item(unique) to appear in shop at certain part of game? like when my chars reach lv 30 item appears in shop for me to buy and later its gone just like some items during the game?
edit:
oh and this,I just got aegis of death,is it possible to make something so that aegis of death gives my party some buff or somehing? like death ressistance or magic damage or something like that? I mean to do it with all 4 aegis.if thats not possible,I want at least make shield called aegis of death,or life or whatever aegis I get after it,and eventually with all 4 of them to combine it to Shield of Azunai.

its hard to answer without code, so please post some code.
and where did u get the aegis of death? didnt know that was an item. The Shield of Azunai exists in a few mods. guess i dont understand your question, maybe someone else here will help, i dunno

Phantasmos's picture

Aegis of death is quest item,its not real item in inventory its in journal,but I want to make it an item,also all other 4 aegis,I made shield of azunai alrdy but need aegis parts.
here is code for act 1 armor and weapon store,hope it helps:

// ***********************************************
// ACT I STORES
// ***********************************************

/////////////////////////////////////////////////
// Act I Weapon Store
[act_1_weapon_store]
{
[melee]
{
[all*]
{
il_main = #dg_1h_dg:base;
count = 1;
world_specific = mercenary;
}
[all*]
{
il_main = #hm_1h_hm:base;
count = 1;
world_specific = mercenary;
}
[all*]
{
il_main = #st_mg_rs:base;
count = 1;
world_specific = mercenary;
}
[all*]
{
il_main = #melee;
count = 16;
}
[all*]
{
il_main = #melee/3-8;
count = 8;
world_specific = mercenary;
}
[all*]
{
il_main = #melee/3-45;
count = 8;
world_specific = veteran;
}
[all*]
{
il_main = #melee/3-70;
count = 8;
world_specific = elite;
}
}
[ranged]
{
[all*]
{
il_main = #cb_me:base;
count = 1;
world_specific = mercenary;
}
[all*]
{
il_main = #bw_sh:base;
count = 1;
world_specific = mercenary;
}
[all*]
{
il_main = #th_kn:base;
count = 1;
world_specific = mercenary;
}

// random stuff
[all*]
{
il_main = #ranged;
count = 12;
}
[all*]
{
il_main = #ranged/3-8;
count = 8;
world_specific = mercenary;
}
[all*]
{
il_main = #ranged/3-45;
count = 8;
world_specific = veteran;
}
[all*]
{
il_main = #ranged/3-70;
count = 8;
world_specific = elite;
}
}
}

/////////////////////////////////////////////////
// Act I Armor Store

[act_1_armor_store]
{
[armor]
{
// Constant Items
[all*]
{
il_main = #amr_bdy_dryad:base;
count = 1;
world_specific = mercenary;
}
[all*]
{
il_main = #amr_bdy_dryad:base;
count = 1;
world_specific = mercenary;
}
[all*]
{
il_main = #amr_glv_dryad:base;
count = 1;
world_specific = mercenary;
}
[all*]
{
il_main = #amr_bot_dryad:base;
count = 1;
world_specific = mercenary;
}

// Random Items
[all*]
{
il_main = #body;
count = 10;
}
[all*]
{
il_main = #helm;
count = 10;
}
[all*]
{
il_main = #gloves;
count = 10;
}
[all*]
{
il_main = #boots;
count = 10;
}
[all*]
{
il_main = #body/3-6;
count = 8;
world_specific = mercenary;
}
[all*]
{
il_main = #helm/3-6;
count = 4;
world_specific = mercenary;
}
[all*]
{
il_main = #gloves/3-6;
count = 4;
world_specific = mercenary;
}
[all*]
{
il_main = #boots/3-6;
count = 4;
world_specific = mercenary;
}
[all*]
{
il_main = #body/3-45;
count = 8;
world_specific = veteran;
}
[all*]
{
il_main = #helm/3-45;
count = 4;
world_specific = veteran;
}
[all*]
{
il_main = #gloves/3-45;
count = 4;
world_specific = veteran;
}
[all*]
{
il_main = #boots/3-45;
count = 4;
world_specific = veteran;
}
[all*]
{
il_main = #body/3-70;
count = 8;
world_specific = elite;
}
[all*]
{
il_main = #helm/3-70;
count = 4;
world_specific = elite;
}
[all*]
{
il_main = #gloves/3-70;
count = 4;
world_specific = elite;
}
[all*]
{
il_main = #boots/3-70;
count = 4;
world_specific = elite;
}
}
[shield]
{
// Constant Items
[all*]
{
il_main = #amr_shd_buc:base;
count = 1;
world_specific = mercenary;
}
// Random Items
[all*]
{
il_main = #shield;
count = 8;
}
[all*]
{
il_main = #shield/5-10; // Base versions of Buckler and Small Shield
count = 8;
world_specific = mercenary;
}
[all*]
{
il_main = #shield/5-50;
count = 8;
world_specific = veteran;
}
[all*]
{
il_main = #shield/5-75;
count = 8;
world_specific = elite;
}
}
}

also in this code,how do I make only rustguards that are in arena and in agallian trial scale based 2 and stronger? I want for other rustguards to stay normal. /////////////////////////////////////////////////////////////////////////////// // // COMMON MONSTER BASE TEMPLATES // ///////////////////////////////////////////////////////////////////////////////

[t:template,n:base_rustguard]
{
category_name = "ds2_evil_d";
specializes = base_actor_evil_melee_strong;
[aspect]
{
material = mediumsteelsword;
[voice]
{
[attack]
{
priority = high;
* = s_mn_gen_rstgrd_atk1;
* = s_mn_gen_rstgrd_atk2;
}
[break] { priority = high; * = s_mn_gen_rstgrd_frz; }
[die] { priority = high; * = s_mn_gen_rstgrd_frz; }
[enemy_spotted] { priority = high; * = s_mn_gen_rstgrd_sgt; }
[hit_critical] { priority = low; * = s_mn_gen_rstgrd_hit; }
[hit_glance] { priority = low; * = s_mn_gen_rstgrd_hit; }
[hit_solid] { priority = low; * = s_mn_gen_rstgrd_hit; }
[move] { priority = low; * = s_mn_gen_rstgrd_move; }
}
}
[body]
{
min_move_velocity = 1.0;
avg_move_velocity = 1.0;
max_move_velocity = 1.5;
[bone_translator]
{
body_anterior = bip01_spine;
body_mid = bip01_pelvis;
body_posterior = bip01_pelvis;
kill_bone = bip01_spine;
shield_bone = Bip01_UL_Hand;
weapon_bone = Bip01_UR_Hand;
}
[chore_dictionary]
{
chore_prefix = a_c_edm_059_fs;
[chore_attack]
{
chore_stances = 0;
skrit = select_attack;
[anim_files]
{
00=at;
01=at-02;
}
[anim_durations] { fs0 = 2.000; }
}
[chore_default]
{
chore_stances = 0;
skrit = infinite_loop;
[anim_files] { 00=dfs; }
}
[chore_die]
{
chore_stances = 0;
skrit = select_transition;
[anim_files] { 00=di; }
}
[chore_fidget]
{
chore_stances = 0;
skrit = select_fidget;
[anim_files] { 00=dff; }
}
[chore_misc]
{
chore_stances = ignore;
skrit = select_transition;
[anim_files]
{
slep = a_c_edm_059_fs0_ds;
wake = a_c_edm_059_fs0_rv; // second reveal taken out. Because "it looks dorky". ~JM
frez = a_c_edm_059_fs0_frz; //freeze
idle = a_c_edm_059_fs0_dff; //Idle anim, which he does not seem to play on his own!
died = a_c_edm_059_fs0_di;
grnd = a_c_edm_059_fs0_di-hold; //stay dead on the ground
}
}
[chore_walk]
{
chore_stances = 0;
skrit = select_walk;
[anim_files]
{
00=wl;
}
}
}
}
[physics]
{
explode_when_killed = true;
[break_particulate]
{
frag_glb_rustguard_01 = 2;
frag_glb_rustguard_02 = 2;
frag_glb_rustguard_03 = 2;
frag_glb_rustguard_04 = 3;
frag_glb_rustguard_05 = 2;
frag_glb_rustguard_06 = 3;
frag_glb_rustguard_07 = 4;
frag_glb_rustguard_08 = 3;
frag_glb_rustguard_09 = 3;
frag_glb_rustguard_10 = 2;
}
}
}

///////////////////////////////////////////////////////////////////////////////
//
// COMMON MONSTER STATS TEMPLATES
//
///////////////////////////////////////////////////////////////////////////////

[t:template,n:rustguard_stats]
{
specializes = base_rustguard;
[actor]
{
power_level = 15.0;
[skills]
{
monster_level = (32.0 * #is_normal) + (57.0 * #is_veteran) + (79.0 * #is_elite);
strength = 1, 0;
dexterity = 1, 0;
intelligence = 1, 0;
melee = 1, 0;
}
}
[aspect]
{
model = m_c_edm_059_pos_1;
[textures]
{
0 = b_c_edm_059-a;
}
}
[common]
{
membership = rustguard;
screen_name="Rustguard";
}
}
[t:template,n:rustguard_nis_stats]
{
specializes = base_rustguard;
[actor]
{
power_level = 15.0;
[skills]
{
monster_level = (32.0 * #is_normal) + (57.0 * #is_veteran) + (79.0 * #is_elite);
strength = 1, 0;
dexterity = 1, 0;
intelligence = 1, 0;
melee = 1, 0;
}
}
[aspect]
{
model = m_c_edm_059_pos_1;
experience_value = 0;
life = 1000;
max_life = 1000;
mana = 1;
max_mana = 1;
[textures]
{
0 = b_c_edm_059-a;
}
}
[attack]
{
damage_max = 0;
damage_min = 0;
}
[common]
{
membership = rustguard;
screen_name="Rustguard";
}
[defend]
{
// Defense = Character Damage / Expected damage multiplier
// = (8 + 2 * #monster_level) / 0.75
defense = (8 + (2 * #monster_level)) * 1.333 * (1.0 + 0.006 * #monster_level);
}
[efct_emitter]
{
effect = efct_rustguard_freeze;
activate_message = WE_USER_DAMAGE_RELAY;
initially_active = false;
//maintain_state = true; Might want to set this if the player can ever come back and see this guy again... and maybe not.
}
[mind]
{
jat_fidget = world\ai\jobs\common\job_fidget.skrit;
jat_startup ="world\ai\jobs\common\job_startup_reveal.skrit?activate=true";
}
[mind]
{
melee_slot_usage = 2;
}
[inventory]
{
[pcontent]
{
[all*] { chance = 0; }
}
}
}
[t:template,n:rustguard_placed_stats]
{
specializes = base_rustguard;
[actor]
{
power_level = 15.0;
[skills]
{
monster_level = (37.0 * #is_normal) + (61.0 * #is_veteran) + (82.0 * #is_elite);
strength = 1, 0;
dexterity = 1, 0;
intelligence = 1, 0;
melee = 1, 0;
}
}
[aspect]
{
model = m_c_edm_059_pos_1;
[textures]
{
0 = b_c_edm_059-a;
}
}
[common]
{
membership = rustguard;
screen_name="Rustguard";
}
[mind]
{
jat_startup = "world\ai\jobs\common\job_startup_reveal.skrit?auto_reveal=true";
}
}
[t:template,n:rustguard_placed_arena_stats]
{
specializes = rustguard_placed_stats;
[mind] { on_engaged_fled_abort_attack = false; }
}
[t:template,n:rustguard_placed_act3_stats]
{
specializes = rustguard_placed_stats;
[actor]
{
power_level = 122.5;
[skills]
{
monster_level = (38.0 * #is_normal) + (62.0 * #is_veteran) + (83.0 * #is_elite);
strength = 1, 0;
dexterity = 1, 0;
intelligence = 1, 0;
melee = 1, 0;
}
}
[aspect]
{
model = m_c_edm_059_pos_1;
[textures]
{
0 = b_c_edm_059-b;
}
}
[common]
{
membership = rustguard;
screen_name="Rustguard";
}
[physics]
{
explode_when_killed = true;
//explosion_magnitude = 5.0;
[break_particulate]
{
frag_glb_rustguard_01 = 2;
frag_glb_rustguard_02 = 2;
frag_glb_rustguard_03 = 2;
frag_glb_rustguard_04 = 3;
frag_glb_rustguard_05 = 2;
frag_glb_rustguard_06 = 3;
frag_glb_rustguard_07 = 4;
frag_glb_rustguard_08 = 3;
frag_glb_rustguard_09 = 3;
frag_glb_rustguard_10 = 2;
}
}
}

///////////////////////////////////////////////////////////////////////////////
//
// COMMON MONSTER LEAF TEMPLATES
//
///////////////////////////////////////////////////////////////////////////////

[t:template,n:rustguard]
{
doc = "rustguard";
specializes = rustguard_stats;
[act2_castle_rustguard_startup_reveal]
{
_launch_event = we_entered_world;
}
}
[t:template,n:rustguard_nis]
{
doc = "rustguard_nis";
specializes = rustguard_nis_stats;
}
[t:template,n:rustguard_placed]
{
doc = "rustguard_placed";
specializes = rustguard_placed_stats;
}
[t:template,n:rustguard_placed_arena]
{
doc = "rustguard_placed_arena";
specializes = rustguard_placed_arena_stats;
}
[t:template,n:rustguard_placed_act3]
{
doc = "rustguard_placed_act3";
specializes = rustguard_placed_act3_stats;
}

not sure about the aegis of death, u can try to make a shield template for it, but im afraid even if u get it to show it wont look right in shield hand. u can mix the aegis of death graphics with different shield meshes may get some cool shields, so your challenge now is to make the code for it...this is your test for the agallan giants lol

as for the rustguard, i have code to make them pretty darn strong in fact, if code is correct i challenge u to defeat them lol


[t:template,n:rustguard_placed_arena]
{
doc = "rustguard_placed_arena";
specializes = rustguard_placed_arena_stats;
[aspect]
{
scale_base = 2.0;
life = ((33 * #monster_level) + 66) * (1.0 + 0.12 * #monster_level);
max_life = ((33 * #monster_level) + 66) * (1.0 + 0.12 * #monster_level);

}
[mind] { on_engaged_fled_abort_attack = false; }

[actor]
{
power_level = 132.5;
[skills]
{
monster_level = (39.0 * #is_normal) + (63.0 * #is_veteran) + (84.0 * #is_elite);
strength = 1, 0;
dexterity = 1, 0;
intelligence = 1, 0;
melee = 1, 0;
}
}
[attack]
{
damage_max = 1.25 * ((4.7 * #monster_level) + 17.8) * (1.0 + 0.04 * #monster_level);
damage_min = 0.75 * ((4.7 * #monster_level) + 17.8) * (1.0 + 0.04 * #monster_level);
}
[defend]
{
defense = (8 + (2 * #monster_level)) * 1.333 * (1.0 + 0.004 * #monster_level);
}
}
[t:template,n:rustguard_placed_act3]
{
doc = "rustguard_placed_act3";
specializes = rustguard_placed_act3_stats;
[aspect]
{
scale_base = 2.0;
life = ((33 * #monster_level) + 66) * (1.0 + 0.12 * #monster_level);
max_life = ((33 * #monster_level) + 66) * (1.0 + 0.12 * #monster_level);

}
[mind] { on_engaged_fled_abort_attack = false; }

[actor]
{
power_level = 132.5;
[skills]
{
monster_level = (39.0 * #is_normal) + (63.0 * #is_veteran) + (84.0 * #is_elite);
strength = 1, 0;
dexterity = 1, 0;
intelligence = 1, 0;
melee = 1, 0;
}
}
[attack]
{
damage_max = 1.25 * ((4.7 * #monster_level) + 17.8) * (1.0 + 0.04 * #monster_level);
damage_min = 0.75 * ((4.7 * #monster_level) + 17.8) * (1.0 + 0.04 * #monster_level);
}
[defend]
{
defense = (8 + (2 * #monster_level)) * 1.333 * (1.0 + 0.004 * #monster_level);
}

}

Phantasmos's picture

Im not sure where do I put those templates? or I replace some templates? can u pls put them in,so I can just copy and paste them in rustguard.gas?
here is original code,you put those where they need to be and Ill copy and paste it whole over original rustguard.gas k? also ty for helping me Smile

///////////////////////////////////////////////////////////////////////////////
//
// COMMON MONSTER BASE TEMPLATES
//
///////////////////////////////////////////////////////////////////////////////

[t:template,n:base_rustguard]
{
category_name = "ds2_evil_d";
specializes = base_actor_evil_melee_strong;
[aspect]
{
scale_base = 2.0;
material = mediumsteelsword;
[voice]
{
[attack]
{
priority = high;
* = s_mn_gen_rstgrd_atk1;
* = s_mn_gen_rstgrd_atk2;
}
[break] { priority = high; * = s_mn_gen_rstgrd_frz; }
[die] { priority = high; * = s_mn_gen_rstgrd_frz; }
[enemy_spotted] { priority = high; * = s_mn_gen_rstgrd_sgt; }
[hit_critical] { priority = low; * = s_mn_gen_rstgrd_hit; }
[hit_glance] { priority = low; * = s_mn_gen_rstgrd_hit; }
[hit_solid] { priority = low; * = s_mn_gen_rstgrd_hit; }
[move] { priority = low; * = s_mn_gen_rstgrd_move; }
}
}
[body]
{
min_move_velocity = 1.0;
avg_move_velocity = 1.0;
max_move_velocity = 1.5;
[bone_translator]
{
body_anterior = bip01_spine;
body_mid = bip01_pelvis;
body_posterior = bip01_pelvis;
kill_bone = bip01_spine;
shield_bone = Bip01_UL_Hand;
weapon_bone = Bip01_UR_Hand;
}
[chore_dictionary]
{
chore_prefix = a_c_edm_059_fs;
[chore_attack]
{
chore_stances = 0;
skrit = select_attack;
[anim_files]
{
00=at;
01=at-02;
}
[anim_durations] { fs0 = 2.000; }
}
[chore_default]
{
chore_stances = 0;
skrit = infinite_loop;
[anim_files] { 00=dfs; }
}
[chore_die]
{
chore_stances = 0;
skrit = select_transition;
[anim_files] { 00=di; }
}
[chore_fidget]
{
chore_stances = 0;
skrit = select_fidget;
[anim_files] { 00=dff; }
}
[chore_misc]
{
chore_stances = ignore;
skrit = select_transition;
[anim_files]
{
slep = a_c_edm_059_fs0_ds;
wake = a_c_edm_059_fs0_rv; // second reveal taken out. Because "it looks dorky". ~JM
frez = a_c_edm_059_fs0_frz; //freeze
idle = a_c_edm_059_fs0_dff; //Idle anim, which he does not seem to play on his own!
died = a_c_edm_059_fs0_di;
grnd = a_c_edm_059_fs0_di-hold; //stay dead on the ground
}
}
[chore_walk]
{
chore_stances = 0;
skrit = select_walk;
[anim_files]
{
00=wl;
}
}
}
}
[physics]
{
explode_when_killed = true;
[break_particulate]
{
frag_glb_rustguard_01 = 2;
frag_glb_rustguard_02 = 2;
frag_glb_rustguard_03 = 2;
frag_glb_rustguard_04 = 3;
frag_glb_rustguard_05 = 2;
frag_glb_rustguard_06 = 3;
frag_glb_rustguard_07 = 4;
frag_glb_rustguard_08 = 3;
frag_glb_rustguard_09 = 3;
frag_glb_rustguard_10 = 2;
}
}
}

///////////////////////////////////////////////////////////////////////////////
//
// COMMON MONSTER STATS TEMPLATES
//
///////////////////////////////////////////////////////////////////////////////

[t:template,n:rustguard_stats]
{
specializes = base_rustguard;
[actor]
{
power_level = 15.0;
[skills]
{
monster_level = (32.0 * #is_normal) + (57.0 * #is_veteran) + (79.0 * #is_elite);
strength = 1, 0;
dexterity = 1, 0;
intelligence = 1, 0;
melee = 1, 0;
}
}
[aspect]
{
model = m_c_edm_059_pos_1;
[textures]
{
0 = b_c_edm_059-a;
}
}
[common]
{
membership = rustguard;
screen_name="Rustguard";
}
}
[t:template,n:rustguard_nis_stats]
{
specializes = base_rustguard;
[actor]
{
power_level = 15.0;
[skills]
{
monster_level = (32.0 * #is_normal) + (57.0 * #is_veteran) + (79.0 * #is_elite);
strength = 1, 0;
dexterity = 1, 0;
intelligence = 1, 0;
melee = 1, 0;
}
}
[aspect]
{
model = m_c_edm_059_pos_1;
experience_value = 0;
life = 1000;
max_life = 1000;
mana = 1;
max_mana = 1;
[textures]
{
0 = b_c_edm_059-a;
}
}
[attack]
{
damage_max = 0;
damage_min = 0;
}
[common]
{
membership = rustguard;
screen_name="Rustguard";
}
[defend]
{
// Defense = Character Damage / Expected damage multiplier
// = (8 + 2 * #monster_level) / 0.75
defense = (8 + (2 * #monster_level)) * 1.333 * (1.0 + 0.006 * #monster_level);
}
[efct_emitter]
{
effect = efct_rustguard_freeze;
activate_message = WE_USER_DAMAGE_RELAY;
initially_active = false;
//maintain_state = true; Might want to set this if the player can ever come back and see this guy again... and maybe not.
}
[mind]
{
jat_fidget = world\ai\jobs\common\job_fidget.skrit;
jat_startup ="world\ai\jobs\common\job_startup_reveal.skrit?activate=true";
}
[mind]
{
melee_slot_usage = 2;
}
[inventory]
{
[pcontent]
{
[all*] { chance = 0; }
}
}
}
[t:template,n:rustguard_placed_stats]
{
specializes = base_rustguard;
[actor]
{
power_level = 15.0;
[skills]
{
monster_level = (37.0 * #is_normal) + (61.0 * #is_veteran) + (82.0 * #is_elite);
strength = 1, 0;
dexterity = 1, 0;
intelligence = 1, 0;
melee = 1, 0;
}
}
[aspect]
{
model = m_c_edm_059_pos_1;
[textures]
{
0 = b_c_edm_059-a;
}
}
[common]
{
membership = rustguard;
screen_name="Rustguard";
}
[mind]
{
jat_startup = "world\ai\jobs\common\job_startup_reveal.skrit?auto_reveal=true";
}
}
[t:template,n:rustguard_placed_arena_stats]
{
specializes = rustguard_placed_stats;
[mind] { on_engaged_fled_abort_attack = false; }
}
[t:template,n:rustguard_placed_act3_stats]
{
specializes = rustguard_placed_stats;
[actor]
{
power_level = 122.5;
[skills]
{
monster_level = (38.0 * #is_normal) + (62.0 * #is_veteran) + (83.0 * #is_elite);
strength = 1, 0;
dexterity = 1, 0;
intelligence = 1, 0;
melee = 1, 0;
}
}
[aspect]
{
model = m_c_edm_059_pos_1;
[textures]
{
0 = b_c_edm_059-b;
}
}
[common]
{
membership = rustguard;
screen_name="Rustguard";
}
[physics]
{
explode_when_killed = true;
//explosion_magnitude = 5.0;
[break_particulate]
{
frag_glb_rustguard_01 = 2;
frag_glb_rustguard_02 = 2;
frag_glb_rustguard_03 = 2;
frag_glb_rustguard_04 = 3;
frag_glb_rustguard_05 = 2;
frag_glb_rustguard_06 = 3;
frag_glb_rustguard_07 = 4;
frag_glb_rustguard_08 = 3;
frag_glb_rustguard_09 = 3;
frag_glb_rustguard_10 = 2;
}
}
}

///////////////////////////////////////////////////////////////////////////////
//
// COMMON MONSTER LEAF TEMPLATES
//
///////////////////////////////////////////////////////////////////////////////

[t:template,n:rustguard]
{
doc = "rustguard";
specializes = rustguard_stats;
[act2_castle_rustguard_startup_reveal]
{
_launch_event = we_entered_world;
}
}
[t:template,n:rustguard_nis]
{
doc = "rustguard_nis";
specializes = rustguard_nis_stats;
}
[t:template,n:rustguard_placed]
{
doc = "rustguard_placed";
specializes = rustguard_placed_stats;
}
[t:template,n:rustguard_placed_arena]
{
doc = "rustguard_placed_arena";
specializes = rustguard_placed_arena_stats;
}
[t:template,n:rustguard_placed_act3]
{
doc = "rustguard_placed_act3";
specializes = rustguard_placed_act3_stats;
}

It's funny to see how the forum puts smilies in some of the formulas (formulae?). Laughing out loud
However the forum would also support the [code] tag to avoid such (hardly readable) sketchiness.

i tryed various shields with aegis of death, that wont work, so guess will have to just use the full shield. i went ahead and tanked the code below for rustguard into a ds2res file, hopefully the tank will work ingame.

http://www.siegetheday.org/?q=node/1849

Phantasmos's picture

Ill let u know if it worked when I get to it Smile thanks.also for aegis,it doesnt have to be an item,I just wanted to get something from it since it is so "powerful artifact" that protects towns and cant do a thing when u get it.maybe is possible when character get it in lore that it gives some passive skills,or premament buffs? or something

Phantasmos's picture

rustguard mod doesnt work,ty anyway Smile
edit:
made it to work! here is what I've done:

[t:template,n:rustguard_placed_stats]
{
specializes = base_rustguard;
[actor]
{
power_level = 132.0;
[skills]
{
monster_level = (37.0 * #is_normal) + (61.0 * #is_veteran) + (82.0 * #is_elite);
strength = 1, 0;
dexterity = 1, 0;
intelligence = 1, 0;
melee = 1, 0;
}
[state_resistances]
{
silence = 1.0;
knockback = 1.0;
fear = 1.0;
power_damage= 0.25;
}
}
[aspect]
{
scale_base = 2.0;
model = m_c_edm_059_pos_1;
experience_value = 0;
life = ((50 * #monster_level) + 66) * (1.0 + 0.12 * #monster_level);
max_life = ((50 * #monster_level) + 66) * (1.0 + 0.12 * #monster_level);
[textures]
{
0 = b_c_edm_059-a;
}
}
[attack]
{
damage_max = 1.25 * ((6.8 * #monster_level) + 17.8) * (1.0 + 0.04 * #monster_level);
damage_min = 0.75 * ((6.8 * #monster_level) + 17.8) * (1.0 + 0.04 * #monster_level);
}
[common]
{
membership = rustguard;
screen_name="Rustguard";
}
[defend]
{
// Defense = Character Damage / Expected damage multiplier
// = (8 + 2 * #monster_level) / 0.75
defense = (8 + (3.5 * #monster_level)) * 1.933 * (1.0 + 0.004 * #monster_level);
}
[mind]
{
jat_startup = "world\ai\jobs\common\job_startup_reveal.skrit?auto_reveal=true";
}
}

and:

[t:template,n:rustguard_placed_act3_stats]
{
specializes = rustguard_placed_stats;
[actor]
{
power_level = 132.5;
[skills]
{
monster_level = (38.0 * #is_normal) + (62.0 * #is_veteran) + (83.0 * #is_elite);
strength = 1, 0;
dexterity = 1, 0;
intelligence = 1, 0;
melee = 1, 0;
}
[state_resistances]
{
silence = 1.0;
knockback = 1.0;
fear = 1.0;
power_damage= 0.25;
}
}
[aspect]
{
scale_base = 2.0;
model = m_c_edm_059_pos_1;
experience_value = 0;
life = ((50 * #monster_level) + 66) * (1.0 + 0.12 * #monster_level);
max_life = ((50 * #monster_level) + 66) * (1.0 + 0.12 * #monster_level);
[textures]
{
0 = b_c_edm_059-b;
}
}
[attack]
{
damage_max = 1.25 * ((6.8 * #monster_level) + 17.8) * (1.0 + 0.04 * #monster_level);
damage_min = 0.75 * ((6.8 * #monster_level) + 17.8) * (1.0 + 0.04 * #monster_level);
}
[common]
{
membership = rustguard;
screen_name="Rustguard";
}
[defend]
{
// Defense = Character Damage / Expected damage multiplier
// = (8 + 2 * #monster_level) / 0.75
defense = (8 + (3.5 * #monster_level)) * 1.933 * (1.0 + 0.004 * #monster_level);
}
[physics]
{
explode_when_killed = true;
//explosion_magnitude = 5.0;
[break_particulate]
{
frag_glb_rustguard_01 = 2;
frag_glb_rustguard_02 = 2;
frag_glb_rustguard_03 = 2;
frag_glb_rustguard_04 = 3;
frag_glb_rustguard_05 = 2;
frag_glb_rustguard_06 = 3;
frag_glb_rustguard_07 = 4;
frag_glb_rustguard_08 = 3;
frag_glb_rustguard_09 = 3;
frag_glb_rustguard_10 = 2;
}
}
}

I realized that arena rustguard takes stats from rustguard_placed_stats so when u change rustguard_placed_stats rustguard in arena is changed too.I increased health,attack and defense values even further and added some state resistances.I still need some help,idk if u remember,but u made long time ago a template for my rustguard hero,some kind of spell that is used when he attack OR something like round_damage = true(not sure if it was round damage or something else but its similar). point was to make my rustguard attack more targets at once,actually targets that surround him.Can you remember what you did?(or maybe sharkull wrote that,Im not rly sure) .or try to make it? I would rly appreciate it Smile

Phantasmos wrote:
rustguard mod doesnt work,ty anyway Smile
edit:
made it to work! here is what I've done:
can also change -
strength = 5, 0;
dexterity = 5, 0;
intelligence = 5, 0;

]to make them stronger, smarter and their hits hit more hehe

I realized that arena rustguard takes stats from rustguard_placed_stats so when u change rustguard_placed_stats rustguard in arena is changed too.I increased health,attack and defense values even further and added some state resistances.I still need some help,idk if u remember,but u made long time ago a template for my rustguard hero,some kind of spell that is used when he attack OR something like round_damage = true(not sure if it was round damage or something else but its similar). point was to make my rustguard attack more targets at once,actually targets that surround him.Can you remember what you did?(or maybe sharkull wrote that,Im not rly sure) .or try to make it? I would rly appreciate it Smile

anything in arena rustguard will overrider rustguard placed stats as well, but yeah rustguard placed effects globally so that should work well

Phantasmos's picture

do you know,can I make my fireball bigger? like to add something like projectile_size or something? if yes pls write it like this:
projectile_size = 2;
and explain if 2 is double size or some other value Smile
edit:
also I need to know how to make my character cast that specific spell like 5 secs then fire it and then,cant cast it again for next 10 secs.
alrdy tried
cast_reload_delay = 10.0; and even bigger numbers but it can always cast it right after first shoot.

Phantasmos wrote:
do you know - knows lots of things Tongue , can I make my fireball bigger? maybe if YOU (not me) make the graphic bigger in art, like to add something like projectile_size or something? its a spell, how u gonna size it??? if yes pls write it like this:
projectile_size = 2; interesting perhaps if u put it in the spell_single skrit....
and explain if 2 is double size or some other value :), 2 is just 2
edit:, radio edit
also I need to know how to make my character cast that specific spell like 5 secs then fire it and then,cant cast it again for next 10 secs.
alrdy tried
cast_reload_delay = 10.0; and even bigger numbers but it can always cast it right after first shoot.

excerpt from components.gas follows, really should read it someday, can save lots of questions...

[t:component,n:magic]
{
doc = "Parameters controlling magic";

[magic_class] { type = eMagicClass; flags = REQUIRED; doc = "Classification of magic object"; }
[mana_cost] { type = float; default = 0; doc = "This object costs this much mana to use"; }
[mana_cost_modifier] { type = string; doc = "Result of this formula is added to mana_cost"; }
[mana_cost_ui] { type = string; doc = "Result of this formula is used for the UI to display when there is only the caster an spell - no target"; }
[mana_cost_ui_modifier] { type = string; doc = "Result of this formula is used for the UI to display when there is only the caster an spell - no target"; }
[mana_cost_varies] { type = bool; default = false; doc = "If the mana cost formula varies by the target, set this to true so the tooltip will say that the mana cost varies."; }
[cast_experience] { type = string; doc = "Amount of experience to award upon successful cast"; }
[speed_bias] { type = float; default = 1.0; doc = "Speed bias to apply to an actor's animations when cast on it"; }
[cast_range] { type = float; default = 1.0; doc = "Max range at which the spell can be cast."; }
[cast_reload_delay] { type = float; default = 0.0; doc = "Period of one iteration of casting this if it's a spell."; }
[requires_line_of_sight] { type = bool; default = false; doc = "Does this spell require line of sight to target in order to be cast"; }
[is_one_shot] { type = bool; default = false; doc = "Cast only once per cast request"; }
[one_use] { type = bool; default = false; doc = "For spells - Is it a one-use scroll?"; }
[command_cast] { type = bool; default = false; doc = "For spells - Can this spell only be cast explicitly by the user; actor will not auto-cast spell."; }
[effect_duration] { type = string; doc = "Formula specifying how long a spell effect will last"; }
[state_name] { type = string; doc = "For spells - the name of the state the target will be in if the spell is a success"; }
[caster_state_name] { type = string; doc = "For spells - the name of the state the caster will be in if the spell is a success"; }
[require_state_check] { type = bool; default = false; doc = "For spells - checks to see if the target actor is already in state_name"; }
[require_membership_check] { type = bool; default = false; doc = "For spells - checks to see if the target actor has at least one membership that matches the caster's membership ( in this way we can have skeletons only cast spells on skeletons )"; }
[does_damage_per_second] { type = bool; default = false; doc = "For spells - does this spell do damage per second?"; }
[can_autocast] { type = bool; default = false; doc = "For spells/AI - if true heros and monsters will attempt to cast this spell when its not selected."; }
[autocast_chance] { type = float; default = 0.5; doc = "For spells/AI - if secondary spell, how often does ai attempt to cast? 1 - 0"; }
[damage_type] { type = eDamageType; default = dmt_magical; doc = "For spells - what is the damage type of this spell: dmt_magical, dmt_lightning, dmt_ice, dmt_fire, dmt_death, dmt_non_elemental"; }
[reagent_definition] { type = string; doc = "For reagents - specifies the definition name that stores the enchantments to pull from."; }

// $ skill_class is defined in the attack component as well! Values that may go here are defined in formulas.gas
[skill_class] { type = string; doc = "What skill to award experience to for usage"; }
[required_level] { type = float; default = 0; doc = "Minimum skill level required to cast this spell"; }
[pcontent_level] { type = float; default = 0; doc = "Level to use for pcontent choosing if required_level does not apply (like for potions)"; }
[max_level] { type = float; default = 10; doc = "Maximum skill level this spell can ever be cast at"; }
[max_intel] { type = float; default = 0; doc = "Maximum intelligence level this spell can ever be cast at"; }
[target_type_flags] { type = eTargetTypeFlags; default = TT_ACTOR; doc = "What type of target this magic is cast on"; }
[target_type_flags_not] { type = eTargetTypeFlags; default = TT_NONE; doc = "target_type_flags AND target_type_flags != 0 then cast ok"; }
[usage_context_flags] { type = eUsageContextFlags; default = UC_PASSIVE; doc = "Attitude of spell as relates to combat, also determines whether or not damage value is show on the spells tooltip."; }
[apply_enchantments] { type = bool; default = true; doc = "If false the skrit component applys the enchantments"; }
[use_intel_level] { type = bool; default = true; doc = "When this is set, the ui tooltips will use the intelligence value to show what happens at next intelligence level, as opposed to next magic class level."; }
[awp_visible] { type = bool; default = true; doc = "Can we see this spell in the AWP when it is equipped?"; }
[is_buff] { type = bool; default = false; doc = "Used to see if this spell's payload counts towards our max_buffs limit."; }
[is_debuff] { type = bool; default = false; doc = "Used to see if this spell's payload counts towards our max_debuffs limit."; }
[is_power] { type = bool; default = false; doc = "General query to see if a spell template is a power spell template."; }

[attack_damage_modifier_min]{ type = string; doc = "Result of this formula is added to the attack damage min"; }
[attack_damage_modifier_max]{ type = string; doc = "Result of this formula is added to the attack damage max"; }

[cast_sub_animation] { type = int; default = 0; doc = "Storage for what cast animation to use to cast this spell"; }

excerpt from spell_single.skrit (need to read what your spells do) property string cast_ffx$ = "" doc = "Name of the FlickFX script to launch when at WE_REQ_CAST_CHARGE."; property string projectile_ffx$ = "" doc = "Name of the FlickFX script to run on WE_REQ_CAST"; property string splash_ffx$ = "" doc = "Name of FlickFX script to run when dealing splash damage."; property string splash_efct$ = "" doc = "Splash effect skrit name for binding properties."; property bool splash_damage$ = false doc = "Attack deals splash damage on hit."; property bool damagebreakable$ = false doc = "Will the spell damage breakable objects"; property float splash_radius$ = 1.0 doc = "Radius of splash damage area."; property float time_out$ = 5.0 doc = "Component timeout, amount of time in seconds to force the spell to finish."; property string description$ = "spell_single" doc = "Description of enchantment being applied"; try time_out = 10.0;

in the spell_single component block and see if it does anything

To alter the size of your fireball you will need to do it in efct_spell_fireball.gas file. ScaleChange seems to be the best guess on my part for the alteration, but I am unsure what to change it to. There may be other files that need changing as well.

Partial code follows, scroll down to the yellow for the first ScaleChange
[efct_spell_fireball]
{
skrit=[[
property int sfx_scriptId$ doc = "ScriptId given at effect script creation time.";
property Goid sfx_owner$ doc = "Effect owner goid to message when damage should occur.";
property Goid sfx_catalyst$ doc = "Effect catalyst goid";
property int sfx_target1$ doc = "Effect source target to start the effect at.";
property int sfx_target2$ doc = "Effect source target to start the effect at.";

bool collided$;

#include "k_inc_target_utils"

startup state Go$
{
shoot$ at (0.0)
{
{
// Have spell target1 accel towards target2
WorldFXMgr.AttachTargetSimulation( sfx_target1$, sfx_target2$, "AccelTowardsTarget( 12, 12 )" );
if ( sfx_catalyst$.Go.Actor.GetAlignment() == AA_GOOD )
{
WorldFXMgr.AttachTargetSimulation( sfx_target1$, sfx_target1$, "MoveWithVelocityColl( true, 0.0, true, true, 0.0, true, true, 0.0, true, false, 0.0, false, false, 0.3, true, false, false )" );
}
else
{
WorldFXMgr.AttachTargetSimulation( sfx_target1$, sfx_target1$, "MoveWithVelocityColl( true, 0.0, true, true, 0.0, true, false, 0.0, false, true, 0.0, true, false, 0.3, true, false, false )" );
}
}

// fire hazard fireball effect
//{
// int effect$ = WorldFXMgr.CreateParticleEffect( sfx_target1$ );
// WorldFXMgr.SetEffectTexture( effect$, "b_sfx_provoke_01" );
// WorldFXMgr.SetQuadRendering( effect$, true );
// WorldFXMgr.SetEffectSrcBlend( effect$, PB_SRCALPHA );
// WorldFXMgr.SetEffectDestBlend( effect$, PB_DESTALPHA );
// WorldFXMgr.AttachSimulation( effect$, "PositionAtTarget( )", 0.0 );
// WorldFXMgr.AttachSimulation( effect$, "SpawnImmediately( 1, 0x00FFFFFF, 0x00FFFFFF, 3.7, 3.7 )", 0.0 );
// WorldFXMgr.AttachSimulation( effect$, "AlphaChange( 0.0, 0.2, 0.8, 0.0 )", 0.0 );
// WorldFXMgr.AttachSimulation( effect$, "KillEffectAtZero( )", 0.0 );
//}
{
int effect$ = WorldFXMgr.CreateParticleEffect( sfx_target1$ );
WorldFXMgr.SetEffectTexture( effect$, "b_sfx_glow" );
WorldFXMgr.SetQuadRendering( effect$, true );
WorldFXMgr.SetEffectSrcBlend( effect$, PB_SRCALPHA );
WorldFXMgr.SetEffectDestBlend( effect$, PB_DESTALPHA );
WorldFXMgr.AttachSimulation( effect$, "PositionAtTarget( )", 0.0 );
WorldFXMgr.AttachSimulation( effect$, "SpawnImmediately( 1, 0x00FF9900, 0x00FF9900, 1.0, 1.0 )", 0.0 );
WorldFXMgr.AttachSimulation( effect$, "AlphaChange( 0.0, 0.2, 0.8, 0.0 )", 0.0 );
WorldFXMgr.AttachSimulation( effect$, "KillEffectAtZero( )", 0.0 );
}
{
int effect$ = WorldFXMgr.CreateParticleEffect( sfx_target1$ );
WorldFXMgr.SetEffectTexture( effect$, "b_sfx_fireball-01" );
WorldFXMgr.SetQuadRendering( effect$, true );
WorldFXMgr.SetEffectSrcBlend( effect$, PB_SRCALPHA );
WorldFXMgr.SetEffectDestBlend( effect$, PB_DESTALPHA );
WorldFXMgr.SetTargetDependence( effect$, false, false );
WorldFXMgr.AttachSimulation( effect$, "PositionRingPerpToTargetVector( 1, 0, 0, 0.15, 0.23 )", 0.0 );
//WorldFXMgr.AttachSimulation( effect$, "SpawnInBlocks( 15, 0.05, 0x33FFFFFF, 0x33FFFFFF, 0.4, 0.7 )", 0.0 );
WorldFXMgr.AttachSimulation( effect$, "SpawnParticles( 155, 0x33FFFFFF, 0x33FFFFFF, 0.4, 0.7 )", 0.0 );
//WorldFXMgr.AttachSimulation( effect$, "AlphaChange( 0.0, 0.1, 0.2, 0.0 )", 0.0 );
WorldFXMgr.AttachSimulation( effect$, "ScaleChange( 0.0, 0.23, 0.0, 0.0 )", 0.0 );
WorldFXMgr.AttachSimulation( effect$, "KillEffectAtZero( )", 0.0 );
}

PhoeniX wrote:
To alter the size of your fireball you will need to do it in efct_spell_fireball.gas file. ScaleChange seems to be the best guess on my part for the alteration, but I am unsure what to change it to. There may be other files that need changing as well.

Partial code follows, scroll down to the yellow for the first ScaleChange
[efct_spell_fireball]
{
skrit=[[
property int sfx_scriptId$ doc = "ScriptId given at effect script creation time.";
property Goid sfx_owner$ doc = "Effect owner goid to message when damage should occur.";
property Goid sfx_catalyst$ doc = "Effect catalyst goid";
property int sfx_target1$ doc = "Effect source target to start the effect at.";
property int sfx_target2$ doc = "Effect source target to start the effect at.";

bool collided$;

#include "k_inc_target_utils"

startup state Go$
{
shoot$ at (0.0)
{
{
// Have spell target1 accel towards target2
WorldFXMgr.AttachTargetSimulation( sfx_target1$, sfx_target2$, "AccelTowardsTarget( 12, 12 )" );
if ( sfx_catalyst$.Go.Actor.GetAlignment() == AA_GOOD )
{
WorldFXMgr.AttachTargetSimulation( sfx_target1$, sfx_target1$, "MoveWithVelocityColl( true, 0.0, true, true, 0.0, true, true, 0.0, true, false, 0.0, false, false, 0.3, true, false, false )" );
}
else
{
WorldFXMgr.AttachTargetSimulation( sfx_target1$, sfx_target1$, "MoveWithVelocityColl( true, 0.0, true, true, 0.0, true, false, 0.0, false, true, 0.0, true, false, 0.3, true, false, false )" );
}
}

// fire hazard fireball effect
//{
// int effect$ = WorldFXMgr.CreateParticleEffect( sfx_target1$ );
// WorldFXMgr.SetEffectTexture( effect$, "b_sfx_provoke_01" );
// WorldFXMgr.SetQuadRendering( effect$, true );
// WorldFXMgr.SetEffectSrcBlend( effect$, PB_SRCALPHA );
// WorldFXMgr.SetEffectDestBlend( effect$, PB_DESTALPHA );
// WorldFXMgr.AttachSimulation( effect$, "PositionAtTarget( )", 0.0 );
// WorldFXMgr.AttachSimulation( effect$, "SpawnImmediately( 1, 0x00FFFFFF, 0x00FFFFFF, 3.7, 3.7 )", 0.0 );
// WorldFXMgr.AttachSimulation( effect$, "AlphaChange( 0.0, 0.2, 0.8, 0.0 )", 0.0 );
// WorldFXMgr.AttachSimulation( effect$, "KillEffectAtZero( )", 0.0 );
//}
{
int effect$ = WorldFXMgr.CreateParticleEffect( sfx_target1$ );
WorldFXMgr.SetEffectTexture( effect$, "b_sfx_glow" );
WorldFXMgr.SetQuadRendering( effect$, true );
WorldFXMgr.SetEffectSrcBlend( effect$, PB_SRCALPHA );
WorldFXMgr.SetEffectDestBlend( effect$, PB_DESTALPHA );
WorldFXMgr.AttachSimulation( effect$, "PositionAtTarget( )", 0.0 );
WorldFXMgr.AttachSimulation( effect$, "SpawnImmediately( 1, 0x00FF9900, 0x00FF9900, 1.0, 1.0 )", 0.0 );
WorldFXMgr.AttachSimulation( effect$, "AlphaChange( 0.0, 0.2, 0.8, 0.0 )", 0.0 );
WorldFXMgr.AttachSimulation( effect$, "KillEffectAtZero( )", 0.0 );
}
{
int effect$ = WorldFXMgr.CreateParticleEffect( sfx_target1$ );
WorldFXMgr.SetEffectTexture( effect$, "b_sfx_fireball-01" );
WorldFXMgr.SetQuadRendering( effect$, true );
WorldFXMgr.SetEffectSrcBlend( effect$, PB_SRCALPHA );
WorldFXMgr.SetEffectDestBlend( effect$, PB_DESTALPHA );
WorldFXMgr.SetTargetDependence( effect$, false, false );
WorldFXMgr.AttachSimulation( effect$, "PositionRingPerpToTargetVector( 1, 0, 0, 0.15, 0.23 )", 0.0 );
//WorldFXMgr.AttachSimulation( effect$, "SpawnInBlocks( 15, 0.05, 0x33FFFFFF, 0x33FFFFFF, 0.4, 0.7 )", 0.0 );
WorldFXMgr.AttachSimulation( effect$, "SpawnParticles( 155, 0x33FFFFFF, 0x33FFFFFF, 0.4, 0.7 )", 0.0 );
//WorldFXMgr.AttachSimulation( effect$, "AlphaChange( 0.0, 0.1, 0.2, 0.0 )", 0.0 );
WorldFXMgr.AttachSimulation( effect$, "ScaleChange( 0.0, 0.23, 0.0, 0.0 )", 0.0 );
WorldFXMgr.AttachSimulation( effect$, "KillEffectAtZero( )", 0.0 );
}

bump back to top, i wish edits didnt bump up Sad

nice work PhoeniX, that should help Swiper out a lot.

Phantasmos's picture

does anyone know where do I find items from mysterious set,and those items u get in secret cave after talking to npcs? I cant find them in templates/interactive.
also how do I edit set bonuses?

Phantasmos wrote:
does anyone know where do I find items from mysterious set,and those items u get in secret cave after talking to npcs? I cant find them in templates/interactive.
also how do I edit set bonuses?

They are located at: world/contentdb/templates/map_specific/ds2_world/ds2_world_slcave.gas

And bonus alterations are set at: world/global/sets/set_definitions.gas

Pages