Skip to content

Commit

Permalink
Simple Bosses #3 Tidebringer + Jinada (#920)
Browse files Browse the repository at this point in the history
* Initial Simple Boss 3 files

Still missing tooltip files for abilities and the lua file to let
Tidebringer work.

* Added boss lua file

Thanks, Chrono! This makes the boss use Tidebringer, among other things.

* Added tooltip files

toilet humor! memes!

* Fixed typo-induced duplicate line

Kudos to Travis for catching it

* a lua bugfix by me?????

eh, just a missing unreplaced name due to prior copypasting of code.
Easy enough to amend, assuming it's enough.
  • Loading branch information
Minnakht authored and chrisinajar committed May 28, 2017
1 parent beccbb4 commit 144cb29
Show file tree
Hide file tree
Showing 9 changed files with 267 additions and 0 deletions.
10 changes: 10 additions & 0 deletions game/resource/English/ability/units/boss/tooltip_boss_jinada.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
//=============================================================================
// Simple Boss Jinada
//=============================================================================
"DOTA_Tooltip_ability_boss_jinada" "Jinada"
"DOTA_Tooltip_ability_boss_jinada_Lore" "Squealing an enchantment he learned from John Harington to his faithful arms, Tideybowl targets vital tendons and joints to disable his opponents."
"DOTA_Tooltip_ability_boss_jinada_Description" "Simple Boss 3 plans his next hit, passively adding a critical strike and maim to his next attack."
"DOTA_Tooltip_ability_boss_jinada_crit_multiplier" "CRITICAL DAMAGE:"
"DOTA_Tooltip_ability_boss_jinada_bonus_movespeed" "MOVE SPEED SLOW:"
"DOTA_Tooltip_ability_boss_jinada_bonus_attackspeed" "ATTACK SPEED SLOW:"
"DOTA_Tooltip_ability_boss_jinada_duration" "DURATION:"
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
//=============================================================================
// Simple Boss Tidebringer
//=============================================================================
"DOTA_Tooltip_ability_boss_tidebringer" "Tidebringer"
"DOTA_Tooltip_ability_boss_tidebringer_Lore" "A lost detergent inhabits Tideybowl's trusty Bowl, empowering it to destroy filth of the Open Angel Arena."
"DOTA_Tooltip_ability_boss_tidebringer_Description" "Simple Boss 3's legendary bowl grants increased damage and cleaves a large area of effect in front of him for a single strike."
"DOTA_Tooltip_ability_boss_tidebringer_cleave_starting_width" "STARTING RADIUS:"
"DOTA_Tooltip_ability_boss_tidebringer_cleave_distance" "DISTANCE:"
"DOTA_Tooltip_ability_boss_tidebringer_cleave_ending_width" "END RADIUS:"
"DOTA_Tooltip_ability_boss_tidebringer_cleave_damage" "CLEAVE DAMAGE:"
"DOTA_Tooltip_ability_boss_tidebringer_damage_bonus" "ATTACK DAMAGE BONUS:"
1 change: 1 addition & 0 deletions game/resource/English/npc/npc_bosses.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

