Summon Pitbulls (#25883)

* adds pitbulls and a conjure pitbull spell

* spell icon

* removed testing obj

* Treachery mechanic, code touch up, and pitbull bark

* removes the limiters, couldn't figure it out after 3 weeks fuck me

* fix merge conflict

* merge fixaroo this shit is like magic

* re-adds pitbull icons

* someday I will fix this merge conflict

* but not fucking today apparently

* removes a pointless comment

Co-authored-by: Acrylic Mimosa <>
This commit is contained in:
RealestEstate
2020-03-10 18:26:35 -07:00
committed by GitHub
parent 7e4a5b88f2
commit ed4fa0136a
4 changed files with 124 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
/mob/living/simple_animal/hostile/pitbull
name = "pitbull"
icon_state = "pitbull"
icon_living = "pitbull"
icon_dead = "pitbull_dead"
speak_chance = 20
emote_hear = list("growls", "barks")
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "hits"
health = 25
maxHealth = 25
turns_per_move =2//I don't know what this does
speed = 4
move_to_delay = 3
melee_damage_lower = 3
melee_damage_upper = 5
attacktext = "bites"
attack_sound = 'sound/weapons/bite.ogg'
var/faction_original
var/list/friends_temp = list() //a temporary list to hold the values in friends while it becomes empty during treachery
var/treachery_chance = 0.25
var/treacherous = FALSE
var/calmdown_chance = 20
/mob/living/simple_animal/hostile/pitbull/New()
..()
pitbulls_exclude_kinlist.Add(src)
desc = pick(
"There is no such thing as a bad dog, only bad owners.",
"Blame the owner not the breed!",
"My dog would never do that.",
"He's a big baby at heart.",
"Man's best friend.",
"Over 4 million pitbulls did not kill or hurt anyone today. Stop the myth.",
"Good with kids.")
/mob/living/simple_animal/hostile/pitbull/ListTargets()
var/list/L = ..()
for(var/mob/M in L)
if(M in pitbulls_exclude_kinlist)
L.Remove(M)
return L
/mob/living/simple_animal/hostile/pitbull/Life()
if(prob(treachery_chance))
Treachery() //empties the friend list and faction allignment
if(treacherous && prob(calmdown_chance))
Calmdown() //repopulates the friend list and realligns our faction
..()
/mob/living/simple_animal/hostile/pitbull/proc/Treachery()
faction_original = faction
faction = ""
friends_temp = friends.Copy()
friends.Cut()
treacherous = TRUE
/mob/living/simple_animal/hostile/pitbull/proc/Calmdown()
faction = faction_original
friends = friends_temp.Copy()
if(target && ismob(target))
var/mob/M = target
if((M.faction == faction) || (M in src.friends))//stop chasing our friend when we calm down
LoseTarget()
treacherous = FALSE
/mob/living/simple_animal/hostile/pitbull/attackby(obj/item/I, mob/user)
..()
if(istype(I,/obj/item/weapon/pickaxe/shovel))
if(prob(10))
gib()
else
adjustBruteLoss(25)//instakill
/mob/living/simple_animal/hostile/pitbull/summoned_pitbull
faction = "wizard"

View File

@@ -0,0 +1,42 @@
/spell/aoe_turf/conjure/pitbull
name = "Summon Pitbulls"
desc = "This spell summons a group of misunderstood pitbulls. You can maintain up to 60 living pitbulls at a time."
user_type = USER_TYPE_WIZARD
specialization = SSOFFENSIVE
summon_type = list(/mob/living/simple_animal/hostile/pitbull/summoned_pitbull)
summon_amt = 3
price = Sp_BASE_PRICE
level_max = list(Sp_TOTAL = 2, Sp_SPEED = 2)
charge_max = 300
cooldown_reduc = 100
cooldown_min = 100
invocation = "GR'T W'TH K'DS"
invocation_type = SpI_SHOUT
spell_flags = NEEDSCLOTHES
override_icon = 'icons/mob/animal.dmi'
hud_state = "pitbull"
cast_sound = 'sound/voice/pitbullbark.ogg'
var/list/pitbulls_exclude_kinlist = list() //all pitbulls go in here so pitbulls won't attack other pitbulls when feeling treacherous (and instead attack the wizard)
/spell/aoe_turf/conjure/pitbull/summon_object(var/type, var/location)
var/mob/living/simple_animal/hostile/pitbull/summoned_pitbull/P = new type(location)
P.friends.Add(holder)//summoner is my friend, but we have a tendency to turn on our friends
/spell/aoe_turf/conjure/pitbull/choose_targets(var/mob/user = usr)
var/list/turf/locs = new
for(var/direction in alldirs) //looking for pitbull spawns
if(locs.len >= 3) //we found 3 locations and thats all we need
break
var/turf/T = get_step(user, direction) //getting a loc in that direction
if(AStar(user.loc, T, /turf/proc/AdjacentTurfs, /turf/proc/Distance, 1)) // if a path exists, so no dense objects in the way its valid salid
locs += T
if(locs.len < 3) //if we only found one location, spawn more on top of our tile so we dont get stacked pitbulls
locs += user.loc
return locs
/spell/aoe_turf/conjure/pitbull/before_cast(list/targets, user)
return targets

Binary file not shown.

Before

Width:  |  Height:  |  Size: 515 KiB

After

Width:  |  Height:  |  Size: 519 KiB

BIN
sound/voice/pitbullbark.ogg Normal file

Binary file not shown.