"npc_dota_boss_simple_1" "Simple Boss 1"
"npc_dota_boss_simple_2" "Simple Boss 2"
"npc_dota_boss_simple_3" "Tideybowl"
"npc_dota_boss_simple_5" "Simple Boss 5"
"npc_dota_boss_simple_6" "Jingu Banger"
"npc_dota_boss_simple_7" "Solus"
46 changes: 46 additions & 0 deletions game/scripts/npc/abilities/boss/boss_jinada.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
"DOTAAbilities"
{
//=================================================================================================================
// Boss: Jinada
//=================================================================================================================
"boss_jinada"
{
// General
//-------------------------------------------------------------------------------------------------------------
"ID" "8286" // unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
"BaseClass" "bounty_hunter_jinada"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE"
"SpellDispellableType" "SPELL_DISPELLABLE_YES"
"MaxLevel" "1"

// Stats
//-------------------------------------------------------------------------------------------------------------
"AbilityCooldown" "6.0"

// Special
//-------------------------------------------------------------------------------------------------------------
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"crit_multiplier" "225"
}
"02"
{
"var_type" "FIELD_INTEGER"
"bonus_movespeed" "-30"
}
"03"
{
"var_type" "FIELD_INTEGER"
"bonus_attackspeed" "-30"
}
"04"
{
"var_type" "FIELD_FLOAT"
"duration" "3.0"
}
}
}
}
57 changes: 57 additions & 0 deletions game/scripts/npc/abilities/boss/boss_tidebringer.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
"DOTAAbilities"
{

//=================================================================================================================
// Boss: Tidebringer
//=================================================================================================================
"boss_tidebringer"
{
// General
//-------------------------------------------------------------------------------------------------------------
"ID" "8032" // unique ID number for this ability. Do not change this once established or it will invalidate collected stats.
"BaseClass" "kunkka_tidebringer"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_AUTOCAST | DOTA_ABILITY_BEHAVIOR_ATTACK"
"AbilityUnitDamageType" "DAMAGE_TYPE_PHYSICAL"
"AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
"AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES"
"SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES"
"MaxLevel" "1"
// Time
//-------------------------------------------------------------------------------------------------------------
"AbilityCooldown" "4.0"
"AbilityCastRange" "150"
"AbilityCastPoint" "0.0"

// Special
//-------------------------------------------------------------------------------------------------------------
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"cleave_starting_width" "150"
}
"02"
{
"var_type" "FIELD_INTEGER"
"cleave_ending_width" "650"
}
"03"
{
"var_type" "FIELD_INTEGER"
"cleave_distance" "1100"
}
"04"
{
"var_type" "FIELD_INTEGER"
"damage_bonus" "85"
}
"05"
{
"var_type" "FIELD_INTEGER"
"cleave_damage" "100"
}
}
}
}
2 changes: 2 additions & 0 deletions game/scripts/npc/npc_abilities_custom.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
#base "abilities/boss/boss_desolate.txt"
#base "abilities/boss/boss_jingu_mastery.txt"
#base "abilities/boss/boss_inner_beast.txt"
#base "abilities/boss/boss_jinada.txt"
#base "abilities/boss/boss_tidebringer.txt"

#base "abilities/charger/boss_charger_charge.txt"
#base "abilities/charger/boss_charger_summon_pillar.txt"
Expand Down
1 change: 1 addition & 0 deletions game/scripts/npc/npc_units_custom.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

#base "units/boss/npc_dota_boss_simple_1.txt"
#base "units/boss/npc_dota_boss_simple_2.txt"
#base "units/boss/npc_dota_boss_simple_3.txt"
#base "units/boss/npc_dota_boss_simple_5.txt"
#base "units/boss/npc_dota_boss_simple_6.txt"
#base "units/boss/npc_dota_boss_simple_7.txt"
Expand Down
93 changes: 93 additions & 0 deletions game/scripts/npc/units/boss/npc_dota_boss_simple_3.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
"DOTAUnits"
{
//=================================================================================
// Simple Boss 3
//=================================================================================
"npc_dota_boss_simple_3"
{
// General
//
"BaseClass" "npc_dota_creature" // Class of entity of link to.
"Model" "models/courier/greevil/greevil.vmdl" // Model.
"SoundSet" "Greevil" // Name of sound set.
"ModelScale" "4.0"
"Level" "30"
"IsAncient" "1"
"ConsideredHero" "1"

// Abilities
//----------------------------------------------------------------
"Ability1" "boss_jinada"
"Ability2" "boss_tidebringer"
"Ability3" "boss_resistance"

// Armor
//----------------------------------------------------------------
"ArmorPhysical" "25" // Physical protection.
"MagicalResistance" "25" // Magical protection (percentage).

// Attack
//----------------------------------------------------------------
"AttackCapabilities" "DOTA_UNIT_CAP_MELEE_ATTACK"
"AttackDamageMin" "225" // Damage range min.
"AttackDamageMax" "250" // Damage range max.
"AttackDamageType" "DAMAGE_TYPE_ArmorPhysical"
"AttackRate" "1.0" // Speed of attack.
"AttackAnimationPoint" "0.3" // Normalized time in animation cycle to attack.
"AttackAcquisitionRange" "150" // Range within a target can be acquired.
"AttackRange" "128" // Range within a target can be attacked.

// Bounty
//----------------------------------------------------------------
"BountyXP" "0" // Experience earn.
"BountyGoldMin" "0" // Gold earned min.
"BountyGoldMax" "0" // Gold earned max.

// Bounds
//----------------------------------------------------------------
"RingRadius" "70"
"HealthBarOffset" "160"
"BoundsHullName" "DOTA_HULL_SIZE_HERO"

// Movement
//----------------------------------------------------------------
"MovementCapabilities" "DOTA_UNIT_CAP_MOVE_FLY" // Type of locomotion - ground, air
"MovementSpeed" "420" // Speed
"MovementTurnRate" "0.5" // Turning rate.

// Status
//----------------------------------------------------------------
"StatusHealth" "1000" // Base health
"StatusHealthRegen" "3.5" // Health regeneration rate.
"StatusMana" "0" // Base mana.
"StatusManaRegen" "0" // Mana regeneration rate.

// Creature data

"Creature"
{
//Makes it only have 25% remaining of applied crowd control
"DisableResistance" "75.0"
}


// Team
//----------------------------------------------------------------
"TeamName" "DOTA_TEAM_NEUTRALS" // Team name.
"CombatClassAttack" "DOTA_COMBAT_CLASS_ATTACK_HERO"
"CombatClassDefend" "DOTA_COMBAT_CLASS_DEFEND_HERO"
"UnitRelationshipClass" "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_DEFAULT"

// Vision
//----------------------------------------------------------------
"VisionDaytimeRange" "1400" // Range of vision during day light.
"VisionNighttimeRange" "1400" // Range of vision at night time.

// Inventory
//----------------------------------------------------------------
"HasInventory" "1"

"MinimapIcon" "minimap_roshancamp"
"MinimapIconSize" "450"
}
}
46 changes: 46 additions & 0 deletions game/scripts/vscripts/units/simple_boss_3.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
local GLOBAL_origin = nil
local ABILITY_tidebringer = nil

local function Think(state, target)
-- Leash
if not GLOBAL_origin then
GLOBAL_origin = thisEntity:GetAbsOrigin()
else
local distance = (GLOBAL_origin - thisEntity:GetAbsOrigin()):Length()
if distance > 1000 then
ExecuteOrderFromTable({
UnitIndex = thisEntity:entindex(),
OrderType = DOTA_UNIT_ORDER_MOVE_TO_POSITION,
Position = GLOBAL_origin, --Optional. Only used when targeting the ground
Queue = 0 --Optional. Used for queueing up abilities
})
return 5
end
end

if not ABILITY_tidebringer:IsActivated() then
ExecuteOrderFromTable({
UnitIndex = thisEntity:entindex(),
OrderType = DOTA_UNIT_ORDER_CAST_TOGGLE,
AbilityIndex = ABILITY_tidebringer:entindex(), --Optional. Only used when casting abilities
Queue = 0 --Optional. Used for queueing up abilities
})
return 0.1
end

ExecuteOrderFromTable({
UnitIndex = thisEntity:entindex(),
OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
Position = GLOBAL_origin + RandomVector(400),
Queue = 0
})
return 2
end

-- Entry Function
function Spawn(entityKeyValues) --luacheck: ignore Spawn
print("Starting AI for " .. thisEntity:GetUnitName() .. " " .. thisEntity:GetEntityIndex())
thisEntity:SetContextThink('SimpleBoss3Think', partial(Think, thisEntity), 1)

ABILITY_tidebringer = thisEntity:FindAbilityByName('boss_tidebringer')
end

0 comments on commit 144cb29

Please sign in to comment.